public ActionResult RemoveOrderline(int orderlineId)
        {
            var    model      = ResolveModel();
            var    parameters = new System.Collections.Generic.Dictionary <string, object>();
            string message;

            if (!model.CanProcessRequest(parameters, out message))
            {
                return(this.PartialView("_Warning", message));
            }

            _transactionLibraryInternal.UpdateLineItemByOrderLineId(orderlineId, 0);
            _transactionLibraryInternal.ExecuteBasketPipeline();
            var vm = model.GetViewModel(Url.Action("UpdateBasket"), Url.Action("RemoveOrderline"));

            var miniBasketModel = ResolveMiniBasketModel();

            return(Json(new
            {
                MiniBasketRefresh = miniBasketModel.Refresh(),
                orderlineId,
                vm.OrderTotal,
                vm.DiscountTotal,
                vm.TaxTotal,
                vm.SubTotal,
                vm.OrderLines
            }));
        }
        public ActionResult CreatePayment(PaymentPickerViewModel createPaymentViewModel)
        {
            _transactionLibraryInternal.CreatePayment(createPaymentViewModel.SelectedPaymentMethodId, -1m, false, true);
            _transactionLibraryInternal.ExecuteBasketPipeline();

            return(Redirect("/preview"));
        }
        public ActionResult CreateShipment(ShippingPickerViewModel createShipmentViewModel)
        {
            _transactionLibraryInternal.CreateShipment(createShipmentViewModel.SelectedShippingMethodId, Constants.DefaultShipmentAddressName, true);
            _transactionLibraryInternal.ExecuteBasketPipeline();

            return(Redirect("/payment"));
        }
Пример #4
0
        public ActionResult AddVoucher(string voucher)
        {
            bool success = _marketingLibraryInternal.AddVoucher(voucher);

            _transactionLibraryInternal.ExecuteBasketPipeline();

            return(Json(new { voucher, success }));
        }
        public virtual ShippingPickerViewModel GetViewModel()
        {
            var shipmentPickerViewModel = new ShippingPickerViewModel();
            var basket = _transactionLibraryInternal.GetBasket().PurchaseOrder;

            if (_transactionLibraryInternal.HasBasket())
            {
                var shippingCountry = basket.GetAddress(UCommerce.Constants.DefaultShipmentAddressName).Country;
                shipmentPickerViewModel.ShippingCountry = shippingCountry.Name;
                var availableShippingMethods = _transactionLibraryInternal.GetShippingMethods(shippingCountry);

                if (basket.Shipments.Count > 0)
                {
                    shipmentPickerViewModel.SelectedShippingMethodId = basket.Shipments.FirstOrDefault()?.ShippingMethod.ShippingMethodId ?? 0;
                }
                else
                {
                    shipmentPickerViewModel.SelectedShippingMethodId = -1;
                }

                foreach (var availableShippingMethod in availableShippingMethods)
                {
                    var priceGroup = SiteContext.Current.CatalogContext.CurrentPriceGroup;

                    var price          = availableShippingMethod.GetPriceForPriceGroup(priceGroup);
                    var formattedprice = new Money((price == null ? 0 : price.Price), basket.BillingCurrency);

                    shipmentPickerViewModel.AvailableShippingMethods.Add(new SelectListItem()
                    {
                        Selected = shipmentPickerViewModel.SelectedShippingMethodId == availableShippingMethod.ShippingMethodId,
                        Text     = String.Format(" {0} ({1})", availableShippingMethod.Name, formattedprice),
                        Value    = availableShippingMethod.ShippingMethodId.ToString()
                    });
                }
            }
            _transactionLibraryInternal.ExecuteBasketPipeline();

            shipmentPickerViewModel.NextStepUrl     = GetNextStepUrl(nextStepId);
            shipmentPickerViewModel.PreviousStepUrl = GetPreviousStepUrl(previousStepId);

            return(shipmentPickerViewModel);
        }
