Jump to content

logo_acbr_paygo.png

TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


Saiba mais

beneficios.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png click.png click.png

[ACBrEFDBlocos] - Motivo do Inventário - Mudança de Tributação


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

Recommended Posts

Prezados, boa tarde.

Acredito ter encontrado um suposto "bug" no que diz respeito ao ACBrEFDBlocos - Motivo do Inventário quando existir uma Mudança de Tributação.
Sempre que existir uma alteração de tributação de ST para Tributado, por exemplo, o Bloco H005 tag MOT_INV deverá subir com o código 02.

Na classe ACBrEFDBlocos temos a seguinte estrutura:

/// Motivo do Inventário
  TACBrMotInv = (miFinalPeriodo,
                 miMudancaTributacao,
                 miBaixaCadastral,
                 miRegimePagamento,
                 miDeterminacaoFiscos
                );
  TACBrMotivoInventario = TACBrMotInv;

Porém se formos observar, o miMudancaTributacao tem índice 01. Dessa forma não poderei utilizá-la para alimentar a tag MOT_INV do Bloco H005.

Sugestão: Iniciar a estrutura da seguinte maneira

  /// Motivo do Inventário
  TACBrMotInv = (miNenhum,
                 miFinalPeriodo,
                 miMudancaTributacao,
                 miBaixaCadastral,
                 miRegimePagamento,
                 miDeterminacaoFiscos
                );
  TACBrMotivoInventario = TACBrMotInv;

Desculpe se este não é o local ideal para postar isso.

Link to comment
Share on other sites

  • Consultores

Boa tarde.

Você chegou a aplicar alguma alteração e testar ?

Att.

  • Like 1
Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Consultores

Bom dia,

Pode por favor anexar o pas alterado?

Att.

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Consultores
33 minutos atrás, Matheus Leandro Ferreira disse:

Claro. Segue anexo.

Obrigado

ACBrEFDBlocos.pas 85 kB · 0 downloads

Olá Mateus,

   A alteração não é necessária. Você não deve converter o tipo enumerado diretamente para inteiro ou vice-versa. Se fizer isso, vai ter problemas com outros tipos.

   Use as funções declaradas nessa mesma unit como:

  function StrToMotInv(const AValue: string): TACBrMotInv;
  function MotInvToStr(AValue: TACBrMotInv): string;

 

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

14 minutos atrás, EMBarbosa disse:

Olá Mateus,

   A alteração não é necessária. Você não deve converter o tipo enumerado diretamente para inteiro ou vice-versa. Se fizer isso, vai ter problemas com outros tipos.

   Use as funções declaradas nessa mesma unit como:

  function StrToMotInv(const AValue: string): TACBrMotInv;
  function MotInvToStr(AValue: TACBrMotInv): string;

 

Acredito que você está equivocado. Observe que a tag MOT_INV só aceita o tipo TACBrMotInv. Se eu utilizar a função StrToMotInv passando a constante 02, vai me retornar o valor miMudancaTributacao que automaticamente corresponde ao valor 01.
Não posso usar a função MotInvToStr pois a mesma retorna uma String e não poderei atribuir ao MOT_INV.

Para finalizar, mais uma prova de que existe o "bug" é a própria função MotInvToStr que ao passar o miMudancaTributacao retorna a constante 02.

function MotInvToStr(AValue: TACBrMotInv): string;
begin
   if AValue = miFinalPeriodo then
      Result := '01'
   else
   if AValue = miMudancaTributacao then
      Result := '02'
   else
   if AValue = miBaixaCadastral then
      Result := '03'
   else
   if AValue = miRegimePagamento then
      Result := '04'
   else
   if AValue = miDeterminacaoFiscos then
      Result := '05'
   else
     raise Exception.Create('Valor informado inválido para ser convertido em TACBrMotInv');
end;

 

Link to comment
Share on other sites

  • Consultores
1 hora atrás, Matheus Leandro Ferreira disse:

