Example #1
0
        private SalaryInfo GetPrevRowA()
        {
            var dt1           = SalarySheet.DT1;
            var dt2           = SalarySheet.DT2;
            var idp           = Row.IDP;
            var idam          = Row["IDAM"];
            var id            = Row.ID;
            var dtp1          = dt2.FirstDayOfMonth().AddMonths(-1);
            var dtp2          = dtp1.LastDayOfMonth();
            var table_lapas_r = MyData.DataSetKlons.SALARY_SHEETS_R;

            var dr_lapas_r = table_lapas_r.WhereX(
                d =>
                d.ID != id &&
                d.IDP == idp &&
                object.Equals(d["IDAM"], idam) &&
                d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.DT2.IsBetween(dtp1, dtp2) &&
                d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.IS_TEMP == 0 &&
                d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.XKind != ESalarySheetKind.Total
                ).WithMaxOrDefault(d => d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.DT2);

            if (dr_lapas_r == null)
            {
                return(null);
            }

            var dtm = dr_lapas_r.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.DT2;

            var ret = new SalaryInfo();

            ret.SetFromRow(dr_lapas_r);
            return(ret);
        }
Example #2
0
        public ErrorList CalcPayWithAvPay(SalarySheetRowInfo sr, SalaryInfo totalwt = null)
        {
            var err = DoAvPay(sr, TotalRow, totalwt);

            if (err.HasErrors)
            {
                return(err);
            }

            if (PreparingReport)
            {
                foreach (var rr in ReportRows)
                {
                    DoAvPay(sr, rr, totalwt);
                }
            }

            TotalRow._SALARY = TotalRow.SumSalary();
            TotalRow.AddAvPay();

            if (PreparingReport)
            {
                PrepareList(sr.GetPositionTitle());
            }

            return(err);
        }
Example #3
0
        public decimal CalcCashNotPaid(SalaryInfo si, decimal iinrate, decimal dnsrate)
        {
            decimal sai       = NotPaidTaxed * dnsrate;
            decimal aftersai  = NotPaidTaxed - sai;
            decimal beforeIIN = aftersai + NotPaidNoSAI;

            decimal totalbeforeiin =
                si._AMOUNT_BEFORE_SN +
                si._PLUS_NOSAI +
                si._PLUS_AUTHORS_FEES -
                si._DNSN_AMOUNT;

            decimal iin = 0.0M;

            if (totalbeforeiin != 0.0M)
            {
                iin = si._IIN_AMOUNT * beforeIIN / totalbeforeiin;
            }

            decimal notPaiTotal = NotPaidNotTaxed + NotPaidTaxed + NotPaidNoSAI +
                                  NotPaidFromEndCash - sai - iin;

            notPaiTotal = KlonsData.RoundA(notPaiTotal, 2);

            return(notPaiTotal);
        }
