Ir para conteúdo
  • Cadastre-se

dev botao

Dúvida Geração Do Registro R05 - Tpaf_R.writeregistror05


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

Recommended Posts

Olá,

   Atualizei recentemente o ACBR e ao comparar os arquivo gerados antes e depois da atualização verifiquei uma pequena diferença no valor gerado para o campo "NUM_CONT" na linha R05.

   Antes gerava "042165" depois da atualização passou a gerar "421650", completando o valor com o zero a direita e não a esquerda.

 

  Avaliando o código verifiquei a seguinte alteração no código:

  Antes era:

  "LFill(RegR04.NUM_CONT, 6) +"

  e agora é :

  "LFill( IfThen(NUM_CONT=-1, RegR04.NUM_CONT, NUM_CONT), 6) +"

 

  Ao debugar vi que o método LFILL que é invocado depois da alteração é o com a assinatura :

    "LFill(Value: Currency;  Size: Integer; Decimal: Integer = 2; Nulo: Boolean = false;  Caracter: Char = '0'; Mascara: String = ''): String; overload;";

   e não com a assinatura

    "LFill(Value: Integer; Size: Integer; Nulo: Boolean = false; Caracter: Char = '0'): String; overload;"

  

  Para contornar eu fiz a seguinte alteração de:

     "LFill( IfThen(NUM_CONT=-1, RegR04.NUM_CONT, NUM_CONT), 6) +"

  para:

     "LFill( IfThen(NUM_CONT=-1, IntToStr(RegR04.NUM_CONT), IntToStr(NUM_CONT)), 6) +"

 

  

  Mas eu acredito que não seja a melhor forma, outra coisa que vi é que o método "ifthen" que é chamado e o "function IfThen(AValue: Boolean; const ATrue: Char; AFalse: Char): Char; overload;" que esta na classe "ACBrSpedUtils" e não na classe "ACBrUtil".

  Acredito que se passar a usar o IFTHEN do ACBRUtil já deve corrigir isso pq ele tem uma assinatura que recebe dois valores inteiros e que retorna um iteiro, diferente dos que hj estão disponíveis no "ACBrSpedUtils".

 

 

No aguardo.

 

Obrigado pela  atenção.

 

 

Carlos H. Marian

Analista de Sistemas

|/-\|

Link para o comentário
Compartilhar em outros sites

Estou anexando aqui duas Units modificadas para resolver essa questão. Por gentileza baixe-as e teste, em seguida me dê um retorno se funcionou.

ACBrPAF_R_Class.pas

ACBrSpedUtils.pas

ACBrPAF_R_Class.pas

ACBrSpedUtils.pas

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Olá, 

  OK Isaque, sua sugestão de alteração tbm resolveu o problema,

 

    Eu anteriormente não tinha percebido, mas o erro do R05 tbm refletia no registros 0200 do SPED, com esta sua sugestão de correção tbm ajustou o sped;

 

  Valeu.

 

at+

Editado por carlosmarian

Carlos H. Marian

Analista de Sistemas

|/-\|

Link para o comentário
Compartilhar em outros sites

Sim, essas funções são usadas por vários componentes, obrigado pelo retorno vou subir para o SVN.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Alansst,  a alteração do Isaque corrigiu o problema, a princípio não identifiquei outro erro.

 

at++

Carlos, por favor, leia atentamente o que pergunto porque estou sem solução para o problema que citei e não encontro tópico que fale sobre o mesmo

Editado por alansst
Link para o comentário
Compartilhar em outros sites

CarlosMarian, bom dia, veja só isso já aconteceu comigo, em outra situação na verdade o que faz com que a função LFILL invoque a função de assinatura errada é a função IfThen(), como vc citou, pois a mesma deve está tendo como retorno um tipo não Integer.

 

Bom vamos a melhor solução faça o seguinte antes a função ifThen coloque assim:

   ACBrUtil.ifThen();

Teste e nos retorne se funcionou, se funcionar já me mande a unit em anexo. 

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Isaque,
   o problema do Carlos já foi resolvido. Ele mesmo disse acima.
 

Carlos, por favor, leia atentamente o que pergunto porque estou sem solução para o problema que citei e não encontro tópico que fale sobre o mesmo

alansst,
   O post do Carlos é sobre Tpaf_R.writeregistror05, e não sobre PafMF_RelMeiosPagamento. Se você não achou um tópico que fale sobre o seu problema com PafMF_RelMeiosPagamento, crie um outro. Não venha misturar os assuntos nos tópicos já resolvidos conforme o Régys disse acima.

   Veja neste em especial a "2.2 - Permaneça no assunto". 

[]'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 para o comentário
Compartilhar em outros sites

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