Ir para conteúdo
  • Cadastre-se

dev botao

Cep sendo Impresso errado nas Danfe Fortes Paisagem e Retrato


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

Recommended Posts

Boa tarde.Pessoal!

 

Hoje verifiquei que o CEP tanto do Emitente e Destinatário está sem impresso errada nas DANFE paisagem e retrato.

Ex.: Cep do Emitente = 04525-251 e do cliente : 05124-010

e na impressão dos danfe sai : emitente 45252-510 e do Cliente : 51240-100

lembrando que  .Dest.EnderDest.CEP e do emitente recebem valor integer.

Alguem está ou percebeu esta problema?

 

 

Link para o comentário
Compartilhar em outros sites

Hleorj, bom dia 

Estou utilizando o Forts Reports e encontrei o problema.

O mais interessante é que no XML as informações estão corretas o formato do CEP está preenchido com zeros a esquerda, é só no leiaute, no meu caso em forts que isso acontece.

O problema esta no..\trunk2\Fontes\ACBRdiversos\ACBrValidador.pas , no metodo  FormatarCEP

function FormatarCEP(const AValue: String): String;
Var S : String ;
begin

//Antes o zero era colocado a direita :

 S := PadRigth( OnlyNumber(AValue), 8, '0') ; { Prenche zeros a direita }

//correto o zero é a esquerda.

  S := PadLeft( OnlyNumber(AValue), 8, '0') ; { Prenche zeros a esquerda }
 

Result := copy(S,1,5) + '-' + copy(S,6,3) ;
end;

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

@alexandrebarbosa e  @Fábio Eduardo, irei verificar a possibilidade desta modificação. Apliquei ajustes somente nas danfes em Fortes Report. 

Favor atualizar o acbr.

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
Em 10/12/2015 at 10:31, Fábio Eduardo disse:

Hleorj, bom dia 

Estou utilizando o Forts Reports e encontrei o problema.

O mais interessante é que no XML as informações estão corretas o formato do CEP está preenchido com zeros a esquerda, é só no leiaute, no meu caso em forts que isso acontece.

O problema esta no..\trunk2\Fontes\ACBRdiversos\ACBrValidador.pas , no metodo  FormatarCEP

function FormatarCEP(const AValue: String): String;
Var S : String ;
begin

//Antes o zero era colocado a direita :

 S := PadRigth( OnlyNumber(AValue), 8, '0') ; { Prenche zeros a direita }

//correto o zero é a esquerda.

  S := PadLeft( OnlyNumber(AValue), 8, '0') ; { Prenche zeros a esquerda }
 

Result := copy(S,1,5) + '-' + copy(S,6,3) ;
end;

 

 

Olá Fábio, desculpa desenterrar esse tópico lá de Dezembro, mas foi eu quem solicitou esta alteração (post), para jogar zeros a direita e não a esquerda pelo seguinte motivo: antigamente o ACBr já fazia desta forma, como a maioria dos CEPs de cidades pequenas, onde há apenas 1 CEP para toda a cidade, completam com "000" após o hífen (89140-000), facilita para o usuário digitar apenas "89140" e a função formata para "89140-000", entendeu. Porém, não estava a par desta situação na impressão do DANF-e. Gostaria de sugerir então a seguinte melhoria aos moderadores, para tentar agradar a todos e sem ter impacto negativo para todos do fórum...

Na unit ACBrValidador, existem dois métodos com o mesmo nome "FormatarCEP", porém, um recebe o parâmetro string e o outro integer. Quando é feita a impressão do DANF-e, é solicitado o método que recebe o parâmetro integer, que por sua vez, chama o outro método que recebe o parâmetro string.
 

function FormatarCEP(const AValue: String): String;
Var S : String ;
begin
  S := PadLeft( OnlyNumber(AValue), 8, '0') ; { Prenche zeros a esquerda }
  Result := copy(S,1,5) + '-' + copy(S,6,3) ;
end;

function FormatarCEP(const AValue: Integer): String;
begin
  Result := FormatarCEP(IntToStr(AValue));
end;

Minha sugestão então, seria formatar zeros a esquerda quando passado o parâmetro integer (dessa forma não afetaria a impressão do DANF-e) e a direita quando passado o parâmetro string (dessa forma não afetaria os meu clientes, pois passo como parâmetro uma string). Ficaria da seguinte forma:

function FormatarCEP(const AValue: String): String;
Var S : String ;
begin
  S := PadRight( OnlyNumber(AValue), 8, '0') ; { Prenche zeros a direita }
  Result := copy(S,1,5) + '-' + copy(S,6,3) ;
end;

function FormatarCEP(const AValue: Integer): String;
Var S : String ;
begin
  S := PadLeft( OnlyNumber(IntToStr(AValue)), 8, '0') ; { Prenche zeros a esquerda }
  Result := copy(S,1,5) + '-' + copy(S,6,3) ;
end;

Em anexo a unit...

 

 

ACBrValidador.pas

Editado por rosemir
Link para o comentário
Compartilhar em outros sites

  • Moderadores

@rosemir, grato pela sugestão, mas...

O time Acbr está desenvolvendo testes unitários. E foi desenvolvido o teste para a  função formatacep Recentemente o formatacep teve refatoração baseada nos testes.

Utilize o teste para aprovar a sua solicitação ou informar que o teste está com falhas.

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Link para o comentário
Compartilhar em outros sites

44 minutos atrás, hleorj disse:

@rosemir, grato pela sugestão, mas...

O time Acbr está desenvolvendo testes unitários. E foi desenvolvido o teste para a  função formatacep Recentemente o formatacep teve refatoração baseada nos testes.

Utilize o teste para aprovar a sua solicitação ou informar que o teste está com falhas.

 

Olá Leonardo, segue em anexo a unit "ACBrValidadorTest.pas" com um novo teste que implementei e a unit "ACBrValidador.pas" com a alteração no método "FormatarCEP" de forma que passe nos testes já implementados anteriormente e que o método faço o que preciso. Aguardo uma avaliação sobre as alterações e desde já agradeço.

Sugestão sobre os testes: Acho ótimo a utilização de TDD para evitar alterações equivocadas nos fontes. Acredito que para facilitar uma futura manutenção nos testes, saber por qual motivo tal teste foi implementado, os fontes poderiam estar documentados, ou algum documento para consulta. Quem implementa o teste, poderia justificá-lo.

ACBrValidador.pas

acbrvalidadortest.pas

Editado por rosemir
Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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...