Example #4
0
        public void AddWorkTime(SalaryInfo wi)
        {
            /*
             * _CALENDAR_DAYS += wi._CALENDAR_DAYS;
             * _CALENDAR_DAYS_USE += wi._CALENDAR_DAYS_USE;
             * _MONTH_WORKDAYS += wi._MONTH_WORKDAYS;
             * _MONTH_WORKHOURS += wi._MONTH_WORKHOURS;
             *
             * _PLAN_DAYS += wi._PLAN_DAYS;
             * _PLAN_HOURS += wi._PLAN_HOURS;
             * _PLAN_HOURS_NIGHT += wi._PLAN_HOURS_NIGHT;
             * _PLAN_HOURS_OVERTIME += wi._PLAN_HOURS_OVERTIME;
             *
             * _PLAN_WORK_DAYS += wi._PLAN_WORK_DAYS;
             * _PLAN_WORK_HOURS += wi._PLAN_WORK_HOURS;
             * _PLAN_WORK_HOURS_NIGHT += wi._PLAN_WORK_HOURS_NIGHT;
             * _PLAN_WORK_HOURS_OVERTIME += wi._PLAN_WORK_HOURS_OVERTIME;
             *
             * _PLAN_HOLIDAYS_DAYS += wi._PLAN_HOLIDAYS_DAYS;
             * _PLAN_HOLIDAYS_HOURS += wi._PLAN_HOLIDAYS_HOURS;
             * _PLAN_HOLIDAYS_HOURS_NIGHT += wi._PLAN_HOLIDAYS_HOURS_NIGHT;
             * _PLAN_HOLIDAYS_HOURS_OVERTIME += wi._PLAN_HOLIDAYS_HOURS_OVERTIME;
             */

            _FACT_DAYS           += wi._FACT_DAYS;
            _FACT_HOURS          += wi._FACT_HOURS;
            _FACT_HOURS_NIGHT    += wi._FACT_HOURS_NIGHT;
            _FACT_HOURS_OVERTIME += wi._FACT_HOURS_OVERTIME;

            _FACT_WORK_DAYS           += wi._FACT_WORK_DAYS;
            _FACT_WORK_HOURS          += wi._FACT_WORK_HOURS;
            _FACT_WORK_HOURS_NIGHT    += wi._FACT_WORK_HOURS_NIGHT;
            _FACT_WORK_HOURS_OVERTIME += wi._FACT_WORK_HOURS_OVERTIME;

            _FACT_HOLIDAYS_DAYS           += wi._FACT_HOLIDAYS_DAYS;
            _FACT_HOLIDAYS_HOURS          += wi._FACT_HOLIDAYS_HOURS;
            _FACT_HOLIDAYS_HOURS_NIGHT    += wi._FACT_HOLIDAYS_HOURS_NIGHT;
            _FACT_HOLIDAYS_HOURS_OVERTIME += wi._FACT_HOLIDAYS_HOURS_OVERTIME;

            // ..............

            _FACT_AVPAY_FREE_DAYS            += wi._FACT_AVPAY_FREE_DAYS;
            _FACT_AVPAY_FREE_HOURS           += wi._FACT_AVPAY_FREE_HOURS;
            _FACT_AVPAY_WORK_DAYS            += wi._FACT_AVPAY_WORK_DAYS;
            _FACT_AVPAY_WORKINHOLIDAYS       += wi._FACT_AVPAY_WORKINHOLIDAYS;
            _FACT_AVPAY_HOURS                += wi._FACT_AVPAY_HOURS;
            _FACT_AVPAY_HOURS_OVERTIME       += wi._FACT_AVPAY_HOURS_OVERTIME;
            _FACT_AVPAY_HOLIDAYS_HOURS       += wi._FACT_AVPAY_HOLIDAYS_HOURS;
            _FACT_AVPAY_HOLIDAYS_HOURS_OVERT += wi._FACT_AVPAY_HOLIDAYS_HOURS_OVERT;

            // ..............
            FACT_AVPAY_FREE_DAYS_2            += wi.FACT_AVPAY_FREE_DAYS_2;
            FACT_AVPAY_FREE_HOURS_2           += wi.FACT_AVPAY_FREE_HOURS_2;
            FACT_AVPAY_WORK_DAYS_2            += wi.FACT_AVPAY_WORK_DAYS_2;
            FACT_AVPAY_WORKINHOLIDAYS_2       += wi.FACT_AVPAY_WORKINHOLIDAYS_2;
            FACT_AVPAY_HOURS_2                += wi.FACT_AVPAY_HOURS_2;
            FACT_AVPAY_HOURS_OVERTIME_2       += wi.FACT_AVPAY_HOURS_OVERTIME_2;
            FACT_AVPAY_HOLIDAYS_HOURS_2       += wi.FACT_AVPAY_HOLIDAYS_HOURS_2;
            FACT_AVPAY_HOLIDAYS_HOURS_OVERT_2 += wi.FACT_AVPAY_HOLIDAYS_HOURS_OVERT_2;
        }
Example #5
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 #6
0
 public void AddSalaryAvPayPart(SalaryInfo wi)
 {
     _SALARY_AVPAY_FREE_DAYS          += wi._SALARY_AVPAY_FREE_DAYS;
     _SALARY_AVPAY_WORK_DAYS          += wi._SALARY_AVPAY_WORK_DAYS;
     _SALARY_AVPAY_WORK_DAYS_OVERTIME += wi._SALARY_AVPAY_WORK_DAYS_OVERTIME;
     _SALARY_AVPAY_HOLIDAYS           += wi._SALARY_AVPAY_HOLIDAYS;
     _SALARY_AVPAY_HOLIDAYS_OVERTIME  += wi._SALARY_AVPAY_HOLIDAYS_OVERTIME;
 }
Example #7
0
        public ErrorList CalcAvPay(SalarySheetRowSetInfo srs, SalaryInfo si)
        {
            var err_list = CalcList(srs.SalarySheet, srs.IDP, srs.TotalPersonPay);

            si._AVPAYCALC_HOUR = KlonsData.RoundA(RateHour, 4);
            si._AVPAYCALC_DAY  = KlonsData.RoundA(RateDay, 4);
            return(err_list);
        }
Example #8
0
 public void ApplyRatio(decimal r, SalaryInfo si)
 {
     ExDivided.SetFrom(ExMax2);
     ExDivided.ApplyRatio(r);
     if (si != null)
     {
         ExDivided.ApplyTo(si);
     }
 }
