Beispiel #1
0
        public List <MarketplaceOrderFulfillment> GetUnshippedOrdersForShipment(string marketplaceType)
        {
            var orderFulfillements = new List <MarketplaceOrderFulfillment>();

            using (var context = new EisInventoryContext())
            {
                // get the list of orders that are already have tracking number and no shipment history yet
                var unConfirmOrders = context.orders
                                      .Include("ordershipmenthistory")
                                      .Where(x => x.OrderStatus == OrderStatus.Unshipped &&
                                             !string.IsNullOrEmpty(x.TrackingNumber) &&
                                             x.Marketplace == marketplaceType &&
                                             x.ordershipmenthistory == null)
                                      .ToList();

                // parse it into orde fulfillment
                foreach (var order in unConfirmOrders)
                {
                    var orderFulfillment = new MarketplaceOrderFulfillment
                    {
                        Marketplace           = order.Marketplace,
                        OrderId               = order.OrderId,
                        FulfillmentDate       = order.LastUpdateDate.Value.Date, // use the LastUpdateDate instead of the Shipment date
                        CarrierCode           = order.CarrierCode,
                        ShippingMethod        = order.ShippingMethod,
                        ShipperTrackingNumber = order.TrackingNumber
                    };

                    // parse and add the order items
                    foreach (var item in order.orderitems)
                    {
                        orderFulfillment.OrderItems.Add(new MarketplaceOrderFulfillmentItem
                        {
                            Quantity    = item.QtyOrdered,
                            OrderItemId = item.OrderItemId
                        });
                    }

                    orderFulfillements.Add(orderFulfillment);
                }
            }

            return(orderFulfillements);
        }
        public bool ConfirmOrderShimpmentDetails(MarketplaceOrderFulfillment orderFulfillment, string submittedBy)
        {
            using (var conn = new MySqlConnection(_connectionString))
            {
                var parameters = new Dictionary <string, object>
                {
                    { "@OrderId", orderFulfillment.OrderId },
                    { "@OrderStatus", (int)OrderStatus.Shipped },
                };

                // let's update first the order items QtyShipped, must be be equal to Qty Ordered
                MySqlHelper.ExecuteNonQuery(conn, @"UPDATE orderitems SET QtyShipped = QtyOrdered WHERE OrderId=@OrderId",
                                            parameters);

                // then let's update the orders status
                MySqlHelper.ExecuteNonQuery(conn, @"UPDATE orders SET NumOfItemsShipped=NumOfItemsUnshipped, NumOfItemsUnshipped=0,ShipServiceLevel='Standard',ShipmentServiceCategory='Standard',OrderStatus=@OrderStatus WHERE OrderId=@OrderId",
                                            parameters);
            }

            return(true);
        }
Beispiel #3
0
 public bool ConfirmOrderShimpmentDetails(MarketplaceOrderFulfillment orderFulfillment, string submittedBy)
 {
     throw new NotImplementedException();
 }
