Alguem esta criando o arquivo de remessa para SNGPC

Delphi

24/08/2007

Alguem esta criando o arquivo de remessa

para a Anvisa referente a movimentação de farmacia para o SNGPC.

Alguma dica de como gerar o arquivo?

Agradeço desde ja.


Edmarfrazao

Edmarfrazao

Curtidas 0

Respostas

Marcosrocha

Marcosrocha

24/08/2007

Qual componente você está usando?


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Consegui fazer o xml funciona.

Descobri um componente do delphi o


Abra um projeto.

va em file,new,other,xml(so aparece com um projeto aberto)
e escolha
XML Data Binding ( e um winzard).
sera solicitador o arquivo

sngpc200707v1_0.xsd ( esta no site da aniva)

com isto ele ira criar uma unit com toda a implementação do arquivo XML.

Se estiver no delphi 2006, depois que criar a unit, aproveite para usar o Model view e criar a UML(e automatico), da classe.


depois coloque um componente xmldocument

e implemente as chamadas as funções que forem necessario
e o xmldocumento irar gerar o arquivo xml

com pouco esforço.


GOSTEI 0
Randall

Randall

24/08/2007

Ola colega, estou fazendo este programa tambem, mas o fiz todo como se fosse txt, fica igual ao exemplo deles mas na hora que vou enviar o arquivo de teste ele da um erro falando ´Arquivo XML não aderente ao Schema SNGPC. Consulte
http://www.anvisa.gov.br/sngpc/esquemas.asp´ se puder me ajudar com mais detalhes sobre a maneira que vc fez ficarei grato.


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Não estou usando o TXT.

Estou usando como escrevi na mensagens anterior.

Copia os esquemas do site da anvisa.

cria um projeto.
VA em File,New,Other,XML, e o winzard vai pedir os arquivos dos esquemas e vai criar uma unit.

esta unit tem tudo o que precisa para gerar o xml.

Depois coloca-se no formulario um componente XMLDocumento e o configura.
depois e fazer a chamada a usa unit um exemplo de como fazer no site.

http://www.drbob42.com/examine/examin23.htm

http://www.drbob42.com/examines/examin25.htm


Site

http://www.anvisa.gov.br/hotsite/sngpc/index.asp


GOSTEI 0
Randall

Randall

24/08/2007

ja entendi legal a forma de se fazer, mas nao estou conseguindo extrair o arquivo sngpc200707v1_0.xsd os links existentes nao apontam este arquivo ou estou dizendo uma grande besteira ?!?!?!! Nunca fiz nada em xml.
Grato.


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Tambem nunca tinha usado XML

estamaos apanhando.

fizemos o seguinte
copiamos os esquemas do site
http://www.anvisa.gov.br/hotsite/sngpc/esquemas.asp

renomeamos os .xml para .sxd

e mandamos o delphi ler o 1o

sngpc200707v1_0.xml para
sngpc200707v1_0.xsd

e pínga o delphi gera a unit.

Se tiver o 2006 tera ate o uml.


GOSTEI 0
Sergiokawahara

Sergiokawahara

24/08/2007

procedure TfEnviarAnvisa.BitBtn1Click(Sender: TObject);
var
NodeCorpo, NodeMedicamentos, Node1 : IXMLNode;
begin
with XML do
begin
Active := True;
Version := ´1.0´;
Encoding := ´ISO-8859-1´;
AddChild(´mensagemSNGPC´,´urn:sngpc-schema´);
DocumentElement.AddChild(´cabecalho´);

DocumentElement.ChildNodes.Last.AddChild(´cnpjEmissor´).NodeValue := LimpaStr(qryEmpresa.FieldByName(´CNPJ´).AsString);
DocumentElement.ChildNodes.Last.AddChild (´cpfTransmissor´).NodeValue := LimpaStr(qryEmpresa.FieldByName(´CPF_RESP_TECNICO´).AsString);
DocumentElement.ChildNodes.Last.AddChild(´dataInicio´).NodeValue := FormatDateTime(´yyyy-mm-dd´,Date);
DocumentElement.ChildNodes.Last.AddChild(´dataFim´).NodeValue := FormatDateTime(´yyyy-mm-dd´,Date);

NodeCorpo := DocumentElement.AddChild(´corpo´);
NodeMedicamentos := NodeCorpo.AddChild(´medicamentos´);

// Entrada de medicamentos
qryEntradas.Active := True;
qryEntradas.First;

While not qryEntradas.Eof do
begin
Node1:=NodeMedicamentos.AddChild(´entradaMedicamentos´);

Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´numeroNotaFiscal´].NodeValue := qryEntradas.FieldByName(´NOTA_FISCAL´).AsString;
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´1´;
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´dataNotaFiscal´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryEntradas.FieldByName(´EMISSAO_NF´).AsDateTime);
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´cnpjOrigem´].NodeValue := LimpaStr(qryEntradas.FieldByName(´CNPJ_FORNECEDOR´).AsString);
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´cnpjDestino´].NodeValue := LimpaStr(qryEmpresa.FieldByName(´CNPJ´).AsString);

Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryEntradas.FieldByName(´NRM´).AsString);
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryEntradas.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryEntradas.FieldByName(´QUANTIDADE´).AsString;

Node1.ChildNodes[´dataRecebimentoMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryEntradas.FieldByName(´RECEBIDO´).AsDateTime);

qryEntradas.Next;
end;

// Saidas de Medicamentos
qryVendas.Active := True;
qryVendas.First;
while not qryVendas.Eof do
begin
Node1 := NodeMedicamentos.AddChild(´saidaMedicamentoVendaAoConsumidor´);

Node1.ChildNodes[´tipoReceituarioMedicamento´].NodeValue := qryVendas.FieldByName(´TIPO_RECEITUARIO´).AsString;
Node1.ChildNodes[´numeroNotificacaoMedicamento´].NodeValue := qryVendas.FieldByName(´NRO_NOTIFICACAO´).AsString;
Node1.ChildNodes[´dataPrescricaoMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryVendas.FieldByName(´DATA_PRESCRICAO´).AsDateTime);

Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´nomePrescritor´].NodeValue := qryVendas.FieldByName(´NOME_PRESCRITOR´).AsString;
Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´numeroRegistroProfissional´].NodeValue := LimpaStr(qryVendas.FieldByName(´NRO_REG_PROFISSIONAL´).AsString);
Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´conselhoProfissional´].NodeValue := qryVendas.FieldByName(´CONSELHO_PROFISSIONAL´).AsString;
Node1.ChildNodes[´prescritorMedicamento´].ChildNodes[´UFConselho´].NodeValue := qryVendas.FieldByName(´UF_CONSELHO´).AsString;

Node1.ChildNodes[´usoMedicamento´].NodeValue := ´1´;

Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´nomeComprador´].NodeValue := qryVendas.FieldByName(´NOME_COMPRADOR´).AsString;
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´tipoDocumento´].NodeValue := qryVendas.FieldByName(´TIPO_DOC_COMPRADOR´).AsString;
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´numeroDocumento´].NodeValue := LimpaStr(qryVendas.FieldByName(´NRO_DOC_COMPRADOR´).AsString);
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´orgaoExpedidor´].NodeValue := qryVendas.FieldByName(´ORGAO_EXP_DOCTO´).AsString;
Node1.ChildNodes[´compradorMedicamento´].ChildNodes[´UFEmissaoDocumento´].NodeValue := qryVendas.FieldByName(´UF_EMISSAO_DOCTO´).AsString;

Node1.ChildNodes[´medicamentoVenda´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryVendas.FieldByName(´NRM´).AsString);
Node1.ChildNodes[´medicamentoVenda´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryVendas.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoVenda´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryVendas.FieldByName(´QUANTIDADE´).AsString;

Node1.ChildNodes[´dataVendaMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryVendas.FieldByName(´DATA_VENDA´).AsDateTime);
qryVendas.Next;
end;

// Saidas por Transferencia
qryTransferencia.Active := True;
qryTransferencia.First;
while not qryTransferencia.Eof do
begin
Node1 := NodeMedicamentos.AddChild(´saidaMedicamentoTransferencia´);

Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´numeroNotaFiscal´].NodeValue := qryTransferencia.FieldByName(´NOTA_FISCAL´).AsString;
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´2´;
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´dataNotaFiscal´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryTransferencia.FieldByName(´DATA_EMISSAO´).AsDateTime);
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´cnpjOrigem´].NodeValue := qryTransferencia.FieldByName(´CNPJ_ORIGEM´).AsString;
Node1.ChildNodes[´notaFiscalTransferenciaMedicamento´].ChildNodes[´cnpjDestino´].NodeValue := qryTransferencia.FieldByName(´CNPJ_DESTINO´).AsString;

Node1.ChildNodes[´medicamentoTransferencia´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryTransferencia.FieldByName(´NRM´).AsString); Node1.ChildNodes[´medicamentoTransferencia´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryTransferencia.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoTransferencia´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryTransferencia.FieldByName(´QUANTIDADE´).AsString;

Node1.ChildNodes[´dataTransferenciaMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryTransferencia.FieldByName(´DATA_TRANSFERENCIA´).AsDateTime);
qryTransferencia.Next;

end;

// Perdas
qryPerdas.Active := True;
qryPerdas.First;
while not qryPerdas.Eof do
begin
Node1 := NodeMedicamentos.AddChild(´saidaMedicamentoPerda´);

Node1.ChildNodes[´motivoPerdaMedicamento´].NodeValue := qryPerdas.FieldByName(´MOTIVO_PERDA´).AsString;

Node1.ChildNodes[´medicamentoPerda´].ChildNodes[´registroMSMedicamento´].NodeValue := LimpaStr(qryPerdas.FieldByName(´NRM´).AsString);
Node1.ChildNodes[´medicamentoPerda´].ChildNodes[´numeroLoteMedicamento´].NodeValue := qryPerdas.FieldByName(´LOTE´).AsString;
Node1.ChildNodes[´medicamentoPerda´].ChildNodes[´quantidadeMedicamento´].NodeValue := qryPerdas.FieldByName(´QUANTIDADE´).AsString;

Node1.ChildNodes[´dataPerdaMedicamento´].NodeValue := FormatDateTime(´yyyy-mm-dd´,qryPerdas.FieldByName(´DATA_PERDA´).AsDateTime);
qryPerdas.Next;

end;


NodeMedicamentos := NodeCorpo.AddChild(´insumos´);
Node1 := NodeMedicamentos.AddChild(´entradaInsumos´);

Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´numeroNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´dataNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´cnpjOrigem´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalEntradaInsumo´].ChildNodes[´cnpjDestino´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´insumoEntrada´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´insumoEntrada´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´insumoEntrada´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´quantidadeInsumoEntrada´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoEntrada´].ChildNodes[´tipoUnidadeEntrada´].NodeValue := ´´;

Node1.ChildNodes[´dataRecebimentoInsumo´].NodeValue := ´´;


Node1 := NodeMedicamentos.AddChild(´saidaInsumoVendaAoConsumidor´);

Node1.ChildNodes[´tipoReceituarioInsumo´].NodeValue := ´´;
Node1.ChildNodes[´numeroNotificacaoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´dataPrescricaoInsumo´].NodeValue := ´´;

Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´nomePrescritor´].NodeValue := ´´;
Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´numeroRegistroProfissional´].NodeValue := ´´;
Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´conselhoProfissional´].NodeValue := ´´;
Node1.ChildNodes[´prescritorInsumo´].ChildNodes[´UFConselho´].NodeValue := ´´;

Node1.ChildNodes[´usoInsumo´].NodeValue := ´´;

Node1.ChildNodes[´compradorInsumo´].ChildNodes[´nomeComprador´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´tipoDocumento´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´numeroDocumento´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´orgaoExpedidor´].NodeValue := ´´;
Node1.ChildNodes[´compradorInsumo´].ChildNodes[´UFEmissaoDocumento´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´insumoVendaAoConsumidor´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´quantidadeDeInsumoPorUnidadeFarmacotecnica´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´unidadeDeMedidaDoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´unidadeFarmacotecnica´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoVendaAoConsumidor´].ChildNodes[´quantidadeDeUnidadesFarmacotecnicas´].NodeValue := ´´;

Node1.ChildNodes[´dataVendaInsumo´].NodeValue := ´´;




Node1 := NodeMedicamentos.AddChild(´saidaInsumoTransferencia´);

Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´numeroNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´dataNotaFiscal´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´cnpjOrigem´].NodeValue := ´´;
Node1.ChildNodes[´notaFiscalTransferenciaInsumo´].ChildNodes[´cnpjDestino´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´insumoTransferencia´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´insumoTransferencia´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´insumoTransferencia´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´quantidadeInsumoTransferencia´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoTransferencia´].ChildNodes[´tipoUnidadeTransferencia´].NodeValue := ´´;

Node1.ChildNodes[´dataTransferenciaInsumo´].NodeValue := ´´;


Node1 := NodeMedicamentos.AddChild(´saidaInsumoPerda´);

Node1.ChildNodes[´motivoPerdaInsumo´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´insumoPerda´].ChildNodes[´codigoInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´insumoPerda´].ChildNodes[´numeroLoteInsumo´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´insumoPerda´].ChildNodes[´insumoCNPJFornecedor´].NodeValue := ´´;

Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´quantidadeInsumoPerda´].NodeValue := ´´;
Node1.ChildNodes[´substanciaInsumoPerda´].ChildNodes[´tipoUnidadePerda´].NodeValue := ´´;

Node1.ChildNodes[´dataPerdaInsumo´].NodeValue := ´´;
Node1.ChildNodes[´cnpjFornecedorInsumo´].NodeValue := ´´;


SaveToFile(Pchar(´teste.xml´));

end;
XML.Active := False;
XML.Free;
end;


Sergio Kawahara


GOSTEI 0
Sergiokawahara

Sergiokawahara

24/08/2007

Mas o problema que estou encontrando é que quando envio o arquivo gerado pela rotina acima da uma msg : Arquivo XML não aderente ao Schema SNGPC´, a única coisa que notei que ficou diferente no arquivo para com o exemplo da anvisa, é que quando abro ele no NOTEPAD o no meu arquivo todas a tags aparecem na mesma linha o que naum acontece com o arquivo da anvisa, talvez seja esse o problema naum sei...

Obrigado

Sergio Kawahara


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

ainda não cheguei a geração do sistema

Creio que na semana que vem vou chegar a este ponto.

o que eu disse e se você ja alterou as propriedade do xmldocument para

nodeident para <tab>

e options
donodeautoindente para true

o meu xml fica identado assim

agora com relaçao a mensagem.

Hoje recebi a senha.
fiz um pequeno exemplo basico so o cadastro.
e deu a mesma mensagem

gera apenas o basico e confira com o exemplo da anvisa.


GOSTEI 0
Aldus

Aldus