Example #9
0
        // used only for making report
        public void CalcWorkPay(SalarySheetRowSetInfo sr, SalaryInfo si = null)
        {
            var dt1 = sr.SalarySheet.DT1;
            var dt2 = sr.SalarySheet.DT2;

            if (si == null)
            {
                TotalRow = new SalaryInfo();
            }
            else
            {
                TotalRow = si;
            }

            TotalRow._CALENDAR_DAYS     = sr.SalarySheet.CalendarMonth.DaysInMonth;
            TotalRow._CALENDAR_DAYS_USE = sr.CountCalendarDays();

            var dlrowlist = sr.GetDLRowSetList();

            dlrowlist.CountPlanMonth(TotalRow, sr.SalarySheet.MDT1, sr.SalarySheet.MDT2);
            dlrowlist.CountTotalPlan(TotalRow, sr.SalarySheet.MDT1, sr.SalarySheet.MDT2);
            dlrowlist.CountTotalFact(TotalRow, sr.SalarySheet.MDT1, sr.SalarySheet.MDT2);

            LinkedWorkPayCalcs = new WorkPayCalcInfo[sr.LinkedRows.Length];

            for (int i = 0; i < sr.LinkedRows.Length; i++)
            {
                var lr = sr.LinkedRows[i];

                var si2 = new SalaryInfo();
                var wpc = new WorkPayCalcInfo(PreparingReport);

                wpc.CalcWorkPay(lr, si2);
                TotalRow.AddSalary(si2);

                if (wpc.AvPayCalcRequired)
                {
                    AvPayCalcRequired = true;
                }

                wpc.PositionTitle     = lr.GetPositionTitle();
                LinkedWorkPayCalcs[i] = wpc;
            }

            TotalRow._SALARY = TotalRow.SumSalary();
            TotalRow.SumForAvPay();

            if (AvPayCalcRequired)
            {
                CalcWorkPayAvPay(sr, TotalRow);
            }

            if (PreparingReport)
            {
                PrepareListT();
            }
        }
Example #10
0
 public void ApplyTo0(SalaryInfo si)
 {
     si._IIN_EXEMPT_UNTAXED_MINIMUM0   = ExUntaxedMinimum;
     si._IIN_EXEMPT_DEPENDANTS0        = ExDependants;
     si._IIN_EXEMPT_INVALIDITY0        = ExInvalidity;
     si._IIN_EXEMPT_RETALIATION0       = ExRetaliation;
     si._IIN_EXEMPT_NATIONAL_MOVEMENT0 = ExNationalMovements;
     si._IIN_EXEMPT_20 = ExInvalidity + ExRetaliation + ExNationalMovements;
 }
Example #11
0
        public decimal CalcFromEndC(SalaryInfo si,
                                    decimal totalinex,
                                    decimal curbruto, decimal brutonosai,
                                    decimal brutomargin,
                                    bool useprogressiveiin, bool hastaxdoc,
                                    decimal iinrate1, decimal iinrate2, decimal dnsrate, int divby,
                                    out List <PayFx2> rpfx)
        {
            rpfx = new List <PayFx2>();
            decimal ret = 0.0M;

            if (PlusFromEnd <= 0.0M)
            {
                return(ret);
            }

            decimal calcbruto = curbruto;

            var p1 = new PayFx(useprogressiveiin);

            p1.Ir        = iinrate1 / 100.0M;
            p1.Ir2       = iinrate2 / 100.0M;
            p1.Sr        = dnsrate / 100.0M;
            p1.IM        = brutomargin;
            p1.HasTaxDoc = hastaxdoc;
            p1.Pay       = curbruto;
            p1.PayNs     = brutonosai;
            p1.IinEx     = totalinex;

            for (int i = 0; i < DataRows.Length; i++)
            {
                var dr = DataRows[i];
                if (dr.XRateType != EBonusRateType.Money ||
                    dr.XBonusType != EBonusType.ReverseCalc)
                {
                    continue;
                }

                decimal v = dr.RATE;

                calcbruto = p1.GetPayByIncCash(v);
                calcbruto = KlonsData.RoundA(calcbruto, 2);
                v         = calcbruto - curbruto;
                p1.Pay    = calcbruto;
                curbruto  = calcbruto;
                if (dr.AMOUNT != v)
                {
                    dr.AMOUNT = v;
                }
                var rpfx1 = AddRow(si, dr, dr.RATE, v, 1);
                rpfx.Add(rpfx1);
                ret += v;
            }

            return(ret);
        }
