示例#1
0
        public void PopulateEmailModel(SubscriptionBrasseler subscriptionOrder, dynamic emailModel, IQueryable <CustomerOrder> repository)
        {
            var customerOrder = repository.Where(x => x.Id == subscriptionOrder.CustomerOrderId).FirstOrDefault();

            Currency currency = (Insite.Data.Entities.Currency)null;

            if (customerOrder.CurrencyId.HasValue)
            {
                currency = this.UnitOfWork.GetTypedRepository <ICurrencyRepository>().Get(customerOrder.CurrencyId.Value);
            }

            List <ExpandoObject> expandoObjectList = new List <ExpandoObject>();

            emailModel.ShippingDate = string.Format("{0:D}", subscriptionOrder.NextDelieveryDate);
            emailTo = subscriptionOrder.CreatedBy; //BUSA-1120 User received an SS email though he didn't opt for SmartSupply.
            emailModel.OrderNumber = customerOrder.OrderNumber;
            emailModel.SubscriptionShippingNotificationDays = SubscriptionShippingNotificationDays;

            companyName = (customerOrder.STCompanyName.IsBlank() ? string.Concat(customerOrder.STFirstName, " ", customerOrder.STLastName).Trim() : customerOrder.STCompanyName);
            emailModel.STDisplayName  = companyName;
            emailModel.STAddress1     = customerOrder.STAddress1;
            emailModel.STAddress2     = customerOrder.STAddress2;
            emailModel.STAddress3     = customerOrder.STAddress3;
            emailModel.STCity         = customerOrder.STCity;
            emailModel.STState        = customerOrder.STState;
            emailModel.STZip          = customerOrder.STPostalCode;
            emailModel.STPostalCode   = customerOrder.STPostalCode;
            emailModel.CustomerNumber = customerOrder.CustomerNumber;
            if (customerOrder != null && !string.IsNullOrEmpty(customerOrder.ShipTo.CustomerSequence))
            {
                emailModel.CustomerShipToNumber = customerOrder.ShipTo.CustomerSequence;
            }
            else
            {
                emailModel.CustomerShipToNumber = string.Empty;
            }
            foreach (OrderLine orderLine in (IEnumerable <OrderLine>)customerOrder.OrderLines)
            {
                dynamic obj1 = new ExpandoObject();
                obj1.ProductName       = orderLine.Product.Name;
                obj1.Description       = orderLine.Description;
                obj1.QtyOrdered        = decimal.Round(orderLine.QtyOrdered, 2);
                obj1.QtyOrderedDisplay = obj1.QtyOrdered.ToString("0.##");
                obj1.ActualPrice       = this.CurrencyFormatProvider.GetString(orderLine.UnitNetPrice, currency);
                obj1.ExtPrice          = this.CurrencyFormatProvider.GetString(this.OrderLineUtilities.GetTotalNetPrice(orderLine), currency);
                expandoObjectList.Add(obj1);
            }
            emailModel.OrderLines = expandoObjectList;
        }
        protected SubscriptionBrasseler CreateSubscriptionBrasseler(SubscriptionBrasseler subscriptionBraseler, CustomerOrder cart)
        {
            SubscriptionBrasseler subscriptionBrasseler1 = new SubscriptionBrasseler();
            subscriptionBrasseler1.CustomerOrderId = cart.Id;
            subscriptionBrasseler1.Frequency = subscriptionBraseler.Frequency;
            subscriptionBrasseler1.PaymentMethod = subscriptionBraseler.PaymentMethod;
            subscriptionBrasseler1.NextDelieveryDate = subscriptionBraseler.NextDelieveryDate;
            subscriptionBrasseler1.ActivationDate = subscriptionBraseler.ActivationDate;
            subscriptionBrasseler1.DeActivationDate = subscriptionBraseler.DeActivationDate;
            subscriptionBrasseler1.ParentCustomerOrderId = subscriptionBraseler.CustomerOrderId;//BUSA-759 : SS- Unable to identify the parent order ID when user places multiple smart supply orders.
            subscriptionBrasseler1.ShipNow = shipNow;

            if (subscriptionBrasseler1 != null)
            {
                this.UnitOfWork.GetRepository<SubscriptionBrasseler>().Insert(subscriptionBrasseler1);
            }
            return subscriptionBrasseler1;
        }
