public void AddEqallyAndRound(PayFx2[] rows) { var p1 = new PayFx(); p1.SetFrom(this); foreach (var pr in rows) { AddPayRound(pr); pr.DNS = RoundA(pr.Pay * pr.Sr); } CalcAllAndRound(); var p2 = new PayFx(); p2.SetFrom(this); p2.Subtract(p1); MakeExactSum(p2.DNS, rows, d => d.DNS, (d, dval) => d.DNS = dval); decimal fulliinbase = rows.Sum(pr => pr.Pay + pr.PayNs - pr.DNS); foreach (var pr in rows) { decimal iinbase = pr.Pay + pr.PayNs - pr.DNS; pr.UsedIinEx = RoundA(p2.UsedIinEx * iinbase / fulliinbase); pr.IIN = RoundA(p2.IIN * iinbase / fulliinbase); pr.Cash = iinbase + pr.PayNt - pr.IIN; } MakeExactSum(p2.Cash, rows, d => d.Cash, (d, dval) => d.Cash = dval); MakeExactSum(p2.UsedIinEx, rows, d => d.UsedIinEx, (d, dval) => d.UsedIinEx = dval); foreach (var pr in rows) { pr.IIN = pr.Pay + pr.PayNs + pr.PayNt - pr.DNS - pr.Cash; } Rows.AddRange(rows); }
public void AddEqally(PayFx2[] rows) { var p1 = new PayFx(); p1.SetFrom(this); decimal fulliinbase = 0.0M; foreach (var pr in rows) { AddPay(pr); pr.DNS = pr.Pay * pr.Sr; fulliinbase += pr.Pay + pr.PayNs - pr.DNS; } CalcAll(); var p2 = new PayFx(); p2.SetFrom(this); p2.Subtract(p1); foreach (var pr in rows) { decimal iinbase = pr.Pay + pr.PayNs - pr.DNS; pr.UsedIinEx = p2.UsedIinEx * iinbase / fulliinbase; pr.IIN = p2.IIN * iinbase / fulliinbase; pr.Cash = iinbase + pr.PayNt - pr.IIN; } Rows.AddRange(rows); }
public void AddIncrementallyAndRound(PayFx2 row) { var p1 = new PayFx(); p1.SetFrom(this); AddPayRound(row); CalcAllAndRound(); row.SetFrom(this); row.Subtract(p1); Rows.Add(row); }
public void AddIncrementallySplitAndRound(PayFx2 rowt, PayFx2[] rows) { var p1 = new PayFx(); p1.SetFrom(this); AddPayRound(rowt); CalcAllAndRound(); rowt.SetFrom(this); rowt.Subtract(p1); SplitAndRound(rowt, rows); Rows.Add(rowt); }
public void AddIncrementally(PayFx2 row) { var p1 = new PayFx(); p1.SetFrom(this); AddPay(row); CalcAll(); var p2 = new PayFx(); p2.SetFrom(this); p2.Subtract(p1); row.DNS = p2.DNS; row.UsedIinEx = p2.UsedIinEx; row.IIN = p2.IIN; row.Cash = p2.Cash; Rows.Add(row); }
public string Calc1(PayCalcRow sr, PayCalcRow paid, decimal pay, out PayCalcRow rpay) { rpay = new PayCalcRow(); rpay.SetFrom(sr); rpay.SubtractThat(paid); rpay.CASH_REQ = pay; if (rpay.CASH == 0.0M) { return("OK"); } if (rpay.PAY_TAXED == 0.0M && rpay.PAY_NOSAI == 0.0M && rpay.PAY_NOTTAXED == 0.0M) { return("OK"); } var pfx = new PayFx(); var pfx2 = new PayFx(); var pfx3 = new PayFx(); paid.SetTo(pfx, sr); pfx2.SetFrom(pfx); pfx.IncPayByIncCash(pay, rpay.PAY_TAXED, rpay.PAY_NOSAI, rpay.PAY_NOTTAXED); pfx3.SetFrom(pfx); pfx.CalcAll(); pfx.Subtract(pfx2); rpay.SetFrom(pfx); pfx3.Pay = Math.Min(pfx3.Pay, sr.NOTPAID_TAXED); pfx3.PayNs = Math.Min(pfx3.PayNs, sr.NOTPAID_NOSAI); pfx3.PayNt = Math.Min(pfx3.PayNt, sr.NOTPAID_NOTTAXED); pfx3.CalcAll(); rpay.CASH_NOTPAID = pfx3.Cash - paid.CASH_NOTPAID; return("OK"); }