Example #12
0
 public WorkPayCalcInfo(bool filllist)
 {
     TotalRow        = new SalaryInfo();
     PreparingReport = filllist;
     if (PreparingReport)
     {
         ReportRows = new List <SalaryInfo>();
         JoinRows   = new List <WorkPayCalcJoinRow>();
     }
 }
Example #13
0
 public void SetFrom(SalaryInfo si)
 {
     ExUntaxedMinimum    = si._IIN_EXEMPT_UNTAXED_MINIMUM;
     ExDependants        = si._IIN_EXEMPT_DEPENDANTS;
     ExInvalidity        = si._IIN_EXEMPT_INVALIDITY;
     ExRetaliation       = si._IIN_EXEMPT_RETALIATION;
     ExNationalMovements = si._IIN_EXEMPT_NATIONAL_MOVEMENT;
     ExExpenses          = si._IIN_EXEMPT_EXPENSES;
     Ex2Tp = si.IINExempt2Kind;
 }
Example #14
0
 public SalaryCalcInfo(SalarySheetRowInfo sr, SalaryInfo si, bool filllist)
 {
     SR              = sr;
     SI              = si;
     PositionTitle   = sr.GetPositionTitle();
     PreparingReport = filllist;
     if (PreparingReport)
     {
     }
 }
Example #15
0
 public void ApplyTo(SalaryInfo si)
 {
     si._IIN_EXEMPT_UNTAXED_MINIMUM   = ExUntaxedMinimum;
     si._IIN_EXEMPT_DEPENDANTS        = ExDependants;
     si._IIN_EXEMPT_INVALIDITY        = ExInvalidity;
     si._IIN_EXEMPT_RETALIATION       = ExRetaliation;
     si._IIN_EXEMPT_NATIONAL_MOVEMENT = ExNationalMovements;
     si._IIN_EXEMPT_EXPENSES          = ExExpenses;
     si._IIN_EXEMPT_2  = ExInvalidity + ExRetaliation + ExNationalMovements;
     si.IINExempt2Kind = Ex2Tp;
 }
Example #16
0
 public SalaryCalcTInfo(SalarySheetRowSetInfo srs, SalaryInfo si, bool filllist)
 {
     if (srs?.TotalRow == null || srs.LinkedRows == null || srs.LinkedRows.Length == 0)
     {
         throw new Exception("Bad init.");
     }
     PreparingReport = filllist;
     SRS             = srs;
     TotalSI         = si;
     if (PreparingReport)
     {
     }
 }
Example #17
0
 public void SetFrom(SalaryInfo si)
 {
     SNR           = si._SNR;
     Caption       = string.Format("{0} {1}, {2}", si._FNAME, si._LNAME, si._POSITION_TITLE.ToLower());
     Caption2      = string.Format("{0} {1}", si._FNAME, si._LNAME);
     WorkDays      = si._FACT_DAYS;
     WorkHours     = si._FACT_HOURS;
     FreeAvPayDays = si._FACT_AVPAY_FREE_DAYS;
     VacationDays  = si._VACATION_DAYS_CURRENT;
     SickDays      = si._SICKDAYS;
     WorkPay       = si._SALARY;
     SickPay       = si._SICKDAYS_PAY;
     VacationPay   = si._VACATION_PAY_CURRENT;
     FreeAvPay     = si._SALARY_AVPAY_FREE_DAYS;
     WorkAvPay     =
         si._SALARY_AVPAY_HOLIDAYS +
         si._SALARY_AVPAY_HOLIDAYS_OVERTIME +
         si._SALARY_AVPAY_WORK_DAYS +
         si._SALARY_AVPAY_WORK_DAYS_OVERTIME;
     PlusTaxed =
         si._PLUS_TAXED +
         si._PLUS_PF_TAXED +
         si._PLUS_LI_TAXED +
         si._PLUS_HI_TAXED;
     PlusNotTaxed =
         si._PLUS_NOTTAXED +
         si._PLUS_PF_NOTTAXED +
         si._PLUS_LI_NOTTAXED +
         si._PLUS_HI_NOTTAXED;
     PlusNoSAI       = si._PLUS_NOSAI;
     PlusAuthorsFees = si._PLUS_AUTHORS_FEES;
     TotalPay        = si._TOTAL_BEFORE_TAXES;
     ForSAI          = si._AMOUNT_BEFORE_SN;
     DDSAI           = si._DDSN_AMOUNT;
     DNSAI           = si._DNSN_AMOUNT;
     SAI             = si._SN_AMOUNT;
     UntaxedMinimum  = si._IIN_EXEMPT_UNTAXED_MINIMUM;
     ExDependants    = si._IIN_EXEMPT_DEPENDANTS;
     ExInvalidity    = si._IIN_EXEMPT_INVALIDITY;
     ExRetaliation   = si._IIN_EXEMPT_RETALIATION;
     ExNatMovement   = si._IIN_EXEMPT_NATIONAL_MOVEMENT;
     ExExpenses      = si._IIN_EXEMPT_EXPENSES;
     IIN             = si._IIN_AMOUNT;
     MinusBeforeIIN  = si._MINUS_BEFORE_IIN;
     MinusAfterIIN   = si._MINUS_AFTER_IIN;
     AdvanceOrDebt   = si._ADVANCE;
     Pay             = si._PAYT;
 }
