public ActionResult AddShipment(int orderId) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders)) return AccessDeniedView(); var order = _orderService.GetOrderById(orderId); if (order == null) //No order found with the specified id return RedirectToAction("List"); var model = new ShipmentModel() { OrderId = order.Id, }; //measures var baseWeight = _measureService.GetMeasureWeightById(_measureSettings.BaseWeightId); var baseWeightIn = baseWeight != null ? baseWeight.Name : ""; var baseDimension = _measureService.GetMeasureDimensionById(_measureSettings.BaseDimensionId); var baseDimensionIn = baseDimension != null ? baseDimension.Name : ""; foreach (var orderItem in order.OrderItems) { //we can ship only shippable products if (!orderItem.Product.IsShipEnabled) continue; //quantities var qtyInThisShipment = 0; var maxQtyToAdd = orderItem.GetTotalNumberOfItemsCanBeAddedToShipment(); var qtyOrdered = orderItem.Quantity; var qtyInAllShipments = orderItem.GetTotalNumberOfItemsInAllShipment(); //ensure that this product can be added to a shipment if (maxQtyToAdd <= 0) continue; orderItem.Product.MergeWithCombination(orderItem.AttributesXml); var shipmentItemModel = new ShipmentModel.ShipmentItemModel() { OrderItemId = orderItem.Id, ProductId = orderItem.ProductId, ProductName = orderItem.Product.Name, ProductTypeName = orderItem.Product.GetProductTypeLabel(_localizationService), ProductTypeLabelHint = orderItem.Product.ProductTypeLabelHint, Sku = orderItem.Product.Sku, AttributeInfo = orderItem.AttributeDescription, ItemWeight = orderItem.ItemWeight.HasValue ? string.Format("{0:F2} [{1}]", orderItem.ItemWeight, baseWeightIn) : "", ItemDimensions = string.Format("{0:F2} x {1:F2} x {2:F2} [{3}]", orderItem.Product.Length, orderItem.Product.Width, orderItem.Product.Height, baseDimensionIn), QuantityOrdered = qtyOrdered, QuantityInThisShipment = qtyInThisShipment, QuantityInAllShipments = qtyInAllShipments, QuantityToAdd = maxQtyToAdd }; model.Items.Add(shipmentItemModel); } return View(model); }
protected ShipmentModel PrepareShipmentModel(Shipment shipment, bool prepareProducts, bool prepareAddresses) { //measures var baseWeight = _measureService.GetMeasureWeightById(_measureSettings.BaseWeightId); var baseWeightIn = baseWeight != null ? baseWeight.Name : ""; var baseDimension = _measureService.GetMeasureDimensionById(_measureSettings.BaseDimensionId); var baseDimensionIn = baseDimension != null ? baseDimension.Name : ""; var orderStoreId = shipment.Order.StoreId; var model = new ShipmentModel { Id = shipment.Id, OrderId = shipment.OrderId, StoreId = orderStoreId, ShippingMethod = shipment.Order.ShippingMethod, TrackingNumber = shipment.TrackingNumber, TotalWeight = shipment.TotalWeight.HasValue ? string.Format("{0:F2} [{1}]", shipment.TotalWeight, baseWeightIn) : "", ShippedDate = shipment.ShippedDateUtc.HasValue ? _dateTimeHelper.ConvertToUserTime(shipment.ShippedDateUtc.Value, DateTimeKind.Utc).ToString() : _localizationService.GetResource("Admin.Orders.Shipments.ShippedDate.NotYet"), CanShip = !shipment.ShippedDateUtc.HasValue, DeliveryDate = shipment.DeliveryDateUtc.HasValue ? _dateTimeHelper.ConvertToUserTime(shipment.DeliveryDateUtc.Value, DateTimeKind.Utc).ToString() : _localizationService.GetResource("Admin.Orders.Shipments.DeliveryDate.NotYet"), CanDeliver = shipment.ShippedDateUtc.HasValue && !shipment.DeliveryDateUtc.HasValue, DisplayPdfPackagingSlip = _pdfSettings.Enabled, }; if (prepareAddresses) { model.ShippingAddress = shipment.Order.ShippingAddress; var store = _services.StoreService.GetStoreById(orderStoreId) ?? _services.StoreContext.CurrentStore; var companyInfoSettings = _services.Settings.LoadSetting<CompanyInformationSettings>(store.Id); model.MerchantCompanyInfo = companyInfoSettings; } if (prepareProducts) { foreach (var shipmentItem in shipment.ShipmentItems) { var orderItem = _orderService.GetOrderItemById(shipmentItem.OrderItemId); if (orderItem == null) continue; //quantities var qtyInThisShipment = shipmentItem.Quantity; var maxQtyToAdd = orderItem.GetTotalNumberOfItemsCanBeAddedToShipment(); var qtyOrdered = orderItem.Quantity; var qtyInAllShipments = orderItem.GetTotalNumberOfItemsInAllShipment(); orderItem.Product.MergeWithCombination(orderItem.AttributesXml); var shipmentItemModel = new ShipmentModel.ShipmentItemModel() { Id = shipmentItem.Id, OrderItemId = orderItem.Id, ProductId = orderItem.ProductId, ProductName = orderItem.Product.Name, ProductTypeName = orderItem.Product.GetProductTypeLabel(_localizationService), ProductTypeLabelHint = orderItem.Product.ProductTypeLabelHint, Sku = orderItem.Product.Sku, AttributeInfo = orderItem.AttributeDescription, ItemWeight = orderItem.ItemWeight.HasValue ? string.Format("{0:F2} [{1}]", orderItem.ItemWeight, baseWeightIn) : "", ItemDimensions = string.Format("{0:F2} x {1:F2} x {2:F2} [{3}]", orderItem.Product.Length, orderItem.Product.Width, orderItem.Product.Height, baseDimensionIn), QuantityOrdered = qtyOrdered, QuantityInThisShipment = qtyInThisShipment, QuantityInAllShipments = qtyInAllShipments, QuantityToAdd = maxQtyToAdd, }; model.Items.Add(shipmentItemModel); } } return model; }