Beispiel #4
0
        public bool ConfirmOrderShimpmentDetails(MarketplaceOrderFulfillment marketplaceOrder, string submittedBy)
        {
            if (!marketplaceOrder.OrderItems.Any())
            {
                return(false);
            }

            // create configuratin to use US marketplace
            var config = new MarketplaceWebServiceConfig {
                ServiceURL = RequestHelper.ServiceUrl
            };

            config.SetUserAgentHeader(_ApplicationName, _Version, "C#");
            _amazonClient = new MarketplaceWebServiceClient(_credential.AccessKeyId, _credential.SecretKey, config);

            try
            {
                // create fulfillment item list from the order items
                var fulfillmentItems = new List <OrderFulfillmentItem>();
                foreach (var item in marketplaceOrder.OrderItems)
                {
                    fulfillmentItems.Add(new OrderFulfillmentItem
                    {
                        Item     = item.OrderItemId,
                        Quantity = item.Quantity.ToString()
                    });
                }

                // create the order fulfillment information
                var fulfillment = new OrderFulfillment
                {
                    Item            = marketplaceOrder.OrderId,
                    FulfillmentDate = marketplaceOrder.FulfillmentDate,
                    FulfillmentData = new OrderFulfillmentFulfillmentData
                    {
                        Item                  = marketplaceOrder.Carrier.Code,
                        ShippingMethod        = marketplaceOrder.ShippingMethod,
                        ShipperTrackingNumber = marketplaceOrder.ShipperTrackingNumber
                    },
                    Item1 = fulfillmentItems.ToArray()
                };

                // create Amazon envelope object
                var amazonEnvelope = new AmazonEnvelope
                {
                    Header = new Header {
                        DocumentVersion = "1.01", MerchantIdentifier = _credential.MerchantId
                    },
                    MessageType = AmazonEnvelopeMessageType.OrderFulfillment,
                    Message     = new AmazonEnvelopeMessage[] {
                        new AmazonEnvelopeMessage {
                            MessageID = "1", Item = fulfillment
                        }
                    }
                };

                // parse the envelope into file
                var xmlFullName = XmlParser.WriteXmlToFile(amazonEnvelope, "OrderFulfillment");

                var submitController = new SubmitFeedController(_amazonClient, _logger, _credential.MarketplaceId, _credential.MerchantId, submittedBy);
                var streamResponse   = submitController.SubmitFeedAndGetResponse(xmlFullName, AmazonFeedType._POST_ORDER_FULFILLMENT_DATA_);
                parsedResultStreamAndLogReport(streamResponse, AmazonEnvelopeMessageType.OrderFulfillment, submittedBy);

                _logger.Add(LogEntrySeverity.Information, LogEntryType.AmazonOrdersProvider, string.Format("{0} - Successfully sent confirming order shipment for Order ID \'{1}\'", ChannelName, marketplaceOrder.OrderId));
                return(true);
            }
            catch (Exception ex)
            {
                _logger.Add(LogEntrySeverity.Error, LogEntryType.AmazonOrdersProvider,
                            string.Format("{0} - Error in confirming order shipment for OrderId: {3}. <br/>Error Message: {1} <br/> Access Key: {2}", ChannelName,
                                          EisHelper.GetExceptionMessage(ex),
                                          _credential.AccessKeyId,
                                          marketplaceOrder.OrderId),
                            ex.StackTrace);

                return(false);
            }
        }
Beispiel #5
0
        public bool ConfirmOrderShimpmentDetails(MarketplaceOrderFulfillment marketplaceOrder, string submittedBy)
        {
            // TODO: need to determine what fields need to update to BigCommerce in order to confirm shipment

            try
            {
                if (!marketplaceOrder.OrderItems.Any())
                {
                    return(false);
                }

                var orderid         = Convert.ToInt32(marketplaceOrder.OrderId);
                var bcOrderResponse = _client.Orders.Get(orderid);
                var bcOrder         = bcOrderResponse.Data;

                var updatedata = new
                {
                    status_id = OrderStatusEnum.Shipped
                };

                // Create BC Order Shipment
                var shipmentItems = new List <OrdersShipmentItem>();

                foreach (var orderitems in marketplaceOrder.OrderItems)
                {
                    var orderItemId = Convert.ToInt32(orderitems.OrderItemId);

                    shipmentItems.Add(new OrdersShipmentItem {
                        OrderProductId = orderItemId, Quantity = orderitems.Quantity
                    });
                }

                var orderAddressID    = 0;
                var shippingAddresses = GetShippingAddresses(bcOrder.Id);

                if (shippingAddresses.Count > 0)
                {
                    orderAddressID = shippingAddresses.First().Id;
                }

                var shipmentdata = new
                {
                    order_address_id  = orderAddressID,
                    items             = shipmentItems,
                    tracking_number   = marketplaceOrder.ShipperTrackingNumber,
                    shipping_method   = marketplaceOrder.ShippingMethod,
                    shipping_provider = marketplaceOrder.CarrierCode != null ? marketplaceOrder.CarrierCode : "",
                };

                var isSuccess = false;

                // API Create Shipment based on Order
                var responseShipment = _client.OrdersShipments.Create(orderid, shipmentdata);

                if (responseShipment.RestResponse.StatusCode == System.Net.HttpStatusCode.Created)
                {
                    // API Update on the Order
                    var responseOrder = _client.Orders.Update(orderid, updatedata);

                    if (responseOrder.RestResponse.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        _logger.Add(LogEntrySeverity.Information, LogEntryType.BigCommerceOrders, string.Format("{0} - Successfully sent confirming order shipment for Order ID \'{1}\'", ChannelName, marketplaceOrder.OrderId));
                        isSuccess = true;
                    }
                }

                return(isSuccess);
            }
            catch (Exception ex)
            {
                _logger.Add(LogEntrySeverity.Error, LogEntryType.BigCommerceOrders,
                            string.Format("{0} - Error in confirming order shipment for OrderId: {2}. <br/>Error Message: {1} <br/>",
                                          ChannelName,
                                          EisHelper.GetExceptionMessage(ex),
                                          marketplaceOrder.OrderId),
                            ex.StackTrace);

                return(false);
            }
        }