Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[14.0][Crédito de impostos]: l10n_br_fiscal, l10n_br_purchase_stock: Adiciona taxas não passíveis de crédito na linha da operação / compra #2635

Open
wants to merge 3 commits into
base: 14.0
Choose a base branch
from

Conversation

DiegoParadeda
Copy link
Contributor

@DiegoParadeda DiegoParadeda commented Aug 9, 2023

Subdivisão em PRs:

stock_price:

lançamentos contábeis:

  • WIP

Objetivo

Incluir no fluxo de compra e valorização de estoque o conceito de Impostos passíveis ou não de crédito

Problemas no fluxo atual

Considerando como exemplo dois casos de compra com linhas de operação:

  • Compras para Comercialização
    • Problema na valorização automática do estoque (o valor deveria ser líquido de imposto)
    • Problema no valor do custo automático do produto (o valor também deveria ser líquido de imposto)
  • Compras para Uso e Consumo
    • Problema na conta de lançamento contábil dos impostos (o valor não é passível de crédito, logo não pode ir para contas de impostos a compensar)

Solução proposta

O PR inclui o campo computado stock_price que será usado para calcular o valor unitário do produto que irá para o estoque.

Outro campo foi adicionado na linha da operação para configurar quais impostos não são passíveis de crédito para o caso. Com base nesse registro o stock_price é computado subtraindo do valor unitário todos os impostos aplicados que não constam na lista de não passíveis de crédito. Em outras palavras, o campo stock_price vai armazenar o custo unitário líquido de impostos passíveis de crédito.

Duas ações são aplicadas a partir dessa lógica:

  1. Compras para Comercialização (valor líquido):

Nesse caso o valor do stock_price é utilizado no lançamento de diário automático (Inventory Valuation) e na atualização do custo do produto (AVCO, FIFO).

  1. Compras para Uso e Consumo (valor cheio):

Nesse caso o valor de estoque (AVCO, FIFO) e o valor utilizado no lançamento contábil (Inventory Valuation) ficam iguais, porém as contas dos lançamentos dos impostos (na fatura do fornecedor) são trocadas pela conta da linha do produto. Ou seja, os lançamentos que iriam para as contas de impostos a compensar são redirecionados para a mesma conta que o lançamento do estoque do produto (ex. Custo das Mercadorias Vendidas, como é configurado em alguns casos)

-//-

Utilização e teste

Uma breve demonstração do funcionamento considerando as duas linhas de operação já mencionadas e somente um imposto (ICMS).

Configuração das operações

Compras para Comercialização: default
Compras para Uso e Consumo: adicionar ICMS nas configurações da linha da operação, no campo criado Non-creditable Tax Groups.
image

Configuração do estoque

Ativar AVCO e valorização automática do estoque.
image

Compras

Comprar, receber produtos e criar fatura.

Lançamentos contábeis resultantes:

  • foi utilizado apenas ICMS 18% para simplificar

Caso 1: Compras para Comercialização

image
image

Caso 2: Compras para Uso e Consumo

image
image

  • sobre o lançamento contábil do imposto na conta: O lançamento não foi deletado, apenas redirecionado para a mesma conta de entrada de estoque

@OCA-git-bot
Copy link
Contributor

Hi @renatonlima,
some modules you are maintaining are being modified, check this out!

@DiegoParadeda DiegoParadeda marked this pull request as ready for review August 9, 2023 22:58
Copy link
Contributor

@ygcarvalh ygcarvalh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Em termos de lógica e código, lgtm!

@ygcarvalh
Copy link
Contributor

@DiegoParadeda você pode fazer um squash dos commits depois que o PR for revisado?

@rvalyi
Copy link
Member

rvalyi commented Aug 10, 2023

já que estão tocando em lançamentos de compra, eu lembro a vcs que vamos ter que alterar os planos de conta para ativar o modo anglo saxon já que isso é importante para contabilizar CMV e remessas (a parte IAS2 do IFRS). Também impacta pois corrige a conta para contabilizar as compras que ficava errada senão. Eu acho que o modo anglo-saxon não tem impacto com esse problema dos impostos, mas é bom verificar se esse PR continua OK se for com o modo anglo-saxon no plano. Aqui eu sei que usamos uns patch para corrigir os custos de entrada, vamos ver o que o @renatonlima pensa do PR.

