Пример #1
0
        public void DeleteRow(KlonsADataSet.SALARY_SHEETS_RRow dr_lapas_r)
        {
            var table_algas_ps = MyData.DataSetKlons.SALARY_PLUSMINUS;

            CheckTotalListForPeriod();
            int idp    = dr_lapas_r.IDP;
            int idam   = dr_lapas_r.IDAM;
            var drs_ps = table_algas_ps.WhereX(
                d =>
                d.IDSX == dr_lapas_r.IDSX &&
                !d.IsIDANull() &&
                d.IDA == idam
                ).ToArray();

            foreach (var dr in drs_ps)
            {
                dr.Delete();
            }
            dr_lapas_r.Delete();
            var salary_sheet_row = new SalarySheetRowSetInfo();
            var err = salary_sheet_row.SetUpFromRowB(this, idp);

            if (err.Count > 0)
            {
                return;
            }
            if (salary_sheet_row.DrLinkedRows.Length == 0 &&
                salary_sheet_row.DrTotalRow == null)
            {
                return;
            }
            salary_sheet_row.FillRow();
        }
Пример #2
0
        public ErrorList FillSheet()
        {
            if (DR_algas_lapa == null)
            {
                throw new Exception("Bad init.");
            }

            var error_list = new ErrorList();

            var drs = DR_algas_lapa.GetSALARY_SHEETS_RRowsByFK_SALARY_SHEETS_R_IDS();

            foreach (var dr in drs)
            {
                var salary_sheet_row = new SalarySheetRowSetInfo();
                var err = salary_sheet_row.SetUpFromRowB(this, dr.IDP);
                error_list.AddRange(err);
                if (err.Count > 0)
                {
                    continue;
                }
                err = salary_sheet_row.FillRow();
                error_list.AddRange(err);
            }

            return(error_list);
        }
Пример #3
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);
        }
Пример #4
0
 public ErrorList CheckLinkedRows(int idp, bool force = false)
 {
     if (SalarySheetRowSet != null && !force)
     {
         return(new ErrorList());
     }
     SalarySheetRowSet = new SalarySheetRowSetInfo();
     return(SalarySheetRowSet.SetUpFromRowA(this));
 }
Пример #5
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();
            }
        }
Пример #6
0
        public ErrorList CalcList(KlonsADataSet.SALARY_SHEETS_RRow dr)
        {
            var dr_sar = dr.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS;
            var srs    = new SalarySheetRowSetInfo();
            var err    = srs.SetUpFromRowX(dr);

            if (err.HasErrors)
            {
                return(err);
            }
            return(CalcList(srs.SalarySheet, srs.IDP, srs.TotalPersonPay));
        }
Пример #7
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)
     {
     }
 }
Пример #8
0
        public bool GetRow(int addmonth, out SalarySheetRowSetInfo row)
        {
            row = null;
            var table_sar   = MyData.DataSetKlons.SALARY_SHEETS;
            var table_sar_r = MyData.DataSetKlons.SALARY_SHEETS_R;

            int yr = SalarySheet.YR;
            int mt = SalarySheet.MT;

            Utils.AddMonths(ref yr, ref mt, addmonth);

            int idp = IDP;

            var drs = table_sar_r.WhereX(
                d =>
            {
                var dr_sar = d.SALARY_SHEETSRowByFK_SALARY_SHEETS_R_IDS;
                return
                (d.IDP == idp &&
                 d.IsIDAMNull() &&
                 dr_sar.YR == yr &&
                 dr_sar.MT == mt);
            }).ToArray();

            if (drs.Length == 0)
            {
                return(true);
            }
            var dr = drs[0];

            var shr = new SalarySheetRowSetInfo();
            var err = shr.SetUpFromRowX(dr);

            if (err != null && err.Count > 0)
            {
                return(false);
            }

            row = shr;

            return(true);
        }
Пример #9
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();
        }
Пример #10
0
        public ErrorList CalcSickDaysA(SalarySheetRowSetInfo srs)
        {
            var dt1  = srs.SalarySheet.DT1;
            var dt2  = srs.SalarySheet.DT2;
            var mdt1 = srs.SalarySheet.MDT1;
            var mdt2 = srs.SalarySheet.MDT2;
            var mdt3 = srs.SalarySheet.MDT1.AddMonths(-1);

            var ps = srs.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 = srs.GetDLRowSetList(-1);
                    if (prevdlrowset != null)
                    {
                        var dtp2 = dtp1.LastDayOfMonth();
                        prevdlrowset.CountSickDays(sdi, dtp1, dtp2, 0);

                        d1 = (dtp2 - dtp1).Days + 1;
                        if (d1 <= 10)
                        {
                            var dlrowset = srs.GetDLRowSetList();
                            dlrowset.CountSickDays(sdi, mdt1, pi.DateLast, d1);
                        }
                    }
                }
                else
                {
                    var dlrowset = srs.GetDLRowSetList();
                    dlrowset.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(srs.TotalRow);

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

            decimal _AvPayRate = AvPayRateDay;

            if (IsAggregatedTimeRate(srs.LinkedRows[0]))
            {
                _AvPayRate = AvPayRateCalendarDay;
            }
            TotalRow.AvPayRate = _AvPayRate;

            TotalRow.SickDayPay75 = KlonsData.RoundA(_AvPayRate * TotalRow.DaysCount75 * 0.75M, 2);
            TotalRow.SickDayPay80 = KlonsData.RoundA(_AvPayRate * TotalRow.DaysCount80 * 0.8M, 2);
            TotalRow.SickDayPay   = TotalRow.SickDayPay75 + TotalRow.SickDayPay80;

            return(new ErrorList());
        }