Acredito que você está equivocado. Observe que a tag MOT_INV só aceita o tipo TACBrMotInv.

Sim. Porque é uma função para o tipo Motivo de inventário.

1 hora atrás, Matheus Leandro Ferreira disse:

Se eu utilizar a função StrToMotInv passando a constante 02, vai me retornar o valor miMudancaTributacao

Sim. Foi isso mesmo que você mesmo escreveu no seu primeiro post que queria, veja:

20 horas atrás, Matheus Leandro Ferreira disse:

quando existir uma Mudança de Tributação.
Sempre que existir uma alteração de tributação de ST para Tributado, por exemplo, o Bloco H005 tag MOT_INV deverá subir com o código 02

 

1 hora atrás, Matheus Leandro Ferreira disse:

miMudancaTributacao que automaticamente corresponde ao valor 01

Aqui você está confundindo índice com valor. O valor do tipo enumerado não é necessariamente o seu índice. É justamente por isso que temos essas funções.

1 hora atrás, Matheus Leandro Ferreira disse:

Não posso usar a função MotInvToStr pois a mesma retorna uma String e não poderei atribuir ao MOT_INV

Claro! MOT_INV é do tipo TACBrMotInv. Não é string. Mas também não é inteiro. Se você quer converter o valor para atribuir ao campo MOT_INV você deve usar a outra função StrToMotInv.

1 hora atrás, Matheus Leandro Ferreira disse:

Para finalizar, mais uma prova de que existe o "bug" é a própria função MotInvToStr que ao passar o miMudancaTributacao retorna a constante 02. 

Isso, na verdade é mais uma prova que você está equivocado, porque conforme você mesmo disse no primeiro post, e conforme consta no Guia prático da EFD, página 191:

Citar

Informe o motivo do Inventário:
01 – No final no período;
02 – Na mudança de forma de tributação da mercadoria (ICMS);
03 – Na solicitação da baixa cadastral, paralisação temporária e outras situações;
04 – Na alteração de regime de pagamento – condição do contribuinte;
05 – Por determinação dos fiscos.

 

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Ambos estamos cientes do funcionamento, mas acho que não estamos nos entendendo hehe.. Como faço para a minha tag MOT_INV subir com o valor 02?

Estou fazendo dessa forma: 

MOT_INV := miMudancaTributacao;

Segundo a minha cliente o arquivo esta sendo gravado com o 01:

|H005|30042019|315358,54|01| 

Vou fazer novos testes e posto o resultado. 

  • Like 1
Link to comment
Share on other sites

  • Consultores

 

5 horas atrás, Matheus Leandro Ferreira disse:

Ambos estamos cientes do funcionamento, mas acho que não estamos nos entendendo hehe.. 

Acontece nas melhores famílias. :D

5 horas atrás, Matheus Leandro Ferreira disse:

Como faço para a minha tag MOT_INV subir com o valor 02?

Estou fazendo dessa forma: 

MOT_INV := miMudancaTributacao;

Segundo a minha cliente o arquivo esta sendo gravado com o 01:

|H005|30042019|315358,54|01| 

Vou fazer novos testes e posto o resultado. 

O código que você está interessado está no arquivo ACBrEFDBloco_H_Class.pas, na procedure TBloco_H.WriteRegistroH005(RegH001: TRegistroH001), especialmente essa parte abaixo:

          if (FBloco_0.Registro0000.COD_VER  >= vlVersao104) then
          begin
              if DT_FIN >= EncodeDate(2012,07,01) then
              begin
                case MOT_INV of
                  miFinalPeriodo:       strMotInv := '01';
                  miMudancaTributacao:  strMotInv := '02';
                  miBaixaCadastral:     strMotInv := '03';
                  miRegimePagamento:    strMotInv := '04';
                  miDeterminacaoFiscos: strMotInv := '05';
                else
                  strMotInv := '01';
                end; 

 

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

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