Alguem esta criando o arquivo de remessa para SNGPC
para a Anvisa referente a movimentação de farmacia para o SNGPC.
Alguma dica de como gerar o arquivo?
Agradeço desde ja.
Edmarfrazao
Respostas
Marcosrocha
24/08/2007
Edmarfrazao
24/08/2007
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.
Randall
24/08/2007
http://www.anvisa.gov.br/sngpc/esquemas.asp´ se puder me ajudar com mais detalhes sobre a maneira que vc fez ficarei grato.
Edmarfrazao
24/08/2007
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
Randall
24/08/2007
Grato.
Edmarfrazao
24/08/2007
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.
Sergiokawahara
24/08/2007
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
Sergiokawahara
24/08/2007
Obrigado
Sergio Kawahara
Edmarfrazao
24/08/2007
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.
Aldus
24/08/2007
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
Sergiokawahara
24/08/2007
Agora quero saber como posso enviar direto pelo programa sem ter que fazer upload pelo site.
Valeu abraços.
Sergiokawahara
24/08/2007
Edmarfrazao
24/08/2007
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.
Edmarfrazao
24/08/2007
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.
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?
Randall
24/08/2007
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.
Pedrodkp
24/08/2007
Tinha sido burrão, se alguém mais foi e não percebeu tá ai a dica.
Edmarfrazao
24/08/2007
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.
Pedrodkp
24/08/2007
É isso mesmo? Tenho que monta-los naquela janela?
Edmarfrazao
24/08/2007
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. (:
Randall
24/08/2007
Valeu,
Randall
24/08/2007
Edmarfrazao
24/08/2007
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.
Edmarfrazao
24/08/2007
XMLDocument.LoadFromFile(´c:\teste.xml´);
XMLDocument.NodeIndentStr := ´<tab>´;
XMLDocument.Options := [doNodeAutoIndent];
XMLDocument.Active:=true;
XMLDocument.SaveToFile(´c:\t.xml´);
Randall
24/08/2007
Edmarfrazao
24/08/2007
{********************************************************}
{ }
{ 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
Edmarfrazao
24/08/2007
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]
Edmarfrazao
24/08/2007
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]
Tobject_forum
24/08/2007
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
Randall
24/08/2007
Randall
24/08/2007
valeu moçada.
Edmarfrazao
24/08/2007
a rotina do sergiokawahara
basta trocar o banco de dados que esta ok.
Jjinformatica
24/08/2007
meu msn juniorquintella@hotmail.com
abraços
Luciobsilva
24/08/2007
Alexfermiano
24/08/2007
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.
Faustoalves
24/08/2007
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
Torricelly
24/08/2007
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 :)
Hederson Almeida
24/08/2007
Esta com algum problema no site?
Aldus
24/08/2007
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
Edilcimar
24/08/2007
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?
Edilcimar
24/08/2007
Edilcimar
24/08/2007
Edilcimar
24/08/2007
Josico
24/08/2007
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.
Rafael Wieler
24/08/2007
melhor programa que eu vi até agora sobre isso... não conheço nenhum outro melhor