Skip to content

Commit

Permalink
Merge pull request #37 from adrbarros/master
Browse files Browse the repository at this point in the history
Ajustes no Calculos de Icms, Icms-St, Pis/Cofins
  • Loading branch information
robertorp authored Nov 27, 2024
2 parents 7574afb + 7db9adb commit 90bfb8e
Show file tree
Hide file tree
Showing 40 changed files with 302 additions and 166 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,26 +36,21 @@ public CalculaBaseCalculoIcms(ITributavel tributavel, TipoDesconto tipoDesconto)

public decimal CalculaBaseCalculo()
{
var baseCalculo = CalculaBaseDeCalculo() + _tributavel.ValorIpi;

var baseCalculo = CalculaBaseDeCalculo() + (_tributavel.IsAtivoImobilizadoOuUsoeConsumo ? _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.PercentualReducao / 100;

baseCalculo -= baseCalculo * _tributavel.PercentualReducao / 100;
return baseCalculo;
}

private decimal CalculaIcmsComDescontoCondicional(decimal baseCalculoInicial)
{
var baseCalulo = baseCalculoInicial + _tributavel.Desconto;

baseCalulo = baseCalulo - baseCalulo * _tributavel.PercentualReducao / 100;

baseCalulo -= baseCalulo * _tributavel.PercentualReducao / 100;
return baseCalulo;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,26 +36,21 @@ public CalculaBaseCalculoIcmsEfetivo(ITributavel tributavel, TipoDesconto tipoDe

public decimal CalculaBaseCalculo()
{
var baseCalculo = _tributavel.PercentualIcmsEfetivo > 0m ? CalculaBaseDeCalculo() + _tributavel.ValorIpi : 0m;

var baseCalculo = _tributavel.PercentualIcmsEfetivo > 0m ? CalculaBaseDeCalculo() + (_tributavel.IsAtivoImobilizadoOuUsoeConsumo ? _tributavel.ValorIpi : 0m) : 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;

baseCalculo -= baseCalculo * _tributavel.PercentualReducaoIcmsEfetivo / 100;
return baseCalculo;
}

private decimal CalculaIcmsComDescontoCondicional(decimal baseCalculoInicial)
{
var baseCalulo = baseCalculoInicial + _tributavel.Desconto;

baseCalulo = baseCalulo - baseCalulo * _tributavel.PercentualReducaoIcmsEfetivo / 100;

baseCalulo -= baseCalulo * _tributavel.PercentualReducaoIcmsEfetivo / 100;
return baseCalulo;
}
}
Expand Down
21 changes: 6 additions & 15 deletions src/MotorTributarioNet/Impostos/CalulosDeBC/CalculoBaseIcmsSt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,42 +34,33 @@ public CalculoBaseIcmsSt(ITributavel tributavel, TipoDesconto tipoDesconto) : ba
_tipoDesconto = tipoDesconto;
}


public decimal CalculaBaseCalculo()
{
var baseCalculo = CalculaBaseDeCalculo() + _tributavel.ValorIpi;
baseCalculo = baseCalculo - (baseCalculo * _tributavel.PercentualReducao / 100);
var baseCalculoSt = CalculaBaseCalculoST(baseCalculo);
var baseCalculo = CalculaBaseDeCalculo();
var baseCalculoSt = CalculaBaseCalculoST(baseCalculo + _tributavel.ValorIpi);
return baseCalculoSt;
}


public decimal CalculaBaseCalculoST(decimal baseCalculoIcms)
{
var baseCalculoSt = _tipoDesconto == TipoDesconto.Condincional ? CalculaIcmsComDescontoCondicional(baseCalculoIcms) : CalculaIcmsComDescontoIncondicional(baseCalculoIcms);

baseCalculoSt = baseCalculoSt * (1.00m + _tributavel.PercentualMva / 100.00m);

baseCalculoSt *= (1.00m + _tributavel.PercentualMva / 100.00m);
return baseCalculoSt;
}



private decimal CalculaIcmsComDescontoIncondicional(decimal baseCalculoInicial)
{
var baseCalculo = baseCalculoInicial - _tributavel.Desconto;

baseCalculo = baseCalculo - baseCalculo * _tributavel.PercentualReducaoSt / 100;

baseCalculo -= baseCalculo * _tributavel.PercentualReducaoSt / 100;
return baseCalculo;
}

private decimal CalculaIcmsComDescontoCondicional(decimal baseCalculoInicial)
{
var baseCalulo = baseCalculoInicial + _tributavel.Desconto;

baseCalulo = baseCalulo - baseCalulo * _tributavel.PercentualReducaoSt / 100;

baseCalulo -= baseCalulo * _tributavel.PercentualReducaoSt / 100;
return baseCalulo;
}
}
Expand Down
8 changes: 6 additions & 2 deletions src/MotorTributarioNet/Impostos/Csosns/Csosn101.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace MotorTributarioNet.Impostos.Csosns
{
public class Csosn101 : CsosnBase
{
public Csosn101(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional,TipoDesconto tipoDesconto = TipoDesconto.Incondicional) : base(origemMercadoria, tipoDesconto)
public Csosn101(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional, TipoDesconto tipoDesconto = TipoDesconto.Incondicional) : base(origemMercadoria, tipoDesconto)
{
Csosn = Csosn.Csosn101;
}
Expand All @@ -37,10 +37,14 @@ public Csosn101(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional,Ti

public override void Calcula(ITributavel tributavel)
{
var resultadoCalculoIcmsCredito = new FacadeCalculadoraTributacao(tributavel,TipoDesconto).CalculaIcmsCredito();
decimal percentualReducao = tributavel.PercentualReducao;
tributavel.PercentualReducao = 0m;

var resultadoCalculoIcmsCredito = new FacadeCalculadoraTributacao(tributavel, TipoDesconto).CalculaIcmsCredito();
PercentualCredito = tributavel.PercentualCredito;
ValorCredito = resultadoCalculoIcmsCredito.Valor;

tributavel.PercentualReducao = percentualReducao;
}
}
}
2 changes: 1 addition & 1 deletion src/MotorTributarioNet/Impostos/Csosns/Csosn201.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public override void Calcula(ITributavel tributavel)
PercentualReducaoSt = tributavel.PercentualReducaoSt;
PercentualIcmsSt = tributavel.PercentualIcmsSt;

var facade = new FacadeCalculadoraTributacao(tributavel,TipoDesconto);
var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto);