24/08/2007

Olá amigos,
Também estou no mesmo dilema, a falta de informação por parte da Anvisa.

Sergio, vc usa apenas o código citado sem fazer a importação do esquema do sngpc?

Mario


GOSTEI 0
Sergiokawahara

Sergiokawahara

24/08/2007

Já consegui resolver o que faltava era a tag do insumos coloquem assim: <insumos /> e pronto já vai passar.

Agora quero saber como posso enviar direto pelo programa sem ter que fazer upload pelo site.

Valeu abraços.


GOSTEI 0
Sergiokawahara

Sergiokawahara

24/08/2007

Mario é isso ai esse rotina que passei faz tudo naum precisa do esquema, basta ajustar para o seu banco de dados e pronto, vai gerar o arquivo igualzinho o exemplo valeu abraços...


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Alguem poderia posta um exemplo de um arquivo .xml

correto que passou na validação.


tentei o meu, nada, o da rotina acima também nada o exemplo do site da aniva.

Gostaria de um arquivo xml que esta correto para validação.


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

exemplo no link

http://www.anvisa.gov.br/hotsite/sngpc/schemas/sngpc200608v1_0.xml


com o exemplo

a validaçao mostra outras informações.

1o tem que cadastrar um inventario no site
http://homologacao.anvisa.gov.br/sngpc

depois pode validar o arquivo, mas somente 01 dia apos o cadastro do inventario e sua finalização.

Fiz o cadastro do inventario lancei um produto que tem que ter o codigo correto

exemplo medicamento 1018002790058
insumo 00000001

finalizar o inventario

agora a validação ira passar , mas como diz que so apos 01 dias amanha terei mais informações.


GOSTEI 0
Pedrodkp

Pedrodkp

24/08/2007

---------------------------
Error
---------------------------
System error: -2146697210.

Line: 0

---------------------------
OK
---------------------------

* Acho que é pau no arquivo, estou usando o Delphi 7.
Alguém pode mandar o sngpc200707v1_0.xsd válido?


GOSTEI 0
Randall

Randall

24/08/2007

veja como fiz :
separei tudo primeiro em procedures

este e o evento on click para gerar o xml

=====================
xml := TXmlDocument.Create(nil);
xml.Active := False;
xml.FileName := ´´;

msg := GetmensagemSNGPC(xml);
xml.Version := ´1.0´;
xml.Encoding := ´ISO-8859-1´;
m.Clear ;

Cabecalho;

EntradaMedicamento ;
SaidaMedicamento ;
TransferenciaMedicamento ;
PerdaMedicamento ;

EntradaInsumo ;
SaidaInsumo ;
TransferenciaInsumo;
PerdaInsumo ;

xml.Active := true ;
xml.SaveToFile(´c:\randall.xml´);


xml := nil; // A interface ´msg´ é o owner do TXmlDocument

MessageDlg(´XML gerado!!!!, Valide-o no SNPGC ´,mtInformation,[MbOk],0);

=====================
//======================================================================
PROCEDURE CABECALHO ;
//======================================================================
BEGIN
msg.Cabecalho.CnpjEmissor := DM.EMPRESACNPJEMISSOR.value ;
msg.Cabecalho.CpfTransmissor := DM.EMPRESACPFTRANSMISSOR.TEXT;
msg.Cabecalho.DataInicio := FORMAtDATETIME(´yyyy-mm-dd´,DM.EMPRESADATAINICIO.VALUE);
msg.Cabecalho.DataFim := FORMAtDATETIME(´yyyy-mm-dd´,DM.EMPRESADATAFIM.VALUE);
END;
//======================================================================
PROCEDURE EntradaInsumo ;
//======================================================================
BEGIN

DM.EntradaInsumo.CLOSE;
DM.EntradaInsumo.Params[0].Value := DM.EMPRESADATAINICIO.Value ;
DM.EntradaInsumo.Params[1].Value := DM.EMPRESADATAFIM.Value ;
DM.EntradaInsumo.OPEN;

WHILE NOT DM.EntradaInsumo.Eof DO
BEGIN
msg.Corpo.Insumos.EntradaInsumos.NotaFiscalEntradaInsumo.NumeroNotaFiscal := DM.EntradaInsumoNUMERONOTAFISCAL.TEXT;
msg.Corpo.Insumos.EntradaInsumos.NotaFiscalEntradaInsumo.TipoOperacaoNotaFiscal := DM.EntradaInsumoTIPOOPERACAONOTAFISCAL.Text ;
msg.Corpo.Insumos.EntradaInsumos.NotaFiscalEntradaInsumo.DataNotaFiscal := FORMATDATETIME(´yyyy-mm-dd´,DM.EntradaInsumoDATANOTAFISCAL.Value);
msg.Corpo.Insumos.EntradaInsumos.NotaFiscalEntradaInsumo.CnpjOrigem := ´99999999999999´ ; //DM.EntradaInsumoCNPJORIGEM.TEXT ;
msg.Corpo.Insumos.EntradaInsumos.NotaFiscalEntradaInsumo.CnpjDestino := ´99999999999999´ ; //DM.EntradaInsumoCNPJDESTINO.TEXT;
msg.Corpo.Insumos.EntradaInsumos.SubstanciaInsumoEntrada.InsumoEntrada.CodigoInsumo := DM.EntradaInsumoREGISTROMS.Text ;
msg.Corpo.Insumos.EntradaInsumos.SubstanciaInsumoEntrada.InsumoEntrada.NumeroLoteInsumo := DM.EntradaInsumoNUMEROLOTE.TEXT ;
msg.Corpo.Insumos.EntradaInsumos.SubstanciaInsumoEntrada.InsumoEntrada.InsumoCNPJFornecedor := DM.EntradaInsumoCNPJFORNECEDOR.text;
msg.Corpo.Insumos.EntradaInsumos.SubstanciaInsumoEntrada.QuantidadeInsumoEntrada := FORMATFLOAT(´0.0´,DM.EntradaInsumoQUANTIDADE.VALUE);
msg.Corpo.Insumos.EntradaInsumos.SubstanciaInsumoEntrada.TipoUnidadeEntrada := DM.EntradaInsumoUNIDADEMEDIDA.TEXT;
msg.Corpo.Insumos.EntradaInsumos.DataRecebimentoInsumo := FORMATDATETIME(´yyyy-mm-dd´,DM.EntradaInsumoDATARECEBIMENTO.Value);
DM.EntradaInsumo.Next ;
END;
END;
//======================================================================
PROCEDURE PerdaInsumo;
//======================================================================
BEGIN

DM.PerdaInsumo.CLOSE;
DM.PerdaInsumo.Params[0].Value := DM.EMPRESADATAINICIO.Value ;
DM.PerdaInsumo.Params[1].Value := DM.EMPRESADATAFIM.Value ;
DM.PerdaInsumo.OPEN;

WHILE NOT DM.PerdaInsumo.Eof DO
BEGIN
msg.Corpo.Insumos.SaidaInsumoPerda.MotivoPerdaInsumo := DM.PerdaInsumoMotivoPerda.Text ;
msg.Corpo.Insumos.SaidaInsumoPerda.SubstanciaInsumoPerda.InsumoPerda.CodigoInsumo := DM.PerdaInsumoREGISTROMS.Text ;
msg.Corpo.Insumos.SaidaInsumoPerda.SubstanciaInsumoPerda.InsumoPerda.NumeroLoteInsumo := DM.PerdaInsumoNUMEROLOTE.Text ;
msg.Corpo.Insumos.SaidaInsumoPerda.SubstanciaInsumoPerda.InsumoPerda.InsumoCNPJFornecedor := DM.PerdaInsumoCNPJFORNECEDOR.Text;
msg.Corpo.Insumos.SaidaInsumoPerda.SubstanciaInsumoPerda.QuantidadeInsumoPerda := DM.PerdaInsumoQUANTIDADE.Text ;
msg.Corpo.Insumos.SaidaInsumoPerda.SubstanciaInsumoPerda.TipoUnidadePerda := DM.PerdaInsumoUNIDADEMEDIDA.Text ;
msg.Corpo.Insumos.SaidaInsumoPerda.DataPerdaInsumo := FORMATDATETIME(´yyyy-mm-dd´,DM.PerdaInsumoDATAPERDA.Value);
msg.Corpo.Insumos.SaidaInsumoPerda.CnpjFornecedorInsumo := DM.PerdaInsumoCNPJFORNECEDOR.Text;
DM.PERDAINSUMO.NEXT ;
END;
END;//======================================================================
PROCEDURE TransferenciaInsumo ;
//======================================================================
BEGIN
DM.TransferenciaInsumo.CLOSE;
DM.TransferenciaInsumo.Params[0].Value := DM.EMPRESADATAINICIO.Value ;
DM.TransferenciaInsumo.Params[1].Value := DM.EMPRESADATAFIM.Value ;
DM.TransferenciaInsumo.OPEN;

WHILE NOT DM.TransferenciaInsumo.Eof DO
BEGIN
msg.Corpo.Insumos.SaidaInsumoTransferencia.NotaFiscalTransferenciaInsumo.NumeroNotaFiscal := DM.TransferenciaInsumoNUMERONOTAFISCAL.Text;
msg.Corpo.Insumos.SaidaInsumoTransferencia.NotaFiscalTransferenciaInsumo.TipoOperacaoNotaFiscal := DM.TransferenciaInsumoTIPOOPERACAONOTAFISCAL.TEXT;
msg.Corpo.Insumos.SaidaInsumoTransferencia.NotaFiscalTransferenciaInsumo.DataNotaFiscal := FORMATDATETIME(´yyyy-mm-dd´,DM.TransferenciaInsumoDATANOTAFISCAL.Value);
msg.Corpo.Insumos.SaidaInsumoTransferencia.NotaFiscalTransferenciaInsumo.CnpjOrigem := DM.TransferenciaInsumoCNPJORIGEM.TEXT ;
msg.Corpo.Insumos.SaidaInsumoTransferencia.NotaFiscalTransferenciaInsumo.CnpjDestino := DM.TransferenciaInsumoCNPJDESTINO.TEXT ;
msg.Corpo.Insumos.SaidaInsumoTransferencia.SubstanciaInsumoTransferencia.InsumoTransferencia.CodigoInsumo := DM.TransferenciaInsumoREGISTROMS.Text ;
msg.Corpo.Insumos.SaidaInsumoTransferencia.SubstanciaInsumoTransferencia.InsumoTransferencia.NumeroLoteInsumo := DM.TransferenciaInsumoNUMEROLOTE.Text ;
msg.Corpo.Insumos.SaidaInsumoTransferencia.SubstanciaInsumoTransferencia.InsumoTransferencia.InsumoCNPJFornecedor := DM.TRANSFERENCIAINSUMOCNPJFORNECEDOR.TEXT;
msg.Corpo.Insumos.SaidaInsumoTransferencia.SubstanciaInsumoTransferencia.QuantidadeInsumoTransferencia := DM.TransferenciaInsumoQUANTIDADE.Text ;
msg.Corpo.Insumos.SaidaInsumoTransferencia.SubstanciaInsumoTransferencia.TipoUnidadeTransferencia := DM.TransferenciaInsumoUNIDADEMEDIDA.Text ;
msg.Corpo.Insumos.SaidaInsumoTransferencia.DataTransferenciaInsumo := FORMATDATETIME(´yyyy-mm-dd´,DM.TransferenciaInsumoDATATRANSFERENCIA.Value);
DM.TransferenciaINSUMO.NEXT ;
END;
END;
//======================================================================
PROCEDURE SaidaInsumo ;
//======================================================================
BEGIN
DM.VendaInsumo.CLOSE;
DM.VendaInsumo.Params[0].Value := DM.EMPRESADATAINICIO.Value ;
DM.VendaInsumo.Params[1].Value := DM.EMPRESADATAFIM.Value ;
DM.VendaInsumo.OPEN;

WHILE NOT DM.VendaInsumo.Eof DO
BEGIN
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.TipoReceituarioInsumo := DM.VendaInsumoTIPORECEITUARIO.TEXT ;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.NumeroNotificacaoInsumo := DM.VendaInsumoNUMERONOTIFICACAO.TEXT ;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.DataPrescricaoInsumo := FORMATDATETIME(´yyyy-mm-dd´,DM.VendaInsumoDATAPRESCRICAO.VALUE);
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.PrescritorInsumo.NomePrescritor := DM.VENDAINSUMONOMEPRESCRITOR.Text;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.PrescritorInsumo.NumeroRegistroProfissional := DM.VendaInsumoNUMEROREGISTROPROFISSIONAL.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.PrescritorInsumo.ConselhoProfissional := DM.VendaInsumoCONSELHOPROFISSIONAL.Text;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.PrescritorInsumo.UFConselho := DM.VendaInsumoUFCONSELHO.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.UsoInsumo := DM.VendaInsumoUSOINSUMO.Text;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.CompradorInsumo.NomeComprador := DM.VendaInsumoNOMECOMPRADOR.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.CompradorInsumo.TipoDocumento := DM.VendaInsumoTIPODOCUMENTO.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.CompradorInsumo.NumeroDocumento := DM.VendaInsumoNUMERODOCUMENTO.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.CompradorInsumo.OrgaoExpedidor := DM.VendaInsumoORGAOEXPEDIDOR.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.CompradorInsumo.UFEmissaoDocumento := DM.VendaInsumoUFEMISSAODOCUMENTO.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.SubstanciaInsumoVendaAoConsumidor.InsumoVendaAoConsumidor.CodigoInsumo := DM.VendaInsumoREGISTROMS.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.SubstanciaInsumoVendaAoConsumidor.InsumoVendaAoConsumidor.NumeroLoteInsumo := DM.VendaInsumoNUMEROLOTE.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.SubstanciaInsumoVendaAoConsumidor.InsumoVendaAoConsumidor.InsumoCNPJFornecedor := DM.VendaInsumoCNPJFORNECEDOR.Text;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.SubstanciaInsumoVendaAoConsumidor.QuantidadeDeInsumoPorUnidadeFarmacotecnica := DM.VendaInsumoQUANTIDADE.Text;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.SubstanciaInsumoVendaAoConsumidor.UnidadeDeMedidaDoInsumo := DM.VendaInsumoUNIDADEMEDIDA.Text;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.SubstanciaInsumoVendaAoConsumidor.UnidadeFarmacotecnica := DM.VendaInsumoUNIDADEFARMACOTECNICA.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.SubstanciaInsumoVendaAoConsumidor.QuantidadeDeUnidadesFarmacotecnicas := DM.VendaInsumoQUANTUNIDADEFARMACOTECNICA.TEXT;
msg.Corpo.Insumos.SaidaInsumoVendaAoConsumidor.DataVendaInsumo := FORMATDATETIME(´yyyy-mm-dd´,DM.VendaInsumoDATAVENDA.Value);
DM.VendaInsumo.NEXT ;
END;

