< Summary

Information
Class: FAU.Logica.Calculadores.Sit32Calculator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/Sit32Calculator.cs
Line coverage
78%
Covered lines: 22
Uncovered lines: 6
Coverable lines: 28
Total lines: 61
Line coverage: 78.5%
Branch coverage
61%
Covered branches: 11
Total branches: 18
Branch coverage: 61.1%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
CalcularItemsBase(...)61.11%211878.57%

File(s)

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

#LineLine coverage
 1using FAU.Entidades;
 2using FAU.Logica.DTOs;
 3
 4namespace FAU.Logica.Calculadores;
 5
 6public class Sit32Calculator : CalculadorHaberesBase
 7{
 8    protected override (decimal WPara53, decimal WPara10) CalcularItemsBase(
 9        RelacionLaboral funcionario, InsumosPeriodo insumos, Acumuladores acumuladores, ResultadoCalculo resultado)
 10    {
 11        // 011.000 — Sueldo Básico (obligatorio)
 312        var rem1 = insumos.ObtenerRemuneracion(funcionario.GradoId, 11000)
 313            ?? throw new InvalidOperationException($"Sin remuneración para grado {funcionario.GradoId} cod 11000");
 314        AgregarItem(11000, rem1.Monto, insumos, acumuladores, resultado);
 315        var wpara53 = rem1.Monto;
 16
 17        // 042.012 — Compensación al Cargo (obligatorio)
 318        var rem2 = insumos.ObtenerRemuneracion(funcionario.GradoId, 42012)
 319            ?? throw new InvalidOperationException($"Sin remuneración para grado {funcionario.GradoId} cod 42012");
 320        AgregarItem(42012, rem2.Monto, insumos, acumuladores, resultado);
 321        wpara53 += rem2.Monto;
 22
 23        // 041.003 — Permanencia en el Grado (tabla AT por escalafón)
 324        var anios = CalcularAniosServicio(funcionario, insumos);
 325        var permanencia = insumos.ObtenerPermanencia(funcionario.EscalafonId, anios);
 326        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(41003, montoPermanencia, insumos, acumuladores, resultado);
 33        }
 34
 35        // TODO: 042.092 — Prima Técnica A/B/C — confirmar OG con DFC (temporalmente cod 7)
 336        if (!string.IsNullOrEmpty(funcionario.PrimaTecnica) && funcionario.PrimaTecnica != "VACIO")
 37        {
 238            var rem7 = insumos.ObtenerRemuneracion(funcionario.GradoId, 7);
 239            if (rem7 is not null)
 40            {
 241                AgregarItem(7, rem7.Monto, insumos, acumuladores, resultado);
 242                wpara53 += rem7.Monto;
 43            }
 44        }
 45        else
 46        {
 147            resultado.Incidencias.Add("Funcionario AT sin clasificación de Prima Técnica");
 48        }
 49
 50        // TODO: confirmar OG de "alimentación" (cod 5 interno) con DFC
 351        var rem5 = insumos.ObtenerRemuneracion(funcionario.GradoId, 5);
 352        if (rem5 is not null)
 053            AgregarItem(5, rem5.Monto, insumos, acumuladores, resultado);
 54
 55        // 048.012 — Compensación 5,3% sobre WPara53
 356        var sdl = wpara53 * 0.053m;
 357        AgregarItem(48012, sdl, insumos, acumuladores, resultado);
 58
 359        return (wpara53, wpara53 + sdl);
 60    }
 61}