@mileo mileo changed the title [14.0] l10n_br_fiscal, l10n_br_purchase_stock: Adiciona taxas não passíveis de crédito na linha da operação / compra [14.0][Crédito de impostos]: l10n_br_fiscal, l10n_br_purchase_stock: Adiciona taxas não passíveis de crédito na linha da operação / compra Aug 11, 2023
@DiegoParadeda
Copy link
Contributor Author

já que estão tocando em lançamentos de compra, eu lembro a vcs que vamos ter que alterar os planos de conta para ativar o modo anglo saxon já que isso é importante para contabilizar CMV e remessas (a parte IAS2 do IFRS). Também impacta pois corrige a conta para contabilizar as compras que ficava errada senão. Eu acho que o modo anglo-saxon não tem impacto com esse problema dos impostos, mas é bom verificar se esse PR continua OK se for com o modo anglo-saxon no plano. Aqui eu sei que usamos uns patch para corrigir os custos de entrada, vamos ver o que o @renatonlima pensa do PR.

@rvalyi, bem lembrado, segue o PR2667

Copy link
Member

@mileo mileo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@OCA-git-bot
Copy link
Contributor

This PR has the approved label and has been created more than 5 days ago. It should therefore be ready to merge by a maintainer (or a PSC member if the concerned addon has no declared maintainer). 🤖

Copy link
Member

@mileo mileo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@DiegoParadeda pode adicionar dados de demonstração e uns testes mais usuais?

@DiegoParadeda DiegoParadeda force-pushed the feature/stock_account_price branch 3 times, most recently from 3722abc to d990290 Compare September 5, 2023 21:36
Copy link
Member

@mileo mileo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LTGM

@mileo mileo requested a review from rvalyi February 27, 2024 20:40
@renatonlima
Copy link
Member

@mileo eu vou revisar esse PR e tbm o do simples nacional do @antoniospneto

@rvalyi rvalyi added the blocked label Mar 15, 2024
@rvalyi
Copy link
Member

rvalyi commented Mar 15, 2024

@renatonlima consegue dar uma posição sobre esse PR?

@mileo
Copy link
Member

mileo commented Mar 15, 2024

@renatonlima consegue dar uma posição sobre esse PR?

É tem essa também, as vezes é melhor não travar o PR e propor uma correção depois. Ou fazer um comentário rápido, nem que seja um audio no Telegram.

@mileo mileo force-pushed the feature/stock_account_price branch from 2f8a9db to d09e490 Compare April 1, 2024 12:15
@DiegoParadeda DiegoParadeda marked this pull request as draft May 10, 2024 13:00
@DiegoParadeda DiegoParadeda force-pushed the feature/stock_account_price branch 4 times, most recently from cf6ef2a to 6c0a426 Compare May 10, 2024 19:02
@DiegoParadeda
Copy link
Contributor Author

Pessoal, adicionei algumas modificações no PR, poderiam revisar novamente por favor? @rvalyi @mbcosta @renatonlima @mileo @antoniospneto @felipemotter

Movi o campo stock_price_br para o document line mixin

Apesar de já termos conversado algumas vezes sobre manter o campo e compute do campo no purchase_stock, no meu entendimento atual isso impediria a utilização do stock_price para casos de recebimento sem compra (faturamento pelo stock.picking sem compra)!
Fiz essa modificação pensando no fluxo de importação de nota (importa nota -> recebe estoque a partir da nota -> valoração auto)

Adicionei valuation_via_stock_price e método de default

O campo valuation_via_stock_price pode ser desativado manualmente na transferência de estoque para "reverter" o efeito do stock_price no custeamento.
O método de default foi feito pensando em facilitar heranças no futuro que facilitem o "reverter" (por exemplo, adicionar uma property na configuração geral ou na company para desativar o custeamento líquido de impostos).

Copy link
Member

@renatonlima renatonlima left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Olá @DiegoParadeda,