END;

pessoal estou fazendo desta forma isso apos ter feito a geracao daquela unit que o delphi faz junto ao xml.


GOSTEI 0
Pedrodkp

Pedrodkp

24/08/2007

Em vez de renomear o arquivo sngpc200707v1_0.xml para outra extensão eu só mudei o tipo do arquivo de importação para .xml. :|
Tinha sido burrão, se alguém mais foi e não percebeu tá ai a dica.


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Continuando.

Criação do Webservice
va em file, new , other , webservice

selecione WSDL importer

selecione onde voce gravaou o arquivo xml

se não gravou viste o site

o xml do link

site para homologação
http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx
http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL

site para produção
http://sngpc.anvisa.gov.br/webservice/sngpc.asmx
http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL


sera gerado uma unit para trabalhar com o webservice


agora e so utiliza-la.


siga os exemplo do manual da Anvia

criei a unit de envio assim.


procedure TForm1.Button2Click(Sender: TObject);
var ws: sngpcSoap;
comp:String;
begin

Memo1.Lines.Clear;
ws := GetsngpcSoap();


Memo1.Lines.Add(´Validação da senha´);
try
comp:= ws.ValidarUsuario(
´edmar@sesistemas.com.br´,
´12345678´);
except
comp:=´ erro´;

end;
Memo1.Lines.Add(´resposta:´+comp);



Memo1.Lines.Add(´´);
Memo1.Lines.Add(´Consulta Envio do Arquivo´);
try
comp:= ws.EnviaArquivoSNGPC(
´edmar@sesistemas.com.br´,
´12345678´,´c:\teste.xml´,
´´);
Except
comp := ´erro´;

end;
Memo1.Lines.Add(´resposta:´+comp);

Memo1.Lines.Add(´´);
Memo1.Lines.Add(´Envio do Arquivo´);
try
comp:= ws.EnviaArquivoSNGPC(
´edmar@sesistemas.com.br´,
´12345678´,´c:\teste.xml´,
´´);
Except
comp := ´erro´;

end;
Memo1.Lines.Add(´resposta:´+comp);


//HashIdentificacao = Guid();

//
end;


a consulta da senha ja esta ok.

o envio do arquivo precisa passar o hasdidentificacao assim que consegui informo.

para gerar o arquivo final tem que usar o endereço diferente.


GOSTEI 0
Pedrodkp

Pedrodkp

24/08/2007

A UNIT que o Delphi gerou para mim é bem bagunçada.. E em nenhum momento ele me pediu os arquivos de tipos simples e complexos, apenas uma janela para editados.
É isso mesmo? Tenho que monta-los naquela janela?


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Usem a rotina do Randall

e muinto mais simples


Fiz os testes hoje.

problemas


Lancei o inventario ontem.

O sistema so deixa validar dados apos o movimento de 01 dias.

Ou seja o sistema so vai deixar eu validar os dados de hoje amanha. (:


GOSTEI 0
Randall

Randall

24/08/2007

ai moçada, ja conclui a geraçao do xml mas na hora de validar nao consigo emite a mensagem que nao esta conforme esquema sngpc, mas abri o meu xml e o xml exemplo da anvisa estao iguais exceto os dados de meu exemplo alguem faz alguma ideia como devo proceder agora. olhei linha por linha.

Valeu,


GOSTEI 0
Randall

Randall

24/08/2007

podiamos trocar email/msn para sermos mais produtivos assim podemos trocar ate rotinas e pedacos de programa. rndbry@hotmail.com


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Codigo para gera o MD5

http://forum.genovaengine.com/viewtopic.php?t=137&view=previous&sid=f9bd5d35d572070a99e251ecb3426edf

acrecente a unit ao projeto

crie um variavel
HashIdentificacao:String;

HashIdentificacao := MD5Print(MD5File(´c:\teste.xml´));


comp:= ws.ValidarUsuario( LowerCase(
´edmar@sesistemas.com.br´),
´sua senha´);

comp:= ws.EnviaArquivoSNGPC( LowerCase(
´edmar@sesistemas.com.br´),
´sua senha´,
pchar(´c:\teste.xml´),
HashIdentificacao);

Acontece que quando envia com hash ou sem hast esta dando a mesma mensagem


Galera alguém já conseguiu enviar o arquivo do SNGPC direto pelo programa eu estou fazendo assim:

try
GetsngpcSoap.EnviaArquivoSNGPC(´futurasystem@terra.com.br´, ´12345678´, pChar(´NomedoArquivo.xml´),´´);
except
messagedlg(´Atenção! Problema ao conectar com o serviço Anvisa´,mtinformation,[mbok],0);
exit;
end;

mas esta dando essa mesagem de erro:

Project SNGPC.exe raised exception class ERemotableException with message
´Server was unable to process request. --> The data at the root level is
invalid. Line 1, position 1.´. Process stopped. Use Step or Run to continue.


-------------

O meu arquivo se enviar via site passa sem problemas.

Uma dica que descobre quando se envia o arquivo via site.

1) tem que entrar no site
http://homologacao.anvisa.gov.br/sngpc
informar o inventario ou confirmar

2)Agora pode enviar o movimento so que so apos 02 dias apos a do inventario.

3)No site que envia o arquivo
http://www.anvisa.gov.br/hotsite/sngpc/sistemas.asp
http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc_consulta/upload.aspx (teste de envio)

tem os botoes

