Ir para conteúdo
  • Cadastre-se

dev botao

Roteiro E Fontes Para Sngpc V2 E Farmacia Popular Do Brasil


j2c9m7
  • Este tópico foi criado há 311 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Em 11/07/2013 at 18:21, Sérgio Assunção disse:

Olá amigos ... eu tenho em produção o SNGPC na sua versão 2.0 desde abril desse ano. Nosso software realiza todas as operações necessárias, além de verificação online do status da transmissão, importação do inventário, cadastro online de medicamentos, entre outras.

Tenho interesse em comercializar as funções.
Quais os meios de contato que posso informar nessa área de classificados ?

 

Att,

 

Sérgio

Olá Sérgio,

Você ainda está comercializando as funções do SNGPC ?

Att

Obrigado a todos!

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...
8 minutos atrás, Élviro Cavalcanti disse:

Eu possuo uma rotina de SNGPC que faz assa comunicação, posso disponibilizar ela pra vocês

Segue abaixo a rotina que usava e enviava para o site, pode ser que ajude

 

procedure TFrmSNGPC.BitBtn1Click(Sender: TObject);
var
i,x: Word;
NCorpo,NMedicamento,NData: IXMLNode;
XMLDoc: TXMLDocument;
var dti,dtf:string;
begin
dti := formatdatetime('mm/dd/yyyy',DateEdit1.DATE);
dtf := formatdatetime('mm/dd/yyyy',DateEdit2.DATE);

dm.IBUsuario.close;
dm.IBUsuario.SelectSQL.Clear;
dm.IBUsuario.SelectSQL.Add('SELECT * FROM USUARIO');
dm.IBUsuario.open;

x:=1;
// x:=10;
// Cria o documento

//Transformando a data
eddataemissao.Text := copy(DateEdit1.Text, 7, 4) + '-' + copy(DateEdit1.Text, 4, 2)  + '-' +  copy(DateEdit1.Text, 1, 2);
eddatasaida.Text := copy(DateEdit2.Text, 7, 4) + '-' + copy(DateEdit2.Text, 4, 2)  + '-' +  copy(DateEdit2.Text, 1, 2);

eddataemissaoSalvar.Text := copy(DateEdit1.Text, 7, 4) + '_' + copy(DateEdit1.Text, 4, 2)  + '_' +  copy(DateEdit1.Text, 1, 2);
eddatasaidaSalvar.Text := copy(DateEdit2.Text, 7, 4) + '_' + copy(DateEdit2.Text, 4, 2)  + '_' +  copy(DateEdit2.Text, 1, 2);


//Busca todas as entradas no período
dm.IBDetVenda.close;
dm.IBDetVenda.SelectSQL.Clear;
dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetVenda.open;

XMLDoc:=TXMLDocument.Create(Application);
with XMLDoc do
begin
Active:=True;
Version:='1.0';
Encoding:='ISO-8859-1';
AddChild('mensagemSNGPC','urn:sngpc-schema');
with DocumentElement do
begin
AddChild('cabecalho');
ChildNodes.Last.AddChild('cnpjEmissor').NodeValue:=dm.IBUsuarioCPFCNPJ.text;
ChildNodes.Last.AddChild('cpfTransmissor').NodeValue:=DM.IBUsuarioCPFRESPOSANVEL.Text; //Abrir no cadastro da empresa o CPF e nome do resposável
ChildNodes.Last.AddChild('dataInicio').NodeValue:= eddataemissao.text; // FormatDateTime('yyyy-mm-dd',Date);
ChildNodes.Last.AddChild('dataFim').NodeValue:= eddatasaida.Text; // FormatDateTime('yyyy-mm-dd',Date);
end;
NCorpo:=DocumentElement.AddChild('corpo');

// *************************** MEDICAMENTO *********************************
NMedicamento:=NCorpo.AddChild('medicamentos');
// Loop das [Entradas] :: MEDICAMENTO
//Busca todas as entradas no período
dm.IBDetEntrada.close;
dm.IBDetEntrada.SelectSQL.Clear;
dm.IBDetEntrada.SelectSQL.Add('SELECT * FROM DETENTRADA');
dm.IBDetEntrada.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('MEDICAMENTO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetEntrada.open;
if dm.IBDetEntrada.IsEmpty then
begin
ShowMessage('Nada de entrada!');
end
else
begin
//for i:=1 to x do
dm.ibdetentrada.First;
While not dm.IBDetEntrada.eof do
begin
NData:=NMedicamento.AddChild('entradaMedicamentos');
with NData do
begin
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['numeroNotaFiscal'].NodeValue:='1';
// [tipoOperacaoNotaFiscal]
// 1 Compra // 2 Transferência // 3 Venda
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:='1';
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2);//'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03) não pode ser maior que a data do final do periodo informado
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:= dm.IBDetEntradaCNPJFORNECEDOR.text; //'09616205000170'; //**** O CNPJ do fornecedor (09.616.205/0001-70) não existe na base de dados da ANVISA.
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:= dm.IBUsuarioCPFCNPJ.text; //'02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['medicamentoEntrada'].ChildNodes['registroMSMedicamento'].NodeValue:= dm.IBDetEntradaREGISTROMSMANVISA.Text; //'1071402340048';
ChildNodes['medicamentoEntrada'].ChildNodes['numeroLoteMedicamento'].NodeValue:= dm.IBDetEntradaNLOTE.Text; //'A0540';
ChildNodes['medicamentoEntrada'].ChildNodes['quantidadeMedicamento'].NodeValue:= dm.IBDetEntradaQUANTIDADE.Text; //'10';

