public AdjustmentsListVM(int leaseId, BillCode billCode, DateTime date, ITenantDBsDir args) : base(GetRepo(date, args), args, false) { _lseId = leaseId; _repo = GetRepo(date, AppArgs); BillCode = billCode; ReloadFromDB(); }
public CollectorPerfCell(decimal actual, decimal target, BillCode billCode) { Actual = actual; Target = target.ZeroIfNegative(); NoExcess = GetNoExcess(billCode); Overage = GetOverage(billCode); Shortage = GetShortage(billCode); }
public void Normalize() { this.BillCode = BillCode?.Trim(); this.RangeBegin = RangeBegin?.DateBegin(); this.RangeEnd = RangeEnd?.DateEnd(); this.OrderNumber = OrderNumber?.Trim().ToUpper(); this.ItemNumber = ItemNumber?.Trim().ToUpper(); }
private bool TryGetValue(dynamic dynamic, BillCode billCode, out decimal val) { var num = (decimal?)As.Decimal_(dynamic); val = num ?? 0; //return num.HasValue; return(val != 0); }
private decimal GetNoExcess(BillCode billCode) { switch (billCode) { case BillCode.Rent: return(Math.Max(0, Math.Min(Target, Actual))); default: return(Actual); } }
private decimal GetOverage(BillCode billCode) { switch (billCode) { case BillCode.Rent: return(Actual > Target ? Actual - Target : 0); default: return(0); } }
private decimal GetShortage(BillCode billCode) { switch (billCode) { case BillCode.Rent: case BillCode.Rights: return(Target > Actual ? Target - Actual : 0); default: return(0); } }
private bool Validate(BillCode billCode, out string whyNot) { var val = RntCell?.For(billCode); if (val.HasValue) { whyNot = ""; return(true); } whyNot = $"No balance for ‹{billCode}›."; return(false); }
public override int GetHashCode() { var hashCode = 1537752341; hashCode = hashCode * -1521134295 + BillCode.GetHashCode(); hashCode = hashCode * -1521134295 + LeaseId.GetHashCode(); hashCode = hashCode * -1521134295 + AmountOffset.GetHashCode(); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Reason); hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(DocumentRef); return(hashCode); }
public BillState ComputeBill(BillCode billCode, LeaseDTO lease, DateTime date, decimal?previousBalance) { var composr = GetBillComposer(billCode); var state = new BillState { BillCode = billCode, OpeningBalance = previousBalance, Penalties = composr.ComputePenalties(lease, date, previousBalance), Payments = composr.ReadPayments(lease, date), Adjustments = composr.ReadAdjustments(lease, date), }; state.ClosingBalance = composr.ComputeClosingBalance(lease, state, date); return(state); }
public decimal?For(BillCode billCode) { switch (billCode) { case BillCode.Rent: return(Rent); case BillCode.Rights: return(Rights); case BillCode.Electric: return(Electric); case BillCode.Water: return(Water); default: return(null); } }
public IBillRowComposer GetBillComposer(BillCode billCode) { switch (billCode) { case BillCode.Rent: return(_rentComposr); case BillCode.Rights: return(_rightsComposr); case BillCode.Electric: return(_electricComposr); case BillCode.Water: return(_waterComposr); default: throw Fault.BadArg("BillCode", billCode); } }
public decimal?GetDue(LeaseDTO lse, BillCode billCode) { if (_soaRowsByLseID == null) { _soaRowsByLseID = CreateSoaRowsDictionary(); } if (!_soaRowsByLseID.TryGetValue(lse.Id, out DailyBillDTO row)) { row = _dir.Balances.GetBill(lse, _date); } var bill = row?.For(billCode); return(_dir.DailyBiller.GetBillComposer(billCode).GetTotalDue(lse, bill, _date)); }
public static ColPerfBillPerformance New(BillCode billCode, IEnumerable <CollectorPerfCell> cells) { var bp = new ColPerfBillPerformance(billCode); bp.Target = cells.Sum(_ => _.Target); bp.Actual = cells.Sum(_ => _.Actual); bp.NoExcess = cells.Sum(_ => _.NoExcess); if (bp.Target != 0) { bp.PerfRate = bp.NoExcess / bp.Target; } bp.UnderpaidCount = cells.Count(_ => _.IsShort); bp.UnderpaidTotal = cells.Sum(_ => _.Shortage); bp.OverpaidCount = cells.Count(_ => _.IsOver); bp.OverpaidTotal = cells.Sum(_ => _.Overage); return(bp); }
private decimal GetAmount(dynamic byf, out BillCode billCode) { if (TryGetValue(byf.rent, billCode = BillCode.Rent, out decimal val)) { return(val); } if (TryGetValue(byf.surcharge, billCode = BillCode.Rent, out val)) { return(val); } if (TryGetValue(byf.rights, billCode = BillCode.Rights, out val)) { return(val); } if (TryGetValue(byf.electric, billCode = BillCode.Electric, out val)) { return(val); } if (TryGetValue(byf.water, billCode = BillCode.Water, out val)) { return(val); } throw Bad.Data("Balance Adj. has no valid amount"); }
public BillState For(BillCode billCode) => Bills?.SingleOrDefault(_ => _.BillCode == billCode);
public decimal?For(BillCode billCode) => billCode == BillCode ? Amount : (decimal?)null;
private ColPerfBillPerformance(BillCode billCode) { BillCode = billCode; }