Transferir -> transfere o arquivo .xml
validar -> valida o arquivo.xml
Limpa Base-> Limpa a base.
Significa que tem que incluir o inventario novamente e esperar 02 dias para transmitir a movimentação.
Fiz isto e vou ter que esperar mais 02 dias (:

Limpa Transmisão->Limpa a transmissão para transmitir novamente.


com relação ao webservice que consegui passar informem.


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Alinha o XML

XMLDocument.LoadFromFile(´c:\teste.xml´);


XMLDocument.NodeIndentStr := ´<tab>´;
XMLDocument.Options := [doNodeAutoIndent];
XMLDocument.Active:=true;
XMLDocument.SaveToFile(´c:\t.xml´);


GOSTEI 0
Randall

Randall

24/08/2007

ja alinhei este maravilho arquivo xml e nao deu certo vc tem como me passar aquele arquivo que o delphi gera o ´sngpc200608v1_0.pas´ so pode ser este o problema nao vejo outra alternativa ?! as chamadas estao todas certas dentro do programa, as variaveis as tags !?


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

[code:1:ae9d2fdf76]

{********************************************************}
{ }
{ XML Data Binding }
{ }
{ Generated on: 24/08/2007 10:03:04 }
{ Generated from: C:\t\SNGPC\sngpc200707v1_0.xsd }
{ Settings stored in: C:\t\SNGPC\sngpc200707v1_0.xdb }
{ }
{********************************************************}

unit sngpc200707v1_0;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

IXMLMensagemSNGPC = interface;
IXMLCabecalho = interface;
IXMLCorpo = interface;
IXMLMedicamentos = interface;
IXMLCt_EntradaMedicamento = interface;
IXMLCt_EntradaMedicamentoList = interface;
IXMLCt_NotaFiscal = interface;
IXMLCt_Medicamento = interface;
IXMLCt_MedicamentoList = interface;
IXMLCt_SaidaMedicamentoVendaAoConsumidor = interface;
IXMLCt_SaidaMedicamentoVendaAoConsumidorList = interface;
IXMLCt_Prescritor = interface;
IXMLCt_Comprador = interface;
IXMLCt_SaidaMedicamentoTransferencia = interface;
IXMLCt_SaidaMedicamentoTransferenciaList = interface;
IXMLCt_SaidaMedicamentoPerda = interface;
IXMLCt_SaidaMedicamentoPerdaList = interface;
IXMLInsumos = interface;
IXMLCt_EntradaInsumo = interface;
IXMLCt_EntradaInsumoList = interface;
IXMLCt_InsumoEntrada = interface;
IXMLCt_InsumoEntradaList = interface;
IXMLCt_Insumo = interface;
IXMLCt_SaidaInsumoVenda = interface;
IXMLCt_SaidaInsumoVendaList = interface;
IXMLCt_InsumoVendaAoConsumidor = interface;
IXMLCt_InsumoVendaAoConsumidorList = interface;
IXMLCt_SaidaInsumoTransferencia = interface;
IXMLCt_SaidaInsumoTransferenciaList = interface;
IXMLCt_InsumoTransferencia = interface;
IXMLCt_InsumoTransferenciaList = interface;
IXMLCt_SaidaInsumoPerda = interface;
IXMLCt_SaidaInsumoPerdaList = interface;
IXMLCt_InsumoPerda = interface;

{ IXMLMensagemSNGPC }

IXMLMensagemSNGPC = interface(IXMLNode)
[´{9FED73F8-D5AE-40A4-9944-7F562527DFE5}´]
{ Property Accessors }
function Get_Cabecalho: IXMLCabecalho;
function Get_Corpo: IXMLCorpo;
{ Methods & Properties }
property Cabecalho: IXMLCabecalho read Get_Cabecalho;
property Corpo: IXMLCorpo read Get_Corpo;
end;

{ IXMLCabecalho }

IXMLCabecalho = interface(IXMLNode)
[´{9D04619C-A1B8-46A1-861D-55391FF037D4}´]
{ Property Accessors }
function Get_CnpjEmissor: WideString;
function Get_CpfTransmissor: WideString;
function Get_DataInicio: WideString;
function Get_DataFim: WideString;
procedure Set_CnpjEmissor(Value: WideString);
procedure Set_CpfTransmissor(Value: WideString);
procedure Set_DataInicio(Value: WideString);
procedure Set_DataFim(Value: WideString);
{ Methods & Properties }
property CnpjEmissor: WideString read Get_CnpjEmissor write Set_CnpjEmissor;
property CpfTransmissor: WideString read Get_CpfTransmissor write Set_CpfTransmissor;
property DataInicio: WideString read Get_DataInicio write Set_DataInicio;
property DataFim: WideString read Get_DataFim write Set_DataFim;
end;

{ IXMLCorpo }

IXMLCorpo = interface(IXMLNode)
[´{05E66AD0-3CE8-419F-8714-3BF687978848}´]
{ Property Accessors }
function Get_Medicamentos: IXMLMedicamentos;
function Get_Insumos: IXMLInsumos;
{ Methods & Properties }
property Medicamentos: IXMLMedicamentos read Get_Medicamentos;
property Insumos: IXMLInsumos read Get_Insumos;
end;

{ IXMLMedicamentos }

IXMLMedicamentos = interface(IXMLNode)
[´{FB9C57A2-97F5-4AF1-B858-C94FD7FA510B}´]
{ Property Accessors }
function Get_EntradaMedicamentos: IXMLCt_EntradaMedicamentoList;
function Get_SaidaMedicamentoVendaAoConsumidor: IXMLCt_SaidaMedicamentoVendaAoConsumidorList;
function Get_SaidaMedicamentoTransferencia: IXMLCt_SaidaMedicamentoTransferenciaList;
function Get_SaidaMedicamentoPerda: IXMLCt_SaidaMedicamentoPerdaList;
{ Methods & Properties }
property EntradaMedicamentos: IXMLCt_EntradaMedicamentoList read Get_EntradaMedicamentos;
property SaidaMedicamentoVendaAoConsumidor: IXMLCt_SaidaMedicamentoVendaAoConsumidorList read Get_SaidaMedicamentoVendaAoConsumidor;
property SaidaMedicamentoTransferencia: IXMLCt_SaidaMedicamentoTransferenciaList read Get_SaidaMedicamentoTransferencia;
property SaidaMedicamentoPerda: IXMLCt_SaidaMedicamentoPerdaList read Get_SaidaMedicamentoPerda;
end;

{ IXMLCt_EntradaMedicamento }

IXMLCt_EntradaMedicamento = interface(IXMLNode)
[´{EAEB59C8-DE70-4FB3-BC51-6204A68D147F}´]
{ Property Accessors }
function Get_NotaFiscalEntradaMedicamento: IXMLCt_NotaFiscal;
function Get_MedicamentoEntrada: IXMLCt_MedicamentoList;
function Get_DataRecebimentoMedicamento: WideString;
procedure Set_DataRecebimentoMedicamento(Value: WideString);
{ Methods & Properties }
property NotaFiscalEntradaMedicamento: IXMLCt_NotaFiscal read Get_NotaFiscalEntradaMedicamento;
property MedicamentoEntrada: IXMLCt_MedicamentoList read Get_MedicamentoEntrada;
property DataRecebimentoMedicamento: WideString read Get_DataRecebimentoMedicamento write Set_DataRecebimentoMedicamento;
end;

{ IXMLCt_EntradaMedicamentoList }

IXMLCt_EntradaMedicamentoList = interface(IXMLNodeCollection)
[´{944506E5-EF0A-4F48-857A-9490DFAF89E8}´]
{ Methods & Properties }
function Add: IXMLCt_EntradaMedicamento;
function Insert(const Index: Integer): IXMLCt_EntradaMedicamento;
function Get_Item(Index: Integer): IXMLCt_EntradaMedicamento;
property Items[Index: Integer]: IXMLCt_EntradaMedicamento read Get_Item; default;
end;

{ IXMLCt_NotaFiscal }

IXMLCt_NotaFiscal = interface(IXMLNode)
[´{5D56531B-10CE-465F-8874-203ACA513B26}´]
{ Property Accessors }
function Get_NumeroNotaFiscal: Integer;
function Get_TipoOperacaoNotaFiscal: WideString;
function Get_DataNotaFiscal: WideString;
function Get_CnpjOrigem: WideString;
function Get_CnpjDestino: WideString;
procedure Set_NumeroNotaFiscal(Value: Integer);
procedure Set_TipoOperacaoNotaFiscal(Value: WideString);
procedure Set_DataNotaFiscal(Value: WideString);
procedure Set_CnpjOrigem(Value: WideString);
procedure Set_CnpjDestino(Value: WideString);
{ Methods & Properties }
property NumeroNotaFiscal: Integer read Get_NumeroNotaFiscal write Set_NumeroNotaFiscal;
property TipoOperacaoNotaFiscal: WideString read Get_TipoOperacaoNotaFiscal write Set_TipoOperacaoNotaFiscal;
property DataNotaFiscal: WideString read Get_DataNotaFiscal write Set_DataNotaFiscal;
property CnpjOrigem: WideString read Get_CnpjOrigem write Set_CnpjOrigem;
property CnpjDestino: WideString read Get_CnpjDestino write Set_CnpjDestino;
end;

{ IXMLCt_Medicamento }

IXMLCt_Medicamento = interface(IXMLNode)
[´{23C1700B-9EBB-4BCA-BDD0-073D4499F636}´]
{ Property Accessors }
function Get_RegistroMSMedicamento: WideString;
function Get_NumeroLoteMedicamento: WideString;
function Get_QuantidadeMedicamento: Integer;
procedure Set_RegistroMSMedicamento(Value: WideString);
procedure Set_NumeroLoteMedicamento(Value: WideString);
procedure Set_QuantidadeMedicamento(Value: Integer);
{ Methods & Properties }
property RegistroMSMedicamento: WideString read Get_RegistroMSMedicamento write Set_RegistroMSMedicamento;
property NumeroLoteMedicamento: WideString read Get_NumeroLoteMedicamento write Set_NumeroLoteMedicamento;
property QuantidadeMedicamento: Integer read Get_QuantidadeMedicamento write Set_QuantidadeMedicamento;
end;

{ IXMLCt_MedicamentoList }

IXMLCt_MedicamentoList = interface(IXMLNodeCollection)
[´{043402FB-E738-4332-BBBB-B2AC86FF81EE}´]
{ Methods & Properties }
function Add: IXMLCt_Medicamento;
function Insert(const Index: Integer): IXMLCt_Medicamento;
function Get_Item(Index: Integer): IXMLCt_Medicamento;
property Items[Index: Integer]: IXMLCt_Medicamento read Get_Item; default;
end;

{ IXMLCt_SaidaMedicamentoVendaAoConsumidor }

IXMLCt_SaidaMedicamentoVendaAoConsumidor = interface(IXMLNode)
[´{8F8E2AAB-5B4B-40FC-9653-28CB1ABE395B}´]
{ Property Accessors }
function Get_TipoReceituarioMedicamento: WideString;
function Get_NumeroNotificacaoMedicamento: WideString;
function Get_DataPrescricaoMedicamento: WideString;
function Get_PrescritorMedicamento: IXMLCt_Prescritor;
function Get_UsoMedicamento: WideString;
function Get_CompradorMedicamento: IXMLCt_Comprador;
function Get_MedicamentoVenda: IXMLCt_MedicamentoList;
function Get_DataVendaMedicamento: WideString;
procedure Set_TipoReceituarioMedicamento(Value: WideString);
procedure Set_NumeroNotificacaoMedicamento(Value: WideString);
procedure Set_DataPrescricaoMedicamento(Value: WideString);
procedure Set_UsoMedicamento(Value: WideString);
procedure Set_DataVendaMedicamento(Value: WideString);
{ Methods & Properties }
property TipoReceituarioMedicamento: WideString read Get_TipoReceituarioMedicamento write Set_TipoReceituarioMedicamento;
property NumeroNotificacaoMedicamento: WideString read Get_NumeroNotificacaoMedicamento write Set_NumeroNotificacaoMedicamento;
property DataPrescricaoMedicamento: WideString read Get_DataPrescricaoMedicamento write Set_DataPrescricaoMedicamento;
property PrescritorMedicamento: IXMLCt_Prescritor read Get_PrescritorMedicamento;
property UsoMedicamento: WideString read Get_UsoMedicamento write Set_UsoMedicamento;
property CompradorMedicamento: IXMLCt_Comprador read Get_CompradorMedicamento;
property MedicamentoVenda: IXMLCt_MedicamentoList read Get_MedicamentoVenda;
property DataVendaMedicamento: WideString read Get_DataVendaMedicamento write Set_DataVendaMedicamento;
end;

{ IXMLCt_SaidaMedicamentoVendaAoConsumidorList }

IXMLCt_SaidaMedicamentoVendaAoConsumidorList = interface(IXMLNodeCollection)
[´{E048D21C-2B49-4BA0-BE98-33AACF16030E}´]
{ Methods & Properties }
function Add: IXMLCt_SaidaMedicamentoVendaAoConsumidor;
function Insert(const Index: Integer): IXMLCt_SaidaMedicamentoVendaAoConsumidor;
function Get_Item(Index: Integer): IXMLCt_SaidaMedicamentoVendaAoConsumidor;
property Items[Index: Integer]: IXMLCt_SaidaMedicamentoVendaAoConsumidor read Get_Item; default;
end;

{ IXMLCt_Prescritor }

IXMLCt_Prescritor = interface(IXMLNode)
[´{7E2949F1-D7D0-45FD-A793-4F1FAE88DAF1}´]
{ Property Accessors }
function Get_NomePrescritor: WideString;
function Get_NumeroRegistroProfissional: WideString;
function Get_ConselhoProfissional: WideString;
function Get_UFConselho: WideString;
procedure Set_NomePrescritor(Value: WideString);
procedure Set_NumeroRegistroProfissional(Value: WideString);
procedure Set_ConselhoProfissional(Value: WideString);
procedure Set_UFConselho(Value: WideString);
{ Methods & Properties }
property NomePrescritor: WideString read Get_NomePrescritor write Set_NomePrescritor;
property NumeroRegistroProfissional: WideString read Get_NumeroRegistroProfissional write Set_NumeroRegistroProfissional;
property ConselhoProfissional: WideString read Get_ConselhoProfissional write Set_ConselhoProfissional;
property UFConselho: WideString read Get_UFConselho write Set_UFConselho;
end;

{ IXMLCt_Comprador }

IXMLCt_Comprador = interface(IXMLNode)
[´{68AC0A0E-75C1-4528-B63E-F1C4E2C88B7B}´]
{ Property Accessors }
function Get_NomeComprador: WideString;
function Get_TipoDocumento: WideString;
function Get_NumeroDocumento: WideString;
function Get_OrgaoExpedidor: WideString;
function Get_UFEmissaoDocumento: WideString;
procedure Set_NomeComprador(Value: WideString);
procedure Set_TipoDocumento(Value: WideString);
procedure Set_NumeroDocumento(Value: WideString);
procedure Set_OrgaoExpedidor(Value: WideString);
procedure Set_UFEmissaoDocumento(Value: WideString);
{ Methods & Properties }
property NomeComprador: WideString read Get_NomeComprador write Set_NomeComprador;
property TipoDocumento: WideString read Get_TipoDocumento write Set_TipoDocumento;
property NumeroDocumento: WideString read Get_NumeroDocumento write Set_NumeroDocumento;
property OrgaoExpedidor: WideString read Get_OrgaoExpedidor write Set_OrgaoExpedidor;
property UFEmissaoDocumento: WideString read Get_UFEmissaoDocumento write Set_UFEmissaoDocumento;
end;

{ IXMLCt_SaidaMedicamentoTransferencia }

IXMLCt_SaidaMedicamentoTransferencia = interface(IXMLNode)
[´{2421362F-1350-497B-87CA-4C1342D2697C}´]
{ Property Accessors }
function Get_NotaFiscalTransferenciaMedicamento: IXMLCt_NotaFiscal;
function Get_MedicamentoTransferencia: IXMLCt_MedicamentoList;
function Get_DataTransferenciaMedicamento: WideString;
procedure Set_DataTransferenciaMedicamento(Value: WideString);
{ Methods & Properties }
property NotaFiscalTransferenciaMedicamento: IXMLCt_NotaFiscal read Get_NotaFiscalTransferenciaMedicamento;
property MedicamentoTransferencia: IXMLCt_MedicamentoList read Get_MedicamentoTransferencia;
property DataTransferenciaMedicamento: WideString read Get_DataTransferenciaMedicamento write Set_DataTransferenciaMedicamento;
end;

{ IXMLCt_SaidaMedicamentoTransferenciaList }

IXMLCt_SaidaMedicamentoTransferenciaList = interface(IXMLNodeCollection)
[´{65B386BB-4AD0-4D3F-BB90-66E519DE054D}´]
{ Methods & Properties }
function Add: IXMLCt_SaidaMedicamentoTransferencia;
function Insert(const Index: Integer): IXMLCt_SaidaMedicamentoTransferencia;
function Get_Item(Index: Integer): IXMLCt_SaidaMedicamentoTransferencia;
property Items[Index: Integer]: IXMLCt_SaidaMedicamentoTransferencia read Get_Item; default;
end;

{ IXMLCt_SaidaMedicamentoPerda }

IXMLCt_SaidaMedicamentoPerda = interface(IXMLNode)
[´{3E7B63F3-9985-44F9-8D71-EE55E9BD22F6}´]
{ Property Accessors }
function Get_MotivoPerdaMedicamento: WideString;
function Get_MedicamentoPerda: IXMLCt_Medicamento;
function Get_DataPerdaMedicamento: WideString;
procedure Set_MotivoPerdaMedicamento(Value: WideString);
procedure Set_DataPerdaMedicamento(Value: WideString);
{ Methods & Properties }
property MotivoPerdaMedicamento: WideString read Get_MotivoPerdaMedicamento write Set_MotivoPerdaMedicamento;
property MedicamentoPerda: IXMLCt_Medicamento read Get_MedicamentoPerda;
property DataPerdaMedicamento: WideString read Get_DataPerdaMedicamento write Set_DataPerdaMedicamento;
end;

{ IXMLCt_SaidaMedicamentoPerdaList }

IXMLCt_SaidaMedicamentoPerdaList = interface(IXMLNodeCollection)
[´{281AF241-5B71-4E22-B3F4-BC15E62BA894}´]
{ Methods & Properties }
function Add: IXMLCt_SaidaMedicamentoPerda;
function Insert(const Index: Integer): IXMLCt_SaidaMedicamentoPerda;
function Get_Item(Index: Integer): IXMLCt_SaidaMedicamentoPerda;
property Items[Index: Integer]: IXMLCt_SaidaMedicamentoPerda read Get_Item; default;
end;

{ IXMLInsumos }

IXMLInsumos = interface(IXMLNode)
[´{A201E2DB-6819-43C7-AEF2-A1C12B8F692B}´]
{ Property Accessors }
function Get_EntradaInsumos: IXMLCt_EntradaInsumoList;
function Get_SaidaInsumoVendaAoConsumidor: IXMLCt_SaidaInsumoVendaList;
function Get_SaidaInsumoTransferencia: IXMLCt_SaidaInsumoTransferenciaList;
function Get_SaidaInsumoPerda: IXMLCt_SaidaInsumoPerdaList;
{ Methods & Properties }
property EntradaInsumos: IXMLCt_EntradaInsumoList read Get_EntradaInsumos;
property SaidaInsumoVendaAoConsumidor: IXMLCt_SaidaInsumoVendaList read Get_SaidaInsumoVendaAoConsumidor;
property SaidaInsumoTransferencia: IXMLCt_SaidaInsumoTransferenciaList read Get_SaidaInsumoTransferencia;
property SaidaInsumoPerda: IXMLCt_SaidaInsumoPerdaList read Get_SaidaInsumoPerda;
end;

{ IXMLCt_EntradaInsumo }

IXMLCt_EntradaInsumo = interface(IXMLNode)
[´{01463377-6587-4085-A2C3-5C87D084253E}´]
{ Property Accessors }
function Get_NotaFiscalEntradaInsumo: IXMLCt_NotaFiscal;
function Get_SubstanciaInsumoEntrada: IXMLCt_InsumoEntradaList;
function Get_DataRecebimentoInsumo: WideString;
procedure Set_DataRecebimentoInsumo(Value: WideString);
{ Methods & Properties }
property NotaFiscalEntradaInsumo: IXMLCt_NotaFiscal read Get_NotaFiscalEntradaInsumo;
property SubstanciaInsumoEntrada: IXMLCt_InsumoEntradaList read Get_SubstanciaInsumoEntrada;
property DataRecebimentoInsumo: WideString read Get_DataRecebimentoInsumo write Set_DataRecebimentoInsumo;
end;

{ IXMLCt_EntradaInsumoList }

IXMLCt_EntradaInsumoList = interface(IXMLNodeCollection)
[´{A2B827C6-4663-4A14-9390-5167CD7D8576}´]
{ Methods & Properties }
function Add: IXMLCt_EntradaInsumo;
function Insert(const Index: Integer): IXMLCt_EntradaInsumo;
function Get_Item(Index: Integer): IXMLCt_EntradaInsumo;
property Items[Index: Integer]: IXMLCt_EntradaInsumo read Get_Item; default;
end;

{ IXMLCt_InsumoEntrada }

IXMLCt_InsumoEntrada = interface(IXMLNode)
[´{373D620D-D3BD-4683-8E2B-4F7FA21CCA4D}´]
{ Property Accessors }
function Get_InsumoEntrada: IXMLCt_Insumo;
function Get_QuantidadeInsumoEntrada: WideString;
function Get_TipoUnidadeEntrada: WideString;
procedure Set_QuantidadeInsumoEntrada(Value: WideString);
procedure Set_TipoUnidadeEntrada(Value: WideString);
{ Methods & Properties }
property InsumoEntrada: IXMLCt_Insumo read Get_InsumoEntrada;
property QuantidadeInsumoEntrada: WideString read Get_QuantidadeInsumoEntrada write Set_QuantidadeInsumoEntrada;
property TipoUnidadeEntrada: WideString read Get_TipoUnidadeEntrada write Set_TipoUnidadeEntrada;
end;

{ IXMLCt_InsumoEntradaList }

IXMLCt_InsumoEntradaList = interface(IXMLNodeCollection)
[´{5BC8087D-EAB1-48F9-B16D-3A468976F4A6}´]
{ Methods & Properties }
function Add: IXMLCt_InsumoEntrada;
function Insert(const Index: Integer): IXMLCt_InsumoEntrada;
function Get_Item(Index: Integer): IXMLCt_InsumoEntrada;
property Items[Index: Integer]: IXMLCt_InsumoEntrada read Get_Item; default;
end;

{ IXMLCt_Insumo }

IXMLCt_Insumo = interface(IXMLNode)
[´{BA2976C0-23D1-46D8-BC25-83A15D0D6B27}´]
{ Property Accessors }
function Get_CodigoInsumo: WideString;
function Get_NumeroLoteInsumo: WideString;
function Get_InsumoCNPJFornecedor: WideString;
procedure Set_CodigoInsumo(Value: WideString);
procedure Set_NumeroLoteInsumo(Value: WideString);
procedure Set_InsumoCNPJFornecedor(Value: WideString);
{ Methods & Properties }
property CodigoInsumo: WideString read Get_CodigoInsumo write Set_CodigoInsumo;
property NumeroLoteInsumo: WideString read Get_NumeroLoteInsumo write Set_NumeroLoteInsumo;
property InsumoCNPJFornecedor: WideString read Get_InsumoCNPJFornecedor write Set_InsumoCNPJFornecedor;
end;

{ IXMLCt_SaidaInsumoVenda }

IXMLCt_SaidaInsumoVenda = interface(IXMLNode)
[´{829C094B-D201-40E0-B7E6-EB993DEDC489}´]
{ Property Accessors }
function Get_TipoReceituarioInsumo: WideString;
function Get_NumeroNotificacaoInsumo: WideString;
function Get_DataPrescricaoInsumo: WideString;
function Get_PrescritorInsumo: IXMLCt_Prescritor;
function Get_UsoInsumo: WideString;
function Get_CompradorInsumo: IXMLCt_Comprador;
function Get_SubstanciaInsumoVendaAoConsumidor: IXMLCt_InsumoVendaAoConsumidorList;
function Get_DataVendaInsumo: WideString;
procedure Set_TipoReceituarioInsumo(Value: WideString);
procedure Set_NumeroNotificacaoInsumo(Value: WideString);
procedure Set_DataPrescricaoInsumo(Value: WideString);
procedure Set_UsoInsumo(Value: WideString);
procedure Set_DataVendaInsumo(Value: WideString);
{ Methods & Properties }
property TipoReceituarioInsumo: WideString read Get_TipoReceituarioInsumo write Set_TipoReceituarioInsumo;
property NumeroNotificacaoInsumo: WideString read Get_NumeroNotificacaoInsumo write Set_NumeroNotificacaoInsumo;
property DataPrescricaoInsumo: WideString read Get_DataPrescricaoInsumo write Set_DataPrescricaoInsumo;
property PrescritorInsumo: IXMLCt_Prescritor read Get_PrescritorInsumo;
property UsoInsumo: WideString read Get_UsoInsumo write Set_UsoInsumo;
property CompradorInsumo: IXMLCt_Comprador read Get_CompradorInsumo;
property SubstanciaInsumoVendaAoConsumidor: IXMLCt_InsumoVendaAoConsumidorList read Get_SubstanciaInsumoVendaAoConsumidor;
property DataVendaInsumo: WideString read Get_DataVendaInsumo write Set_DataVendaInsumo;
end;

{ IXMLCt_SaidaInsumoVendaList }

IXMLCt_SaidaInsumoVendaList = interface(IXMLNodeCollection)
[´{05C41FBF-6526-49C9-9188-303C419473BA}´]
{ Methods & Properties }
function Add: IXMLCt_SaidaInsumoVenda;
function Insert(const Index: Integer): IXMLCt_SaidaInsumoVenda;
function Get_Item(Index: Integer): IXMLCt_SaidaInsumoVenda;
property Items[Index: Integer]: IXMLCt_SaidaInsumoVenda read Get_Item; default;
end;

{ IXMLCt_InsumoVendaAoConsumidor }

IXMLCt_InsumoVendaAoConsumidor = interface(IXMLNode)
[´{FF5FD448-2867-4A02-879B-7B994CD4B678}´]
{ Property Accessors }
function Get_InsumoVendaAoConsumidor: IXMLCt_Insumo;
function Get_QuantidadeDeInsumoPorUnidadeFarmacotecnica: WideString;
function Get_UnidadeDeMedidaDoInsumo: WideString;
function Get_UnidadeFarmacotecnica: Integer;
function Get_QuantidadeDeUnidadesFarmacotecnicas: WideString;
procedure Set_QuantidadeDeInsumoPorUnidadeFarmacotecnica(Value: WideString);
procedure Set_UnidadeDeMedidaDoInsumo(Value: WideString);
procedure Set_UnidadeFarmacotecnica(Value: Integer);
procedure Set_QuantidadeDeUnidadesFarmacotecnicas(Value: WideString);
{ Methods & Properties }
property InsumoVendaAoConsumidor: IXMLCt_Insumo read Get_InsumoVendaAoConsumidor;
property QuantidadeDeInsumoPorUnidadeFarmacotecnica: WideString read Get_QuantidadeDeInsumoPorUnidadeFarmacotecnica write Set_QuantidadeDeInsumoPorUnidadeFarmacotecnica;
property UnidadeDeMedidaDoInsumo: WideString read Get_UnidadeDeMedidaDoInsumo write Set_UnidadeDeMedidaDoInsumo;
property UnidadeFarmacotecnica: Integer read Get_UnidadeFarmacotecnica write Set_UnidadeFarmacotecnica;
property QuantidadeDeUnidadesFarmacotecnicas: WideString read Get_QuantidadeDeUnidadesFarmacotecnicas write Set_QuantidadeDeUnidadesFarmacotecnicas;
end;

{ IXMLCt_InsumoVendaAoConsumidorList }

IXMLCt_InsumoVendaAoConsumidorList = interface(IXMLNodeCollection)
[´{4C8CB444-9618-49FA-9C1D-99ACB4F686C7}´]
{ Methods & Properties }
function Add: IXMLCt_InsumoVendaAoConsumidor;
function Insert(const Index: Integer): IXMLCt_InsumoVendaAoConsumidor;
function Get_Item(Index: Integer): IXMLCt_InsumoVendaAoConsumidor;
property Items[Index: Integer]: IXMLCt_InsumoVendaAoConsumidor read Get_Item; default;
end;

{ IXMLCt_SaidaInsumoTransferencia }

IXMLCt_SaidaInsumoTransferencia = interface(IXMLNode)
[´{F71CD79C-E3B8-4F4A-8E46-72D4CF11ECFA}´]
{ Property Accessors }
function Get_NotaFiscalTransferenciaInsumo: IXMLCt_NotaFiscal;
function Get_SubstanciaInsumoTransferencia: IXMLCt_InsumoTransferenciaList;
function Get_DataTransferenciaInsumo: WideString;
procedure Set_DataTransferenciaInsumo(Value: WideString);
{ Methods & Properties }
property NotaFiscalTransferenciaInsumo: IXMLCt_NotaFiscal read Get_NotaFiscalTransferenciaInsumo;
property SubstanciaInsumoTransferencia: IXMLCt_InsumoTransferenciaList read Get_SubstanciaInsumoTransferencia;
property DataTransferenciaInsumo: WideString read Get_DataTransferenciaInsumo write Set_DataTransferenciaInsumo;
end;

{ IXMLCt_SaidaInsumoTransferenciaList }

IXMLCt_SaidaInsumoTransferenciaList = interface(IXMLNodeCollection)
[´{E61AB4DE-D2AC-4817-8A72-A44D767674CB}´]
{ Methods & Properties }
function Add: IXMLCt_SaidaInsumoTransferencia;
function Insert(const Index: Integer): IXMLCt_SaidaInsumoTransferencia;
function Get_Item(Index: Integer): IXMLCt_SaidaInsumoTransferencia;
property Items[Index: Integer]: IXMLCt_SaidaInsumoTransferencia read Get_Item; default;
end;

{ IXMLCt_InsumoTransferencia }

IXMLCt_InsumoTransferencia = interface(IXMLNode)
[´{B5631B03-B3CC-4F88-8CFE-4DDD946D4472}´]
{ Property Accessors }
function Get_InsumoTransferencia: IXMLCt_Insumo;
function Get_QuantidadeInsumoTransferencia: WideString;
function Get_TipoUnidadeTransferencia: WideString;
procedure Set_QuantidadeInsumoTransferencia(Value: WideString);
procedure Set_TipoUnidadeTransferencia(Value: WideString);
{ Methods & Properties }
property InsumoTransferencia: IXMLCt_Insumo read Get_InsumoTransferencia;
property QuantidadeInsumoTransferencia: WideString read Get_QuantidadeInsumoTransferencia write Set_QuantidadeInsumoTransferencia;
property TipoUnidadeTransferencia: WideString read Get_TipoUnidadeTransferencia write Set_TipoUnidadeTransferencia;
end;

{ IXMLCt_InsumoTransferenciaList }

IXMLCt_InsumoTransferenciaList = interface(IXMLNodeCollection)
[´{038318C4-CEF8-440E-B294-FB330026BD2C}´]
{ Methods & Properties }
function Add: IXMLCt_InsumoTransferencia;
function Insert(const Index: Integer): IXMLCt_InsumoTransferencia;
function Get_Item(Index: Integer): IXMLCt_InsumoTransferencia;
property Items[Index: Integer]: IXMLCt_InsumoTransferencia read Get_Item; default;
end;

{ IXMLCt_SaidaInsumoPerda }

IXMLCt_SaidaInsumoPerda = interface(IXMLNode)
[´{0ED2E548-2B5D-4DCE-BC00-C091F5C4CE5F}´]
{ Property Accessors }
function Get_MotivoPerdaInsumo: WideString;
function Get_SubstanciaInsumoPerda: IXMLCt_InsumoPerda;
function Get_DataPerdaInsumo: WideString;
function Get_CnpjFornecedorInsumo: WideString;
procedure Set_MotivoPerdaInsumo(Value: WideString);
procedure Set_DataPerdaInsumo(Value: WideString);
procedure Set_CnpjFornecedorInsumo(Value: WideString);
{ Methods & Properties }
property MotivoPerdaInsumo: WideString read Get_MotivoPerdaInsumo write Set_MotivoPerdaInsumo;
property SubstanciaInsumoPerda: IXMLCt_InsumoPerda read Get_SubstanciaInsumoPerda;
property DataPerdaInsumo: WideString read Get_DataPerdaInsumo write Set_DataPerdaInsumo;
property CnpjFornecedorInsumo: WideString read Get_CnpjFornecedorInsumo write Set_CnpjFornecedorInsumo;
end;

{ IXMLCt_SaidaInsumoPerdaList }

IXMLCt_SaidaInsumoPerdaList = interface(IXMLNodeCollection)
[´{FE8B284E-DF2A-4C88-9CF2-AA9CA08D318B}´]
{ Methods & Properties }
function Add: IXMLCt_SaidaInsumoPerda;
function Insert(const Index: Integer): IXMLCt_SaidaInsumoPerda;
function Get_Item(Index: Integer): IXMLCt_SaidaInsumoPerda;
property Items[Index: Integer]: IXMLCt_SaidaInsumoPerda read Get_Item; default;
end;

{ IXMLCt_InsumoPerda }

IXMLCt_InsumoPerda = interface(IXMLNode)
[´{3E6C806F-17FF-45B6-BC0C-63901C15A880}´]
{ Property Accessors }
function Get_InsumoPerda: IXMLCt_Insumo;
function Get_QuantidadeInsumoPerda: WideString;
function Get_TipoUnidadePerda: WideString;
procedure Set_QuantidadeInsumoPerda(Value: WideString);
procedure Set_TipoUnidadePerda(Value: WideString);
{ Methods & Properties }
property InsumoPerda: IXMLCt_Insumo read Get_InsumoPerda;
property QuantidadeInsumoPerda: WideString read Get_QuantidadeInsumoPerda write Set_QuantidadeInsumoPerda;
property TipoUnidadePerda: WideString read Get_TipoUnidadePerda write Set_TipoUnidadePerda;
end;

{ Forward Decls }

TXMLMensagemSNGPC = class;
TXMLCabecalho = class;
TXMLCorpo = class;
TXMLMedicamentos = class;
TXMLCt_EntradaMedicamento = class;
TXMLCt_EntradaMedicamentoList = class;
TXMLCt_NotaFiscal = class;
TXMLCt_Medicamento = class;
TXMLCt_MedicamentoList = class;
TXMLCt_SaidaMedicamentoVendaAoConsumidor = class;
TXMLCt_SaidaMedicamentoVendaAoConsumidorList = class;
TXMLCt_Prescritor = class;
TXMLCt_Comprador = class;
TXMLCt_SaidaMedicamentoTransferencia = class;
TXMLCt_SaidaMedicamentoTransferenciaList = class;
TXMLCt_SaidaMedicamentoPerda = class;
TXMLCt_SaidaMedicamentoPerdaList = class;
TXMLInsumos = class;
TXMLCt_EntradaInsumo = class;
TXMLCt_EntradaInsumoList = class;
TXMLCt_InsumoEntrada = class;
TXMLCt_InsumoEntradaList = class;
TXMLCt_Insumo = class;
TXMLCt_SaidaInsumoVenda = class;
TXMLCt_SaidaInsumoVendaList = class;
TXMLCt_InsumoVendaAoConsumidor = class;
TXMLCt_InsumoVendaAoConsumidorList = class;
TXMLCt_SaidaInsumoTransferencia = class;
TXMLCt_SaidaInsumoTransferenciaList = class;
TXMLCt_InsumoTransferencia = class;
TXMLCt_InsumoTransferenciaList = class;
TXMLCt_SaidaInsumoPerda = class;
TXMLCt_SaidaInsumoPerdaList = class;
TXMLCt_InsumoPerda = class;

{ TXMLMensagemSNGPC }

TXMLMensagemSNGPC = class(TXMLNode, IXMLMensagemSNGPC)
protected
{ IXMLMensagemSNGPC }
function Get_Cabecalho: IXMLCabecalho;
function Get_Corpo: IXMLCorpo;
public
procedure AfterConstruction; override;
end;

{ TXMLCabecalho }

TXMLCabecalho = class(TXMLNode, IXMLCabecalho)
protected
{ IXMLCabecalho }
function Get_CnpjEmissor: WideString;
function Get_CpfTransmissor: WideString;
function Get_DataInicio: WideString;
function Get_DataFim: WideString;
procedure Set_CnpjEmissor(Value: WideString);
procedure Set_CpfTransmissor(Value: WideString);
procedure Set_DataInicio(Value: WideString);
procedure Set_DataFim(Value: WideString);
end;

{ TXMLCorpo }

TXMLCorpo = class(TXMLNode, IXMLCorpo)
protected
{ IXMLCorpo }
function Get_Medicamentos: IXMLMedicamentos;
function Get_Insumos: IXMLInsumos;
public
procedure AfterConstruction; override;
end;

{ TXMLMedicamentos }

TXMLMedicamentos = class(TXMLNode, IXMLMedicamentos)
private
FEntradaMedicamentos: IXMLCt_EntradaMedicamentoList;
FSaidaMedicamentoVendaAoConsumidor: IXMLCt_SaidaMedicamentoVendaAoConsumidorList;
FSaidaMedicamentoTransferencia: IXMLCt_SaidaMedicamentoTransferenciaList;
FSaidaMedicamentoPerda: IXMLCt_SaidaMedicamentoPerdaList;
protected
{ IXMLMedicamentos }
function Get_EntradaMedicamentos: IXMLCt_EntradaMedicamentoList;
function Get_SaidaMedicamentoVendaAoConsumidor: IXMLCt_SaidaMedicamentoVendaAoConsumidorList;
function Get_SaidaMedicamentoTransferencia: IXMLCt_SaidaMedicamentoTransferenciaList;
function Get_SaidaMedicamentoPerda: IXMLCt_SaidaMedicamentoPerdaList;
public
procedure AfterConstruction; override;
end;

{ TXMLCt_EntradaMedicamento }

TXMLCt_EntradaMedicamento = class(TXMLNode, IXMLCt_EntradaMedicamento)
private
FMedicamentoEntrada: IXMLCt_MedicamentoList;
protected
{ IXMLCt_EntradaMedicamento }
function Get_NotaFiscalEntradaMedicamento: IXMLCt_NotaFiscal;
function Get_MedicamentoEntrada: IXMLCt_MedicamentoList;
function Get_DataRecebimentoMedicamento: WideString;
procedure Set_DataRecebimentoMedicamento(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_EntradaMedicamentoList }

TXMLCt_EntradaMedicamentoList = class(TXMLNodeCollection, IXMLCt_EntradaMedicamentoList)
protected
{ IXMLCt_EntradaMedicamentoList }
function Add: IXMLCt_EntradaMedicamento;
function Insert(const Index: Integer): IXMLCt_EntradaMedicamento;
function Get_Item(Index: Integer): IXMLCt_EntradaMedicamento;
end;

{ TXMLCt_NotaFiscal }

TXMLCt_NotaFiscal = class(TXMLNode, IXMLCt_NotaFiscal)
protected
{ IXMLCt_NotaFiscal }
function Get_NumeroNotaFiscal: Integer;
function Get_TipoOperacaoNotaFiscal: WideString;
function Get_DataNotaFiscal: WideString;
function Get_CnpjOrigem: WideString;
function Get_CnpjDestino: WideString;
procedure Set_NumeroNotaFiscal(Value: Integer);
procedure Set_TipoOperacaoNotaFiscal(Value: WideString);
procedure Set_DataNotaFiscal(Value: WideString);
procedure Set_CnpjOrigem(Value: WideString);
procedure Set_CnpjDestino(Value: WideString);
end;

{ TXMLCt_Medicamento }

TXMLCt_Medicamento = class(TXMLNode, IXMLCt_Medicamento)
protected
{ IXMLCt_Medicamento }
function Get_RegistroMSMedicamento: WideString;
function Get_NumeroLoteMedicamento: WideString;
function Get_QuantidadeMedicamento: Integer;
procedure Set_RegistroMSMedicamento(Value: WideString);
procedure Set_NumeroLoteMedicamento(Value: WideString);
procedure Set_QuantidadeMedicamento(Value: Integer);
end;

{ TXMLCt_MedicamentoList }

TXMLCt_MedicamentoList = class(TXMLNodeCollection, IXMLCt_MedicamentoList)
protected
{ IXMLCt_MedicamentoList }
function Add: IXMLCt_Medicamento;
function Insert(const Index: Integer): IXMLCt_Medicamento;
function Get_Item(Index: Integer): IXMLCt_Medicamento;
end;

{ TXMLCt_SaidaMedicamentoVendaAoConsumidor }

TXMLCt_SaidaMedicamentoVendaAoConsumidor = class(TXMLNode, IXMLCt_SaidaMedicamentoVendaAoConsumidor)
private
FMedicamentoVenda: IXMLCt_MedicamentoList;
protected
{ IXMLCt_SaidaMedicamentoVendaAoConsumidor }
function Get_TipoReceituarioMedicamento: WideString;
function Get_NumeroNotificacaoMedicamento: WideString;
function Get_DataPrescricaoMedicamento: WideString;
function Get_PrescritorMedicamento: IXMLCt_Prescritor;
function Get_UsoMedicamento: WideString;
function Get_CompradorMedicamento: IXMLCt_Comprador;
function Get_MedicamentoVenda: IXMLCt_MedicamentoList;
function Get_DataVendaMedicamento: WideString;
procedure Set_TipoReceituarioMedicamento(Value: WideString);
procedure Set_NumeroNotificacaoMedicamento(Value: WideString);
procedure Set_DataPrescricaoMedicamento(Value: WideString);
procedure Set_UsoMedicamento(Value: WideString);
procedure Set_DataVendaMedicamento(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_SaidaMedicamentoVendaAoConsumidorList }

TXMLCt_SaidaMedicamentoVendaAoConsumidorList = class(TXMLNodeCollection, IXMLCt_SaidaMedicamentoVendaAoConsumidorList)
protected
{ IXMLCt_SaidaMedicamentoVendaAoConsumidorList }
function Add: IXMLCt_SaidaMedicamentoVendaAoConsumidor;
function Insert(const Index: Integer): IXMLCt_SaidaMedicamentoVendaAoConsumidor;
function Get_Item(Index: Integer): IXMLCt_SaidaMedicamentoVendaAoConsumidor;
end;

{ TXMLCt_Prescritor }

TXMLCt_Prescritor = class(TXMLNode, IXMLCt_Prescritor)
protected
{ IXMLCt_Prescritor }
function Get_NomePrescritor: WideString;
function Get_NumeroRegistroProfissional: WideString;
function Get_ConselhoProfissional: WideString;
function Get_UFConselho: WideString;
procedure Set_NomePrescritor(Value: WideString);
procedure Set_NumeroRegistroProfissional(Value: WideString);
procedure Set_ConselhoProfissional(Value: WideString);
procedure Set_UFConselho(Value: WideString);
end;

{ TXMLCt_Comprador }

TXMLCt_Comprador = class(TXMLNode, IXMLCt_Comprador)
protected
{ IXMLCt_Comprador }
function Get_NomeComprador: WideString;
function Get_TipoDocumento: WideString;
function Get_NumeroDocumento: WideString;
function Get_OrgaoExpedidor: WideString;
function Get_UFEmissaoDocumento: WideString;
procedure Set_NomeComprador(Value: WideString);
procedure Set_TipoDocumento(Value: WideString);
procedure Set_NumeroDocumento(Value: WideString);
procedure Set_OrgaoExpedidor(Value: WideString);
procedure Set_UFEmissaoDocumento(Value: WideString);
end;

{ TXMLCt_SaidaMedicamentoTransferencia }

TXMLCt_SaidaMedicamentoTransferencia = class(TXMLNode, IXMLCt_SaidaMedicamentoTransferencia)
private
FMedicamentoTransferencia: IXMLCt_MedicamentoList;
protected
{ IXMLCt_SaidaMedicamentoTransferencia }
function Get_NotaFiscalTransferenciaMedicamento: IXMLCt_NotaFiscal;
function Get_MedicamentoTransferencia: IXMLCt_MedicamentoList;
function Get_DataTransferenciaMedicamento: WideString;
procedure Set_DataTransferenciaMedicamento(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_SaidaMedicamentoTransferenciaList }

TXMLCt_SaidaMedicamentoTransferenciaList = class(TXMLNodeCollection, IXMLCt_SaidaMedicamentoTransferenciaList)
protected
{ IXMLCt_SaidaMedicamentoTransferenciaList }
function Add: IXMLCt_SaidaMedicamentoTransferencia;
function Insert(const Index: Integer): IXMLCt_SaidaMedicamentoTransferencia;
function Get_Item(Index: Integer): IXMLCt_SaidaMedicamentoTransferencia;
end;

{ TXMLCt_SaidaMedicamentoPerda }

TXMLCt_SaidaMedicamentoPerda = class(TXMLNode, IXMLCt_SaidaMedicamentoPerda)
protected
{ IXMLCt_SaidaMedicamentoPerda }
function Get_MotivoPerdaMedicamento: WideString;
function Get_MedicamentoPerda: IXMLCt_Medicamento;
function Get_DataPerdaMedicamento: WideString;
procedure Set_MotivoPerdaMedicamento(Value: WideString);
procedure Set_DataPerdaMedicamento(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_SaidaMedicamentoPerdaList }

TXMLCt_SaidaMedicamentoPerdaList = class(TXMLNodeCollection, IXMLCt_SaidaMedicamentoPerdaList)
protected
{ IXMLCt_SaidaMedicamentoPerdaList }
function Add: IXMLCt_SaidaMedicamentoPerda;
function Insert(const Index: Integer): IXMLCt_SaidaMedicamentoPerda;
function Get_Item(Index: Integer): IXMLCt_SaidaMedicamentoPerda;
end;

{ TXMLInsumos }

TXMLInsumos = class(TXMLNode, IXMLInsumos)
private
FEntradaInsumos: IXMLCt_EntradaInsumoList;
FSaidaInsumoVendaAoConsumidor: IXMLCt_SaidaInsumoVendaList;
FSaidaInsumoTransferencia: IXMLCt_SaidaInsumoTransferenciaList;
FSaidaInsumoPerda: IXMLCt_SaidaInsumoPerdaList;
protected
{ IXMLInsumos }
function Get_EntradaInsumos: IXMLCt_EntradaInsumoList;
function Get_SaidaInsumoVendaAoConsumidor: IXMLCt_SaidaInsumoVendaList;
function Get_SaidaInsumoTransferencia: IXMLCt_SaidaInsumoTransferenciaList;
function Get_SaidaInsumoPerda: IXMLCt_SaidaInsumoPerdaList;
public
procedure AfterConstruction; override;
end;

{ TXMLCt_EntradaInsumo }

TXMLCt_EntradaInsumo = class(TXMLNode, IXMLCt_EntradaInsumo)
private
FSubstanciaInsumoEntrada: IXMLCt_InsumoEntradaList;
protected
{ IXMLCt_EntradaInsumo }
function Get_NotaFiscalEntradaInsumo: IXMLCt_NotaFiscal;
function Get_SubstanciaInsumoEntrada: IXMLCt_InsumoEntradaList;
function Get_DataRecebimentoInsumo: WideString;
procedure Set_DataRecebimentoInsumo(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_EntradaInsumoList }

TXMLCt_EntradaInsumoList = class(TXMLNodeCollection, IXMLCt_EntradaInsumoList)
protected
{ IXMLCt_EntradaInsumoList }
function Add: IXMLCt_EntradaInsumo;
function Insert(const Index: Integer): IXMLCt_EntradaInsumo;
function Get_Item(Index: Integer): IXMLCt_EntradaInsumo;
end;

{ TXMLCt_InsumoEntrada }

TXMLCt_InsumoEntrada = class(TXMLNode, IXMLCt_InsumoEntrada)
protected
{ IXMLCt_InsumoEntrada }
function Get_InsumoEntrada: IXMLCt_Insumo;
function Get_QuantidadeInsumoEntrada: WideString;
function Get_TipoUnidadeEntrada: WideString;
procedure Set_QuantidadeInsumoEntrada(Value: WideString);
procedure Set_TipoUnidadeEntrada(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_InsumoEntradaList }

TXMLCt_InsumoEntradaList = class(TXMLNodeCollection, IXMLCt_InsumoEntradaList)
protected
{ IXMLCt_InsumoEntradaList }
function Add: IXMLCt_InsumoEntrada;
function Insert(const Index: Integer): IXMLCt_InsumoEntrada;
function Get_Item(Index: Integer): IXMLCt_InsumoEntrada;
end;

{ TXMLCt_Insumo }

TXMLCt_Insumo = class(TXMLNode, IXMLCt_Insumo)
protected
{ IXMLCt_Insumo }
function Get_CodigoInsumo: WideString;
function Get_NumeroLoteInsumo: WideString;
function Get_InsumoCNPJFornecedor: WideString;
procedure Set_CodigoInsumo(Value: WideString);
procedure Set_NumeroLoteInsumo(Value: WideString);
procedure Set_InsumoCNPJFornecedor(Value: WideString);
end;

{ TXMLCt_SaidaInsumoVenda }

TXMLCt_SaidaInsumoVenda = class(TXMLNode, IXMLCt_SaidaInsumoVenda)
private
FSubstanciaInsumoVendaAoConsumidor: IXMLCt_InsumoVendaAoConsumidorList;
protected
{ IXMLCt_SaidaInsumoVenda }
function Get_TipoReceituarioInsumo: WideString;
function Get_NumeroNotificacaoInsumo: WideString;
function Get_DataPrescricaoInsumo: WideString;
function Get_PrescritorInsumo: IXMLCt_Prescritor;
function Get_UsoInsumo: WideString;
function Get_CompradorInsumo: IXMLCt_Comprador;
function Get_SubstanciaInsumoVendaAoConsumidor: IXMLCt_InsumoVendaAoConsumidorList;
function Get_DataVendaInsumo: WideString;
procedure Set_TipoReceituarioInsumo(Value: WideString);
procedure Set_NumeroNotificacaoInsumo(Value: WideString);
procedure Set_DataPrescricaoInsumo(Value: WideString);
procedure Set_UsoInsumo(Value: WideString);
procedure Set_DataVendaInsumo(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_SaidaInsumoVendaList }

TXMLCt_SaidaInsumoVendaList = class(TXMLNodeCollection, IXMLCt_SaidaInsumoVendaList)
protected
{ IXMLCt_SaidaInsumoVendaList }
function Add: IXMLCt_SaidaInsumoVenda;
function Insert(const Index: Integer): IXMLCt_SaidaInsumoVenda;
function Get_Item(Index: Integer): IXMLCt_SaidaInsumoVenda;
end;

{ TXMLCt_InsumoVendaAoConsumidor }

TXMLCt_InsumoVendaAoConsumidor = class(TXMLNode, IXMLCt_InsumoVendaAoConsumidor)
protected
{ IXMLCt_InsumoVendaAoConsumidor }
function Get_InsumoVendaAoConsumidor: IXMLCt_Insumo;
function Get_QuantidadeDeInsumoPorUnidadeFarmacotecnica: WideString;
function Get_UnidadeDeMedidaDoInsumo: WideString;
function Get_UnidadeFarmacotecnica: Integer;
function Get_QuantidadeDeUnidadesFarmacotecnicas: WideString;
procedure Set_QuantidadeDeInsumoPorUnidadeFarmacotecnica(Value: WideString);
procedure Set_UnidadeDeMedidaDoInsumo(Value: WideString);
procedure Set_UnidadeFarmacotecnica(Value: Integer);
procedure Set_QuantidadeDeUnidadesFarmacotecnicas(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_InsumoVendaAoConsumidorList }

TXMLCt_InsumoVendaAoConsumidorList = class(TXMLNodeCollection, IXMLCt_InsumoVendaAoConsumidorList)
protected
{ IXMLCt_InsumoVendaAoConsumidorList }
function Add: IXMLCt_InsumoVendaAoConsumidor;
function Insert(const Index: Integer): IXMLCt_InsumoVendaAoConsumidor;
function Get_Item(Index: Integer): IXMLCt_InsumoVendaAoConsumidor;
end;

{ TXMLCt_SaidaInsumoTransferencia }

TXMLCt_SaidaInsumoTransferencia = class(TXMLNode, IXMLCt_SaidaInsumoTransferencia)
private
FSubstanciaInsumoTransferencia: IXMLCt_InsumoTransferenciaList;
protected
{ IXMLCt_SaidaInsumoTransferencia }
function Get_NotaFiscalTransferenciaInsumo: IXMLCt_NotaFiscal;
function Get_SubstanciaInsumoTransferencia: IXMLCt_InsumoTransferenciaList;
function Get_DataTransferenciaInsumo: WideString;
procedure Set_DataTransferenciaInsumo(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_SaidaInsumoTransferenciaList }

TXMLCt_SaidaInsumoTransferenciaList = class(TXMLNodeCollection, IXMLCt_SaidaInsumoTransferenciaList)
protected
{ IXMLCt_SaidaInsumoTransferenciaList }
function Add: IXMLCt_SaidaInsumoTransferencia;
function Insert(const Index: Integer): IXMLCt_SaidaInsumoTransferencia;
function Get_Item(Index: Integer): IXMLCt_SaidaInsumoTransferencia;
end;

{ TXMLCt_InsumoTransferencia }

TXMLCt_InsumoTransferencia = class(TXMLNode, IXMLCt_InsumoTransferencia)
protected
{ IXMLCt_InsumoTransferencia }
function Get_InsumoTransferencia: IXMLCt_Insumo;
function Get_QuantidadeInsumoTransferencia: WideString;
function Get_TipoUnidadeTransferencia: WideString;
procedure Set_QuantidadeInsumoTransferencia(Value: WideString);
procedure Set_TipoUnidadeTransferencia(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_InsumoTransferenciaList }

TXMLCt_InsumoTransferenciaList = class(TXMLNodeCollection, IXMLCt_InsumoTransferenciaList)
protected
{ IXMLCt_InsumoTransferenciaList }
function Add: IXMLCt_InsumoTransferencia;
function Insert(const Index: Integer): IXMLCt_InsumoTransferencia;
function Get_Item(Index: Integer): IXMLCt_InsumoTransferencia;
end;

{ TXMLCt_SaidaInsumoPerda }

TXMLCt_SaidaInsumoPerda = class(TXMLNode, IXMLCt_SaidaInsumoPerda)
protected
{ IXMLCt_SaidaInsumoPerda }
function Get_MotivoPerdaInsumo: WideString;
function Get_SubstanciaInsumoPerda: IXMLCt_InsumoPerda;
function Get_DataPerdaInsumo: WideString;
function Get_CnpjFornecedorInsumo: WideString;
procedure Set_MotivoPerdaInsumo(Value: WideString);
procedure Set_DataPerdaInsumo(Value: WideString);
procedure Set_CnpjFornecedorInsumo(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ TXMLCt_SaidaInsumoPerdaList }

TXMLCt_SaidaInsumoPerdaList = class(TXMLNodeCollection, IXMLCt_SaidaInsumoPerdaList)
protected
{ IXMLCt_SaidaInsumoPerdaList }
function Add: IXMLCt_SaidaInsumoPerda;
function Insert(const Index: Integer): IXMLCt_SaidaInsumoPerda;
function Get_Item(Index: Integer): IXMLCt_SaidaInsumoPerda;
end;

{ TXMLCt_InsumoPerda }

TXMLCt_InsumoPerda = class(TXMLNode, IXMLCt_InsumoPerda)
protected
{ IXMLCt_InsumoPerda }
function Get_InsumoPerda: IXMLCt_Insumo;
function Get_QuantidadeInsumoPerda: WideString;
function Get_TipoUnidadePerda: WideString;
procedure Set_QuantidadeInsumoPerda(Value: WideString);
procedure Set_TipoUnidadePerda(Value: WideString);
public
procedure AfterConstruction; override;
end;

{ Global Functions }

function GetmensagemSNGPC(Doc: IXMLDocument): IXMLMensagemSNGPC;
function LoadmensagemSNGPC(const FileName: WideString): IXMLMensagemSNGPC;
function NewmensagemSNGPC: IXMLMensagemSNGPC;

const
TargetNamespace = ´urn:sngpc-schema´;

implementation

{ Global Functions }

function GetmensagemSNGPC(Doc: IXMLDocument): IXMLMensagemSNGPC;
begin
Result := Doc.GetDocBinding(´mensagemSNGPC´, TXMLMensagemSNGPC,
TargetNamespace) as IXMLMensagemSNGPC;
end;

function LoadmensagemSNGPC(const FileName: WideString): IXMLMensagemSNGPC;
begin
Result := LoadXMLDocument(FileName).GetDocBinding(´mensagemSNGPC´, TXMLMensagemSNGPC, TargetNamespace) as IXMLMensagemSNGPC;
end;

function NewmensagemSNGPC: IXMLMensagemSNGPC;
begin
Result := NewXMLDocument.GetDocBinding(´mensagemSNGPC´,
TXMLMensagemSNGPC, TargetNamespace) as IXMLMensagemSNGPC;
end;

{ TXMLMensagemSNGPC }

procedure TXMLMensagemSNGPC.AfterConstruction;
begin
RegisterChildNode(´cabecalho´, TXMLCabecalho);
RegisterChildNode(´corpo´, TXMLCorpo);
inherited;
end;

function TXMLMensagemSNGPC.Get_Cabecalho: IXMLCabecalho;
begin
Result := ChildNodes[´cabecalho´] as IXMLCabecalho;
end;

function TXMLMensagemSNGPC.Get_Corpo: IXMLCorpo;
begin
Result := ChildNodes[´corpo´] as IXMLCorpo;
end;

{ TXMLCabecalho }

function TXMLCabecalho.Get_CnpjEmissor: WideString;
begin
Result := ChildNodes[´cnpjEmissor´].Text;
end;

procedure TXMLCabecalho.Set_CnpjEmissor(Value: WideString);
begin
ChildNodes[´cnpjEmissor´].NodeValue := Value;
end;

function TXMLCabecalho.Get_CpfTransmissor: WideString;
begin
Result := ChildNodes[´cpfTransmissor´].Text;
end;

procedure TXMLCabecalho.Set_CpfTransmissor(Value: WideString);
begin
ChildNodes[´cpfTransmissor´].NodeValue := Value;
end;

function TXMLCabecalho.Get_DataInicio: WideString;
begin
Result := ChildNodes[´dataInicio´].Text;
end;

procedure TXMLCabecalho.Set_DataInicio(Value: WideString);
begin
ChildNodes[´dataInicio´].NodeValue := Value;
end;

function TXMLCabecalho.Get_DataFim: WideString;
begin
Result := ChildNodes[´dataFim´].Text;
end;

procedure TXMLCabecalho.Set_DataFim(Value: WideString);
begin
ChildNodes[´dataFim´].NodeValue := Value;
end;

{ TXMLCorpo }

procedure TXMLCorpo.AfterConstruction;
begin
RegisterChildNode(´medicamentos´, TXMLMedicamentos);
RegisterChildNode(´insumos´, TXMLInsumos);
inherited;
end;

function TXMLCorpo.Get_Medicamentos: IXMLMedicamentos;
begin
Result := ChildNodes[´medicamentos´] as IXMLMedicamentos;
end;

function TXMLCorpo.Get_Insumos: IXMLInsumos;
begin
Result := ChildNodes[´insumos´] as IXMLInsumos;
end;

{ TXMLMedicamentos }

procedure TXMLMedicamentos.AfterConstruction;
begin
RegisterChildNode(´entradaMedicamentos´, TXMLCt_EntradaMedicamento);
RegisterChildNode(´saidaMedicamentoVendaAoConsumidor´, TXMLCt_SaidaMedicamentoVendaAoConsumidor);
RegisterChildNode(´saidaMedicamentoTransferencia´, TXMLCt_SaidaMedicamentoTransferencia);
RegisterChildNode(´saidaMedicamentoPerda´, TXMLCt_SaidaMedicamentoPerda);
FEntradaMedicamentos := CreateCollection(TXMLCt_EntradaMedicamentoList, IXMLCt_EntradaMedicamento, ´entradaMedicamentos´) as IXMLCt_EntradaMedicamentoList;
FSaidaMedicamentoVendaAoConsumidor := CreateCollection(TXMLCt_SaidaMedicamentoVendaAoConsumidorList, IXMLCt_SaidaMedicamentoVendaAoConsumidor, ´saidaMedicamentoVendaAoConsumidor´) as IXMLCt_SaidaMedicamentoVendaAoConsumidorList;
FSaidaMedicamentoTransferencia := CreateCollection(TXMLCt_SaidaMedicamentoTransferenciaList, IXMLCt_SaidaMedicamentoTransferencia, ´saidaMedicamentoTransferencia´) as IXMLCt_SaidaMedicamentoTransferenciaList;
FSaidaMedicamentoPerda := CreateCollection(TXMLCt_SaidaMedicamentoPerdaList, IXMLCt_SaidaMedicamentoPerda, ´saidaMedicamentoPerda´) as IXMLCt_SaidaMedicamentoPerdaList;
inherited;
end;

function TXMLMedicamentos.Get_EntradaMedicamentos: IXMLCt_EntradaMedicamentoList;
begin
Result := FEntradaMedicamentos;
end;

function TXMLMedicamentos.Get_SaidaMedicamentoVendaAoConsumidor: IXMLCt_SaidaMedicamentoVendaAoConsumidorList;
begin
Result := FSaidaMedicamentoVendaAoConsumidor;
end;

function TXMLMedicamentos.Get_SaidaMedicamentoTransferencia: IXMLCt_SaidaMedicamentoTransferenciaList;
begin
Result := FSaidaMedicamentoTransferencia;
end;

function TXMLMedicamentos.Get_SaidaMedicamentoPerda: IXMLCt_SaidaMedicamentoPerdaList;
begin
Result := FSaidaMedicamentoPerda;
end;

{ TXMLCt_EntradaMedicamento }

procedure TXMLCt_EntradaMedicamento.AfterConstruction;
begin
RegisterChildNode(´notaFiscalEntradaMedicamento´, TXMLCt_NotaFiscal);
RegisterChildNode(´medicamentoEntrada´, TXMLCt_Medicamento);
FMedicamentoEntrada := CreateCollection(TXMLCt_MedicamentoList, IXMLCt_Medicamento, ´medicamentoEntrada´) as IXMLCt_MedicamentoList;
inherited;
end;

function TXMLCt_EntradaMedicamento.Get_NotaFiscalEntradaMedicamento: IXMLCt_NotaFiscal;
begin
Result := ChildNodes[´notaFiscalEntradaMedicamento´] as IXMLCt_NotaFiscal;
end;

function TXMLCt_EntradaMedicamento.Get_MedicamentoEntrada: IXMLCt_MedicamentoList;
begin
Result := FMedicamentoEntrada;
end;

function TXMLCt_EntradaMedicamento.Get_DataRecebimentoMedicamento: WideString;
begin
Result := ChildNodes[´dataRecebimentoMedicamento´].Text;
end;

procedure TXMLCt_EntradaMedicamento.Set_DataRecebimentoMedicamento(Value: WideString);
begin
ChildNodes[´dataRecebimentoMedicamento´].NodeValue := Value;
end;

{ TXMLCt_EntradaMedicamentoList }

function TXMLCt_EntradaMedicamentoList.Add: IXMLCt_EntradaMedicamento;
begin
Result := AddItem(-1) as IXMLCt_EntradaMedicamento;
end;

function TXMLCt_EntradaMedicamentoList.Insert(const Index: Integer): IXMLCt_EntradaMedicamento;
begin
Result := AddItem(Index) as IXMLCt_EntradaMedicamento;
end;
function TXMLCt_EntradaMedicamentoList.Get_Item(Index: Integer): IXMLCt_EntradaMedicamento;
begin
Result := List[Index] as IXMLCt_EntradaMedicamento;
end;

{ TXMLCt_NotaFiscal }

function TXMLCt_NotaFiscal.Get_NumeroNotaFiscal: Integer;
begin
Result := ChildNodes[´numeroNotaFiscal´].NodeValue;
end;

procedure TXMLCt_NotaFiscal.Set_NumeroNotaFiscal(Value: Integer);
begin
ChildNodes[´numeroNotaFiscal´].NodeValue := Value;
end;

function TXMLCt_NotaFiscal.Get_TipoOperacaoNotaFiscal: WideString;
begin
Result := ChildNodes[´tipoOperacaoNotaFiscal´].Text;
end;

procedure TXMLCt_NotaFiscal.Set_TipoOperacaoNotaFiscal(Value: WideString);
begin
ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := Value;
end;

function TXMLCt_NotaFiscal.Get_DataNotaFiscal: WideString;
begin
Result := ChildNodes[´dataNotaFiscal´].Text;
end;

procedure TXMLCt_NotaFiscal.Set_DataNotaFiscal(Value: WideString);
begin
ChildNodes[´dataNotaFiscal´].NodeValue := Value;
end;

function TXMLCt_NotaFiscal.Get_CnpjOrigem: WideString;
begin
Result := ChildNodes[´cnpjOrigem´].Text;
end;

procedure TXMLCt_NotaFiscal.Set_CnpjOrigem(Value: WideString);
begin
ChildNodes[´cnpjOrigem´].NodeValue := Value;
end;

function TXMLCt_NotaFiscal.Get_CnpjDestino: WideString;
begin
Result := ChildNodes[´cnpjDestino´].Text;
end;

procedure TXMLCt_NotaFiscal.Set_CnpjDestino(Value: WideString);
begin
ChildNodes[´cnpjDestino´].NodeValue := Value;
end;

{ TXMLCt_Medicamento }

function TXMLCt_Medicamento.Get_RegistroMSMedicamento: WideString;
begin
Result := ChildNodes[´registroMSMedicamento´].Text;
end;

procedure TXMLCt_Medicamento.Set_RegistroMSMedicamento(Value: WideString);
begin
ChildNodes[´registroMSMedicamento´].NodeValue := Value;
end;

function TXMLCt_Medicamento.Get_NumeroLoteMedicamento: WideString;
begin
Result := ChildNodes[´numeroLoteMedicamento´].Text;
end;

procedure TXMLCt_Medicamento.Set_NumeroLoteMedicamento(Value: WideString);
begin
ChildNodes[´numeroLoteMedicamento´].NodeValue := Value;
end;

function TXMLCt_Medicamento.Get_QuantidadeMedicamento: Integer;
begin
Result := ChildNodes[´quantidadeMedicamento´].NodeValue;
end;

procedure TXMLCt_Medicamento.Set_QuantidadeMedicamento(Value: Integer);
begin
ChildNodes[´quantidadeMedicamento´].NodeValue := Value;
end;

{ TXMLCt_MedicamentoList }

function TXMLCt_MedicamentoList.Add: IXMLCt_Medicamento;
begin
Result := AddItem(-1) as IXMLCt_Medicamento;
end;

function TXMLCt_MedicamentoList.Insert(const Index: Integer): IXMLCt_Medicamento;
begin
Result := AddItem(Index) as IXMLCt_Medicamento;
end;
function TXMLCt_MedicamentoList.Get_Item(Index: Integer): IXMLCt_Medicamento;
begin
Result := List[Index] as IXMLCt_Medicamento;
end;

{ TXMLCt_SaidaMedicamentoVendaAoConsumidor }

procedure TXMLCt_SaidaMedicamentoVendaAoConsumidor.AfterConstruction;
begin
RegisterChildNode(´prescritorMedicamento´, TXMLCt_Prescritor);
RegisterChildNode(´compradorMedicamento´, TXMLCt_Comprador);
RegisterChildNode(´medicamentoVenda´, TXMLCt_Medicamento);
FMedicamentoVenda := CreateCollection(TXMLCt_MedicamentoList, IXMLCt_Medicamento, ´medicamentoVenda´) as IXMLCt_MedicamentoList;
inherited;
end;

function TXMLCt_SaidaMedicamentoVendaAoConsumidor.Get_TipoReceituarioMedicamento: WideString;
begin
Result := ChildNodes[´tipoReceituarioMedicamento´].Text;
end;

procedure TXMLCt_SaidaMedicamentoVendaAoConsumidor.Set_TipoReceituarioMedicamento(Value: WideString);
begin
ChildNodes[´tipoReceituarioMedicamento´].NodeValue := Value;
end;

function TXMLCt_SaidaMedicamentoVendaAoConsumidor.Get_NumeroNotificacaoMedicamento: WideString;
begin
Result := ChildNodes[´numeroNotificacaoMedicamento´].Text;
end;

procedure TXMLCt_SaidaMedicamentoVendaAoConsumidor.Set_NumeroNotificacaoMedicamento(Value: WideString);
begin
ChildNodes[´numeroNotificacaoMedicamento´].NodeValue := Value;
end;

function TXMLCt_SaidaMedicamentoVendaAoConsumidor.Get_DataPrescricaoMedicamento: WideString;
begin
Result := ChildNodes[´dataPrescricaoMedicamento´].Text;
end;

procedure TXMLCt_SaidaMedicamentoVendaAoConsumidor.Set_DataPrescricaoMedicamento(Value: WideString);
begin
ChildNodes[´dataPrescricaoMedicamento´].NodeValue := Value;
end;

function TXMLCt_SaidaMedicamentoVendaAoConsumidor.Get_PrescritorMedicamento: IXMLCt_Prescritor;
begin
Result := ChildNodes[´prescritorMedicamento´] as IXMLCt_Prescritor;
end;

function TXMLCt_SaidaMedicamentoVendaAoConsumido


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Achei esta rotina que le xml e salva atraves do stream

var
  X: Integer;
  Y: Double;
  S: ShortString;

procedure Gravar(NomeDoArquivo: string);
var
  Stream: TFileStream;
  N: Integer;
begin
  Stream := TFileStream.Create(NomeDoArquivo, fmCreate);
 
  Stream.Write(X, SizeOf(X));
  Stream.Write(Y, SizeOf(Y));

  // string é mais complicado...
  N := Length(S);
  Stream.Write(N, SizeOf(N)); // tamanho
  if N > 0 then Stream.Write(S[1], N); // texto

  Stream.Free;
end;

procedure Ler(NomeDoArquivo: string);
var
  Stream: TFileStream;
  N: Integer;
begin
  Stream := TFileStream.Create(NomeDoArquivo, fmOpenRead);
 
  // le na mesma ordem que escreveu
  Stream.Read(X, SizeOf(X));
  Stream.Read(Y, SizeOf(Y));

  // string é mais complicado...
  Stream.Read(N, SizeOf(N));
  if N > 0 then begin
    SetLength(S, N);
    Stream.Read(S[1], N);
  end
  else begin
    S := ´´;
  end;

  Stream.Free;
end;
[code]



GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

Apos salvar o xml e importar pelo

WSDL import, sera criado a unit ( ok)


agora coloque um componente no formulario

XMLDOCUMENT

é than,than... THTTPRIO


abora basta.

[code]
Var
wbSNGPC:sngpcSoap;
HashIdentificacao:String;

begin

wbSNGPC := HTTPRIO1 AS sngpcsoap;

XMLDocument.LoadFromFile(´c:\t.xml´);

Memo1.Lines.add(wbSNGPC.ValidarUsuario(
´edmar@sesistemas.com.br´,
´12345678´));

HashIdentificacao:= MD5Print(MD5String(XMLDocument.XML.text));

Edit4.Text := HashIdentificacao;


Memo1.Lines.add(wbSNGPC.EnviaArquivoSNGPC(
´edmar@sesistemas.com.br´,
´12345678´,
XMLDocument.XML.text,
HashIdentificacao
));


end;

[code]


Obrigado a todos que contribuiram para esta solução.

[/code]


GOSTEI 0
Tobject_forum

Tobject_forum

24/08/2007

Senhores,

Estou tentando buscar informações para gerar o arquivo XML, mas até agora nao encontrei. Alguem teria um documento que mostra quais campos terei que incluir no XML?

Abraços
Joel


GOSTEI 0
Randall

Randall

24/08/2007

Edmar teria jeito de vc explicar mais a configuracao do webdispatcher que coloquei no meu projeto e esta dando erro.


GOSTEI 0
Randall

Randall

24/08/2007

ok nao foi preciso usar o componente citado, ja esta funcionando tudo ok.
valeu moçada.


GOSTEI 0
Edmarfrazao

Edmarfrazao

24/08/2007

olhe no inicio deste topico.

a rotina do sergiokawahara

basta trocar o banco de dados que esta ok.


GOSTEI 0
Jjinformatica

Jjinformatica

24/08/2007

Pessoal to com o seguinte problema, não to conseguindo gerar varios registro no arquivo ele sempre monta o arquivo xml com o ultimo registro do banco.
meu msn juniorquintella@hotmail.com
abraços


GOSTEI 0
Luciobsilva

Luciobsilva

24/08/2007

Por favor, alguém pode me informar como eu consigo um relatório com os códigos de barras dos medicamentos controlados para eu poder usar num programa para o SNGPC? Estou precisando de um relatório com pelo menos os campos código de barras, nome do medicamento e principio ativo. Obrigado!


GOSTEI 0
Alexfermiano

Alexfermiano

24/08/2007

Estou com problemas em usar a rotina do SergioKawahara. Qndo clico no botão q gera o xml nesta linha:
DocumentElement.ChildNodes.Last.AddChild(´cnpjEmissor´).NodeValue
aparece a seguinte msg: ´Impossible eseguire operazione specificata con un nodo di tipo PCDATA´. Não sei o q estou fazendo errado ou esquecendo de por algum componente. Se alguem puder ajudar desde já agradeço.


GOSTEI 0
Faustoalves

Faustoalves

24/08/2007

Bom dia Randall
Amigo sinceramente não entendi algumas linhas na sua rotina..
Abaixo estão as duas linhas que não entendi.. se puder me explicar..
elas estão logo no início da procedure..
msg := GetmensagemSNGPC(xml);
m.Clear ;


Por exemplo, de onde saiu esta variável msg e esta instrução.. M.clear?
Desde já agradeço
Fausto


GOSTEI 0
Torricelly

Torricelly

24/08/2007

Bom, eu ainda nao tinha trabalho com Xml Schemas ate ter que usar o SNGPC. Então comecei a implementá-lo no delphi atravez do Wizard do Xml Data Bind.

Ele gera o XML perfeito, mas eu ainda estava com algumas dúvidas e encontrei as soluçoes que vcs estao desenvolvendo e postando aqui no fórum.

A solução que o sergiokawahara, está correta, mas tem um ´pequeno grande´ defeito.

Por exemplo na entrada de medicamentos temos a estrutura
<entradaMedicamentos>
<notaFiscalEntradaMedicamento>
.......
</notaFiscalEntradaMedicamento>

<medicamentoEntrada>
<registroMSMedicamento>
<numeroLoteMedicamento>
<quantidadeMedicamento>
</medicamentoEntrada>

<medicamentoEntrada>
<registroMSMedicamento>
<numeroLoteMedicamento>
<quantidadeMedicamento>
</medicamentoEntrada>

<medicamentoEntrada>
<registroMSMedicamento>
<numeroLoteMedicamento>
<quantidadeMedicamento>
</medicamentoEntrada>

<dataRecebimentoMedicamento>

</entradaMedicamentos>
---------------------------------------------------------

Bom, o bug no código do sérgio e tambem do randall é o seguinte:
Foi feito um Loop na Query de Entradas inserindo
1 Nota Fiscal de Entrada e apenas 1 Medicamento da nota
se a nota tiver mais medicamentos ele não irá inserir.

Ou entao vcs estão inserindo varias vezes o numero da mesma nota, com medicamentos diferentes, o que eu acho que está errado (vcs fizeram o teste de envio para Anvisa com essa situação?)

O exemplo de XML acima que fiz, mostra que dentro da tag de entradaMedicamentos, devemos incluir varias tags de <medicamentoEntrada>

o código abaixo serve para entenderem como fiz no delphi:
  //Loop adicionando notas
  with Sngpc.ImensagemSngpc.Corpo.Medicamentos.EntradaMedicamentos.Add do
  begin
    NotaFiscalEntradaMedicamento.NumeroNotaFiscal := 12;
    NotaFiscalEntradaMedicamento.TipoOperacaoNotaFiscal := ´1´;//Compra
    NotaFiscalEntradaMedicamento.DataNotaFiscal := FormatDateTime(FormatoData,Date);
    NotaFiscalEntradaMedicamento.CnpjOrigem  := ´12345678901234´;
    NotaFiscalEntradaMedicamento.CnpjDestino := ´12345678901234´;

    //Loop adicionando medicamentos
    with MedicamentoEntrada.Add do
    begin
      RegistroMSMedicamento := ´1888888888777´;
      NumeroLoteMedicamento := ´200601´;
      QuantidadeMedicamento := 50;
    end;

    DataRecebimentoMedicamento := FormatDateTime(FormatoData,Date);

  end;



É isso ai.. eu só quis alertá-los deste bug.. no mais.. parabéns à aqueles que contribuiram.
valeu :)


