-
Notifications
You must be signed in to change notification settings - Fork 44
feat: implementando reforma tributária #42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
3bb3e8b
feat: implementando reforma tributária
robertorp ec96e23
feat: update .NET version to 8.0.x in CI workflow
robertorp 98ec4b2
fix: rodar testes em .net6 core e .net8 core
robertorp 615f624
Initial plan
Copilot ed12dbf
refactor: atualizado ISSQN usar no calculo TributacaoIssqn classe
robertorp 17d98bb
refactor: use TributacaoIssqn class for ISSQN calculation in IBS/CBS …
Copilot 6a9a451
Merge branch 'ra/feat-reforma-tributaria' into copilot/sub-pr-42
robertorp 04db98e
Merge pull request #43 from AutomacaoNet/copilot/sub-pr-42
robertorp 434570f
feat: adicionado IBS Municipal cálculo e testes relacionados para a R…
robertorp 8a472af
Initial plan
Copilot a610338
fix: replace generic catch clause with explicit Exception type
Copilot bec1482
refactor: remove all try-catch blocks from CalculaBaseCalculoIbsCbs
Copilot 08a27ad
Merge pull request #45 from AutomacaoNet/copilot/sub-pr-42-another-one
robertorp File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
194 changes: 194 additions & 0 deletions
194
src/MotorTributarioNet/Impostos/CalulosDeBC/CalculaBaseCalculoIbsCbs.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,194 @@ | ||
| // 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; | ||
| using MotorTributarioNet.Impostos.Tributacoes; | ||
|
|
||
| namespace MotorTributarioNet.Impostos.CalulosDeBC | ||
| { | ||
| /// <summary> | ||
| /// Calcula a base de cálculo do IBS (Imposto sobre Bens e Serviços) e CBS (Contribuição sobre Bens e Serviços) | ||
| /// Reforma Tributária - LC 214/2025 - Nota Técnica 2025.002 | ||
| /// Fórmula (NT 2025.002, página 19, regra UB16-10): | ||
| /// vProd + vServ + vFrete + vSeg + vOutro + vII - vDesc - vPis - vCofins - vIcms - vIcmsUfDest - vFcp - vFcpUfDest - vIcmsMono - vIssqn + vIS | ||
| /// </summary> | ||
| public class CalculaBaseCalculoIbsCbs : CalculaBaseCalculoBase | ||
| { | ||
| private readonly ITributavel _tributavel; | ||
| private readonly TipoDesconto _tipoDesconto; | ||
|
|
||
| public CalculaBaseCalculoIbsCbs(ITributavel tributavel, TipoDesconto tipoDesconto) : base(tributavel) | ||
| { | ||
| _tributavel = tributavel; | ||
| _tipoDesconto = tipoDesconto; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Calcula a base de cálculo conforme a fórmula da NT 2025.002 | ||
| /// </summary> | ||
| public decimal CalculaBaseCalculo() | ||
| { | ||
| // vProd + vServ + vFrete + vSeg + vOutro | ||
| var baseCalculo = CalculaBaseDeCalculo(); | ||
|
|
||
| // + vII (Imposto de Importação) - ainda não implementado, será 0 por enquanto | ||
| baseCalculo += ObterValorImpostoImportacao(); | ||
|
|
||
| // - vDesc (Desconto) | ||
| baseCalculo -= _tributavel.Desconto; | ||
|
|
||
| // - vPis (Valor do PIS) | ||
| baseCalculo -= CalcularValorPis(); | ||
|
|
||
| // - vCofins (Valor da COFINS) | ||
| baseCalculo -= CalcularValorCofins(); | ||
|
|
||
| // - vIcms (Valor do ICMS) | ||
| baseCalculo -= CalcularValorIcms(); | ||
|
|
||
| // - vIcmsUfDest (ICMS UF Destino) - ainda não implementado | ||
| baseCalculo -= ObterValorIcmsUfDest(); | ||
|
|
||
| // - vFcp (Valor do FCP) | ||
| baseCalculo -= ObterValorFcp(); | ||
|
|
||
| // - vFcpUfDest (FCP UF Destino) - ainda não implementado | ||
| baseCalculo -= ObterValorFcpUfDest(); | ||
|
|
||
| // - vIcmsMono (ICMS Monofásico) - ainda não implementado | ||
| baseCalculo -= ObterValorIcmsMonofasico(); | ||
|
|
||
| // - vIssqn (Valor do ISSQN) | ||
| baseCalculo -= CalcularValorIssqn(); | ||
|
|
||
| // + vIS (Imposto Seletivo) - ainda não implementado, será 0 por enquanto | ||
| baseCalculo += ObterValorImpostoSeletivo(); | ||
|
|
||
| return baseCalculo; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Calcula o valor do PIS para dedução da base | ||
| /// </summary> | ||
| private decimal CalcularValorPis() | ||
| { | ||
| var tributacaoPis = new TributacaoPis(_tributavel, _tipoDesconto); | ||
| return tributacaoPis.Calcula().Valor; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Calcula o valor da COFINS para dedução da base | ||
| /// </summary> | ||
| private decimal CalcularValorCofins() | ||
| { | ||
| var tributacaoCofins = new TributacaoCofins(_tributavel, _tipoDesconto); | ||
| return tributacaoCofins.Calcula().Valor; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Calcula o valor do ICMS para dedução da base | ||
| /// </summary> | ||
| private decimal CalcularValorIcms() | ||
| { | ||
| var tributacaoIcms = new TributacaoIcms(_tributavel, _tipoDesconto); | ||
| return tributacaoIcms.Calcula().Valor; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Calcula o valor do ISSQN para dedução da base | ||
| /// </summary> | ||
| private decimal CalcularValorIssqn() | ||
| { | ||
| if (_tributavel.IsServico && _tributavel.PercentualIssqn > 0) | ||
| { | ||
| var tributacaoIssqn = new TributacaoIssqn(_tributavel, _tipoDesconto); | ||
| return tributacaoIssqn.Calcula(false).Valor; | ||
| } | ||
| return 0m; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Obtém o valor do Imposto de Importação (vII) | ||
| /// TODO: Implementar quando a propriedade for adicionada ao ITributavel | ||
| /// </summary> | ||
| private decimal ObterValorImpostoImportacao() | ||
| { | ||
| // Propriedade ainda não existe no ITributavel | ||
| return 0m; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Obtém o valor do ICMS UF Destino (vIcmsUfDest) | ||
| /// TODO: Implementar quando a propriedade for adicionada ao ITributavel | ||
| /// </summary> | ||
| private decimal ObterValorIcmsUfDest() | ||
| { | ||
| // Propriedade ainda não existe no ITributavel | ||
| return 0m; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Obtém o valor do FCP (Fundo de Combate à Pobreza) | ||
| /// TODO: Melhorar cálculo quando mais informações estiverem disponíveis | ||
| /// </summary> | ||
| private decimal ObterValorFcp() | ||
| { | ||
| // Cálculo simplificado - pode ser melhorado posteriormente | ||
| if (_tributavel.PercentualFcp > 0) | ||
| { | ||
| var baseCalculoFcp = CalculaBaseDeCalculo() - _tributavel.Desconto; | ||
| return baseCalculoFcp * _tributavel.PercentualFcp / 100; | ||
| } | ||
| return 0m; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Obtém o valor do FCP UF Destino (vFcpUfDest) | ||
| /// TODO: Implementar quando a propriedade for adicionada ao ITributavel | ||
| /// </summary> | ||
| private decimal ObterValorFcpUfDest() | ||
| { | ||
| // Propriedade ainda não existe no ITributavel | ||
| return 0m; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Obtém o valor do ICMS Monofásico (vIcmsMono) | ||
| /// TODO: Implementar cálculo quando mais informações estiverem disponíveis | ||
| /// </summary> | ||
| private decimal ObterValorIcmsMonofasico() | ||
| { | ||
| // Cálculo do ICMS Monofásico ainda não implementado | ||
| return 0m; | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Obtém o valor do Imposto Seletivo (vIS) | ||
| /// TODO: Implementar quando a propriedade for adicionada ao ITributavel | ||
| /// O IS é um novo imposto da reforma tributária que incidirá sobre produtos específicos | ||
| /// </summary> | ||
| private decimal ObterValorImpostoSeletivo() | ||
| { | ||
| // Imposto Seletivo ainda não implementado | ||
| return 0m; | ||
| } | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| // 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 | ||
| { | ||
| /// <summary> | ||
| /// Interface para resultado do cálculo da CBS (Contribuição sobre Bens e Serviços) | ||
| /// Reforma Tributária - LC 214/2025 | ||
| /// </summary> | ||
| public interface IResultadoCalculoCbs | ||
| { | ||
| /// <summary> | ||
| /// Base de cálculo da CBS | ||
| /// Fórmula: vProd + vServ + vFrete + vSeg + vOutro + vII - vDesc - vPis - vCofins - vIcms - vIcmsUfDest - vFcp - vFcpUfDest - vIcmsMono - vIssqn + vIS | ||
| /// </summary> | ||
| decimal BaseCalculo { get; } | ||
|
|
||
| /// <summary> | ||
| /// Valor da CBS calculado | ||
| /// </summary> | ||
| decimal Valor { get; } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| // 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 | ||
| { | ||
| /// <summary> | ||
| /// Interface para resultado do cálculo do IBS (Imposto sobre Bens e Serviços) | ||
| /// Reforma Tributária - LC 214/2025 | ||
| /// </summary> | ||
| public interface IResultadoCalculoIbs | ||
| { | ||
| /// <summary> | ||
| /// Base de cálculo do IBS | ||
| /// Fórmula: vProd + vServ + vFrete + vSeg + vOutro + vII - vDesc - vPis - vCofins - vIcms - vIcmsUfDest - vFcp - vFcpUfDest - vIcmsMono - vIssqn + vIS | ||
| /// </summary> | ||
| decimal BaseCalculo { get; } | ||
|
|
||
| /// <summary> | ||
| /// Valor do IBS calculado | ||
| /// </summary> | ||
| decimal Valor { get; } | ||
| } | ||
| } |
40 changes: 40 additions & 0 deletions
40
src/MotorTributarioNet/Impostos/IResultadoCalculoIbsMunicipal.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| // 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 | ||
| { | ||
| /// <summary> | ||
| /// Interface para resultado do cálculo do IBS Municipal (Imposto sobre Bens e Serviços - componente municipal) | ||
| /// Reforma Tributária - LC 214/2025 | ||
| /// </summary> | ||
| public interface IResultadoCalculoIbsMunicipal | ||
| { | ||
| /// <summary> | ||
| /// Base de cálculo do IBS Municipal | ||
| /// Fórmula: vProd + vServ + vFrete + vSeg + vOutro + vII - vDesc - vPis - vCofins - vIcms - vIcmsUfDest - vFcp - vFcpUfDest - vIcmsMono - vIssqn + vIS | ||
| /// </summary> | ||
| decimal BaseCalculo { get; } | ||
|
|
||
| /// <summary> | ||
| /// Valor do IBS Municipal calculado | ||
| /// </summary> | ||
| decimal Valor { get; } | ||
| } | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.