public bool ProcessDisbursement(DisbursementRequest disReq) { List <Tuple <int, int> > items = new List <Tuple <int, int> >(); disReq.Items.ForEach(val => items.Add(new Tuple <int, int>(val.ItemId, val.DisbursedQty))); return(new DisbursementController().ProcessDisbursement(disReq.DisbId, disReq.Key, disReq.ReceivedBy, items)); }
public async Task <IActionResult> EquatedMonthlyInstallment(DisbursementRequest disbursement) { if (!ModelState.IsValid) { return(View()); } await _business.SaveDistursement(disbursement); return(View(disbursement)); }
/// <summary> /// passes Disbursement details to repository to save /// </summary> /// <param name="disbursement"></param> /// <returns>number of roles affected</returns> public async Task <int> SaveDistursement(DisbursementRequest disbursement) { var code = await _disbursementRepository.GetCustomerCodeAsync(); // compute/generate Customer Code var cus_Code = code >= 1 ? code + 1 : 1; var entity = new Disbursement_Dtl { Cust_Code = cus_Code, Cust_Name = disbursement.Cust_Name, Disb_Date = disbursement.Disb_Date, Disb_Amount = disbursement.Disb_Amount, Int_Rate = disbursement.Int_Rate, Months = disbursement.Months, EMS_St_Date = disbursement.EMS_St_Date }; return(await _disbursementRepository.AddDisbursementAsync(entity)); }
/// <summary> /// Generate schedule /// </summary> /// <param name="disbursement"></param> /// <returns>List of schedules</returns> public async Task <IList <ScheduleResponse> > GenerateSchechule(DisbursementRequest disbursement) { var schedules = new List <ScheduleResponse>(); if (disbursement == null) { return(schedules); } var Cust_Code = await _disbursementRepository.GetCustomerCodeAsync(); for (var i = 1; i <= disbursement.Months; i++) { var schedule = new ScheduleResponse(); //compute SL_NO var sNo = Cust_Code + i; var currentBalance = 0F; schedule.Cust_Code = Cust_Code; schedule.EMI_Date = disbursement.EMS_St_Date; schedule.Total_Amount = schedules.Count == 0 ? disbursement.Disb_Amount : schedules.Sum(x => x.Total_Amount); if (schedules.Count > 0) { currentBalance = (float)PrincipalAmount(schedules, sNo).Item2; } schedule.Balance = currentBalance == 0 ? disbursement.Disb_Amount : currentBalance; schedule.Prn_Amount = currentBalance == 0 ? disbursement.Disb_Amount : (float)PrincipalAmount(schedules, sNo).Item1; schedule.Int_Amount = i == 1 ? (float)InsterestCalculator(disbursement) : (float)SecondMonthInterestCalculator(disbursement, currentBalance); schedule.EMS_St_Date = DateTime.Now; schedule.SL_NO = sNo; schedules.Add(schedule); } return(schedules); }
public async Task <IViewComponentResult> InvokeAsync(DisbursementRequest disbursement) { return(View(await GenerateSchechule(disbursement))); }
public async Task <IList <ScheduleResponse> > GenerateSchechule(DisbursementRequest disbursement) { return(await Task.FromResult(await _schedule.GenerateSchechule(disbursement))); }
/// <summary> /// Compute the second month interest /// </summary> /// <param name="disbursement"></param> /// <returns>interest amount</returns> private double SecondMonthInterestCalculator(DisbursementRequest disbursement, float balance) => balance * disbursement.Int_Rate * (NumberOfDaysBetweentwoDates(disbursement.Disb_Date, disbursement.EMS_St_Date) / 365);
/// <summary> /// Compute the first month interest /// </summary> /// <param name="disbursement"></param> /// <returns>interest amount</returns> private double InsterestCalculator(DisbursementRequest disbursement) => disbursement.Disb_Amount * disbursement.Int_Rate * (NumberOfDaysBetweentwoDates(disbursement.Disb_Date, disbursement.EMS_St_Date) / 365);