SNGPC

01/06/2011

1

Segue o incicio para criar um sistema para SNGPC, fica a aberto para quem quiser contribuir.


procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,x: Word;
NCorpo,NMedicamento,NData: IXMLNode;
XMLDoc: TXMLDocument;
begin
   x:=1;
   //x:=10;
   // Cria o documento
   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:='99999999000199';
         ChildNodes.Last.AddChild ('cpfTransmissor').NodeValue:='00000000000';
         ChildNodes.Last.AddChild('dataInicio').NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
         ChildNodes.Last.AddChild('dataFim').NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
      end;
      NCorpo:=DocumentElement.AddChild('corpo');
      // *************************** MEDICAMENTO *********************************
      NMedicamento:=NCorpo.AddChild('medicamentos');
      // Loop das [Entradas] :: MEDICAMENTO
      for i:=1 to x do
      begin
         NData:=NMedicamento.AddChild('entradaMedicamentos');
      with NData do
      begin
         ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['numeroNotaFiscal'].NodeValue:=IntToStr(i);
         // [tipoOperacaoNotaFiscal]
         // 1 Compra
         // 2 Transferência
         // 3 Venda
         ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:='1';
         ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
         ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:='99999999000199';
         ChildNodes['notaFiscalEntradaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:='99999999000199';
         ChildNodes['medicamentoEntrada'].ChildNodes['registroMSMedicamento'].NodeValue:='1010000750061';
         ChildNodes['medicamentoEntrada'].ChildNodes['numeroLoteMedicamento'].NodeValue:='RV365';
         ChildNodes['medicamentoEntrada'].ChildNodes['quantidadeMedicamento'].NodeValue:='12';
         ChildNodes['dataRecebimentoMedicamento'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
      end;
      end;
      // Loop das [Saidas] :: MEDICAMENTO
      for i:=1 to x 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)
            ChildNodes['tipoReceituarioMedicamento'].NodeValue:='1';
            ChildNodes['numeroNotificacaoMedicamento'].NodeValue:='213213';
            ChildNodes['dataPrescricaoMedicamento'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
            ChildNodes['prescritorMedicamento'].ChildNodes['nomePrescritor'].NodeValue:='XFULANO';
            ChildNodes['prescritorMedicamento'].ChildNodes['numeroRegistroProfissional'].NodeValue:='99999';
            // [conselhoProfissional]
            // CRM Conselho Regional de Medicina
            // CRMV Conselho Regional de Medicina Veterinária
            // CRO Conselho Regional de Odontologia
            ChildNodes['prescritorMedicamento'].ChildNodes['conselhoProfissional'].NodeValue:='CRM';
            ChildNodes['prescritorMedicamento'].ChildNodes['UFConselho'].NodeValue:='PR';
            // [usoMedicamento]
            // 1 Humano
            // 2 Veterinario
            ChildNodes['usoMedicamento'].NodeValue:='1';
            ChildNodes['compradorMedicamento'].ChildNodes['nomeComprador'].NodeValue:='XCICLANO';
            // [tipoDocumento]
            // 1 CARTEIRA DE REGISTRO PROFISSIONAL
            // 2 CARTEIRA DE IDENTIDADE . . . existem mais
            ChildNodes['compradorMedicamento'].ChildNodes['tipoDocumento'].NodeValue:='1';
            ChildNodes['compradorMedicamento'].ChildNodes['numeroDocumento'].NodeValue:='123';
            ChildNodes['compradorMedicamento'].ChildNodes['orgaoExpedidor'].NodeValue:='SSP';
            ChildNodes['compradorMedicamento'].ChildNodes['UFEmissaoDocumento'].NodeValue:='PR';
            ChildNodes['medicamentoVenda'].ChildNodes['registroMSMedicamento'].NodeValue:='1010000430215';
            ChildNodes['medicamentoVenda'].ChildNodes['numeroLoteMedicamento'].NodeValue:='RGJ0400';
            ChildNodes['medicamentoVenda'].ChildNodes['quantidadeMedicamento'].NodeValue:='3';
            ChildNodes['dataVendaMedicamento'].NodeValue := FormatDateTime('yyyy-mm-dd',Date);
         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);
            // [tipoOperacaoNotaFiscal]
            // 1 Compra
            // 2 Transferência
            // 3 Venda
            ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:='2';
            ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['dataNotaFiscal'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
            ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjOrigem'].NodeValue:='99999999000199';
            ChildNodes['notaFiscalTransferenciaMedicamento'].ChildNodes['cnpjDestino'].NodeValue:='99999999000199';
            ChildNodes['medicamentoTransferencia'].ChildNodes['registroMSMedicamento'].NodeValue:='1058302590029';
            ChildNodes['medicamentoTransferencia'].ChildNodes['numeroLoteMedicamento'].NodeValue:='153353';
            ChildNodes['medicamentoTransferencia'].ChildNodes['quantidadeMedicamento'].NodeValue:='2';
            ChildNodes['dataTransferenciaMedicamento'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
         end;
      end;
      // 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:='1010000750061';
            ChildNodes['medicamentoPerda'].ChildNodes['numeroLoteMedicamento'].NodeValue:='RV365';
            ChildNodes['medicamentoPerda'].ChildNodes['quantidadeMedicamento'].NodeValue:='2';
            ChildNodes['dataPerdaMedicamento'].NodeValue := FormatDateTime('yyyy-mm-dd',Date);
         end;
      end;
      // *************************************************************************
      // ********************************* INSUMO ********************************
      NMedicamento:=NCorpo.AddChild('insumos');
      // Loop das [Entradas] :: INSUMO
      for i:=1 to x 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:=FormatDateTime('yyyy-mm-dd',Date);
            ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:='99999999000199';
            ChildNodes['notaFiscalEntradaInsumo'].ChildNodes['cnpjDestino'].NodeValue:='99999999000199';
            ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['codigoInsumo'].NodeValue:='0075';
            ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['numeroLoteInsumo'].NodeValue:='788cpf';
            ChildNodes['substanciaInsumoEntrada'].ChildNodes['insumoEntrada'].ChildNodes['insumoCNPJFornecedor'].NodeValue:='99999999000199';
            ChildNodes['substanciaInsumoEntrada'].ChildNodes['quantidadeInsumoEntrada'].NodeValue:='40000.0';
            ChildNodes['substanciaInsumoEntrada'].ChildNodes['tipoUnidadeEntrada'].NodeValue:='1';
            ChildNodes['dataRecebimentoInsumo'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
         end;
      end;
      // Loop das [Saidas] :: INSUMO
      for i:=1 to x 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:='9897651';
            ChildNodes['dataPrescricaoInsumo'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
            ChildNodes['prescritorInsumo'].ChildNodes['nomePrescritor'].NodeValue:='Dr. Antenor';
            ChildNodes['prescritorInsumo'].ChildNodes['numeroRegistroProfissional'].NodeValue:='8888';
            // [conselhoProfissional]
            // CRM Conselho Regional de Medicina
            // CRMV Conselho Regional de Medicina Veterinária
            // CRO Conselho Regional de Odontologia
            ChildNodes['prescritorInsumo'].ChildNodes['conselhoProfissional'].NodeValue:='CRM';
            ChildNodes['prescritorInsumo'].ChildNodes['UFConselho'].NodeValue:='PR';
            ChildNodes['usoInsumo'].NodeValue:='1';
            ChildNodes['compradorInsumo'].ChildNodes['nomeComprador'].NodeValue:='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:='89786453';
            ChildNodes['compradorInsumo'].ChildNodes['orgaoExpedidor'].NodeValue:='SSP';
            ChildNodes['compradorInsumo'].ChildNodes['UFEmissaoDocumento'].NodeValue:='PR';
            ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].NodeValue:='';
            ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['codigoInsumo'].NodeValue:='02904';
            ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['numeroLoteInsumo'].NodeValue:='123dzp';
            ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['insumoVendaAoConsumidor'].ChildNodes['insumoCNPJFornecedor'].NodeValue:='99999999000199';
            ChildNodes['substanciaInsumoVendaAoConsumidor'].ChildNodes['quantidadeDeInsumoPorUnidadeFarmacotecnica'].NodeValue:='5.0';
            // [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:=FormatDateTime('yyyy-mm-dd',Date);
         end;
      end;
      // Loop das [Transferencias] :: INSUMO
      for i:=1 to x do
      begin
         NData:=NMedicamento.AddChild('saidaInsumoTransferencia');
         with NData do
         begin
            ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['numeroNotaFiscal'].NodeValue:=IntToStr(i);
            // [tipoOperacaoNotaFiscal]
            // 1 Compra
            // 2 Transferência
            // 3 Venda
            ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['tipoOperacaoNotaFiscal'].NodeValue:='2';
            ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['dataNotaFiscal'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
            ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjOrigem'].NodeValue:='99999999000199';
            ChildNodes['notaFiscalTransferenciaInsumo'].ChildNodes['cnpjDestino'].NodeValue:='99999999000199';
            ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['codigoInsumo'].NodeValue:='02904';
            ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['numeroLoteInsumo'].NodeValue:='15353';
            ChildNodes['substanciaInsumoTransferencia'].ChildNodes['insumoTransferencia'].ChildNodes['insumoCNPJFornecedor'].NodeValue:='99999999000199';
            ChildNodes['substanciaInsumoTransferencia'].ChildNodes['quantidadeInsumoTransferencia'].NodeValue:='20000.0';
            ChildNodes['substanciaInsumoTransferencia'].ChildNodes['tipoUnidadeTransferencia'].NodeValue:='1';
            ChildNodes['dataTransferenciaInsumo'].NodeValue :=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';
            ChildNodes['substanciaInsumoPerda'].ChildNodes['quantidadeInsumoPerda'].NodeValue:='12345.0';
            ChildNodes['substanciaInsumoPerda'].ChildNodes['tipoUnidadePerda'].NodeValue:='1';
            ChildNodes['dataPerdaInsumo'].NodeValue:=FormatDateTime('yyyy-mm-dd',Date);
            ChildNodes['cnpjFornecedorInsumo'].NodeValue:='99999999000199';
         end;
      end;
      // *************************************************************************
      SaveToFile(ExtractFileDir(Application.ExeName)+'\Sngpc_'+FormatDateTime('dd_mm_yyyy',Date)+'.xml');


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

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
   ws_TESTE:= HTTPRIO1 AS sngpcSoap; //GetsngpcSoap();
   HashIdentificacao:= MD5DigestToStr(MD5File('D:\SNGPC\TESTE.XML'));
   Edit3.Text := HashIdentificacao;
   XMLDocument1.LoadFromFile('D:\SNGPC\TESTE.XML');
   Memo1.Lines.Add(ws_TESTE.EnviaArquivoSNGPC('seu email','sua senha', XMLDocument1.XML.Text, HashIdentificacao));
   //HashIdentificacao := Guid();
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var strcomp: string;
begin
   ws_TESTE:= GetsngpcSoap();
   Memo1.Lines.Add:= (ws_TESTE.ValidarUsuario('seu email','sua senha'));
end;

Responder

Posts

Nossa, é o início mas vai me ajudar muito.

vlw.
Responder