GOSTEI 0
Hederson Almeida

Hederson Almeida

24/08/2007

Alguem que ja cadastrou recentemente recebeu a sua senha para testes?
Esta com algum problema no site?


GOSTEI 0
Aldus

Aldus

24/08/2007

Boa amigos,

Alguém já validou o seu arquivo para confirmar a colocação do amigo ´Torricelly´ sobre os itens de cada nota? Se for assim mesmo, como fazer para inserir mais itens no esquema do amigo ´sergiokawahara´, em insiro uma nota da seguinte forma:

Node1:=NodeMedicamentos.AddChild(´entradaMedicamentos´);
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´numeroNotaFiscal´].NodeValue       := ´12544´
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´tipoOperacaoNotaFiscal´].NodeValue := ´1´
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´dataNotaFiscal´].NodeValue         := ´xx/xx/xxxx´
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´cnpjOrigem´].NodeValue             := ´000000000000´
Node1.ChildNodes[´notaFiscalEntradaMedicamento´].ChildNodes[´cnpjDestino´].NodeValue            := ´000000000000´

Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´registroMSMedicamento´].NodeValue            := ´1887286126126´
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´numeroLoteMedicamento´].NodeValue            := ´rj8888´
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´quantidadeMedicamento´].NodeValue            := ´25´

