示例#1
0
        public async Task <ApiResponse <CalculateOrderResponse> > CalculateOrder(CalculateOrderRequest calculateOrderRequest)
        {
            var action = "calculate-order";

            var response = await _restClient.Post <CalculateOrderResponse>(action, calculateOrderRequest);

            return(response);
        }
示例#2
0
        public async Task <Response <CalculatedOrderResponse> > CalculateOrder(CalculateOrderRequest request)
        {
            var calculatedData = await CalculateOrder(request.Products, request.TransportId, request.PaymentId);

            var response = _mapService.MapCalculatedOrder(calculatedData);

            return(new Response <CalculatedOrderResponse>(ResponseStatus.Ok, response));
        }
示例#3
0
文件: Orders.cs 项目: Webalap/W-ALAP
        public static OrderCalculationResponse CalculateOrder(OrderCalculationRequest request)
        {
            var result = new OrderCalculationResponse();

            if (!request.Items.Any())
            {
                return(result);
            }
            if (request.Address == null)
            {
                request.Address = GlobalSettings.Company.Address;
            }
            if (request.ShipMethodID == 0)
            {
                request.ShipMethodID = request.Configuration.DefaultShipMethodID;
            }

            var apirequest = new CalculateOrderRequest
            {
                WarehouseID       = request.Configuration.WarehouseID,
                CurrencyCode      = request.Configuration.CurrencyCode,
                PriceType         = request.Configuration.PriceTypeID,
                ShipMethodID      = request.ShipMethodID,
                ReturnShipMethods = request.ReturnShipMethods,
                Address1          = request.Address.Address1,
                Address2          = request.Address.Address2,
                City    = request.Address.City,
                State   = request.Address.State,
                Zip     = request.Address.Zip,
                Country = request.Address.Country,
                Details = request.Items.Select(c => new OrderDetailRequest(c)).ToArray()
            };



            var apiresponse = WebService().CalculateOrder(apirequest);

            result.Subtotal = apiresponse.SubTotal;
            result.Shipping = apiresponse.ShippingTotal;
            result.Tax      = apiresponse.TaxTotal;
            result.Discount = apiresponse.DiscountTotal;
            result.Total    = apiresponse.Total;


            // Assemble the ship methods
            var shipMethods = new List <ShipMethod>();

            if (apiresponse.ShipMethods != null && apiresponse.ShipMethods.Length > 0)
            {
                shipMethods.AddRange(apiresponse.ShipMethods.Select(shipMethod => (ShipMethod)shipMethod));

                // Ensure that at least one ship method is selected
                var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID;
                if (shipMethods.Any(c => c.ShipMethodID == shipMethodID))
                {
                    shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true;
                }
                else
                {
                    shipMethods.First().Selected = true;
                }
            }
            result.ShipMethods = shipMethods.AsEnumerable();

            return(result);
        }
