private static bool CalculateRealFee(InvoiceShared realInvoice, InvoiceShared estimatedInvoice, FeeConfig feeConfig) { Contract.Requires(realInvoice != null); Contract.Requires(estimatedInvoice != null); Contract.Requires(feeConfig != null); if (!CalculateCommonRealBasicFee(realInvoice, estimatedInvoice, feeConfig)) { return(false); } if (!CalculateCommonRealUsageFee(realInvoice, estimatedInvoice, feeConfig)) { return(false); } foreach (var userInvoice in realInvoice.UserInvoices) { UserInvoice estimatedUserInvoice = estimatedInvoice.UserInvoices.GetInvoiceByOwner(userInvoice.InvoiceOwner); CalculateUserRealBasicFee(estimatedInvoice, userInvoice, realInvoice.UserInvoices.Count, feeConfig); CalculateUserRealUsageFee(userInvoice, estimatedUserInvoice, feeConfig); } return(true); }
private static ulong CalculateConsumption(InvoiceShared prevInvoice, InvoiceShared invoice, IEnumerable <MeterConfig> mainMeterConfigHistory, IEnumerable <UserMeterConfigHistory> userMeterConfigHistory) { Contract.Requires(invoice != null); DateRange readOutPeriod = InvoiceExtensions.GetReadOutPeriod(prevInvoice, invoice); IEnumerable <MeterConfig> meterConfigs = mainMeterConfigHistory.GetMeterConfigHistoryForPeriod(readOutPeriod); ulong realCommonConsumption = CalculateRealCommonConsumption(prevInvoice, invoice, meterConfigs); ulong estimatedCommonConsumption = CalculateEstimatedCommonConsumption(prevInvoice, invoice, meterConfigs); ulong totalEstimatedUserConsumption = 0U; foreach (var userInvoice in invoice.UserInvoices) { UserInvoice prevUserInvoice = prevInvoice?.UserInvoices.GetInvoiceByOwner(userInvoice.InvoiceOwner); IEnumerable <MeterConfig> userMeterConfigs = userMeterConfigHistory. GetMeterConfigHistoryByOwner(userInvoice.InvoiceOwner). GetMeterConfigHistoryForPeriod(readOutPeriod); ulong realUserConsumption = CalculateRealUserConsumption(readOutPeriod, prevUserInvoice, userInvoice, userMeterConfigs); totalEstimatedUserConsumption += CalculateEstimatedUserConsumption(userInvoice, realUserConsumption, new ConsumptionValue(estimatedCommonConsumption, realCommonConsumption)); } FineGrainEstimatedUserConsumption( invoice.UserInvoices, totalEstimatedUserConsumption, new ConsumptionValue(estimatedCommonConsumption, realCommonConsumption) ); return(realCommonConsumption); }
public void AddUserInvoice(UserInvoice UserInvoice) { //UserInvoice.isDelete = false; // UserInvoice.isReject = false; _userInvoiceRepository.Add(UserInvoice); _unitOfWork.Commit(); }
private static void CalculateUserEstimatedUsageFee(UserInvoice userEstimatedInvoice, FeeConfig feeConfig) { Contract.Requires(userEstimatedInvoice != null); Contract.Requires(feeConfig != null); userEstimatedInvoice.GetUsageFee().CleanWaterFee = (userEstimatedInvoice.GetConsumption().Estimated *feeConfig.GetMonthlyCleanWaterUsageFeeWithoutVAT()).RoundToCents(); userEstimatedInvoice.GetUsageFee().WasteWaterFee = (userEstimatedInvoice.GetConsumption().Estimated *feeConfig.GetMonthlyWasteWaterUsageFeeWithoutVAT()).RoundToCents(); }
private static ulong CalculateEstimatedUserConsumption(UserInvoice invoice, ulong realUserConsumption, ConsumptionValue commonConsumption) { Contract.Requires(commonConsumption != null); decimal estimatedUserConsumption = Convert.ToDecimal(commonConsumption.Estimated * realUserConsumption) / Convert.ToDecimal(commonConsumption.Real); invoice.GetConsumption().Estimated = Convert.ToUInt64(Math.Round(estimatedUserConsumption)); return(invoice.GetConsumption().Estimated); }
private static void CalculateUserEstimatedBasicFee(DateRange invoicePeriod, UserInvoice userEstimatedInvoice, int userCount, FeeConfig feeConfig) { Contract.Requires(invoicePeriod != null); Contract.Requires(userEstimatedInvoice != null); Contract.Requires(feeConfig != null); Contract.Requires(userCount > 0); userEstimatedInvoice.GetBasicFee().CleanWaterFee = (invoicePeriod.GetMonths() * feeConfig.GetMonthlyCleanWaterBasicFeeWithoutVAT() / userCount).RoundToCents(); userEstimatedInvoice.GetBasicFee().WasteWaterFee = (invoicePeriod.GetMonths() * feeConfig.GetMonthlyWasteWaterBasicFeeWithoutVAT() / userCount).RoundToCents(); }
public ActionResult InvoiceDetailed(long id) { UserInvoice ui = InvoiceRepository.GetUserInvoice(id); if (ui == null || ui.User_ID != AppHelper.CurrentUser.ID) { return(RedirectToAction("AuctionInvoices")); } ViewData["Invoice_ID"] = ui.Id; ViewData["Event_Title"] = EventRepository.GetEventByID(ui.Event_ID).Title; return(View()); }
private static ulong CalculateRealUserConsumption(DateRange readOutPeriod, UserInvoice prevInvoice, UserInvoice invoice, IEnumerable <MeterConfig> meterConfigs) { Contract.Requires(invoice != null); Contract.Requires(meterConfigs != null); ulong startRealReadOut = prevInvoice?.GetReadOut().Real ?? 0U; ulong endRealReadOut = invoice.GetReadOut().Real; ulong realConsumption = CalculateConsumption(readOutPeriod, startRealReadOut, endRealReadOut, meterConfigs); invoice.GetConsumption().Real = realConsumption; return(realConsumption); }
public ActionResult RejectReason(InvoiceViewModel obj) { var wwid = Session["wwid"].ToString(); //var wwid = "11573963"; UserInvoice uInvoice = new UserInvoice(); uInvoice.CreatedDate = DateTime.Now.Date; uInvoice.InvoiceId = obj.Id; uInvoice.isDelete = false; uInvoice.isReject = true; //uInvoice.rejectReason = obj.UserInvoices.LastOrDefault().rejectReason; uInvoice.rejectReason = obj.rejectReason; uInvoice.UserTableId = obj.UserTableId; uInvoice.StatusId = _statusService.GetAllStatuses().Where(p => p.StatusName.ToLower().Trim().Equals(obj.recentStatus.ToLower().Trim())).FirstOrDefault().Id; // var requestor = "<strong>" + _userTableService.GetUserById(obj.UserTableId).UserName.ToString() + "</strong>"; // var rejector = "<strong>"+_userTableService.GetAllUsers().Where(p => p.WWID == int.Parse(wwid)).FirstOrDefault().UserName.ToString() + "</strong>"; //string email = "*****@*****.**"; Invoice inv = _invoiceService.GetInvoiceById(obj.Id); string[] array = inv.Note.ToString().Split('|'); string RequestorId = array[0]; string email = array[1]; string ManagerId = array[2]; // string rejector = "<strong>" +_userTableService.GetAllUsers().Where(p => p.WWID.ToString().Equals(ManagerId)).FirstOrDefault().UserName.ToString() + "<strong>"; // string requestor = "<strong>"+_userTableService.GetAllUsers().Where(p => p.WWID.ToString().Equals(RequestorId)).FirstOrDefault().UserName.ToString() + "<strong>"; LoginClass.Member Requestor = LoginClass.GetName(int.Parse(RequestorId.ToString())); LoginClass.Member Manager = LoginClass.GetName(int.Parse(ManagerId.ToString())); string requestor = "<strong>" + Requestor.ccMailName + "<strong>"; string rejector = "<strong>" + Manager.ccMailName + "<strong>"; string banner = "<img src='http://vimt.intel.com/Images/bannerVIMT.png'><br><br><br><br>"; string content = banner + "Dear " + requestor + ", <br/> Your invoice " + "(ID: " + obj.requestID + ") was rejected by " + rejector + " <br/> <b>Reason: " + obj.rejectReason + "</b>.<br/>Best Sincerely "; // string email = "*****@*****.**"; Mail.SendMail(content, email); _userInvoiceService.AddUserInvoice(uInvoice); return(RedirectToAction("Index")); }
///<summary> /// 用户发票模版更新 ///</summary> ///<param name="o">用户发票模版</param> ///<returns></returns> public bool UserInvoiceUpdate(UserInvoice o) { return(Try(nameof(UserInvoiceUpdate), () => { var cmd = SqlBuilder.Update("UserInvoice") .Column("UserId", o.UserId) .Column("GroupId", o.GroupId) .Column("Title", o.Title) .Column("Content", o.Content) .Column("IsDefault", o.IsDefault) .Column("ModifiedBy", o.ModifiedBy) .Column("ModifiedOn", o.ModifiedOn) .Where("Id=@id and UserId=@userId", new { o.Id, o.UserId }) .ToCommand(); return PassportConn.Execute(cmd) > 0; })); }
///<summary> /// 用户发票模版创建 ///</summary> ///<param name="o">用户发票模版</param> ///<returns></returns> public int UserInvoiceCreate(UserInvoice o) { return(Try(nameof(UserInvoiceCreate), () => { var cmd = SqlBuilder.Insert("UserInvoice") .Column("UserId", o.UserId) .Column("GroupId", o.GroupId) .Column("Title", o.Title) .Column("Content", o.Content) .Column("IsDefault", o.IsDefault) .Column("CreatedOn", o.CreatedOn) .Column("ModifiedBy", o.ModifiedBy) .Column("ModifiedOn", o.ModifiedOn) .ToCommand(true); return PassportConn.ExecuteScalar <int>(cmd); })); }
public ActionResult DelegateRequestor() { if (Session["role"] != null) { var session = Session["role"].ToString().ToLower(); if (session.Equals("requestor")) { int statusId = _statusService.GetAllStatuses().Where(p => p.StatusName.ToString().ToLower().Equals("pending for approve")).FirstOrDefault().Id; // var UserInvoices = _userInvoiceService.GetAllUserInvoices().Where(p => p.StatusId == statusId && p.isDelete == false && p.UserTable.WWID == 11573963).Distinct(); List <int> invId = new List <int>(); var wwid = Session["wwid"].ToString(); var listInv = _invoiceService.GetAllInvoices().Where(p => p.Note.Split('|').FirstOrDefault().ToString().Equals(wwid)); foreach (var obj in listInv) { invId.Add(obj.Id); } List <Invoice> listInvoice = new List <Invoice>(); foreach (int item in invId) { UserInvoice uInv = _userInvoiceService.GetAllUserInvoices().Where(p => p.InvoiceId == item && p.isDelete == false).LastOrDefault(); if (uInv != null && uInv.StatusId == statusId && uInv.isReject == false) { Invoice obj = _invoiceService.GetInvoiceById(uInv.InvoiceId); listInvoice.Add(obj); } } return(View(listInvoice)); } else { return(RedirectToAction("Index", "Dashboard")); } } else { return(RedirectToAction("Index", "Dashboard")); } }
private void DeleteSelectedInvoices() { if (dataGridView.SelectedRows.Count == 0) { return; } if (MessageBox.Show("Poistetaanko valitut laskut?", "Posto", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } anyChangesToInvoiceHistory = true; foreach (DataGridViewRow row in dataGridView.SelectedRows) { InvoiceShared invoice = GetCommonInvoiceFromRow(row); if (IsUserInvoice(row)) { UserInvoice userInvoice = GetUserInvoiceFromRow(row); invoice.UserInvoices.Remove(userInvoice); } else { foreach (var _ in invoice.UserInvoices) { // removing user invoices from datagrid dataGridView.Rows.RemoveAt(row.Index + 1); } invoiceHistory.Invoices.Remove(invoice); } dataGridView.Rows.Remove(row); } }
private void AssertInvoicesFee(InvoiceShared expected, InvoiceShared actual) { Assert.AreEqual(expected.GetBasicFee().CleanWaterFee, actual.GetBasicFee().CleanWaterFee, $"different clean water basic fee of invoice {actual.Id}"); Assert.AreEqual(expected.GetBasicFee().WasteWaterFee, actual.GetBasicFee().WasteWaterFee, $"different waste water basic fee of invoice {actual.Id}"); Assert.AreEqual(expected.GetUsageFee().CleanWaterFee, actual.GetUsageFee().CleanWaterFee, $"different clean water usage fee of invoice {actual.Id}"); Assert.AreEqual(expected.GetUsageFee().WasteWaterFee, actual.GetUsageFee().WasteWaterFee, $"different waste water usage fee of invoice {actual.Id}"); Assert.AreEqual(expected.UserInvoices.Count, actual.UserInvoices.Count); for (int i = 0; i < expected.UserInvoices.Count; i++) { UserInvoice expectedUserInvoice = expected.UserInvoices[i]; UserInvoice actualUserInvoice = actual.UserInvoices.GetInvoiceByOwner(expectedUserInvoice.InvoiceOwner); Assert.IsNotNull(actualUserInvoice, $"missing user '{actualUserInvoice.InvoiceOwner}' invoice {actual.Id}"); Assert.AreEqual(expectedUserInvoice.GetBasicFee().CleanWaterFee, actualUserInvoice.GetBasicFee().CleanWaterFee, $"different clean water basic fee of user '{actualUserInvoice.InvoiceOwner}' invoice {actual.Id}"); Assert.AreEqual(expectedUserInvoice.GetBasicFee().WasteWaterFee, actualUserInvoice.GetBasicFee().WasteWaterFee, $"different waste water basic fee of user '{actualUserInvoice.InvoiceOwner}' invoice {actual.Id}"); Assert.AreEqual(expectedUserInvoice.GetUsageFee().CleanWaterFee, actualUserInvoice.GetUsageFee().CleanWaterFee, $"different clean water usage fee of user '{actualUserInvoice.InvoiceOwner}' invoice {actual.Id}"); Assert.AreEqual(expectedUserInvoice.GetUsageFee().WasteWaterFee, actualUserInvoice.GetUsageFee().WasteWaterFee, $"different waste water usage fee of user '{actualUserInvoice.InvoiceOwner}' invoice {actual.Id}"); } }
private static void ShowUserInvoice(DataGridViewRow row, InvoiceShared invoice, UserInvoice userInvoice, Price.ShowFormat priceFormat) { Contract.Requires(row != null); Contract.Requires(invoice != null); Contract.Requires(userInvoice != null); row.Cells[0].Value = userInvoice.InvoiceOwner; row.Cells[0].Tag = invoice.Id; row.Cells[1].Style.BackColor = Color.LightGray; row.Cells[2].Value = userInvoice.InvoiceOwner; row.Cells[3].Value = userInvoice.GetReadOut().ToString(); row.Cells[3].Style.BackColor = invoice.IsSumOfUserInvoicesDifferent(inv => inv.GetReadOut().Sum(), userInv => userInv.GetReadOut().Sum()) ? Color.LightPink : row.Cells[3].Style.BackColor; row.Cells[4].Value = userInvoice.GetConsumption().ToString(); row.Cells[4].Style.BackColor = invoice.IsSumOfUserInvoicesDifferent(inv => inv.GetConsumption().Sum(), userInv => userInv.GetConsumption().Sum()) ? Color.LightPink : row.Cells[4].Style.BackColor; row.Cells[5].Value = userInvoice.GetBasicFee().ToString(priceFormat); row.Cells[5].Style.BackColor = invoice.IsSumOfUserInvoicesDifferent( inv => (inv.GetBasicFee().GetTotalPrice().VATLess), userInv => (userInv.GetBasicFee().GetTotalPrice().VATLess)) ? Color.LightPink : row.Cells[5].Style.BackColor; row.Cells[6].Value = userInvoice.GetUsageFee().ToString(priceFormat); row.Cells[6].Style.BackColor = invoice.IsSumOfUserInvoicesDifferent( inv => (inv.GetUsageFee().GetTotalPrice().VATLess), userInv => (userInv.GetUsageFee().GetTotalPrice().VATLess)) ? Color.LightPink : row.Cells[6].Style.BackColor; row.Cells[7].Value = invoice.Balanced; row.Cells[8].Value = userInvoice.GetTotalPrice().ToString(Price.ShowFormat.both); row.Cells[8].Style.BackColor = invoice.IsSumOfUserInvoicesDifferent( inv => (inv.GetTotalPrice().VATLess + inv.GetTotalPrice().WithVAT), userInv => (userInv.GetTotalPrice().VATLess + userInv.GetTotalPrice().WithVAT)) ? Color.LightPink : row.Cells[8].Style.BackColor; row.Tag = userInvoice; }
public void DeleteUserInvoice(UserInvoice UserInvoice) { UserInvoice.isDelete = true; _userInvoiceRepository.Update(UserInvoice); _unitOfWork.Commit(); }
public void EditUserInvoice(UserInvoice UserInvoice) { _userInvoiceRepository.Update(UserInvoice); _unitOfWork.Commit(); }
//[HttpPost] public ActionResult CreateInvoice() { List <InvoiceItem> listItem = (List <InvoiceItem>)Session["listItem"]; if (listItem == null) { return(RedirectToAction("CreateVendor")); } var role = Session["role"].ToString().ToLower(); var requestorId = Session["wwid"].ToString(); var requestorMail = Session["mail"].ToString(); var managerId = Session["ManagerWWID"].ToString(); Invoice inv = new Invoice(); inv.Note = requestorId + "|" + requestorMail + "|" + managerId; inv.PaymentVoucher = 0; inv.totalPayment = 0; inv.PaymentAmount = 0; inv.PaymentCreatedDate = DateTime.Now; // inv.optionA = invoice.option.ToString(); inv.optionA = Session["option"].ToString(); if (role.Equals("accountant")) { inv.Description = Session["InvoiceID"].ToString(); } _invoiceService.AddInvoice(inv); UserInvoice userInv = new UserInvoice(); int userId = 0; if (role.Equals("requestor")) { userInv.StatusId = _statusService.GetAllStatuses().Where(p => p.StatusName.ToString().ToLower().Equals("pending for approve")).FirstOrDefault().Id; var roleID = _roleGroupService.GetAllRoleGroups().Where(p => p.GroupName.ToString().ToLower().Equals("requestor")).FirstOrDefault().Id; userId = _userTableService.GetAllUsers().Where(p => p.RoleGroupId == int.Parse(roleID.ToString())).FirstOrDefault().Id; } else if (role.Equals("accountant")) { userInv.StatusId = _statusService.GetAllStatuses().Where(p => p.StatusName.ToString().ToLower().Equals("pending for signature")).FirstOrDefault().Id; userId = _userTableService.GetAllUsers().Where(p => p.WWID == int.Parse(requestorId)).FirstOrDefault().Id; } var invoiceId = _invoiceService.GetAllInvoices().LastOrDefault().Id; userInv.UserTableId = userId; // userInv.StatusId = statusId; userInv.InvoiceId = invoiceId; userInv.isDelete = false; _userInvoiceService.AddUserInvoice(userInv); double totalPay = 0; foreach (var item in listItem) { InvoiceItem it = new InvoiceItem(); it.ItemVendorId = item.ItemVendorId; it.InvoiceId = invoiceId; it.isDelete = false; it.Quantity = item.Quantity; it.totalPrice = item.totalPrice; totalPay += item.totalPrice; _invoiceItemService.AddInvoiceItem(it); } Invoice invo = _invoiceService.GetInvoiceById(invoiceId); invo.totalPayment = totalPay; _invoiceService.EditInvoice(invo); Session["listItem"] = null; Session["option"] = null; Session["InvoiceID"] = null; InvoiceViewModel invoice = new InvoiceViewModel(); invoice.Id = invoiceId; invoice.Description = invo.Description; invoice.requestID = invo.requestID; invoice.URL = ""; //return RedirectToAction("Index"); return(View("Upload", invoice)); }
public ActionResult Edit(InvoiceViewModel obj) { string status = ""; Invoice item = _invoiceService.GetInvoiceById(obj.Id); var role = Session["role"].ToString().ToLower(); var note = item.UserInvoices.LastOrDefault().Status.Note.ToString().ToLower(); //if (obj.approve == true) //{ status = ChangeStatus.ChangeStatusInvoice(Session["role"].ToString(), obj.recentStatus.Trim(), false, false); //} //else status = obj.recentStatus; //Add 3 text if (obj.recentStatus.ToLower().Equals("waiting for payment")) { var a = obj.PaymentCreatedDate.ToShortDateString(); if (obj.PaymentVoucher == 0 || obj.PaymentCreatedDate.ToShortDateString().Equals("1/1/0001")) { return(Redirect("/Invoice/Edit?id=" + obj.Id)); } var invoice = _invoiceService.GetInvoiceById(obj.Id); invoice.PaymentAmount = obj.PaymentAmount; invoice.PaymentCreatedDate = obj.PaymentCreatedDate; invoice.PaymentVoucher = obj.PaymentVoucher; _invoiceService.EditInvoice(invoice); } else if (obj.recentStatus.ToString().ToLower().Equals("pending for validation") && role.Equals(note) /*&& !obj.InvoiceId.ToString().Equals("")*/) { if (obj.InvoiceId == null) { return(Redirect("/Invoice/Edit?id=" + obj.Id)); } item.Description = obj.InvoiceId.ToString(); // add invoice ID _invoiceService.EditInvoice(item); } if (status != null) { var wwid = Session["wwid"].ToString(); // var wwid = "11511221"; UserInvoice userInvoice = new UserInvoice(); userInvoice.CreatedDate = DateTime.Now.Date; userInvoice.InvoiceId = obj.Id; userInvoice.isDelete = false; userInvoice.isReject = false; userInvoice.StatusId = _statusService.GetAllStatuses().Where(p => p.StatusName.ToLower().Trim().Equals(status.ToLower().Trim())).FirstOrDefault().Id; if (role.Equals("requestor manager")) { var requestorMngID = _roleGroupService.GetAllRoleGroups().Where(p => p.GroupName.ToString().ToLower().Equals("requestor manager")).FirstOrDefault().Id; userInvoice.UserTableId = _userTableService.GetAllUsers().Where(p => p.RoleGroupId == requestorMngID).FirstOrDefault().Id; } else { userInvoice.UserTableId = _userTableService.GetAllUsers().Where(p => p.WWID == int.Parse(wwid)).FirstOrDefault().Id; } _userInvoiceService.AddUserInvoice(userInvoice); } return(RedirectToAction("Index")); }