Primeiramente obrigado pela contribuição com o projeto e segundo desculpa pela demora em revisar o seu PR, mas finalmente consegui fazer a revisão, o primeiro ponto importante que iria sugerir era dividir esse PR em dois, o primeiro para corrigir o valor do preço unitário na stock.move para que o calculo do custo médio fique correto e o segundo PR para corrigir os lançamentos contábeis no caso das entradas de compras e valorização do estoque.

Agora comentando sobre a implementação do PR:

Eu não acho uma boa ideia implementar o campo stock_price_br no mixim do documento fiscal, porque no caso das saídas como em um pedido de venda ou em uma ordem de entrega por exemplo, esse campo seria calculado a partir do preço unit da saída, o que esta errado, porque no caso das saídas o stock_price_br é o preço de custo do cadastro do produto (que foi calculado na entrada do produto), então eu diria que não faz muito sentido esse campo estar no mixim do fiscal.document.line

O preço unitário de entrada para o calculo do custo médio basicamente é:

Preço Unitário de Entrada = [Preço Unitário] - [Impostos Recuperáveis Incluídos no Preço Unitário] + [Impostos Não Recuperáveis Não Incluídos no Preço Unitário] + [Valor de Frete] + [Valor de Seguro] + [Valor de Outras Despesas]

Esse é o calculo básico, mas claro que existe outros fatores que vai depender o perfil fiscal do emitente e destinatário (Se a empresa é do simples nacional ou regime normal), se a operação é de material para uso e consumo, ou se o campo ind_final (consumidor final está definido no documento fiscal), se o destinatário é indústria ou equiparado a industria, o CFOP e a CST de cada imposto, eu entendo que esses fatores deveriam ser tratados no calculo dos impostos ao invés de ser configuráveis na linha da operação fiscal.

Um outro ponto é: no Odoo o calculo do custo médio é feito quando é confirmado o picking de recebimento, o preço unitário no stock.move é usado para fazer o calculo do custo médio do produto e nesse ponto já deveria ser calculado o Preço Unitário de Entrada, hoje seria possível implementar na entrada do picking de recebimento esse calculo, que teoricamente funcionaria, mas na prática teria problemas, porque em alguns casos, como um pedido de compras que foi gerado por produtos MTO o mesmo produto pode ter mais de uma linha de pedido de compras e vai acontecer de ter uma NFe com uma linha agrupando os produtos iguais, mas no picking de recebimento vai ter mais de uma linha e isso vai ser um problema para calcular o Preço Unitário de Entrada porque seria necessário fazer o rateio de valores como o de frete por exemplo, e vai gerar problemas de arredondamento, nesse caso na minha opinião o melhor seria ser feito o calculo na linha do documento fiscal e depois copiar o valor do Preço Unitário de Entrada na linha do documento fiscal nas linhas de recebimento correspondente.

Sobre os lançamentos contábeis, um problema que existe hoje tanto na entrada quanto na saída são as contabilizações dos valores de frete, seguro e outros custos que estão incluidos nas contas de receitas nas saídas e nas contas de despesas / custos nas entradas vai ser importante corrigir esse problema para ter os lançamentos contábeis corretos.

Talvez algo que seja necessário ser configurado na linha da operação fiscal ou no CFOP são as contas contábeis de receita/despesa/custo e dos impostos se tem alguma conta redutora como nas receitas (ICMS sobre vendas) e etc...

@renatonlima
Copy link
Member

@DiegoParadeda,

Só para complementar o meu comentário anterior, a definição das regras de valorização de estoque é regida pelo Comitê de Pronunciamento Técnico no Pronunciamento Técnico CPC 16 esse pronunciamento técnico corresponde ao IAS 2 IASB

No CPC 16 item 11 Custos de aquisição tem a definição:

O custo de aquisição dos estoques compreende o preço de compra, os impostos de importação e outros tributos (exceto os recuperáveis junto ao fisco), bem como os custos de transporte, seguro, manuseio e outros diretamente atribuíveis à aquisição de produtos acabados, materiais e serviços. Descontos comerciais, abatimentos e outros itens semelhantes devem ser deduzidos na determinação do custo de aquisição.

@DiegoParadeda
Copy link
Contributor Author

