From 13fd29e103751d99b840f303a1bac400e2051329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Cl=C3=A1udio=20Mandlate?= Date: Wed, 20 Aug 2025 09:44:26 +0200 Subject: [PATCH] =?UTF-8?q?Corrige=20divis=C3=B5es=20por=20zero=20em=20c?= =?UTF-8?q?=C3=A1lculos=20de=20pre=C3=A7os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A lógica de cálculo da propriedade `PercentagemDesconto` foi ajustada para evitar divisão por zero, retornando 0m quando `PrecoTotalComImpostos` é zero. As propriedades `PrecoUnitarioComImpostos` e `PrecoUnitarioSemImpostos` também foram modificadas para retornar 0m quando `Quantidade` é zero, prevenindo assim exceções de divisão por zero. --- src/SAF-T.Mozambique/Models/FicheiroSAFT.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SAF-T.Mozambique/Models/FicheiroSAFT.cs b/src/SAF-T.Mozambique/Models/FicheiroSAFT.cs index 760f928..a79f5b7 100644 --- a/src/SAF-T.Mozambique/Models/FicheiroSAFT.cs +++ b/src/SAF-T.Mozambique/Models/FicheiroSAFT.cs @@ -191,11 +191,11 @@ public record class DocumentoFacturacaoArtigo public decimal Quantidade { get; init; } public decimal PrecoTotalComImpostos { get; init; } public decimal ValorDesconto { get; init; } - public decimal PercentagemDesconto { get => ValorDesconto / PrecoTotalComImpostos * 100; } + public decimal PercentagemDesconto { get => PrecoTotalComImpostos == 0m ? 0m : ValorDesconto / PrecoTotalComImpostos * 100; } public decimal ValorImpostos { get => Artigo.Impostos.Sum(i => i.Valor + (PrecoTotalComImpostos / (1m + i.Percentagem * 0.01m) * i.Percentagem * 0.01m)); } public decimal PrecoTotalSemImpostos { get => PrecoTotalComImpostos - ValorImpostos; } - public decimal PrecoUnitarioComImpostos { get => (PrecoTotalComImpostos + ValorDesconto) / Quantidade; } - public decimal PrecoUnitarioSemImpostos { get => PrecoUnitarioComImpostos - (ValorImpostos / Quantidade); } + public decimal PrecoUnitarioComImpostos { get => Quantidade == 0m ? 0m : (PrecoTotalComImpostos + ValorDesconto) / Quantidade; } + public decimal PrecoUnitarioSemImpostos { get => Quantidade == 0m ? 0m : PrecoUnitarioComImpostos - (ValorImpostos / Quantidade); } }