示例#4
0
        public static OrderCalculationResponse CalculateOrder(OrderCalculationRequest request)
        {
            var result = new OrderCalculationResponse();

            if (request.Items.Count() == 0)
            {
                return(result);
            }
            if (request.Address == null)
            {
                request.Address = GlobalSettings.Company.Address;
            }
            if (request.ShipMethodID == 0)
            {
                request.ShipMethodID = request.Configuration.DefaultShipMethodID;
            }


            var apirequest = new CalculateOrderRequest();

            apirequest.CustomerID        = (int)request.CustomerID;
            apirequest.WarehouseID       = request.Configuration.WarehouseID;
            apirequest.CurrencyCode      = request.Configuration.CurrencyCode;
            apirequest.PriceType         = request.Configuration.PriceTypeID;
            apirequest.ShipMethodID      = request.ShipMethodID;
            apirequest.ReturnShipMethods = request.ReturnShipMethods;
            apirequest.City      = request.Address.City;
            apirequest.State     = request.Address.State;
            apirequest.Zip       = request.Address.Zip;
            apirequest.Country   = request.Address.Country;
            apirequest.Details   = request.Items.Select(c => new OrderDetailRequest(c)).ToArray();
            apirequest.Other15   = request.Other15;
            apirequest.OrderType = Common.Api.ExigoWebService.OrderType.ShoppingCart;


            var apiresponse = Exigo.WebService().CalculateOrder(apirequest);

            result.Subtotal = apiresponse.SubTotal;
            result.Shipping = apiresponse.ShippingTotal;
            result.Tax      = apiresponse.TaxTotal;
            result.Discount = apiresponse.DiscountTotal;
            result.Total    = apiresponse.Total;
            result.Details  = apiresponse.Details;
            result.Other16  = apiresponse.Other16;

            // Assemble the ship methods
            var shipMethods = new List <ShipMethod>();

            if (apiresponse.ShipMethods != null && apiresponse.ShipMethods.Length > 0)
            {
                foreach (var shipMethod in apiresponse.ShipMethods)
                {
                    shipMethods.Add((ShipMethod)shipMethod);
                }

                // Ensure that at least one ship method is selected
                var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID;
                if (shipMethods.Any(c => c.ShipMethodID == (int)shipMethodID))
                {
                    shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true;
                }
                else
                {
                    shipMethods.First().Selected = true;
                }
            }
            result.ShipMethods = shipMethods.AsEnumerable();

            return(result);
        }
示例#5
0
 /// <remarks/>
 public void CalculateOrderAsync(CalculateOrderRequest CalculateOrderRequest, object userState) {
     if ((this.CalculateOrderOperationCompleted == null)) {
         this.CalculateOrderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCalculateOrderOperationCompleted);
     }
     this.InvokeAsync("CalculateOrder", new object[] {
                 CalculateOrderRequest}, this.CalculateOrderOperationCompleted, userState);
 }
示例#6
0
 /// <remarks/>
 public void CalculateOrderAsync(CalculateOrderRequest CalculateOrderRequest) {
     this.CalculateOrderAsync(CalculateOrderRequest, null);
 }
示例#7
0
        public async Task <IHttpActionResult> CalculateOrder([FromBody] CalculateOrderRequest request)
        {
            var response = await _orderService.CalculateOrder(request);

            return(new CreateResult(response));
        }
