public OrderModel(IOrderEntityFactory entityFactory, coreModel.Order innerItem, OrderClient client, IOrderService orderService)
 {
     _entityFactory = entityFactory;
     _innerItem     = innerItem;
     _OrderClient   = client;
     _orderService  = orderService;
 }
Esempio n. 2
0
        public static bool IsCompletable(this Shipment item, coreModel.Order ParentOrder, OrderClient client)
        {
            var retVal = ParentOrder.GetCurrentStatus() != (int)OrderStatus.AwaitingExchange &&
                         client.CanChangeStatus(item, ShipmentStatus.Shipped.ToString());

            return(retVal);
        }
Esempio n. 3
0
        public static bool IsReleaseable(this Shipment item, coreModel.Order ParentOrder, OrderClient client)
        {
            var retVal = !string.IsNullOrEmpty(item.ShippingAddressId) &&
                         !Guid.Empty.Equals(item.ShippingMethodId) &&
                         ParentOrder.GetCurrentStatus() != (int)OrderStatus.Pending &&
                         ParentOrder.GetCurrentStatus() != (int)OrderStatus.AwaitingExchange &&
                         client.CanChangeStatus(item, ShipmentStatus.Released.ToString());

            return(retVal);
        }
Esempio n. 4
0
		public static TestOrderBuilder BuildOrder()
		{
			var order = new Order
				{
					Name = "default",
					BillingCurrency = "USD",
					StoreId = "SampleStore",
					TrackingNumber = "PO32313",
					Total = 123.43m
				}; // can't create OrderExt!

			return new TestOrderBuilder(order);
		}
		public static TestOrderBuilder BuildOrder()
		{
			var order = new Order
				{
					Name = "default",
					BillingCurrency = "USD",
					StoreId = "SampleStore",
					TrackingNumber = string.Format("PO{0}-0000{1}", DateTime.UtcNow.ToString("yyyy-MMdd"), new Random().Next(1,9)),
					Total = 123.43m
				}; // can't create OrderExt!

			return new TestOrderBuilder(order);
		}
        private void RecalculateOrderStatus(Order order)
        {
            var newStatus = order.Status;
            var shipments = order.OrderForms[0].Shipments;
            var activeStates = new string[] { ShipmentStatus.InventoryAssigned.ToString(), ShipmentStatus.AwaitingInventory.ToString(), ShipmentStatus.Released.ToString(), ShipmentStatus.Packing.ToString() };

            bool canceledFound = shipments.Any(x => x.Status == ShipmentStatus.Cancelled.ToString());
            bool completedFound = shipments.Any(x => x.Status == ShipmentStatus.Shipped.ToString());
            bool activeFound = shipments.Any(x => activeStates.Contains(x.Status));

            if (!canceledFound && !completedFound && !activeFound)
            {
                //Not found canceled,active,completed

            }
            else if (canceledFound && !completedFound && !activeFound)
            {
                //All canceled
                //retVal = OrderStatus.Cancelled;
            }
            else if (!canceledFound && completedFound && !activeFound)
            {
                //All completed
                newStatus = OrderStatus.Completed.ToString();
            }
            else if (!canceledFound && !completedFound && activeFound)
            {
                //All active
            }
            else if (canceledFound && completedFound && !activeFound)
            {
                //Found  cancelled and completed
                newStatus = OrderStatus.Completed.ToString();
            }
            else if (canceledFound && !completedFound && activeFound)
            {
                //Found cancelled and active
            }
            else if (!canceledFound && completedFound && activeFound)
            {
                //Found completed and active
                newStatus = OrderStatus.PartiallyShipped.ToString();
            }
            else if (canceledFound && completedFound && activeFound)
            {
                //Found cancelled and active and completed
                newStatus = OrderStatus.PartiallyShipped.ToString();
            }

            order.Status = newStatus;
        }
        private void RecalculateRmaRequestStatuses(Order order)
        {
            foreach (var rmaRequest in order.RmaRequests
				.Where(r=>r.Status == RmaRequestStatus.AwaitingStockReturn.ToString()))
            {
                //if all lineItems physically returned to stock need change status 
                //to AwaitingCompletion
                var retVal = rmaRequest.RmaReturnItems.All(x0 => x0.RmaLineItems.All(x => x.ReturnQuantity == x.Quantity));
                if (retVal)
                {
                    rmaRequest.Status = RmaRequestStatus.AwaitingCompletion.ToString();
                }
            }
        }
        private void RecalculateShipmentStatuses(Order order)
        {
			foreach (var shipment in order.OrderForms.SelectMany(o => o.Shipments))
            {
                //End states
                if (shipment.Status == ShipmentStatus.Shipped.ToString() ||
                    shipment.Status == ShipmentStatus.Cancelled.ToString())
                {
                    continue;
                }

                // Initialize empty value
                if (string.IsNullOrEmpty(shipment.Status))
                {
                    shipment.Status = ShipmentStatus.InventoryAssigned.ToString();
                }

                //Inherit order state for shipment
                if (order.Status == OrderStatus.Cancelled.ToString())
                {
                    shipment.Status = ShipmentStatus.Cancelled.ToString();
                }
            }
        }