示例#3
0
        protected void ConvertCartToSubscriptionOrder(IUnitOfWork unitOfWork, CustomerOrder subscriptionOrder, UpdateCartParameter parameter, UpdateCartResult result)
        {
            SubscriptionBrasseler subscriptionBrasseler = new SubscriptionBrasseler();

            subscriptionBrasseler.CustomerOrderId       = subscriptionOrder.Id;
            subscriptionBrasseler.ActivationDate        = subscriptionOrder.OrderDate;
            subscriptionBrasseler.DeActivationDate      = DateTimeOffset.Parse(subscriptionOrder.OrderDate.AddYears(5).ToString());
            subscriptionBrasseler.ParentCustomerOrderId = subscriptionOrder.Id;// BUSA-759 : SS- Unable to identify the parent order ID when user places multiple smart supply orders

            //save subscriptionOrder payment Method Starts
            if (parameter.TermsCode.EqualsIgnoreCase("CK"))
            {
                subscriptionBrasseler.PaymentMethod = "CK";
                subscriptionOrder.TermsCode         = "CK";
            }
            else if (parameter.IsPaymentProfile && !string.IsNullOrEmpty(parameter.PaymentProfileId))
            {
                UserPaymentProfile userPaymentProfile = unitOfWork.GetRepository <UserPaymentProfile>().GetTable().FirstOrDefault(p => p.CardIdentifier == parameter.PaymentProfileId);
                if (userPaymentProfile != null)
                {
                    subscriptionBrasseler.PaymentMethod = userPaymentProfile.Id.ToString();
                    subscriptionOrder.TermsCode         = "CC";
                }
            }

            subscriptionOrder.ShippingCalculationNeededAsOf = (DateTimeOffset)DateTimeProvider.Current.Now;
            subscriptionOrder.RecalculateTax = true;
            this.PromotionEngine.Value.ClearPromotions(subscriptionOrder);
            subscriptionOrder.RecalculatePromotions = true;
            this.PricingPipeline.GetCartPricing(new Insite.Core.Plugins.Pipelines.Pricing.Parameters.GetCartPricingParameter(subscriptionOrder));
            //this.CartHelper.Value.RecalculateCart(unitOfWork, subscriptionOrder, (OrderLine)null, true);

            if (subscriptionOrder.CustomProperties.Where(x => x.Name == "subscriptionFrequencyOpted").Count() > 0)
            {
                var Frequency = subscriptionOrder.CustomProperties.FirstOrDefault(x => x.Name == "subscriptionFrequencyOpted").Value;
                subscriptionBrasseler.Frequency = int.Parse(Frequency);
                //BUSA-781 logic to calculate next ship date when user selects date from calendar
                var isNextShipDate = subscriptionOrder.CustomProperties.FirstOrDefault(x => x.Name == "checkoutNextShipDate")?.Value;
                if (!string.IsNullOrEmpty(isNextShipDate))
                {
                    subscriptionBrasseler.NextDelieveryDate = new DateTimeOffset(Convert.ToDateTime(isNextShipDate), TimeSpan.Zero);
                }
                else
                {
                    //subscriptionBrasseler.NextDelieveryDate = new DateTimeOffset(DateTimeProvider.Current.Now.AddDays(double.Parse(Frequency)), TimeSpan.Zero); kkk

                    subscriptionBrasseler.NextDelieveryDate = (DateTimeOffset)DateTimeProvider.Current.Now.AddDays(double.Parse(Frequency));   //(DateTimeOffset.Now.AddDays(double.Parse(Frequency)));
                }
                //BUSA-781 end
            }
            if (subscriptionBrasseler != null)
            {
                unitOfWork.GetRepository <SubscriptionBrasseler>().Insert(subscriptionBrasseler);
            }

            CustomerOrder cart = result.GetCartResult.Cart;

            this.SetCustomerOrderNumber(unitOfWork, cart);

            SendSubscriptionCreationEmail(unitOfWork, subscriptionOrder);
        }
