Exemplo n.º 1
0
 public void SetFromPersonsDataRow(KlonsADataSet.PERSONSRow dr)
 {
     ID         = dr.ID;
     FNAME      = dr.FNAME;
     LNAME      = dr.LNAME;
     GENDER     = dr.GENDER;
     BIRTH_DATE = dr.BIRTH_DATE;
     //PERSON_CODE = dr.PK;
     ADDRESS          = dr.ADDRESS;
     CITY             = dr.CITY;
     STATE            = dr.STATE;
     COUNTRY          = dr.COUNTRY;
     POSTAL_CODE      = dr.POSTAL_CODE;
     TERRITORIAL_CODE = dr.TERRITORIAL_CODE;
     PASSPORT_NO      = dr.PASSPORT_NO;
     PASSPORT_ISSUER  = dr.PASSPORT_ISSUER;
     PASSPORT_DATE    = dr.IsPASSPORT_DATENull() ? (DateTime?)null : dr.PASSPORT_DATE;
     PHONE            = dr.PHONE;
     EMAIL            = dr.EMAIL;
     BANK_ID          = dr.IsBANK_IDNull() ? (int?)null : dr.BANK_ID;
     if (BANK_ID != null)
     {
         SetBank(BANK_ID.Value);
     }
     BANK_ACC      = dr.BANK_ACC;
     COMMENTS      = dr.COMMENTS;
     PAY0          = dr.PAY0;
     IIN0          = dr.IIN0;
     ADVANCE       = dr.ADVANCE;
     VACATION_DAYS = dr.VACATION_DAYS;
 }
Exemplo n.º 2
0
        public KlonsADataSet.PERSONS_RRow GetPersonR(KlonsADataSet.PERSONSRow drp, DateTime dt)
        {
            var dr = drp.GetPERSONS_RRows().WhereX(
                d =>
                d.EDIT_DATE <= dt
                ).WithMaxOrDefault(d => d.EDIT_DATE);

            return(dr);
        }
Exemplo n.º 3
0
        private PeriodInfo GetUntMinFromDB(KlonsADataSet.PERSONSRow drpr, DateTime dt1, DateTime dt2)
        {
            var um0 = new UntMinData();

            um0.Dt1 = dt1;
            um0.Dt2 = dt2;
            var ret = new PeriodInfo();

            ret.DateFirst = dt1;
            ret.DateLast  = dt2;
            var ret2 = new PeriodInfo();

            ret2.DateFirst = dt1;
            ret2.DateLast  = dt2;
            ret2.Item1     = um0;
            ret.LinkedPeriods.Add(ret2);

            var pi = new PeriodInfo();

            pi.DateFirst = dt1;
            pi.DateLast  = dt2;
            var drs = drpr.GetUNTAXED_MINRows()
                      .OrderBy(d => d.ONDATE)
                      .ToArray();

            if (drs.Length == 0)
            {
                return(ret);
            }
            var rt = pi.ReadDateListFilter(drs, d => d.ONDATE);

            if (rt != PeriodInfo.ERetReadStartEndList.OK ||
                pi.LinkedPeriods.Count == 0)
            {
                return(ret);
            }

            ret.LinkedPeriods.Clear();
            foreach (var pi2 in pi.LinkedPeriods)
            {
                var dr_untmin = (pi2.Item1 as KlonsADataSet.UNTAXED_MINRow);
                var um1       = new UntMinData();
                um1.Dt1         = pi2.DateFirst;
                um1.Dt2         = pi2.DateLast;
                um1.UntMin      = dr_untmin.UNTAXED_MIN;
                um1.IINRateType = dr_untmin.IIN_RATE_TYPE;
                var pi_out = new PeriodInfo();
                pi_out.DateFirst = um1.Dt1;
                pi_out.DateLast  = um1.Dt2;
                pi_out.Item1     = um1;
                ret.LinkedPeriods.Add(pi_out);
            }
            return(ret);
        }
Exemplo n.º 4
0
        // returns -1 if no data; 0 - reduced rate; 1 - full rate
        public static int GetIINRateType(KlonsADataSet.PERSONSRow drpr, DateTime dt)
        {
            var dr_um = drpr.GetUNTAXED_MINRows()
                        .WhereX(d => d.ONDATE <= dt)
                        .OrderBy(d => d.ONDATE)
                        .LastOrDefault();

            if (dr_um == null)
            {
                return(-1);
            }
            return(dr_um.IIN_RATE_TYPE);
        }
Exemplo n.º 5
0
        public static decimal GetIINUntaxedMinimum(KlonsADataSet.PERSONSRow drpr, DateTime dt)
        {
            var dr_um = drpr.GetUNTAXED_MINRows()
                        .WhereX(d => d.ONDATE <= dt)
                        .OrderBy(d => d.ONDATE)
                        .LastOrDefault();

            if (dr_um == null)
            {
                return(0.0M);
            }
            return(dr_um.UNTAXED_MIN);
        }