tributavel.ValorIpi = facade.CalculaIpi().Valor;

Expand Down
2 changes: 1 addition & 1 deletion src/MotorTributarioNet/Impostos/Csosns/Csosn202.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public override void Calcula(ITributavel tributavel)
PercentualReducaoSt = tributavel.PercentualReducaoSt;
PercentualIcmsSt = tributavel.PercentualIcmsSt;

var facade = new FacadeCalculadoraTributacao(tributavel,TipoDesconto);
var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto);

tributavel.ValorIpi = facade.CalculaIpi().Valor;

Expand Down
9 changes: 5 additions & 4 deletions src/MotorTributarioNet/Impostos/Csosns/Csosn500.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,16 @@ public Csosn500(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional, T

public decimal PercentualBcStRetido { get; set; }
public decimal ValorBcStRetido { get; set; }
public decimal PercentualSt { 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) {
PercentualSt = tributavel.PercentualIcmsSt + tributavel.PercentualFcpSt;
public override void Calcula(ITributavel tributavel)
{
PercentualSt = tributavel.PercentualIcmsSt + tributavel.PercentualFcpSt;

var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto);
var resultadoCalculoIcmsEfetivo = facade.CalculaIcmsEfetivo();
Expand All @@ -53,5 +54,5 @@ public override void Calcula(ITributavel tributavel) {
PercentualFcpStRetido = tributavel.PercentualFcpStRetido;
}

}
}
}
12 changes: 8 additions & 4 deletions src/MotorTributarioNet/Impostos/Csosns/Csosn900.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,21 @@ public Csosn900(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional, T
public override void Calcula(ITributavel tributavel)
{
CalculaIcms(tributavel);

CalculaIcmsSt(tributavel);

decimal percentualReducao = tributavel.PercentualReducao;
tributavel.PercentualReducao = 0m;

CalculaCredito(tributavel);

tributavel.PercentualReducao = percentualReducao;
}

private void CalculaCredito(ITributavel tributavel)
{
PercentualCredito = tributavel.PercentualCredito;

var facade = new FacadeCalculadoraTributacao(tributavel,TipoDesconto);
var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto);
var resultadoCalculaCredito = facade.CalculaIcmsCredito();
ValorCredito = resultadoCalculaCredito.Valor;
}
Expand All @@ -83,7 +87,7 @@ private void CalculaIcmsSt(ITributavel tributavel)
PercentualReducaoSt = tributavel.PercentualReducaoSt;
PercentualIcmsSt = tributavel.PercentualIcmsSt;