Example #18
0
        public void CalcPayWithHourRate(SalaryInfo wt, KlonsADataSet.POSITIONS_RRow dr_amati_r)
        {
            wt.PlanedWorkPay    = wt.R_HR * (decimal)wt._PLAN_HOURS;
            wt._SALARY_DAY      = wt.R_HR * (decimal)wt._FACT_WORK_HOURS;
            wt._SALARY_NIGHT    = wt.R_HR_NIGHT * (decimal)wt._FACT_WORK_HOURS_NIGHT;
            wt._SALARY_OVERTIME = wt.R_HR_OVERTIME * (decimal)wt._FACT_WORK_HOURS_OVERTIME;

            wt._SALARY_HOLIDAYS_DAY      = wt.R_HR_HOLIDAY * (decimal)wt._FACT_HOLIDAYS_HOURS;
            wt._SALARY_HOLIDAYS_NIGHT    = wt.R_HR_HOLIDAY_NIGHT * (decimal)wt._FACT_HOLIDAYS_HOURS_NIGHT;
            wt._SALARY_HOLIDAYS_OVERTIME = wt.R_HR_HOLIDAY_OVERTIME * (decimal)wt._FACT_HOLIDAYS_HOURS_OVERTIME;

            wt._SALARY_AVPAY_FREE_DAYS          = wt.R_HR * (decimal)wt._FACT_AVPAY_FREE_HOURS;
            wt._SALARY_AVPAY_WORK_DAYS          = wt.R_HR * (decimal)wt._FACT_AVPAY_HOURS;
            wt._SALARY_AVPAY_WORK_DAYS_OVERTIME = wt.R_HR_OVERTIME * (decimal)wt._FACT_AVPAY_HOURS_OVERTIME;
            wt._SALARY_AVPAY_HOLIDAYS           = wt.R_HR_HOLIDAY * (decimal)wt._FACT_AVPAY_HOLIDAYS_HOURS;
            wt._SALARY_AVPAY_HOLIDAYS_OVERTIME  = wt.R_HR_HOLIDAY_OVERTIME * (decimal)wt._FACT_AVPAY_HOLIDAYS_HOURS_OVERT;
        }
Example #19
0
        public ErrorList FillRow()
        {
            var dt1 = SalarySheet.DT1;
            var dt2 = SalarySheet.DT2;

            TotalPersonPay = new SalaryInfo();
            var sci = new SalaryCalcTInfo(this, TotalPersonPay, false);

            var err_list = sci.FillRow();

            if (err_list.HasErrors)
            {
                return(err_list);
            }

            sci.WriteData();
            return(err_list);
        }
Example #20
0
        public void AddSalary(SalaryInfo wi)
        {
            _SALARY                     += wi._SALARY;
            _SALARY_DAY                 += wi._SALARY_DAY;
            _SALARY_NIGHT               += wi._SALARY_NIGHT;
            _SALARY_OVERTIME            += wi._SALARY_OVERTIME;
            _SALARY_HOLIDAYS_DAY        += wi._SALARY_HOLIDAYS_DAY;
            _SALARY_HOLIDAYS_NIGHT      += wi._SALARY_HOLIDAYS_NIGHT;
            _SALARY_HOLIDAYS_OVERTIME   += wi._SALARY_HOLIDAYS_OVERTIME;
            _SALARY_PAID_HOLIDAYS_DAY   += wi._SALARY_PAID_HOLIDAYS_DAY;
            _SALARY_PAID_HOLIDAYS_NIGHT += wi._SALARY_PAID_HOLIDAYS_NIGHT;

            _SALARY_PIECEWORK += wi._SALARY_PIECEWORK;

            PlanedWorkPay += wi.PlanedWorkPay;

            AddSalaryAvPayPart(wi);
        }
