Example #1
0
        public List <PayFx2> CalcProc(SalaryInfo si, EBonusFrom efrom, decimal dfrom)
        {
            var ret = new List <PayFx2>();

            foreach (var dr in DataRows)
            {
                if (dr.XRateType != EBonusRateType.Percent ||
                    dr.XBonusType == EBonusType.ReverseCalc)
                {
                    continue;
                }
                if (dr.XBonusFrom != efrom)
                {
                    continue;
                }

                decimal v = KlonsData.RoundA(dfrom * dr.RATE / 100.0M, 2);
                if (dr.AMOUNT != v)
                {
                    dr.AMOUNT = v;
                }
                var pfx = AddRow(si, dr, dfrom, dr.AMOUNT, 1);
                ret.Add(pfx);
            }
            return(ret);
        }
Example #2
0
        public static string GetEBonusFromString(EBonusFrom bf)
        {
            switch (bf)
            {
            case EBonusFrom.None: return("");

            case EBonusFrom.FromMonthSalary: return("no pamatalgas");

            case EBonusFrom.FromPay: return("no aprēķinātās algas");

            case EBonusFrom.FromPayAndVacSick: return("no aprēķ. algas + atvaļ. + slim.n.");

            case EBonusFrom.FromPayBeforeSAI: return("no summas SI aprēķinam");

            case EBonusFrom.FromPayAfterSAI: return("no summas pēc SI");

            case EBonusFrom.FromPayBeforeIIN: return("no summas IIN aprēķinam");

            case EBonusFrom.FromPayAfterIIN: return("no summas pēc IIN");

            default: return("");
            }
        }
Example #3
0
        public List <CalcRet> CalcProcT(SalaryCalcTInfo scti, EBonusFrom efrom,
                                        Func <SalaryInfo, decimal> fdfrom)
        {
            var ret   = new List <CalcRet>();
            int divby = scti.LinkedSCI.Length;

            foreach (var dr in DataRows)
            {
                if (dr.XRateType != EBonusRateType.Percent ||
                    dr.XBonusType == EBonusType.ReverseCalc)
                {
                    continue;
                }
                if (dr.XBonusFrom != efrom)
                {
                    continue;
                }

                var ret1 = new CalcRet(divby);

                if (dr.IsIDANull())
                {
                    decimal dfrom = fdfrom(scti.TotalSI);
                    decimal v     = KlonsData.RoundA(dfrom * dr.RATE / 100.0M, 2);
                    decimal vs    = v;
                    if (dr.AMOUNT != v)
                    {
                        dr.AMOUNT = v;
                    }
                    var pfx = AddRow(scti.TotalSI, dr, dfrom, v, 1);
                    ret1.PfxT = pfx;

                    for (int i = 0; i < divby; i++)
                    {
                        var sci = scti.LinkedSCI[i];
                        dfrom = fdfrom(sci.SI);
                        v     = KlonsData.RoundA(dfrom * dr.RATE / 100.0M, 2);
                        vs   -= v;
                        if (i == divby - 1)
                        {
                            v += vs;
                        }
                        ret1.Pfxs[i] = sci.BonusCalc.AddRow(sci.SI, dr, dfrom, v, divby);
                    }
                }
                else
                {
                    int     i     = FindAM(scti, dr.IDA);
                    var     sci   = scti.LinkedSCI[i];
                    decimal dfrom = fdfrom(sci.SI);
                    decimal v     = KlonsData.RoundA(dfrom * dr.RATE / 100.0M, 2);
                    if (dr.AMOUNT != v)
                    {
                        dr.AMOUNT = v;
                    }
                    var pfx = AddRow(scti.TotalSI, dr, dfrom, v, 1);
                    ret1.PfxT    = pfx;
                    ret1.Pfxs[i] = sci.BonusCalc.AddRow(sci.SI, dr, dfrom, v, 1);
                }
                ret.Add(ret1);
            }
            return(ret);
        }