public ActionResult CaptureOrder(int id) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null) //No order found with the specified id return RedirectToAction("List"); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null) return RedirectToAction("Edit", "Order", new { id = id }); try { var errors = _orderProcessingService.Capture(order); var model = new OrderModel(); PrepareOrderDetailsModel(model, order); foreach (var error in errors) ErrorNotification(error, false); return View(model); } catch (Exception exc) { //error var model = new OrderModel(); PrepareOrderDetailsModel(model, order); ErrorNotification(exc, false); return View(model); } }
public ActionResult UploadLicenseFilePopup(string btnId, string formId, OrderModel.UploadLicenseModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(model.OrderId); if (order == null) //No order found with the specified id return RedirectToAction("List"); var orderProductVariant = order.OrderProductVariants.FirstOrDefault(x => x.Id == model.OrderProductVariantId); if (orderProductVariant == null) throw new ArgumentException("No order product variant found with the specified id"); //ensure a vendor has access only to his products if (_workContext.CurrentVendor != null && !HasAccessToOrderProductVariant(orderProductVariant)) return RedirectToAction("List"); //attach license if (model.LicenseDownloadId > 0) orderProductVariant.LicenseDownloadId = model.LicenseDownloadId; else orderProductVariant.LicenseDownloadId = null; _orderService.UpdateOrder(order); //success ViewBag.RefreshPage = true; ViewBag.btnId = btnId; ViewBag.formId = formId; return View(model); }
protected void PrepareOrderDetailsModel(OrderModel model, Order order) { if (order == null) throw new ArgumentNullException("order"); if (model == null) throw new ArgumentNullException("model"); model.Id = order.Id; model.OrderStatus = order.OrderStatus.GetLocalizedEnum(_localizationService, _workContext); model.OrderGuid = order.OrderGuid; var store = _storeService.GetStoreById(order.StoreId); model.StoreName = store != null ? store.Name : "Unknown"; model.CustomerId = order.CustomerId; var customer = order.Customer; model.CustomerInfo = customer.IsRegistered() ? customer.Email : _localizationService.GetResource("Admin.Customers.Guest"); model.CustomerIp = order.CustomerIp; model.VatNumber = order.VatNumber; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(order.CreatedOnUtc, DateTimeKind.Utc); model.DisplayPdfInvoice = _pdfSettings.Enabled; model.AllowCustomersToSelectTaxDisplayType = _taxSettings.AllowCustomersToSelectTaxDisplayType; model.TaxDisplayType = _taxSettings.TaxDisplayType; model.AffiliateId = order.AffiliateId; //a vendor should have access only to his products model.IsLoggedInAsVendor = _workContext.CurrentVendor != null; #region Order totals var primaryStoreCurrency = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId); //subtotal model.OrderSubtotalInclTax = _priceFormatter.FormatPrice(order.OrderSubtotalInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true); model.OrderSubtotalExclTax = _priceFormatter.FormatPrice(order.OrderSubtotalExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false); model.OrderSubtotalInclTaxValue = order.OrderSubtotalInclTax; model.OrderSubtotalExclTaxValue = order.OrderSubtotalExclTax; //discount (applied to order subtotal) string orderSubtotalDiscountInclTaxStr = _priceFormatter.FormatPrice(order.OrderSubTotalDiscountInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true); string orderSubtotalDiscountExclTaxStr = _priceFormatter.FormatPrice(order.OrderSubTotalDiscountExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false); if (order.OrderSubTotalDiscountInclTax > decimal.Zero) model.OrderSubTotalDiscountInclTax = orderSubtotalDiscountInclTaxStr; if (order.OrderSubTotalDiscountExclTax > decimal.Zero) model.OrderSubTotalDiscountExclTax = orderSubtotalDiscountExclTaxStr; model.OrderSubTotalDiscountInclTaxValue = order.OrderSubTotalDiscountInclTax; model.OrderSubTotalDiscountExclTaxValue = order.OrderSubTotalDiscountExclTax; //shipping model.OrderShippingInclTax = _priceFormatter.FormatShippingPrice(order.OrderShippingInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true); model.OrderShippingExclTax = _priceFormatter.FormatShippingPrice(order.OrderShippingExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false); model.OrderShippingInclTaxValue = order.OrderShippingInclTax; model.OrderShippingExclTaxValue = order.OrderShippingExclTax; //payment method additional fee if (order.PaymentMethodAdditionalFeeInclTax > decimal.Zero) { model.PaymentMethodAdditionalFeeInclTax = _priceFormatter.FormatPaymentMethodAdditionalFee(order.PaymentMethodAdditionalFeeInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true); model.PaymentMethodAdditionalFeeExclTax = _priceFormatter.FormatPaymentMethodAdditionalFee(order.PaymentMethodAdditionalFeeExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false); } model.PaymentMethodAdditionalFeeInclTaxValue = order.PaymentMethodAdditionalFeeInclTax; model.PaymentMethodAdditionalFeeExclTaxValue = order.PaymentMethodAdditionalFeeExclTax; //tax model.Tax = _priceFormatter.FormatPrice(order.OrderTax, true, false); SortedDictionary<decimal, decimal> taxRates = order.TaxRatesDictionary; bool displayTaxRates = _taxSettings.DisplayTaxRates && taxRates.Count > 0; bool displayTax = !displayTaxRates; foreach (var tr in order.TaxRatesDictionary) { model.TaxRates.Add(new OrderModel.TaxRate() { Rate = _priceFormatter.FormatTaxRate(tr.Key), Value = _priceFormatter.FormatPrice(tr.Value, true, false), }); } model.DisplayTaxRates = displayTaxRates; model.DisplayTax = displayTax; model.TaxValue = order.OrderTax; model.TaxRatesValue = order.TaxRates; //discount if (order.OrderDiscount > 0) model.OrderTotalDiscount = _priceFormatter.FormatPrice(-order.OrderDiscount, true, false); model.OrderTotalDiscountValue = order.OrderDiscount; //gift cards foreach (var gcuh in order.GiftCardUsageHistory) { model.GiftCards.Add(new OrderModel.GiftCard() { CouponCode = gcuh.GiftCard.GiftCardCouponCode, Amount = _priceFormatter.FormatPrice(-gcuh.UsedValue, true, false), }); } //reward points if (order.RedeemedRewardPointsEntry != null) { model.RedeemedRewardPoints = -order.RedeemedRewardPointsEntry.Points; model.RedeemedRewardPointsAmount = _priceFormatter.FormatPrice(-order.RedeemedRewardPointsEntry.UsedAmount, true, false); } //total model.OrderTotal = _priceFormatter.FormatPrice(order.OrderTotal, true, false); model.OrderTotalValue = order.OrderTotal; //refunded amount if (order.RefundedAmount > decimal.Zero) model.RefundedAmount = _priceFormatter.FormatPrice(order.RefundedAmount, true, false); //used discounts var duh = _discountService.GetAllDiscountUsageHistory(null, null, order.Id, 0, int.MaxValue); foreach (var d in duh) { model.UsedDiscounts.Add(new OrderModel.UsedDiscountModel() { DiscountId = d.DiscountId, DiscountName = d.Discount.Name }); } #endregion #region Payment info if (order.AllowStoringCreditCardNumber) { //card type model.CardType = _encryptionService.DecryptText(order.CardType); //cardholder name model.CardName = _encryptionService.DecryptText(order.CardName); //card number model.CardNumber = _encryptionService.DecryptText(order.CardNumber); //cvv model.CardCvv2 = _encryptionService.DecryptText(order.CardCvv2); //expiry date string cardExpirationMonthDecrypted = _encryptionService.DecryptText(order.CardExpirationMonth); if (!String.IsNullOrEmpty(cardExpirationMonthDecrypted) && cardExpirationMonthDecrypted != "0") model.CardExpirationMonth = cardExpirationMonthDecrypted; string cardExpirationYearDecrypted = _encryptionService.DecryptText(order.CardExpirationYear); if (!String.IsNullOrEmpty(cardExpirationYearDecrypted) && cardExpirationYearDecrypted != "0") model.CardExpirationYear = cardExpirationYearDecrypted; model.AllowStoringCreditCardNumber = true; } else { string maskedCreditCardNumberDecrypted = _encryptionService.DecryptText(order.MaskedCreditCardNumber); if (!String.IsNullOrEmpty(maskedCreditCardNumberDecrypted)) model.CardNumber = maskedCreditCardNumberDecrypted; } //purchase order number (we have to find a better to inject this information because it's related to a certain plugin) var pm = _paymentService.LoadPaymentMethodBySystemName(order.PaymentMethodSystemName); if (pm != null && pm.PluginDescriptor.SystemName.Equals("Payments.PurchaseOrder", StringComparison.InvariantCultureIgnoreCase)) { model.DisplayPurchaseOrderNumber = true; model.PurchaseOrderNumber = order.PurchaseOrderNumber; } //payment transaction info model.AuthorizationTransactionId = order.AuthorizationTransactionId; model.CaptureTransactionId = order.CaptureTransactionId; model.SubscriptionTransactionId = order.SubscriptionTransactionId; //payment method info model.PaymentMethod = pm != null ? pm.PluginDescriptor.FriendlyName : order.PaymentMethodSystemName; model.PaymentStatus = order.PaymentStatus.GetLocalizedEnum(_localizationService, _workContext); //payment method buttons model.CanCancelOrder = _orderProcessingService.CanCancelOrder(order); model.CanCapture = _orderProcessingService.CanCapture(order); model.CanMarkOrderAsPaid = _orderProcessingService.CanMarkOrderAsPaid(order); model.CanRefund = _orderProcessingService.CanRefund(order); model.CanRefundOffline = _orderProcessingService.CanRefundOffline(order); model.CanPartiallyRefund = _orderProcessingService.CanPartiallyRefund(order, decimal.Zero); model.CanPartiallyRefundOffline = _orderProcessingService.CanPartiallyRefundOffline(order, decimal.Zero); model.CanVoid = _orderProcessingService.CanVoid(order); model.CanVoidOffline = _orderProcessingService.CanVoidOffline(order); model.PrimaryStoreCurrencyCode = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId).CurrencyCode; model.MaxAmountToRefund = order.OrderTotal - order.RefundedAmount; //recurring payment record var recurringPayment = _orderService.SearchRecurringPayments(0, 0, order.Id, null, 0, int.MaxValue, true).FirstOrDefault(); if (recurringPayment != null) { model.RecurringPaymentId = recurringPayment.Id; } #endregion #region Billing & shipping info model.BillingAddress = order.BillingAddress.ToModel(); model.BillingAddress.FirstNameEnabled = true; model.BillingAddress.FirstNameRequired = true; model.BillingAddress.LastNameEnabled = true; model.BillingAddress.LastNameRequired = true; model.BillingAddress.EmailEnabled = true; model.BillingAddress.EmailRequired = true; model.BillingAddress.CompanyEnabled = _addressSettings.CompanyEnabled; model.BillingAddress.CompanyRequired = _addressSettings.CompanyRequired; model.BillingAddress.CountryEnabled = _addressSettings.CountryEnabled; model.BillingAddress.StateProvinceEnabled = _addressSettings.StateProvinceEnabled; model.BillingAddress.CityEnabled = _addressSettings.CityEnabled; model.BillingAddress.CityRequired = _addressSettings.CityRequired; model.BillingAddress.StreetAddressEnabled = _addressSettings.StreetAddressEnabled; model.BillingAddress.StreetAddressRequired = _addressSettings.StreetAddressRequired; model.BillingAddress.StreetAddress2Enabled = _addressSettings.StreetAddress2Enabled; model.BillingAddress.StreetAddress2Required = _addressSettings.StreetAddress2Required; model.BillingAddress.ZipPostalCodeEnabled = _addressSettings.ZipPostalCodeEnabled; model.BillingAddress.ZipPostalCodeRequired = _addressSettings.ZipPostalCodeRequired; model.BillingAddress.PhoneEnabled = _addressSettings.PhoneEnabled; model.BillingAddress.PhoneRequired = _addressSettings.PhoneRequired; model.BillingAddress.FaxEnabled = _addressSettings.FaxEnabled; model.BillingAddress.FaxRequired = _addressSettings.FaxRequired; model.ShippingStatus = order.ShippingStatus.GetLocalizedEnum(_localizationService, _workContext); ; if (order.ShippingStatus != ShippingStatus.ShippingNotRequired) { model.IsShippable = true; model.ShippingAddress = order.ShippingAddress.ToModel(); model.ShippingAddress.FirstNameEnabled = true; model.ShippingAddress.FirstNameRequired = true; model.ShippingAddress.LastNameEnabled = true; model.ShippingAddress.LastNameRequired = true; model.ShippingAddress.EmailEnabled = true; model.ShippingAddress.EmailRequired = true; model.ShippingAddress.CompanyEnabled = _addressSettings.CompanyEnabled; model.ShippingAddress.CompanyRequired = _addressSettings.CompanyRequired; model.ShippingAddress.CountryEnabled = _addressSettings.CountryEnabled; model.ShippingAddress.StateProvinceEnabled = _addressSettings.StateProvinceEnabled; model.ShippingAddress.CityEnabled = _addressSettings.CityEnabled; model.ShippingAddress.CityRequired = _addressSettings.CityRequired; model.ShippingAddress.StreetAddressEnabled = _addressSettings.StreetAddressEnabled; model.ShippingAddress.StreetAddressRequired = _addressSettings.StreetAddressRequired; model.ShippingAddress.StreetAddress2Enabled = _addressSettings.StreetAddress2Enabled; model.ShippingAddress.StreetAddress2Required = _addressSettings.StreetAddress2Required; model.ShippingAddress.ZipPostalCodeEnabled = _addressSettings.ZipPostalCodeEnabled; model.ShippingAddress.ZipPostalCodeRequired = _addressSettings.ZipPostalCodeRequired; model.ShippingAddress.PhoneEnabled = _addressSettings.PhoneEnabled; model.ShippingAddress.PhoneRequired = _addressSettings.PhoneRequired; model.ShippingAddress.FaxEnabled = _addressSettings.FaxEnabled; model.ShippingAddress.FaxRequired = _addressSettings.FaxRequired; model.ShippingMethod = order.ShippingMethod; model.ShippingAddressGoogleMapsUrl = string.Format("http://maps.google.com/maps?f=q&hl=en&ie=UTF8&oe=UTF8&geocode=&q={0}", Server.UrlEncode(order.ShippingAddress.Address1 + " " + order.ShippingAddress.ZipPostalCode + " " + order.ShippingAddress.City + " " + (order.ShippingAddress.Country != null ? order.ShippingAddress.Country.Name : ""))); model.CanAddNewShipments = order.HasItemsToAddToShipment(); } #endregion #region Products model.CheckoutAttributeInfo = order.CheckoutAttributeDescription; bool hasDownloadableItems = false; var products = order.OrderProductVariants; //a vendor should have access only to his products if (_workContext.CurrentVendor != null) { products = products .Where(opv => opv.ProductVariant.Product.VendorId == _workContext.CurrentVendor.Id) .ToList(); } foreach (var opv in products) { if (opv.ProductVariant != null && opv.ProductVariant.IsDownload) hasDownloadableItems = true; var opvModel = new OrderModel.OrderProductVariantModel() { Id = opv.Id, ProductVariantId = opv.ProductVariantId, FullProductName = opv.ProductVariant.FullProductName, Sku = opv.ProductVariant.FormatSku(opv.AttributesXml, _productAttributeParser), Quantity = opv.Quantity, IsDownload = opv.ProductVariant.IsDownload, DownloadCount = opv.DownloadCount, DownloadActivationType = opv.ProductVariant.DownloadActivationType, IsDownloadActivated = opv.IsDownloadActivated, LicenseDownloadId = opv.LicenseDownloadId }; //vendor var vendor = _vendorService.GetVendorById(opv.ProductVariant.Product.VendorId); opvModel.VendorName = vendor != null ? vendor.Name : ""; //unit price opvModel.UnitPriceInclTaxValue = opv.UnitPriceInclTax; opvModel.UnitPriceExclTaxValue = opv.UnitPriceExclTax; opvModel.UnitPriceInclTax = _priceFormatter.FormatPrice(opv.UnitPriceInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true, true); opvModel.UnitPriceExclTax = _priceFormatter.FormatPrice(opv.UnitPriceExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false, true); //discounts opvModel.DiscountInclTaxValue = opv.DiscountAmountInclTax; opvModel.DiscountExclTaxValue = opv.DiscountAmountExclTax; opvModel.DiscountInclTax = _priceFormatter.FormatPrice(opv.DiscountAmountInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true, true); opvModel.DiscountExclTax = _priceFormatter.FormatPrice(opv.DiscountAmountExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false, true); //subtotal opvModel.SubTotalInclTaxValue = opv.PriceInclTax; opvModel.SubTotalExclTaxValue = opv.PriceExclTax; opvModel.SubTotalInclTax = _priceFormatter.FormatPrice(opv.PriceInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true, true); opvModel.SubTotalExclTax = _priceFormatter.FormatPrice(opv.PriceExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false, true); opvModel.AttributeInfo = opv.AttributeDescription; if (opv.ProductVariant.IsRecurring) opvModel.RecurringInfo = string.Format(_localizationService.GetResource("Admin.Orders.Products.RecurringPeriod"), opv.ProductVariant.RecurringCycleLength, opv.ProductVariant.RecurringCyclePeriod.GetLocalizedEnum(_localizationService, _workContext)); //return requests opvModel.ReturnRequestIds = _orderService.SearchReturnRequests(0, 0, opv.Id, null, 0, int.MaxValue) .Select(rr => rr.Id).ToList(); //gift cards opvModel.PurchasedGiftCardIds = _giftCardService.GetGiftCardsByPurchasedWithOrderProductVariantId(opv.Id) .Select(gc => gc.Id).ToList(); model.Items.Add(opvModel); } model.HasDownloadableProducts = hasDownloadableItems; #endregion }
public ActionResult ResetDownloadCount(int id, FormCollection form) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null) //No order found with the specified id return RedirectToAction("List"); ViewData["selectedTab"] = "products"; //get order product variant identifier int opvId = 0; foreach (var formValue in form.AllKeys) if (formValue.StartsWith("btnResetDownloadCount", StringComparison.InvariantCultureIgnoreCase)) opvId = Convert.ToInt32(formValue.Substring("btnResetDownloadCount".Length)); var orderProductVariant = order.OrderProductVariants.FirstOrDefault(x => x.Id == opvId); if (orderProductVariant == null) throw new ArgumentException("No order product variant found with the specified id"); //ensure a vendor has access only to his products if (_workContext.CurrentVendor != null && !HasAccessToOrderProductVariant(orderProductVariant)) return RedirectToAction("List"); orderProductVariant.DownloadCount = 0; _orderService.UpdateOrder(order); var model = new OrderModel(); PrepareOrderDetailsModel(model, order); return View(model); }
public ActionResult AddProductToOrder(GridCommand command, OrderModel.AddOrderProductModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null) return Content(""); var gridModel = new GridModel(); var productVariants = _productService.SearchProductVariants(model.SearchCategoryId, model.SearchManufacturerId, 0, model.SearchProductName, false, command.Page - 1, command.PageSize, true); gridModel.Data = productVariants.Select(x => { var productVariantModel = new OrderModel.AddOrderProductModel.ProductVariantLineModel() { Id = x.Id, Name = x.FullProductName, Sku = x.Sku, }; return productVariantModel; }); gridModel.Total = productVariants.TotalCount; return new JsonResult { Data = gridModel }; }
public ActionResult PartiallyRefundOrderPopup(int id, bool online) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null) //No order found with the specified id return RedirectToAction("List"); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null) return RedirectToAction("Edit", "Order", new { id = id }); var model = new OrderModel(); PrepareOrderDetailsModel(model, order); return View(model); }
public ActionResult PartiallyRefundOrderPopup(string btnId, string formId, int id, bool online, OrderModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null) //No order found with the specified id return RedirectToAction("List"); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null) return RedirectToAction("Edit", "Order", new { id = id }); try { decimal amountToRefund = model.AmountToRefund; if (amountToRefund <= decimal.Zero) throw new NasException("Enter amount to refund"); decimal maxAmountToRefund = order.OrderTotal - order.RefundedAmount; if (amountToRefund > maxAmountToRefund) amountToRefund = maxAmountToRefund; var errors = new List<string>(); if (online) errors = _orderProcessingService.PartiallyRefund(order, amountToRefund).ToList(); else _orderProcessingService.PartiallyRefundOffline(order, amountToRefund); if (errors.Count == 0) { //success ViewBag.RefreshPage = true; ViewBag.btnId = btnId; ViewBag.formId = formId; PrepareOrderDetailsModel(model, order); return View(model); } else { //error PrepareOrderDetailsModel(model, order); foreach (var error in errors) ErrorNotification(error, false); return View(model); } } catch (Exception exc) { //error PrepareOrderDetailsModel(model, order); ErrorNotification(exc, false); return View(model); } }
public ActionResult OrderList(GridCommand command, OrderListModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); //a vendor should have access only to his products if (_workContext.CurrentVendor != null) { model.VendorId = _workContext.CurrentVendor.Id; } DateTime? startDateValue = (model.StartDate == null) ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.StartDate.Value, _dateTimeHelper.CurrentTimeZone); DateTime? endDateValue = (model.EndDate == null) ? null :(DateTime?)_dateTimeHelper.ConvertToUtcTime(model.EndDate.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1); OrderStatus? orderStatus = model.OrderStatusId > 0 ? (OrderStatus?)(model.OrderStatusId) : null; PaymentStatus? paymentStatus = model.PaymentStatusId > 0 ? (PaymentStatus?)(model.PaymentStatusId) : null; ShippingStatus? shippingStatus = model.ShippingStatusId > 0 ? (ShippingStatus?)(model.ShippingStatusId) : null; //load orders var orders = _orderService.SearchOrders(model.StoreId, model.VendorId, 0, startDateValue, endDateValue, orderStatus, paymentStatus, shippingStatus, model.CustomerEmail, model.OrderGuid, command.Page - 1, command.PageSize); var gridModel = new GridModel<OrderModel> { Data = orders.Select(x => { var store = _storeService.GetStoreById(x.StoreId); return new OrderModel() { Id = x.Id, StoreName = store != null ? store.Name : "Unknown", OrderTotal = _priceFormatter.FormatPrice(x.OrderTotal, true, false), OrderStatus = x.OrderStatus.GetLocalizedEnum(_localizationService, _workContext), PaymentStatus = x.PaymentStatus.GetLocalizedEnum(_localizationService, _workContext), ShippingStatus = x.ShippingStatus.GetLocalizedEnum(_localizationService, _workContext), CustomerEmail = x.BillingAddress.Email, CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc) }; }), Total = orders.TotalCount }; //summary report //implemented as a workaround described here: http://www.telerik.com/community/forums/aspnet-mvc/grid/gridmodel-aggregates-how-to-use.aspx var reportSummary = _orderReportService.GetOrderAverageReportLine(model.StoreId, model.VendorId, orderStatus, paymentStatus, shippingStatus, startDateValue, endDateValue, model.CustomerEmail); var profit = _orderReportService.ProfitReport(model.StoreId, model.VendorId, orderStatus, paymentStatus, shippingStatus, startDateValue, endDateValue, model.CustomerEmail); var aggregator = new OrderModel() { aggregatorprofit = _priceFormatter.FormatPrice(profit, true, false), aggregatortax = _priceFormatter.FormatPrice(reportSummary.SumTax, true, false), aggregatortotal = _priceFormatter.FormatPrice(reportSummary.SumOrders, true, false) }; gridModel.Aggregates = aggregator; return new JsonResult { Data = gridModel }; }
public ActionResult EditOrderTotals(int id, OrderModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null) //No order found with the specified id return RedirectToAction("List"); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null) return RedirectToAction("Edit", "Order", new { id = id }); order.OrderSubtotalInclTax = model.OrderSubtotalInclTaxValue; order.OrderSubtotalExclTax = model.OrderSubtotalExclTaxValue; order.OrderSubTotalDiscountInclTax = model.OrderSubTotalDiscountInclTaxValue; order.OrderSubTotalDiscountExclTax = model.OrderSubTotalDiscountExclTaxValue; order.OrderShippingInclTax = model.OrderShippingInclTaxValue; order.OrderShippingExclTax = model.OrderShippingExclTaxValue; order.PaymentMethodAdditionalFeeInclTax = model.PaymentMethodAdditionalFeeInclTaxValue; order.PaymentMethodAdditionalFeeExclTax = model.PaymentMethodAdditionalFeeExclTaxValue; order.TaxRates = model.TaxRatesValue; order.OrderTax = model.TaxValue; order.OrderDiscount = model.OrderTotalDiscountValue; order.OrderTotal = model.OrderTotalValue; _orderService.UpdateOrder(order); PrepareOrderDetailsModel(model, order); return View(model); }
public ActionResult EditOrderProductVariant(int id, FormCollection form) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null) //No order found with the specified id return RedirectToAction("List"); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null) return RedirectToAction("Edit", "Order", new { id = id }); ViewData["selectedTab"] = "products"; //get order product variant identifier int opvId = 0; foreach (var formValue in form.AllKeys) if (formValue.StartsWith("btnSaveOpv", StringComparison.InvariantCultureIgnoreCase)) opvId = Convert.ToInt32(formValue.Substring("btnSaveOpv".Length)); var orderProductVariant = order.OrderProductVariants.FirstOrDefault(x => x.Id == opvId); if (orderProductVariant == null) throw new ArgumentException("No order product variant found with the specified id"); decimal unitPriceInclTax, unitPriceExclTax, discountInclTax, discountExclTax,priceInclTax,priceExclTax; int quantity; if (!decimal.TryParse(form["pvUnitPriceInclTax" + opvId], out unitPriceInclTax)) unitPriceInclTax =orderProductVariant.UnitPriceInclTax; if (!decimal.TryParse(form["pvUnitPriceExclTax" + opvId], out unitPriceExclTax)) unitPriceExclTax = orderProductVariant.UnitPriceExclTax; if (!int.TryParse(form["pvQuantity" + opvId], out quantity)) quantity = orderProductVariant.Quantity; if (!decimal.TryParse(form["pvDiscountInclTax" + opvId], out discountInclTax)) discountInclTax = orderProductVariant.DiscountAmountInclTax; if (!decimal.TryParse(form["pvDiscountExclTax" + opvId], out discountExclTax)) discountExclTax = orderProductVariant.DiscountAmountExclTax; if (!decimal.TryParse(form["pvPriceInclTax" + opvId], out priceInclTax)) priceInclTax = orderProductVariant.PriceInclTax; if (!decimal.TryParse(form["pvPriceExclTax" + opvId], out priceExclTax)) priceExclTax = orderProductVariant.PriceExclTax; if (quantity > 0) { orderProductVariant.UnitPriceInclTax = unitPriceInclTax; orderProductVariant.UnitPriceExclTax = unitPriceExclTax; orderProductVariant.Quantity = quantity; orderProductVariant.DiscountAmountInclTax = discountInclTax; orderProductVariant.DiscountAmountExclTax = discountExclTax; orderProductVariant.PriceInclTax = priceInclTax; orderProductVariant.PriceExclTax = priceExclTax; _orderService.UpdateOrder(order); } else { _orderService.DeleteOrderProductVariant(orderProductVariant); } var model = new OrderModel(); PrepareOrderDetailsModel(model, order); return View(model); }
public ActionResult EditCreditCardInfo(int id, OrderModel model) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null) //No order found with the specified id return RedirectToAction("List"); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null) return RedirectToAction("Edit", "Order", new { id = id }); if (order.AllowStoringCreditCardNumber) { string cardType = model.CardType; string cardName = model.CardName; string cardNumber = model.CardNumber; string cardCvv2 = model.CardCvv2; string cardExpirationMonth = model.CardExpirationMonth; string cardExpirationYear = model.CardExpirationYear; order.CardType = _encryptionService.EncryptText(cardType); order.CardName = _encryptionService.EncryptText(cardName); order.CardNumber = _encryptionService.EncryptText(cardNumber); order.MaskedCreditCardNumber = _encryptionService.EncryptText(_paymentService.GetMaskedCreditCardNumber(cardNumber)); order.CardCvv2 = _encryptionService.EncryptText(cardCvv2); order.CardExpirationMonth = _encryptionService.EncryptText(cardExpirationMonth); order.CardExpirationYear = _encryptionService.EncryptText(cardExpirationYear); _orderService.UpdateOrder(order); } PrepareOrderDetailsModel(model, order); return View(model); }
public ActionResult Edit(int id) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(id); if (order == null || order.Deleted) //No order found with the specified id return RedirectToAction("List"); //a vendor does not have to this functionality if (_workContext.CurrentVendor != null && !HasAccessToOrder(order)) return RedirectToAction("List"); var model = new OrderModel(); PrepareOrderDetailsModel(model, order); return View(model); }