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