< 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
92%
Covered lines: 52
Uncovered lines: 4
Coverable lines: 56
Total lines: 108
Line coverage: 92.8%
Branch coverage
56%
Covered branches: 41
Total branches: 73
Branch coverage: 56.1%
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(...)56.16%877386.2%
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 calculo de liquidacion.
 5/// Mantiene las bases de calculo y los subtotales internos usados por SIIF.
 6/// </summary>
 7public class Acumuladores
 8{
 9    /// <summary>
 10    /// Bases de calculo para aplicacion de formulas.
 11    /// </summary>
 11212    public decimal WPara53 { get; private set; } = 0m;
 1313    public decimal WPara10 { get; private set; } = 0m;
 1014    public decimal WPara20 { get; private set; } = 0m;
 64815    public decimal WNominal { get; private set; } = 0m;
 16
 17    /// <summary>
 18    /// Buckets internos para reportes SIIF y control del motor.
 19    /// </summary>
 66920    public decimal HabNorGrav { get; private set; } = 0m;
 2421    public decimal HabsAnGrav { get; private set; } = 0m;
 2122    public decimal HabsNoGrav { get; private set; } = 0m;
 2023    public decimal BenSocGrav { get; private set; } = 0m;
 1724    public decimal BenSocNoGrav { get; private set; } = 0m;
 1225    public decimal DtoLegGrav { get; private set; } = 0m;
 1726    public decimal DtoLegNoGrav { get; private set; } = 0m;
 1227    public decimal DtoPerGrav { get; private set; } = 0m;
 28
 29    /// <summary>
 30    /// Neto a pagar = haberes - descuentos.
 31    /// </summary>
 32    public decimal Liquido =>
 733        HabNorGrav + HabsAnGrav + HabsNoGrav + BenSocGrav + BenSocNoGrav
 734        - DtoLegGrav - DtoLegNoGrav - DtoPerGrav;
 35
 36    /// <summary>
 37    /// Agrega un item de liquidacion al acumulador.
 38    /// El bucket SIIF se determina por Tipo y EsGravado del CatalogoItem.
 39    /// ClasificacionSiif almacena el codigo de rubro SIIF, no el nombre del bucket.
 40    /// </summary>
 41    public void AgregarItem(decimal monto, CatalogoItem catalogoItem)
 42    {
 39343        if (catalogoItem.ContribuyeWPara53) WPara53 += monto;
 34444        if (catalogoItem.ContribuyeWPara10) WPara10 += monto;
 34245        if (catalogoItem.ContribuyeWPara20) WPara20 += monto;
 65346        if (catalogoItem.ContribuyeWNominal) WNominal += monto;
 47
 34148        switch (catalogoItem.Tipo)
 49        {
 50            case "haber_normal":
 51            case "ficto_haber":
 65352                if (catalogoItem.EsGravado) HabNorGrav += monto;
 153                else HabsNoGrav += monto;
 154                break;
 55            case "haber_anual":
 456                HabsAnGrav += monto;
 457                break;
 58            case "haber_anormal":
 159                if (catalogoItem.EsGravado) HabsAnGrav += monto;
 160                else HabsNoGrav += monto;
 161                break;
 62            case "haber_no_gravado":
 63            case "haber_exento":
 164                HabsNoGrav += monto;
 165                break;
 66            case "beneficio_social_grav":
 267                BenSocGrav += monto;
 268                break;
 69            case "beneficio_social_no_grav":
 170                BenSocNoGrav += monto;
 171                break;
 72            case "beneficio_social":
 373                if (catalogoItem.EsGravado) BenSocGrav += monto;
 174                else BenSocNoGrav += monto;
 175                break;
 76            case "descuento_legal":
 277                if (catalogoItem.EsGravado) DtoLegGrav += Math.Abs(monto);
 278                else DtoLegNoGrav += Math.Abs(monto);
 279                break;
 80            case "descuento_personal":
 081                DtoPerGrav += Math.Abs(monto);
 082                break;
 83            case "ficto_descuento":
 084                DtoLegNoGrav += Math.Abs(monto);
 85                break;
 86        }
 087    }
 88
 89    /// <summary>
 90    /// Reinicia todos los acumuladores a cero.
 91    /// </summary>
 92    public void Reiniciar()
 93    {
 294        WPara53 = 0m;
 295        WPara10 = 0m;
 296        WPara20 = 0m;
 297        WNominal = 0m;
 98
 299        HabNorGrav = 0m;
 2100        HabsAnGrav = 0m;
 2101        HabsNoGrav = 0m;
 2102        BenSocGrav = 0m;
 2103        BenSocNoGrav = 0m;
 2104        DtoLegGrav = 0m;
 2105        DtoLegNoGrav = 0m;
 2106        DtoPerGrav = 0m;
 2107    }
 108}