Jump to content

dev botao

O número de campos informado no registro difere do número de campos especificado no leiaute do arquivo.


valterpatrick
Go to solution Solved by Juliomar Marchetti,
  • Este tópico foi criado há 2804 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Na validação do arquivo Sped Fiscal está apresentando erro de leiaute:

No registro E310 era pra ser gerado 14 campos e está sendo gerado 22. 

O erro está na unit "ACBrEFDBloco_E_Class" linha 1060. Não pode comparar a data atual para gerar os registros E310 novos e sim a data final do período informado.

* Código antigo: if (Date <= EncodeDate(2016, 12, 31)) then begin

* Código correto: if (DT_FIN <= EncodeDate(2016, 12, 31)) then begin

 

Por favor corrijam.

Valter Patrick

Gerente de Projetos na empresa CTEC

(33)98400-0936

GitHub: https://github.com/valterpatrick

Link to comment
Share on other sites

  • Consultores

Por favor, anexe o arquivo alterado.

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

15 horas atrás, Juliomar Marchetti disse:

Boa tarde

está no svn a correção

 

Pessoal, o campo DT_FIN é do tipo TDateTime, dessa forma ao gerar o arquivo ele vai cair no else e gerar o arquivo com 22 campos. Em vez de usar EncodeDate, deve ser usado EncodeDateTime. Pra gerar com 14 campos deve ser feita a seguinte alteração:

*Código incorreto: if (DT_FIN <= EncodeDate(2016, 12, 31)) then begin

 *Código correto: if (DT_FIN <= EncodeDateTime(2016, 12, 31, 23, 59, 59, 999)) then begin

Pelo menos foi dessa forma que consegui gerar corretamente aqui. Segue o arquivo com a correção.

ACBrEFDBloco_E_Class.pas

Link to comment
Share on other sites

  • Moderadores
Em 05/01/2017 at 14:25, Ubirajara disse:

Ok. Fico no aguardo. Obrigado.

Boa tarde

Tente aplicar a mudança sugerida em seu código, recompilar os componentes e gerar o sped pra ver se ele vai ficar ok!

pois não tenho nada gerando hoje o sped pra testar.

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
 

 

Link to comment
Share on other sites

16 horas atrás, Juliomar Marchetti disse:

Boa tarde

Tente aplicar a mudança sugerida em seu código, recompilar os componentes e gerar o sped pra ver se ele vai ficar ok!

pois não tenho nada gerando hoje o sped pra testar.

Juliomar, bom dia.

Fazendo a compilação com o arquivo que postei acima a geração fica OK. Ele entra no IF onde tem que gerar o registro com 14 campos e assim o faz. Da outra forma ele cai no else por causa da comparação da string gerada pela data e gera o registro com 22 campos. Eu vou gerar aqui assim e aguardo por updates no svn.

Link to comment
Share on other sites

  • Moderadores
  • Solution

Boa tarde

 o  erro está porque você está passando a data e a hora para o campo!

passe somente a data ou se passa um campo do banco onde tem as duas informações informe tipo

DT_FIN := DateOf(fieldata.value);

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
 

 

Link to comment
Share on other sites

1 hora atrás, Juliomar Marchetti disse:

Boa tarde

 o  erro está porque você está passando a data e a hora para o campo!

passe somente a data ou se passa um campo do banco onde tem as duas informações informe tipo

DT_FIN := DateOf(fieldata.value);

Fiz dessa forma no DT_FIN do bloco 0 e funcionou. Muito obrigado.

Link to comment
Share on other sites

  • 1 month later...
  • Moderadores
2 horas atrás, Guilherme Lourenço disse:

Bom dia!

Onde corrijo essas informações 

 

*Código incorreto: if (DT_FIN <= EncodeDate(2016, 12, 31)) then begin

 *Código correto: if (DT_FIN <= EncodeDateTime(2016, 12, 31, 23, 59, 59, 999)) then begin

No próprio arquivo?

Boa tarde

você está informando errado se tu está precisando passar até mesmo a hora minutos e segundos!

o campo é somente para Data! 

se tu passa .AsDateTime coloque um DateOf( ) 

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
 

 

Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...
The popup will be closed in 10 seconds...