Obrigado pela revisão @renatonlima

Já estou me programando para fazer as correções e quebrar o PR em partes menores. Também tenho algumas dúvidas e observações sobre o seu comentário, você poderia dar uma olhada, por favor?

Sobre o modelo responsável pelo cálculo do stock_price:

Eu não acho uma boa ideia implementar o campo stock_price_br no mixim do documento fiscal

Pretendo criar um novo mixin para o campo e funções, mas ainda estou mapeando quais módulos vão precisar acessar essa informação, talvez essa parte fique por último. A ideia por enquanto é disponibilizar esse campo e suas funções na compra, transferência de recebimento e talvez na fatura.

Sobre as definições de impostos recuperáveis / não recuperáveis

eu entendo que esses fatores deveriam ser tratados no calculo dos impostos ao invés de ser configuráveis na linha da operação fiscal

Entendo que as informações necessárias para definir se um imposto é recuperável não têm origem única. Mas não consegui pensar em um lugar melhor do que a linha da operação para registrar essa "recuperabilidade".

Esse parágrafo é mais confuso, quebrei em duas sessões:

"Um outro ponto é: no Odoo o calculo do custo médio é feito quando é confirmado o picking de recebimento, o preço unitário no stock.move é usado para fazer o calculo do custo médio do produto e nesse ponto já deveria ser calculado o Preço Unitário de Entrada, hoje seria possível implementar na entrada do picking de recebimento esse calculo, que teoricamente funcionaria, mas na prática teria problemas, porque em alguns casos, como um pedido de compras que foi gerado por produtos MTO o mesmo produto pode ter mais de uma linha de pedido de compras e vai acontecer de ter uma NFe com uma linha agrupando os produtos iguais, mas no picking de recebimento vai ter mais de uma linha e isso vai ser um problema para calcular o Preço Unitário de Entrada porque seria necessário fazer o rateio de valores como o de frete por exemplo, e vai gerar problemas de arredondamento, nesse caso na minha opinião o melhor seria ser feito o calculo na linha do documento fiscal e depois copiar o valor do Preço Unitário de Entrada na linha do documento fiscal nas linhas de recebimento correspondente."

1

linha do documento fiscal e depois copiar o valor do Preço Unitário de Entrada na linha do documento fiscal nas linhas de recebimento correspondente.

De certa forma já estou fazendo isso não é? Calculando o stock price no fiscal document line (mixin) e usando o valor calculado como sendo o valor unitário do picking, que por sua vez é usado pra gerar o lançamento contábil de estoque.

2

o mesmo produto pode ter mais de uma linha de pedido de compras e vai acontecer de ter uma NFe com uma linha agrupando os produtos iguais, mas no picking de recebimento vai ter mais de uma linha e isso vai ser um problema para calcular o Preço Unitário de Entrada porque seria necessário fazer o rateio de valores como o de frete por exemplo, e vai gerar problemas de arredondamento

Testei o stock price com valores de frete separados por linha e não tive problema. Não consegui simular um caso em que o rateio dos custos adicionais possa gerar problemas de arredondamento.

Sobre a fórmula de valor de estoque:

Preço Unitário de Entrada = [Preço Unitário] - [Impostos Recuperáveis Incluídos no Preço Unitário] + [Impostos Não Recuperáveis Não Incluídos no Preço Unitário] + [Valor de Frete] + [Valor de Seguro] + [Valor de Outras Despesas]

No meu entendimento essa forma já está sendo respeitada, mas se encontrar algum caso em que não esteja vou tentar corrigir.

@mileo
Copy link
Member

mileo commented Jul 2, 2024

@DiegoParadeda o crédito ele é por circunstância e por taxa também, por exemplo:

https://www.lefisc.com.br/materias/2011/252011ir.htm

Então um dois bons locais para você colocar essa informação são a l10n_br_fiscal.cst e l10n_br_fiscal.tax

Depois pode ser necessário criar uma tabela de decisão para facilitar a configuração desses créditos.

@mileo mileo force-pushed the feature/stock_account_price branch from 6c0a426 to 1233b48 Compare July 30, 2024 13:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants