/// <summary>
        /// Register that a shipment has been shipped.
        /// </summary>
        /// <param name="shipDate">Date the shipment has been shipped.</param>
        /// <param name="updateGoogleCheckout">If the order associated with this shipment is a GoogleCheckout
        /// order, this flag  indicates whether to send an update notification to GoogleCheckout or not.</param>
        public void Ship(DateTime shipDate, bool updateGoogleCheckout)
        {
            this.ShipDate = shipDate;
            this.Save();
            //FORCE ASSOCIATED ORDER TO RELOAD FROM DATABASE
            this._Order = OrderDataSource.Load(this.OrderId, false);
            //TRIGGER THE SHIPMENT SHIPPED EVENT
            Stores.StoreEventEngine.ShipmentShipped(this);
            //RECALCULATE SHIPMENT STATUS
            this.Order.RecalculateShipmentStatus();

            //if the order was a google checkout order, update gooogle checkout
            if (updateGoogleCheckout)
            {
                if (!string.IsNullOrEmpty(this.Order.GoogleOrderNumber))
                {
                    GoogleCheckout instance = GoogleCheckout.GetInstance();
                    TrackingNumber number   = GetLastTrackingNumber();
                    string         carrier  = GetGCCarrier(number);
                    string         trNumber = (number == null || string.IsNullOrEmpty(number.TrackingNumberData))
                                      ? null : number.TrackingNumberData;
                    instance.AddTrackingData(this.Order.GoogleOrderNumber, carrier, trNumber);

                    //If order has not yet shipped completely, notify that it is under processing
                    if (this.Order.ShipmentStatus == OrderShipmentStatus.Unshipped ||
                        this.Order.ShipmentStatus == OrderShipmentStatus.Unspecified)
                    {
                        instance.ProcessOrder(this.Order.GoogleOrderNumber);
                    }
                }
            }
        }
        public static OrderPullItemCollection GeneratePullSheet(params int[] orders)
        {
            OrderPullItemCollection pullSheet = new OrderPullItemCollection();

            foreach (int orderId in orders)
            {
                Order order = OrderDataSource.Load(orderId);
                if (order != null)
                {
                    foreach (OrderItem item in order.Items)
                    {
                        if (IsPullItem(item))
                        {
                            pullSheet.Add(item);
                        }
                    }
                }
            }
            return(pullSheet);
        }
Beispiel #3
0
        public OrderCollection Search(OrderSearchCriteria criteria, int maximumRows, int startRowIndex, string sortExpression)
        {
            //CREATE RETURN SET
            OrderCollection orders = new OrderCollection();

            //GET LIST OF ORDER IDS THAT FIT THE CRITERIA
            Database   database      = Token.Instance.Database;
            DbCommand  selectCommand = criteria.BuildSelectCommand(sortExpression);
            List <int> orderIdList   = new List <int>();

            //EXECUTE THE COMMAND TO OBTAIN ORDER ID List
            using (IDataReader dr = database.ExecuteReader(selectCommand))
            {
                while (dr.Read())
                {
                    orderIdList.Add(dr.GetInt32(0));
                }
                dr.Close();
            }

            //NOW GET ORDER DETAIL FOR CORRECT INDEXES
            int rowIndex = startRowIndex;
            int rowCount = 0;

            if (maximumRows < 1)
            {
                maximumRows = 1000;
            }
            while ((rowCount < maximumRows) && (rowIndex < orderIdList.Count))
            {
                Order order = OrderDataSource.Load(orderIdList[rowIndex]);
                orders.Add(order);
                rowIndex++;
                rowCount++;
            }

            //RETURN ORDER DETAIL MATCHING CRITERIA
            return(orders);
        }
 public static Order Load(Int32 orderId)
 {
     return(OrderDataSource.Load(orderId, true));
 }