Ir para conteúdo
  • Cadastre-se

Élviro Cavalcanti

Membros
  • Total de ítens

    150
  • Registro em

  • Última visita

Tudo que Élviro Cavalcanti postou

  1. 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.
  2. Boa tarde, caso precise posso colocar meu código, mas usei gerando direto e não usando o ACBR, mas só nesse caso
  3. 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!
  4. 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/
  5. 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?
  6. 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.
  7. Opa, bem melhor sim dessa forma, não tinha prestado atenção que estava on line e consumindo banda de internet!
  8. 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.
  9. 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/
  10. 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?
  11. 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!
  12. 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 !
  13. Obrigado Juliomar, vou ajustar essa rotina e usar o Unidac para teste e logo postarei os resultados!
  14. Bom dia pessoal, estava revendo meu código de inclusão de item no detvenda, atualmente meu banco conta com mais de 1.000.000 de registros nessa tabela, estou usando o Firebird com o IBX. Estou vendo uma forma de melhorar e otimizar o tempo de inclusão desse registro, caso tenham alguma ideia agradeço a ajuda! Segue abaixo o código IBQueryDetVenda.Close; IBQueryDetVenda.sql.Clear; IBQueryDetVenda.SQL.Add('insert into DETVENDA'); IBQueryDetVenda.SQL.Add('(CODVENDA, DATA, HORA, CODPRODUTO, DESCRICAO, UN, NCM, CFOP,'); IBQueryDetVenda.SQL.Add('QUANTIDADE, VALORUNITARIO, SUBTOTAL, DESCONTO, VLRDESCONTO,'); IBQueryDetVenda.SQL.Add('VALORTOTAL, PESOLIQ, PESOBRUTO, ALIQUOTA, VALORICMS, USUARIO,'); IBQueryDetVenda.SQL.Add('DATAMODIFICACAO, CODLOTE, NLOTE, DTVENCIMENTOLOTE, DTFABBRICACAOLOTE, COMISSAONORMAL, VLRCOMISSAONORMAL,'); IBQueryDetVenda.SQL.Add('COMISSAODIFERENCIADA, VLRCOMISSAODIFERENCIADA, CODVENDEDOR, VENDEDOR,'); IBQueryDetVenda.SQL.Add('COMISSAO, REF, TAMANHO, CODCLI, CLIENTE, CODGRUPO, GRUPO, CODSUBGRUPO,'); IBQueryDetVenda.SQL.Add('SUBGRUPO, CODFORNECEDOR, FORNECEDOR, LUCRO, VLRCUSTOINCIAL, VLRCUSTO,'); IBQueryDetVenda.SQL.Add('VLRTOTALCUSTO, DIFERENCACUSTO, CODCOLABORADOR, CODBARRAS, BASECALCULOICMS,'); IBQueryDetVenda.SQL.Add('LABORATORIO, TOTALPESOLIQUIDO, TOTALPESOBRUTO, VOLUMES, QUANTVOLUMES,'); IBQueryDetVenda.SQL.Add('ALIQ_NAC, VLRALIQ_NAC, CODCOBRADOR, COBRADOR, CODMUNICIPIO, CEST, PROMOCAO, CSTNOTAFISCAL, PIS, COFINS, CODANP, CSOSN, VLRCUSTOMEDIO,'); IBQueryDetVenda.SQL.Add('CODORIGEMMERCADORIA, CST, CODCHAVETAMANHOSDETVENDA, FAMILIA, CODGRADE, DESCRICAOGRADECOR)'); IBQueryDetVenda.SQL.Add('values'); IBQueryDetVenda.SQL.Add('(:QCODVENDA, :QDATA, :QHORA, :QCODPRODUTO, :QDESCRICAO, :QUN, :QNCM, :QCFOP,'); IBQueryDetVenda.SQL.Add(':QQUANTIDADE, :QVALORUNITARIO, :QSUBTOTAL, :QDESCONTO, :QVLRDESCONTO,'); IBQueryDetVenda.SQL.Add(':QVALORTOTAL, :QPESOLIQ, :QPESOBRUTO, :QALIQUOTA, :QVALORICMS, :QUSUARIO,'); IBQueryDetVenda.SQL.Add(':QDATAMODIFICACAO, :QCODLOTE, :QNLOTE, :QDTVENCIMENTOLOTE, :QDTFABBRICACAOLOTE, :QCOMISSAONORMAL, :QVLRCOMISSAONORMAL,'); IBQueryDetVenda.SQL.Add(':QCOMISSAODIFERENCIADA, :QVLRCOMISSAODIFERENCIADA, :QCODVENDEDOR, :QVENDEDOR,'); IBQueryDetVenda.SQL.Add(':QCOMISSAO, :QREF, :QTAMANHO, :QCODCLI, :QCLIENTE, :QCODGRUPO, :QGRUPO, :QCODSUBGRUPO,'); IBQueryDetVenda.SQL.Add(':QSUBGRUPO, :QCODFORNECEDOR, :QFORNECEDOR, :QLUCRO, :QVLRCUSTOINCIAL, :QVLRCUSTO,'); IBQueryDetVenda.SQL.Add(':QVLRTOTALCUSTO, :QDIFERENCACUSTO, :QCODCOLABORADOR, :QCODBARRAS, :QBASECALCULOICMS,'); IBQueryDetVenda.SQL.Add(':QLABORATORIO, :QTOTALPESOLIQUIDO, :QTOTALPESOBRUTO, :QVOLUMES, :QQUANTVOLUMES,'); IBQueryDetVenda.SQL.Add(':QALIQ_NAC, :QVLRALIQ_NAC, :QCODCOBRADOR, :QCOBRADOR, :QCODMUNICIPIO, :QCEST, :QPROMOCAO, :QCSTNOTAFISCAL, :QPIS, :QCOFINS, :QCODANP, :QCSOSN, :QVLRCUSTOMEDIO,'); IBQueryDetVenda.SQL.Add(':QCODORIGEMMERCADORIA, :QCST, :QCODCHAVETAMANHOSDETVENDA, :QFAMILIA, :QCODGRADE, :QDESCRICAOGRADECOR)'); IBQueryDetVenda.ParamByName('QCODVENDA').AsInteger := DM.IBVendaCODIGO.AsInteger; IBQueryDetVenda.ParamByName('QDATA').AsDate := DM.IBVendaDATA.AsDateTime; IBQueryDetVenda.ParamByName('QHORA').AsString := TimeToStr(now); IBQueryDetVenda.ParamByName('QCODPRODUTO').AsInteger := DM.IBEstoqueCODIGO.Value; IBQueryDetVenda.ParamByName('QDESCRICAO').AsString := VDescricao; IBQueryDetVenda.ParamByName('QUN').AsString := DM.IBEstoqueUNIDADE.AsString; IBQueryDetVenda.ParamByName('QNCM').AsString := DM.IBEstoqueCODIGONCM.AsString; IBQueryDetVenda.ParamByName('QCODVENDEDOR').AsCurrency := DM.IBVendaCODVENDEDOR.AsInteger; IBQueryDetVenda.ParamByName('QVENDEDOR').AsString := DM.IBVendaVENDEDOR.AsString; IBQueryDetVenda.ParamByName('QCOMISSAO').AsCurrency := VComissaoVendedor; IBQueryDetVenda.ParamByName('QREF').AsString := DM.IBEstoqueREF.AsString; IBQueryDetVenda.ParamByName('QTAMANHO').AsString := DM.IBEstoqueTAMANHO.AsString; IBQueryDetVenda.ParamByName('QCODCLI').AsInteger := DM.IBVendaCODCLI.AsInteger; IBQueryDetVenda.ParamByName('QCLIENTE').AsString := DM.IBVendaCLIENTE.AsString; IBQueryDetVenda.ParamByName('QCODGRUPO').AsInteger := DM.IBEstoqueCODGRUPO.AsInteger; IBQueryDetVenda.ParamByName('QGRUPO').AsString := VGrupo; IBQueryDetVenda.ParamByName('QCODSUBGRUPO').AsInteger := DM.IBEstoqueCODSUBGRUPO.AsInteger; IBQueryDetVenda.ParamByName('QSUBGRUPO').AsString := DM.IBEstoqueSUBGRUPO.AsString; IBQueryDetVenda.ParamByName('QCODFORNECEDOR').AsInteger := DM.IBEstoqueCODFORNECEDOR.AsInteger; IBQueryDetVenda.ParamByName('QFORNECEDOR').AsString := DM.IBEstoqueFORNECEDOR.AsString; IBQueryDetVenda.ParamByName('QLUCRO').AsCurrency := CurrencyEdit3.Value - (CurrencyEdit4.Value * DM.IBEstoqueVLRCUSTOFINAL.AsCurrency); IBQueryDetVenda.ParamByName('QVLRCUSTOINCIAL').AsCurrency := DM.IBEstoqueVLRCUSTO.AsCurrency; IBQueryDetVenda.ParamByName('QVLRCUSTO').AsCurrency := DM.IBEstoqueVLRCUSTOFINAL.AsCurrency; IBQueryDetVenda.ParamByName('QVLRTOTALCUSTO').AsCurrency := DM.IBEstoqueVLRCUSTOFINAL.AsCurrency * CurrencyEdit4.Value; IBQueryDetVenda.ParamByName('QDIFERENCACUSTO').AsCurrency := (DM.IBEstoqueVLRCUSTOFINAL.AsCurrency * CurrencyEdit4.Value) - (DM.IBEstoqueVLRCUSTO.AsCurrency * CurrencyEdit4.Value); IBQueryDetVenda.ParamByName('QCODCOLABORADOR').AsInteger := DM.IBVendaCODPARCEIRO.AsInteger; IBQueryDetVenda.ParamByName('QCODBARRAS').AsString := DM.IBEstoqueCODBARRAS.AsString; IBQueryDetVenda.Prepare; IBQueryDetVenda.ExecSQL; //Insere os dados na tabela de venda //Somar os valores na tabela de venda try begin IBQuery1.DisableControls; IBQuery1.close; IBQuery1.SQL.Clear; IBQuery1.SQL.Add('SELECT sum(VLRTOTALCUSTO), Count(DESCRICAO), Sum(QUANTIDADE), Sum(VLRDESCONTO), Sum(TOTALPESOLIQUIDO), Sum(TOTALPESOBRUTO), Sum(VLRALIQ_NAC), Sum(VALORTOTAL), Sum(SUBTOTAL), Sum(VLRACRESCIMO) FROM DETVENDA'); IBQuery1.SQL.ADD('WHERE CODVENDA = ' + QuotedStr(edcodvenda.Text) + ''); IBQuery1.Prepare; IBQuery1.open; DM.IBVenda.Edit; DM.IBVendaSUBTOTALCUSTO.AsString := floattostr(IBQuery1.fields[0].asfloat); DM.IBVendaTOTALCUSTO.Text := floattostr(IBQuery1.fields[0].asfloat); DM.IBVendaITENS.AsString := floattostr(IBQuery1.fields[1].asfloat); DM.IBVendaVOLUMES.AsString := floattostr(IBQuery1.fields[2].asfloat); DM.IBVendaVLRDESCONTO.AsString := floattostr(IBQuery1.fields[3].asfloat); DM.IBVendaPESOLIQ.AsString := floattostr(IBQuery1.fields[4].asfloat); DM.IBVendaPESOBRUTO.AsString := floattostr(IBQuery1.fields[5].asfloat); DM.IBVendaVLRTOTALALIQ_NAC.AsString := floattostr(IBQuery1.fields[6].asfloat); DM.IBVendaVALORTOTAL.AsString := floattostr(IBQuery1.fields[7].asfloat); DM.IBVendaSUBTOTAL.AsString := floattostr(IBQuery1.fields[8].asfloat); DM.IBVendaVLRACRESCIMO.Text := floattostr(IBQuery1.fields[9].asfloat); DM.IBVendaSENHALIBERACAO.Clear; DM.IBVendaUSUARIOSENHALIBERACAO.Clear; DM.IBVendaVALORTOTAL.AsCurrency := (DM.IBVendaSUBTOTAL.AsCurrency - IBQuery1.fields[3].asfloat) + DM.IBVendaVLRACRESCIMO.AsCurrency; DM.ibvenda.Post; IBQuery1.EnableControls; DM.IBTransaction1.CommitRetaining; end; except begin ShowMessage('Não foi possível somar itens da venda!'); Close; end; end; //Somar os valores na tabela de venda
  15. Sempre esse código pra o PIX else if DM.IBRecebimentoVendaPDVCODFORMAPAGAMENTO.AsInteger = 17 then begin tPag := fpPagamentoInstantaneo; vPag := DM.IBRecebimentoVendaPDVVLRRECEBIDO.AsCurrency; end
  16. Segue a forma que faço pra pegar o XML original, essa rotina fica logo após a rotina de envio GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString); //Rotina para gerar o xml ACBrNFe1.Enviar (1,False,False,False); //Rotina para envio do arquivo para a sefaz //Rotina para copiar o xml original para a pasta de xml originais if not DirectoryExists(edtPathLogs.Text + '\XMLOriginal') then ForceDirectories(edtPathLogs.Text + '\XMLOriginal'); VsOrigem := edtPathLogs.Text + '\1-env-lot.xml'; if FileExists(edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml') then begin Application.MessageBox('Já existe um arquivo XML que foi gerado anteriormente na pasta \XMLOrigimal, verifique!', 'Controller', MB_OK + MB_ICONINFORMATION); end else begin if FileExists(edtPathLogs.Text + '\1-env-lot.xml') then Begin VsDestino := edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml'; CopyFile(Pchar(VsOrigem), PChar(VsDestino), False); if FileExists(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml') then RenameFile(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml', edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml'); End; end; //Rotina para copiar o xml original para a pasta de xml originais
  17. Bom dia, sempre consulto dessa forma FrmPrincipal.ACBrNFe1.NotasFiscais.Clear; FrmPrincipal.ACBrNFe1.Consultar(DM.IBVendaPDVCHAVENFCE.AsString, False); FrmPrincipal.ACBrNFe1.WebServices.Consulta.Executar; MemoResp.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetWS; memoRespWS.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetornoWS; ShowMessage(obterNroResultado(MemoResp.text, 'xMotivo','</xMotivo'));
  18. Você tentou carregar o retorno num campo memo pra saber o que está voltando como resposta? Dependendo, você pode localizar dentro do retorno esses dados
  19. Boa tarde, eu estava com um problema semelhante, conseguia gerar o XML com o campo de hora usando o now, mas quando usava a hora do meu sistema, sempre acusava que estava atrasado, continuei usando o now como parâmetro de hora para envio, só que pego o xml original (sem o protocolo de retorno)e coloco numa pasta renomeado com o número do cupom, dessa forma eu quando vou consultar e baixar o xml com o protocolo de autorização, eu apenas carrego no componente o xml que foi gerado originalmente, segue abaixo o que fiz, espero que ajude! Aqui eu gero o xml e envio para a sefaz GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString); ACBrNFe1.Enviar (1,False,False,False); //Rotina para copiar o xml original para a pasta de xml originais if not DirectoryExists(edtPathLogs.Text + '\XMLOriginal') then ForceDirectories(edtPathLogs.Text + '\XMLOriginal'); VsOrigem := edtPathLogs.Text + '\1-env-lot.xml'; if FileExists(edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml') then begin Application.MessageBox('Já existe um arquivo XML que foi gerado anteriormente na pasta \XMLOrigimal, verifique!', 'Controller', MB_OK + MB_ICONINFORMATION); end else begin if FileExists(edtPathLogs.Text + '\1-env-lot.xml') then Begin VsDestino := edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml'; CopyFile(Pchar(VsOrigem), PChar(VsDestino), False); if FileExists(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml') then RenameFile(edtPathLogs.Text + '\XMLOriginal\1-env-lot.xml', edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml'); End; end; //Rotina para copiar o xml original para a pasta de xml originais e aqui é onde faço a consulta caso não tenha o xml na pasta ou por algum acaso o cliente não tenha mais esse xml //Consulta se o xml está na pasta if FileExists(DM.IBVendaPDVCAMINHOXML.AsString) then Begin Label16.Caption := 'Localizado aquivo XML na pasta '; FrmSituacaoNFCe.Refresh; Sleep(1000); MemoResp.Lines.LoadFromFile(DM.IBVendaPDVCAMINHOXML.AsString); ScrollBox3.Visible := true; DM.IBVendaPDV.Edit; DM.IBVendaPDVPROTOCOLONFCE.AsString := obterNroResultado(MemoResp.text, '<nProt','</nProt'); DM.IBVendaPDVENVIADO.AsString := 'S'; DM.IBVendaPDV.Post; DM.IBTransaction1.CommitRetaining; End else begin Application.MessageBox('XML da NFCe não localizada na pasta, o sistema vai gerar um novo arquivo XML!', 'Controller', MB_OK + MB_ICONINFORMATION); Label16.Caption := 'Aguarde, o sistema vai gerar o aquivo XML ...'; FrmSituacaoNFCe.Refresh; Sleep(1000); FrmPrincipal.ACBrNFe1.NotasFiscais.Clear; EdCodVendaEnvio.Text := DM.IBVendaPDVCODIGO.AsString; FrmPrincipal.ACBrNFe1.Consultar(DM.IBVendaPDVCHAVENFCE.AsString, False); FrmPrincipal.ACBrNFe1.WebServices.Consulta.Executar; MemoResp.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetWS; memoRespWS.Lines.Text := FrmPrincipal.ACBrNFe1.WebServices.Consulta.RetornoWS; ShowMessage(obterNroResultado(MemoResp.text, 'xMotivo','</xMotivo')); Edit2.Text := obterNroResultado(MemoResp.text, 'xMotivo','</xMotivo'); if Edit2.Text = 'Autorizado o uso da NF-e' then begin Label16.Caption := 'Autorizado o uso da NF-e'; FrmSituacaoNFCe.Refresh; Sleep(500); //ShowMessage('Vai gerar a NFCe'); DM.IBVendaPDV.Edit; DM.IBVendaPDVPROTOCOLONFCE.AsString := obterNroResultado(MemoResp.text, '<nProt','</nProt'); DM.IBVendaPDVENVIADO.AsString := 'S'; DM.IBVendaPDV.Post; EdCodVendaEnvio.Text := DM.IBVendaPDVCODIGO.AsString; //GerarNFCe(DM.IBVendaPDVNUMEROCUPOM.AsString); FrmPrincipal.ACBrNFe1.NotasFiscais.LoadFromFile(FrmPrincipal.edtPathLogs.Text + '\XMLOriginal\' + DM.IBVendaPDVNUMEROCUPOM.AsString + '.xml'); FrmPrincipal.ACBrNFe1.Consultar(); end else begin Application.MessageBox('Não foi possível gerar o novo XML!', 'Controller', MB_OK + MB_ICONSTOP); end; Panel1.Visible := false; FrmSituacaoNFCe.Refresh; end;
  20. Quando tento enviar apenas com o caminho retrna o erro "Undefined service gds_db/tcp
  21. Boa tarde, estou tentando conectar o banco Firebird 2.5 com o componente UniConnection no APP usando Delphi, quando uso o MySQL ele funciona e conecta normal, mas usando o firebird ele retorna "connection rejected by remote interface" mesmo com a porta liberada, segue abaixo a forma que estou usando para conectar o banco (192.168.1.58/3050:C:Fire\DADOS.FDB), alguém já pegou esse problema? UniConnection1.Close(); UniConnection1.Database := EdBase.Text; UniConnection1.Port := 3050; UniConnection1.Username := 'sysdba'; UniConnection1.Password := 'masterkey'; UniConnection1.LoginPrompt := False; UniConnection1.ProviderName := 'InterBase'; UniConnection1.Connected := True;
  22. Pois é meu amigo, estava usando o do danfe da nfe, acabei de ajustar aqui, peço desculpas pela falta de atenção! Aqui resolvido agora, tudo correndo certo aqui, pode fechar a postagem!
  23. Bom dia, estou tentando imprimir a NFCe na bobina, mas sempre me retorna no papel A4 ACBrNFe1.NotasFiscais.Clear; ACBrNFe1.NotasFiscais.LoadFromFile('C:\Delphi 2010\NFCe ACBR\Arquivos NFCe\NFCe\202109\NFCe\26210905347988000183650010000054051000930194-nfce.xml',False); ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFCe; ACBrNFe1.Configuracoes.Geral.VersaoDF := ve400; ACBrNFe1.NotasFiscais.Imprimir; Esse é como chamo a impressão, mas sempre retorna no formato A4, alguém sabe como posso converter e imprimir de forma na bobina?
  24. Entendi, vou pesquisar na internet sobre como usar sequence e generators, fico grato pela ajuda mais uma vez !
×
×
  • 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...