Ir para conteúdo
  • Cadastre-se

dev botao

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


Ver Solução Respondido por Juliomar Marchetti,
  • Este tópico foi criado há 2821 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

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

  • Consultores
Postado

Por favor, anexe o arquivo alterado.

  • Curtir 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.
Postado
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

  • Moderadores
Postado
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
 

 

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

  • Moderadores
  • Solution
Postado

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
 

 

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

  • 1 mês depois ...
  • Moderadores
Postado
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
 

 

  • 2 semanas depois ...
Postado

Felipe Mello,

No botão que você passa a Data Inicial e Final pro componente:

  ACBrSpedFiscal1.DT_INI := _DataInicial;
  ACBrSpedFiscal1.DT_FIN := DateOf(_DataFinal);

DateOf só vai mandar a data sem o horário.

 

Espero ter ajudado.

 

 

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