From a32f11b5617fdec5a665608529b684b6911c59f2 Mon Sep 17 00:00:00 2001 From: Thalya Bezerra Date: Tue, 30 Jan 2024 09:07:39 -0300 Subject: [PATCH 1/2] =?UTF-8?q?-=20Implementado=20c=C3=A1lculo=20do=20ICMS?= =?UTF-8?q?=20Efetivo=20para=20CST=2060=20e=20CSOSN=20500?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Facade/FacadeCalculadoraTributacao.cs | 4 ++ .../CalculaBaseCalculoIcmsEfetivo.cs | 62 ++++++++++++++++++ .../Impostos/Csosns/Csosn500.cs | 19 +++++- src/MotorTributarioNet/Impostos/Csts/Cst60.cs | 14 +++++ .../Impostos/IResultadoCalculoIcmsEfetivo.cs | 28 +++++++++ .../Impostos/ITributavel.cs | 3 +- .../ResultadoCalculoIcmsEfetivo.cs | 34 ++++++++++ .../Impostos/ResultadoTributacao.cs | 21 ++++++- .../Tributacoes/TributacaoIcmsEfetivo.cs | 63 +++++++++++++++++++ src/TestesUnitarios/Csosn/Csosn500Test.cs | 30 +++++++++ src/TestesUnitarios/Cst/Cst60Test.cs | 20 ++++++ src/TestesUnitarios/Entidade/Produto.cs | 2 + 12 files changed, 295 insertions(+), 5 deletions(-) create mode 100644 src/MotorTributarioNet/Impostos/CalulosDeBC/CalculaBaseCalculoIcmsEfetivo.cs create mode 100644 src/MotorTributarioNet/Impostos/IResultadoCalculoIcmsEfetivo.cs create mode 100644 src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoIcmsEfetivo.cs create mode 100644 src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs create mode 100644 src/TestesUnitarios/Csosn/Csosn500Test.cs diff --git a/src/MotorTributarioNet/Facade/FacadeCalculadoraTributacao.cs b/src/MotorTributarioNet/Facade/FacadeCalculadoraTributacao.cs index 13753a7..6651827 100644 --- a/src/MotorTributarioNet/Facade/FacadeCalculadoraTributacao.cs +++ b/src/MotorTributarioNet/Facade/FacadeCalculadoraTributacao.cs @@ -100,5 +100,9 @@ public IResultadoCalculoIcmsMonofasico CalculaIcmsMonofasico() { return new TributacaoIcmsMonofasico(_tributavel, _tipoDesconto).Calcula(); } + public IResultadoCalculoIcmsEfetivo CalculaIcmsEfetivo() + { + return new TributacaoIcmsEfetivo(_tributavel, _tipoDesconto).Calcula(); + } } } \ No newline at end of file diff --git a/src/MotorTributarioNet/Impostos/CalulosDeBC/CalculaBaseCalculoIcmsEfetivo.cs b/src/MotorTributarioNet/Impostos/CalulosDeBC/CalculaBaseCalculoIcmsEfetivo.cs new file mode 100644 index 0000000..6e36cf4 --- /dev/null +++ b/src/MotorTributarioNet/Impostos/CalulosDeBC/CalculaBaseCalculoIcmsEfetivo.cs @@ -0,0 +1,62 @@ +// Projeto: Motor Tributario +// Biblioteca C# para Cálculos Tributários Do Brasil +// NF-e, NFC-e, CT-e, SAT-Fiscal +// +// Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la +// sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela +// Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) +// qualquer versão posterior. +// +// Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM +// NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU +// ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor +// do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) +// +// Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto +// com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., +// no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +// Você também pode obter uma copia da licença em: +// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE + +using MotorTributarioNet.Flags; +using MotorTributarioNet.Impostos.CalulosDeBC.Base; + +namespace MotorTributarioNet.Impostos.CalulosDeBC +{ + public class CalculaBaseCalculoIcmsEfetivo : CalculaBaseCalculoBase + { + private readonly ITributavel _tributavel; + private readonly TipoDesconto _tipoDesconto; + + public CalculaBaseCalculoIcmsEfetivo(ITributavel tributavel, TipoDesconto tipoDesconto) : base(tributavel) + { + _tributavel = tributavel; + _tipoDesconto = tipoDesconto; + } + + public decimal CalculaBaseCalculo() + { + var baseCalculo = _tributavel.PercentualIcmsEfetivo > 0m ? CalculaBaseDeCalculo() + _tributavel.ValorIpi : 0m; + + return _tipoDesconto == TipoDesconto.Condincional ? CalculaIcmsComDescontoCondicional(baseCalculo) : CalculaIcmsComDescontoIncondicional(baseCalculo); + } + + private decimal CalculaIcmsComDescontoIncondicional(decimal baseCalculoInicial) + { + var baseCalculo = baseCalculoInicial - _tributavel.Desconto; + + baseCalculo = baseCalculo - baseCalculo * _tributavel.PercentualReducaoIcmsEfetivo / 100; + + return baseCalculo; + } + + private decimal CalculaIcmsComDescontoCondicional(decimal baseCalculoInicial) + { + var baseCalulo = baseCalculoInicial + _tributavel.Desconto; + + baseCalulo = baseCalulo - baseCalulo * _tributavel.PercentualReducaoIcmsEfetivo / 100; + + return baseCalulo; + } + } +} \ No newline at end of file diff --git a/src/MotorTributarioNet/Impostos/Csosns/Csosn500.cs b/src/MotorTributarioNet/Impostos/Csosns/Csosn500.cs index 3e32124..4986677 100644 --- a/src/MotorTributarioNet/Impostos/Csosns/Csosn500.cs +++ b/src/MotorTributarioNet/Impostos/Csosns/Csosn500.cs @@ -20,6 +20,7 @@ using MotorTributarioNet.Flags; using MotorTributarioNet.Impostos.Csosns.Base; +using MotorTributarioNet.Facade; namespace MotorTributarioNet.Impostos.Csosns { @@ -33,10 +34,24 @@ public Csosn500(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional, T public decimal PercentualBcStRetido { get; set; } public decimal ValorBcStRetido { get; set; } public decimal PercentualSt { get; set; } + public decimal ValorBcIcmsEfetivo { get; private set; } + public decimal PercentualReducaoIcmsEfetivo { get; set; } + public decimal PercentualIcmsEfetivo { get; private set; } + public decimal ValorIcmsEfetivo { get; private set; } + public decimal PercentualFcpStRetido { get; private set; } - public override void Calcula(ITributavel tributavel) { + public override void Calcula(ITributavel tributavel) { PercentualSt = tributavel.PercentualIcmsSt + tributavel.PercentualFcpSt; - } + + var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto); + var resultadoCalculoIcmsEfetivo = facade.CalculaIcmsEfetivo(); + + ValorBcIcmsEfetivo = resultadoCalculoIcmsEfetivo.BaseCalculo; + PercentualIcmsEfetivo = tributavel.PercentualIcmsEfetivo; + PercentualReducaoIcmsEfetivo = tributavel.PercentualReducaoIcmsEfetivo; + ValorIcmsEfetivo = resultadoCalculoIcmsEfetivo.Valor; + PercentualFcpStRetido = tributavel.PercentualFcpStRetido; + } } } \ No newline at end of file diff --git a/src/MotorTributarioNet/Impostos/Csts/Cst60.cs b/src/MotorTributarioNet/Impostos/Csts/Cst60.cs index f4e2d15..fb754fb 100644 --- a/src/MotorTributarioNet/Impostos/Csts/Cst60.cs +++ b/src/MotorTributarioNet/Impostos/Csts/Cst60.cs @@ -37,6 +37,11 @@ public class Cst60 : CstBase // Demais propriedades ainda devem ser implementadas para a NF-e 4.00 public decimal PercentualSt { get; private set; } + public decimal ValorBcIcmsEfetivo { get; private set; } + public decimal PercentualReducaoIcmsEfetivo { get; set; } + public decimal PercentualIcmsEfetivo { get; private set; } + public decimal ValorIcmsEfetivo { get; private set; } + public decimal PercentualFcpStRetido { get; private set; } public Cst60(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional, TipoDesconto tipoDesconto = TipoDesconto.Incondicional) : base(origemMercadoria, tipoDesconto) { @@ -47,10 +52,19 @@ public override void Calcula(ITributavel tributavel) { var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto); var resultadoCalculoIcms = facade.CalculaIcmsSt(); + var resultadoCalculoIcmsEfetivo = facade.CalculaIcmsEfetivo(); + PercentualBcStRetido = tributavel.PercentualIcmsSt; ValorBcStRetido = resultadoCalculoIcms.BaseCalculoIcmsSt; ValorIcmsStRetido = resultadoCalculoIcms.ValorIcmsSt; + //ICMS Efetivo + ValorBcIcmsEfetivo = resultadoCalculoIcmsEfetivo.BaseCalculo; + PercentualIcmsEfetivo = tributavel.PercentualIcmsEfetivo; + PercentualReducaoIcmsEfetivo = tributavel.PercentualReducaoIcmsEfetivo; + ValorIcmsEfetivo = resultadoCalculoIcmsEfetivo.Valor; + PercentualFcpStRetido = tributavel.PercentualFcpStRetido; + ValorCreditoOutorgadoOuPresumido = facade.CalculaIcmsCredito().Valor; PercentualSt = tributavel.PercentualIcmsSt + tributavel.PercentualFcpSt; diff --git a/src/MotorTributarioNet/Impostos/IResultadoCalculoIcmsEfetivo.cs b/src/MotorTributarioNet/Impostos/IResultadoCalculoIcmsEfetivo.cs new file mode 100644 index 0000000..9073c5f --- /dev/null +++ b/src/MotorTributarioNet/Impostos/IResultadoCalculoIcmsEfetivo.cs @@ -0,0 +1,28 @@ +// Projeto: Motor Tributario +// Biblioteca C# para Cálculos Tributários Do Brasil +// NF-e, NFC-e, CT-e, SAT-Fiscal +// +// Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la +// sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela +// Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) +// qualquer versão posterior. +// +// Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM +// NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU +// ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor +// do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) +// +// Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto +// com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., +// no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +// Você também pode obter uma copia da licença em: +// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE + +namespace MotorTributarioNet.Impostos +{ + public interface IResultadoCalculoIcmsEfetivo + { + decimal BaseCalculo { get; } + decimal Valor { get; } + } +} \ No newline at end of file diff --git a/src/MotorTributarioNet/Impostos/ITributavel.cs b/src/MotorTributarioNet/Impostos/ITributavel.cs index 12d6a14..ae76efe 100644 --- a/src/MotorTributarioNet/Impostos/ITributavel.cs +++ b/src/MotorTributarioNet/Impostos/ITributavel.cs @@ -80,6 +80,7 @@ public interface ITributavel decimal AliquotaAdRemIcmsRetidoAnteriormente { get; set; } decimal PercentualReducaoAliquotaAdRemIcms { get; set; } decimal PercentualIcmsMonofasicoDiferido { get; set; } - + decimal PercentualIcmsEfetivo { get; set; } + decimal PercentualReducaoIcmsEfetivo { get; set; } } } \ No newline at end of file diff --git a/src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoIcmsEfetivo.cs b/src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoIcmsEfetivo.cs new file mode 100644 index 0000000..b2621ab --- /dev/null +++ b/src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoIcmsEfetivo.cs @@ -0,0 +1,34 @@ +// Projeto: Motor Tributario +// Biblioteca C# para Cálculos Tributários Do Brasil +// NF-e, NFC-e, CT-e, SAT-Fiscal +// +// Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la +// sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela +// Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) +// qualquer versão posterior. +// +// Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM +// NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU +// ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor +// do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) +// +// Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto +// com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., +// no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +// Você também pode obter uma copia da licença em: +// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE + +namespace MotorTributarioNet.Impostos.Implementacoes +{ + public class ResultadoCalculoIcmsEfetivo : IResultadoCalculoIcmsEfetivo + { + public ResultadoCalculoIcmsEfetivo(decimal baseCalculo, decimal valor) + { + BaseCalculo = baseCalculo; + Valor = valor; + } + + public decimal BaseCalculo { get; } + public decimal Valor { get; } + } +} \ No newline at end of file diff --git a/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs b/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs index 6835f92..8040cfa 100644 --- a/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs +++ b/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs @@ -62,6 +62,10 @@ public class ResultadoTributacao public decimal PercentualReducaoIcmsBc { get; private set; } public decimal PercentualBcStRetido { get; private set; } public decimal PercentualDiferimento { get; private set; } + public decimal PercentualIss { get; private set; } + public decimal PercentualReducaoIcmsEfetivo { get; set; } + public decimal PercentualIcmsEfetivo { get; private set; } + public decimal PercentualFcpStRetido { get; private set; } public decimal ValorIcmsDiferido { get; private set; } public decimal ValorIcmsOperacao { get; private set; } @@ -88,7 +92,6 @@ public class ResultadoTributacao public decimal ValorIss { get; private set; } public decimal BaseCalculoIss { get; private set; } - public decimal PercentualIss { get; private set; } public decimal BaseCalculoInss { get; private set; } public decimal BaseCalculoIrrf { get; private set; } public decimal ValorRetCofins { get; private set; } @@ -114,6 +117,8 @@ public class ResultadoTributacao public decimal ValorIcmsMonofasicoDiferido { get; private set; } public decimal QuantidadeBaseCalculoIcmsMonofasicoRetidoAnteriormente { get; private set; } public decimal ValorIcmsMonofasicoRetidoAnteriormente { get; private set; } + public decimal ValorBcIcmsEfetivo { get; private set; } + public decimal ValorIcmsEfetivo { get; private set; } #endregion @@ -245,6 +250,11 @@ private void CalcularIcms() Icms.Calcula(_produto); PercentualBcStRetido = ((Cst60)Icms).PercentualBcStRetido; ValorBcStRetido = ((Cst60)Icms).ValorBcStRetido; + ValorBcIcmsEfetivo = ((Cst60)Icms).ValorBcIcmsEfetivo; + PercentualReducaoIcmsEfetivo = ((Cst60)Icms).PercentualReducaoIcmsEfetivo; + PercentualIcmsEfetivo = ((Cst60)Icms).PercentualIcmsEfetivo; + PercentualFcpStRetido = ((Cst60)Icms).PercentualFcpStRetido; + ValorIcmsEfetivo = ((Cst60)Icms).ValorIcmsEfetivo; break; case Cst.Cst61: Icms = new Cst61(); @@ -413,7 +423,14 @@ private void CalcularIcms() case Csosn.Csosn500: //500 ICMS cobrado anteriormente por substituição tributária (substituído) ou por antecipação - Classificam-se neste código as operações sujeitas exclusivamente ao regime de substituição tributária na condição de substituído tributário ou no caso de antecipações - //nao tem calculo + //nao tem calculo de icms, mas possui de outros impostos: + CsosnBase = new Csosn500(); + CsosnBase.Calcula(_produto); + ValorBcIcmsEfetivo = ((Csosn500)CsosnBase).ValorBcIcmsEfetivo; + PercentualReducaoIcmsEfetivo = ((Csosn500)CsosnBase).PercentualReducaoIcmsEfetivo; + PercentualIcmsEfetivo = ((Csosn500)CsosnBase).PercentualIcmsEfetivo; + PercentualFcpStRetido = ((Csosn500)CsosnBase).PercentualFcpStRetido; + ValorIcmsEfetivo = ((Csosn500)CsosnBase).ValorIcmsEfetivo; break; case Csosn.Csosn900: diff --git a/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs new file mode 100644 index 0000000..153f44d --- /dev/null +++ b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs @@ -0,0 +1,63 @@ +// Projeto: Motor Tributario +// Biblioteca C# para Cálculos Tributários Do Brasil +// NF-e, NFC-e, CT-e, SAT-Fiscal +// +// Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la +// sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela +// Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) +// qualquer versão posterior. +// +// Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM +// NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU +// ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor +// do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) +// +// Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto +// com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., +// no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +// Você também pode obter uma copia da licença em: +// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE + +using System; +using MotorTributarioNet.Flags; +using MotorTributarioNet.Impostos.CalulosDeBC; +using MotorTributarioNet.Impostos.Implementacoes; + +namespace MotorTributarioNet.Impostos.Tributacoes +{ + public class TributacaoIcmsEfetivo + { + private readonly ITributavel _tributavel; + private readonly CalculaBaseCalculoIcmsEfetivo _calculaBaseCalculoIcms; + + public TributacaoIcmsEfetivo(ITributavel tributavel, TipoDesconto tipoDesconto) + { + _tributavel = tributavel ?? throw new ArgumentNullException(nameof(tributavel)); + _calculaBaseCalculoIcms = new CalculaBaseCalculoIcmsEfetivo(_tributavel, tipoDesconto); + } + + public IResultadoCalculoIcmsEfetivo Calcula() + { + return CalculaIcms(); + } + + private IResultadoCalculoIcmsEfetivo CalculaIcms() + { + var baseCalculo = _calculaBaseCalculoIcms.CalculaBaseCalculo(); + + var valorIcms = CalculaIcms(baseCalculo); + + return new ResultadoCalculoIcmsEfetivo(baseCalculo, valorIcms); + } + + private decimal CalculaIcms(decimal baseCalculo) + { + if (_tributavel.PercentualIcmsEfetivo > 0m) + { + decimal percentualCalculoIcmsEfetivo = _tributavel.PercentualIcmsEfetivo + _tributavel.PercentualFcpStRetido; + return baseCalculo * percentualCalculoIcmsEfetivo / 100; + } + return 0m; + } + } +} \ No newline at end of file diff --git a/src/TestesUnitarios/Csosn/Csosn500Test.cs b/src/TestesUnitarios/Csosn/Csosn500Test.cs new file mode 100644 index 0000000..39f224b --- /dev/null +++ b/src/TestesUnitarios/Csosn/Csosn500Test.cs @@ -0,0 +1,30 @@ +using MotorTributarioNet.Impostos.Csosns; +using TestCalculosTributarios.Entidade; +using Xunit; + +namespace TestCalculosTributarios.Csosn +{ + public class Csosn500Test + { + + [Fact] + public void TestaCalculoICMSEfetivo() + { + var produto = new Produto + { + QuantidadeProduto = 1.000m, + ValorProduto = 1000.00m, + PercentualIcmsEfetivo = 18.00m, + PercentualReducaoIcmsEfetivo = 20.00m, + PercentualFcpStRetido = 2.00m + }; + + var csosn500 = new Csosn500(); + + csosn500.Calcula(produto); + + Assert.Equal(800.00m, csosn500.ValorBcIcmsEfetivo); + Assert.Equal(160.00m, csosn500.ValorIcmsEfetivo); + } + } +} \ No newline at end of file diff --git a/src/TestesUnitarios/Cst/Cst60Test.cs b/src/TestesUnitarios/Cst/Cst60Test.cs index 7804965..e33dc24 100644 --- a/src/TestesUnitarios/Cst/Cst60Test.cs +++ b/src/TestesUnitarios/Cst/Cst60Test.cs @@ -44,5 +44,25 @@ public void CalculaCST60_CTe() Assert.Equal(1000.00m, cst.ValorBcStRetido); Assert.Equal(36.00m, cst.ValorCreditoOutorgadoOuPresumido); } + + [Fact] + public void CalculaCST60_ICMSEfetivo() + { + var produto = new Produto + { + QuantidadeProduto = 1.000m, + ValorProduto = 1000.00m, + PercentualIcmsEfetivo = 18.00m, + PercentualReducaoIcmsEfetivo = 20.00m, + PercentualFcpStRetido = 2.00m + }; + + var cst60 = new Cst60(); + + cst60.Calcula(produto); + + Assert.Equal(800.00m, cst60.ValorBcIcmsEfetivo); + Assert.Equal(160.00m, cst60.ValorIcmsEfetivo); + } } } \ No newline at end of file diff --git a/src/TestesUnitarios/Entidade/Produto.cs b/src/TestesUnitarios/Entidade/Produto.cs index 3f59090..f7f4154 100644 --- a/src/TestesUnitarios/Entidade/Produto.cs +++ b/src/TestesUnitarios/Entidade/Produto.cs @@ -62,5 +62,7 @@ public Produto() public decimal PercentualIcmsMonofasicoDiferido { get; set; } public decimal QuantidadeBaseCalculoIcmsMonofasicoRetidoAnteriormente { get; set; } public decimal AliquotaAdRemIcmsRetidoAnteriormente { get; set; } + public decimal PercentualIcmsEfetivo { get; set; } + public decimal PercentualReducaoIcmsEfetivo { get; set; } } } \ No newline at end of file From b89549fa90d200bc5e86453621218e62330ee259 Mon Sep 17 00:00:00 2001 From: Thalya Bezerra Date: Wed, 31 Jan 2024 16:01:28 -0300 Subject: [PATCH 2/2] =?UTF-8?q?-=20Corrigido=20C=C3=A1lculo=20de=20ICMS=20?= =?UTF-8?q?Efetivo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impostos/Tributacoes/TributacaoIcmsEfetivo.cs | 2 +- src/TestesUnitarios/Csosn/Csosn500Test.cs | 5 ++--- src/TestesUnitarios/Cst/Cst60Test.cs | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs index 153f44d..5a5d795 100644 --- a/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs +++ b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoIcmsEfetivo.cs @@ -54,7 +54,7 @@ private decimal CalculaIcms(decimal baseCalculo) { if (_tributavel.PercentualIcmsEfetivo > 0m) { - decimal percentualCalculoIcmsEfetivo = _tributavel.PercentualIcmsEfetivo + _tributavel.PercentualFcpStRetido; + decimal percentualCalculoIcmsEfetivo = _tributavel.PercentualIcmsEfetivo; return baseCalculo * percentualCalculoIcmsEfetivo / 100; } return 0m; diff --git a/src/TestesUnitarios/Csosn/Csosn500Test.cs b/src/TestesUnitarios/Csosn/Csosn500Test.cs index 39f224b..edc7677 100644 --- a/src/TestesUnitarios/Csosn/Csosn500Test.cs +++ b/src/TestesUnitarios/Csosn/Csosn500Test.cs @@ -14,9 +14,8 @@ public void TestaCalculoICMSEfetivo() { QuantidadeProduto = 1.000m, ValorProduto = 1000.00m, - PercentualIcmsEfetivo = 18.00m, - PercentualReducaoIcmsEfetivo = 20.00m, - PercentualFcpStRetido = 2.00m + PercentualIcmsEfetivo = 20.00m, + PercentualReducaoIcmsEfetivo = 20.00m }; var csosn500 = new Csosn500(); diff --git a/src/TestesUnitarios/Cst/Cst60Test.cs b/src/TestesUnitarios/Cst/Cst60Test.cs index e33dc24..7c23cc3 100644 --- a/src/TestesUnitarios/Cst/Cst60Test.cs +++ b/src/TestesUnitarios/Cst/Cst60Test.cs @@ -52,9 +52,8 @@ public void CalculaCST60_ICMSEfetivo() { QuantidadeProduto = 1.000m, ValorProduto = 1000.00m, - PercentualIcmsEfetivo = 18.00m, - PercentualReducaoIcmsEfetivo = 20.00m, - PercentualFcpStRetido = 2.00m + PercentualIcmsEfetivo = 20.00m, + PercentualReducaoIcmsEfetivo = 20.00m }; var cst60 = new Cst60();