//updates billStatus and related fields in BIL_TXN_BillingTransactionItems table. public static BillingTransactionItemModel UpdateTxnItemBillStatus(BillingDbContext billingDbContext, BillingTransactionItemModel billItem, string billStatus, //provisional,paid,unpaid,returned int userId, DateTime?modifiedDate = null, int?counterId = null, int?billingTransactionId = null) { modifiedDate = modifiedDate != null ? modifiedDate : DateTime.Now; billItem = GetBillStatusMapped(billItem, billStatus, modifiedDate, userId, counterId); billingDbContext.BillingTransactionItems.Attach(billItem); //update returnstatus and returnquantity if (billStatus == "paid") { billingDbContext.Entry(billItem).Property(b => b.PaidDate).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.BillStatus).IsModified = true; billingDbContext.Entry(billItem).Property(b => b.PaymentReceivedBy).IsModified = true; billingDbContext.Entry(billItem).Property(b => b.PaidCounterId).IsModified = true; } else if (billStatus == "unpaid") { billingDbContext.Entry(billItem).Property(b => b.PaidDate).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.BillStatus).IsModified = true; billingDbContext.Entry(billItem).Property(b => b.PaidCounterId).IsModified = true; billingDbContext.Entry(billItem).Property(b => b.PaymentReceivedBy).IsModified = true; } else if (billStatus == "cancel") { billingDbContext.Entry(billItem).Property(a => a.CancelledBy).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.BillStatus).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.CancelledOn).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.CancelRemarks).IsModified = true; } else if (billStatus == "adtCancel") { billingDbContext.Entry(billItem).Property(a => a.CancelledBy).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.BillStatus).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.CancelledOn).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.CancelRemarks).IsModified = true; } else if (billStatus == "returned") { billingDbContext.Entry(billItem).Property(a => a.ReturnStatus).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.ReturnQuantity).IsModified = true; } if (billItem.BillingTransactionId == null) { billItem.BillingTransactionId = billingTransactionId; billingDbContext.Entry(billItem).Property(b => b.BillingTransactionId).IsModified = true; } //these fields could also be changed during update. billingDbContext.Entry(billItem).Property(b => b.BillStatus).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.Price).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.Quantity).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.SubTotal).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.DiscountAmount).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.DiscountPercent).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.DiscountPercentAgg).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.TotalAmount).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.ProviderId).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.ProviderName).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.TaxableAmount).IsModified = true; billingDbContext.Entry(billItem).Property(a => a.NonTaxableAmount).IsModified = true; UpdateRequisitionItemsBillStatus(billingDbContext, billItem.ServiceDepartmentName, billStatus, userId, billItem.RequisitionId, modifiedDate); //update bill status in BillItemRequistion (Order Table) BillItemRequisition billItemRequisition = (from bill in billingDbContext.BillItemRequisitions where bill.RequisitionId == billItem.RequisitionId && bill.ServiceDepartmentId == billItem.ServiceDepartmentId select bill).FirstOrDefault(); if (billItemRequisition != null) { billItemRequisition.BillStatus = billStatus; billingDbContext.Entry(billItemRequisition).Property(a => a.BillStatus).IsModified = true; } return(billItem); }
//post to BIL_TXN_BillingTransactionItems public static List <BillingTransactionItemModel> PostUpdateBillingTransactionItems(BillingDbContext dbContext, string connString, List <BillingTransactionItemModel> billingTransactionItems, int userId, DateTime currentDate, string billStatus, int?counterId, int?billingTransactionId = null) { BillingFiscalYear fiscYear = BillingBL.GetFiscalYear(connString); var srvDepts = dbContext.ServiceDepartment.ToList(); //var empList = masterDbContext.Employees.ToList(); if (billingTransactionItems != null && billingTransactionItems.Count > 0) { var ProvisionalReceiptNo = BillingBL.GetProvisionalReceiptNo(connString); for (int i = 0; i < billingTransactionItems.Count; i++) { var txnItem = billingTransactionItems[i]; if (txnItem.BillingTransactionItemId == 0) { txnItem.CreatedOn = currentDate; txnItem.CreatedBy = userId; txnItem.RequisitionDate = currentDate; txnItem.CounterId = counterId; txnItem.BillingTransactionId = billingTransactionId; if (txnItem.BillStatus == "provisional") { txnItem.ProvisionalReceiptNo = ProvisionalReceiptNo; txnItem.ProvisionalFiscalYearId = fiscYear.FiscalYearId; txnItem.ProvFiscalYear = fiscYear.FiscalYearFormatted; //not mapped } //assign providername and servicedepartmentname to each of the incoming transaction items. //Needs Revision: 12-12-17: sud: I think we don't need to get providername since that property already comes from client side: //txnItem.ProviderName = (from a in empList where a.EmployeeId == txnItem.ProviderId select a.FullName).FirstOrDefault(); txnItem.ServiceDepartmentName = (from b in srvDepts where b.ServiceDepartmentId == txnItem.ServiceDepartmentId select b.ServiceDepartmentName).FirstOrDefault(); txnItem = GetBillStatusMapped(txnItem, billStatus, currentDate, userId, counterId); UpdateRequisitionItemsBillStatus(dbContext, txnItem.ServiceDepartmentName, billStatus, userId, txnItem.RequisitionId, currentDate); dbContext.BillingTransactionItems.Add(txnItem); } else { txnItem = UpdateTxnItemBillStatus(dbContext, txnItem, billStatus, userId, currentDate, counterId, billingTransactionId); } //update the Requisitions billingstatus as 'paid' for above items. //List<Int32?> requisitionIds = (from a in billTranItems select a.BillItemRequisitionId).ToList(); BillItemRequisition billItemRequisition = (from bill in dbContext.BillItemRequisitions where bill.RequisitionId == txnItem.RequisitionId && bill.ServiceDepartmentId == txnItem.ServiceDepartmentId select bill).FirstOrDefault(); if (billItemRequisition != null) { billItemRequisition.BillStatus = "paid"; dbContext.Entry(billItemRequisition).State = EntityState.Modified; } } dbContext.SaveChanges(); } else { throw new Exception("BillingTranscation Items is null"); } return(billingTransactionItems); }