Ir para conteúdo
  • Cadastre-se

dev botao

Refactoring nas units pcnAuxiliar e ACBrDFeUtil


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

Recommended Posts

  • Consultores

Boa tarde a todos,

Foi realizado um Refactoring nas units pcnAuxiliar e ACBrDFeUtil visando eliminar funções em duplicidade.

Segue a lista de funções removidas, movidas, renomeadas.

Função movida da unit pcnAuxiliar para a ACBrDFeUtil:

GerarCodigoNumerico.

Função renomeada da unit pcnAuxiliar:

de: ExtrairnNFChaveAcesso para ExtrairCodigoChaveAcesso 

essa mudança no nome se faz necessário uma vez que "nNF" induz que a função só serve para extrair o código numérico de uma chave de NF-e, sendo que na verdade serve para extrair o código numérico de uma chave de NF-e, CT-e, MDF-e e BP-e.

Funções removidas da unit pcnAuxiliar:

GerarChave, GerarChaveCTe, SomenteNumeros, RetornarCodigoNumerico, RetornarCodigoNumericoCTe, RetornarDigito e RetornarModelo.

Em seus lugares devemos utilizar:

GerarChaveAcesso (unit ACBrDFeUtil) em vez de GerarChave ou GerarChaveCTe

OnlyNumber (unit ACBrUtil) em vez de SomenteNumeros

ExtrairCodigoChaveAcesso (unit pcnAuxiliar) em vez de RetornarCodigoNumerico, RetornarCodigoNumericoCTe

ExtrairDigitoChaveAcesso (unit pcnAuxiliar) em vez de RetornarDigito

ExtrairModeloChaveAcesso (unit pcnAuxiliar) em vez de RetornarModelo

 

Desculpe algum transtorno, mas não podemos ter uma função implementada com nomes diferentes com a mesma finalidade.

  • Curtir 6
  • Obrigado 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia a todos,

Para aqueles que em suas aplicações atribuem o valor -1 ao campo cNF (no caso da NF-e/NFC-e) ou cCT (no caso do CT-e/CT-e OS) ou cMDF (no caso do MDF-e) ou cBP (no caso do BP-e), tomem cuidado, pois agora a nova função responsável por gerar a chave vai considerar o valor -1 como sendo zero e portanto o código numérico passa a ser gerado como sendo um numero aleatório e não como um código com base no numero do documento, como era antes.

Para resolver esse problema a sugestão é o seguinte:

em vez de:

ide.cNF :=  -1; 

mude para:

ide.cNF := GerarCodigoNumerico(ide.nNF);

isso vai fazer com que seja atribuído a cNF um código numérico gerado com base no numero do documento, vai ter o mesmo efeito na geração da chave como era antes ao passar o valor -1 para cNF.

De forma semelhante fazer o mesmo para o CT-e, MDF-e e BP-e.

Lembrando que a função GerarCodigoNumerico se encontra na unit ACBrDFeUtil, logo devemos declara-la no uses da unit que será utilizada.

  • Curtir 3
  • Obrigado 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Acabei de atualizar o componente, a função GerarChaveAcesso.... passou a dar erro de compilação

pcteCTeW.pas

na linha, 252 com o codigo abaixo:

  chave := GerarChaveAcesso(CTe.ide.cUF, CTe.ide.dhEmi, CTe.emit.CNPJ, CTe.ide.serie,
                            CTe.ide.nCT, StrToInt(TpEmisToStr(CTe.ide.tpEmis)),
                            CTe.ide.cCT, CTe.ide.modelo);
 

[dcc32 Error] pcteCTeW.pas(254): E2034 Too many actual parameters

Link para o comentário
Compartilhar em outros sites

42 minutos atrás, Leonardo Quinino disse:

Acabei de atualizar o componente, a função GerarChaveAcesso.... passou a dar erro de compilação

pcteCTeW.pas

na linha, 252 com o codigo abaixo:

  chave := GerarChaveAcesso(CTe.ide.cUF, CTe.ide.dhEmi, CTe.emit.CNPJ, CTe.ide.serie,
                            CTe.ide.nCT, StrToInt(TpEmisToStr(CTe.ide.tpEmis)),
                            CTe.ide.cCT, CTe.ide.modelo);
 

[dcc32 Error] pcteCTeW.pas(254): E2034 Too many actual parameters

Prezados, resolvido.
Solução foi apagar a instalação anterior, e reinstalando o pacote todo novamente.

Link para o comentário
Compartilhar em outros sites

14 horas atrás, Juliomar Marchetti disse:

tem a opção no instalador pra marcar pra limpar tudo.

outra coisa é ter somente um local com os fontes do acbr

Foi o que fiz.. removi os fontes. quis postar a minha solução para servir de case de ajuda para caso alguém passar novamente por essa situação.

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

  • 3 semanas depois ...

A unit abaixo ainda está com a declaração antiga:

ACBrHTMLtoXML

Acusando erro em:

NFe.Ide.cNF   := ExtrairCodigoChaveAcesso (NFe.infNFe.ID,NFe.infNFe.Versao);

Mudado para (Removendo o NFE.infNFe.Versao):

NFe.Ide.cNF   := ExtrairCodigoChaveAcesso (NFe.infNFe.ID);

 

/*-----------------------------------------------------------------*/

Acusando erro em:

 NFe.Ide.modelo := StrToInt(copy(SomenteNumeros(NFe.infNFe.ID), 21, 2));
 NFe.Ide.serie := StrToInt(copy(SomenteNumeros(NFe.infNFe.ID), 23, 3));

Mudado para:

 NFe.Ide.modelo := StrToInt(copy(OnlyNumber (NFe.infNFe.ID), 21, 2));
 NFe.Ide.serie := StrToInt(copy(OnlyNumber (NFe.infNFe.ID), 23, 3));

 

*Acabei de atualizar os fontes e mandei limpar toda instalação.

Editado por evertonbuenolima
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores

anexa a unit modificada!

10 horas atrás, evertonbuenolima disse:

A unit abaixo ainda está com a declaração antiga:

ACBrHTMLtoXML

Acusando erro em:

NFe.Ide.cNF   := ExtrairCodigoChaveAcesso (NFe.infNFe.ID,NFe.infNFe.Versao);

Mudado para (Removendo o NFE.infNFe.Versao):

NFe.Ide.cNF   := ExtrairCodigoChaveAcesso (NFe.infNFe.ID);

 

/*-----------------------------------------------------------------*/

Acusando erro em:

 NFe.Ide.modelo := StrToInt(copy(SomenteNumeros(NFe.infNFe.ID), 21, 2));
 NFe.Ide.serie := StrToInt(copy(SomenteNumeros(NFe.infNFe.ID), 23, 3));

Mudado para:

 NFe.Ide.modelo := StrToInt(copy(OnlyNumber (NFe.infNFe.ID), 21, 2));
 NFe.Ide.serie := StrToInt(copy(OnlyNumber (NFe.infNFe.ID), 23, 3));

 

*Acabei de atualizar os fontes e mandei limpar toda instalação.

 

  • Obrigado 1
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

  • 2 meses depois ...
  • Moderadores
2 horas atrás, valterpatrick disse:

Eu alterei a unitACBrHTMLtoXML.pas ACBrHTMLtoXML.pas conforme alterações acima.

não damos mais suporte a esse fonte.

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

  • Este tópico foi criado há 2164 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...