// A data de recebimento do medicamento (2010-03-03 00:00:00) da nota fiscal (1) não pode ser maior que a data do final do período informado (2010-02-1Cool
ChildNodes['dataRecebimentoMedicamento'].NodeValue:= copy(frmlogin.EdDataDia.Text, 7, 4) + '-' + copy(frmlogin.EdDataDia.Text, 4, 2)  + '-' +  copy(frmlogin.EdDataDia.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
end;
dm.IBDetEntrada.Next;
end;
end;


//Busca todas as entradas no período
dm.IBDetVenda.close;
dm.IBDetVenda.SelectSQL.Clear;
dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('MEDICAMENTO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetVenda.open;
if dm.IBDetVenda.IsEmpty then
begin
ShowMessage('Nada de venda!');
end
else
begin
// Loop das [Saidas] :: MEDICAMENTO
//for i:=1 to x do
dm.ibdetvenda.First;
while not dm.IBDetVenda.eof do
begin
NData:=NMedicamento.AddChild('saidaMedicamentoVendaAoConsumidor');
with NData do
begin
// [tipoReceituarioMedicamento]
// 1 Receita de Controle Especial em 2 vias (Receita Branca)
// 2 Notificação de Receita B (Notificação Azul)
// 3 Notificação de Receita Especial (Notificação Branca)
// 4 Notificação de Receita A (Notificação Amarela)

//Consulta a venda para pegar os dados do médico
dm.IBVenda.close;
dm.IBVenda.SelectSQL.Clear;
dm.IBVenda.SelectSQL.Add('SELECT * FROM VENDAS');
dm.IBVenda.SelectSQL.ADD('WHERE CODIGO = ' + QuotedStr(DM.IBDetVendaCODVENDA.Text) + '');
dm.IBVenda.open;

//Consulta cliente da venda para pegar os dados do cliente
dm.IBClientes.close;
dm.IBClientes.SelectSQL.Clear;
dm.IBClientes.SelectSQL.Add('SELECT * FROM CLIENTES');
dm.IBClientes.SelectSQL.ADD('WHERE CODIGO = ' + QuotedStr(DM.IBDetVendaCODCLI.Text) + '');
dm.IBClientes.open;

ChildNodes['tipoReceituarioMedicamento'].NodeValue:='1';
ChildNodes['numeroNotificacaoMedicamento'].NodeValue:= dm.IBDetVendaREGISTROMSMANVISA.text; //'213213';
ChildNodes['dataPrescricaoMedicamento'].NodeValue:= copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2);//'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data de prescricão (2010-03-03) não pode ser maior que a data do final do período informado
ChildNodes['prescritorMedicamento'].ChildNodes['nomePrescritor'].NodeValue:= dm.IBVendaMEDICO.Text; //'XFULANO';
ChildNodes['prescritorMedicamento'].ChildNodes['numeroRegistroProfissional'].NodeValue:= dm.IBVendaREGISTROMEDICO.Text; //'99999';
// [conselhoProfissional]
// CRM Conselho Regional de Medicina
// CRMV Conselho Regional de Medicina Veterinária
// CRO Conselho Regional de Odontologia
ChildNodes['prescritorMedicamento'].ChildNodes['conselhoProfissional'].NodeValue:= dm.IBVendaCONSELHOMEDICO.Text; //'CRM';
ChildNodes['prescritorMedicamento'].ChildNodes['UFConselho'].NodeValue:= dm.IBVendaUFCONSELHOMEDICO.Text;  //'SP';
// [usoMedicamento]
// 1 Humano
// 2 Veterinario
ChildNodes['usoMedicamento'].NodeValue:='1';
ChildNodes['compradorMedicamento'].ChildNodes['nomeComprador'].NodeValue:= DM.IBVendaCLIENTE.Text; //'XCICLANO';
// [tipoDocumento]
// 1 CARTEIRA DE REGISTRO PROFISSIONAL
// 2 CARTEIRA DE IDENTIDADE . . . existem mais
ChildNodes['compradorMedicamento'].ChildNodes['tipoDocumento'].NodeValue:='2';
ChildNodes['compradorMedicamento'].ChildNodes['numeroDocumento'].NodeValue:= DM.IBClientesRGINSC.Text; //'431053984';
ChildNodes['compradorMedicamento'].ChildNodes['orgaoExpedidor'].NodeValue:= dm.IBClientesEMISSOR.text; //'SSP';
ChildNodes['compradorMedicamento'].ChildNodes['UFEmissaoDocumento'].NodeValue:=  dm.IBClientesUFEMISSOR.Text; //'SP';
ChildNodes['medicamentoVenda'].ChildNodes['registroMSMedicamento'].NodeValue:= dm.IBDetVendaREGISTROMSMANVISA.Text; //'1071402340048';
ChildNodes['medicamentoVenda'].ChildNodes['numeroLoteMedicamento'].NodeValue:= dm.IBDetVendaNLOTE.Text; //'A0540'; // O lote (RGJ0400) do produto de número de registro (1.0100.0043.021-5 - LEXOTAN) não foi encontrado nem no inventário inicial nem nas transações de compras informadas
ChildNodes['medicamentoVenda'].ChildNodes['quantidadeMedicamento'].NodeValue:= dm.IBDetVendaQUANTIDADE.Text; //'1'; // A quantidade vendida (3) do produto de número de registro (1.0100.0043.021-5 - LEXOTAN) do lote (RGJ0400) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['dataVendaMedicamento'].NodeValue := copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da venda (2010-03-03 00:00:00) não pode ser maior que a data do final do periodo informado.
end;
dm.IBDetVenda.Next;
end;
end;


// Loop das [Transferencias] :: MEDICAMENTO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaMedicamentoTransferencia');
with NData do
begin
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '2';
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:= '09616205000170'; //**** não pode haver a transferência entre estas duas empresas.**** O CNPJ da empresa de origem (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:= '02326764000105'; // O CNPJ da empresa de origem (02.326.764/0001-05) não existe na base de dados da ANVISA.
ChildNodes['medicamentoTransferencia'].ChildNodes['registroMSMedicamento'].NodeValue:= '1029802250061'; // AMYTRIL
ChildNodes['medicamentoTransferencia'].ChildNodes['numeroLoteMedicamento'].NodeValue:= '09021207'; // O lote (153353) do produto de número de registro (1.0583.0259.002-9 - HIPOFAGIN S) não foi encontrado nem no inventário inicial nem nas transações de compras informadas.
ChildNodes['medicamentoTransferencia'].ChildNodes['quantidadeMedicamento'].NodeValue:= '1'; // A quantidade transferida (2) do medicamento de número de registro (1.0583.0259.002-9 - HIPOFAGIN S) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['dataTransferenciaMedicamento'].NodeValue:='';// '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
end;
end;

// [tipoOperacaoNotaFiscal]
// 1 Compra // 2 Transferência // 3 Venda


// Loop das [Perdas] :: MEDICAMENTO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaMedicamentoPerda');
with NData do
begin
// [motivoPerdaMedicamento]
// 1 Furto / Roubo
// 2 Avaria
// 3 Vencimento
// 4 Apreensão / Recolhimento pela Visa
ChildNodes['motivoPerdaMedicamento'].NodeValue:='3';
ChildNodes['medicamentoPerda'].ChildNodes['registroMSMedicamento'].NodeValue:='1071402340048';
ChildNodes['medicamentoPerda'].ChildNodes['numeroLoteMedicamento'].NodeValue:='A0540';
ChildNodes['medicamentoPerda'].ChildNodes['quantidadeMedicamento'].NodeValue:='1'; // A quantidade perdida (2) do produto de número de registro (1.0100.0075.006-1 - ROHYPNOL) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['dataPerdaMedicamento'].NodeValue := '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da perda (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
end;
end;

// *************************************************************************
// ********************************* INSUMO ********************************
NMedicamento:=NCorpo.AddChild('insumos');
// Loop das [Entradas] :: INSUMO
//Busca todas as entradas no período
dm.IBDetEntrada.close;
dm.IBDetEntrada.SelectSQL.Clear;
dm.IBDetEntrada.SelectSQL.Add('SELECT * FROM DETENTRADA');
dm.IBDetEntrada.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('INSUMO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetEntrada.open;
dm.IBDetEntrada.First;
While not dm.IBDetEntrada.eof do
begin
NData:=NMedicamento.AddChild('entradaInsumos');
with NData do
begin
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
// [tipoOperacaoNotaFiscal]
// 1 Compra
// 2 Transferência
// 3 Venda
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '1';
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['dataNotaFiscal'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:=  dm.IBUsuarioCPFCNPJ.text; //'09616205000170'; // O CNPJ do fornecedor (99.999.999/0001-99) não pode ser igual ao CNPJ de destino.
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjDestino'].NodeValue:= dm.IBFornecedorCPFCNPJ.Text; //'02326764000105'; // O CNPJ DO fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['codigoInsumo'].NodeValue:= dm.IBDetEntradaCODPRODUTO.text; //'00075';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['numeroLoteInsumo'].NodeValue:=  dm.IBDetEntradaNLOTE.text; //'788cpf';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= dm.IBFornecedorCPFCNPJ.Text; //'02326764000105';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['quantidadeInsumoEntrada'].NodeValue:= dm.IBDetEntradaQUANTIDADE.text; //'40000.0';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['tipoUnidadeEntrada'].NodeValue:= '1';
ChildNodes['dataRecebimentoInsumo'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data de recebimento do insumo (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado (2010-02-18 00:00:00)
end;
dm.IBDetEntrada.Next;
end;


// Loop das [Saidas] :: INSUMO
//Busca todas as entradas no período
dm.IBDetVenda.close;
dm.IBDetVenda.SelectSQL.Clear;
dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('INSUMO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetVenda.open;
DM.IBDETVENDA.First;
While not dm.ibdetvenda.Eof do
begin
NData:=NMedicamento.AddChild('saidaInsumoVendaAoConsumidor');
with NData do
begin
// [tipoReceituarioInsumo]
// 1 Receita de Controle Especial em 2 vias (Receita Branca)
// 2 Notificação de Receita B (Notificação Azul)
// 3 Notificação de Receita Especial (Notificação Branca)
// 4 Notificação de Receita A (Notificação Amarela)
ChildNodes['tipoReceituarioInsumo'].NodeValue:= '2';
ChildNodes['numeroNotificacaoInsumo'].NodeValue:= dm.IBDetVendaCODPRODUTO.text; //'9897651';
ChildNodes['dataPrescricaoInsumo'].NodeValue:= copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2);  //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da prescricão (2010-03-03) não pode ser maior que a data do final do período informado.
ChildNodes['prescritorInsumo'].ChildNodes['nomePrescritor'].NodeValue:= dm.IBVendaMEDICO.text; //'Dr. Antenor';
ChildNodes['prescritorInsumo'].ChildNodes['numeroRegistroProfissional'].NodeValue:= dm.IBVendaREGISTROMEDICO.text; //'8888';
// [conselhoProfissional]
// CRM Conselho Regional de Medicina
// CRMV Conselho Regional de Medicina Veterinária
// CRO Conselho Regional de Odontologia
ChildNodes['prescritorInsumo'].ChildNodes['conselhoProfissional'].NodeValue:= dm.IBVendaCONSELHOMEDICO.text; //'CRM';
ChildNodes['prescritorInsumo'].ChildNodes['UFConselho'].NodeValue:= dm.IBVendaUFCONSELHOMEDICO.text; //'PR'; // A sigla da UF da notificação de receita azul não coincide com a sigla da UF do profissional prescritor.
ChildNodes['usoInsumo'].NodeValue:= '1';
ChildNodes['compradorInsumo'].ChildNodes['nomeComprador'].NodeValue:= dm.IBVendaCLIENTE.text; //'Manuela Danta';
// [tipoDocumento]
// 1 CARTEIRA DE REGISTRO PROFISSIONAL
// 2 CARTEIRA DE IDENTIDADE . . . existem mais
ChildNodes['compradorInsumo'].ChildNodes['tipoDocumento'].NodeValue:= '2';
ChildNodes['compradorInsumo'].ChildNodes['numeroDocumento'].NodeValue:= dm.IBClientesRGINSC.Text; //'89786453';
ChildNodes['compradorInsumo'].ChildNodes['orgaoExpedidor'].NodeValue:= dm.IBClientesEMISSOR.Text; //'SSP';
ChildNodes['compradorInsumo'].ChildNodes['UFEmissaoDocumento'].NodeValue:= dm.IBClientesUFEMISSOR.Text; //'PR';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].NodeValue:= '';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['codigoInsumo'].NodeValue:= dm.IBDetVendaCODPRODUTO.text; //'02904';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['numeroLoteInsumo'].NodeValue:= dm.IBDetVendaNLOTE.text; //'123dzp';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= dm.IBFornecedorCPFCNPJ.text; //'02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['quantidadeDeInsumoPorUnidadeFarmacotecnica'].NodeValue:= dm.IBDetVendaQUANTIDADE.text; //'5.0'; // A quantidade vendida (300) do insumo de número DCB (02904 - diazepam) do lote (123dzp) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
// [unidadeDeMedidaDoInsumo]
// 1 Miligrama
// 2 Mililitro
// 3 Unidade (U)
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['unidadeDeMedidaDoInsumo'].NodeValue:= '1';
// [unidadeFarmacotecnica]
// 1 Miligrama
// 2 Cápsula
// 3 Comprimido
// 4 Mililitro
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['unidadeFarmacotecnica'].NodeValue:= '2';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['quantidadeDeUnidadesFarmacotecnicas'].NodeValue:= '60.0';
ChildNodes['dataVendaInsumo'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da venda (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
end;
dm.ibdetvenda.Next;
end;


// Loop das [Transferencias] :: INSUMO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaInsumoTransferenci');
with NData do
begin
ChildNodes['notaFiscalTransferenciaInsum'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
// [tipoOperacaoNotaFiscal]
// 1 Compra
// 2 Transferência
// 3 Venda
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '2';
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['dataNotaFiscal'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:= '09616205000170'; // O CNPJ do estabelecimento de origem (99.999.999/0001-99) não existe na base DO Corporativo da ANVISA.
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjDestino'].NodeValue:= '02326764000105'; // O CNPJ do estabelecimento de destino (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['codigoInsumo'].NodeValue:= '02904';
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['numeroLoteInsumo'].NodeValue:= '15353';
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= '02326764000105';
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['quantidadeInsumoTransferencia'].NodeValue:= '20000.0'; // A quantidade transferida (20000) do insumo de número DCB (02904 - diazepam) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['tipoUnidadeTransferencia'].NodeValue:= '1';
ChildNodes['dataTransferenciaInsumo'].NodeValue := '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
end;
end;
// Loop das [Perdas] :: INSUMO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaInsumoPerda');
with NData do
begin
// [motivoPerdaInsumo]
// 1 Furto / Roubo
// 2 Avaria
// 3 Vencimento
// 4 Apreensão / Recolhimento pela Visa
ChildNodes['motivoPerdaInsumo'].NodeValue:= '2';
ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['codigoInsumo'].NodeValue:= '02904';
ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['numeroLoteInsumo'].NodeValue:= '786dpz';
ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= '99999999000199'; // O CNPJ do fornecedor (99.999.999/0001-99) não foi encontrado na base de dados da ANVISA.
ChildNodes['substanciaInsumoPerda'].ChildNodes['quantidadeInsumoPerda'].NodeValue:= '12345.0'; // A quantidade perdida (12345) do insumo de número DCB (02904 - diazepam) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['substanciaInsumoPerda'].ChildNodes['tipoUnidadePerda'].NodeValue:= '1';
ChildNodes['dataPerdaInsumo'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da perda (2010-03-03) não pode ser maior que a data do final do período informado.
ChildNodes['cnpjFornecedorInsumo'].NodeValue:='02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não foi encontrado na base de dados da ANVISA.
end;
end;
// *************************************************************************

//SaveToFile(ExtractFileDir(Application.ExeName)+'\SNGPC\Sngpc_'+FormatDateTime('dd_mm_yyyy',Date)+'.xml');
SaveToFile(ExtractFileDir(Application.ExeName)+'\SNGPC\Sngpc_' + eddataemissaoSalvar.text + '_a_' + eddatasaidaSalvar.text + '.xml');
end;
XMLDoc.Active:=False;
XMLDoc.Free;

end;

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores
1 hora atrás, Élviro Cavalcanti disse:

Segue abaixo a rotina que usava e enviava para o site, pode ser que ajude

 

procedure TFrmSNGPC.BitBtn1Click(Sender: TObject);
var
i,x: Word;
NCorpo,NMedicamento,NData: IXMLNode;
XMLDoc: TXMLDocument;
var dti,dtf:string;
begin
dti := formatdatetime('mm/dd/yyyy',DateEdit1.DATE);
dtf := formatdatetime('mm/dd/yyyy',DateEdit2.DATE);

dm.IBUsuario.close;
dm.IBUsuario.SelectSQL.Clear;
dm.IBUsuario.SelectSQL.Add('SELECT * FROM USUARIO');
dm.IBUsuario.open;

x:=1;
// x:=10;
// Cria o documento

//Transformando a data
eddataemissao.Text := copy(DateEdit1.Text, 7, 4) + '-' + copy(DateEdit1.Text, 4, 2)  + '-' +  copy(DateEdit1.Text, 1, 2);
eddatasaida.Text := copy(DateEdit2.Text, 7, 4) + '-' + copy(DateEdit2.Text, 4, 2)  + '-' +  copy(DateEdit2.Text, 1, 2);

eddataemissaoSalvar.Text := copy(DateEdit1.Text, 7, 4) + '_' + copy(DateEdit1.Text, 4, 2)  + '_' +  copy(DateEdit1.Text, 1, 2);
eddatasaidaSalvar.Text := copy(DateEdit2.Text, 7, 4) + '_' + copy(DateEdit2.Text, 4, 2)  + '_' +  copy(DateEdit2.Text, 1, 2);


//Busca todas as entradas no período
dm.IBDetVenda.close;
dm.IBDetVenda.SelectSQL.Clear;
dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetVenda.open;

XMLDoc:=TXMLDocument.Create(Application);
with XMLDoc do
begin
Active:=True;
Version:='1.0';
Encoding:='ISO-8859-1';
AddChild('mensagemSNGPC','urn:sngpc-schema');
with DocumentElement do
begin
AddChild('cabecalho');
ChildNodes.Last.AddChild('cnpjEmissor').NodeValue:=dm.IBUsuarioCPFCNPJ.text;
ChildNodes.Last.AddChild('cpfTransmissor').NodeValue:=DM.IBUsuarioCPFRESPOSANVEL.Text; //Abrir no cadastro da empresa o CPF e nome do resposável
ChildNodes.Last.AddChild('dataInicio').NodeValue:= eddataemissao.text; // FormatDateTime('yyyy-mm-dd',Date);
ChildNodes.Last.AddChild('dataFim').NodeValue:= eddatasaida.Text; // FormatDateTime('yyyy-mm-dd',Date);
end;
NCorpo:=DocumentElement.AddChild('corpo');

// *************************** MEDICAMENTO *********************************
NMedicamento:=NCorpo.AddChild('medicamentos');
// Loop das [Entradas] :: MEDICAMENTO
//Busca todas as entradas no período
dm.IBDetEntrada.close;
dm.IBDetEntrada.SelectSQL.Clear;
dm.IBDetEntrada.SelectSQL.Add('SELECT * FROM DETENTRADA');
dm.IBDetEntrada.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('MEDICAMENTO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetEntrada.open;
if dm.IBDetEntrada.IsEmpty then
begin
ShowMessage('Nada de entrada!');
end
else
begin
//for i:=1 to x do
dm.ibdetentrada.First;
While not dm.IBDetEntrada.eof do
begin
NData:=NMedicamento.AddChild('entradaMedicamentos');
with NData do
begin
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['numeroNotaFiscal'].NodeValue:='1';
// [tipoOperacaoNotaFiscal]
// 1 Compra // 2 Transferência // 3 Venda
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:='1';
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2);//'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03) não pode ser maior que a data do final do periodo informado
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:= dm.IBDetEntradaCNPJFORNECEDOR.text; //'09616205000170'; //**** O CNPJ do fornecedor (09.616.205/0001-70) não existe na base de dados da ANVISA.
ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:= dm.IBUsuarioCPFCNPJ.text; //'02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['medicamentoEntrada'].ChildNodes['registroMSMedicamento'].NodeValue:= dm.IBDetEntradaREGISTROMSMANVISA.Text; //'1071402340048';
ChildNodes['medicamentoEntrada'].ChildNodes['numeroLoteMedicamento'].NodeValue:= dm.IBDetEntradaNLOTE.Text; //'A0540';
ChildNodes['medicamentoEntrada'].ChildNodes['quantidadeMedicamento'].NodeValue:= dm.IBDetEntradaQUANTIDADE.Text; //'10';

// A data de recebimento do medicamento (2010-03-03 00:00:00) da nota fiscal (1) não pode ser maior que a data do final do período informado (2010-02-1Cool
ChildNodes['dataRecebimentoMedicamento'].NodeValue:= copy(frmlogin.EdDataDia.Text, 7, 4) + '-' + copy(frmlogin.EdDataDia.Text, 4, 2)  + '-' +  copy(frmlogin.EdDataDia.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
end;
dm.IBDetEntrada.Next;
end;
end;


//Busca todas as entradas no período
dm.IBDetVenda.close;
dm.IBDetVenda.SelectSQL.Clear;
dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('MEDICAMENTO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetVenda.open;
if dm.IBDetVenda.IsEmpty then
begin
ShowMessage('Nada de venda!');
end
else
begin
// Loop das [Saidas] :: MEDICAMENTO
//for i:=1 to x do
dm.ibdetvenda.First;
while not dm.IBDetVenda.eof do
begin
NData:=NMedicamento.AddChild('saidaMedicamentoVendaAoConsumidor');
with NData do
begin
// [tipoReceituarioMedicamento]
// 1 Receita de Controle Especial em 2 vias (Receita Branca)
// 2 Notificação de Receita B (Notificação Azul)
// 3 Notificação de Receita Especial (Notificação Branca)
// 4 Notificação de Receita A (Notificação Amarela)

//Consulta a venda para pegar os dados do médico
dm.IBVenda.close;
dm.IBVenda.SelectSQL.Clear;
dm.IBVenda.SelectSQL.Add('SELECT * FROM VENDAS');
dm.IBVenda.SelectSQL.ADD('WHERE CODIGO = ' + QuotedStr(DM.IBDetVendaCODVENDA.Text) + '');
dm.IBVenda.open;

//Consulta cliente da venda para pegar os dados do cliente
dm.IBClientes.close;
dm.IBClientes.SelectSQL.Clear;
dm.IBClientes.SelectSQL.Add('SELECT * FROM CLIENTES');
dm.IBClientes.SelectSQL.ADD('WHERE CODIGO = ' + QuotedStr(DM.IBDetVendaCODCLI.Text) + '');
dm.IBClientes.open;

ChildNodes['tipoReceituarioMedicamento'].NodeValue:='1';
ChildNodes['numeroNotificacaoMedicamento'].NodeValue:= dm.IBDetVendaREGISTROMSMANVISA.text; //'213213';
ChildNodes['dataPrescricaoMedicamento'].NodeValue:= copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2);//'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data de prescricão (2010-03-03) não pode ser maior que a data do final do período informado
ChildNodes['prescritorMedicamento'].ChildNodes['nomePrescritor'].NodeValue:= dm.IBVendaMEDICO.Text; //'XFULANO';
ChildNodes['prescritorMedicamento'].ChildNodes['numeroRegistroProfissional'].NodeValue:= dm.IBVendaREGISTROMEDICO.Text; //'99999';
// [conselhoProfissional]
// CRM Conselho Regional de Medicina
// CRMV Conselho Regional de Medicina Veterinária
// CRO Conselho Regional de Odontologia
ChildNodes['prescritorMedicamento'].ChildNodes['conselhoProfissional'].NodeValue:= dm.IBVendaCONSELHOMEDICO.Text; //'CRM';
ChildNodes['prescritorMedicamento'].ChildNodes['UFConselho'].NodeValue:= dm.IBVendaUFCONSELHOMEDICO.Text;  //'SP';
// [usoMedicamento]
// 1 Humano
// 2 Veterinario
ChildNodes['usoMedicamento'].NodeValue:='1';
ChildNodes['compradorMedicamento'].ChildNodes['nomeComprador'].NodeValue:= DM.IBVendaCLIENTE.Text; //'XCICLANO';
// [tipoDocumento]
// 1 CARTEIRA DE REGISTRO PROFISSIONAL
// 2 CARTEIRA DE IDENTIDADE . . . existem mais
ChildNodes['compradorMedicamento'].ChildNodes['tipoDocumento'].NodeValue:='2';
ChildNodes['compradorMedicamento'].ChildNodes['numeroDocumento'].NodeValue:= DM.IBClientesRGINSC.Text; //'431053984';
ChildNodes['compradorMedicamento'].ChildNodes['orgaoExpedidor'].NodeValue:= dm.IBClientesEMISSOR.text; //'SSP';
ChildNodes['compradorMedicamento'].ChildNodes['UFEmissaoDocumento'].NodeValue:=  dm.IBClientesUFEMISSOR.Text; //'SP';
ChildNodes['medicamentoVenda'].ChildNodes['registroMSMedicamento'].NodeValue:= dm.IBDetVendaREGISTROMSMANVISA.Text; //'1071402340048';
ChildNodes['medicamentoVenda'].ChildNodes['numeroLoteMedicamento'].NodeValue:= dm.IBDetVendaNLOTE.Text; //'A0540'; // O lote (RGJ0400) do produto de número de registro (1.0100.0043.021-5 - LEXOTAN) não foi encontrado nem no inventário inicial nem nas transações de compras informadas
ChildNodes['medicamentoVenda'].ChildNodes['quantidadeMedicamento'].NodeValue:= dm.IBDetVendaQUANTIDADE.Text; //'1'; // A quantidade vendida (3) do produto de número de registro (1.0100.0043.021-5 - LEXOTAN) do lote (RGJ0400) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['dataVendaMedicamento'].NodeValue := copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da venda (2010-03-03 00:00:00) não pode ser maior que a data do final do periodo informado.
end;
dm.IBDetVenda.Next;
end;
end;


// Loop das [Transferencias] :: MEDICAMENTO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaMedicamentoTransferencia');
with NData do
begin
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '2';
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:= '09616205000170'; //**** não pode haver a transferência entre estas duas empresas.**** O CNPJ da empresa de origem (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:= '02326764000105'; // O CNPJ da empresa de origem (02.326.764/0001-05) não existe na base de dados da ANVISA.
ChildNodes['medicamentoTransferencia'].ChildNodes['registroMSMedicamento'].NodeValue:= '1029802250061'; // AMYTRIL
ChildNodes['medicamentoTransferencia'].ChildNodes['numeroLoteMedicamento'].NodeValue:= '09021207'; // O lote (153353) do produto de número de registro (1.0583.0259.002-9 - HIPOFAGIN S) não foi encontrado nem no inventário inicial nem nas transações de compras informadas.
ChildNodes['medicamentoTransferencia'].ChildNodes['quantidadeMedicamento'].NodeValue:= '1'; // A quantidade transferida (2) do medicamento de número de registro (1.0583.0259.002-9 - HIPOFAGIN S) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['dataTransferenciaMedicamento'].NodeValue:='';// '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
end;
end;

// [tipoOperacaoNotaFiscal]
// 1 Compra // 2 Transferência // 3 Venda


// Loop das [Perdas] :: MEDICAMENTO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaMedicamentoPerda');
with NData do
begin
// [motivoPerdaMedicamento]
// 1 Furto / Roubo
// 2 Avaria
// 3 Vencimento
// 4 Apreensão / Recolhimento pela Visa
ChildNodes['motivoPerdaMedicamento'].NodeValue:='3';
ChildNodes['medicamentoPerda'].ChildNodes['registroMSMedicamento'].NodeValue:='1071402340048';
ChildNodes['medicamentoPerda'].ChildNodes['numeroLoteMedicamento'].NodeValue:='A0540';
ChildNodes['medicamentoPerda'].ChildNodes['quantidadeMedicamento'].NodeValue:='1'; // A quantidade perdida (2) do produto de número de registro (1.0100.0075.006-1 - ROHYPNOL) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['dataPerdaMedicamento'].NodeValue := '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da perda (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
end;
end;

// *************************************************************************
// ********************************* INSUMO ********************************
NMedicamento:=NCorpo.AddChild('insumos');
// Loop das [Entradas] :: INSUMO
//Busca todas as entradas no período
dm.IBDetEntrada.close;
dm.IBDetEntrada.SelectSQL.Clear;
dm.IBDetEntrada.SelectSQL.Add('SELECT * FROM DETENTRADA');
dm.IBDetEntrada.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('INSUMO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetEntrada.open;
dm.IBDetEntrada.First;
While not dm.IBDetEntrada.eof do
begin
NData:=NMedicamento.AddChild('entradaInsumos');
with NData do
begin
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
// [tipoOperacaoNotaFiscal]
// 1 Compra
// 2 Transferência
// 3 Venda
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '1';
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['dataNotaFiscal'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:=  dm.IBUsuarioCPFCNPJ.text; //'09616205000170'; // O CNPJ do fornecedor (99.999.999/0001-99) não pode ser igual ao CNPJ de destino.
ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjDestino'].NodeValue:= dm.IBFornecedorCPFCNPJ.Text; //'02326764000105'; // O CNPJ DO fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['codigoInsumo'].NodeValue:= dm.IBDetEntradaCODPRODUTO.text; //'00075';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['numeroLoteInsumo'].NodeValue:=  dm.IBDetEntradaNLOTE.text; //'788cpf';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= dm.IBFornecedorCPFCNPJ.Text; //'02326764000105';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['quantidadeInsumoEntrada'].NodeValue:= dm.IBDetEntradaQUANTIDADE.text; //'40000.0';
ChildNodes['substanciaInsumoEntrada'].ChildNodes['tipoUnidadeEntrada'].NodeValue:= '1';
ChildNodes['dataRecebimentoInsumo'].NodeValue:= copy(dm.IBDetEntradaDATA.Text, 7, 4) + '-' + copy(dm.IBDetEntradaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetEntradaDATA.Text, 1, 2); //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data de recebimento do insumo (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado (2010-02-18 00:00:00)
end;
dm.IBDetEntrada.Next;
end;


// Loop das [Saidas] :: INSUMO
//Busca todas as entradas no período
dm.IBDetVenda.close;
dm.IBDetVenda.SelectSQL.Clear;
dm.IBDetVenda.SelectSQL.Add('SELECT * FROM DETVENDA');
dm.IBDetVenda.SelectSQL.ADD('WHERE DATA BETWEEN  ' + QuotedStr(dti) + ' and ' + QuotedStr(dtf) + ' AND TIPOMATERIALFARMACIA = ' + QuotedStr('INSUMO') + ' AND REGISTROMSMANVISA IS NOT NULL');
dm.IBDetVenda.open;
DM.IBDETVENDA.First;
While not dm.ibdetvenda.Eof do
begin
NData:=NMedicamento.AddChild('saidaInsumoVendaAoConsumidor');
with NData do
begin
// [tipoReceituarioInsumo]
// 1 Receita de Controle Especial em 2 vias (Receita Branca)
// 2 Notificação de Receita B (Notificação Azul)
// 3 Notificação de Receita Especial (Notificação Branca)
// 4 Notificação de Receita A (Notificação Amarela)
ChildNodes['tipoReceituarioInsumo'].NodeValue:= '2';
ChildNodes['numeroNotificacaoInsumo'].NodeValue:= dm.IBDetVendaCODPRODUTO.text; //'9897651';
ChildNodes['dataPrescricaoInsumo'].NodeValue:= copy(dm.IBDetVendaDATA.Text, 7, 4) + '-' + copy(dm.IBDetVendaDATA.Text, 4, 2)  + '-' +  copy(dm.IBDetVendaDATA.Text, 1, 2);  //'2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da prescricão (2010-03-03) não pode ser maior que a data do final do período informado.
ChildNodes['prescritorInsumo'].ChildNodes['nomePrescritor'].NodeValue:= dm.IBVendaMEDICO.text; //'Dr. Antenor';
ChildNodes['prescritorInsumo'].ChildNodes['numeroRegistroProfissional'].NodeValue:= dm.IBVendaREGISTROMEDICO.text; //'8888';
// [conselhoProfissional]
// CRM Conselho Regional de Medicina
// CRMV Conselho Regional de Medicina Veterinária
// CRO Conselho Regional de Odontologia
ChildNodes['prescritorInsumo'].ChildNodes['conselhoProfissional'].NodeValue:= dm.IBVendaCONSELHOMEDICO.text; //'CRM';
ChildNodes['prescritorInsumo'].ChildNodes['UFConselho'].NodeValue:= dm.IBVendaUFCONSELHOMEDICO.text; //'PR'; // A sigla da UF da notificação de receita azul não coincide com a sigla da UF do profissional prescritor.
ChildNodes['usoInsumo'].NodeValue:= '1';
ChildNodes['compradorInsumo'].ChildNodes['nomeComprador'].NodeValue:= dm.IBVendaCLIENTE.text; //'Manuela Danta';
// [tipoDocumento]
// 1 CARTEIRA DE REGISTRO PROFISSIONAL
// 2 CARTEIRA DE IDENTIDADE . . . existem mais
ChildNodes['compradorInsumo'].ChildNodes['tipoDocumento'].NodeValue:= '2';
ChildNodes['compradorInsumo'].ChildNodes['numeroDocumento'].NodeValue:= dm.IBClientesRGINSC.Text; //'89786453';
ChildNodes['compradorInsumo'].ChildNodes['orgaoExpedidor'].NodeValue:= dm.IBClientesEMISSOR.Text; //'SSP';
ChildNodes['compradorInsumo'].ChildNodes['UFEmissaoDocumento'].NodeValue:= dm.IBClientesUFEMISSOR.Text; //'PR';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].NodeValue:= '';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['codigoInsumo'].NodeValue:= dm.IBDetVendaCODPRODUTO.text; //'02904';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['numeroLoteInsumo'].NodeValue:= dm.IBDetVendaNLOTE.text; //'123dzp';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= dm.IBFornecedorCPFCNPJ.text; //'02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['quantidadeDeInsumoPorUnidadeFarmacotecnica'].NodeValue:= dm.IBDetVendaQUANTIDADE.text; //'5.0'; // A quantidade vendida (300) do insumo de número DCB (02904 - diazepam) do lote (123dzp) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
// [unidadeDeMedidaDoInsumo]
// 1 Miligrama
// 2 Mililitro
// 3 Unidade (U)
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['unidadeDeMedidaDoInsumo'].NodeValue:= '1';
// [unidadeFarmacotecnica]
// 1 Miligrama
// 2 Cápsula
// 3 Comprimido
// 4 Mililitro
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['unidadeFarmacotecnica'].NodeValue:= '2';
ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['quantidadeDeUnidadesFarmacotecnicas'].NodeValue:= '60.0';
ChildNodes['dataVendaInsumo'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da venda (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
end;
dm.ibdetvenda.Next;
end;


// Loop das [Transferencias] :: INSUMO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaInsumoTransferenci');
with NData do
begin
ChildNodes['notaFiscalTransferenciaInsum'].ChildNodes['numeroNotaFiscal'].NodeValue:= IntToStr(i);
// [tipoOperacaoNotaFiscal]
// 1 Compra
// 2 Transferência
// 3 Venda
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:= '2';
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['dataNotaFiscal'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da nota fiscal (2010-03-03 00:00:00) não pode ser maior que a data do final do período informado.
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:= '09616205000170'; // O CNPJ do estabelecimento de origem (99.999.999/0001-99) não existe na base DO Corporativo da ANVISA.
ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjDestino'].NodeValue:= '02326764000105'; // O CNPJ do estabelecimento de destino (99.999.999/0001-99) não existe na base de dados da ANVISA.
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['codigoInsumo'].NodeValue:= '02904';
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['numeroLoteInsumo'].NodeValue:= '15353';
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= '02326764000105';
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['quantidadeInsumoTransferencia'].NodeValue:= '20000.0'; // A quantidade transferida (20000) do insumo de número DCB (02904 - diazepam) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['substanciaInsumoTransferencia'].ChildNodes['tipoUnidadeTransferencia'].NodeValue:= '1';
ChildNodes['dataTransferenciaInsumo'].NodeValue := '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date);
end;
end;
// Loop das [Perdas] :: INSUMO
for i:=1 to x do
begin
NData:=NMedicamento.AddChild('saidaInsumoPerda');
with NData do
begin
// [motivoPerdaInsumo]
// 1 Furto / Roubo
// 2 Avaria
// 3 Vencimento
// 4 Apreensão / Recolhimento pela Visa
ChildNodes['motivoPerdaInsumo'].NodeValue:= '2';
ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['codigoInsumo'].NodeValue:= '02904';
ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['numeroLoteInsumo'].NodeValue:= '786dpz';
ChildNodes['substanciaInsumoPerda'].ChildNodes['insumoPerda'].ChildNodes['insumoCNPJFornecedor'].NodeValue:= '99999999000199'; // O CNPJ do fornecedor (99.999.999/0001-99) não foi encontrado na base de dados da ANVISA.
ChildNodes['substanciaInsumoPerda'].ChildNodes['quantidadeInsumoPerda'].NodeValue:= '12345.0'; // A quantidade perdida (12345) do insumo de número DCB (02904 - diazepam) é maior que a quantidade em estoque. Para obter informações sobre essa mensagem de erro visite o endereço http://www.anvisa.gov.br/hotsite/sngpc/mensagens_de_validacao.htm.
ChildNodes['substanciaInsumoPerda'].ChildNodes['tipoUnidadePerda'].NodeValue:= '1';
ChildNodes['dataPerdaInsumo'].NodeValue:= '2010-02-18'; // FormatDateTime('yyyy-mm-dd',Date); // A data da perda (2010-03-03) não pode ser maior que a data do final do período informado.
ChildNodes['cnpjFornecedorInsumo'].NodeValue:='02326764000105'; // O CNPJ do fornecedor (99.999.999/0001-99) não foi encontrado na base de dados da ANVISA.
end;
end;
// *************************************************************************

//SaveToFile(ExtractFileDir(Application.ExeName)+'\SNGPC\Sngpc_'+FormatDateTime('dd_mm_yyyy',Date)+'.xml');
SaveToFile(ExtractFileDir(Application.ExeName)+'\SNGPC\Sngpc_' + eddataemissaoSalvar.text + '_a_' + eddatasaidaSalvar.text + '.xml');
end;
XMLDoc.Active:=False;
XMLDoc.Free;

end;

por favor não cole, anexe arquivos pois o tópico fica confuso e na pesquisa de futuros quando necessário

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 10 meses depois ...
  • Consultores

MODERAÇÃO:

Esse tópico é muito antigo e não temos como saber de forma eficaz quem participou nele que ainda está envolvido atualmente com o assunto.

Assim, estamos fechando o tópico.

Os interessados nesse assunto, por favor, criem novos tópicos.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 311 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...