//Ja tentei colocar outro item aqui mas somente cria esse ultimo

Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´registroMSMedicamento´].NodeValue            := ´55555556126´
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´numeroLoteMedicamento´].NodeValue            := ´jj554411´
Node1.ChildNodes[´medicamentoEntrada´].ChildNodes[´quantidadeMedicamento´].NodeValue            := ´1´

Node1.ChildNodes[´dataRecebimentoMedicamento´].NodeValue := DataNota;


Aguardo ajuda para finalizar meu esquema.
Mario


GOSTEI 0
Edilcimar

Edilcimar

24/08/2007

agora que está totalmente perdido sou eu, tentei seguir algumas das dicas aqui fornecidas e não consegui absolutamente nada, uma vez que não entendo de xml, tudo que consegui foi chegar a um beco sem saída!
consegui fazer algumas das dica, mas não consegui nem ao menos acessar ´as coisas´, pois o que criei foi algo que nem ao menos um form tem, e não consigo acessar esta coisa! será que alguém tem uma dica mais consistente?


GOSTEI 0
Edilcimar

Edilcimar

24/08/2007

já tentei importar como aqui está escrito e colocar um xmldocumento, e em ambos os casos o ´form´ gerado é o mesmo, cria um arquivo, mas não sei como jogar os dados dentro!