示例#8
0
        public static OrderCalculationResponse CalculateOrder(OrderCalculationRequest request)
        {
            var result = new OrderCalculationResponse();

            if (request.Items.Count() == 0 || request.Address == null || request.Address.Country.IsNullOrEmpty() || request.Address.State.IsNullOrEmpty())
            {
                return(result);
            }
            if (request.ShipMethodID == 0)
            {
                request.ShipMethodID = request.Configuration.DefaultShipMethodID;
            }


            var apirequest = new CalculateOrderRequest();

            apirequest.WarehouseID       = request.Configuration.WarehouseID;
            apirequest.CurrencyCode      = request.Configuration.CurrencyCode;
            apirequest.PriceType         = request.Configuration.PriceTypeID;
            apirequest.ShipMethodID      = request.ShipMethodID;
            apirequest.ReturnShipMethods = request.ReturnShipMethods;
            apirequest.City    = request.Address.City;
            apirequest.State   = request.Address.State;
            apirequest.Zip     = request.Address.Zip;
            apirequest.Country = request.Address.Country;
            apirequest.Details = request.Items.Select(c => new OrderDetailRequest(c)).ToArray();

            var apiresponse = Exigo.WebService().CalculateOrder(apirequest);

            result.Subtotal = apiresponse.SubTotal;
            result.Shipping = apiresponse.ShippingTotal;
            result.Tax      = apiresponse.TaxTotal;
            result.Discount = apiresponse.DiscountTotal;
            result.Total    = apiresponse.Total;


            // Assemble the ship methods, if requested
            if (request.ReturnShipMethods)
            {
                var shipMethods = new List <ShipMethod>();
                if (apiresponse.ShipMethods != null && apiresponse.ShipMethods.Length > 0)
                {
                    var webShipMethods = new List <ShipMethod>();

                    using (var sql = Exigo.Sql())
                    {
                        webShipMethods = sql.Query <ShipMethod>(@"
                                        SELECT 
                                            [ShipMethodID]
                                            ,[ShipMethodDescription]
                                            ,[WarehouseID]
                                            ,[ShipCarrierID]
                                            ,[DisplayOnWeb]
                                        FROM [dbo].[ShipMethods]
                                        WHERE DisplayOnWeb = 1 
                                            AND WarehouseID = @wid",
                                                                new
                        {
                            wid = request.Configuration.WarehouseID
                        }).ToList();
                    }

                    if (webShipMethods.Count() > 0)
                    {
                        var webShipMethodIds = webShipMethods.Select(s => s.ShipMethodID);
                        foreach (var shipMethod in apiresponse.ShipMethods.Where(x => webShipMethodIds.Contains(x.ShipMethodID)))
                        {
                            shipMethods.Add((ShipMethod)shipMethod);
                        }

                        if (shipMethods.Any())
                        {
                            // Ensure that at least one ship method is selected
                            var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID;
                            if (shipMethods.Any(c => c.ShipMethodID == shipMethodID))
                            {
                                shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true;
                            }
                            else
                            {
                                shipMethods.First().Selected = true;
                            }
                        }
                    }
                    else
                    {
                        throw new Exception("Error: You need at least one Ship Method set up as DisplayOnWeb.");
                    }
                }
                result.ShipMethods = shipMethods.AsEnumerable();
            }

            return(result);
        }
        // Order Calculation
        public OrderCalculationResult CalculateOrder(OrderCalculationRequest request)
        {
            var result = new OrderCalculationResult();

            if (request.Items.Count() == 0)
            {
                return(result);
            }
            if (request.Address == null)
            {
                request.Address = GlobalSettings.Company.DefaultCalculationAddress;
            }
            if (request.ShipMethodID == 0)
            {
                request.ShipMethodID = request.Configuration.DefaultShipMethodID;
            }


            var apirequest = new CalculateOrderRequest();

            apirequest.WarehouseID       = request.Configuration.WarehouseID;
            apirequest.CurrencyCode      = request.Configuration.CurrencyCode;
            apirequest.PriceType         = request.Configuration.PriceTypeID;
            apirequest.ShipMethodID      = request.ShipMethodID;
            apirequest.ReturnShipMethods = request.ReturnShipMethods;
            apirequest.City    = request.Address.City;
            apirequest.State   = request.Address.State;
            apirequest.Zip     = request.Address.Zip;
            apirequest.Country = request.Address.Country;
            apirequest.Details = request.Items.Select(c => new OrderDetailRequest(c)).ToArray();

            var apiresponse = Exigo.WebService().CalculateOrder(apirequest);

            result.Subtotal = apiresponse.SubTotal;
            result.Shipping = apiresponse.ShippingTotal;
            result.Tax      = apiresponse.TaxTotal;
            result.Discount = apiresponse.DiscountTotal;
            result.Total    = apiresponse.Total;


            // Assemble the ship methods
            var shipMethods = new List <IShipMethod>();

            if (apiresponse.ShipMethods != null)
            {
                foreach (var shipMethod in apiresponse.ShipMethods.Where(s => request.Configuration.AvailableShipMethods.Contains(s.ShipMethodID)))
                {
                    shipMethods.Add(GlobalUtilities.TranslateShipMethods((ShipMethod)shipMethod));
                }

                // Ensure that at least one ship method is selected
                var shipMethodID = (request.ShipMethodID != 0) ? request.ShipMethodID : request.Configuration.DefaultShipMethodID;
                if (shipMethods.Any(c => c.ShipMethodID == shipMethodID))
                {
                    shipMethods.First(c => c.ShipMethodID == shipMethodID).Selected = true;
                }
                else
                {
                    shipMethods.First().Selected = true;
                }
            }

            result.ShipMethods = shipMethods.AsEnumerable();

            var test = "";

            return(result);
        }