< Summary

Information
Class: FAU.Logica.Calculadores.Sit70Calculator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/Sit70Calculator.cs
Line coverage
72%
Covered lines: 16
Uncovered lines: 6
Coverable lines: 22
Total lines: 49
Line coverage: 72.7%
Branch coverage
41%
Covered branches: 5
Total branches: 12
Branch coverage: 41.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CalcularItemsBase(...)41.66%151272.72%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/Sit70Calculator.cs

#LineLine coverage
 1using FAU.Entidades;
 2using FAU.Logica.DTOs;
 3
 4namespace FAU.Logica.Calculadores;
 5
 6public class Sit70Calculator : CalculadorHaberesBase
 7{
 8    protected override (decimal WPara53, decimal WPara10) CalcularItemsBase(
 9        RelacionLaboral funcionario, InsumosPeriodo insumos, Acumuladores acumuladores, ResultadoCalculo resultado)
 10    {
 11        // cod 1 — sueldo base (obligatorio)
 212        var rem1 = insumos.ObtenerRemuneracion(funcionario.GradoId, 1)
 213            ?? throw new InvalidOperationException($"Sin remuneración para grado {funcionario.GradoId} cod 1");
 214        AgregarItem(1, rem1.Monto, insumos, acumuladores, resultado);
 215        var wpara53 = rem1.Monto;
 16
 17        // cod 2 — compensación especial (obligatorio)
 218        var rem2 = insumos.ObtenerRemuneracion(funcionario.GradoId, 2)
 219            ?? throw new InvalidOperationException($"Sin remuneración para grado {funcionario.GradoId} cod 2");
 220        AgregarItem(2, rem2.Monto, insumos, acumuladores, resultado);
 221        wpara53 += rem2.Monto;
 22
 23        // cod 3 — permanencia
 224        var anios = CalcularAniosServicio(funcionario, insumos);
 225        var permanencia = insumos.ObtenerPermanencia(funcionario.EscalafonId, anios);
 226        if (permanencia is not null)
 27        {
 028            var montoPermanencia = permanencia.Porcentaje.HasValue
 029                ? rem1.Monto * permanencia.Porcentaje.Value
 030                : permanencia.MontoFijo ?? 0m;
 031            if (montoPermanencia > 0)
 032                AgregarItem(3, montoPermanencia, insumos, acumuladores, resultado);
 33        }
 34
 35        // cod 5 — alimentación (opcional)
 236        var rem5 = insumos.ObtenerRemuneracion(funcionario.GradoId, 5);
 237        if (rem5 is not null)
 038            AgregarItem(5, rem5.Monto, insumos, acumuladores, resultado);
 39
 40        // Sin cod 4 ni cod 6 (personal civil)
 41        // Sin verificación de ascenso automático
 42
 43        // cod 25 — SDL 5.3% sobre WPara53
 244        var sdl = wpara53 * 0.053m;
 245        AgregarItem(25, sdl, insumos, acumuladores, resultado);
 46
 247        return (wpara53, wpara53 + sdl);
 48    }
 49}