< Summary

Information
Class: FAU.Entidades.Acumuladores
Assembly: FAU.Entidades
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Entidades/Acumuladores.cs
Line coverage
100%
Covered lines: 43
Uncovered lines: 0
Coverable lines: 43
Total lines: 99
Line coverage: 100%
Branch coverage
100%
Covered branches: 22
Total branches: 22
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_WPara53()100%11100%
get_WPara10()100%11100%
get_WPara20()100%11100%
get_WNominal()100%11100%
get_HabNorGrav()100%11100%
get_HabsAnGrav()100%11100%
get_HabsNoGrav()100%11100%
get_BenSocGrav()100%11100%
get_BenSocNoGrav()100%11100%
get_DtoLegGrav()100%11100%
get_DtoLegNoGrav()100%11100%
get_DtoPerGrav()100%11100%
get_Liquido()100%11100%
AgregarItem(...)100%2222100%
Reiniciar()100%11100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Entidades/Acumuladores.cs

#LineLine coverage
 1namespace FAU.Entidades;
 2
 3/// <summary>
 4/// Acumuladores del motor de cálculo de liquidación.
 5/// Mantiene en tiempo real las bases de cálculo y clasificaciones SIIF
 6/// conforme se procesan ítems durante el pipeline de liquidación.
 7/// </summary>
 8public class Acumuladores
 9{
 10    /// <summary>
 11    /// Bases de cálculo para aplicación de fórmulas
 12    /// </summary>
 11413    public decimal WPara53 { get; private set; } = 0m;      // Base SDL 5.3%
 1314    public decimal WPara10 { get; private set; } = 0m;      // Base DI 10% (= WPara53 + SDL 5.3%)
 1015    public decimal WPara20 { get; private set; } = 0m;      // Base Aporte Solidario 20% u otros
 49516    public decimal WNominal { get; private set; } = 0m;     // Suma de todos haberes gravados
 17
 18    /// <summary>
 19    /// Clasificaciones SIIF (Sistema Integrado de Información Financiera)
 20    /// </summary>
 52121    public decimal HabNorGrav { get; private set; } = 0m;   // Haberes normales gravados
 2222    public decimal HabsAnGrav { get; private set; } = 0m;   // Haberes antiguos gravados
 1723    public decimal HabsNoGrav { get; private set; } = 0m;   // Haberes no gravados
 1624    public decimal BenSocGrav { get; private set; } = 0m;   // Beneficios sociales gravados
 1325    public decimal BenSocNoGrav { get; private set; } = 0m;   // Beneficios sociales no gravados
 1126    public decimal DtoLegGrav { get; private set; } = 0m;   // Descuentos legales gravados (IRPF, Montepio, etc)
 1127    public decimal DtoLegNoGrav { get; private set; } = 0m;   // Descuentos legales no gravados
 1128    public decimal DtoPerGrav { get; private set; } = 0m;   // Descuentos personales gravados
 29
 30    /// <summary>
 31    /// Neto a pagar = haberes - descuentos (calculado automáticamente)
 32    /// </summary>
 33    public decimal Liquido
 34    {
 35        get
 36        {
 637            return HabNorGrav + HabsAnGrav + HabsNoGrav + BenSocGrav + BenSocNoGrav
 638                   - DtoLegGrav - DtoLegNoGrav - DtoPerGrav;
 39        }
 40    }
 41
 42    /// <summary>
 43    /// Agrega un ítem de liquidación al acumulador.
 44    /// El bucket SIIF se determina por Tipo + EsGravado del CatalogoItem.
 45    /// ClasificacionSiif en catalogo_items almacena el código de rubro SIIF (ej: 042.511),
 46    /// no el nombre del bucket — por eso se usa Tipo para el despacho.
 47    /// </summary>
 48    public void AgregarItem(decimal monto, CatalogoItem catalogoItem)
 49    {
 50        // Actualizar bases de cálculo según flags del catálogo
 31651        if (catalogoItem.ContribuyeWPara53) WPara53 += monto;
 26652        if (catalogoItem.ContribuyeWPara10) WPara10 += monto;
 26453        if (catalogoItem.ContribuyeWPara20) WPara20 += monto;
 49654        if (catalogoItem.ContribuyeWNominal) WNominal += monto;
 55
 56        // Bucket SIIF derivado del Tipo semántico del ítem
 26357        switch (catalogoItem.Tipo)
 58        {
 59            case "haber_normal":
 60            case "ficto_haber":
 50761                if (catalogoItem.EsGravado) HabNorGrav += monto;
 162                else HabsNoGrav += monto;
 163                break;
 64            case "haber_anual":
 465                HabsAnGrav += monto;
 466                break;
 67            case "haber_no_gravado":
 168                HabsNoGrav += monto;
 169                break;
 70            case "beneficio_social_grav":
 271                BenSocGrav += monto;
 272                break;
 73            case "beneficio_social_no_grav":
 174                BenSocNoGrav += monto;
 75                break;
 76        }
 177    }
 78
 79    /// <summary>
 80    /// Reinicia todos los acumuladores a cero.
 81    /// Útil para reutilizar la instancia o para testing.
 82    /// </summary>
 83    public void Reiniciar()
 84    {
 285        WPara53 = 0m;
 286        WPara10 = 0m;
 287        WPara20 = 0m;
 288        WNominal = 0m;
 89
 290        HabNorGrav = 0m;
 291        HabsAnGrav = 0m;
 292        HabsNoGrav = 0m;
 293        BenSocGrav = 0m;
 294        BenSocNoGrav = 0m;
 295        DtoLegGrav = 0m;
 296        DtoLegNoGrav = 0m;
 297        DtoPerGrav = 0m;
 298    }
 99}