예제 #1
0
        public void PrepareListT(SickDayCalcInfo[] sdcs, string[] positions)
        {
            var emptyrow = new SickDayCalcRow()
            {
                IsTitle = true
            };

            var r1 = new SickDayCalcRow()
            {
                Caption = "Kopā amati", IsTitle = true
            };

            Rows.Add(r1);
            Rows.AddRange(TotalSDCI.Rows);

            for (int i = 0; i < sdcs.Length; i++)
            {
                //Rows.Add(emptyrow);
                r1 = new SickDayCalcRow()
                {
                    Caption = positions[i], IsTitle = true
                };
                Rows.Add(r1);
                Rows.AddRange(sdcs[i].Rows);
            }
        }
예제 #2
0
 public void AddA(SickDayCalcRow sdc)
 {
     HoursCount   += sdc.HoursCount;
     HoursCount75 += sdc.HoursCount75;
     HoursCount80 += sdc.HoursCount80;
     SickDayPay   += sdc.SickDayPay;
     SickDayPay75 += sdc.SickDayPay75;
     SickDayPay80 += sdc.SickDayPay80;
 }
예제 #3
0
        public void CountSickDays(SickDayCalcRow sdci, DateTime dt1, DateTime dt2, int skipdays)
        {
            var list = new TimeSheetRowSetList()
            {
                this
            };

            list.CountSickDays(sdci, dt1, dt2, skipdays);
        }
예제 #4
0
 public void AddB(SickDayCalcRow sdc)
 {
     DaysCount    += sdc.DaysCount;
     DaysCount0   += sdc.DaysCount0;
     DaysCount75  += sdc.DaysCount75;
     DaysCount80  += sdc.DaysCount80;
     HoursCount   += sdc.HoursCount;
     HoursCount75 += sdc.HoursCount75;
     HoursCount80 += sdc.HoursCount80;
 }
예제 #5
0
 public SickDayCalcInfo(bool filllist)
 {
     TotalRow         = new SickDayCalcRow();
     TotalRow.IsTotal = true;
     PreparingReport  = filllist;
     if (PreparingReport)
     {
         Rows = new List <SickDayCalcRow>();
     }
 }
예제 #6
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;
 }
예제 #7
0
        public void MakeReport(int idsar, string title)
        {
            var table_sar = MyData.DataSetKlons.TIMESHEET_LISTS;
            var dr_sar    = table_sar.FindByID(idsar);

            if (dr_sar == null)
            {
                return;
            }
            var   drs_r    = dr_sar.GetTIMESHEET_LISTS_RRows();
            var   dt1      = new DateTime(dr_sar.YR, dr_sar.MT, 1);
            var   dt2      = dt1.LastDayOfMonth();
            var   sickc    = new SickDayCalcRow();
            int   vacdays  = 0;
            float vachours = 0.0f;

            ReportRows  = new List <TimeReportRow2>();
            ReportRowsA = new List <TimeReportRow2a>();

            foreach (var dr_r in drs_r)
            {
                var trr  = new TimeReportRow2();
                var trr2 = new TimeReportRow2a(trr);

                var pdat     = DataTasks.GetPersonNameAndPK(dr_r.IDP);
                var postitle = DataTasks.GetPositionTitle(dr_r.IDAM);
                trr.Caption = string.Format("{0} {1}, {2}",
                                            pdat[0], pdat[1], postitle);

                var rowset = dr_r.GetDLRowSet();
                rowset.CountPlan(trr, dt1, dt2);
                rowset.CountFact(trr, dt1, dt2);

                rowset.CountSickDays2(dt1, dt2, out int sickdaysA, out int sickdaysB, out int sickdaysN);
                trr._SICKDAYS  = sickdaysA;
                trr2.SickdaysA = sickdaysA;
                trr2.SickdaysB = sickdaysB;
                trr2.SickdaysN = sickdaysN;

                rowset.CountVacationTime(dt1, dt2, out vacdays, out vachours);
                trr._VACATION_DAYS_CURRENT  = vacdays;
                trr._VACATION_HOURS_CURRENT = vachours;

                ReportRows.Add(trr);
                ReportRowsA.Add(trr2);
            }

            ShowReport(dt1.Year, dt1.Month, dr_sar.DESCR);
        }
예제 #8
0
        public void PrepareListA(string position)
        {
            var emptyrow = new SickDayCalcRow()
            {
                IsTitle = true
            };
            var r1 = new SickDayCalcRow()
            {
                Caption = "Kopā amati", IsTitle = true
            };

            Rows.Add(r1);
            Rows.AddRange(TotalSDCI.Rows);
            //Rows.Add(emptyrow);
            r1 = new SickDayCalcRow()
            {
                Caption = position, IsTitle = true
            };
            Rows.Add(r1);
        }
예제 #9
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());
        }
예제 #10
0
        public void CountSickDays(SickDayCalcRow sdi, DateTime dt1, DateTime dt2, int skipdays)
        {
            int        i1 = dt1.Day;
            int        i2 = dt2.Day;
            float      vp;
            EDayPlanId daycodeplan = EDayPlanId.None;
            EDayFactId daycodefact = EDayFactId.None;
            bool       isPlanWorkDay;


            for (int i = i1; i <= i2; i++)
            {
                bool dayadded = false;

                for (int j = 0; j < this.Count; j++)
                {
                    var dlset = this[j];

                    daycodeplan = dlset.Plan.DxPlan[i - 1];
                    daycodefact = dlset.Fact.DxFact[i - 1];

                    if (daycodeplan == EDayPlanId.None)
                    {
                        continue;
                    }
                    if (daycodefact == EDayFactId.X || daycodefact == EDayFactId.None)
                    {
                        continue;
                    }

                    isPlanWorkDay = daycodeplan == EDayPlanId.DD || daycodeplan == EDayPlanId.DDSD ||
                                    daycodeplan == EDayPlanId.SDDD;

                    vp = dlset.Plan.Vx[i - 1];

                    if (!isPlanWorkDay)
                    {
                        continue;
                    }
                    if (vp == 0.0f)
                    {
                        continue;
                    }

                    if (!dayadded)
                    {
                        skipdays++;
                        sdi.DaysCount++;
                    }
                    sdi.HoursCount += vp;

                    if (skipdays == 1)
                    {
                        if (!dayadded)
                        {
                            sdi.DaysCount0++;
                        }
                    }
                    else if (skipdays == 2 || skipdays == 3)
                    {
                        if (!dayadded)
                        {
                            sdi.DaysCount75++;
                        }
                        sdi.HoursCount75 += vp;
                    }
                    else if (skipdays >= 4 && skipdays <= 10)
                    {
                        if (!dayadded)
                        {
                            sdi.DaysCount80++;
                        }
                        sdi.HoursCount80 += vp;
                    }
                    dayadded = true;
                }
            }
        }