Example #21
0
        //part = 0 - skip MinusAfterIIN
        //part = 1 - only MinusAfterIIN
        public List <PayFx2> CalcNotProc(SalaryInfo si, int part, int divby = 1)
        {
            var ret = new List <PayFx2>();

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

                if (part == 0 && dr.XBonusType == EBonusType.MinusAfterIIN)
                {
                    continue;
                }
                if (part == 1 && dr.XBonusType != EBonusType.MinusAfterIIN)
                {
                    continue;
                }

                decimal v = 0.0M;
                if (dr.IsIDANull())
                {
                    v = KlonsData.RoundA(dr.RATE / (decimal)divby, 2);
                    if (dr.AMOUNT != v)
                    {
                        dr.AMOUNT = v;
                    }
                    v += GetRoundingError(dr.RATE, divby);
                }
                else
                {
                    v = dr.RATE;
                    if (dr.AMOUNT != v)
                    {
                        dr.AMOUNT = v;
                    }
                }
                var pfx = AddRow(si, dr, dr.RATE, v, divby);
                ret.Add(pfx);
            }
            return(ret);
        }
Example #22
0
        public void FillLinkedRow(SalaryInfo target)
        {
            decimal ratio = target._AMOUNT_BEFORE_IIN / TotalSI._AMOUNT_BEFORE_IIN;

            target._IIN_EXEMPT_UNTAXED_MINIMUM   = KlonsData.RoundA(TotalSI._IIN_EXEMPT_UNTAXED_MINIMUM * ratio, 2);
            target._IIN_EXEMPT_DEPENDANTS        = KlonsData.RoundA(TotalSI._IIN_EXEMPT_DEPENDANTS * ratio, 2);
            target._IIN_EXEMPT_INVALIDITY        = KlonsData.RoundA(TotalSI._IIN_EXEMPT_INVALIDITY * ratio, 2);
            target._IIN_EXEMPT_NATIONAL_MOVEMENT = KlonsData.RoundA(TotalSI._IIN_EXEMPT_NATIONAL_MOVEMENT * ratio, 2);
            target._IIN_EXEMPT_RETALIATION       = KlonsData.RoundA(TotalSI._IIN_EXEMPT_RETALIATION * ratio, 2);

            /*
             * target._PLUS_PF_NOTTAXED = Math.Round(total._PLUS_PF_NOTTAXED * ratio, 2);
             * target._PLUS_PF_TAXED = Math.Round(total._PLUS_PF_TAXED * ratio, 2);
             * target._PLUS_LI_NOTTAXED = Math.Round(total._PLUS_PF_NOTTAXED * ratio, 2);
             * target._PLUS_LI_TAXED = Math.Round(total._PLUS_PF_TAXED * ratio, 2);
             * target._PLUS_HI_NOTTAXED = Math.Round(total._PLUS_PF_NOTTAXED * ratio, 2);
             * target._PLUS_HI_TAXED = Math.Round(total._PLUS_PF_TAXED * ratio, 2);
             */
        }
Example #23
0
        public ErrorList CalcWorkPayTAvPay(SalaryCalcTInfo scti)
        {
            if (!AvPayCalcRequired)
            {
                return(new ErrorList());
            }
            TotalRow = scti.TotalSI;
            //TotalRow.ClearSalaryAvPayPart();

            var sis = scti.LinkedSCI.Select(x => x.SI).ToArray();

            SummAvPayTime2(TotalRow, sis);

            //uses avcalc from LinkedSCI[0] and applies to TotalRow
            LinkedWorkPayCalcs[0].DoAvPay(scti.SRS.TotalRow, TotalRow, null);

            for (int i = 0; i < scti.LinkedSCI.Length; i++)
            {
                var lsci = scti.LinkedSCI[i];
                var wpc  = LinkedWorkPayCalcs[i];
                wpc.TotalRow = lsci.SI;

                var err = wpc.CalcPayWithAvPay(lsci.SR, TotalRow);
                if (err.HasErrors)
                {
                    return(err);
                }

                //TotalRow.AddSalaryAvPayPart(wpc.TotalRow);
            }

            TotalRow._SALARY = TotalRow.SumSalary();
            TotalRow.AddAvPay();

            MakeAvPayExactSum();

            if (PreparingReport)
            {
                PrepareListT();
            }
            return(new ErrorList());
        }