Esempio n. 9
0
 public static void Release(this Shipment item, coreModel.Order ParentOrder, OrderClient client)
 {
     item.SetCurrentStatus((int)ShipmentStatus.Released, client);
 }
Esempio n. 10
0
 public static void Cancel(this Shipment item, coreModel.Order ParentOrder, OrderClient client)
 {
     item.SetCurrentStatus((int)ShipmentStatus.Cancelled, client);
 }
Esempio n. 11
0
 public static void Complete(this Shipment item, coreModel.Order ParentOrder, OrderClient client)
 {
     item.SetCurrentStatus((int)ShipmentStatus.Shipped, client);
 }
Esempio n. 12
0
        /// <summary>
        /// Initializes the returns model.
        /// </summary>
        /// <param name="order">The order.</param>
        /// <param name="model">The model.</param>
        /// <returns>OrderReturns.</returns>
        private OrderReturns InitReturnsModel(Order order, OrderReturns model = null)
        {
            model = model ?? new OrderReturns();

            model.OrderId = order.OrderGroupId;
            var rmaLis =
                order.RmaRequests.SelectMany(r => r.RmaReturnItems).SelectMany(r => r.RmaLineItems).ToList();

            if (model.OrderReturnItems.Count == 0)
            {
                foreach (var ori in from li in order.OrderForms.SelectMany(of => of.LineItems)
                                    let item = _catalogClient.GetItem(li.CatalogItemId)
                                    let parentItem = _catalogClient.GetItem(li.ParentCatalogItemId)
                                    where item != null && rmaLis.All(r => r.LineItemId != li.LineItemId)
                                    select new OrderReturnItem(new LineItemModel(li, item, parentItem, order.BillingCurrency)))
                {
                    model.OrderReturnItems.Add(ori);
                }
            }
            else
            {
                foreach (var returnItem in model.OrderReturnItems)
                {
                    var li =
                        order.OrderForms.SelectMany(of => of.LineItems)
                             .First(l => l.LineItemId == returnItem.LineItemId);

                    //Filter already returned items
                    if (rmaLis.Any(r => r.LineItemId == li.LineItemId))
                    {
                        continue;
                    }

                    var item = _catalogClient.GetItem(li.CatalogItemId);
                    var parentItem = _catalogClient.GetItem(li.ParentCatalogItemId);
                    returnItem.LineItemModel = new LineItemModel(li, item, parentItem, order.BillingCurrency);
                }
            }

            //Fill return Reasons
            if (OrderReturns.ReturnReasons == null || OrderReturns.ReturnReasons.Count == 0)
            {
                OrderReturns.ReturnReasons = _settingsClient.GetSettings("ReturnReasons")
                                                            .Select(r => new SelectListItem
                                                            {
                                                                Value = r.ToString(),
                                                                Text = r.ToString()
                                                            }).ToList();
            }

            //Fill address book
            model.Addresses = UserHelper.GetAllCustomerAddresses()
                                        .Select(addr => new SelectListItem
                                        {
                                            Text = addr.ToString(),
                                            Value = addr.AddressId
                                        }).ToList();

            return model;
        }
