protected override void handleDeliveryTypeChanged(DropDownList DeliveryType, DropDownList DropdownNickName)
        {
            CheckDSMailingAddress(false, null);
            DeliveryOptionType deliveryType = getDeliveryOptionTypeFromDropdown(DeliveryType);

            if (null != DropdownNickName)
            {
                DropdownNickName.Attributes.Remove("style");
            }
            ShoppingCart.DeliveryInfo = null;
            if (deliveryType == DeliveryOptionType.Shipping || deliveryType == DeliveryOptionType.ShipToCourier)
            {
                populateShipping();
                setAddressByNickName(ShoppingCart.DeliveryInfo == null
                                         ? null
                                         : (ShoppingCart.DeliveryInfo.Option == DeliveryOptionType.Shipping
                                                ? ShoppingCart.DeliveryInfo.Address
                                                : null));
            }
            else if (deliveryType == DeliveryOptionType.PickupFromCourier)
            {
                populatePickupPreference();
                setAddressByNickName(ShoppingCart.DeliveryInfo == null
                                         ? null
                                         : (ShoppingCart.DeliveryInfo.Option == DeliveryOptionType.PickupFromCourier
                                                ? ShoppingCart.DeliveryInfo.Address
                                                : null));
            }
            else
            {
                if (CountryCode == "BR")
                {
                    var mailingAdd = new ShippingAddress_V01(1, DistributorProfileModelHelper.DistributorName(DistributorProfileModel),
                                                             ObjectMappingHelper.Instance.GetToShipping(DistributorOrderingProfileProvider.GetAddress(ServiceProvider.OrderSvc.AddressType.Mailing, DistributorID, CountryCode)),
                                                             string.Empty, string.Empty, false, string.Empty,
                                                             DateTime.Now);
                    if (CheckDSMailingAddress(true, mailingAdd))
                    {
                        populatePickup();
                        setAddressByNickName(ShoppingCart.DeliveryInfo == null
                                                 ? null
                                                 : (ShoppingCart.DeliveryInfo.Option == DeliveryOptionType.Pickup
                                                        ? ShoppingCart.DeliveryInfo.Address
                                                        : null));
                    }
                }
                else
                {
                    populatePickup();
                    setAddressByNickName(ShoppingCart.DeliveryInfo == null
                                             ? null
                                             : (ShoppingCart.DeliveryInfo.Option == DeliveryOptionType.Pickup
                                                    ? ShoppingCart.DeliveryInfo.Address
                                                    : null));
                }
            }
            showShiptoOrPickup(IsStatic);
        }
        /// <summary>
        ///     Suggests a name for the cart to be saved.
        /// </summary>
        /// <param name="cartName">The initial cart name</param>
        /// <returns></returns>
        public static string SuggestCartName(ShippingInfo deliveryInfo,
                                             string cartName,
                                             string distributorID,
                                             string locale)
        {
            string suggestedName = cartName;

            if (string.IsNullOrEmpty(suggestedName))
            {
                if (deliveryInfo != null)
                {
                    if (deliveryInfo.Option == DeliveryOptionType.Shipping)
                    {
                        suggestedName = deliveryInfo.Address.Recipient ?? string.Empty;
                    }
                    else
                    {
                        suggestedName =
                            DistributorProfileModelHelper.DistributorName(
                                ((MembershipUser <DistributorProfileModel>)Membership.GetUser()).Value);
                    }
                }

                if (string.IsNullOrEmpty(suggestedName))
                {
                    return(suggestedName);
                }
            }
            else
            {
                Match match = Regex.Match(suggestedName, @"([A-Za-z0-9\-\s_]+)_\d+");
                if (match.Success)
                {
                    suggestedName = match.Groups[1].Value;
                }
            }

            var savedCarts = ShoppingCartProvider.GetCarts(distributorID, locale);
            int index      = 0;

            if (savedCarts != null && savedCarts.Count > 0)
            {
                index =
                    savedCarts.Count(
                        c =>
                        !string.IsNullOrEmpty(c.CartName) && c.CartName.ToUpper().StartsWith(suggestedName.ToUpper()));
            }
            return((index == 0) ? suggestedName : string.Format("{0}_{1}", suggestedName, index + 1));
        }
        //Name:GenerateXmlRequest
        //Description:Generate the xml file for the PayOrder Request
        //
        private string GenerateXmlRequest(string returnUrlApproved, string returnUrlDeclined)
        {
            MyHLShoppingCart myCart;
            SessionInfo      sessionInfoMyCart = SessionInfo.GetSessionInfo(this._distributorId, this._locale);

            myCart = sessionInfoMyCart.ShoppingCart
                     ?? ShoppingCartProvider.GetShoppingCart(this._distributorId, this._locale);

            try
            {
                #region "create Skeleton"

                // Create Skeleton
                decimal taxBrazil    = 0.90m;
                var     xmlToSend    = new XDocument();
                var     xDeclaration = new XDeclaration("1.0", "UTF-8", "no");
                xmlToSend.Declaration = xDeclaration;
                var xmlRoot = new XElement("payOrder");
                xmlToSend.Add(xmlRoot);
                var order_data    = new XElement("order_data");
                var behavior_data = new XElement("behavior_data");
                var payment_data  = new XElement("payment_data");
                var customer_data = new XElement("customer_data");

                xmlRoot.Add(order_data);
                xmlRoot.Add(behavior_data);
                xmlRoot.Add(payment_data);
                xmlRoot.Add(customer_data);

                #endregion

                #region "order data section"

                //Fill order data section
                order_data.Add(new XElement("merch_ref", OrderNumber));
                order_data.Add(new XElement("origin", "E-commerce"));
                order_data.Add(new XElement("currency", "BRL"));
                order_data.Add(new XElement("tax_boarding", 0));
                order_data.Add(new XElement("tax_freight", 0));
                order_data.Add(new XElement("tax_others", 0));
                order_data.Add(new XElement("discount_plus", 0));
                order_data.Add(new XElement("order_subtotal",
                                            (string.Format(getPriceFormat(_orderAmount + taxBrazil),
                                                           _orderAmount + taxBrazil).Replace(".", ""))
                                            .Replace(",", "")));
                // Only positive values are accepted.Value without formatting.Two last digits are cents. Eg. 1234 = 12.34.
                order_data.Add(new XElement("interests_value", 0));
                order_data.Add(new XElement("order_total",
                                            (string.Format(getPriceFormat(_orderAmount + taxBrazil),
                                                           _orderAmount + taxBrazil).Replace(".", ""))
                                            .Replace(",", "")));
                var order_items = new XElement("order_items");
                order_data.Add(order_items);

                #endregion

                #region "order items section"

                order_items.Add(new XElement("order_item", new XElement("code", "Grand Total"),
                                             new XElement("description", "Grand Total"),
                                             new XElement("units", 1),
                                             new XElement("unit_value",
                                                          (string.Format(
                                                               getPriceFormat(_orderAmount + taxBrazil),
                                                               _orderAmount + taxBrazil).Replace(".", ""))
                                                          .Replace(",", ""))));

                #endregion

                #region "behavior_data section"

                //Fill behavior_data section
                behavior_data.Add(new XElement("language", "ptbr"));
                behavior_data.Add(new XElement("url_post_bell",
                                               (string.Format("{0}?Agency=bankslipboldcron&Bell=bell&merch_ref={1}",
                                                              returnUrlApproved, OrderNumber))));
                behavior_data.Add(new XElement("url_redirect_success",
                                               (string.Format(
                                                    "{0}?Agency=bankslipboldcron&merchant=herbalife&merch_ref={1}",
                                                    returnUrlApproved, OrderNumber))));
                behavior_data.Add(new XElement("url_redirect_error",
                                               (string.Format("{0}?Agency=bankslipboldcron", returnUrlDeclined))));

                #endregion

                #region "payment_data section"

                //Fill payment_data section

                payment_data.Add(new XElement("payment", new XElement("payment_method", "boleto_bradesco")));

                #endregion

                #region "Customer data section"

                //Fill customer_data section

                customer_data.Add(new XElement("customer_id", _distributorId));
                customer_data.Add(new XElement("customer_eval", 0));

                var customer_info = new XElement("customer_info");
                customer_data.Add(customer_info);

                string DistributorName = DistributorProfileModelHelper.DistributorName(DistributorProfileModel);

                //Fill customer_information inside customer_data section
                customer_info.Add(new XElement("first_name", DistributorName ?? string.Empty));
                customer_info.Add(new XElement("email", null != myCart.EmailAddress ? myCart.EmailAddress : string.Empty));

                //Fill billing_information inside customer_data section
                var billing_info = new XElement("billing_info");
                customer_data.Add(billing_info);

                billing_info.Add(new XElement("first_name", DistributorName ?? string.Empty));

                billing_info.Add(new XElement("email", null != myCart.EmailAddress ? myCart.EmailAddress : string.Empty));

                //Fill shipment_info inside customer_data section

                var shipment_info = new XElement("shipment_info");
                customer_data.Add(shipment_info);

                shipment_info.Add(new XElement("first_name", DistributorName ?? string.Empty));
                shipment_info.Add(new XElement("email", null != myCart.EmailAddress ? myCart.EmailAddress : string.Empty));

                #endregion

                //   xmlToSend.Save("C:\\XMLRequest Files\\bradesco.xml");
                String xmlReadyToSend;
                xmlReadyToSend = xmlToSend.Declaration + xmlToSend.Root.ToString();
                return(xmlReadyToSend);
            }
            catch (Exception)
            {
                throw;
            }
        }
        private string BuildInfo(string transactionType)
        {
            decimal          taxBrazil = 0.90m;
            MyHLShoppingCart myCart;
            SessionInfo      sessionInfoMyCart = SessionInfo.GetSessionInfo(this._distributorId, this._locale);

            myCart = sessionInfoMyCart.ShoppingCart;
            if (myCart == null)
            {
                myCart = ShoppingCartProvider.GetShoppingCart(this._distributorId, this._locale);
            }
            string DistributorName = DistributorProfileModelHelper.DistributorName(DistributorProfileModel);

            InstallmentConfiguration _installmentsConfiguration;
            DateTime   currentDate;
            OrderMonth orderMonth = new OrderMonth(myCart.CountryCode);

            currentDate = orderMonth.CurrentOrderMonth;

            var orderType = "RSO";

            if (myCart.OrderCategory == OrderCategoryType.ETO)
            {
                orderType = "ETO";
            }
            else if (myCart.OrderCategory == OrderCategoryType.APF)
            {
                orderType = "APF";
            }
            _installmentsConfiguration = InstallmentsProvider.GetInstallmentsConfiguration(myCart.CountryCode, new DateTime(currentDate.Year, currentDate.Month, 1), orderType);

            if (_installmentsConfiguration == null)
            {
                DateTime today = DateTime.Today;
                currentDate = new DateTime(today.Year, today.Month, 1).AddMonths(1).AddDays(-1);
            }

            string paymentCode = _configHelper.GetConfigEntry("paymentCode");

            string data;

            data = "VENDAID=" + this.OrderNumber + "@";
            data = data + "VALOR=" + ((null != myCart.Totals ? _orderAmount : 0) + taxBrazil) + "@";
            data = data + "NOME=" + (null != DistributorName ? DistributorName : string.Empty) + "@";
            data = data + "CODPAGAMENTO=" + paymentCode + "@";
            data = data + "LOGRADOURO=" + (null != myCart.DeliveryInfo.Address.Address.Line1 ? myCart.DeliveryInfo.Address.Address.Line1 : string.Empty) + "@";
            data = data + "BAIRRO=" + (null != myCart.DeliveryInfo.Address.Address.Line2 ? myCart.DeliveryInfo.Address.Address.Line2 : string.Empty) + "@";
            data = data + "CIDADE=" + (null != myCart.DeliveryInfo.Address.Address.City ? myCart.DeliveryInfo.Address.Address.City : string.Empty) + "@";
            data = data + "ESTADO=" + (null != myCart.DeliveryInfo.Address.Address.StateProvinceTerritory ? myCart.DeliveryInfo.Address.Address.StateProvinceTerritory : string.Empty) + "@";
            data = data + "CEP=" + (null != myCart.DeliveryInfo.Address.Address.PostalCode ? myCart.DeliveryInfo.Address.Address.PostalCode : string.Empty) + "@";
            data = data + "INSTRUCOES=" + "Nao aceitar este boleto apos a data de vencimento # ** Tarifa Bancaria:R$ 0,90 # ** Valor da Nota Fiscal: " + _orderAmount + "@";
            data = data + "EXTRA=" + (null != myCart.DistributorID ? myCart.DistributorID : string.Empty) + "@";
            data = data + "PAIS=BRAZIL@";
            data = data + "NOSSONUMERO=" + (null != this.OrderNumber ? this.OrderNumber.Remove(0, 2) : string.Empty) + "@";
            data = data + "DATAVENCIMENTO=" + (_installmentsConfiguration == null ? currentDate.ToString("MM-dd-yyyy") : _installmentsConfiguration.TicketDueDate.ToString("yyyy-MM-dd")) + "@";
            data = data + "TRANSACTIONCURRENCY=BRL@";
            data = data + "TRANSACTIONCOUNTRY=BRA@";
            data = data + "TRANSACTIONTYPE=" + transactionType;

            return(data);
        }
        //Name:GenerateXmlRequest
        //Description:Generate the xml file for the BankSlip Request
        //
        private string GenerateXmlRequest(string returnUrl, string key, string password)
        {
            InstallmentConfiguration _installmentsConfiguration;

            #region "create Skeleton"


            decimal taxBrazil = 0.90m;

            MyHLShoppingCart myCart;
            SessionInfo      sessionInfoMyCart = SessionInfo.GetSessionInfo(this._distributorId, this._locale);
            myCart = sessionInfoMyCart.ShoppingCart;
            if (myCart == null)
            {
                myCart = ShoppingCartProvider.GetShoppingCart(this._distributorId, this._locale);
            }

            // Create Skeleton
            XDocument    xmlToSend    = new XDocument();
            XDeclaration xDeclaration = new XDeclaration("1.0", "utf-8", "no");

            XNamespace aw  = "http://wwww.w3.org/2001/XMLSchema-instance";
            XNamespace aw1 = "http://wwww.w3.org/2001/XMLSchema";
            XNamespace xn  = "http://www2.superpag.com.br/Schemas";
            xmlToSend.Declaration = xDeclaration;

            XElement xmlRoot = new XElement(xn + "RequisicaoPagamento",
                                            new XAttribute(XNamespace.Xmlns + "xsi", aw),
                                            new XAttribute(XNamespace.Xmlns + "xsd", aw1));

            xmlToSend.Add(xmlRoot);

            XElement EstabelecimentoComercial_data = new XElement(xn + "EstabelecimentoComercial",
                                                                  new XAttribute("ChaveAutenticacao", key),
                                                                  new XAttribute("SenhaAutenticacao", password));



            XElement Pagamento_data = new XElement(xn + "OrdemPagamento",
                                                   new XAttribute("Codigo", this.OrderNumber));


            EstabelecimentoComercial_data.Add(Pagamento_data);
            xmlRoot.Add(EstabelecimentoComercial_data);

            XElement Consumidor = new XElement(xn + "Consumidor");
            Pagamento_data.Add(Consumidor);

            XElement DetalhesPessoaisDoConsumidor = new XElement(xn + "DetalhesPessoaisDoConsumidor");
            Consumidor.Add(DetalhesPessoaisDoConsumidor);

            string DistributorName = DistributorProfileModelHelper.DistributorName(DistributorProfileModel);
            DetalhesPessoaisDoConsumidor.Add(new XElement(xn + "PessoaFisica", new XAttribute("Nome", null != DistributorName ? DistributorName : string.Empty)));

            XElement Emails = new XElement(xn + "Emails");
            Consumidor.Add(Emails);

            Emails.Add(new XElement(xn + "Email", new XAttribute("Endereco", null != myCart.EmailAddress ? myCart.EmailAddress : string.Empty)));


            XElement Telefones = new XElement(xn + "Telefones");
            Consumidor.Add(Telefones);

            Telefones.Add(new XElement(xn + "Telefone", new XAttribute("Tipo", "1"),
                                       new XAttribute("CodigoPais", "55"),
                                       new XAttribute("DDD", null != myCart.DeliveryInfo.Address.AreaCode ? myCart.DeliveryInfo.Address.AreaCode : string.Empty),
                                       new XAttribute("Numero", null != myCart.DeliveryInfo.Address.Phone ? myCart.DeliveryInfo.Address.Phone : string.Empty)));

            XElement EnderecoCobranca = new XElement(xn + "EnderecoCobranca", "");
            Pagamento_data.Add(EnderecoCobranca);



            string address = string.Empty;
            if (myCart.DeliveryInfo.Address.Address.Line1 != null && myCart.DeliveryInfo.Address.Address.Line1.Length > 60)
            {
                address = myCart.DeliveryInfo.Address.Address.Line1.Substring(0, 60);
            }
            else
            {
                address = myCart.DeliveryInfo.Address.Address.Line1;
            }


            EnderecoCobranca.Add(new XElement(xn + "Endereco", new XAttribute("Logradouro", null != myCart.DeliveryInfo.Address.Address.Line1 ? address : string.Empty),
                                              new XAttribute("Numero", ""),
                                              new XAttribute("Cep", null != myCart.DeliveryInfo.Address.Address.PostalCode ? myCart.DeliveryInfo.Address.Address.PostalCode : string.Empty),
                                              new XAttribute("Complemento", ""),
                                              new XAttribute("Bairro", null != myCart.DeliveryInfo.Address.Address.Line2 ? myCart.DeliveryInfo.Address.Address.Line2 : string.Empty),
                                              new XAttribute("Cidade", null != myCart.DeliveryInfo.Address.Address.City ? myCart.DeliveryInfo.Address.Address.City : string.Empty),
                                              new XAttribute("UF", null != myCart.DeliveryInfo.Address.Address.StateProvinceTerritory ? myCart.DeliveryInfo.Address.Address.StateProvinceTerritory : string.Empty),
                                              new XAttribute("Pais", "BRAZIL")));


            XElement EnderecoEntrega = new XElement(xn + "EnderecoEntrega", "");
            Pagamento_data.Add(EnderecoEntrega);


            EnderecoEntrega.Add(new XElement(xn + "Endereco", new XAttribute("Logradouro", null != myCart.DeliveryInfo.Address.Address.Line1 ? address : string.Empty),
                                             new XAttribute("Numero", ""),
                                             new XAttribute("Cep", null != myCart.DeliveryInfo.Address.Address.PostalCode ? myCart.DeliveryInfo.Address.Address.PostalCode : string.Empty),
                                             new XAttribute("Complemento", ""),
                                             new XAttribute("Bairro", null != myCart.DeliveryInfo.Address.Address.Line2 ? myCart.DeliveryInfo.Address.Address.Line2 : string.Empty),
                                             new XAttribute("Cidade", null != myCart.DeliveryInfo.Address.Address.City ? myCart.DeliveryInfo.Address.Address.City : string.Empty),
                                             new XAttribute("UF", null != myCart.DeliveryInfo.Address.Address.StateProvinceTerritory ? myCart.DeliveryInfo.Address.Address.StateProvinceTerritory : string.Empty),
                                             new XAttribute("Pais", "BRAZIL")));

            #region Items

            XElement ItemsDaOrdem = new XElement(xn + "ItensDaOrdem");
            Pagamento_data.Add(ItemsDaOrdem);

            // Fill order items section


            foreach (var item in myCart.ShoppingCartItems)
            {
                ItemsDaOrdem.Add(new XElement(xn + "Item", new XAttribute("Codigo", item.ID),
                                              new XAttribute("Valor", Math.Round((item.DiscountPrice / item.Quantity), 2)),
                                              new XAttribute("Quantidade", item.Quantity),
                                              new XAttribute("Descricao", item.Description)));
            }
            OrderTotals_V01 totals = myCart.Totals as OrderTotals_V01;
            //ItemsDaOrdem.Add(new XElement(xn + "Item", new XAttribute("Codigo", "01"),
            //                                      new XAttribute("Valor", myCart.Totals.DiscountedItemsTotal),
            //                                      new XAttribute("Quantidade", 1),
            //                                      new XAttribute("Descricao", "Desconto")));

            ItemsDaOrdem.Add(new XElement(xn + "Item", new XAttribute("Codigo", "02"),
                                          new XAttribute("Valor", null != totals ? totals.TaxAmount : 0),
                                          new XAttribute("Quantidade", 1),
                                          new XAttribute("Descricao", "Impostos")));

            Charge_V01 pHCharge      = new Charge_V01();
            Charge_V01 freightCharge = new Charge_V01();
            if (null != totals && null != totals.ChargeList)
            {
                pHCharge      = GetCharge(totals.ChargeList, ChargeTypes.PH);
                freightCharge = GetCharge(totals.ChargeList, ChargeTypes.FREIGHT);
            }

            ItemsDaOrdem.Add(new XElement(xn + "Item", new XAttribute("Codigo", "03"),
                                          new XAttribute("Valor", (null != pHCharge ? pHCharge.Amount : 0) + (null != freightCharge ? freightCharge.Amount : 0)),
                                          new XAttribute("Quantidade", 1),
                                          new XAttribute("Descricao", "Manuseio")));

            ItemsDaOrdem.Add(new XElement(xn + "Item", new XAttribute("Codigo", "04"),
                                          new XAttribute("Valor", taxBrazil),
                                          new XAttribute("Quantidade", 1),
                                          new XAttribute("Descricao", "Tarifa Bancaria")));


            #endregion



            XElement Pagamento = new XElement(xn + "Pagamento", new XAttribute("ValorTotal", (null != myCart.Totals ? _orderAmount : 0) + taxBrazil),
                                              new XAttribute("Data", System.DateTime.Now.Date.ToString("yyyy-MM-dd")),
                                              new XAttribute("Batch", "False"),
                                              new XAttribute("Email", null != myCart.EmailAddress ? myCart.EmailAddress : string.Empty));
            Pagamento_data.Add(Pagamento);

            XElement DetalheDoMeioDePagamento = new XElement(xn + "DetalheDoMeioDePagamento", new XAttribute("MeioPagamento", "BLT"));
            Pagamento.Add(DetalheDoMeioDePagamento);

            DateTime   currentDate;
            OrderMonth orderMonth = new OrderMonth(myCart.CountryCode);
            currentDate = orderMonth.CurrentOrderMonth;

            var orderType = "RSO";
            if (myCart.OrderCategory == ServiceProvider.CatalogSvc.OrderCategoryType.ETO)
            {
                orderType = "ETO";
            }
            else if (myCart.OrderCategory == ServiceProvider.CatalogSvc.OrderCategoryType.APF)
            {
                orderType = "APF";
            }
            _installmentsConfiguration = InstallmentsProvider.GetInstallmentsConfiguration(myCart.CountryCode, new DateTime(currentDate.Year, currentDate.Month, 1), orderType);

            if (_installmentsConfiguration == null)
            {
                DateTime today = DateTime.Today;
                currentDate = new DateTime(today.Year, today.Month, 1).AddMonths(1).AddDays(-1);
            }


            DetalheDoMeioDePagamento.Add(new XElement(xn + "Boleto", new XAttribute("Banco", "237"),
                                                      new XAttribute("DataVencimento", (_installmentsConfiguration == null) ? currentDate.ToString("yyyy-MM-dd") : _installmentsConfiguration.TicketDueDate.ToString("yyyy-MM-dd")),
                                                      new XAttribute("NossoNumero", this.OrderNumber.Remove(0, 2)),
                                                      new XAttribute("Instrucoes",
                                                                     "Nao aceitar este boleto apos a data de vencimento # ** Tarifa Bancaria:R$ 0,90 # ** Valor da Nota Fiscal: " + _orderAmount + " ")));

            XElement Parcelamento = new XElement(xn + "Parcelamento");
            Pagamento.Add(Parcelamento);

            Parcelamento.Add(new XElement(xn + "Parcelas", new XAttribute("Quantidade", "1"),
                                          new XAttribute("Juros", "00.00"),
                                          new XAttribute("TipoJuros", "Aquirer"),
                                          new XAttribute("FormaParcelamento", "Integral")));

            XElement Setup = new XElement(xn + "Setup", "");
            Pagamento_data.Add(Setup);

            Setup.Add(new XElement(xn + "PostRetorno", new XAttribute("Url", (string.Format("{0}?Agency=BankSlip", returnUrl)))));

            String xmlReadyToSend;
            xmlReadyToSend = xmlToSend.Declaration.ToString() + xmlToSend.Root.ToString();
            return(xmlReadyToSend);

            #endregion
        }
