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; }
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); }
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); }
// 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); }
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); }
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); }
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"); }