< Summary

Information
Class: FAU.Logica.Services.AguinaldoCalculator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/AguinaldoCalculator.cs
Line coverage
100%
Covered lines: 35
Uncovered lines: 0
Coverable lines: 35
Total lines: 61
Line coverage: 100%
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
Calcular(...)100%11100%

File(s)

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

#LineLine coverage
 1using FAU.Logica.DTOs;
 2
 3namespace FAU.Logica.Services;
 4
 5public class AguinaldoCalculator
 6{
 7    public AguinaldoSemestralDto Calcular(
 8        long personaId,
 9        string cedula,
 10        string nombreCompleto,
 11        short anio,
 12        short semestre,
 13        decimal totalHaberesGravadosSemestre,
 14        short mesesTrabajados,
 15        List<FranjaIrpfCalculoDto> franjasCalculo,
 16        ParametrosIrpfDto parametrosIrpf,
 17        decimal tasaMontepio,
 18        decimal tasaSanidad)
 19    {
 120        var nominal = Math.Round(totalHaberesGravadosSemestre / 12m, 2);
 21
 122        var irpfRequest = new CalcularIrpfRequest
 123        {
 124            IngresoGravados = nominal,
 125            Montepio = 0,
 126            Fonasa = 0,
 127            Frl = 0,
 128            Deducciones = new List<DeduccionDto>(),
 129            Parametros = parametrosIrpf,
 130            Franjas = franjasCalculo
 131        };
 132        var irpf = Math.Round(new IrpfCalculator().Calcular(irpfRequest).TotalIrpf, 2);
 33
 134        var montepio = Math.Round(nominal * tasaMontepio, 2);
 135        var sanidad = Math.Round(nominal * tasaSanidad, 2);
 136        var totalDescuentos = Math.Round(irpf + montepio + sanidad, 2);
 37
 38        // liquido es el valor exacto redondeado al entero más cercano
 139        var liquidoExacto = nominal - totalDescuentos;
 140        var liquido = Math.Round(liquidoExacto, 0);
 141        var redondeo = liquido - liquidoExacto;
 42
 143        return new AguinaldoSemestralDto
 144        {
 145            PersonaId = personaId,
 146            Cedula = cedula,
 147            NombreCompleto = nombreCompleto,
 148            Anio = anio,
 149            Semestre = semestre,
 150            TotalHaberesGravadosSemestre = totalHaberesGravadosSemestre,
 151            MesesTrabajados = mesesTrabajados,
 152            Nominal = nominal,
 153            Irpf = irpf,
 154            Montepio = montepio,
 155            Sanidad = sanidad,
 156            TotalDescuentos = totalDescuentos,
 157            Liquido = liquido,
 158            Redondeo = redondeo
 159        };
 60    }
 61}