< 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
 247    public CalculadorFactory(
 248        Sit10Calculator sit10,
 249        Sit30Calculator sit30,
 2410        Sit32Calculator sit32,
 2411        Sit50Calculator sit50,
 2412        Sit70Calculator sit70,
 2413        SitCadeteCalculator sitCadete,
 2414        AguinaldoCalculator aguinaldo,
 2415        ReservaCalculator reserva,
 2416        SitSubalternoReincorporadoCalculator subalternoReincorporado)
 17    {
 2418        _calculadores = new Dictionary<string, ICalculadorHaberes>(StringComparer.OrdinalIgnoreCase)
 2419        {
 2420            // ── Personal Superior ──────────────────────────────────────────────────
 2421            // FoxPro: situa_per=10 (y 12/14/16/20) → sum33101
 2422            // SIT01 en actividad; SIT02 disponible; SIT14 no disponible;
 2423            // SIT16 reservista superior; SIT20 sueldo retenido
 2424            // → TODOS usan el mismo calculador (confirmado por SUM33100.PRG)
 2425            [nameof(Sit10Calculator)]   = sit10,
 2426            ["Sit20Calculator"]         = sit10,   // SIT02 disponibilidad → MISMO que SIT01
 2427
 2428            // ── Personal Subalterno ────────────────────────────────────────────────
 2429            // FoxPro: situa_per=30/31/33/34/36 → sum33106
 2430            [nameof(Sit30Calculator)]   = sit30,   // SIT07 en actividad + sueldo retenido (sit36)
 2431
 2432            // ── Escalafón Especialistas (AT / Técnico) ─────────────────────────────
 2433            // FoxPro: situa_per=10 + escal_mil=19 → sum33119 (variante de sum33101)
 2434            // Sit32Calculator maneja Prima Técnica A/B/C (sum33110 del AT)
 2435            [nameof(Sit32Calculator)]   = sit32,
 2436
 2437            // ── Reincorporados ─────────────────────────────────────────────────────
 2438            // FoxPro: situa_per=50 → sum33105 (Superior Reincorporado)
 2439            [nameof(Sit50Calculator)]   = sit50,
 2440
 2441            // FoxPro: situa_per=52 → sum33107 (Subalterno Reincorporado)
 2442            [nameof(SitSubalternoReincorporadoCalculator)] = subalternoReincorporado,
 2443
 2444            // ── Civil ──────────────────────────────────────────────────────────────
 2445            // FoxPro: situa_per=74 → sum33174 (Civil Presupuestado S/Equip.)
 2446            [nameof(Sit70Calculator)]   = sit70,
 2447            ["CivilCalculator"]         = sit70,   // Alias usado en el seed actual de la DB
 2448
 2449            // ── Cadetes / Aspirantes ───────────────────────────────────────────────
 2450            // FoxPro: situa_per=40 → sum33126 / situa_per=42 → sum33127
 2451            [nameof(SitCadeteCalculator)] = sitCadete,
 2452            ["Sit40Calculator"]           = sitCadete,   // Alias usado en el seed actual de la DB
 2453
 2454            // ── Bajas del mes (SAC Aguinaldo) ──────────────────────────────────────
 2455            // FoxPro: SIT14/15/18/20 del sistema legado
 2456            [nameof(AguinaldoCalculator)] = aguinaldo,
 2457
 2458            // ── Reservistas ────────────────────────────────────────────────────────
 2459            // FoxPro: situa_per=32 → sum33108 (Reservista Personal Subalterno)
 2460            // Nota: Reservista Superior (situa_per=16) usa Sit10Calculator (sum33101)
 2461            [nameof(ReservaCalculator)] = reserva,
 2462            ["ReservaCalculator"]       = reserva,
 2463
 2464            // TODO: SIT22 SubsidioCalculator — no existe en FoxPro histórico; pendiente DFC
 2465        };
 2466    }
 67
 68    public ICalculadorHaberes? Resolver(string? nombreCalculador)
 69    {
 2770        if (string.IsNullOrEmpty(nombreCalculador)) return null;
 2371        _calculadores.TryGetValue(nombreCalculador, out var calc);
 2372        return calc;
 73    }
 74}