Exemplo n.º 6
0
        public static decimal GetIINUntaxedMinimum2(KlonsADataSet.PERSONSRow drpr,
                                                    DateTime dt1, DateTime dt2)
        {
            var pi = new PeriodInfo();

            pi.DateFirst = dt1;
            pi.DateLast  = dt2;
            var drs = drpr.GetUNTAXED_MINRows()
                      .OrderBy(d => d.ONDATE)
                      .ToArray();

            if (drs.Length == 0)
            {
                return(0.0M);
            }
            var rt = pi.ReadDateListFilter(drs, d => d.ONDATE);

            if (rt != PeriodInfo.ERetReadStartEndList.OK ||
                pi.LinkedPeriods.Count == 0)
            {
                return(0.0M);
            }

            decimal daysinmonth = dt1.DaysInMonth();

            decimal sum    = 0.0M;
            decimal daysct = 0.0M;

            foreach (var pi2 in pi.LinkedPeriods)
            {
                daysct = (decimal)((pi2.DateLast - pi2.DateFirst).TotalDays + 1);
                decimal rate = (pi2.Item1 as KlonsADataSet.UNTAXED_MINRow).UNTAXED_MIN;
                sum += rate * daysct / daysinmonth;
            }
            daysct = (decimal)((dt2 - dt1).TotalDays + 1);
            sum    = sum / daysct * daysinmonth;
            return(sum);
        }
Exemplo n.º 7
0
        public static string GetVacDaysNotUsed(KlonsADataSet.PERSONSRow dr_person, DateTime dt, RepRowVacDays rrvd)
        {
            rrvd.Clear();

            if (dr_person == null)
            {
                throw new ArgumentException();
            }
            int idp = dr_person.ID;

            rrvd.IDP  = idp;
            rrvd.Name = dr_person.ZNAME;

            var drs_events = dr_person.GetEVENTSRows();

            var drsn_hirefire = drs_events
                                .Where(d =>
                                       (d.IDN == (int)EEventId.Pieņemts ||
                                        d.IDN == (int)EEventId.Atlaists) &&
                                       d.DATE1 <= dt)
                                .OrderBy(d => d.DATE1).ToArray();

            if (drsn_hirefire.Length == 0)
            {
                return("OK");
            }

            var pi_hirefire = new PeriodInfo();

            var rt1 = pi_hirefire.ReadStartEndList(drsn_hirefire,
                                                   isStartItem: it => it.IDN == (int)EEventId.Pieņemts,
                                                   getItemDate: it => it.DATE1);

            switch (rt1)
            {
            case PeriodInfo.ERetReadStartEndList.BadDates:
                return("Pieņemts/atlaists notikumiem ir nekorekti datumi.");

            case PeriodInfo.ERetReadStartEndList.BadStart:
            case PeriodInfo.ERetReadStartEndList.BadEnd:
                return("Pieņemts/atlaists notikumiem ir nekorekta secība.");
            }

            var pi_last = pi_hirefire.LinkedPeriods[pi_hirefire.LinkedPeriods.Count - 1];

            if (pi_last.DateLast < dt)
            {
                return("OK");
            }

            if (pi_last.DateLast == dt)
            {
                var dr_last_ev = drsn_hirefire[drsn_hirefire.Length - 1];
                if (dr_last_ev.EventCode == EEventId.Atlaists)
                {
                    rrvd.Compansated = dr_last_ev.DAYS;
                }
            }

            if (pi_hirefire.LinkedPeriods.Count == 1)
            {
                rrvd.ToUse = dr_person.VACATION_DAYS;
            }

            var dt1 = pi_last.DateFirst;
            var dt2 = pi_last.DateLast;

            if (dt2 > dt)
            {
                dt2 = dt;
            }
            int days_in_work = (dt2 - dt1).Days + 1;

            rrvd.ToUse += (float)Math.Round((float)days_in_work * 28f / 365f, 2);

            var drsn_vac = drs_events
                           .Where(d =>
                                  d.IDP == idp &&
                                  d.IDN == 101 &&
                                  d.DATE1 <= pi_last.DateLast &&
                                  d.DATE2 >= pi_last.DateFirst)
                           .OrderBy(d => d.DATE1).ToArray();

            var pi_vac = new PeriodInfo();

            var rt2 = pi_vac.ReadPeriodList(drsn_vac,
                                            getItemDate1: it => it.DATE1,
                                            getItemDate2: it => it.DATE2);

            switch (rt2)
            {
            case PeriodInfo.ERetReadPeriodList.BadDates:
                return("Atvaļinājuma notikumam beigu datums \nir mazāks par sākuma datumu.");

            case PeriodInfo.ERetReadPeriodList.PeriodsOverlap:
                return("Atvaļinājuma notikumai pārklājas");
            }


            foreach (var dr_vac in drsn_vac)
            {
                rrvd.Used += dr_vac.DAYS;
            }
            rrvd.Used = (float)Math.Round(rrvd.Used, 2);

            rrvd.NotUsed = rrvd.ToUse - rrvd.Used - rrvd.Compansated;
            rrvd.NotUsed = (float)Math.Round(rrvd.NotUsed, 2);

            return("OK");
        }