< Summary

Information
Class: FAU.Logica.Services.ProcesadorBeneficiosService
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/ProcesadorBeneficiosService.cs
Line coverage
82%
Covered lines: 205
Uncovered lines: 42
Coverable lines: 247
Total lines: 483
Line coverage: 82.9%
Branch coverage
70%
Covered branches: 167
Total branches: 238
Branch coverage: 70.1%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ProcesarBeneficios(...)93.75%161693.1%
CalcularAsigFamiliar(...)74.07%555492%
CalcularHogar(...)50%762048.14%
CalcularPsf(...)63.63%222291.66%
CalcularPrimaNacimiento(...)50%242079.16%
CalcularPrimaMatrimonio(...)55%222083.33%
CalcularPrimaTraslado(...)69.23%262696.42%
CalcularPrimaNacimientoMatrimonioCombo(...)0%4260%
RegistrarRetroactividadSiCorresponde(...)100%44100%
BuscarCatalogo(...)100%11100%
DeterminarCategoria(...)90%505095.65%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/ProcesadorBeneficiosService.cs

#LineLine coverage
 1using FAU.Entidades;
 2using FAU.Logica.DTOs;
 3
 4namespace FAU.Logica.Services;
 5
 6public class ProcesadorBeneficiosService : IProcesadorBeneficiosService
 7{
 8    private enum CategoriaBeneficio
 9    {
 10        AsignacionFamiliar,
 11        HogarConstituido,
 12        PrimaSolidariaFamiliar,
 13        PrimaNacimiento,
 14        PrimaMatrimonio,
 15        PrimaNacimientoMatrimonioCombo,
 16        PrimaTraslado,
 17        Desconocido
 18    }
 19
 20    public ResultadoBeneficios ProcesarBeneficios(
 21        long personaId,
 22        IReadOnlyList<BeneficioSocial> beneficios,
 23        ParametroPeriodo parametros,
 24        IReadOnlyList<CatalogoItem> catalogo,
 25        IEnumerable<LiquidacionItem> itemsHistoricos,
 26        DateOnly primerDiaPeriodo,
 27        IReadOnlyDictionary<long, IReadOnlyList<BeneficioSocialBeneficiario>>? beneficiariosPorBeneficio = null,
 28        IReadOnlyDictionary<string, InstructivoAsigFamiliar>? instructivoAsigFamiliar = null,
 29        IReadOnlyDictionary<int, InstructivoPsf>? instructivoPsf = null,
 30        IReadOnlyList<TablaHogarConstituido>? tablaPorHogar = null,
 31        decimal? sueldoBaseParaTraslado = null)
 32    {
 3233        var resultado = new ResultadoBeneficios();
 3234        var historicos = itemsHistoricos.ToList();
 35
 13236        foreach (var beneficio in beneficios)
 37        {
 3438            if (beneficio.TipoBeneficio is null)
 39                continue;
 40
 3441            var categoria = DeterminarCategoria(beneficio.TipoBeneficio);
 42
 43            switch (categoria)
 44            {
 45                case CategoriaBeneficio.AsignacionFamiliar:
 846                    var hijos = beneficiariosPorBeneficio is not null &&
 847                                beneficiariosPorBeneficio.TryGetValue(beneficio.Id, out var lista)
 848                        ? lista
 849                        : null;
 850                    CalcularAsigFamiliar(beneficio, catalogo, resultado, hijos,
 851                        primerDiaPeriodo, instructivoAsigFamiliar);
 852                    break;
 53                case CategoriaBeneficio.HogarConstituido:
 554                    CalcularHogar(beneficio, catalogo, resultado, tablaPorHogar);
 555                    break;
 56                case CategoriaBeneficio.PrimaSolidariaFamiliar:
 957                    CalcularPsf(beneficio, catalogo, resultado, instructivoPsf);
 958                    break;
 59                case CategoriaBeneficio.PrimaNacimiento:
 360                    CalcularPrimaNacimiento(beneficio, catalogo, historicos, resultado);
 361                    break;
 62                case CategoriaBeneficio.PrimaMatrimonio:
 363                    CalcularPrimaMatrimonio(beneficio, catalogo, historicos, resultado);
 364                    break;
 65                case CategoriaBeneficio.PrimaNacimientoMatrimonioCombo:
 066                    CalcularPrimaNacimientoMatrimonioCombo(beneficio, catalogo, historicos, resultado);
 067                    break;
 68                case CategoriaBeneficio.PrimaTraslado:
 569                    CalcularPrimaTraslado(beneficio, catalogo, historicos, resultado, sueldoBaseParaTraslado);
 570                    break;
 71                default:
 172                    resultado.Incidencias.Add(new IncidenciaBeneficio(
 173                        TipoIncidenciaCalculo.TipoBeneficioDesconocido,
 174                        $"Tipo de beneficio no reconocido: {beneficio.TipoBeneficio.Codigo} (id={beneficio.TipoBeneficio
 75                    break;
 76            }
 77
 3478            RegistrarRetroactividadSiCorresponde(beneficio, primerDiaPeriodo, resultado);
 79        }
 80
 3281        return resultado;
 82    }
 83
 84    // ── Asignación Familiar ───────────────────────────────────────────────────
 85
 86    private static void CalcularAsigFamiliar(
 87        BeneficioSocial beneficio,
 88        IReadOnlyList<CatalogoItem> catalogo,
 89        ResultadoBeneficios resultado,
 90        IReadOnlyList<BeneficioSocialBeneficiario>? hijos,
 91        DateOnly primerDiaPeriodo,
 92        IReadOnlyDictionary<string, InstructivoAsigFamiliar>? instructivo)
 93    {
 94        // Obtener importe franja 8% del instructivo
 95        decimal valorPorHijo;
 896        if (instructivo is not null && instructivo.TryGetValue(TipoFranjaAsigFamiliar.Franja8, out var franja8))
 97        {
 498            valorPorHijo = franja8.Importe;
 99        }
 4100        else if (instructivo is not null)
 101        {
 0102            resultado.Incidencias.Add(new IncidenciaBeneficio(
 0103                TipoIncidenciaCalculo.InstructivoNoConfigurado,
 0104                "Instructivo AsigFamiliar no configurado para el período"));
 0105            return;
 106        }
 107        else
 108        {
 109            // Fallback a MontoReferencia cuando no hay instructivo disponible
 4110            valorPorHijo = beneficio.TipoBeneficio?.MontoReferencia ?? 0m;
 111        }
 112
 8113        if (hijos is { Count: > 0 })
 114        {
 4115            var fechaLimite18 = primerDiaPeriodo.ToDateTime(TimeOnly.MinValue);
 116
 4117            var hijosSinDiscapacidad = hijos
 6118                .Where(h => !h.Discapacidad && h.FechaNacimiento.AddYears(18) > fechaLimite18)
 4119                .ToList();
 10120            var hijosConDiscapacidad = hijos.Where(h => h.Discapacidad).ToList();
 121
 4122            if (hijosSinDiscapacidad.Count > 0 && valorPorHijo > 0m)
 123            {
 2124                var itemAsig = BuscarCatalogo(catalogo, 300);
 2125                resultado.Items.Add(new ItemBeneficioCalculado(
 2126                    CodigoConcepto: 300,
 2127                    NombreConcepto: itemAsig?.Nombre ?? "ASIGNACION FAMILIAR",
 2128                    Importe: hijosSinDiscapacidad.Count * valorPorHijo,
 2129                    ClasificacionSiif: "BenSocGrab",
 2130                    RubroContable: itemAsig?.ClasificacionSiif ?? "074.000",
 2131                    ExentoIrpf: true));
 132            }
 133
 4134            if (hijosConDiscapacidad.Count > 0)
 135            {
 136                decimal valorDiscapacidad;
 3137                if (instructivo is not null && instructivo.TryGetValue(TipoFranjaAsigFamiliar.Discapacidad, out var fran
 138                {
 2139                    valorDiscapacidad = franjaDisc.Importe;
 140                }
 141                else
 142                {
 1143                    resultado.Incidencias.Add(new IncidenciaBeneficio(
 1144                        TipoIncidenciaCalculo.InstructivoNoConfigurado,
 1145                        "Instructivo AsigFamiliar (discapacidad) no configurado para el período"));
 1146                    return;
 147                }
 148
 2149                if (valorDiscapacidad > 0m)
 150                {
 2151                    var itemDisc = BuscarCatalogo(catalogo, 360);
 2152                    resultado.Items.Add(new ItemBeneficioCalculado(
 2153                        CodigoConcepto: 360,
 2154                        NombreConcepto: itemDisc?.Nombre ?? "ASIGNACION POR DISCAPACIDAD",
 2155                        Importe: hijosConDiscapacidad.Count * valorDiscapacidad,
 2156                        ClasificacionSiif: "BenSocGrab",
 2157                        RubroContable: itemDisc?.ClasificacionSiif ?? "074.001",
 2158                        ExentoIrpf: true));
 159                }
 160            }
 161        }
 162        else
 163        {
 164            // Fallback: sin hijos registrados, usar beneficio.Cantidad
 4165            if (beneficio.Cantidad <= 0 || valorPorHijo == 0m)
 2166                return;
 167
 2168            var item = BuscarCatalogo(catalogo, 300);
 2169            resultado.Items.Add(new ItemBeneficioCalculado(
 2170                CodigoConcepto: 300,
 2171                NombreConcepto: item?.Nombre ?? "ASIGNACION FAMILIAR",
 2172                Importe: beneficio.Cantidad * valorPorHijo,
 2173                ClasificacionSiif: "BenSocGrab",
 2174                RubroContable: item?.ClasificacionSiif ?? "074.000",
 2175                ExentoIrpf: true));
 176        }
 3177    }
 178
 179    // ── Hogar Constituido ─────────────────────────────────────────────────────
 180
 181    private static void CalcularHogar(
 182        BeneficioSocial beneficio,
 183        IReadOnlyList<CatalogoItem> catalogo,
 184        ResultadoBeneficios resultado,
 185        IReadOnlyList<TablaHogarConstituido>? tablaPorHogar)
 186    {
 187        decimal monto;
 188
 5189        if (tablaPorHogar is not null && tablaPorHogar.Count > 0)
 190        {
 191            // Usar tramo residual (hasta_haberes = NULL) como fallback hasta que haya ingreso acumulado
 0192            var tramoResidual = tablaPorHogar.FirstOrDefault(t => t.HastaHaberes is null);
 0193            if (tramoResidual is null)
 194            {
 0195                resultado.Incidencias.Add(new IncidenciaBeneficio(
 0196                    TipoIncidenciaCalculo.InstructivoNoConfigurado,
 0197                    "Tabla Hogar Constituido no tiene tramo residual (sin tope)"));
 0198                return;
 199            }
 0200            monto = tramoResidual.Importe;
 0201            resultado.Incidencias.Add(new IncidenciaBeneficio(
 0202                TipoIncidenciaCalculo.CalculoSimplificado,
 0203                "Hogar Constituido calculado con tramo residual — el tramo real requiere ingreso acumulado del período")
 204        }
 5205        else if (tablaPorHogar is not null)
 206        {
 0207            resultado.Incidencias.Add(new IncidenciaBeneficio(
 0208                TipoIncidenciaCalculo.InstructivoNoConfigurado,
 0209                "Tabla Hogar Constituido no configurada para el período"));
 0210            return;
 211        }
 212        else
 213        {
 214            // Fallback a MontoReferencia cuando no hay tabla disponible
 5215            monto = beneficio.TipoBeneficio?.MontoReferencia ?? 0m;
 216        }
 217
 5218        if (monto == 0m)
 1219            return;
 220
 4221        var item = BuscarCatalogo(catalogo, 320);
 4222        resultado.Items.Add(new ItemBeneficioCalculado(
 4223            CodigoConcepto: 320,
 4224            NombreConcepto: item?.Nombre ?? "HOGAR CONSTITUIDO",
 4225            Importe: monto,
 4226            ClasificacionSiif: "BenSocGrab",
 4227            RubroContable: item?.ClasificacionSiif ?? "072.000"));
 4228    }
 229
 230    // ── Prima Solidaria Familiar ───────────────────────────────────────────────
 231
 232    private static void CalcularPsf(
 233        BeneficioSocial beneficio,
 234        IReadOnlyList<CatalogoItem> catalogo,
 235        ResultadoBeneficios resultado,
 236        IReadOnlyDictionary<int, InstructivoPsf>? instructivoPsf)
 237    {
 9238        var categoria = (int)beneficio.Cantidad;
 239
 9240        if (categoria < 1 || categoria > 5)
 241        {
 2242            resultado.Incidencias.Add(new IncidenciaBeneficio(
 2243                TipoIncidenciaCalculo.SubtipoPsfDesconocido,
 2244                $"Categoría PSF no reconocida: Cantidad={beneficio.Cantidad} (debe ser 1-5)"));
 2245            return;
 246        }
 247
 248        decimal monto;
 7249        if (instructivoPsf is not null && instructivoPsf.TryGetValue(categoria, out var registro))
 250        {
 6251            monto = registro.Importe;
 252        }
 1253        else if (instructivoPsf is not null)
 254        {
 1255            resultado.Incidencias.Add(new IncidenciaBeneficio(
 1256                TipoIncidenciaCalculo.InstructivoNoConfigurado,
 1257                $"Instructivo PSF categoría {categoria} no configurado para el período"));
 1258            return;
 259        }
 260        else
 261        {
 262            // Fallback a MontoReferencia × Cantidad cuando no hay instructivo
 0263            monto = categoria * (beneficio.TipoBeneficio?.MontoReferencia ?? 0m);
 264        }
 265
 6266        if (monto == 0m)
 0267            return;
 268
 6269        var item = BuscarCatalogo(catalogo, 330);
 6270        resultado.Items.Add(new ItemBeneficioCalculado(
 6271            CodigoConcepto: 330,
 6272            NombreConcepto: item?.Nombre ?? "PRIMA SOLIDARIA FAMILIAR",
 6273            Importe: monto,
 6274            ClasificacionSiif: "BenSocGrab",
 6275            RubroContable: item?.ClasificacionSiif ?? "079.001"));
 6276    }
 277
 278    // ── Prima Nacimiento ──────────────────────────────────────────────────────
 279
 280    private static void CalcularPrimaNacimiento(
 281        BeneficioSocial beneficio,
 282        IReadOnlyList<CatalogoItem> catalogo,
 283        List<LiquidacionItem> historicos,
 284        ResultadoBeneficios resultado)
 285    {
 286        // Deduplicar por ClaveEvento (fecha de nacimiento) para permitir primas de hijos diferentes
 3287        var claveNacimiento = beneficio.ClaveEvento;
 3288        var nacimientoPagado = claveNacimiento is not null
 0289            ? historicos.Any(h => h.CodigoConcepto == "340" && h.ClaveEvento == claveNacimiento)
 4290            : historicos.Any(h => h.CodigoConcepto == "340");
 291
 3292        if (nacimientoPagado)
 293        {
 1294            resultado.Incidencias.Add(new IncidenciaBeneficio(
 1295                TipoIncidenciaCalculo.BeneficioYaPagado,
 1296                $"Prima Nacimiento ya pagada{(claveNacimiento is not null ? $" (nacimiento {claveNacimiento})" : "")}"))
 1297            return;
 298        }
 299
 2300        var monto = beneficio.TipoBeneficio?.MontoReferencia ?? 0m;
 2301        if (monto == 0m)
 302        {
 0303            resultado.Incidencias.Add(new IncidenciaBeneficio(
 0304                TipoIncidenciaCalculo.InstructivoNoConfigurado,
 0305                "Monto de Prima Nacimiento no configurado en catálogo de tipos de beneficio"));
 0306            return;
 307        }
 308
 2309        var item = BuscarCatalogo(catalogo, 340);
 2310        resultado.Items.Add(new ItemBeneficioCalculado(
 2311            CodigoConcepto: 340,
 2312            NombreConcepto: item?.Nombre ?? "PRIMA POR NACIMIENTO",
 2313            Importe: monto,
 2314            ClasificacionSiif: "BenSocNoGr",
 2315            RubroContable: item?.ClasificacionSiif ?? "073.000",
 2316            ClaveEvento: beneficio.ClaveEvento));
 2317    }
 318
 319    // ── Prima Matrimonio ──────────────────────────────────────────────────────
 320
 321    private static void CalcularPrimaMatrimonio(
 322        BeneficioSocial beneficio,
 323        IReadOnlyList<CatalogoItem> catalogo,
 324        List<LiquidacionItem> historicos,
 325        ResultadoBeneficios resultado)
 326    {
 3327        var claveEvento = beneficio.ClaveEvento;
 3328        var yaProcessada = claveEvento is not null
 1329            ? historicos.Any(h => h.CodigoConcepto == "350" && h.ClaveEvento == claveEvento)
 3330            : historicos.Any(h => h.CodigoConcepto == "350");
 331
 3332        if (yaProcessada)
 333        {
 1334            resultado.Incidencias.Add(new IncidenciaBeneficio(
 1335                TipoIncidenciaCalculo.BeneficioYaPagado,
 1336                $"Prima Matrimonio ya pagada{(claveEvento is not null ? $" (evento {claveEvento})" : "")}"));
 1337            return;
 338        }
 339
 2340        var monto = beneficio.TipoBeneficio?.MontoReferencia ?? 0m;
 2341        if (monto == 0m)
 342        {
 0343            resultado.Incidencias.Add(new IncidenciaBeneficio(
 0344                TipoIncidenciaCalculo.InstructivoNoConfigurado,
 0345                "Monto de Prima Matrimonio no configurado en catálogo de tipos de beneficio"));
 0346            return;
 347        }
 348
 2349        var item = BuscarCatalogo(catalogo, 350);
 2350        resultado.Items.Add(new ItemBeneficioCalculado(
 2351            CodigoConcepto: 350,
 2352            NombreConcepto: item?.Nombre ?? "PRIMA POR MATRIMONIO",
 2353            Importe: monto,
 2354            ClasificacionSiif: "BenSocNoGr",
 2355            RubroContable: item?.ClasificacionSiif ?? "071.000",
 2356            ClaveEvento: claveEvento));
 2357    }
 358
 359    // ── Prima Traslado ────────────────────────────────────────────────────────
 360
 361    private static void CalcularPrimaTraslado(
 362        BeneficioSocial beneficio,
 363        IReadOnlyList<CatalogoItem> catalogo,
 364        List<LiquidacionItem> historicos,
 365        ResultadoBeneficios resultado,
 366        decimal? sueldoBase)
 367    {
 368        // Deduplicar: prima de única vez por evento (ClaveEvento = fecha presentación "yyyy-MM-dd")
 5369        var claveEvento = beneficio.ClaveEvento;
 5370        var yaPagada = claveEvento is not null
 1371            ? historicos.Any(h => h.CodigoConcepto == "370" && h.ClaveEvento == claveEvento)
 5372            : historicos.Any(h => h.CodigoConcepto == "370");
 373
 5374        if (yaPagada)
 375        {
 1376            resultado.Incidencias.Add(new IncidenciaBeneficio(
 1377                TipoIncidenciaCalculo.BeneficioYaPagado,
 1378                $"Prima Traslado ya pagada{(claveEvento is not null ? $" (evento {claveEvento})" : "")}"));
 1379            return;
 380        }
 381
 4382        if (sueldoBase is null || sueldoBase == 0m)
 383        {
 1384            resultado.Incidencias.Add(new IncidenciaBeneficio(
 1385                TipoIncidenciaCalculo.InstructivoNoConfigurado,
 1386                "No se pudo calcular el sueldo base para Prima Traslado — verifique remuneraciones del grado en el perío
 1387            return;
 388        }
 389
 390        // Subtipo almacena la modalidad: "CON_FAMILIA" o "SIN_FAMILIA"
 3391        var modalidad = (beneficio.Subtipo ?? "").ToUpperInvariant().Trim();
 3392        decimal porcentaje = modalidad == "CON_FAMILIA" ? 0.40m : 0.20m;
 393
 3394        var monto = Math.Round(sueldoBase.Value * porcentaje, 2);
 3395        if (monto == 0m)
 0396            return;
 397
 3398        var item = BuscarCatalogo(catalogo, 370);
 3399        resultado.Items.Add(new ItemBeneficioCalculado(
 3400            CodigoConcepto: 370,
 3401            NombreConcepto: item?.Nombre ?? "PRIMA POR TRASLADO",
 3402            Importe: monto,
 3403            ClasificacionSiif: "066.000",
 3404            RubroContable: item?.ClasificacionSiif ?? "066.000",
 3405            ClaveEvento: claveEvento));
 3406    }
 407
 408    // ── Combo Nacimiento/Matrimonio ───────────────────────────────────────────
 409
 410    private static void CalcularPrimaNacimientoMatrimonioCombo(
 411        BeneficioSocial beneficio,
 412        IReadOnlyList<CatalogoItem> catalogo,
 413        List<LiquidacionItem> historicos,
 414        ResultadoBeneficios resultado)
 415    {
 0416        var subtipo = beneficio.Subtipo?.ToUpperInvariant().Trim();
 0417        if (subtipo == "NACIMIENTO")
 0418            CalcularPrimaNacimiento(beneficio, catalogo, historicos, resultado);
 0419        else if (subtipo == "MATRIMONIO")
 0420            CalcularPrimaMatrimonio(beneficio, catalogo, historicos, resultado);
 421        else
 0422            resultado.Incidencias.Add(new IncidenciaBeneficio(
 0423                TipoIncidenciaCalculo.TipoBeneficioDesconocido,
 0424                "Tipo PRIMA_NACIMIENTO_MATRIMONIO requiere campo Subtipo con valor 'NACIMIENTO' o 'MATRIMONIO'"));
 0425    }
 426
 427    // ── Helpers ───────────────────────────────────────────────────────────────
 428
 429    private static void RegistrarRetroactividadSiCorresponde(
 430        BeneficioSocial beneficio,
 431        DateOnly primerDiaPeriodo,
 432        ResultadoBeneficios resultado)
 433    {
 34434        if (!beneficio.RetroactividadPendiente)
 33435            return;
 436
 1437        var vigenteDesde = DateOnly.FromDateTime(beneficio.VigenteDesde);
 1438        if (vigenteDesde < primerDiaPeriodo)
 439        {
 1440            resultado.Incidencias.Add(new IncidenciaBeneficio(
 1441                TipoIncidenciaCalculo.BeneficioRetroactivoPendiente,
 1442                $"Beneficio retroactivo desde {vigenteDesde:yyyy-MM-dd} — requiere cálculo retro"));
 443        }
 1444    }
 445
 446    private static CatalogoItem? BuscarCatalogo(IReadOnlyList<CatalogoItem> catalogo, int codigo)
 101447        => catalogo.FirstOrDefault(c => c.Codigo == codigo);
 448
 449    private static CategoriaBeneficio DeterminarCategoria(TipoBeneficio tipo)
 450    {
 34451        var codigo = tipo.Codigo.ToUpperInvariant().Trim();
 34452        var nombre = tipo.Nombre.ToUpperInvariant().Trim();
 453
 34454        if (codigo is "ASIGNACION_FAMILIAR" || codigo.StartsWith("300")
 34455            || nombre.Contains("ASIGNACION FAMILIAR") || nombre.Contains("ASIGNACIÓN FAMILIAR"))
 8456            return CategoriaBeneficio.AsignacionFamiliar;
 457
 26458        if (codigo is "HOGAR_CONSTITUIDO" || codigo == "320"
 26459            || nombre.Contains("HOGAR CONSTITUIDO") || nombre.Contains("HOGAR"))
 5460            return CategoriaBeneficio.HogarConstituido;
 461
 21462        if (codigo is "PRIMA_SOLIDARIA_FAMILIAR" || codigo == "330"
 21463            || nombre.Contains("SOLIDARIA") || nombre.Contains("PSF"))
 9464            return CategoriaBeneficio.PrimaSolidariaFamiliar;
 465
 12466        if (codigo is "PRIMA_NACIMIENTO" || codigo == "340"
 12467            || (nombre.Contains("NACIMIENTO") && !nombre.Contains("MATRIMONIO")))
 3468            return CategoriaBeneficio.PrimaNacimiento;
 469
 9470        if (codigo is "PRIMA_MATRIMONIO" || codigo == "350"
 9471            || (nombre.Contains("MATRIMONIO") && !nombre.Contains("NACIMIENTO")))
 3472            return CategoriaBeneficio.PrimaMatrimonio;
 473
 6474        if (codigo is "PRIMA_NACIMIENTO_MATRIMONIO"
 6475            || (nombre.Contains("NACIMIENTO") && nombre.Contains("MATRIMONIO")))
 0476            return CategoriaBeneficio.PrimaNacimientoMatrimonioCombo;
 477
 6478        if (codigo is "PRIMA_TRASLADO" || nombre.Contains("TRASLADO"))
 5479            return CategoriaBeneficio.PrimaTraslado;
 480
 1481        return CategoriaBeneficio.Desconocido;
 482    }
 483}

Methods/Properties

ProcesarBeneficios(System.Int64,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.BeneficioSocial>,FAU.Entidades.ParametroPeriodo,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,System.Collections.Generic.IEnumerable`1<FAU.Entidades.LiquidacionItem>,System.DateOnly,System.Collections.Generic.IReadOnlyDictionary`2<System.Int64,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.BeneficioSocialBeneficiario>>,System.Collections.Generic.IReadOnlyDictionary`2<System.String,FAU.Entidades.InstructivoAsigFamiliar>,System.Collections.Generic.IReadOnlyDictionary`2<System.Int32,FAU.Entidades.InstructivoPsf>,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.TablaHogarConstituido>,System.Nullable`1<System.Decimal>)
CalcularAsigFamiliar(FAU.Entidades.BeneficioSocial,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,FAU.Logica.DTOs.ResultadoBeneficios,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.BeneficioSocialBeneficiario>,System.DateOnly,System.Collections.Generic.IReadOnlyDictionary`2<System.String,FAU.Entidades.InstructivoAsigFamiliar>)
CalcularHogar(FAU.Entidades.BeneficioSocial,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,FAU.Logica.DTOs.ResultadoBeneficios,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.TablaHogarConstituido>)
CalcularPsf(FAU.Entidades.BeneficioSocial,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,FAU.Logica.DTOs.ResultadoBeneficios,System.Collections.Generic.IReadOnlyDictionary`2<System.Int32,FAU.Entidades.InstructivoPsf>)
CalcularPrimaNacimiento(FAU.Entidades.BeneficioSocial,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,System.Collections.Generic.List`1<FAU.Entidades.LiquidacionItem>,FAU.Logica.DTOs.ResultadoBeneficios)
CalcularPrimaMatrimonio(FAU.Entidades.BeneficioSocial,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,System.Collections.Generic.List`1<FAU.Entidades.LiquidacionItem>,FAU.Logica.DTOs.ResultadoBeneficios)
CalcularPrimaTraslado(FAU.Entidades.BeneficioSocial,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,System.Collections.Generic.List`1<FAU.Entidades.LiquidacionItem>,FAU.Logica.DTOs.ResultadoBeneficios,System.Nullable`1<System.Decimal>)
CalcularPrimaNacimientoMatrimonioCombo(FAU.Entidades.BeneficioSocial,System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,System.Collections.Generic.List`1<FAU.Entidades.LiquidacionItem>,FAU.Logica.DTOs.ResultadoBeneficios)
RegistrarRetroactividadSiCorresponde(FAU.Entidades.BeneficioSocial,System.DateOnly,FAU.Logica.DTOs.ResultadoBeneficios)
BuscarCatalogo(System.Collections.Generic.IReadOnlyList`1<FAU.Entidades.CatalogoItem>,System.Int32)
DeterminarCategoria(FAU.Entidades.TipoBeneficio)