Jump to content

Élviro Cavalcanti

Membros
  • Posts

    112
  • Joined

  • Last visited

Everything posted by Élviro Cavalcanti

  1. Você pode usar essa rotina e tentar verificar se existe algum erro no banco, espero que lhe ajude! RecuperarFirebird.bat
  2. Opa, peço desculpas, vou anexar a partir de agora! USNGPC.pas
  3. 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;
  4. Eu possuo uma rotina de SNGPC que faz assa comunicação, posso disponibilizar ela pra vocês
  5. Possivelmente você está deixando alguma transação aberta e por isso não consegue efetuar o update.
  6. Aqui em PE cupons acima de 1.000,00 era preciso colocar o CPF ou CNPJ do comprador, na Paraíba esse valor é de 500,00 se não me engano, mas agora PE mudou esse valor, só coloquei o post pois minha aplicação tem como parâmetro esse valor, assim já avisa ao usuário que precisa informar os dados do cliente acima de X valor, caso alguém não tenha pego essa informação, deixei aqui registrado
  7. Bom dia pessoal, aqui em PE a NFCe que antes era até 1.000,00 sem identificação, agora está passando com valor até 5.000,00, caso alguém tenha essa trava no sistema, pode alterar essa quantidade.
  8. Boa tarde, peço desculpas pela demora em concluir esse post, resolvido Juliomar, eu removi a unit completa do formulário de Fornecedores e importei de uma outra fazendo apenas os ajustes do componente, resolvido ! Fico grato mais uma vez !
  9. Quando clico em novo, aciono os comandos DM.UFornecedor.close; DM.UFornecedor.SQL.Clear; DM.UFornecedor.SQL.Add('SELECT codigo, dtcadastro, nomerazao, fantasia, tipo, cpfcnpj, rginsc, '); DM.UFornecedor.SQL.Add('endereco, numero, complemento, bairro, cidade, uf, cep, codmunicipio, email, '); DM.UFornecedor.SQL.Add('site, fone, fone2, contato, fonecontato, celularcontato, emailcontato, '); DM.UFornecedor.SQL.Add('ramoatividade, bloqueado, dtalteracao, usuario, dtcontato, motivocontato,'); DM.UFornecedor.SQL.Add('usuariocontato, tempocadastro, codusuario, obs FROM fornecedor'); DM.UFornecedor.SQL.ADD('WHERE codigo = -1'); DM.UFornecedor.open; DM.UFornecedor.Append; e direciono o foco para o DBEdit, mas ele não deixa nada ser digitado, e quando salvo na tabela ele salva com um registro vazio, como se estivesse funcionando normal o comando de novo e de salvar.
  10. Já sim, fiz a exclusão e criei outra, adicionei os comandos e mesmo assim continua dando o mesmo bloqueio, estou tentando saber o que é pois como é numa tabela específica fica mais complicado de achar onde está o problema.
  11. Boa tarde pessoal, estou tendo uma situação curiosa no delphi 2010 usando o componente Unidac e Mysql, apenas uma tabela do meu banco (fornecedor) eu vejo os dados usando o MySQL Workbench, mas quando tento incluir um novo registro nessa tabela o dbedit não permite digitar nada, mesmo o DBGrid não consigo exibir os dados. Alguém já passou por esse problema? Lembrando que é apenas nessa tabela, mas demais estão normais!
  12. Bom dia pessoal, tenho um banco de dados Firebird hospedado no servidor em Linux na web, pela máquina usando o windows eu tenho acesso e trabalho normal com ele, mas quando tento acessar o banco via app, aparece uma mensagem de erro : 'failed to locate host machine. Undefined services gds_db/ tcp', estou usando o componente UniConnection. Alguém já passou ou tem algo que possa ajudar?
  13. Bom dia, bem complicado isso, pois sempre batemos com os escritórios de contabilidade sobre isso, uma vez que toda escrituração contábil é feita dentro do escritório de contabilidade e não no nosso.
  14. Boa tarde, caso precise posso colocar meu código, mas usei gerando direto e não usando o ACBR, mas só nesse caso
  15. Infelizmente não tenho o D6 aqui na minha máquina, apenas o delphi 2010 e o 10.3 e não tenho essa pasta Rtl mencionada, mas vou tentar pesquisar algo mais pra tentar ajudar!
  16. Boa tarde, eu fiz a comunicação com o Ifood mercado que é bem parecido acredito eu com o ifood tradicional, mas no caso eles me passaram um link onde tem as informações de como fazer, vou deixar aqui abaixo e tentar ajudar https://developermercado.ifood.com.br/
  17. Boa tarde, esse GETMEM.INC é uma Unit do seu projeto? Tentei achar esse mesmo arquivo aqui no meu computador e não achei, você poderia explicar melhor?
  18. Eu trabalho com essa situação e achei mais tranquilo usar sempre as empresas no caso separadas, a cada venda e entrada é informado o local de onde está sendo feito o processo.
  19. Opa, bem melhor sim dessa forma, não tinha prestado atenção que estava on line e consumindo banda de internet!
  20. Você pode utilizar um campo blob e colocar o arquivo xml dentro dele, assim você tem o arquivo salvo na pasta o no seu banco.
  21. Bom dia, achei essa resposta no site contábil, não sei se seria útil. (grupo prod - ID I01), com: CFOP 5949 - Outra saída de mercadoria ou prestação de serviço não especificado; CST 40 – Isenta da tributação do ICMS (campo CST - ID N03); NCM 99; Segue abaixo, fonte da pesquisa https://www.contabeis.com.br/forum/tributos-estaduais-municipais/255233/ncm-para-gorjeta/
  22. Bom dia, quais seriam esses dados, você se refere a criar um campo para guardar o xml validado ou os dados de envio com as informações completas do cupom?
  23. Boa tarde, realmente o tempo diminuiu quase pela metade, vou continuar revisando os códigos e verificar se estou fazendo sql sem necessidade, agradeço a ajuda!
  24. Boa tarde Juliomar, fiz os testes com o mesmo banco, inserindo quatro registros numa venda, segue abaixo os resultados em tempo. Usando o servidor (Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz com 8BG) e o terminal que fez a inserção (Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz com 4GB). Usei o seguinte formato para gravar o tempo t := GetTickCount(); t := GetTickCount() - t; //ShowMessage(FormatFloat(',0 milisegundos', t)); Label23.Caption := 'Tempo de resposta : ' + FormatFloat(',0 milisegundos', t); Unidac IBX 969 234 984 216 953 234 938 203 Deixo aqui o registro desse primeiro teste, assim podemos enriquecer nossos conhecimentos num fórum sempre construtivo !
  25. Obrigado Juliomar, vou ajustar essa rotina e usar o Unidac para teste e logo postarei os resultados!
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.