public void Exercise_14_3_Fulfill_Order_Package()
        {
            var orderResource    = new Mozu.Api.Resources.Commerce.OrderResource(_apiContext);
            var packageResource  = new Mozu.Api.Resources.Commerce.Orders.PackageResource(_apiContext);
            var shipmentResource = new Mozu.Api.Resources.Commerce.Orders.ShipmentResource(_apiContext);

            var fulfillmentInfoResource = new Mozu.Api.Resources.Commerce.Orders.FulfillmentInfoResource(_apiContext);

            var fulfillmentActionResource = new Mozu.Api.Resources.Commerce.Orders.FulfillmentActionResource(_apiContext);

            var orderNumber = 6;
            var filter      = string.Format("OrderNumber eq '{0}'", orderNumber);

            var existingOrder = (orderResource.GetOrdersAsync(startIndex: 0, pageSize: 1, filter: filter).Result).Items[0];

            var existingOrderItems = existingOrder.Items;

            var packageItems = new List <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.PackageItem>();

            foreach (var orderItem in existingOrderItems)
            {
                packageItems.Add(new Mozu.Api.Contracts.CommerceRuntime.Fulfillment.PackageItem()
                {
                    ProductCode         = String.IsNullOrWhiteSpace(orderItem.Product.VariationProductCode) ? orderItem.Product.ProductCode : orderItem.Product.VariationProductCode,
                    Quantity            = orderItem.Quantity,
                    FulfillmentItemType = "Physical"
                                          //LineId = orderItem.LineId
                });
            }

            var package = new Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package()
            {
                Measurements = new Mozu.Api.Contracts.CommerceRuntime.Commerce.PackageMeasurements()
                {
                    Height = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit  = "in",
                        Value = 10m
                    },
                    Length = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit  = "in",
                        Value = 10m
                    },
                    Width = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit  = "in",
                        Value = 10m
                    },
                    Weight = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit  = "lbs",
                        Value = 10m
                    },
                },
                Items         = packageItems,
                PackagingType = "CUSTOM",
            };

            var availableShippingMethods = shipmentResource.GetAvailableShipmentMethodsAsync(existingOrder.Id).Result;

            package.ShippingMethodCode      = availableShippingMethods[0].ShippingMethodCode;
            package.ShippingMethodName      = availableShippingMethods[0].ShippingMethodName;
            package.FulfillmentLocationCode = "WRH01";
            package.Code = "Package-01";
            Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package updatedPackage = null;
            try
            {
                updatedPackage = packageResource.CreatePackageAsync(package, existingOrder.Id).Result;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.Message);
            }

            var packageIds = new List <string>();

            if (updatedPackage == null)
            {
                packageIds.Add(existingOrder.Packages[0].Id);
            }
            else
            {
                packageIds.Add(updatedPackage.Id);
            }
            //var updatedPackageShipment = shipmentResource.CreatePackageShipmentsAsync(packageIds, existingOrder.Id).Result;

            var fulfilledShipment = fulfillmentActionResource.PerformFulfillmentActionAsync(
                new Mozu.Api.Contracts.CommerceRuntime.Fulfillment.FulfillmentAction()
            {
                ActionName        = "Ship", // {Ship,Fulfill}
                DigitalPackageIds = new List <string>(),
                PackageIds        = packageIds,
                PickupIds         = new List <string>()
            },
                existingOrder.Id)
                                    .Result;
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="orderId">Unique identifier of the order.</param>
        /// <param name="packageId">Unique identifier of the package for which to retrieve the label.</param>
        /// <param name="responseFields">Filtering syntax appended to an API call to increase or decrease the amount of data returned inside a JSON object. This parameter should only be used to retrieve data. Attempting to update data using this parameter may cause data loss.</param>
        /// <param name="package">Properties of a physical package shipped for an order.</param>
        /// <returns>
        ///  <see cref="Mozu.Api.MozuClient" />{<see cref="Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package"/>}
        /// </returns>
        /// <example>
        /// <code>
        ///   var mozuClient=UpdatePackage( pkg,  orderId,  packageId,  responseFields);
        ///   var packageClient = mozuClient.WithBaseAddress(url).Execute().Result();
        /// </code>
        /// </example>
        public static MozuClient <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package> UpdatePackageClient(Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package pkg, string orderId, string packageId, string responseFields = null)
        {
            var          url        = Mozu.Api.Urls.Commerce.Orders.PackageUrl.UpdatePackageUrl(orderId, packageId, responseFields);
            const string verb       = "PUT";
            var          mozuClient = new MozuClient <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package>()
                                      .WithVerb(verb).WithResourceUrl(url)
                                      .WithBody <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package>(pkg);

            return(mozuClient);
        }
