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); }
public bool ConfirmOrderShimpmentDetails(MarketplaceOrderFulfillment orderFulfillment, string submittedBy) { throw new NotImplementedException(); }
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); } }
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); } }