From 0be962b052c37d25639356142e26b494f2384773 Mon Sep 17 00:00:00 2001 From: Thalya Bezerra Date: Mon, 19 Jun 2023 17:49:10 -0300 Subject: [PATCH 1/3] =?UTF-8?q?-=20Altera=C3=A7=C3=B5es=20para=20implement?= =?UTF-8?q?a=C3=A7=C3=A3o=20do=20c=C3=A1lculo=20FCP=20ST=20Retido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impostos/IResultadoCalculoFcpStRetido.cs | 28 ++++++++++ .../Impostos/ITributavel.cs | 2 + .../ResultadoCalculoFcpStRetido.cs | 34 +++++++++++++ .../Impostos/ResultadoTributacao.cs | 19 +++++++ .../Tributacoes/TributacaoFcpStRetido.cs | 51 +++++++++++++++++++ src/TestesUnitarios/Entidade/Produto.cs | 2 + .../ResultadoTributacaoTest.cs | 33 ++++++++++++ 7 files changed, 169 insertions(+) create mode 100644 src/MotorTributarioNet/Impostos/IResultadoCalculoFcpStRetido.cs create mode 100644 src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoFcpStRetido.cs create mode 100644 src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs diff --git a/src/MotorTributarioNet/Impostos/IResultadoCalculoFcpStRetido.cs b/src/MotorTributarioNet/Impostos/IResultadoCalculoFcpStRetido.cs new file mode 100644 index 0000000..309d276 --- /dev/null +++ b/src/MotorTributarioNet/Impostos/IResultadoCalculoFcpStRetido.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 IResultadoCalculoFcpStRetido + { + decimal BaseCalculoFcpStRetido { get; } + decimal ValorFcpStRetido { get; } + } +} diff --git a/src/MotorTributarioNet/Impostos/ITributavel.cs b/src/MotorTributarioNet/Impostos/ITributavel.cs index 96a141a..c392b2e 100644 --- a/src/MotorTributarioNet/Impostos/ITributavel.cs +++ b/src/MotorTributarioNet/Impostos/ITributavel.cs @@ -49,6 +49,8 @@ public interface ITributavel decimal PercentualDifalInterestadual { get; set; } decimal PercentualFcp { get; set; } decimal PercentualMva { get; set; } + decimal PercentualFcpStRetido { get; set; } + decimal ValorUltimaBaseCalculoIcmsStRetido { get; set; } /// /// Na Substituição tributária = Alíquota interna no Estado de destino diff --git a/src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoFcpStRetido.cs b/src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoFcpStRetido.cs new file mode 100644 index 0000000..504f973 --- /dev/null +++ b/src/MotorTributarioNet/Impostos/Implementacoes/ResultadoCalculoFcpStRetido.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 ResultadoCalculoFcpStRetido : IResultadoCalculoFcpStRetido + { + public ResultadoCalculoFcpStRetido(decimal baseCalculoFcpStRetido, decimal valorFcpStRetido) + { + BaseCalculoFcpStRetido = baseCalculoFcpStRetido; + ValorFcpStRetido = valorFcpStRetido; + } + + public decimal BaseCalculoFcpStRetido { get; } + public decimal ValorFcpStRetido { get; } + } +} diff --git a/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs b/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs index bde864a..6c28671 100644 --- a/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs +++ b/src/MotorTributarioNet/Impostos/ResultadoTributacao.cs @@ -46,6 +46,7 @@ public class ResultadoTributacao private TributacaoFcp TributacaoFcp { get; set; } private TributacaoIssqn Issqn { get; set; } private TributacaoIbpt Ibpt { get; set; } + private TributacaoFcpStRetido TributacaoFcpStRetido { get; set; } #endregion @@ -100,6 +101,9 @@ public class ResultadoTributacao public decimal ValorTributacaoEstadual { get; private set; } public decimal ValorTributacaoMunicipal { get; private set; } public decimal ValorTotalTributos { get; private set; } + + public decimal ValorBcFcpStRetido { get; private set; } + public decimal FcpStRetido { get; private set; } #endregion private readonly ITributavelProduto _produto; @@ -124,6 +128,7 @@ public ResultadoTributacao Calcular() CalcularIcms(); CalcularDifal(); CalcularFcp(); + CalcularFcpStRetido(); CalcularIpi(); } CalcularPis(); @@ -469,6 +474,20 @@ private TributacaoFcp CalcularFcp() return TributacaoFcp; } + private TributacaoFcp CalcularFcpStRetido() + { + TributacaoFcpStRetido = new TributacaoFcpStRetido(_produto); + FcpStRetido = decimal.Zero; + ValorBcFcpStRetido = decimal.Zero; + + var result = TributacaoFcpStRetido.Calcula(); + + FcpStRetido = result.ValorFcpSt; + ValorBcFcpStRetido = result.BaseCalculoFcpSt; + + return TributacaoFcp; + } + private TributacaoDifal CalcularDifal() { var cstCson = (Crt.RegimeNormal == CrtEmpresa ? _produto.Cst.GetValue() : _produto.Csosn.GetValue()); diff --git a/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs new file mode 100644 index 0000000..379cb77 --- /dev/null +++ b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs @@ -0,0 +1,51 @@ +// 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 TributacaoFcpStRetido + { + private readonly ITributavel _tributavel; + private readonly decimal _baseIcmsSt; + + public TributacaoFcpStRetido(ITributavel tributavel) + { + _tributavel = tributavel ?? throw new ArgumentNullException(nameof(tributavel)); + _baseIcmsSt = _tributavel.ValorUltimaBaseCalculoIcmsStRetido; + } + + public IResultadoCalculoFcpSt Calcula() + { + return CalculaFcpSt(_baseIcmsSt); + } + + private IResultadoCalculoFcpSt CalculaFcpSt(decimal baseIcmsSt) + { + var valorIcmsSt = (baseIcmsSt * (_tributavel.PercentualFcpStRetido / 100)); + + return new ResultadoCalculoFcpSt(baseIcmsSt, valorIcmsSt); + } + } +} diff --git a/src/TestesUnitarios/Entidade/Produto.cs b/src/TestesUnitarios/Entidade/Produto.cs index 01174f9..eb4309c 100644 --- a/src/TestesUnitarios/Entidade/Produto.cs +++ b/src/TestesUnitarios/Entidade/Produto.cs @@ -47,5 +47,7 @@ public Produto() public decimal PercentualRetIrrf { get; set; } public decimal PercentualRetInss { get; set; } public decimal PercentualFcpSt { get; set; } + public decimal PercentualFcpStRetido { get; set; } + public decimal ValorUltimaBaseCalculoIcmsStRetido { get; set; } } } \ No newline at end of file diff --git a/src/TestesUnitarios/ResultadoTributacaoTest.cs b/src/TestesUnitarios/ResultadoTributacaoTest.cs index 7d4a27e..aff9b03 100644 --- a/src/TestesUnitarios/ResultadoTributacaoTest.cs +++ b/src/TestesUnitarios/ResultadoTributacaoTest.cs @@ -50,5 +50,38 @@ private static Produto CriaObjetoProduto() produto.PercentualDifalInterna = 18; return produto; } + [Fact] + public void Testa_CST_060() + { + var produto = CriaObjetoProdutoFcpRetido(); + + var tributacao = new ResultadoTributacao(produto, Crt.RegimeNormal, TipoOperacao.OperacaoInterna, TipoPessoa.Juridica).Calcular(); + + + } + + private static Produto CriaObjetoProdutoFcpRetido() + { + var produto = new Produto(); + + produto.Cst = MotorTributarioNet.Flags.Cst.Cst60; + produto.Desconto = 0; + produto.Documento = Documento.NFCe; + produto.Frete = 0; + produto.IsServico = false; + produto.OutrasDespesas = 0; + produto.PercentualCofins = 0; + produto.PercentualFcpStRetido = 3m; + produto.PercentualIcms = 0; + produto.PercentualPis = 0; + produto.PercentualReducao = 0; + produto.QuantidadeProduto = 1; + produto.Seguro = 0; + produto.ValorProduto = 9; + produto.PercentualDifalInterestadual = 0; + produto.PercentualDifalInterna = 0; + produto.ValorUltimaBaseCalculoIcmsStRetido = 5m; + return produto; + } } } \ No newline at end of file From 8fcffd12e2d92c345424f589bc8941b46131f8ca Mon Sep 17 00:00:00 2001 From: Thalya Bezerra Date: Mon, 19 Jun 2023 17:51:04 -0300 Subject: [PATCH 2/3] =?UTF-8?q?-=20Retirado=20teste=20criado=20que=20n?= =?UTF-8?q?=C3=A3o=20ser=C3=A1=20utilizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ResultadoTributacaoTest.cs | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/TestesUnitarios/ResultadoTributacaoTest.cs b/src/TestesUnitarios/ResultadoTributacaoTest.cs index aff9b03..7d4a27e 100644 --- a/src/TestesUnitarios/ResultadoTributacaoTest.cs +++ b/src/TestesUnitarios/ResultadoTributacaoTest.cs @@ -50,38 +50,5 @@ private static Produto CriaObjetoProduto() produto.PercentualDifalInterna = 18; return produto; } - [Fact] - public void Testa_CST_060() - { - var produto = CriaObjetoProdutoFcpRetido(); - - var tributacao = new ResultadoTributacao(produto, Crt.RegimeNormal, TipoOperacao.OperacaoInterna, TipoPessoa.Juridica).Calcular(); - - - } - - private static Produto CriaObjetoProdutoFcpRetido() - { - var produto = new Produto(); - - produto.Cst = MotorTributarioNet.Flags.Cst.Cst60; - produto.Desconto = 0; - produto.Documento = Documento.NFCe; - produto.Frete = 0; - produto.IsServico = false; - produto.OutrasDespesas = 0; - produto.PercentualCofins = 0; - produto.PercentualFcpStRetido = 3m; - produto.PercentualIcms = 0; - produto.PercentualPis = 0; - produto.PercentualReducao = 0; - produto.QuantidadeProduto = 1; - produto.Seguro = 0; - produto.ValorProduto = 9; - produto.PercentualDifalInterestadual = 0; - produto.PercentualDifalInterna = 0; - produto.ValorUltimaBaseCalculoIcmsStRetido = 5m; - return produto; - } } } \ No newline at end of file From ac13a7d6559f962f23a09aa153a06486bcc2e6de Mon Sep 17 00:00:00 2001 From: Thalya Bezerra Date: Tue, 20 Jun 2023 19:00:53 -0300 Subject: [PATCH 3/3] =?UTF-8?q?-=20Alterado=20forma=20de=20realizar=20o=20?= =?UTF-8?q?c=C3=A1lculo=20do=20FCP=20ST=20Retido,=20para=20que=20seja=20mu?= =?UTF-8?q?ltiplicado=20a=20ultima=20base=20de=20icms=20st=20retido=20com?= =?UTF-8?q?=20a=20quantidade=20do=20item.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impostos/Tributacoes/TributacaoFcpStRetido.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs index 379cb77..2f43e3e 100644 --- a/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs +++ b/src/MotorTributarioNet/Impostos/Tributacoes/TributacaoFcpStRetido.cs @@ -28,21 +28,20 @@ namespace MotorTributarioNet.Impostos.Tributacoes public class TributacaoFcpStRetido { private readonly ITributavel _tributavel; - private readonly decimal _baseIcmsSt; public TributacaoFcpStRetido(ITributavel tributavel) { _tributavel = tributavel ?? throw new ArgumentNullException(nameof(tributavel)); - _baseIcmsSt = _tributavel.ValorUltimaBaseCalculoIcmsStRetido; } public IResultadoCalculoFcpSt Calcula() { - return CalculaFcpSt(_baseIcmsSt); + return CalculaFcpSt(); } - private IResultadoCalculoFcpSt CalculaFcpSt(decimal baseIcmsSt) + private IResultadoCalculoFcpSt CalculaFcpSt() { + decimal baseIcmsSt = _tributavel.ValorUltimaBaseCalculoIcmsStRetido * _tributavel.QuantidadeProduto; var valorIcmsSt = (baseIcmsSt * (_tributavel.PercentualFcpStRetido / 100)); return new ResultadoCalculoFcpSt(baseIcmsSt, valorIcmsSt);