public payment CalculateEditSelectedTotal(long sessionID, long customerID) { payment _payment = new payment(); var _selecteditems = selecteditems.GetAll(); _selecteditems = _selecteditems.Where(q => q.idSession == sessionID).OrderByDescending(o => o.ID); int count = 0; decimal selectionTotal = 0; // Thhis selection or edit reservation total decimal reservationTotal = 0; // Previous reservation total foreach (var _selecteditem in _selecteditems) { count = count + 1; selectionTotal = selectionTotal + _selecteditem.total; // Check if selected item was a reserved item, // this means the selected item is in edit reservation mode if (_selecteditem.idReservationItem != null && _selecteditem.idReservationItem != IDnotFound) { var _reservationitem = reservationitems.GetById(_selecteditem.idReservationItem); reservationTotal = reservationTotal + _reservationitem.total; } } // ***** decimal dueAmount = Math.Max((selectionTotal - reservationTotal), 0); decimal refundAmount = Math.Max((reservationTotal - selectionTotal), 0); // Check if a cancellation fee applies decimal cancelationFee = GetCancelationFee(sessionID); if (selectionTotal < reservationTotal) { if ((reservationTotal - selectionTotal) < cancelationFee) { refundAmount = 0; dueAmount = cancelationFee - (reservationTotal - selectionTotal); } else { refundAmount = refundAmount - cancelationFee; } } else { cancelationFee = 0; } // Value of previous reservation, just before edit reservation mode started _payment.primaryTotal = reservationTotal; _payment.selectionTotal = selectionTotal; _payment.cancellationFee = cancelationFee; /// Suggested value for payment _payment.amount = dueAmount - refundAmount - CustomerAccountBalance(customerID); _payment.tax = Math.Round((dueAmount * GetProvinceTax(sessionID) / 100), 2, MidpointRounding.AwayFromZero); _payment.withoutTax = dueAmount - _payment.tax; return _payment; }
// Data to be presented on the view private void CreatePaymentViewBags(long sessionID, long sessionCustomerID) { // Data to be presented on the view payment _payment = new payment(); _payment = paymentService.CalculateEditSelectedTotal(sessionID, sessionCustomerID); // Value of previous reservation, just before edit reservation mode started ViewBag.PrimaryTotal = _payment.primaryTotal.ToString("N2"); ViewBag.SelectionTotal = _payment.selectionTotal.ToString("N2"); ViewBag.CancellationFee = _payment.cancellationFee.ToString("N2"); // Suggested value for payment if (_payment.amount >= 0) { ViewBag.dueAmount = _payment.amount.ToString("N2"); ViewBag.refundAmount = "0.00"; } else { ViewBag.refundAmount = (_payment.amount * -1).ToString("N2"); ViewBag.dueAmount = "0.00"; } }
public ActionResult PaymentReport() { long sessionID = sessionService.GetSessionID(this.HttpContext, true, false); long IPMEventID = sessionService.GetSessionIPMEventID(sessionID); var _payments = payments.GetAll(). Where(p => p.idIPMEvent == IPMEventID). OrderBy(ps => ps.ID).ToList(); payment total_payments = new payment(); total_payments.amount = _payments.Sum(a => a.amount); total_payments.withoutTax = _payments.Sum(wt => wt.withoutTax); total_payments.tax = _payments.Sum(t => t.tax); total_payments.primaryTotal = _payments.Sum(pt => pt.primaryTotal); total_payments.selectionTotal = _payments.Sum(st => st.selectionTotal); total_payments.cancellationFee = _payments.Sum(cf => cf.cancellationFee); ViewBag.Totals = total_payments; return View(_payments); }
public ActionResult PaymentOrRefund(payment _payment) { // Identify session long sessionID = sessionService.GetSessionID(this.HttpContext, true, false); long IPMEventID = sessionService.GetSessionIPMEventID(sessionID); long userID = sessionService.GetSessionUserID(this.HttpContext, false, false); // Create and insert payment _payment.idIPMEvent = sessionService.GetSessionIPMEventID(sessionID); _payment.idSession = sessionID; _payment.createDate = DateTime.Now; _payment.lastUpdate = DateTime.Now; payments.Insert(_payment); payments.Commit(); long ID = _payment.ID; var _selecteditems = selecteditems.GetAll().Where(s => s.idSession == sessionID); foreach (selecteditem item in _selecteditems) { bool editMode = item.idReservationItem != null && item.isSiteChecked; bool cancelMode = item.idReservationItem != null && !item.isSiteChecked; bool newMode = item.idReservationItem == null && item.isSiteChecked; // Update existing reservation item - For edit mode if (cancelMode) { var old_reservationitem = reservationitems.GetById(item.idReservationItem); old_reservationitem.isCancelled = true; old_reservationitem.timeStamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); old_reservationitem.total = 0; reservationitems.Update(old_reservationitem); reservationitems.Commit(); } if (editMode) { // Create and insert reservation items var _reservationitem = reservationitems.GetById(item.idReservationItem); _reservationitem.idIPMEvent = item.idIPMEvent.Value; _reservationitem.idRVSite = item.idRVSite.Value; _reservationitem.idCustomer = item.idCustomer.Value; _reservationitem.idStaff = item.idStaff.Value; _reservationitem.checkInDate = item.checkInDate; _reservationitem.checkOutDate = item.checkOutDate; _reservationitem.site = item.site; _reservationitem.siteType = item.siteType; _reservationitem.weeks = item.weeks; _reservationitem.weeklyRate = item.weeklyRate; _reservationitem.days = item.days; _reservationitem.dailyRate = item.dailyRate; _reservationitem.total = item.total; _reservationitem.isCancelled = false; _reservationitem.lastUpdate = DateTime.Now; _reservationitem.timeStamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); reservationitems.Update(_reservationitem); reservationitems.Commit(); } if (newMode) { // Create and insert reservation items var _reservationitem = new reservationitem(); _reservationitem.idIPMEvent = item.idIPMEvent.Value; _reservationitem.idRVSite = item.idRVSite.Value; _reservationitem.idCustomer = item.idCustomer.Value; _reservationitem.idStaff = item.idStaff.Value; _reservationitem.checkInDate = item.checkInDate; _reservationitem.checkOutDate = item.checkOutDate; _reservationitem.site = item.site; _reservationitem.siteType = item.siteType; _reservationitem.weeks = item.weeks; _reservationitem.weeklyRate = item.weeklyRate; _reservationitem.days = item.days; _reservationitem.dailyRate = item.dailyRate; _reservationitem.total = item.total; _reservationitem.isCancelled = false; _reservationitem.createDate = DateTime.Now; _reservationitem.lastUpdate = DateTime.Now; _reservationitem.timeStamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); reservationitems.Insert(_reservationitem); reservationitems.Commit(); // Create link between payment and reservation var _paymentreservationitem = new paymentreservationitem(); _paymentreservationitem.idIPMEvent = item.idIPMEvent.Value; _paymentreservationitem.idPayment = _payment.ID; _paymentreservationitem.createDate = DateTime.Now; _paymentreservationitem.lastUpdate = DateTime.Now; _paymentreservationitem.idPayment = ID; _paymentreservationitem.idReservationItem = _reservationitem.ID; paymentsreservationitems.Insert(_paymentreservationitem); paymentsreservationitems.Commit(); } } // Clean selected items paymentService.CleanAllSelectedItems(sessionID, userID); paymentService.CleanOldSelectedItem(IPMEventID, userID); // sessionService.ResetSessionCustomer(sessionID); return RedirectToAction("PrintPayment", new { id = ID }); }
public ActionResult PaymentOrRefund(bool isCredit = true) { long sessionID = sessionService.GetSessionID(this.HttpContext, true, false); ViewBag.UserName = sessionService.GetSessionUserName(sessionID); long customerID = sessionService.GetSessionCustomerID(sessionID); long IPMEventID = sessionService.GetSessionIPMEventID(sessionID); string customerName = sessionService.GetSessionCustomerNamePhone(sessionID); // Check customer's account balance decimal customerBalance = paymentService.CustomerAccountBalance(IPMEventID, customerID); // Retrieve totals for selected items in this session and transfer them to payment payment _payment = new payment(); _payment = paymentService.CalculateEditSelectedTotal(sessionID, IPMEventID, customerID); decimal owedAmount = _payment.selectionTotal + _payment.cancellationFee - customerBalance - _payment.primaryTotal; long reasonID = (long)reasonForPayment.E.NewReservation; string pageTitle = "Payment Or Refund"; string owedText = "(a) Owed Amount"; string balanceText = "(u) Account Balance"; string primaryText = string.Empty; string feeText = string.Empty; string selectionText = string.Empty; string amountText = "(b) Customer Paid"; string dueText = "(c) Due Amount |(b)-(a)|"; // Payment for a New Reservation if (owedAmount > 0 && _payment.primaryTotal == 0) { isCredit = true; reasonID = (long)reasonForPayment.E.NewReservation; pageTitle = "Payment For New Reservation"; owedText = "(a) Owed Amount (u)-(y)"; balanceText = "(u) Account Balance"; primaryText = string.Empty; feeText = string.Empty; selectionText = "(y) New Reservation Total"; amountText = "(b) Customer Paid"; dueText = "(c) Due Amount |(b)-(a)|"; } // Payment for a Edit Reservation if (owedAmount > 0 && _payment.primaryTotal > 0) { isCredit = true; reasonID = (long)reasonForPayment.E.ExtendReservation; pageTitle = "Payment For Extend Reservation"; owedText = "(a) Owed Amount (u)+(v)-(y)"; balanceText = "(u) Account Balance"; primaryText = "(v) Primary Reservation Total"; feeText = string.Empty; selectionText = "(y) New Reservation Total"; amountText = "(b) Customer Paid"; dueText = "(c) Due Amount |(b)-(a)|"; } // Refund for a Edit Reservation if (owedAmount < 0 && _payment.primaryTotal > 0) { isCredit = false; reasonID = (long)reasonForPayment.E.ShortenReservation; pageTitle = "Refund For Shorten Reservation"; owedText = "(a) Refund Amount (u)+(v)-(x)-(y)"; balanceText = "(u) Account Balance"; primaryText = "(v) Primary Reservation Total"; feeText = "(x) Cancellation Fee"; selectionText = "(y) New Reservation Total"; amountText = "(b) Customer Received"; dueText = "(c) Credit Amount (b)-(a)"; } // Set reason for payment updateReasonForPayment(); // Texts for payment page ViewBag.IsCredit = isCredit; ViewBag.ReasonForPayment = reasonID; ViewBag.PageTitle = pageTitle; ViewBag.OwedText = owedText; ViewBag.BalanceText = balanceText; ViewBag.PrimaryText = primaryText; ViewBag.FeeText = feeText; ViewBag.SelectionText = selectionText; ViewBag.AmountText = amountText; ViewBag.DueText = dueText; // Tax Percentage ViewBag.ProvinceTax = paymentService.GetProvinceTax(sessionID); // Payment summary info ViewBag.OwedAmount = owedAmount; ViewBag.CustomerBalance = customerBalance; ViewBag.CustomerID = customerID; ViewBag.CustomerName = customerName; // Create ViewBag for Dropdownlist reasonsForPayment(pageTitle); // Create ViewBag for Dropdownlist paymentMethods("VISA"); return View(_payment); }
public ActionResult PaymentOrRefund(payment _payment) { // Identify session long sessionID = sessionService.GetSessionID(this.HttpContext); // Create and insert payment _payment.idSession = sessionID; _payment.createDate = DateTime.Now; _payment.lastUpdate = DateTime.Now; payments.Insert(_payment); payments.Commit(); long ID = _payment.ID; var _selecteditems = selecteditems.GetAll().Where(s => s.idSession == sessionID); foreach (selecteditem item in _selecteditems) { if (item.isSiteChecked) { // Update existing reservation item - For edit mode if (item.idReservationItem != null && item.idReservationItem != IDnotFound) { var old_reservationitem = reservationitems.GetById(item.idReservationItem); old_reservationitem.isCancelled = true; old_reservationitem.total = 0; reservationitems.Update(old_reservationitem); } // Create and insert reservation items var _reservationitem = new reservationitem(); _reservationitem.idRVSite = item.idRVSite.Value; _reservationitem.idCustomer = item.idCustomer.Value; _reservationitem.idStaff = item.idStaff.Value; _reservationitem.checkInDate = item.checkInDate; _reservationitem.checkOutDate = item.checkOutDate; _reservationitem.site = item.site; _reservationitem.siteType = item.siteType; _reservationitem.weeks = item.weeks; _reservationitem.weeklyRate = item.weeklyRate; _reservationitem.days = item.days; _reservationitem.dailyRate = item.dailyRate; _reservationitem.total = item.total; _reservationitem.createDate = DateTime.Now; _reservationitem.lastUpdate = DateTime.Now; reservationitems.Insert(_reservationitem); reservationitems.Commit(); // Create link between payment and reservation // *****_reservationitem.idPayment var _paymentreservationitem = new paymentreservationitem(); _paymentreservationitem.idPayment = _payment.ID; _paymentreservationitem.idReservationItem = _reservationitem.ID; _paymentreservationitem.createDate = DateTime.Now; _paymentreservationitem.lastUpdate = DateTime.Now; paymentsreservationitems.Insert(_paymentreservationitem); paymentsreservationitems.Commit(); } } // Clean selected items paymentService.CleanAllSelectedItems(sessionID); // sessionService.ResetSessionCustomer(sessionID); return RedirectToAction("PrintPayment", new { id = ID }); }