Example #24
0
        public static List <SalaryRepRow2> MakeReport2(SalarySheetInfo sh)
        {
            var ret = new List <SalaryRepRow2>();
            var drs = sh.DR_algas_lapa.KIND == 1 ?
                      sh.DR_algas_lapa.GetSALARY_SHEETS_RRowsByFK_SALARY_SHEETS_R_IDST().OrderBy(d => d.SNR) :
                      sh.DR_algas_lapa.GetSALARY_SHEETS_RRowsByFK_SALARY_SHEETS_R_IDS().OrderBy(d => d.SNR);
            var drsa = drs.ToArray();

            for (int i = 0; i < drsa.Length; i++)
            {
                var dr = drsa[i];
                var si = new SalaryInfo();
                si.SetFromRow(dr);
                var reprow = new SalaryRepRow2();
                reprow.SetFrom(si);
                reprow.SNR = i + 1;
                ret.Add(reprow);
            }
            return(ret);
        }
Example #25
0
        public void PrepareListT()
        {
            if (LinkedWorkPayCalcs.Length == 1)
            {
                var w0 = LinkedWorkPayCalcs[0];
                w0.PrepareList(w0.PositionTitle);
                ReportRows = w0.ReportRows;
                JoinRows   = w0.JoinRows;
                return;
            }

            ReportRows.Add(TotalRow);
            var tjr = new WorkPayCalcJoinRow();

            tjr.Caption = "Kopā amati";
            JoinRows.Add(tjr);

            var emptyrow     = new SalaryInfo();
            var emptyjoinrow = new WorkPayCalcJoinRow()
            {
                IsTitle = true
            };

            for (int i = 0; i < LinkedWorkPayCalcs.Length; i++)
            {
                ReportRows.Add(emptyrow);
                JoinRows.Add(emptyjoinrow);

                var wpc = LinkedWorkPayCalcs[i];
                var pos = wpc.PositionTitle;

                ReportRows.Add(emptyrow);
                var jr = new WorkPayCalcJoinRow();
                jr.Caption = pos;
                jr.IsTitle = true;
                JoinRows.Add(jr);

                ReportRows.AddRange(wpc.ReportRows);
                JoinRows.AddRange(wpc.JoinRows);
            }
        }
Example #26
0
        public void CalcWorkPayT(SalaryCalcTInfo scti)
        {
            TotalRow = scti.TotalSI;
            var sr = scti.SRS;

            TotalRow._CALENDAR_DAYS     = sr.SalarySheet.CalendarMonth.DaysInMonth;
            TotalRow._CALENDAR_DAYS_USE = sr.CountCalendarDays();

            var dlrowlist = sr.GetDLRowSetList();

            dlrowlist.CountPlanMonth(TotalRow, sr.SalarySheet.MDT1, sr.SalarySheet.MDT2);
            dlrowlist.CountTotalPlan(TotalRow, sr.SalarySheet.MDT1, sr.SalarySheet.MDT2);
            dlrowlist.CountTotalFact(TotalRow, sr.SalarySheet.MDT1, sr.SalarySheet.MDT2);

            LinkedWorkPayCalcs = new WorkPayCalcInfo[scti.LinkedSCI.Length];

            for (int i = 0; i < scti.LinkedSCI.Length; i++)
            {
                var lsci = scti.LinkedSCI[i];
                var wpc  = new WorkPayCalcInfo(PreparingReport);
                wpc.CalcWorkPay(lsci.SR, lsci.SI);
                TotalRow.AddSalary(lsci.SI);

                if (wpc.AvPayCalcRequired)
                {
                    AvPayCalcRequired = true;
                }
                lsci.WorkPayCalc      = wpc;
                wpc.PositionTitle     = lsci.SR.GetPositionTitle();
                LinkedWorkPayCalcs[i] = wpc;
            }

            TotalRow._SALARY = TotalRow.SumSalary();
            TotalRow.SumForAvPay();

            if (PreparingReport && !AvPayCalcRequired)
            {
                PrepareListT();
            }
        }
Example #27
0
        private void CalcWorkPayAvPay(SalarySheetRowSetInfo sr, SalaryInfo si)
        {
            TotalRow = si;

            var sis = LinkedWorkPayCalcs.Select(x => x.TotalRow).ToArray();

            SummAvPayTime2(TotalRow, sis);

            LinkedWorkPayCalcs[0].DoAvPay(sr.TotalRow, TotalRow, null);

            for (int i = 0; i < sr.LinkedRows.Length; i++)
            {
                var lr  = sr.LinkedRows[i];
                var wpc = LinkedWorkPayCalcs[i];
                wpc.CalcPayWithAvPay(lr, TotalRow);
                //TotalRow.AddSalaryAvPayPart(wpc.TotalRow);
            }

            TotalRow._SALARY = TotalRow.SumSalary();
            TotalRow.AddAvPay();

            MakeAvPayExactSum();
        }