示例#4
0
        protected void CreateSubscriptionOrderLine(IUnitOfWork unitOfWork, CustomerOrder cart, UpdateCartParameter parameter, UpdateCartResult result)
        {
            if (cart == null || cart.OrderLines.Count <= 0)
            {
                return;
            }

            CustomerOrder subscriptionOrder = this.CreateSubscriptionOrder(unitOfWork, cart);

            SubscriptionBrasseler subscriptionBrasseler = new SubscriptionBrasseler();

            subscriptionBrasseler.CustomerOrderId       = subscriptionOrder.Id;
            subscriptionBrasseler.ActivationDate        = subscriptionOrder.OrderDate;
            subscriptionBrasseler.DeActivationDate      = DateTimeOffset.Parse(subscriptionOrder.OrderDate.AddYears(5).ToString());
            subscriptionBrasseler.ParentCustomerOrderId = subscriptionOrder.Id;// BUSA-759 : SS- Unable to identify the parent order ID when user places multiple smart supply orders

            foreach (var ol in cart.OrderLines)
            {
                //BUSA-463 Subscription - Exclude subscription promotional product in susbcription order
                if (!ol.IsPromotionItem)
                {
                    var isSubscriptionOpted = ol.GetProperty("IsSubscriptionOpted", "false");

                    if (!isSubscriptionOpted.EqualsIgnoreCase("true"))
                    {
                        continue;
                    }

                    //save subscriptionOrder payment Method Starts
                    if (parameter.TermsCode.EqualsIgnoreCase("CK"))
                    {
                        subscriptionBrasseler.PaymentMethod = "CK";
                        subscriptionOrder.TermsCode         = "CK";
                    }
                    else if (parameter.IsPaymentProfile && !string.IsNullOrEmpty(parameter.PaymentProfileId))
                    {
                        UserPaymentProfile userPaymentProfile = unitOfWork.GetRepository <UserPaymentProfile>().GetTable().FirstOrDefault(p => p.CardIdentifier == parameter.PaymentProfileId);
                        if (userPaymentProfile != null)
                        {
                            subscriptionBrasseler.PaymentMethod = userPaymentProfile.Id.ToString();
                            subscriptionOrder.TermsCode         = "CC";
                        }
                    }
                    else if (parameter.StorePaymentProfile)
                    {
                        var CCResponse = result.GetCartResult.Cart.CreditCardTransactions.FirstOrDefault();
                        if (CCResponse != null)
                        {
                            var CCidentifier       = CCResponse.PNRef.ToString().Split('|').FirstOrDefault();
                            var userPaymentProfile = unitOfWork.GetRepository <UserPaymentProfile>().GetTable().FirstOrDefault(x => x.CardIdentifier == CCidentifier);
                            if (userPaymentProfile != null)
                            {
                                subscriptionBrasseler.PaymentMethod = userPaymentProfile.Id.ToString();
                            }
                        }
                        subscriptionOrder.TermsCode = cart.TermsCode;
                    }
                    //else
                    //{
                    //    subscriptionBrasseler.PaymentMethod = "CK";
                    //}
                    //save subscriptionOrder payment Method Ends

                    //this.CustomerOrderUtilities.AddOrderLine(subscriptionOrder, this.OrderLineUtilities.Copy(ol));
                    Insite.Cart.Services.Pipelines.Results.AddCartLineResult addCartLineResult = this.CartPipeline.AddCartLine(new Insite.Cart.Services.Pipelines.Parameters.AddCartLineParameter()
                    {
                        Cart             = subscriptionOrder,
                        Product          = ol.Product,
                        QtyOrdered       = ol.QtyOrdered,
                        UnitOfMeasure    = ol.UnitOfMeasure,
                        CostCode         = ol.CostCode,
                        Notes            = ol.Notes,
                        CustomProperties = ol.CustomProperties.ToList()
                    });
                    addCartLineResult.CartLine.SmartPart = ol.SmartPart;

                    for (int index = subscriptionOrder.OrderLines.Count - 1; index >= 0; --index)
                    {
                        OrderLine orderLine = subscriptionOrder.OrderLines.ElementAt <OrderLine>(index);

                        if (!this.ProductUtilities.Value.IsQuoteRequired(orderLine.Product) || cart.Status == "QuoteProposed")
                        {
                            this.ProcessInventory(orderLine);
                        }

                        orderLine.PromotionResultId = null;
                    }
                }
            }

            subscriptionOrder.ShippingCalculationNeededAsOf = (DateTimeOffset)DateTimeProvider.Current.Now;
            subscriptionOrder.RecalculateTax = true;
            this.PromotionEngine.Value.ClearPromotions(subscriptionOrder);
            subscriptionOrder.RecalculatePromotions = true;
            PricingPipeline.GetCartPricing(new GetCartPricingParameter(subscriptionOrder));
            //this.CartHelper.Value.RecalculateCart(unitOfWork, subscriptionOrder, (OrderLine)null, true); kkk

            if (subscriptionOrder.CustomProperties.Where(x => x.Name == "subscriptionFrequencyOpted").Count() > 0)
            {
                var Frequency = subscriptionOrder.CustomProperties.FirstOrDefault(x => x.Name == "subscriptionFrequencyOpted").Value;
                subscriptionBrasseler.Frequency = int.Parse(Frequency);
                //BUSA-871 : Shipping SS order on future date provided by user
                //subscriptionBrasseler.NextDelieveryDate = new DateTimeOffset(DateTimeProvider.Current.Now.AddDays(double.Parse(Frequency)), TimeSpan.Zero);
                subscriptionBrasseler.NextDelieveryDate = (DateTimeOffset.Now.AddDays(double.Parse(Frequency)));
            }
            if (subscriptionBrasseler != null)
            {
                unitOfWork.GetRepository <SubscriptionBrasseler>().Insert(subscriptionBrasseler);
            }

            SendSubscriptionCreationEmail(unitOfWork, subscriptionOrder);
        }