< Summary

Information
Class: FAU.Logica.Calculadores.Sit50Calculator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/Sit50Calculator.cs
Line coverage
79%
Covered lines: 19
Uncovered lines: 5
Coverable lines: 24
Total lines: 52
Line coverage: 79.1%
Branch coverage
68%
Covered branches: 11
Total branches: 16
Branch coverage: 68.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CalcularItemsBase(...)68.75%181679.16%

File(s)

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

#LineLine coverage
 1using FAU.Entidades;
 2using FAU.Logica.DTOs;
 3
 4namespace FAU.Logica.Calculadores;
 5
 6public class Sit50Calculator : CalculadorHaberesBase
 7{
 8    protected override (decimal WPara53, decimal WPara10) CalcularItemsBase(
 9        RelacionLaboral funcionario, InsumosPeriodo insumos, Acumuladores acumuladores, ResultadoCalculo resultado)
 10    {
 11        // Usa el grado de reincorporación si existe, si no el grado actual
 312        var gradoId = funcionario.GradoReincorporacionId ?? funcionario.GradoId;
 13
 314        var rem1 = insumos.ObtenerRemuneracion(gradoId, 1)
 315            ?? throw new InvalidOperationException($"Sin remuneración para grado {gradoId} cod 1");
 16
 17        // Progresivo de retiro: reduce el sueldo base
 318        decimal progresivo = 0m;
 319        if (funcionario.HaberRetiro.HasValue && funcionario.PorcentajeProgresivo.HasValue)
 120            progresivo = funcionario.HaberRetiro.Value * funcionario.PorcentajeProgresivo.Value;
 21
 322        var normalLq = rem1.Monto - progresivo;
 323        AgregarItem(1, normalLq, insumos, acumuladores, resultado);
 324        var wpara53 = normalLq;
 25
 26        // cod 2 — compensación especial (opcional para reincorporados)
 327        var rem2 = insumos.ObtenerRemuneracion(gradoId, 2);
 328        if (rem2 is not null)
 29        {
 230            AgregarItem(2, rem2.Monto, insumos, acumuladores, resultado);
 231            wpara53 += rem2.Monto;
 32        }
 33
 34        // cod 3 — permanencia
 335        var anios = CalcularAniosServicio(funcionario, insumos);
 336        var permanencia = insumos.ObtenerPermanencia(funcionario.EscalafonId, anios);
 337        if (permanencia is not null)
 38        {
 039            var montoPermanencia = permanencia.Porcentaje.HasValue
 040                ? rem1.Monto * permanencia.Porcentaje.Value
 041                : permanencia.MontoFijo ?? 0m;
 042            if (montoPermanencia > 0)
 043                AgregarItem(3, montoPermanencia, insumos, acumuladores, resultado);
 44        }
 45
 46        // cod 25 — SDL 5.3% sobre WPara53
 347        var sdl = wpara53 * 0.053m;
 348        AgregarItem(25, sdl, insumos, acumuladores, resultado);
 49
 350        return (wpara53, wpara53 + sdl);
 51    }
 52}