< 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
68%
Covered lines: 17
Uncovered lines: 8
Coverable lines: 25
Total lines: 57
Line coverage: 68%
Branch coverage
43%
Covered branches: 7
Total branches: 16
Branch coverage: 43.7%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
get_CodigosExcluidosDecreto()100%11100%
CalcularDedicacionIntegral(...)100%11100%
CalcularItemsBase(...)43.75%281663.63%

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    // CompCargo (42012) manejado en CalcularItemsBase con wpara53 += rem2.Monto.
 19    private static readonly IReadOnlySet<int> _excluidos = new HashSet<int> { Codigos.CompCargo };
 4810    protected override IReadOnlySet<int> CodigosExcluidosDecreto => _excluidos;
 11
 12    // Personal Civil NO recibe DI (043.004): "Le corresponde al personal Militar Combatiente" — PDF
 13    protected override void CalcularDedicacionIntegral(
 14        decimal wPara10, RelacionLaboral funcionario,
 215        InsumosPeriodo insumos, Acumuladores acumuladores, ResultadoCalculo resultado) { }
 16
 17    protected override decimal CalcularItemsBase(
 18        RelacionLaboral funcionario, InsumosPeriodo insumos, Acumuladores acumuladores, ResultadoCalculo resultado)
 19    {
 20        // 011.000 — Sueldo Básico (obligatorio)
 221        var rem1 = insumos.ObtenerRemuneracion(funcionario.GradoId, 11000)
 222            ?? throw new InvalidOperationException($"Sin remuneración para grado {funcionario.GradoId} cod 11000");
 223        AgregarItem(11000, rem1.Monto, insumos, acumuladores, resultado);
 224        var wpara53 = rem1.Monto;
 25
 26        // 042.012 — Compensación al Cargo (obligatorio)
 227        var rem2 = insumos.ObtenerRemuneracion(funcionario.GradoId, 42012)
 228            ?? throw new InvalidOperationException($"Sin remuneración para grado {funcionario.GradoId} cod 42012");
 229        AgregarItem(42012, rem2.Monto, insumos, acumuladores, resultado);
 230        wpara53 += rem2.Monto;
 31
 32        // 041.003 — Permanencia en el Grado
 233        var meses = CalcularMesesPermanencia(funcionario, insumos);
 234        var riesgoVuelo = funcionario.RiesgoVuelo.HasValue && funcionario.RiesgoVuelo.Value > 0;
 235        var permanencia = insumos.ObtenerPermanencia(funcionario.EscalafonId, funcionario.GradoId, meses, riesgoVuelo);
 236        if (permanencia is not null)
 37        {
 038            var montoPermanencia = permanencia.Porcentaje.HasValue
 039                ? rem1.Monto * permanencia.Porcentaje.Value
 040                : permanencia.MontoFijo ?? 0m;
 041            if (montoPermanencia > 0)
 042                AgregarItem(41003, montoPermanencia, insumos, acumuladores, resultado);
 43        }
 44
 45        // 069.008 — Viático PS c/aportes: solo si CAT_VIAT > 0
 246        if (funcionario.CategoriaViatico > 0)
 47        {
 048            var rem5 = insumos.ObtenerRemuneracion(funcionario.GradoId, 69008);
 049            if (rem5 is not null)
 050                AgregarItem(69008, rem5.Monto, insumos, acumuladores, resultado);
 51        }
 52
 53        // Sin 015.000 ni 042.022 (personal civil)
 54
 255        return wpara53;
 56    }
 57}