var facade = new FacadeCalculadoraTributacao(tributavel,TipoDesconto);
var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto);

tributavel.ValorIpi = facade.CalculaIpi().Valor;

Expand All @@ -98,7 +102,7 @@ private void CalculaIcms(ITributavel tributavel)
PercentualReducaoIcmsBc = tributavel.PercentualReducao;
PercentualIcms = tributavel.PercentualIcms;

var facade = new FacadeCalculadoraTributacao(tributavel,TipoDesconto);
var facade = new FacadeCalculadoraTributacao(tributavel, TipoDesconto);

tributavel.ValorIpi = facade.CalculaIpi().Valor;

Expand Down
22 changes: 11 additions & 11 deletions src/MotorTributarioNet/Impostos/Csts/Cst10.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ public class Cst10 : Cst00
public decimal ValorBcIcmsSt { get; private set; }
public decimal PercentualIcmsSt { get; private set; }
public decimal ValorIcmsSt { get; private set; }
public decimal ValorBcFcp { get; private set; }
public decimal ValorBcFcpSt { get; private set; }
public decimal PercentualFcpSt { get; private set; }
public decimal ValorFcpSt { get; private set; }
public decimal ValorBcFcp { get; private set; }
public decimal ValorBcFcpSt { get; private set; }
public decimal PercentualFcpSt { get; private set; }
public decimal ValorFcpSt { get; private set; }

