< 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
66%
Covered branches: 12
Total branches: 18
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_PorcentajeDedicacionIntegral()100%11100%
CalcularItemsBase(...)66.66%211878.26%

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    // Superior Reincorporado: mismo porcentaje que Personal Superior activo
 39    protected override decimal PorcentajeDedicacionIntegral => 0.50m;
 10
 11    protected override decimal CalcularItemsBase(
 12        RelacionLaboral funcionario, InsumosPeriodo insumos, Acumuladores acumuladores, ResultadoCalculo resultado)
 13    {
 14        // Usa el grado de reincorporación si existe, si no el grado actual
 315        var gradoId = funcionario.GradoReincorporacionId ?? funcionario.GradoId;
 16
 317        var rem1 = insumos.ObtenerRemuneracion(gradoId, 11000)
 318            ?? throw new InvalidOperationException($"Sin remuneración para grado {gradoId} cod 11000");
 19
 20        // Progresivo de retiro: reduce el sueldo base
 321        decimal progresivo = 0m;
 322        if (funcionario.HaberRetiro.HasValue && funcionario.PorcentajeProgresivo.HasValue)
 123            progresivo = funcionario.HaberRetiro.Value * funcionario.PorcentajeProgresivo.Value;
 24
 325        var normalLq = rem1.Monto - progresivo;
 326        AgregarItem(11000, normalLq, insumos, acumuladores, resultado);
 327        var wpara53 = normalLq;
 28
 29        // 042.012 — Compensación al Cargo (opcional para reincorporados)
 330        var rem2 = insumos.ObtenerRemuneracion(gradoId, 42012);
 331        if (rem2 is not null)
 32        {
 233            AgregarItem(42012, rem2.Monto, insumos, acumuladores, resultado);
 234            wpara53 += rem2.Monto;
 35        }
 36
 37        // 041.003 — Permanencia en el Grado
 338        var meses = CalcularMesesPermanencia(funcionario, insumos);
 339        var riesgoVuelo = funcionario.RiesgoVuelo.HasValue && funcionario.RiesgoVuelo.Value > 0;
 340        var permanencia = insumos.ObtenerPermanencia(funcionario.EscalafonId, gradoId, meses, riesgoVuelo);
 341        if (permanencia is not null)
 42        {
 043            var montoPermanencia = permanencia.Porcentaje.HasValue
 044                ? rem1.Monto * permanencia.Porcentaje.Value
 045                : permanencia.MontoFijo ?? 0m;
 046            if (montoPermanencia > 0)
 047                AgregarItem(41003, montoPermanencia, insumos, acumuladores, resultado);
 48        }
 49
 350        return wpara53;
 51    }
 52}