예제 #1
0
 public void CheckBeforeReport()
 {
     if (AvPayCalc == null)
     {
         AvPayCalc = new AvPayCalcInfo(true);
     }
     if (SickDayCalc == null)
     {
         SickDayCalc = new SickDayCalcInfo(true);
     }
     if (VacationCalc == null)
     {
         VacationCalc = new VacationCalcInfo(true, SI._CALC_VER);
     }
     if (WorkPayCalc == null)
     {
         WorkPayCalc = new WorkPayCalcInfo(true);
     }
     if (CalcR == null)
     {
         CalcR = new CalcRInfo(true, SI._CALC_VER);
     }
     if (BonusCalc == null)
     {
         BonusCalc = new BonusCalcInfo(CalcR, (KlonsADataSet.SALARY_PLUSMINUSRow[])null, true);
     }
 }
예제 #2
0
        public ErrorList CalcSickDays()
        {
            TotalSI._SICKDAYS     = 0;
            TotalSI._SICKDAYS_PAY = 0.0M;

            var sc = new SickDayCalcInfo(PreparingReport);

            sc.SetAvPayFrom(this);

            var err = sc.CalcSickDaysT(this);

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

            sc.SetAvPayTo(this);

            if (sc.TotalRow.DaysCount == 0)
            {
                return(err);
            }

            TotalSI._SICKDAYS     = sc.TotalRow.DaysCount;
            TotalSI._SICKDAYS_PAY = sc.TotalRow.SickDayPay;

            if (PreparingReport)
            {
                SickDayCalc = sc;
            }

            return(new ErrorList());
        }
예제 #3
0
 public void SumTotalPay(SickDayCalcInfo[] sdcs, SickDayCalcInfo totalsdc)
 {
     TotalRow = new SickDayCalcRow();
     for (int i = 0; i < sdcs.Length; i++)
     {
         var sr = sdcs[i].TotalRow;
         TotalRow.AddA(sr);
     }
     TotalRow.DaysCount   = totalsdc.TotalRow.DaysCount;
     TotalRow.DaysCount0  = totalsdc.TotalRow.DaysCount0;
     TotalRow.DaysCount75 = totalsdc.TotalRow.DaysCount75;
     TotalRow.DaysCount80 = totalsdc.TotalRow.DaysCount80;
 }
예제 #4
0
 public void SetAvPayFrom(SickDayCalcInfo sc)
 {
     if (sc.AvPayCalc != null)
     {
         AvPayCalc = sc.AvPayCalc;
     }
     if (IsAvPayCalcDone)
     {
         return;
     }
     IsAvPayCalcDone = sc.IsAvPayCalcDone;
     AvPayRateHour   = sc.AvPayRateHour;
     AvPayRateDay    = sc.AvPayRateDay;
 }
예제 #5
0
        public ErrorList CalcSickDays()
        {
            var sc = new SickDayCalcInfo(PreparingReport);

            var err = sc.CalcSickDays(this);

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

            if (PreparingReport)
            {
                SickDayCalc = sc;
            }
            return(err);
        }
예제 #6
0
        public ErrorList CalcSickDaysT(SalaryCalcTInfo scti)
        {
            var sr = scti.SRS.TotalRow;

            sr.CheckLinkedRows(sr.Row.IDP);

            var err = new ErrorList();

            scti.TotalSI._SICKDAYS     = 0;
            scti.TotalSI._SICKDAYS_PAY = 0.0M;

            if (sr.IsSingleRow())
            {
                err = CalcSickDaysB(sr, null);
                if (err.HasErrors)
                {
                    return(err);
                }

                scti.TotalSI._SICKDAYS     = TotalRow.DaysCount;
                scti.TotalSI._SICKDAYS_PAY = TotalRow.SickDayPay;

                if (PreparingReport)
                {
                    scti.LinkedSCI[0].SickDayCalc = this;
                }
                return(err);
            }

            TotalSDCI = new SickDayCalcInfo(PreparingReport);
            TotalSDCI.SetAvPayFrom(this);
            err = TotalSDCI.CalcSickDaysA(sr.SalarySheetRowSet);
            if (err.HasErrors)
            {
                return(err);
            }
            SetAvPayFrom(TotalSDCI);

            if (TotalSDCI.TotalRow.DaysCount == 0)
            {
                new ErrorList();
            }


            SickDayCalcInfo[] sdcs      = null;
            string[]          positions = null;

            var srs = sr.SalarySheetRowSet;

            sdcs      = new SickDayCalcInfo[srs.LinkedRows.Length];
            positions = new string[srs.LinkedRows.Length];

            for (int i = 0; i < srs.LinkedRows.Length; i++)
            {
                var lr  = srs.LinkedRows[i];
                var sci = scti.LinkedSCI[i];
                var sdc = new SickDayCalcInfo(PreparingReport);
                positions[i] = lr.GetPositionTitle();
                sdcs[i]      = sdc;
                sdc.SetAvPayFrom(this);

                sci.SI._SICKDAYS     = 0;
                sci.SI._SICKDAYS_PAY = 0.0M;

                err = sdc.CalcSickDaysB(lr, TotalSDCI);
                if (err.HasErrors)
                {
                    return(err);
                }

                sci.SI._SICKDAYS     = sdc.TotalRow.DaysCount;
                sci.SI._SICKDAYS_PAY = sdc.TotalRow.SickDayPay;

                if (PreparingReport)
                {
                    sci.SickDayCalc = sdc;
                }
            }
            SumTotalPay(sdcs, TotalSDCI);

            scti.TotalSI._SICKDAYS     = TotalRow.DaysCount;
            scti.TotalSI._SICKDAYS_PAY = TotalRow.SickDayPay;

            if (PreparingReport)
            {
                PrepareListT(sdcs, positions);
            }

            return(new ErrorList());
        }
