public CreateShipmentResponse CreateInboundShipment(CreateShipmentRequest createShipmentRequest) { Address shipsFromAddress = AddressUtility.GetShipFromAddress(); CreateShipmentResponse createShipmentResponse = null; List <InboundShipmentPlanRequestItem> shipmentPlanRequestItems = createShipmentRequest .ShipmentItems .Select(s => new InboundShipmentPlanRequestItem { ASIN = s.Asin, SellerSKU = s.Sku, Quantity = s.Quantity, Condition = ItemCondition.NewItem.ToString(), QuantityInCase = s.QuantityInCase ?? 0 }) .ToList(); InboundShipmentPlanRequestItemList inboundShipmentPlanRequestItemList = new InboundShipmentPlanRequestItemList { member = shipmentPlanRequestItems }; CreateInboundShipmentPlanRequest createInboundShipmentPlanRequest = new CreateInboundShipmentPlanRequest { InboundShipmentPlanRequestItems = inboundShipmentPlanRequestItemList, Marketplace = m_marketPlaceId, SellerId = m_sellerId, ShipFromAddress = shipsFromAddress }; CreateInboundShipmentPlanResponse createInboundShipmentPlanResponse = m_fbaInboundServiceMwsClient.CreateInboundShipmentPlan(createInboundShipmentPlanRequest); CreateInboundShipmentPlanResult createInboundShipmentPlanResult = createInboundShipmentPlanResponse.CreateInboundShipmentPlanResult; if (createInboundShipmentPlanResult.InboundShipmentPlans.member.Any()) { List <InboundShipmentPlan> inboundShipmentPlans = createInboundShipmentPlanResult .InboundShipmentPlans .member .ToList(); Dictionary <string, ShipmentItem> itemsToBeAddedToShipment = createShipmentRequest .ShipmentItems.ToDictionary(k => k.Sku, v => v); DateTime today = DateTime.UtcNow.Date; List <CreatedShipment> createdShipments = inboundShipmentPlans .Select(inboundShipmentPlan => CreateShipment(inboundShipmentPlan, itemsToBeAddedToShipment, shipsFromAddress, createShipmentRequest.ShipmentName, createShipmentRequest.AreCasesRequired, today)) .ToList(); createShipmentResponse = new CreateShipmentResponse(createdShipments); } return(createShipmentResponse); }
public void CreateShipmentResult(CreateShipmentFile createShipmentFile) { DataTable dt = ExcelUtility.ConvertExcelFileToDataTable(createShipmentFile.File); List <ShipmentItem> shipmentItems = dt.FromDataTableToList <ShipmentItem>() .Where(w => w.Quantity > 0) .ToList(); if (shipmentItems.Any(a => a.QuantityInCase.HasValue) && !shipmentItems.All(a => a.QuantityInCase.HasValue)) { throw new InvalidOperationException("All, or none items in the shipment must have a QuantityInCase set."); } bool areCasesRequired = shipmentItems.Any(a => a.QuantityInCase.HasValue); CreateShipmentRequest createShipmentRequest = new CreateShipmentRequest( shipmentItems, createShipmentFile.ShipmentName, areCasesRequired); CreateShipmentResponse createShipmentResponse = m_mwsProductsApi.CreateInboundShipment(createShipmentRequest); using (ExcelPackage excel = new ExcelPackage()) { foreach (CreatedShipment createdShipment in createShipmentResponse.CreatedShipments) { string worksheetName = createdShipment.ShipmentId; DataTable dtShipmentItems; if (areCasesRequired) { dtShipmentItems = createdShipment.ItemsInShipment .Select(s => new { s.Name, s.ItemNumber, s.Asin, s.Quantity, s.Cost, s.QuantityInCase, Extension = s.Cost * s.Quantity }) .ToDataTable(); } else { dtShipmentItems = createdShipment.ItemsInShipment .Select(s => new { s.Name, s.ItemNumber, s.Asin, s.Quantity, s.Cost, Extension = s.Cost * s.Quantity }) .ToDataTable(); } ExcelWorksheet wsCreatedShipment = excel.Workbook.Worksheets.Add(worksheetName); wsCreatedShipment.Cells["A1"].LoadFromDataTable(dtShipmentItems, true); } ExcelUtility.CreateExcelResponse(Response, excel, createShipmentFile.ShipmentName); } }
public CreateShipmentResponse RequestShipment(CreateShipmentRequest req) { // First generate the JSON request (for possible use by the developer later) LastJSONRequest = JsonConvert.SerializeObject(req, Formatting.Indented); LastShipJSONRequest = LastJSONRequest; // Validate the request List <ValidationResult> validationResult = Common.Validate(ref req); if (validationResult.Any()) { string errors = MyDHLAPIValidationException.PrintResults(validationResult); throw new MyDHLAPIValidationException(validationResult); } // Send the request and capture the response LastJSONResponse = SendRequestAndReceiveResponse(LastJSONRequest, "ShipmentRequest"); LastShipJSONResponse = LastJSONResponse; CreateShipmentResponse retval; try { // Deserialize the result back to an object. List <string> errors = new List <string>(); retval = JsonConvert.DeserializeObject <CreateShipmentResponse>(LastJSONResponse, new JsonSerializerSettings() { Error = delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args) { errors.Add(args.ErrorContext.Error.Message); args.ErrorContext.Handled = true; } }); } catch { retval = new CreateShipmentResponse(); } return(retval); }