public async Task <HSOrderCalculateResponse> CalculateOrder(HSOrderCalculatePayload orderCalculatePayload)
        {
            if (orderCalculatePayload.OrderWorksheet.Order.xp != null && orderCalculatePayload.OrderWorksheet.Order.xp.OrderType == OrderType.Quote)
            {
                // quote orders do not have tax cost associated with them
                return(new HSOrderCalculateResponse());
            }
            else
            {
                var promotions = await _oc.Orders.ListAllPromotionsAsync(OrderDirection.All, orderCalculatePayload.OrderWorksheet.Order.ID);

                var   promoCalculationTask = _discountDistribution.SetLineItemProportionalDiscount(orderCalculatePayload.OrderWorksheet, promotions);
                var   taxCalculationTask   = _taxCalculator.CalculateEstimateAsync(orderCalculatePayload.OrderWorksheet.Reserialize <OrderWorksheet>(), promotions);
                var   taxCalculation       = await taxCalculationTask;
                await promoCalculationTask;

                return(new HSOrderCalculateResponse
                {
                    TaxTotal = taxCalculation.TotalTax,
                    xp = new OrderCalculateResponseXp()
                    {
                        TaxCalculation = taxCalculation
                    }
                });
            }
        }
Ejemplo n.º 2
0
        public async Task <ShipEstimateResponse> GetShippingRates([FromBody] ShipmentTestModel model)
        {
            var payload = new HSOrderCalculatePayload()
            {
                ConfigData     = null,
                OrderWorksheet = new HSOrderWorksheet()
                {
                    Order     = model.Order,
                    LineItems = model.LineItems
                }
            };

            return(await _checkoutIntegrationCommand.GetRatesAsync(payload));
        }
        public async Task <HSOrderCalculateResponse> CalculateOrder(HSOrderCalculatePayload orderCalculatePayload)
        {
            if (orderCalculatePayload.OrderWorksheet.Order.xp != null && orderCalculatePayload.OrderWorksheet.Order.xp.OrderType == OrderType.Quote)
            {
                // quote orders do not have tax cost associated with them
                return(new HSOrderCalculateResponse());
            }
            else
            {
                var totalTax = await _avalara.GetEstimateAsync(orderCalculatePayload.OrderWorksheet.Reserialize <OrderWorksheet>());

                return(new HSOrderCalculateResponse
                {
                    TaxTotal = totalTax.totalTax ?? 0,
                    xp = new OrderCalculateResponseXp()
                    {
                        TaxResponse = totalTax
                    }
                });
            }
        }
 public async Task <ShipEstimateResponse> GetRatesAsync(HSOrderCalculatePayload orderCalculatePayload)
 {
     return(await this.GetRatesAsync(orderCalculatePayload.OrderWorksheet, orderCalculatePayload.ConfigData));
 }
        public async Task <OrderSubmitResponse> HandleOrderApproved([FromBody] HSOrderCalculatePayload payload)
        {
            var response = await _postSubmitCommand.HandleBuyerOrderSubmit(payload.OrderWorksheet);

            return(response);
        }
        public async Task <OrderCalculateResponse> CalculateOrder([FromBody] HSOrderCalculatePayload orderCalculatePayload)
        {
            var orderCalculationResponse = await _checkoutIntegrationCommand.CalculateOrder(orderCalculatePayload);

            return(orderCalculationResponse);
        }
 public async Task <ShipEstimateResponse> GetShippingRates([FromBody] HSOrderCalculatePayload orderCalculatePayload)
 {
     return(await _checkoutIntegrationCommand.GetRatesAsync(orderCalculatePayload));
 }