public JsonResult Generate([FromBody] BillGenerateInput input) { var result = BusinessService.GenerateBill(input); var ret = $"{{\"msg\":\"{result}\"}}"; return(new JsonResult(ret)); }
private void GenerateBillGroupDetail(BillGenerateInput input, int month, int year) { var bgids = (from us in UnitSummary where us.divisionid == Convert.ToInt32(input.DivisionId) select us.billgroupid).Distinct(); var bgs = from bg in BillGroup join bgid in bgids on bg.Id equals bgid select bg; var bglist = new List <BillGroupDetail>(); foreach (var bg in bgs) { var bgdetail = from bgd in BillGroupDetail where bgd.BillGroupId == bg.Id && bgd.BillMonth == month && bgd.BillYear == year select bgd; if (!bgdetail.Any()) { var addThis = false; DateTime startDate = new DateTime(year, month, (int)bg.StartDay); DateTime endDate = startDate;// = startDate.AddMonths(2); DateTime billDate = startDate.AddDays(1); DateTime dueDate = billDate.AddDays(bg.DueDays); if (bg.BiMonthly && month % 2 == (bg.BiMonthlyEven ? 0 : 1)) { addThis = true; endDate = startDate.AddMonths(2).AddDays(-1); } if (!bg.BiMonthly) { addThis = true; endDate = startDate.AddMonths(1).AddDays(-1); } if (addThis) { bglist.Add(new DataModels.Billing.BillGroupDetail() { BillDate = billDate, BillGroupId = bg.Id, BillMonth = month, BillYear = year, DivisionId = Convert.ToInt32(input.DivisionId), DueDate = dueDate, StartDate = startDate, EndDate = endDate, Status = "Created" }); } } } if (bglist.Count > 0) { BillGroupDetail.AddRange(bglist); } this.SaveChanges(); }
public List <KeyValuePair <long, string> > GetBillGroupList(BillGenerateInput input) { var month = Convert.ToInt32(input.MonthYear.Substring(0, 2)); var year = Convert.ToInt32(input.MonthYear.Substring(2)); var result = from bg in BillGroup join bgd in BillGroupDetail on bg.Id equals bgd.BillGroupId where bgd.DivisionId == Convert.ToInt32(input.DivisionId) && bgd.BillYear == year && bgd.BillMonth == month select new KeyValuePair <long, string>(bgd.Id, bg.Code); return(result.ToList()); }
public string GenerateBill(BillGenerateInput input) { var month = Convert.ToInt32(input.MonthYear.Substring(0, 2)); var year = Convert.ToInt32(input.MonthYear.Substring(2)); var lastDay = DateTime.DaysInMonth(year, month); var startDate = Convert.ToDateTime($"01/{month}/{year}"); var stopDate = Convert.ToDateTime($"{lastDay}/{month}/{year}"); var units = from us in UnitSummary select us; if (!string.IsNullOrEmpty(input.DivisionId)) { units = units.Where(ob => ob.divisionid == Convert.ToInt32(input.DivisionId)); } if (!string.IsNullOrEmpty(input.SubDivisionId)) { units = units.Where(ob => ob.subdivisionid == Convert.ToInt32(input.SubDivisionId)); } if (!string.IsNullOrEmpty(input.Category)) { units = units.Where(ob => ob.meterbillingtype == input.Category); } var unitids = (from us in units select us.unitid).Distinct().ToList(); var exist = (from bill in Bills join ui in units on bill.UnitId equals ui.id where bill.MonthYear == input.MonthYear select ui).Any(); if (exist) { return("Already Bill Generated for this Period."); } //join uc in UnitConsumptionDetails //on us.id equals uc.unitid //where us.meterbillingtype == "AM" //&& //uc.DateRecorded >= startDate && //uc.DateRecorded <= stopDate //select us.unitid).Distinct().ToList(); foreach (string unitid in unitids) { GenerateBillForUnitId(input, unitid, month, year); } return("Success"); }
public List <KeyValuePair <long, string> > GetBillGroupList(BillGenerateInput input) { return(Repository.GetBillGroupList(Mapper.Map <DataModels.Billing.BillGenerateInput>(input))); }
public string GenerateBill(BillGenerateInput input) { var req = Mapper.Map <DataModels.Billing.BillGenerateInput>(input); return(Repository.GenerateBill(req)); }
public List <KeyValuePair <long, string> > GetBillGroupList([FromBody] BillGenerateInput input) { var result = BusinessService.GetBillGroupList(input); return(result); }
//public BillGroupResult Validate(BillGenerateInput input) { // var bg = (from BgItem in BillGroup // where BgItem.Id == input.GroupId // select BgItem).FirstOrDefault(); // if (bg != null) // { // var month = bg.BiMonthly ? 2 : 1; // } // return null; //} //public string AddBillGroupDetail(BillGenerateInput input) //{ // var month = Convert.ToInt32(input.MonthYear.Substring(0, 2)); // var year = Convert.ToInt32(input.MonthYear.Substring(2)); // var lastDay = DateTime.DaysInMonth(year, month); // var bg = (from BgItem in BillGroup // where BgItem.Id == input.GroupId // select BgItem).FirstOrDefault(); // if (bg != null) // { // } // return ""; //} private void GenerateBillForUnitId(BillGenerateInput input, string unitid, int month, int year) { //var uid = (from us in UnitSummary // where us.unitid == unitid // select us.id).FirstOrDefault(); var unit = (from us in UnitSummary where us.unitid == unitid select us).FirstOrDefault(); var uid = unit.id; var unitcategory = unit.meterbillingtype; //var unitcategory = (from us in UnitSummary // where us.unitid == unitid select us.meterbillingtype) // .FirstOrDefault(); var billgroup = (from bg in BillGroup where bg.Id == unit.billgroupid select bg).FirstOrDefault(); var startDate = Convert.ToDateTime($"{billgroup.StartDay}/{month}/{year}"); var stopDate = GetLastDay(month, year, (int)billgroup.StartDay, billgroup.BiMonthly); var missingDays = (from oldBill in Bills where oldBill.UnitId == uid orderby oldBill.AddedAt descending select oldBill.MissingDays).FirstOrDefault(); if (billgroup.BiMonthly) { if (billgroup.BiMonthlyEven && month % 2 == 1) { return; } if (!billgroup.BiMonthlyEven && month % 2 == 0) { return; } } var firstConsumption = (from uc in UnitConsumptionDetails where uc.unitid == uid && uc.daterecorded >= startDate.AddDays(-missingDays) && uc.daterecorded <= stopDate orderby uc.daterecorded ascending select uc.consumptioninmcube).FirstOrDefault(); var firstDate = (from uc in UnitConsumptionDetails where uc.unitid == uid && uc.daterecorded >= startDate select uc.daterecorded).Min(); var lastConsumption = (from uc in UnitConsumptionDetails where uc.unitid == uid && uc.daterecorded >= startDate.AddDays(-missingDays) && uc.daterecorded <= stopDate orderby uc.daterecorded descending select uc.consumptioninmcube).FirstOrDefault(); var lastDate = (from uc in UnitConsumptionDetails where uc.unitid == uid && uc.daterecorded >= startDate && uc.daterecorded <= stopDate select uc.daterecorded).Max(); var consumption = lastConsumption - firstConsumption; var bill = new Bill(); bill.MonthYear = input.MonthYear; bill.UnitId = uid; bill.FirstReading = firstConsumption; bill.LastReading = lastConsumption; bill.Consumption = consumption; bill = CalculateTariff(unitid, consumption, unitcategory, bill, year, Convert.ToInt32(input.DivisionId)); bill.BillDate = input.BillDate; //DateTime.Now; bill.DueDate = input.DueDate; //bill.AddedAt.AddDays(15); bill.FirstDate = firstDate; bill.LastDate = lastDate; bill.MissingDays = lastDate == DateTime.MinValue ?0: (stopDate - lastDate).Days; bill.AddedAt = DateTime.Now; Bills.Add(bill); this.SaveChanges(); }