Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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?

 

 

Postado

Bom dia, Alexandre

Estou com o mesmo problema somente quando o CEP inicia com 0 é que isso ocorre, por isso é que poucos perceberam. 

Não consegui resolver este caso ainda, no leaiute antigo em RV isso não acontecia. 

Alguém já passou por isso e conseguiu uma solução ????

 

Fábio .

 

 

 

 

Postado

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;

 

 

Postado

Boa tarde Hleorj, 

Desculpe , mas se compreendi direito, vc fez as alterações do campo CEP no fortes reports , é só eu fazer um update no SVN que já estara certo? 

Posso desprezar a minha alteração?

Obrigado.

 

 

 

  • 3 meses depois ...
Postado (editado)
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
  • Moderadores
Postado

@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

Postado (editado)
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
  • Este tópico foi criado há 3159 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.