Ir para conteúdo
  • Cadastre-se

joedbat

Membros
  • Total de ítens

    36
  • Registro em

  • Última visita

Tudo que joedbat postou

  1. No método DefineTamanhoNossoNumeroRetorno, o valor correto de retorno deveria ser 10, quando o retorno do método LerNossoNumeroCompleto for False e está setado para 8. Com isto, o nosso numero é carregado apenas parcialmente, com 8 posições ao invés de 10, que seria o correto. Inclusive, não seria o caso de definir o valor de retorno deste método para o mesmo valor da propriedade fpTamanhoMaximoNossoNum ? Uma vez que no arquivo de retorno, independente de quantas posições sejam de fato utilizadas, o componente deve ler sempre 10 posições. As não utilizadas são completadas com zero à esquerda. Att, Joemerson
  2. Sim, eu ajustei a unit. Apenas alterei o parâmetro de 392 para 394. O arquivo foi gerado corretamente. ACBrBancoDaycoval.pas
  3. Sim, o banco está reclamando que o arquivo está incorreto. Segue um exemplo de arquivo rejeitado. Observe que na 3a linha, só há 398 caracteres, que é a causa do problema. ZYD19091.TXT Ajustando manualmente o arquivo (apenas acrescentando 2 espaços) na linha, o arquivo é validado normalmente.
  4. Nas linhas 412 e 413 da unit ACBrBancoDaycoval.pas, a instrução: Result := PadRight(Result, 392) + IntToStrZero(nRegistro, 6); // 395 a 400 - Sequência: Seguir a sequência normal de registros. Deveria ter como parâmetro 394 e não 392, pois a quantidade de caracteres é insuficiente para atingir os 400 caracteres que o layout exige, o que está fazendo com que o arquivo fique incorreto. A última alteração foi feita em 21/07/2023 e permanece desta forma no repositório.
  5. Continua apresentando o problema, mesmo utilizando o Demo. Alguém sabe se existe a possibilidade de mudar para o hCaptcha, como utilizado pelo site da receita. É dificil fazer o cliente entender que na receita funciona e no seu sistema, não...
  6. Entendo que o ideal, seria a implementação completa. Mas como o inter permite a geração do arquivo de remessa em formato CNAB (a documentação foi anexada acima), não seria interessante deixar disponível esta opção (ao invés de a cada atualização do repositório, ter que alterar manualmente os arquivos com as contribuições aqui enviadas)? Desta forma, poderíamos implementar já o envio de remessa nos aplicativos, reduzindo significativamente o trabalho dos clientes em ter que digitar manualmente os dados de cada boleto. O Inter hoje é uma das melhores opções para PJ para pequenas empresas, pois permite a geração de até 100 boletos sem custo.
  7. Ao tentar instalar o acbr, em um computador com o RAD Studio 11, surge a mensagem de erro abaixo, logo na inicialização do instalador: E na sequencia, na tela inicial de seleção de versão: Acredito que o instalador ainda não está preparado para reconhecer o RAD Studio 11. Alguma sugestão de como contornar este problema?
  8. Ao remover o tentar ACBrDFeReport, do package, não é mais possível utilizar o TACBrNFe, pois ele inclui o ACBrDFeDANFeReport na lista de units necessárias, que por sua vez, inclui o ACBrDFeReport...
  9. Infelizmente, mesmo removendo a parte de Report do ACBr, o problema persiste, pois aparentemente ao se utilizar o componente TACBrNFe, a unit ACBrDFeReport, é compilada, gerando o erro...
  10. Obrigado por sua resposta. Eu suspeitei que seria esta a solução. Entretanto, seria interessante se tivesse uma forma de remover apenas para o projeto, pois ao desabilitar, também perco esta funcionalidade para as demais aplicações, que utilizam os impressos. Mais uma vez, agradeço pelo retorno.
  11. Estou tentando compilar uma aplicação em modo console, mas utilizando o componente o componente TAcbrNFe, para executar o método DistribuicaoDFe. A ideia é uma aplicação linux, que execute como um Daemon, para realizar estas consultas. Mesmo definindo a diretiva NOGUI, ainda assim não consigo compilar, pois ocorre um erro na unit, ACBrDFeReport, que só tem as opções de usar Graphics ou FMX.Graphics. Existe alguma forma de contornar este problema, uma vez que não irei utilizar nenhum gerador de relatório, apenas a carga do certificado e a consulta aos DFes emitidos. Agradeço pela atenção dispensada.
  12. No último manual que enviei, nas páginas 19 e 20, tem a especificação.
  13. Necessita mais alguma informação acerca do boleto? Eu posso entrar em contato com o gerente do meu cliente, caso reste alguma dúvida...
  14. Boa tarde, No manual, com a versão anterior do arquivo CNAB400, nas duas últimas páginas (19 e 20), estão localizadas as especificações para a geração do boleto do banco Daycoval. Estou enviando também este manual em anexo. Eu liguei no suporte da cobrança do banco e me informaram que no manual mais recente (março/2019), "esqueceram" de colocar estas as duas últimas páginas, justamente as que tem a especificação do boleto. Manual S. 707 - Banco Daycoval-Com Instruções do Boleto .pdf
  15. Eu possuo o manual para geração do arquivo CNAB 400, do Daycoval, atualizado em Março/2019, que estou enviando em anexo. Manual S. 707 X 341 Mar-19.pdf
  16. Também tenho interesse na utilização do layout deste banco. Inclusive, o Banco Daycoval tem um registro de detalhe específico para o envio das informações da NFe relacionada ao boleto do detalhe. Gostaria de saber se há alguma forma gerar este registro customizado (registro tipo 4 do Daycoval), para que seja enviado no mesmo arquivo.
  17. Encontrei o problema. Fora do loop de itens, havia uma chamada a Det.Add (nos detalhes de pgto). Obrigado por sua disposição em ajudar.
  18. Apesar de seguir a mesma lógica do exemplo do ACBrNFe, o código é diferente, pois aplica algumas regras de negócio específicas. Mas basicamente pega os dados de um dataset, preenchendo o componente, chamando o Det.Add, para cada registro Segue abaixo o código utilizado, para a geração dos itens da NFe: dsCorpo.First; repeat with Det.Add do begin Prod.nItem := dsCorpo.FieldByName('nitem').AsInteger; Prod.cProd := dsCorpo.FieldByName('cprod').AsString; Prod.cEAN := dsCorpo.FieldByName('cean').AsString; Prod.cEANTrib := dsCorpo.FieldByName('cean').AsString; Prod.xProd := dsCorpo.FieldByName('xprod').AsString; Prod.NCM := dsCorpo.FieldByName('ncm').AsString; if dsCorpo.FindField('cest') <> Nil then Prod.CEST := dsCorpo.FieldByName('cest').AsString; Prod.CFOP := dsCorpo.FieldByName('cfop').AsString; // Se houver uma ocorrência de cfop de exportação, mudar a variavel if SubStr(Prod.CFOP, 1, 1) = '7' then bExportacao := True; Prod.uCom := dsCorpo.FieldByName('ucom').AsString; Prod.uTrib := dsCorpo.FieldByName('ucom').AsString; Prod.qCom := dsCorpo.FieldByName('qcom').AsFloat; Prod.qTrib := dsCorpo.FieldByName('qcom').AsFloat; Prod.vUnCom := dsCorpo.FieldByName('vuncom').AsFloat; Prod.vUnTrib := dsCorpo.FieldByName('vuncom').AsFloat; Prod.vProd := dsCorpo.FieldByName('vprod').AsFloat; if not bForcarDestaqueFrete then begin if ((SubStr(Prod.CFOP, 1, 1) = '5') or (SubStr(Prod.CFOP, 1, 1) = '6') or (SubStr(Prod.CFOP, 1, 1) = '1')) then begin bDestacarFrete := False; bDestacarSeguro := False; Prod.vFrete := 0; Prod.vSeg := 0; end else begin if bDestacaFreteNFExp then begin Prod.vFrete := dsCorpo.FieldByName('vfrete').AsFloat; Prod.vSeg := dsCorpo.FieldByName('vseg').AsFloat; end else begin bDestacarFrete := False; bDestacarSeguro := False; Prod.vFrete := 0; Prod.vSeg := 0; end; end; end else begin Prod.vFrete := dsCorpo.FieldByName('vfrete').AsFloat; Prod.vSeg := dsCorpo.FieldByName('vseg').AsFloat; end; Prod.vDesc := dsCorpo.FieldByName('vdesc').AsFloat; Prod.vOutro := dsCorpo.FieldByName('voutro').AsFloat; if (dsCorpo.FindField('ndi') <> Nil) then if (dsCorpo.FieldByName('ndi').AsString <> EmptyStr) then begin with Prod.DI.Add do begin nDi := dsCorpo.FieldByName('ndi').AsString; dDi := dsCorpo.FieldByName('ddi').AsDateTime; xLocDesemb := dsCorpo.FieldByName('xlocdesemb').AsString; UFDesemb := dsCorpo.FieldByName('ufdesemb').AsString; dDesemb := dsCorpo.FieldByName('ddesemb').AsDateTime; cExportador := dsNF.FieldByName('docdestinatario').AsString; // necessário, pois o campo dest_cnpjcpf fica em branco para clientes EX if (dsCorpo.FindField('nadicao') <> Nil) then begin with adi.Add do begin nAdicao := dsCorpo.FieldByName('nadicao').AsInteger; nSeqAdi := dsCorpo.FieldByName('nseqadic').AsInteger; cFabricante := dsCorpo.FieldByName('cfabricante').AsString; vDescDI := dsCorpo.FieldByName('vdescdi').AsFloat; nDraw := dsCorpo.FieldByName('ndraw').AsString; end; end; end; end; if (dsCorpo.FindField('xped') <> Nil) then if (dsCorpo.FieldByName('xped').AsString <> EmptyStr) then begin Prod.xPed := dsCorpo.FieldByName('xped').AsString; Prod.nItemPed := dsCorpo.FieldByName('nitemped').AsString; end; if Assigned(cdsDetExp) then begin if not cdsDetExp.IsEmpty then begin cdsDetExp.First; repeat if cdsDetExp.FieldByName('item').AsString = dsCorpo.FieldByName('cprod').AsString then with Prod.detExport.Add do begin nDraw := cdsDetExp.FieldByName('ndraw').AsString; nRE := cdsDetExp.FieldByName('nre').AsString; chNFe := cdsDetExp.FieldByName('chnfe').AsString; qExport := cdsDetExp.FieldByName('qexport').AsFloat; end; cdsDetExp.Next; until(cdsDetExp.Eof); end; end; with Imposto do begin ICMS.CST := StrToCSTICMS(bConv, dsCorpo.FieldByName('icms_cst').AsString); ICMS.orig := StrToOrig(bConv, dsCorpo.FieldByName('icms_orig').AsString); ICMS.modBC := StrTomodBC(bConv, dsCorpo.FieldByName('icms_modbc').AsString); if dsCorpo.FieldByName('icms_vicms').AsFloat > 0 then begin ICMS.vBC := dsCorpo.FieldByName('icms_vbc').AsFloat; ICMS.pRedBC := dsCorpo.FieldByName('icms_predbc').AsFloat; ICMS.pICMS := dsCorpo.FieldByName('icms_picms').AsFloat; ICMS.vICMS := dsCorpo.FieldByName('icms_vicms').AsFloat; if (dsCorpo.FindField('icms_pdif') <> Nil) then begin if dsCorpo.FindField('icms_pdif').AsFloat > 0 then begin ICMS.vICMSOp := dsCorpo.FieldByName('icms_vicms').AsFloat; ICMS.pDif := dsCorpo.FieldByName('icms_pdif').AsFloat; ICMS.vICMSDif := dsCorpo.FieldByName('icms_vicmsdif').AsFloat; ICMS.vICMS := ICMS.vICMSOp - ICMS.vICMSDif; end; end; if (ide.idDest = doInterestadual) and (Dest.indIEDest = inNaoContribuinte) and (ide.indFinal = cfConsumidorFinal) then begin if (dsCorpo.FindField('icmsufdest_picmsinter') <> Nil) then begin ICMSUFDest.vBCUFDest := dsCorpo.FieldByName('icms_vbc').AsFloat; ICMSUFDest.pFCPUFDest := dsCorpo.FieldByName('icmsufdest_pfcpufdest').AsFloat; ICMSUFDest.pICMSUFDest := dsCorpo.FieldByName('icmsufdest_picmsufdest').AsFloat; ICMSUFDest.pICMSInter := dsCorpo.FieldByName('icmsufdest_picmsinter').AsFloat; ICMSUFDest.pICMSInterPart := dsCorpo.FieldByName('icmsufdest_picmsinterpart').AsFloat; ICMSUFDest.vFCPUFDest := Usar2Dec((ICMSUFDest.vBCUFDest * ICMSUFDest.pFCPUFDest) / 100); vtmpICMSUFDest := Usar2Dec((ICMSUFDest.vBCUFDest * (ICMSUFDest.pICMSUFDest - ICMSUFDest.pICMSInter)) / 100); ICMSUFDest.vICMSUFDest := Usar2Dec((vtmpICMSUFDest * ICMSUFDest.pICMSInterPart) / 100); ICMSUFDest.vICMSUFRemet := Usar2Dec((vtmpICMSUFDest * (100 - ICMSUFDest.pICMSInterPart)) / 100); vTotFCPUFDest := vTotFCPUFDest + ICMSUFDest.vFCPUFDest; vTotICMSUFDest := vTotICMSUFDest + ICMSUFDest.vICMSUFDest; vTotICMSUFRemet := vTotICMSUFRemet + ICMSUFDest.vICMSUFRemet; end; end; end; IPI.CST := StrToCSTIPI(bConv, dsCorpo.FieldByName('ipi_cst').AsString); if dsCorpo.FieldByName('ipi_pipi').AsFloat > 0 then begin IPI.vBC := dsCorpo.FieldByName('ipi_vbc').AsFloat; IPI.pIPI := dsCorpo.FieldByName('ipi_pipi').AsFloat; IPI.vIPI := dsCorpo.FieldByName('ipi_vipi').AsFloat; end; if (dsCorpo.FindField('icmsst_modbcst') <> Nil) then if (dsCorpo.FieldByName('icmsst_vbcst').AsFloat > 0) then begin ICMS.modBCST := StrTomodBCST(bConv, dsCorpo.FieldByName('icmsst_modbcst').AsString); ICMS.vBCST := dsCorpo.FieldByName('icmsst_vbcst').AsFloat; ICMS.pICMSST := dsCorpo.FieldByName('icmsst_picmsst').AsFloat; ICMS.vICMSST := dsCorpo.FieldByName('icmsst_valicmsst').AsFloat; end; // Para o CFOP de importação, deve ser informado o II, // independente da alíquota if SubStr(Prod.CFOP, 1, 1) = '3' then begin II.vBC := dsCorpo.FieldByName('ii_vbc').AsFloat; II.vDespAdu := dsCorpo.FieldByName('vdespadu').AsFloat; II.vIOF := 0; II.vII := dsCorpo.FieldByName('ii_vii').AsFloat; end; PIS.CST := StrToCSTPIS(bConv, dsCorpo.FieldByName('pis_cst') .AsString); PIS.vBC := dsCorpo.FieldByName('pis_vbc').AsFloat; PIS.pPIS := dsCorpo.FieldByName('pis_ppis').AsFloat; PIS.vPIS := dsCorpo.FieldByName('pis_vpis').AsFloat; COFINS.CST := StrToCSTCOFINS(bConv, dsCorpo.FieldByName('cofins_cst') .AsString); COFINS.vBC := dsCorpo.FieldByName('cofins_vbc').AsFloat; COFINS.pCOFINS := dsCorpo.FieldByName('cofins_pcofins').AsFloat; COFINS.vCOFINS := dsCorpo.FieldByName('cofins_vcofins').AsFloat; end; end; dsCorpo.Next; until (dsCorpo.Eof);
  19. Eu depurei o código. É realizada apenas 1 chamada para Det.Add por item. O mais estranho é que o código funciona normalmente, há muito tempo, para a versão 3.10. O problema se manifesta simplesmente alterando a propriedade VersaoDF do componente para ve400
  20. Ao gerar a NFe na versão 4.0, independente da quantidade de itens da nota (1..N), está sendo gerado um item com o número zero e os demais dados em branco (código, descrição, valor, etc...). Utilizando a versão 3.10, o problema não ocorre. Em anexo o XML gerado. 51180610884478000185550010000014771000011938-nfe.xml
  21. Bom dia, Infelizmente, o problema permanece. Atualize, inclusive os arquivos de exemplo e continua o mesmo problema Estou utilizando o arquivo DACTe.fr3
  22. Boa tarde, É realmente estranho. Eu já havia conferido o código e os dois batiam. Até tentei salvar novamente arquivo .fr3, achando que poderia estar corrompido. Apenas para testar, eu fiz o seguinte. Ao invés de carregar o stream do Banco, eu simplesmente carreguei o BMP direto do arquivo. Não funcionou, continua dando o mesmo erro. Se eu indico direto mesmo arquivo, funciona. Seguem abaixo os dois trechos de código: Não funciona: stLogo := TStringStream.Create; stLogo.LoadFromFile('C:\CTe\Logo.Bmp'); CTe.DACTe.Logo := stLogo.DataString; stLogo.Free; Funciona: CTe.DACTe.Logo := 'C:\CTe\Logo.bmp';
  23. Bom dia, Sim, eu atualizei os arquivos .FR3. A versão que estou utilizando do FastReport é a 5.3.5 Ainda assim o erro persiste. O código é o mesmo que utilizo pra a geração da NF-e, que funciona a contento. Se tento passar apenas um arquivo como parâmetro, também funciona. Só está ocorrendo erro ao tentar carregar o logotipo de um Stream. Na versão anterior do ACBr, funcionava. Inclusive, eu é que submeti os arquivos com a sugestão de mudança para utilizar o logotipo a partir de um stream, conforme descrito no tópico: Esta necessidade surgiu, porque o sistema é multi-empresa, com várias empresas acessando simultaneamente. Portanto, a carga do logotipo via stream, é a alternativa mais adequada para imprimir diferentes logotipos. Agradeço pela atenção dispensada.
  24. Bom Dia, Juliomar Na verdade, este é o trecho de código que utilizo para carregar o logotipo do banco de dados. Ele está correto, pois funcionava perfeitamente no trunk1 do acbr. E o mesmo trecho é utilizado para carregar o logotipo na geração do DANF-e, no Trunk2. Apenas no DACT-e, do trunk2, é que o erro ocorre. Att
  25. O carregamento do logotipo do DACT-e (FastReport 5.x) funcionava de maneira correta, ao carregar de um stream, utilizando o código abaixo: imgFR := TLogotipoFR.Create(DadosFilho.qryJoker); stLogo := TStringStream.Create; imgFR.SetEmpresa(FPrincipal.iIDEmpresa); imgFR.Load(stLogo); imgFR.Free; CTe.DACTe.Logo := stLogo.DataString; stLogo.Free; Após a migração para o Trunk2, ao exibir um DACT-e, ocorre um acess violation. Isolando o trecho de código acima (deixando o logo em branco), o DACT-e é exibido corretamente. Att.
×
×
  • 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.