public ActionResult InvoiceList(DataSourceRequest command, InvoiceListModel 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; var filterByProductId = 0; var product = _productService.GetProductById(model.ProductId); //if (product != null && HasAccessToProduct(product)) // filterByProductId = model.ProductId; //load invoices var invoices = _invoiceService.SearchInvoices(storeId: model.StoreId, //vendorId: model.VendorId, productId: filterByProductId, warehouseId: model.WarehouseId, billingCountryId: model.BillingCountryId, paymentMethodSystemName: model.PaymentMethodSystemName, createdFromUtc: startDateValue, createdToUtc: endDateValue, os: orderStatus, ps: paymentStatus, ss: shippingStatus, billingEmail: model.CustomerEmail, orderNotes: model.OrderNotes, orderGuid: model.OrderGuid, pageIndex: command.Page - 1, pageSize: command.PageSize); foreach (var invoice in invoices) { var order = _orderService.GetOrderById(invoice.OrderId); invoice.OrderTotal = order.OrderTotal; } var gridModel = new DataSourceResult { Data = invoices.Select(x => { var store = _storeService.GetStoreById(x.StoreId); return new InvoiceModel { 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, // CustomerFullName = string.Format("{0} {1}", x.BillingAddress.FirstName, x.BillingAddress.LastName), CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc), Commission = x.Commission }; }), Total = invoices.TotalCount }; //summary report //currently we do not support productId and warehouseId parameters for this report var reportSummary = _orderReportService.GetOrderAverageReportLine( storeId: model.StoreId, vendorId: model.VendorId, billingCountryId: model.BillingCountryId, orderId: 0, paymentMethodSystemName: model.PaymentMethodSystemName, os: orderStatus, ps: paymentStatus, ss: shippingStatus, startTimeUtc: startDateValue, endTimeUtc: endDateValue, billingEmail: model.CustomerEmail, orderNotes: model.OrderNotes); var profit = _orderReportService.ProfitReport( storeId: model.StoreId, vendorId: model.VendorId, billingCountryId: model.BillingCountryId, paymentMethodSystemName: model.PaymentMethodSystemName, os: orderStatus, ps: paymentStatus, ss: shippingStatus, startTimeUtc: startDateValue, endTimeUtc: endDateValue, billingEmail: model.CustomerEmail, orderNotes: model.OrderNotes); var primaryStoreCurrency = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId); if (primaryStoreCurrency == null) throw new Exception("Cannot load primary store currency"); gridModel.ExtraData = new OrderAggreratorModel { aggregatorprofit = _priceFormatter.FormatPrice(profit, true, false), aggregatorshipping = _priceFormatter.FormatShippingPrice(reportSummary.SumShippingExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false), aggregatortax = _priceFormatter.FormatPrice(reportSummary.SumTax, true, false), aggregatortotal = _priceFormatter.FormatPrice(reportSummary.SumOrders, true, false) }; return new JsonResult { Data = gridModel }; }
public ActionResult List(int? orderStatusId = null, int? paymentStatusId = null, int? shippingStatusId = null) { //if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) // return AccessDeniedView(); //if (_workContext.CurrentVendor != null) //{ var orders = _orderService.SearchOrders(); //} foreach (var order in orders) { decimal commission = new decimal(0); foreach (var item in order.OrderItems) { var productTemplates = _productTemplateService.GetAllProductTemplates(); foreach (var template in productTemplates) { if (template.Id == item.Product.ProductTemplateId) { } } } var invoice = new Invoice { OrderId = order.Id, Commission = order.OrderTotal * new decimal(0.15), StoreId = order.StoreId, IsCommissionPaid = false, CreatedOnUtc = DateTime.Now, PaymentStatus = order.PaymentStatus, ShippingStatus = order.ShippingStatus, BillingAddress = order.BillingAddress, OrderStatus = order.OrderStatus, ProductId = 0 }; if (_invoiceService.GetInvoicesByOrderId(order.Id) == null) { _invoiceService.InsertInvoice(invoice); } else { _invoiceService.UpdateInvoice(invoice); } } //order statuses var model = new InvoiceListModel(); model.AvailableOrderStatuses = OrderStatus.Pending.ToSelectList(false).ToList(); model.AvailableOrderStatuses.Insert(0, new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); if (orderStatusId.HasValue) { //pre-select value? var item = model.AvailableOrderStatuses.FirstOrDefault(x => x.Value == orderStatusId.Value.ToString()); if (item != null) item.Selected = true; } //payment statuses model.AvailablePaymentStatuses = PaymentStatus.Pending.ToSelectList(false).ToList(); model.AvailablePaymentStatuses.Insert(0, new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); if (paymentStatusId.HasValue) { //pre-select value? var item = model.AvailablePaymentStatuses.FirstOrDefault(x => x.Value == paymentStatusId.Value.ToString()); if (item != null) item.Selected = true; } //shipping statuses model.AvailableShippingStatuses = ShippingStatus.NotYetShipped.ToSelectList(false).ToList(); model.AvailableShippingStatuses.Insert(0, new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); if (shippingStatusId.HasValue) { //pre-select value? var item = model.AvailableShippingStatuses.FirstOrDefault(x => x.Value == shippingStatusId.Value.ToString()); if (item != null) item.Selected = true; } //stores model.AvailableStores.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var s in _storeService.GetAllStores()) model.AvailableStores.Add(new SelectListItem { Text = s.Name, Value = s.Id.ToString() }); ////vendors //model.AvailableVendors.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); //foreach (var v in _vendorService.GetAllVendors(showHidden: true)) // model.AvailableVendors.Add(new SelectListItem { Text = v.Name, Value = v.Id.ToString() }); ////warehouses //model.AvailableWarehouses.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); //foreach (var w in _shippingService.GetAllWarehouses()) // model.AvailableWarehouses.Add(new SelectListItem { Text = w.Name, Value = w.Id.ToString() }); //payment methods model.AvailablePaymentMethods.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "" }); foreach (var pm in _paymentService.LoadAllPaymentMethods()) model.AvailablePaymentMethods.Add(new SelectListItem { Text = pm.PluginDescriptor.FriendlyName, Value = pm.PluginDescriptor.SystemName }); ////billing countries //foreach (var c in _countryService.GetAllCountriesForBilling(true)) //{ // model.AvailableCountries.Add(new SelectListItem { Text = c.Name, Value = c.Id.ToString() }); //} //model.AvailableCountries.Insert(0, new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); //a vendor should have access only to orders with his products model.IsLoggedInAsVendor = _workContext.CurrentVendor != null; return View(model); }