예제 #7
0
        public ErrorList CalcSickDaysB(SalarySheetRowInfo sr, SickDayCalcInfo totalsdci)
        {
            var dt1  = sr.SalarySheet.DT1;
            var dt2  = sr.SalarySheet.DT2;
            var mdt1 = sr.SalarySheet.MDT1;
            var mdt2 = sr.SalarySheet.MDT2;
            var mdt3 = sr.SalarySheet.MDT1.AddMonths(-1);

            var ps = sr.Events.SickDays.LinkedPeriods.Where(
                d =>
                d.EEventId == EEventId.Slimības_lapa_A &&
                d.DateLast >= dt1 &&
                d.DateLast <= dt2
                ).ToArray();

            if (ps.Length == 0)
            {
                return(new ErrorList());
            }

            int d1;

            SickDayCalcRow sdi = TotalRow;

            foreach (var pi in ps)
            {
                var dtp1 = pi.DateFirst;
                if (dtp1 < mdt3)
                {
                    continue;
                }

                d1 = 0;

                if (PreparingReport)
                {
                    sdi           = new SickDayCalcRow();
                    sdi.DateStart = pi.DateFirst;
                    sdi.DateEnd   = pi.DateLast;
                    Rows.Add(sdi);
                }


                if (dtp1 < mdt1)
                {
                    var prevdlrowset = sr.GetDLRowSet(-1, sr.Row.IDAM);
                    if (prevdlrowset != null)
                    {
                        var dtp2 = dtp1.LastDayOfMonth();
                        prevdlrowset.CountSickDays(sdi, dtp1, dtp2, 0);

                        d1 = (dtp2 - dtp1).Days + 1;
                        if (d1 <= 10)
                        {
                            sr.DLRows.CountSickDays(sdi, mdt1, pi.DateLast, d1);
                        }
                    }
                }
                else
                {
                    sr.DLRows.CountSickDays(sdi, pi.DateFirst, pi.DateLast, d1);
                }

                if (PreparingReport)
                {
                    TotalRow.AddB(sdi);
                }
            }

            if (PreparingReport)
            {
                Rows.Add(TotalRow);
                PrepareListA();
            }

            if (TotalRow.DaysCount == 0)
            {
                return(new ErrorList());
            }

            var err = GatAvPay(sr);

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

            decimal _AvPayRate = AvPayRateDay;

            if (IsAggregatedTimeRate(sr))
            {
                _AvPayRate = AvPayRateCalendarDay;
            }
            TotalRow.AvPayRate = _AvPayRate;

            if (totalsdci == null)
            {
                TotalRow.SickDayPay75 = KlonsData.RoundA(_AvPayRate * TotalRow.DaysCount75 * 0.75M, 2);
                TotalRow.SickDayPay80 = KlonsData.RoundA(_AvPayRate * TotalRow.DaysCount80 * 0.8M, 2);
            }
            else
            {
                TotalRow.SickDayPay75 = (decimal)TotalRow.HoursCount75 / (decimal)totalsdci.TotalRow.HoursCount75;
                TotalRow.SickDayPay80 = (decimal)TotalRow.HoursCount80 / (decimal)totalsdci.TotalRow.HoursCount80;
                TotalRow.SickDayPay75 = KlonsData.RoundA(TotalRow.SickDayPay75 * totalsdci.TotalRow.SickDayPay75, 2);
                TotalRow.SickDayPay80 = KlonsData.RoundA(TotalRow.SickDayPay80 * totalsdci.TotalRow.SickDayPay80, 2);
            }
            TotalRow.SickDayPay = TotalRow.SickDayPay75 + TotalRow.SickDayPay80;

            return(new ErrorList());
        }
예제 #8
0
        public ErrorList CalcSickDays(SalarySheetRowInfo sr)
        {
            var err = sr.CheckLinkedRows(sr.Row.IDP);

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

            if (sr.IsSingleRow())
            {
                err = CalcSickDaysB(sr, null);
                return(err);
            }

            TotalSDCI = new SickDayCalcInfo(PreparingReport);
            err       = TotalSDCI.CalcSickDaysA(sr.SalarySheetRowSet);
            if (err.HasErrors)
            {
                return(err);
            }

            if (TotalSDCI.TotalRow.DaysCount == 0)
            {
                new ErrorList();
            }

            SetAvPayFrom(TotalSDCI);

            SickDayCalcInfo[] sdcs      = null;
            string[]          positions = null;

            if (sr.Row.XType == ESalarySheetRowType.Total)
            {
                var srs = sr.SalarySheetRowSet;

                sdcs      = new SickDayCalcInfo[srs.LinkedRows.Length];
                positions = new string[srs.LinkedRows.Length];

                for (int i = 0; i < srs.LinkedRows.Length; i++)
                {
                    var lr  = srs.LinkedRows[i];
                    var sdc = new SickDayCalcInfo(PreparingReport);
                    positions[i] = lr.GetPositionTitle();
                    sdcs[i]      = sdc;
                    sdc.SetAvPayFrom(this);

                    err = sdc.CalcSickDaysB(lr, TotalSDCI);
                    if (err.HasErrors)
                    {
                        return(err);
                    }
                }
                SumTotalPay(sdcs, TotalSDCI);
                if (PreparingReport)
                {
                    PrepareListT(sdcs, positions);
                }
            }
            else
            {
                if (PreparingReport)
                {
                    PrepareListA(sr.GetPositionTitle());
                }
                err = CalcSickDaysB(sr, TotalSDCI);
                if (err.HasErrors)
                {
                    return(err);
                }
            }

            return(new ErrorList());
        }