< Summary

Information
Class: FAU.Logica.Services.DescuentosLegalesCalculator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/DescuentosLegalesCalculator.cs
Line coverage
80%
Covered lines: 8
Uncovered lines: 2
Coverable lines: 10
Total lines: 69
Line coverage: 80%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CalcularMontepio(...)100%11100%
CalcularFonasa(...)100%11100%
CalcularFrl(...)100%210%
CalcularSanidad(...)100%11100%
CalcularTutelaSocial(...)100%11100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/DescuentosLegalesCalculator.cs

#LineLine coverage
 1namespace FAU.Logica.Services;
 2
 3/// <summary>
 4/// Calculadora de descuentos legales (Montepio, FONASA, FRL).
 5/// Métodos puros que reciben la base sobre la que se aplican las tasas y
 6/// retornan el monto correspondiente, redondeado a 2 decimales.
 7/// </summary>
 8public interface IDescuentosLegalesCalculator
 9{
 10    decimal CalcularMontepio(decimal baseSdl, decimal tasaMontepio);
 11    decimal CalcularFonasa(decimal baseSdl, decimal tasaFonasa);
 12    decimal CalcularFrl(decimal baseSdl, decimal tasaFrl);
 13
 14    /// <summary>
 15    /// Sanidad Militar (Art. 94 Ley 18.834): aplica el porcentaje del tramo
 16    /// sobre la base sujeta a montepío.
 17    /// </summary>
 18    decimal CalcularSanidad(decimal baseMontepio, decimal porcentajeTramo);
 19
 20    /// <summary>
 21    /// Servicio Especial Tutela Social (cod. 540): 5.08% de los haberes sujetos a montepío.
 22    /// </summary>
 23    decimal CalcularTutelaSocial(decimal baseMontepio, decimal tasaTutelaSocial);
 24}
 25
 26public class DescuentosLegalesCalculator : IDescuentosLegalesCalculator
 27{
 28    /// <summary>
 29    /// Calcula Montepio aplicando la tasa sobre la base SDL.
 30    /// </summary>
 31    public decimal CalcularMontepio(decimal baseSdl, decimal tasaMontepio)
 32    {
 4233        var monto = baseSdl * tasaMontepio;
 4234        return Math.Round(monto, 2, MidpointRounding.AwayFromZero);
 35    }
 36
 37    /// <summary>
 38    /// Calcula FONASA aplicando la tasa sobre la base SDL.
 39    /// </summary>
 40    public decimal CalcularFonasa(decimal baseSdl, decimal tasaFonasa)
 41    {
 4142        var monto = baseSdl * tasaFonasa;
 4143        return Math.Round(monto, 2, MidpointRounding.AwayFromZero);
 44    }
 45
 46    /// <summary>
 47    /// Calcula FRL aplicando la tasa sobre la base SDL.
 48    /// </summary>
 49    public decimal CalcularFrl(decimal baseSdl, decimal tasaFrl)
 50    {
 051        var monto = baseSdl * tasaFrl;
 052        return Math.Round(monto, 2, MidpointRounding.AwayFromZero);
 53    }
 54
 55    /// <summary>
 56    /// Calcula Sanidad Militar aplicando el porcentaje del tramo sobre la base sujeta a montepío.
 57    /// </summary>
 58    public decimal CalcularSanidad(decimal baseMontepio, decimal porcentajeTramo)
 59    {
 360        var monto = baseMontepio * porcentajeTramo;
 361        return Math.Round(monto, 2, MidpointRounding.AwayFromZero);
 62    }
 63
 64    public decimal CalcularTutelaSocial(decimal baseMontepio, decimal tasaTutelaSocial)
 65    {
 4266        var monto = baseMontepio * tasaTutelaSocial;
 4267        return Math.Round(monto, 2, MidpointRounding.AwayFromZero);
 68    }
 69}