< Summary

Information
Class: FAU.Logica.Calculadores.CalculadorFactory
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/CalculadorFactory.cs
Line coverage
100%
Covered lines: 62
Uncovered lines: 0
Coverable lines: 62
Total lines: 74
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Resolver(...)100%22100%

File(s)

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

#LineLine coverage
 1namespace FAU.Logica.Calculadores;
 2
 3public class CalculadorFactory : ICalculadorFactory
 4{
 5    private readonly Dictionary<string, ICalculadorHaberes> _calculadores;
 6
 257    public CalculadorFactory(
 258        Sit10Calculator sit10,
 259        Sit30Calculator sit30,
 2510        Sit32Calculator sit32,
 2511        Sit50Calculator sit50,
 2512        Sit70Calculator sit70,
 2513        SitCadeteCalculator sitCadete,
 2514        AguinaldoCalculator aguinaldo,
 2515        ReservaCalculator reserva,
 2516        SitSubalternoReincorporadoCalculator subalternoReincorporado)
 17    {
 2518        _calculadores = new Dictionary<string, ICalculadorHaberes>(StringComparer.OrdinalIgnoreCase)
 2519        {
 2520            // ── Personal Superior ──────────────────────────────────────────────────
 2521            // FoxPro: situa_per=10 (y 12/14/16/20) → sum33101
 2522            // SIT01 en actividad; SIT02 disponible; SIT14 no disponible;
 2523            // SIT16 reservista superior; SIT20 sueldo retenido
 2524            // → TODOS usan el mismo calculador (confirmado por SUM33100.PRG)
 2525            [nameof(Sit10Calculator)]   = sit10,
 2526            ["Sit20Calculator"]         = sit10,   // SIT02 disponibilidad → MISMO que SIT01
 2527
 2528            // ── Personal Subalterno ────────────────────────────────────────────────
 2529            // FoxPro: situa_per=30/31/33/34/36 → sum33106
 2530            [nameof(Sit30Calculator)]   = sit30,   // SIT07 en actividad + sueldo retenido (sit36)
 2531
 2532            // ── Escalafón Especialistas (AT / Técnico) ─────────────────────────────
 2533            // FoxPro: situa_per=10 + escal_mil=19 → sum33119 (variante de sum33101)
 2534            // Sit32Calculator maneja Prima Técnica A/B/C (sum33110 del AT)
 2535            [nameof(Sit32Calculator)]   = sit32,
 2536
 2537            // ── Reincorporados ─────────────────────────────────────────────────────
 2538            // FoxPro: situa_per=50 → sum33105 (Superior Reincorporado)
 2539            [nameof(Sit50Calculator)]   = sit50,
 2540
 2541            // FoxPro: situa_per=52 → sum33107 (Subalterno Reincorporado)
 2542            [nameof(SitSubalternoReincorporadoCalculator)] = subalternoReincorporado,
 2543
 2544            // ── Civil ──────────────────────────────────────────────────────────────
 2545            // FoxPro: situa_per=74 → sum33174 (Civil Presupuestado S/Equip.)
 2546            [nameof(Sit70Calculator)]   = sit70,
 2547            ["CivilCalculator"]         = sit70,   // Alias usado en el seed actual de la DB
 2548
 2549            // ── Cadetes / Aspirantes ───────────────────────────────────────────────
 2550            // FoxPro: situa_per=40 → sum33126 / situa_per=42 → sum33127
 2551            [nameof(SitCadeteCalculator)] = sitCadete,
 2552            ["Sit40Calculator"]           = sitCadete,   // Alias usado en el seed actual de la DB
 2553
 2554            // ── Bajas del mes (SAC Aguinaldo) ──────────────────────────────────────
 2555            // FoxPro: SIT14/15/18/20 del sistema legado
 2556            [nameof(AguinaldoCalculator)] = aguinaldo,
 2557
 2558            // ── Reservistas ────────────────────────────────────────────────────────
 2559            // FoxPro: situa_per=32 → sum33108 (Reservista Personal Subalterno)
 2560            // Nota: Reservista Superior (situa_per=16) usa Sit10Calculator (sum33101)
 2561            [nameof(ReservaCalculator)] = reserva,
 2562            ["ReservaCalculator"]       = reserva,
 2563
 2564            // TODO: SIT22 SubsidioCalculator — no existe en FoxPro histórico; pendiente DFC
 2565        };
 2566    }
 67
 68    public ICalculadorHaberes? Resolver(string? nombreCalculador)
 69    {
 2870        if (string.IsNullOrEmpty(nombreCalculador)) return null;
 2471        _calculadores.TryGetValue(nombreCalculador, out var calc);
 2472        return calc;
 73    }
 74}