Пример #6
0
        public ActionResult UpdateBasket(BasketUpdateBasket model)
        {
            foreach (var updateOrderline in model.RefreshBasket)
            {
                var newQuantity = updateOrderline.OrderLineQty;
                if (newQuantity <= 0)
                {
                    newQuantity = 0;
                }

                _transactionLibraryInternal.UpdateLineItemByOrderLineId(updateOrderline.OrderLineId, newQuantity);
            }

            _transactionLibraryInternal.ExecuteBasketPipeline();

            var basket = _transactionLibraryInternal.GetBasket(false).PurchaseOrder;

            BasketUpdateBasketViewModel updatedBasket = new BasketUpdateBasketViewModel();

            foreach (var orderLine in basket.OrderLines)
            {
                var orderLineViewModel = new BasketUpdateOrderline();
                orderLineViewModel.OrderlineId       = orderLine.OrderLineId;
                orderLineViewModel.Quantity          = orderLine.Quantity;
                orderLineViewModel.Total             = new Money(orderLine.Total.GetValueOrDefault(), basket.BillingCurrency).ToString();
                orderLineViewModel.Discount          = orderLine.Discount;
                orderLineViewModel.Tax               = new Money(orderLine.VAT, basket.BillingCurrency).ToString();
                orderLineViewModel.Price             = new Money(orderLine.Price, basket.BillingCurrency).ToString();
                orderLineViewModel.PriceWithDiscount = new Money(orderLine.Price - orderLine.Discount, basket.BillingCurrency).ToString();

                updatedBasket.Orderlines.Add(orderLineViewModel);
            }

            string orderTotal    = new Money(basket.OrderTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();
            string discountTotal = new Money(basket.DiscountTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();
            string taxTotal      = new Money(basket.TaxTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();
            string subTotal      = new Money(basket.SubTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();

            updatedBasket.OrderTotal    = orderTotal;
            updatedBasket.DiscountTotal = discountTotal;
            updatedBasket.TaxTotal      = taxTotal;
            updatedBasket.SubTotal      = subTotal;


            return(Json(new
            {
                MiniBasketRefresh = _miniBasketService.Refresh(),
                OrderTotal = orderTotal,
                DiscountTotal = discountTotal,
                TaxTotal = taxTotal,
                SubTotal = subTotal,
                OrderLines = updatedBasket.Orderlines
            }));
        }
        public virtual PaymentPickerViewModel GetViewModel()
        {
            var paymentPickerViewModel = new PaymentPickerViewModel();

            var basket          = _transactionLibraryInternal.GetBasket().PurchaseOrder;
            var shippingCountry = UCommerce.Api.TransactionLibrary.GetCountries().SingleOrDefault(x => x.Name == "Germany");

            paymentPickerViewModel.ShippingCountry = shippingCountry.Name;

            var availablePaymentMethods = _transactionLibraryInternal.GetPaymentMethods(shippingCountry);

            var existingPayment = basket.Payments.FirstOrDefault();

            paymentPickerViewModel.SelectedPaymentMethodId = existingPayment != null
                ? existingPayment.PaymentMethod.PaymentMethodId
                : -1;
            var priceGroup = SiteContext.Current.CatalogContext.CurrentPriceGroup;

            foreach (var availablePaymentMethod in availablePaymentMethods)
            {
                var     option       = new SelectListItem();
                decimal feePercent   = availablePaymentMethod.FeePercent;
                var     fee          = availablePaymentMethod.GetFeeForPriceGroup(priceGroup);
                var     formattedFee = new Money(fee == null ? 0 : fee.Fee, basket.BillingCurrency);

                option.Text = String.Format(" {0} ({1} + {2}%)", availablePaymentMethod.Name, formattedFee,
                                            feePercent.ToString("0.00"));
                option.Value    = availablePaymentMethod.PaymentMethodId.ToString();
                option.Selected = availablePaymentMethod.PaymentMethodId == paymentPickerViewModel.SelectedPaymentMethodId;

                paymentPickerViewModel.AvailablePaymentMethods.Add(option);
            }
            _transactionLibraryInternal.ExecuteBasketPipeline();

            paymentPickerViewModel.NextStepUrl     = GetNextStepUrl(nextStepId);
            paymentPickerViewModel.PreviousStepUrl = GetPreviousStepUrl(previousStepId);

            return(paymentPickerViewModel);
        }
        public ActionResult Save(AddressSaveViewModel addressRendering)
        {
            if (!addressRendering.IsShippingAddressDifferent)
            {
                this.ModelState.Remove("ShippingAddress.FirstName");
                this.ModelState.Remove("ShippingAddress.LastName");
                this.ModelState.Remove("ShippingAddress.EmailAddress");
                this.ModelState.Remove("ShippingAddress.Line1");
                this.ModelState.Remove("ShippingAddress.PostalCode");
                this.ModelState.Remove("ShippingAddress.City");
            }
            if (!ModelState.IsValid)
            {
                var dictionary = ModelState.ToDictionary(kvp => kvp.Key,
                                                         kvp => kvp.Value.Errors
                                                         .Select(e => e.ErrorMessage).ToArray())
                                 .Where(m => m.Value.Any());

                return(Json(new { modelStateErrors = dictionary }));
            }

            if (addressRendering.IsShippingAddressDifferent)
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.ShippingAddress);
            }

            else
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.BillingAddress);
            }

            if (Tracker.Current != null)
            {
                Tracker.Current.Session.CustomData["FirstName"] = addressRendering.BillingAddress.FirstName;
            }

            _transactionLibraryInternal.ExecuteBasketPipeline();

            return(Json(new { ShippingUrl = "/shipping" }));
        }
        public virtual JsonResult Save(AddressSaveViewModel addressRendering)
        {
            var result = new JsonResult();

            if (addressRendering.IsShippingAddressDifferent)
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.ShippingAddress);
            }
            else
            {
                EditBillingInformation(addressRendering.BillingAddress);
                EditShippingInformation(addressRendering.BillingAddress);
            }

            _transactionLibraryInternal.ExecuteBasketPipeline();

            result.Data = new { ShippingUrl = GetNextStepUrl(nextStepId) };
            return(result);
        }