Ir para conteúdo
  • Cadastre-se

dev botao

Campo CEP na unit ACBrDFeComum.RetConsCad deveria ser um String e não Integer


Ver Solução Respondido por joao vitor bogo,

Recommended Posts

Postado

Bom dia, na unit ACBrDFeComum.RetConsCad existe a propriedade 'CEP' como um Integer, mas na verdade deveria ser uma String (pois existem CEPs com zero à esquerda)


Exemplo do problema que está acontecendo:
ObterConteudoTag(AuxNode.Childrens.FindAnyNs('CEP'), tcInt) me retorna 7094000

O ideal seria ser uma String e fazer a chamada ObterConteudoTag(AuxNode.Childrens.FindAnyNs('CEP'), tcStr) para retornar '07094000'

Eu publiquei essa dúvida no Discord porém me foi dado a seguinte resposta:

image.png.8198d2d85f3e08446630dcc8ce9e56b2.png

 

Ao meu ver isso não faz sentido pois ao definir um campo que contém números com 7 a 8 dígitos, é importante considerar sua natureza e propósito. Se o valor pode começar com zero — como acontece frequentemente com códigos, identificadores ou CEPs — o campo deve ser armazenado como uma string, e não como um integer.

Quando armazenado como integer, o zero à esquerda é removido automaticamente, comprometendo a integridade dos dados. Por exemplo, o código 01234567 se tornaria 1234567, alterando significativamente sua representação.

Além disso, esse campo não se destina a operações matemáticas, mas sim à identificação ou classificação, o que reforça o uso de string. Assim, garantindo consistência e clareza no armazenamento desses valores.

Essa mesma lógica se aplica ao CPF ou CNPJ, que podem começar com o dígito zero e, por esse motivo, é corretamente armazenado como string (mesmo que na NT esteja como Númerico), preservando sua estrutura original.

image.png.46b31f12d17ce745a5a6561412989f14.png

Postado
Agora, Juliomar Marchetti disse:

No caso ele trata como numero já no manual então e seguido ele.

mas também pensando numerico se forma da direita pra esquerda portanto os demais espaços são zeros.

Eu ainda não vejo sentido esse argumento, pois no mesmo bloco do manual os campos CPF e CNPJ também são numéricos e variam de 3-14 e 3-11, porém ainda sim devido à natureza deles que permite começar com zero, eles são tratados como String em vez de Integer

  • Moderadores
Postado
15 minutos atrás, joao vitor bogo disse:

Eu ainda não vejo sentido esse argumento, pois no mesmo bloco do manual os campos CPF e CNPJ também são numéricos e variam de 3-14 e 3-11, porém ainda sim devido à natureza deles que permite começar com zero, eles são tratados como String em vez de Integer

No caso é seguido o manual. está como inteiro e está tratando como inteiro

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado
11 minutos atrás, Juliomar Marchetti disse:

No caso é seguido o manual. está como inteiro e está tratando como inteiro

Qual manual seria esse? pois na Nota Técnica onde descreve tanto o campo do CEP quanto o CPF/CNPJ, os 3 estão descritos da mesma maneira

  • Moderadores
Postado
20 minutos atrás, joao vitor bogo disse:

Qual manual seria esse? pois na Nota Técnica onde descreve tanto o campo do CEP quanto o CPF/CNPJ, os 3 estão descritos da mesma maneira

Realmente, lendo os fontes, no caso do CPF e CNPJ foi adicionado o tratamento pra adicionar os zeros a esquerda, tem um comentário explicitando isso.

E para o CEP está seguindo o manual/NT.

Se quiser faça a alteração aí, e anexe aqui os fontes alterados, que será analisado.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • 1 mês depois ...

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