Esempio n. 13
0
        /// <summary>
        /// Order address.
        /// </summary>
        /// <param name="order">The order.</param>
        /// <param name="type">The type.</param>
        /// <returns>ActionResult.</returns>
        public ActionResult OrderAddress(Order order, string type)
        {
            if (order.OrderForms.Count == 0)
            {
                return null;
            }

            var orderAddress = OrderClient.FindAddressByName(order, type);

            return orderAddress == null ? null : PartialView("OrderAddress", orderAddress);
        }
		private MockOrderBuilder(Order order, IOrderEntityFactory entityFactory)
		{

			_order = order;
			_entityFactory = entityFactory;
			var orderForm = entityFactory.CreateEntityForType(typeof(OrderForm)) as OrderForm;
			orderForm.Name = "default";
			orderForm.OrderGroupId = _order.OrderGroupId;
			_order.OrderForms.Add(orderForm);
		}
Esempio n. 15
0
		public bool CanChangeStatus(Order order, string newStatus)
		{
			return CanChangeStatus(order.Status, newStatus, _stateController.OrderStateMachine);
		}
        protected override void Execute(CodeActivityContext context)
        {
            base.Execute(context);

            if (ServiceLocator == null)
                return;

            if (CurrentOrderGroup == null || CurrentOrderGroup.OrderForms.Count == 0)
                return;

            var customerName = CustomerSessionService.CustomerSession.CustomerName;

            //If user is anonymous take name from billing address
            if (string.IsNullOrEmpty(customerName))
            {
                var billingAddress = CurrentOrderGroup.OrderAddresses.FirstOrDefault(a => a.OrderAddressId == CurrentOrderGroup.AddressId);
                if (billingAddress != null)
                {
                    customerName = string.Format("{0} {1}", billingAddress.FirstName, billingAddress.LastName);
                }
            }

            var order = new Order();
            order.InjectFrom<CloneInjection>(CurrentOrderGroup);
            order.CustomerName = customerName;
            order.Status = "Pending";
            order.Name = "Default";
            order.TrackingNumber = SequencesClient.GenerateNext(typeof(Order).FullName);

            foreach (var newOf in order.OrderForms)
            {
                newOf.Name = "Default";
                if (!string.IsNullOrEmpty(CustomerSessionService.CustomerSession.CsrUsername))
                {
                    //Add order form property CSR username is saved in the order form property called "Purchased By CSR"
                    newOf.OrderFormPropertyValues.Add(new OrderFormPropertyValue() { ShortTextValue = CustomerSessionService.CustomerSession.CsrUsername, Name = "Purchased By CSR" });
                }
            }
            var cart = OrderRepository.ShoppingCarts.FirstOrDefault(c => c.OrderGroupId == CurrentOrderGroup.OrderGroupId);
            if (cart != null)
            {
                OrderRepository.Remove(cart);
            }
            OrderRepository.Add(order);
            OrderRepository.UnitOfWork.Commit();
        }
Esempio n. 17
0
        /// <summary>
        /// Converts shopping cart as order.
        /// </summary>
        /// <returns>Order.</returns>
        public virtual Order AsOrder()
        {
            var customerName = CustomerSession.CustomerName;

            //If user is anonymous take name from billing address
            if (string.IsNullOrEmpty(customerName))
            {
                var billingAddress = Cart.OrderAddresses.FirstOrDefault(a => a.OrderAddressId == Cart.AddressId);
                if (billingAddress != null)
                {
                    customerName = string.Format("{0} {1}", billingAddress.FirstName, billingAddress.LastName);
                }
            }

            var order = new Order();
            order.InjectFrom<CloneInjection>(Cart);
            order.CustomerName = customerName;
            order.Status = "Pending";
            order.Name = "Default";
            order.TrackingNumber = SequencesService.GetNext(typeof(Order).FullName);

            foreach (var newOf in order.OrderForms)
            {
                newOf.Name = "Default";
                newOf.OrderFormPropertyValues.Add(new OrderFormPropertyValue() { ShortTextValue = CustomerSession.Language, Name = "Language" });
                if (!string.IsNullOrEmpty(CustomerSession.CsrUsername))
                {
                    //Add order form property CSR username is saved in the order form property called "Purchased By CSR"
                    newOf.OrderFormPropertyValues.Add(new OrderFormPropertyValue() { ShortTextValue = CustomerSession.CsrUsername, Name = "Purchased By CSR" });
                }
            }

            return order;
        }
 public OrderModel(coreModel.Order innerItem, OrderClient client, IOrderService orderService)
     : this(new OrderEntityFactory(), innerItem, client, orderService)
 {
 }