Ir para conteúdo
  • Cadastre-se

dev botao

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


  • Este tópico foi criado há 1786 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 para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

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

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

  • Administradores

Bom dia,

Pode por favor anexar o pas alterado?

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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 para o comentário
Compartilhar em outros 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;

 

  • 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.
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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
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

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. 

  • Curtir 1
Link para o comentário
Compartilhar em outros 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; 

 

  • 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.
Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...