public ActionResult Transaction(FormCollection frm) { var paymentWorker = new PaymentWorker(); var orderWorker = new OrderWorker(); var orderLayer = new OrderLayer(); orderLayer.Order.PaymentTypeId = int.Parse(frm["paymentType"]); var paymentDetail = paymentWorker.GetSitePaymentType(orderLayer.Order.PaymentTypeId); //payment commission calculation decimal currentPaymentFee = paymentDetail.ProcessFee + (orderLayer.Order.GrandTotal * (decimal)(paymentDetail.CommissionRate / 100)); decimal currentPaymentTax = orderLayer.Order.PaymentFee * 0.18M; currentPaymentFee -= currentPaymentTax; //installment commision calculation decimal currentInstallmentFee = 0M; decimal currentInstallmentTax = 0M; if (paymentDetail.Method == 2) { orderLayer.Order.InstallmentId = int.Parse(frm["installment"]); currentInstallmentFee = orderLayer.Order.GrandTotal * (decimal)(paymentDetail.Installments.FirstOrDefault(f => f.Id == orderLayer.Order.InstallmentId).Rate / 100); currentInstallmentTax = currentInstallmentFee * 0.18M; currentInstallmentFee -= currentInstallmentTax; } //join payment and installment to order orderLayer.Order.PaymentFee = currentPaymentFee; orderLayer.Order.InstallmentFee = currentInstallmentFee; //add tax and grand total orderLayer.Order.TaxTotal += currentPaymentTax + currentInstallmentTax; orderLayer.Order.GrandTotal += orderLayer.Order.PaymentFee + orderLayer.Order.InstallmentFee; orderLayer.Sync(); orderLayer.Order.Id = orderWorker.InsertSiteOrder(orderLayer.Order); orderLayer.Sync(); if (paymentDetail.Method == 1) { var paymentEntityModel = Mapper.Map <PaymentEntityViewModel>(orderLayer.Order); paymentEntityModel.PaymentDate = DateTime.Now; paymentEntityModel.Status = 0; paymentEntityModel.Log = "Peşin ödeme"; paymentEntityModel.InstallmentId = null; paymentWorker.InsertSitePaymentEntity(paymentEntityModel); return(RedirectToAction("Commit", new { id = paymentDetail.Method })); } else { return(RedirectToAction("Payment")); } }
public ActionResult Checkout(FormCollection frm) { var shipmentWorker = new ShipmentWorker(); var paymentWorker = new PaymentWorker(); var customerWorker = new CustomerWorker(); var orderLayer = new OrderLayer(); if (frm["AddressId"] != null) { orderLayer.Order.ShipAddressId = int.Parse(frm["AddressId"]); if (frm["InvoiceSendPartial"] == "yes") { orderLayer.Order.InvoiceAddressId = int.Parse(frm["InvoiceAddressId"]); } else { orderLayer.Order.InvoiceAddressId = int.Parse(frm["AddressId"]); } } orderLayer.Order.ShipmentTypeId = int.Parse(frm["ShipmentType"]); orderLayer.Order.Note = frm["Note"]; if (orderLayer.Order.ShipCost == 0) { decimal shipCost = ShippingHelper.ShippingPrice(shipmentWorker.GetSiteShipmentType(orderLayer.Order.ShipmentTypeId)); orderLayer.Order.TaxTotal += shipCost * 18 / 118; orderLayer.Order.ShipCost = shipCost * 100 / 118; orderLayer.Order.GrandTotal += shipCost; } orderLayer.Sync(); orderLayer.Order.Payments = paymentWorker.GetSitePaymentTypes(); ViewBag.ShipmentType = shipmentWorker.GetSiteShipmentType(orderLayer.Order.ShipmentTypeId); if (orderLayer.Order.ShipAddressId.HasValue) { ViewBag.ShipmentAddress = customerWorker.GetSiteCustomerAddress(orderLayer.Order.ShipAddressId.Value); } if (frm["InvoiceSendPartial"] == "yes") { ViewBag.InvoiceAddress = customerWorker.GetSiteCustomerAddress(orderLayer.Order.InvoiceAddressId.Value); } return(View(orderLayer.Order)); }