Example #28
0
        public void WriteTo(SalaryInfo si)
        {
            si._VACATION_ADVANCE_PREV    = AdvancePrev;
            si._VACATION_CASH_NEXT       = VcrNext.Cash;
            si._VACATION_ADVANCE_CURRENT = 0.0M;
            si._VACATION_ADVANCE_NEXT    = 0.0M;

            si._VACATION_PAY_PREV = VcrPrevCurrent.Pay;
            si._VACATION_DNS_PREV = VcrPrevCurrent.DNS;
            //si._VACATION_DDS_PREV = VcrPrevCurrent.DDS;
            si._VACATION_IIN_PREV = VcrPrevCurrent.IIN;

            si._VACATION_DAYS_CURRENT  = VcrCurrent.Days + VcrCompensation.Days;
            si._VACATION_HOURS_CURRENT = VcrCurrent.Hours;
            si._VACATION_PAY_CURRENT   = VcrCurrent.Pay + VcrCompensation.Pay;

            si._VACATION_DAYS_NEXT  = VcrNext.Days;
            si._VACATION_HOURS_NEXT = VcrNext.Hours;
            si._VACATION_PAY_NEXT   = VcrNext.Pay;
            si._VACATION_DNS_NEXT   = VcrNext.DNS;
            //si._VACATION_DDS_NEXT = VcrNext.DDS;
            si._VACATION_IIN_NEXT        = VcrNext.IIN;
            si._VACATION_IIN_REDUCE_NEXT = IINReverse;
        }
Example #29
0
        public void SummAvPayTime2(SalaryInfo totalsi, SalaryInfo[] sis)
        {
            totalsi.FACT_AVPAY_FREE_DAYS_2            = 0;
            totalsi.FACT_AVPAY_FREE_HOURS_2           = 0.0f;
            totalsi.FACT_AVPAY_WORK_DAYS_2            = 0;
            totalsi.FACT_AVPAY_WORKINHOLIDAYS_2       = 0;
            totalsi.FACT_AVPAY_HOURS_2                = 0.0f;
            totalsi.FACT_AVPAY_HOURS_OVERTIME_2       = 0.0f;
            totalsi.FACT_AVPAY_HOLIDAYS_HOURS_2       = 0.0f;
            totalsi.FACT_AVPAY_HOLIDAYS_HOURS_OVERT_2 = 0.0f;

            for (int i = 0; i < sis.Length; i++)
            {
                var si = sis[i];
                totalsi.FACT_AVPAY_FREE_DAYS_2            += si.FACT_AVPAY_FREE_DAYS_2;
                totalsi.FACT_AVPAY_FREE_HOURS_2           += si.FACT_AVPAY_FREE_HOURS_2;
                totalsi.FACT_AVPAY_WORK_DAYS_2            += si.FACT_AVPAY_WORK_DAYS_2;
                totalsi.FACT_AVPAY_WORKINHOLIDAYS_2       += si.FACT_AVPAY_WORKINHOLIDAYS_2;
                totalsi.FACT_AVPAY_HOURS_2                += si.FACT_AVPAY_HOURS_2;
                totalsi.FACT_AVPAY_HOURS_OVERTIME_2       += si.FACT_AVPAY_HOURS_OVERTIME_2;
                totalsi.FACT_AVPAY_HOLIDAYS_HOURS_2       += si.FACT_AVPAY_HOLIDAYS_HOURS_2;
                totalsi.FACT_AVPAY_HOLIDAYS_HOURS_OVERT_2 += si.FACT_AVPAY_HOLIDAYS_HOURS_OVERT_2;
            }
        }
Example #30
0
        public SalaryInfo GetPrevRow()
        {
            if (Row.XType != ESalarySheetRowType.Total)
            {
                return(GetPrevRowA());
            }

            var dt1           = SalarySheet.DT1;
            var dt2           = SalarySheet.DT2;
            var idp           = Row.IDP;
            var id            = Row.ID;
            var dtp1          = dt2.FirstDayOfMonth().AddMonths(-1);
            var dtp2          = dtp1.LastDayOfMonth();
            var table_lapas_r = MyData.DataSetKlons.SALARY_SHEETS_R;

            var dr_lapas_r = table_lapas_r.WhereX(
                d =>
                d.ID != id &&
                d.IDP == idp &&
                d.IsIDAMNull() &&
                d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.DT2 >= dtp1 &&
                d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.DT2 <= dtp2 &&
                d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.IS_TEMP == 0 &&
                d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.XKind == ESalarySheetKind.Total
                ).WithMaxOrDefault(d => d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS.DT2);

            if (dr_lapas_r == null)
            {
                return(null);
            }

            var ret = new SalaryInfo();

            ret.SetFromRow(dr_lapas_r);
            return(ret);
        }