01. DADOS GERAIS
Produto: | TOTVS Distribuição e Varejo
|
---|---|
Linha de Produto: | Linha Winthor |
Segmento: | Distribuição TOTVS Goiânia |
Módulo: | 5 - PROCESSAMENTOS |
Função: | 514 - CADASTRAR TIPO DE TRIBUTAÇÃO |
Ticket: | 17820183 |
Requisito/Story/Issue (informe o requisito relacionado) : | DDVENDAS-43185 |
02. SITUAÇÃO/REQUISITO
Criar uma fórmula de cálculo do ST para que quando o ST calculado por pauta zerar ou negativar pegar a base do IVA para calcular o ST.
03. SOLUÇÃO
Criada nova fórmula na rotina 514 em que caso o valor do ST calculado por pauta retornar zero ou menor que zero, utilizar a base do IVA para calcular o valor do ST.
Saiba como utilizar
Atualize a rotina abaixo a partir da versão indicada ou versão superior:
- Rotina 300 - Atualização de funções de venda - Versão 34.0.0.120 ou superior.
Passo a passo:
- Abra a rotina 300 e selecione as opções 12, 13, 14 e 27:
- Após finalizar abra a rotina 514, selecione a figura tributária marque o parâmetro Utilizar Motor de Cálculo de Impostos :
- Clique na aba Substituição Tributária e selecione a fórmula no campo fórmula:
- Importante As fórmulas selecionadas na rotina 514 são as seguintes:
PVENDA_ST_COMPBASE_PAUTA_IVA Preço de venda com valor do ST comparando o valor de IVA com a Base do ST
PVENDA_ST_COMPBASE_PAUTA_IVA_BASE_RED_ICMS Preço de venda com valor do ST comparando o valor de IVA com a Base do ST com redução base de ICMS
PVENDA_ST_COMPBASE_PAUTA_IVA_RED_ICMS Preço de venda com valor do ST comparando o valor de IVA com a Base do ST com redução base de ST
- Abra a rotina 316 e verifique o valor do ST:
- Calculando o ST com a tratativa da base do IVA x valor de Pauta tem um range de valor matematicamente impossível de chegar, pois quando o valor de pauta zera e o ST passa a calcular por VA o preço sem imposto fica menor que o valor de pauta e tecnicamente teria que calcular por pauta.
Essa é uma falha na lógica matemática dessa fórmula da SEFAZ para tratar a exceção do preço sem imposto da PKG_TRIBUTAÇÃO nós inserimos uma mensagem na rotina 316 para ela alertar o intervalo de preço que não é possível por conta da falha na lógica matemática dessa fórmula da SEFAZ:
Atualmente o sistema calcula o ST da seguinte maneira:
- Calculo do valor do ST por pauta sem utilizar o motor de fórmula:
Pvenda: 141,5
Valor de Pauta ST: 188,7
Aliq ICMS INT: 18%
Aliq ICMS EXT: 18%
ST1: (Pauta * Aliq1) = 188,7 * 0,18 = 33,966
ST2: (Pvenda * Aliq2) = 141,5 * 0,18 = 25,47
Valor do ST: (ST1 - ST2) = 33,966 - 25,47 = 8,496
- Porém o preço de venda pode ser alterado e ser maior que o valor de pauta do produto:
Pvenda: 191,00
Valor de Pauta ST: 188,7
Aliq ICMS INT: 18%
Aliq ICMS EXT: 18%
ST1: (Pauta * Aliq1) = 188,7 * 0,18 = 33,966
ST2: (Pvenda * Aliq2) = 191 * 0,18 = 34,38
Valor do ST: (ST1 - ST2) = 33,966 - 34,38 = -0,414
- Nesse caso o valor do ST deu negativo, atualmente o sistema irá levar 0 para o valor do ST, pois o calculo do ST deu negativo. Com a alteração caso o valor do ST dê zerado ou negativo no cálculo por pauta o sistema irá calcular o valor ST pela base do IVA:
Pvenda: 191,00
IVA: 46%
Aliq ICMS INT: 18%
Aliq ICMS EXT: 18%
Base ST: (Pvenda * (1+IVA/100)) = 278,86
ST1: (BaseST * Aliq1) = 50,19
ST2: (Pvenda * Aliq2) = 34,38
Valor do ST: (ST1 - ST2) = 15,8148
As fórmulas criadas são as seguintes:
Fórmula comparativa entre valor do ST calculado por pauta e Base do ST.
ST_COMPBASE_PAUTA_IVA Retorna o valor do ST comparando o valor de IVA com a Base do ST
CASE WHEN (([PAUTATAB] * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP]) * ([ALIQICMS2TAB] / 100))) <= 0
THEN GREATEST((#BASE_ST# * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP]) * ([ALIQICMS2TAB] / 100)), 0) ELSE (([PAUTATAB] * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP])* ([ALIQICMS2TAB] / 100))) END
Fórmula comparativa entre valor do ST calculado por pauta e Base do ST com redução na Base do ICMS.
ST_COMPBASE_PAUTA_IVA_BASE_RED_ICMS Retorna o valor do ST comparando o valor de IVA com a Base do ST com redução base de ICMS
CASE WHEN (([PAUTATAB] * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP]) * ([ALIQICMS2TAB] / 100))) <= 0
THEN GREATEST((#BASE_ST_BASE_RED_ICMS# * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP]) * ([PERCBASEREDST2TRANSF] / 100) * ([ALIQICMS2TAB] / 100)), 0) ELSE (([PAUTATAB] * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP]) * ([ALIQICMS2TAB] / 100))) END
Fórmula comparativa entre valor do ST calculado por pauta e Base do ST com redução na Base do ICMS.
ST_COMPBASE_PAUTA_IVA_RED_ICMS Retorna o valor do ST comparando o valor de IVA com redução de ICMS na segunda parte
CASE WHEN (([PAUTATAB] * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP]) * ([ALIQICMS2TAB] / 100))) <= 0 THEN GREATEST((#BASE_ST#*([ALIQICMS1TAB]/100))- (([PTABELASEMIMPOSTO1]+[VLFRETE]+[VLOUTRASDESP])*([PERCBASEREDST2TRANSF]/100)* ([PERCBASERED]/100)*([ALIQICMS2TAB]/100)),0) ELSE (([PAUTATAB] * ([ALIQICMS1TAB] / 100)) - (([PTABELASEMIMPOSTO1] + [VLFRETE] + [VLOUTRASDESP]) * ([ALIQICMS2TAB] / 100)))
END
Para cada fórmula acima foi criada a fórmula do PVENDA para calcular o Preço de venda:
PVENDA_ST_COMPBASE_PAUTA_IVA (ST_COMPBASE_PAUTA_IVA)
PVENDA_ST_COMPBASE_PAUTA_IVA_BASE_RED_ICMS (ST_COMPBASE_PAUTA_IVA_BASE_RED_ICMS)
PVENDA_ST_COMPBASE_PAUTA_IVA_RED_ICMS (ST_COMPBASE_PAUTA_IVA_RED_ICMS)
04. DEMAIS INFORMAÇÕES
IMPORTANTE!
As versões estarão disponíveis para download no CCW. Mantenha suas rotinas sempre atualizadas!