GOSTEI 0
Edilcimar

Edilcimar

24/08/2007

já tentei todos os esquemas daqui e nenhum funcionou direito, se alguém souber uma dica realmente correta, favor indicar


GOSTEI 0
Edilcimar

Edilcimar

24/08/2007

parei de brigar com a porcaria do xml, fiz tudo na munheca, criando um arquivo texto usando o writeln(), agora vou ter que brigar para enviar isto à antavisa


GOSTEI 0
Josico

Josico

24/08/2007

Salve Galera,

Aproveitando o tópico gostaria de saber se alguém pode me tirar umas dúvidas, já que a anvisa não responde e-mails.

[b:bff3ee321a]1 -[/b:bff3ee321a] Confirmei meu inventário dia 10/03 e estou enviando o primeiro arquivo xml no dia 11/03, com as datas inicial e final também 11/03. Mas recebo uma mensagem dizendo [i:bff3ee321a]´Erro desconhecido na tentativa de validar as datas do arquivo.´[/i:bff3ee321a]

[b:bff3ee321a]2 - [/b:bff3ee321a]Na saída de insumo(perda), há duas referências ao fornecedor.
<saidaInsumoPerda>
<motivoPerdaInsumo>1</motivoPerdaInsumo>
<substanciaInsumoPerda>
<insumoPerda>
<codigoInsumo>12346</codigoInsumo>
<numeroLoteInsumo>d456</numeroLoteInsumo>
<insumoCNPJFornecedor>99900099900000</insumoCNPJFornecedor> [b:bff3ee321a]ESSE CNPJ É DO FABRICANTE DO INSUMO?[/b:bff3ee321a]
</insumoPerda>
<quantidadeInsumoPerda>30000.0</quantidadeInsumoPerda>
<tipoUnidadePerda>1</tipoUnidadePerda>
</substanciaInsumoPerda>
<dataPerdaInsumo>2001-01-01</dataPerdaInsumo>
<cnpjFornecedorInsumo>99999999915000</cnpjFornecedorInsumo> [b:bff3ee321a]ESSE CNPJ É DO FORNECEDOR DO INSUMO?[/b:bff3ee321a]
</saidaInsumoPerda>

[b:bff3ee321a]3 -[/b:bff3ee321a] Os dados cadastrados no inventário na página da anvisa podem ter as suas saídas pelo programa que gera o XML, ou seja, eu não preciso necessáriamente dar saída somente do que eu dei entrada pelo sistema.

Att.,

Josico.


GOSTEI 0
Rafael Wieler

Rafael Wieler

24/08/2007

www.spolti.com.br/sngpc

melhor programa que eu vi até agora sobre isso... não conheço nenhum outro melhor


GOSTEI 0
POSTAR