# Histórico

<br>

Em toda e qualquer operação comercial que é realizada no Gestor (seja ela de compra, venda, transferência, etc), não é somente o valor do produto que é levado em consideração. Impostos e tributos são considerados, sendo maiores, menores ou até mesmo não existindo dependedo da operação que está sendo realizada.

O módulo Fiscal serve como uma ferramenta para armazenar e deixar pré-configurado as configurações de impostos. Com o intuito de que o vendedor não precise se preocupar com cálculo de impostos no momento de realizar o pedido/venda, pois o vendedor não é responsável pelo cálculo dos impostos, isto demanda que alguém que entenda da parte fiscal, configure previamente para cada situação fiscal.

<br>

## Modelagem

<br>

O imposto está ligado ao produto/serviço, seja pelo item ou pela hirarquia, desde o item pai até o SKU.

Os impostos sobre o valor faturado, ou seja sobre o valor total da nota, são impostos onde o cáculo é mais simples, devido a base ser sempre o valor do faturamento.

Dentro da modelagem do sistema, um item pode possuir apenas uma configuração fiscal, mas a configuração fiscal pode estar vinculada a vários itens.

Com isto, a tabela de *"Grupo Fiscal"* foi criada, ela representa a lista dos impostos que se comportam dessa mesma maneira, onde a base é o faturamento.

Para criar uma *"Configuração Fiscal"*, no *"Grupo Fiscal"* será colocado todos os impostos que se enquadram na mesma regra, sendo assim, toda vez que for feito o cálculo dos impostos, o sistema irá buscar a lista de impostos, baseando no que foi cadastrado como Imposto, Alíquota e Base e com isto será realizado o cálculo.

O resultado deste cálculo ficará armazenado em uma tabela, que conceitualmente falando, se trata da tabela *"Impostos_Pagar"*. Todos impostos calculados ficam salvos nesta tabela.

No comercial havia as tabelas *"Transacao_Negocio_Item"*, *"Transacao"* e a *"Impostos_Pagar"* (conceitualmente). Onde a tabela *"Transacao"* representa os pedidos, a *"Transacao_negocio_item"* é a lista dos itens do pedido e a *"Impostos_Pagar"* os impostos destes itens e materializados à base, aliquota e valor.

A ação de recalcular impostos no pedido, apaga os impostos existentes no pedido todo e os recria. Basicamente no *"Impostos_Pagar"* consta o resultado das configurações fiscais do item que esta no pedido.

Para maiores informações sobre impostos e como configurar [clique aqui](https://atendimento.dype.com.br/pt-BR/support/solutions/articles/3000104852-impostos).

<br>

## Convenções

<br>

Uma sugestao seria que a configuração fosse ligada ao NCM e não ao item.
Há convenções como por exemplo *"Sistema Harmonizado"*, pois nas operações é preciso que quando o produto vendido para outro pais por exemplo, seja possivel identifica-lo da mesma forma em qualquer lugar, sendo assim foram criados códigos padrão para representar um tipo de produto. Este codigos são formados atraves de hierarquia.

<br>

**NCM** 

<br>

NCM significa *"Nomenclatura Comum do Mercosul"* e trata-se de um código de oito dígitos estabelecido pelo Governo Brasileiro para identificar a natureza das mercadorias e promover o desenvolvimento do comércio internacional, além de facilitar a coleta e análise das estatísticas do comércio exterior.

O objetivo é classificar os itens de acordo com regulamentos do Mercosul e tem como base o SH (Sistema Harmonizado de Designação e Codificação de Mercadorias).

Dos oito dígitos que compõem a NCM, os seis primeiros são classificações do SH. Os dois últimos dígitos fazem parte das especificações próprias do Mercosul.

<br>

![NCM](Fiscal_ncm.png)

<br>

## Diagrama

<br>

```mermaid
graph TD;
CONFIGURACAO_FISCAL[Configuração Fiscal]-->ITEM[Item];
CONFIGURACAO_FISCAL-->GRUPO_FISCAL[Grupo Fiscal];
CONFIGURACAO_FISCAL-->CONFIG_FISCAL_CFOP[Configuração Fiscal CFOP];
CONFIG_FISCAL_CFOP-->CONFIG_ICMS[Configuração ICMS];
CONFIG_FISCAL_CFOP-->CONFG_IPI[Config. IPI];
CONFIG_FISCAL_CFOP-->OPERACAO(Operação);
CONFIG_FISCAL_CFOP-->CFOP(CFOP);
CONFIG_ICMS-->IMPOSTO_UF[Imposto UF];
IMPOSTO_UF-->ID_FILIAL(ID Filial=Origem/Destino)
IMPOSTO_UF-->ALIQUOTA(Aliquota);
IMPOSTO_UF-->ALIQUOTA_INTERESTADUAL(Aliquota Interestadual);
GRUPO_FISCAL-->GRUPO_FISCAL_IMPOSTO[Grupo Fiscal Imposto];
GRUPO_FISCAL_IMPOSTO--Imposto/Aliquota/Base-->IMPOSTO[Imposto];
```

<br>

## Diagrama Complementar

<br>

Abaixo um diagrama complementar ao anterior, onde demonstra a modelagem na Transação de Negócio, relacionada ao imposto.

<br>

```mermaid
graph TD;
TRANSACAO[Transação]-->TRANSACAO_NEGOCIO_ITEM[Transação Negócio Item];
TRANSACAO_NEGOCIO_ITEM-->IMPOSTO_PAGAR[Imposto a Pagar];
IMPOSTO_PAGAR-->BASE(Base);
IMPOSTO_PAGAR-->ALIQUOTA(Aliquota);
IMPOSTO_PAGAR-->VALOR(Valor);
```