예제 #6
0
        public static DistributorOrderingProfile GetDistributorOrderingProfile(Core.DistributorProvider.DistributorSvc.Distributor_V01 distributorV01,
                                                                               string loggedInCountry)
        {
            if (distributorV01 == null)
            {
                return(null);
            }
            string referenceNumber      = string.IsNullOrEmpty(distributorV01.ReferenceNumber) ? string.Empty : distributorV01.ReferenceNumber;
            int    CNCustomorProfileID  = 0;
            int    CNStoreID            = 0;
            string CNCustType           = string.Empty;
            string CNCustCategoryType   = string.Empty;
            string CNStoreProvince      = string.Empty;
            int    CNAPFStatus          = 4;
            var    IsPayByPhoneEnabled  = false;
            var    isTermConditionAlert = true;

            if (referenceNumber != string.Empty)
            {
                string[] CNParts = referenceNumber.Split(',');
                if (CNParts.Length > 0)
                {
                    int.TryParse(CNParts[0], out CNCustomorProfileID);
                    if (CNParts.Length > 1)
                    {
                        int.TryParse(CNParts[1], out CNStoreID);
                    }
                    if (CNParts.Length > 2)
                    {
                        CNCustType = CNParts[2];
                    }
                    if (CNParts.Length > 3)
                    {
                        CNCustCategoryType = CNParts[3];
                    }
                    if (CNParts.Length > 4)
                    {
                        CNStoreProvince = CNParts[4];
                    }
                    if (CNParts.Length > 5)
                    {
                        int.TryParse(CNParts[5], out CNAPFStatus);
                    }
                    if (CNParts.Length > 6)
                    {
                        bool.TryParse(CNParts[6], out IsPayByPhoneEnabled);
                    }
                    if (CNParts.Length > 7)
                    {
                        bool.TryParse(CNParts[7], out isTermConditionAlert);
                    }
                }
            }
            var distributorProfile = new DistributorOrderingProfile
            {
                Id             = distributorV01.ID,
                CantBuy        = distributorV01.CantBuy,
                StaticDiscount =
                    decimal.Parse(double.IsNaN(distributorV01.StaticDiscount)
                                          ? "0"
                                          : distributorV01.StaticDiscount.ToString()),
                TodaysMagazine       = distributorV01.TodaysMagazine,
                HardCashOnly         = distributorV01.HardCashOnly,
                ApfDueDate           = distributorV01.AnnualProcessingFeeDue,
                IsDistributorBlocked =
                    distributorV01.DRFraudStatusFlags != null &&
                    distributorV01.DRFraudStatusFlags.IsDistributorblocked,
                IsSponsorBlocked =
                    distributorV01.DRFraudStatusFlags != null && distributorV01.DRFraudStatusFlags.IsSponsorBlocked,
                OrderSubType       = distributorV01.DSSubType, //DetermineOrderSubType(distributorV01.DSSubType),
                TinList            = ObjectMappingHelper.Instance.GetToDistributor(distributorV01.TinList),
                BirthDate          = distributorV01.BirthDate,
                DistributorVolumes = distributorV01.DistributorVolumes == null ? null : (from v in distributorV01.DistributorVolumes select ObjectMappingHelper.Instance.GetToDistributor(v)).ToList(),
                Addresses          = ObjectMappingHelper.Instance.GetToCommon(distributorV01.Addresses),
                ShowAllInventory   = HLConfigManager.Configurations.DOConfiguration.InventoryViewDefault == 0,
                TrainingFlag       =
                    !string.IsNullOrEmpty(distributorV01.TrainingFlag.ToString()) && distributorV01.TrainingFlag,
                CantBuyReasons = distributorV01.CantBuyReasons != null?distributorV01.CantBuyReasons.ToList() : null,
                                     SPQualificationDate = distributorV01.SPQualDate != null && distributorV01.SPQualDate.HasValue ? distributorV01.SPQualDate : DateTime.Now,
                                     ReferenceNumber     = referenceNumber,
                                     // ADDED for China DO
                                     CNCustomorProfileID = CNCustomorProfileID,
                                     CNStoreID           = CNStoreID,
                                     CNCustType          = CNCustType,
                                     CNCustCategoryType  = CNCustCategoryType,
                                     IsPC                 = CNCustCategoryType.Equals("PC") && CNCustType.Equals("CS"),
                                     CNStoreProvince      = CNStoreProvince,
                                     CNAPFStatus          = CNAPFStatus,
                                     PhoneNumbers         = distributorV01.PhoneNumbers == null ? null : (from p in distributorV01.PhoneNumbers select ObjectMappingHelper.Instance.GetToDistributor(p)).ToList(),
                                     IsPayByPhoneEnabled  = IsPayByPhoneEnabled,
                                     IsTermConditionAlert = isTermConditionAlert,
                                     ApplicationDate      = distributorV01.ApplicationDate ?? new DateTime(1900, 1, 1),
                                     SponsorID            = distributorV01.SponsorID,
                                     OrderRestrictions    = distributorV01.OrderRestrictions,
                                     EmailAddresses       = distributorV01.EmailAddresses,
            };

            if (distributorProfile.PhoneNumbers == null)
            {
                var dsDetails = MyHerbalife3.Core.DistributorProvider.Providers.DistributorProvider.GetDetailedDistributor(
                    distributorV01.ID, MyHerbalife3.Core.DistributorProvider.DistributorSvc.DistributorDetailType.Phones);
                if (dsDetails != null && dsDetails.Phones != null && dsDetails.Phones.Count() > 0)
                {
                    distributorProfile.PhoneNumbers = (from p in dsDetails.Phones select ObjectMappingHelper.Instance.GetToDistributor(p)).ToList();
                }
            }
            var spouseLocalInfo = distributorV01.SpouseLocalName;

            if (spouseLocalInfo != null)
            {
                distributorProfile.SpouseLocalName = DistributorProfileModelHelper.FormatFullName(spouseLocalInfo.First, spouseLocalInfo.Last, null);
            }

            return(distributorProfile);
        }