public Cst10(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional, TipoDesconto tipoDesconto = TipoDesconto.Incondicional) : base(origemMercadoria, tipoDesconto)
public Cst10(OrigemMercadoria origemMercadoria = OrigemMercadoria.Nacional, TipoDesconto tipoDesconto = TipoDesconto.Incondicional) : base(origemMercadoria, tipoDesconto)
{
Cst = Cst.Cst10;
ModalidadeDeterminacaoBcIcmsSt = ModalidadeDeterminacaoBcIcmsSt.MargemValorAgregado;
Expand All @@ -48,23 +48,23 @@ public override void Calcula(ITributavel tributavel)
base.Calcula(tributavel);

PercentualMva = tributavel.PercentualMva;
PercentualReducaoSt = tributavel.PercentualReducaoSt;
PercentualIcmsSt = tributavel.PercentualIcmsSt;
PercentualFcpSt = tributavel.PercentualFcpSt;
PercentualFcpSt = tributavel.PercentualFcpSt;
PercentualReducaoSt = tributavel.PercentualReducaoSt;

FacadeCalculadoraTributacao facadeCalculadoraTributacao = new FacadeCalculadoraTributacao(tributavel, TipoDesconto);

tributavel.ValorIpi = facadeCalculadoraTributacao.CalculaIpi().Valor;

IResultadoCalculoIcmsSt resultadoCalculoIcmsSt = facadeCalculadoraTributacao.CalculaIcmsSt();
IResultadoCalculoFcpSt resultadoCalculoFcpSt = facadeCalculadoraTributacao.CalculaFcpSt();
IResultadoCalculoFcpSt resultadoCalculoFcpSt = facadeCalculadoraTributacao.CalculaFcpSt();

ValorBcIcmsSt = resultadoCalculoIcmsSt.BaseCalculoIcmsSt;
ValorIcmsSt = resultadoCalculoIcmsSt.ValorIcmsSt;

ValorBcFcp = facadeCalculadoraTributacao.CalculaFcp().BaseCalculo;
ValorBcFcpSt = resultadoCalculoFcpSt.BaseCalculoFcpSt;
ValorFcpSt = resultadoCalculoFcpSt.ValorFcpSt;
ValorBcFcp = facadeCalculadoraTributacao.CalculaFcp().BaseCalculo;
ValorBcFcpSt = resultadoCalculoFcpSt.BaseCalculoFcpSt;
ValorFcpSt = resultadoCalculoFcpSt.ValorFcpSt;
}
}
}
1 change: 1 addition & 0 deletions src/MotorTributarioNet/Impostos/ITributavel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public interface ITributavel
CstPisCofins CstPisCofins { get; set; }
CstIpi CstIpi { get; set; }
bool IsServico { get; set; }
bool IsAtivoImobilizadoOuUsoeConsumo { get; set; }
decimal ValorProduto { get; set; }
decimal Frete { get; set; }
decimal Seguro { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
// Você também pode obter uma copia da licença em:
// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE

using System;

namespace MotorTributarioNet.Impostos.Implementacoes
{
public class DadosMensagemDifal : IDadosMensagemDifal
Expand All @@ -28,9 +30,9 @@ public class DadosMensagemDifal : IDadosMensagemDifal

public DadosMensagemDifal(decimal fcp, decimal valorIcmsDestino, decimal valorIcmsOrigem)
{
Fcp = fcp;
ValorIcmsDestino = valorIcmsDestino;
ValorIcmsOrigem = valorIcmsOrigem;
Fcp = Math.Round(fcp, 2);
ValorIcmsDestino = Math.Round(valorIcmsDestino, 2);
ValorIcmsOrigem = Math.Round(valorIcmsOrigem, 2);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,16 @@
// Você também pode obter uma copia da licença em:
// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE

using System;

namespace MotorTributarioNet.Impostos.Implementacoes
{
public class ResultadoCalculoCofins : IResultadoCalculoCofins
{
public ResultadoCalculoCofins(decimal baseCalculo, decimal valor)
{
BaseCalculo = baseCalculo;
Valor = valor;
BaseCalculo = Math.Round(baseCalculo, 2);
Valor = Math.Round(valor, 2);
}

public decimal BaseCalculo { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,17 @@
// Você também pode obter uma copia da licença em:
// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE


using System;

namespace MotorTributarioNet.Impostos.Implementacoes
{
public class ResultadoCalculoCredito : IResultadoCalculoCredito
{
public ResultadoCalculoCredito(decimal baseCalculo, decimal valor)
{
BaseCalculo = baseCalculo;
Valor = valor;
BaseCalculo = Math.Round(baseCalculo, 2);
Valor = Math.Round(valor, 2);
}

public decimal BaseCalculo { get; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
// Você também pode obter uma copia da licença em:
// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE

using System;

namespace MotorTributarioNet.Impostos.Implementacoes
{
public class ResultadoCalculoDifal : IResultadoCalculoDifal
Expand All @@ -30,11 +32,11 @@ public class ResultadoCalculoDifal : IResultadoCalculoDifal

public ResultadoCalculoDifal(decimal baseCalculo, decimal difal, decimal fcp, decimal valorIcmsDestino, decimal valorIcmsOrigem)
{
BaseCalculo = baseCalculo;
Difal = difal;
Fcp = fcp;
ValorIcmsDestino = valorIcmsDestino;
ValorIcmsOrigem = valorIcmsOrigem;
BaseCalculo = Math.Round(baseCalculo, 2);
Difal = Math.Round(difal, 2);
Fcp = Math.Round(fcp, 2);
ValorIcmsDestino = Math.Round(valorIcmsDestino, 2);
ValorIcmsOrigem = Math.Round(valorIcmsOrigem, 2);
}

public string GetObservacao(IDadosMensagemDifal dadosMensagemDifal)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,16 @@
// Você também pode obter uma copia da licença em:
// https://github.com/AutomacaoNet/MotorTributarioNet/blob/master/LICENSE

using System;

namespace MotorTributarioNet.Impostos.Implementacoes
{
public class ResultadoCalculoFcp : IResultadoCalculoFcp
{
public ResultadoCalculoFcp(decimal baseCalculo, decimal fcp)
{
BaseCalculo = baseCalculo;
Valor = fcp;
BaseCalculo = Math.Round(baseCalculo, 2);
Valor = Math.Round(fcp, 2);
}

public decimal BaseCalculo { get; }
Expand Down
Loading

0 comments on commit 90bfb8e

Please sign in to comment.