Ir para conteúdo
  • Cadastre-se

dev botao

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

 

 

 

 

  • Moderadores
Postado

@Fábio Eduardo, qual danfe que está usando. Poderia post arquivo XML.

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

Projeto ACBr

Tecnólogo em processamento de dados

E-mail hleonardopa@yahoo.com.br - Skype : hleorj

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;

 

 

  • Moderadores
Postado

@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 hleonardopa@yahoo.com.br - Skype : hleorj

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 12: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;

 

 

Expandir  

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.pasFetching info...

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 hleonardopa@yahoo.com.br - Skype : hleorj

Postado (editado)
  Em 04/04/2016 at 13:36, 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.

 

Expandir  

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.pasFetching info...

acbrvalidadortest.pasFetching info...

Editado por rosemir
  • Moderadores
Postado

 

@rosemir, por favor abra um novo post.  Informando as suas solicitações e sugestões.

 

Muito obrigado.

 

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

Projeto ACBr

Tecnólogo em processamento de dados

E-mail hleonardopa@yahoo.com.br - Skype : hleorj

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