public void SetTo(PayFx pfx) { pfx.Ir = IIN_RATE / 100.0M; pfx.Ir2 = IIN_RATE2 / 100.0M; pfx.Sr = SI_RATE / 100.0M; pfx.IM = PayFx.GetIINMargin(DT1); pfx.IinEx = UNTAXED_MINIMUM + IINEX_DEPENDANTS + IINEX2 + IINEX_EXP; pfx.UsedIinEx = pfx.IinEx; pfx.HasProgressiveIIN = DT1 >= PayFx.ProgressiveIINStartDate; if (HAS_TAXDOC == null) { pfx.HasTaxDoc = pfx.IinEx > 0.0M; } else { pfx.HasTaxDoc = HAS_TAXDOC.Value; } pfx.Pay = PAY_TAXED; pfx.PayNs = PAY_NOSAI; pfx.PayNt = PAY_NOTTAXED; pfx.DNS = DNSI; pfx.IIN = IIN; pfx.Cash = CASH; }
public void CalcR(SalarySheetRowInfo sr, DateTime dt1, DateTime dt2) { if (dt1 > dt2 || dt1.Month != dt2.Month) { throw new ArgumentException("Bad call."); } IINMargin = PayFx.GetIINMargin(dt1); var fPersonR = sr.PersonR.FilterListWithDates(dt1, dt2); var fHireFire = sr.Events.HireFire.FilterListWithDates(dt1, dt2); var sickleaveb = sr.Events.SickDays.LinkedPeriods .Where(d => d.EEventId == EEventId.Slimības_lapa_B) .ToArray(); fPersonR = fPersonR.FilterWithList(fHireFire); fPersonR = fPersonR.SubtractList(sickleaveb); DaysInMonth = dt1.DaysInMonth(); CalendarDays = 0; var dr_likmes = dt1.Month == sr.SalarySheet.MT ? sr.SalarySheet.DR_Likmes : null; if (dr_likmes == null) { dr_likmes = DataTasks.GetRates(dt1.FirstDayOfMonth()); } if (fPersonR.LinkedPeriods.Count == 0) { return; } var wt1 = new CalcRRow2(); var pr1 = fPersonR.LinkedPeriods[0].Item1 as KlonsADataSet.PERSONS_RRow; IsPensioner = pr1.PENSIONER == 1; HasTaxDoc = !string.IsNullOrEmpty(pr1.TAXDOC_NO); UseProgresiveIINRate = (dt1 >= ProgressiveIINStartDate); GetRatesForPerson(wt1, pr1, dr_likmes, dt1); RateDDSN = wt1.RateDDSN; RateDNSN = wt1.RateDNSN; RateIIN = wt1.RateIIN; RateIIN2 = wt1.RateIIN2; IINMargin = wt1.IINMargin; HasTaxDoc = wt1.HasTaxDoc; UseProgresiveIINRate = wt1.UseProgresiveIINRate; for (int i = 0; i < fPersonR.LinkedPeriods.Count; i++) { var pri = fPersonR.LinkedPeriods[i]; var dt1x = pri.DateFirst; var dt2x = pri.DateLast; int caldays = dt2x.Subtract(dt1x).Days + 1; CalendarDays += caldays; GetIINDeductionsForPerson(wt1, pri.Item1 as KlonsADataSet.PERSONS_RRow, dr_likmes, dt1x, dt2x, CalcVer); ExFull.AddForExFull(wt1); if (PreparingReport) { SaveStateForMonth(wt1); SaveStateDays(caldays); } decimal rt = (decimal)caldays / (decimal)DaysInMonth; wt1.Multiply(rt); ExForDays.Add(wt1); if (PreparingReport) { SaveStateForDays(wt1); AddToList(dt1x, dt2x); } } ExFull.Round(); ExForDays.Round(); ExMax2.SetFrom(ExForDays); if (!sr.IsSingleRow() && sr.TotalPositionPay.IINExempt2Kind != EIINExempt2Kind.None && sr.SalarySheet.MT == dt1.Month) { SetMax(sr.TotalPositionPay.IINExempt2Kind); } else { FindMax(); } ExDivided.SetFrom(ExMax2); ExCorrect.SetFrom(ExMax2); if (PreparingReport) { SaveStateForMonth(ExFull); SaveStateForDays(ExForDays); SaveStateForMax(ExMax2); } }