Example #3
0
        /// <summary>
        /// Updates one or more properties of a package associated with a return replacement.
        /// </summary>
        /// <param name="packageId">Unique identifier of the package for which to retrieve the label.</param>
        /// <param name="responseFields">Use this field to include those fields which are not included by default.</param>
        /// <param name="returnId">Unique identifier of the return whose items you want to get.</param>
        /// <param name="package">Properties of a physical package shipped for an order.</param>
        /// <returns>
        /// <see cref="Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package"/>
        /// </returns>
        /// <example>
        /// <code>
        ///   var package = new Package();
        ///   var package = await package.UpdatePackageAsync( pkg,  returnId,  packageId,  responseFields);
        /// </code>
        /// </example>
        public virtual async Task <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package> UpdatePackageAsync(Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package pkg, string returnId, string packageId, string responseFields = null)
        {
            MozuClient <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package> response;
            var client = Mozu.Api.Clients.Commerce.Returns.PackageClient.UpdatePackageClient(pkg, returnId, packageId, responseFields);

            client.WithContext(_apiContext);
            response = await client.ExecuteAsync();

            return(await response.ResultAsync());
        }
Example #4
0
        public virtual Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package CreatePackage(Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package pkg, string returnId, string responseFields = null)
        {
            MozuClient <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package> response;
            var client = Mozu.Api.Clients.Commerce.Returns.PackageClient.CreatePackageClient(pkg, returnId, responseFields);

            client.WithContext(_apiContext);
            response = client.Execute();
            return(response.Result());
        }
        /// <summary>
        /// Updates one or more properties of a physical package of order items.
        /// <example>
        ///  <code>
        /// var result = PackageFactory.UpdatePackage(handler : handler,  pkg :  pkg,  orderId :  orderId,  packageId :  packageId,  responseFields :  responseFields,  expectedCode: expectedCode, successCode: successCode);
        /// var optionalCasting = ConvertClass<Package/>(result);
        /// return optionalCasting;
        ///  </code>
        /// </example>
        /// </summary>
        public static Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package UpdatePackage(ServiceClientMessageHandler handler,
                                                                                           Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package pkg, string orderId, string packageId, string responseFields = null,
                                                                                           HttpStatusCode expectedCode = HttpStatusCode.OK, HttpStatusCode successCode = HttpStatusCode.OK)
        {
            SetSdKparameters();
            var currentClassName  = System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.Name;
            var currentMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;

            Debug.WriteLine(currentMethodName + '.' + currentMethodName);
            var apiClient = Mozu.Api.Clients.Commerce.Orders.PackageClient.UpdatePackageClient(
                pkg:  pkg, orderId:  orderId, packageId:  packageId, responseFields:  responseFields);

            try
            {
                apiClient.WithContext(handler.ApiContext).Execute();
            }
            catch (ApiException ex)
            {
                // Custom error handling for test cases can be placed here
                Exception customException = TestFailException.GetCustomTestException(ex, currentClassName, currentMethodName, expectedCode);
                if (customException != null)
                {
                    throw customException;
                }
                return(null);
            }
            return(ResponseMessageFactory.CheckResponseCodes(apiClient.HttpResponse.StatusCode, expectedCode, successCode)
                                         ? (apiClient.Result())
                                         : null);
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="orderId">Unique identifier of the order.</param>
        /// <param name="packageId">Unique identifier of the package for which to retrieve the label.</param>
        /// <param name="responseFields">Filtering syntax appended to an API call to increase or decrease the amount of data returned inside a JSON object. This parameter should only be used to retrieve data. Attempting to update data using this parameter may cause data loss.</param>
        /// <param name="package">Properties of a physical package shipped for an order.</param>
        /// <returns>
        /// <see cref="Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package"/>
        /// </returns>
        /// <example>
        /// <code>
        ///   var package = new Package();
        ///   var package = await package.UpdatePackageAsync( pkg,  orderId,  packageId,  responseFields);
        /// </code>
        /// </example>
        public virtual async Task <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package> UpdatePackageAsync(Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package pkg, string orderId, string packageId, string responseFields = null, CancellationToken ct = default(CancellationToken))
        {
            MozuClient <Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package> response;
            var client = Mozu.Api.Clients.Commerce.Orders.PackageClient.UpdatePackageClient(pkg, orderId, packageId, responseFields);

            client.WithContext(_apiContext);
            response = await client.ExecuteAsync(ct).ConfigureAwait(false);

            return(await response.ResultAsync());
        }
        public void Exercise_14_3_Fulfill_Order_Package()
        {
            var orderResource = new Mozu.Api.Resources.Commerce.OrderResource(_apiContext);
            var packageResource = new Mozu.Api.Resources.Commerce.Orders.PackageResource(_apiContext);
            var shipmentResource = new Mozu.Api.Resources.Commerce.Orders.ShipmentResource(_apiContext);

            var fulfillmentInfoResource = new Mozu.Api.Resources.Commerce.Orders.FulfillmentInfoResource(_apiContext);

            var fulfillmentActionResource = new Mozu.Api.Resources.Commerce.Orders.FulfillmentActionResource(_apiContext);

            var orderNumber = 6;
            var filter = string.Format("OrderNumber eq '{0}'", orderNumber);

            var existingOrder = (orderResource.GetOrdersAsync(startIndex: 0, pageSize: 1, filter: filter).Result).Items[0];

            var existingOrderItems = existingOrder.Items;

            var packageItems = new List<Mozu.Api.Contracts.CommerceRuntime.Fulfillment.PackageItem>();

            foreach (var orderItem in existingOrderItems)
            {

                packageItems.Add(new Mozu.Api.Contracts.CommerceRuntime.Fulfillment.PackageItem()
                {
                    ProductCode = String.IsNullOrWhiteSpace(orderItem.Product.VariationProductCode) ? orderItem.Product.ProductCode : orderItem.Product.VariationProductCode,
                    Quantity = orderItem.Quantity,
                    FulfillmentItemType = "Physical"
                    //LineId = orderItem.LineId
                });
            }

            var package = new Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package()
            {
                Measurements = new Mozu.Api.Contracts.CommerceRuntime.Commerce.PackageMeasurements()
                {
                    Height = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit = "in",
                        Value = 10m
                    },
                    Length = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit = "in",
                        Value = 10m
                    },
                    Width = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit = "in",
                        Value = 10m
                    },
                    Weight = new Mozu.Api.Contracts.Core.Measurement()
                    {
                        Unit = "lbs",
                        Value = 10m
                    },
                },
                Items = packageItems,
                PackagingType = "CUSTOM",
            };

            var availableShippingMethods = shipmentResource.GetAvailableShipmentMethodsAsync(existingOrder.Id).Result;
            package.ShippingMethodCode = availableShippingMethods[0].ShippingMethodCode;
            package.ShippingMethodName = availableShippingMethods[0].ShippingMethodName;
            package.FulfillmentLocationCode = "WRH01";
            package.Code = "Package-01";
            Mozu.Api.Contracts.CommerceRuntime.Fulfillment.Package updatedPackage = null;
            try
            {
                updatedPackage = packageResource.CreatePackageAsync(package, existingOrder.Id).Result;
            }
            catch(Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.Message);
            }

            var packageIds = new List<string>();
            if(updatedPackage == null)
            {
                packageIds.Add(existingOrder.Packages[0].Id);
            }
            else
            {
                packageIds.Add(updatedPackage.Id);
            }
            //var updatedPackageShipment = shipmentResource.CreatePackageShipmentsAsync(packageIds, existingOrder.Id).Result;

            var fulfilledShipment = fulfillmentActionResource.PerformFulfillmentActionAsync(
                new Mozu.Api.Contracts.CommerceRuntime.Fulfillment.FulfillmentAction()
                {
                    ActionName = "Ship", // {Ship,Fulfill}
                    DigitalPackageIds = new List<string>(),
                    PackageIds = packageIds,
                    PickupIds = new List<string>()
                },
                existingOrder.Id)
                .Result;
        }