Exemplo n.º 1
0
        protected void btnAddToCart_Click(object sender, EventArgs e)
        {
            if (Session["ClientOrderData"] == null)
            {
                clientData          = new ClientCartContext();
                clientData.CartInfo = new Cart();
            }
            else
            {
                clientData = (ClientCartContext)Session["ClientOrderData"];
                if (clientData.CartInfo == null)
                {
                    clientData.CartInfo = new CSBusiness.ShoppingManagement.Cart();
                    clientData.CartInfo.ShippingAddress = new CSBusiness.CustomerManagement.Address();
                }
            }
            bool showPopUP = false;

            if (Session["skuID_AddtoCart"] != null && Session["skuID_AddtoCart"].ToString() != "") // adding dynamic product to cart based on selected size of product
            {
                var id = Convert.ToInt32(Session["skuID_AddtoCart"].ToString());
                if (OrderHelper.AutoshipCart() && id == 120)
                {
                    showPopUP = true;
                }
                else
                {
                    clientData.CartInfo.AddItem(id, Convert.ToInt32(ddlQuantity.SelectedValue), true, false);
                }
            }
            else if (SkuId > 0)
            {
                clientData.CartInfo.AddItem(SkuId, Convert.ToInt32(ddlQuantity.SelectedValue), true, false);
            }
            else if (skuID > 0)
            {
                clientData.CartInfo.AddItem(skuID, Convert.ToInt32(ddlQuantity.SelectedValue), true, false);
            }



            //clientData.CartInfo.ShippingMethod = UserShippingMethodType.Rush;
            SiteBasePage.SetCatalogShipping();
            clientData.CartInfo.Compute();
            clientData.CartInfo.ShowQuantity = false;

            Session["ClientOrderData"] = clientData;

            if (showPopUP)
            {
                mpePopup.Show();
            }
            else
            {
                mpeMiniCart.Show();
                ucMiniCart.CallBindControl();
                //Response.Redirect("cart.aspx");
            }
        }
Exemplo n.º 2
0
        private void BindData(DateTime?dte1, DateTime?dte2, int versionId, int pathId)
        {
            List <Triplet <string, string, string> > itemList = new List <Triplet <string, string, string> >();

            using (SqlDataReader drresult1 = new SiteBasePage().GetOrderBookSummary(dte1, dte2, versionId, pathId))
            {
                while (drresult1.Read())
                {
                    ltBookRebate.Text = drresult1["TotalOrders"].ToString();
                }
            }

            using (SqlDataReader drResult = new OrderManager().GetOrderSummary(dte1, dte2, versionId, pathId))
            {
                while (drResult.Read())
                {
                    decimal totalRevenue = Convert.ToDecimal(drResult["TotalRevenue"]);
                    totalCount = Convert.ToInt32(drResult["TotalOrders"].ToString());
                    decimal averageOrderVal = 0;

                    if (totalCount > 0)
                    {
                        averageOrderVal = Math.Round(totalRevenue / Convert.ToInt32(totalCount), 2);
                    }


                    itemList.Add(new Triplet <string, string, string>("<span style='color:red;font-weight:bold'>Total Revenue</span>", "<span style='color:red;font-weight:bold'>" + String.Format("{0:C}", drResult["TotalRevenue"]) + "</span>", String.Empty));
                    itemList.Add(new Triplet <string, string, string>("Total Orders", string.Format("{0:##,##}", totalCount), String.Empty));
                    itemList.Add(new Triplet <string, string, string>("Average Order Value", String.Format("{0:C}", averageOrderVal), String.Empty));
                    itemList.Add(new Triplet <string, string, string>("&nbsp", "&nbsp", "&nbsp "));

                    itemList.Add(new Triplet <string, string, string>("Product Revenue", String.Format("{0:C}", drResult["ProductRevenue"]), GetPercentage(Convert.ToDecimal(drResult["ProductRevenue"]), totalRevenue)));
                    itemList.Add(new Triplet <string, string, string>("Shipping Revenue", String.Format("{0:C}", drResult["ShippingRevenue"]), GetPercentage(Convert.ToDecimal(drResult["ShippingRevenue"]), totalRevenue)));
                    itemList.Add(new Triplet <string, string, string>("Sales Tax Revenue", String.Format("{0:C}", drResult["SalesTaxRevenue"]), GetPercentage(Convert.ToDecimal(drResult["SalesTaxRevenue"]), totalRevenue)));
                    itemList.Add(new Triplet <string, string, string>("Orders With Upsells", string.Format("{0:##,##}", drResult["UpsellItems"]), GetPercentage(Convert.ToDecimal(drResult["UpsellItems"]), decimal.Parse(totalCount.ToString()))));

                    itemList.Add(new Triplet <string, string, string>("&nbsp", "&nbsp", "&nbsp "));

                    itemList.Add(new Triplet <string, string, string>("Orders w/ 1 Upsell", string.Format("{0:##,##}", drResult["oneUpSellCount"]), GetPercentage(Convert.ToDecimal(drResult["oneUpSellCount"]), decimal.Parse(totalCount.ToString()))));
                    itemList.Add(new Triplet <string, string, string>("Orders w/ 2 Upsell", string.Format("{0:##,##}", drResult["TwoUpSellCount"]), GetPercentage(Convert.ToDecimal(drResult["TwoUpSellCount"]), decimal.Parse(totalCount.ToString()))));
                    itemList.Add(new Triplet <string, string, string>("Orders w/ 3 Upsell", string.Format("{0:##,##}", drResult["ThreeUpSellCount"]), GetPercentage(Convert.ToDecimal(drResult["ThreeUpSellCount"]), decimal.Parse(totalCount.ToString()))));
                    itemList.Add(new Triplet <string, string, string>("Orders w/ 4 Upsell", string.Format("{0:##,##}", drResult["FourUpSellCount"]), GetPercentage(Convert.ToDecimal(drResult["FourUpSellCount"]), decimal.Parse(totalCount.ToString()))));
                    itemList.Add(new Triplet <string, string, string>("Orders w/ 5 Upsell", string.Format("{0:##,##}", drResult["FiveUpSellCount"]), GetPercentage(Convert.ToDecimal(drResult["FiveUpSellCount"]), decimal.Parse(totalCount.ToString()))));
                    itemList.Add(new Triplet <string, string, string>("Orders w/ 6 Upsell", string.Format("{0:##,##}", drResult["SixUpSellCount"]), GetPercentage(Convert.ToDecimal(drResult["SixUpSellCount"]), decimal.Parse(totalCount.ToString()))));
                } //end of while loop



                rptTotals.DataSource = itemList;
                rptTotals.DataBind();

                drResult.NextResult();
                rptTotalsItem.DataSource = drResult;
                rptTotalsItem.DataBind();
            }//end of using
        }
        protected void rptProducts3_ItemCommand(object sender, RepeaterCommandEventArgs e)
        {
            Sku cartItem = e.Item.DataItem as Sku;

            switch (e.CommandName)
            {
            case "ViewProduct":
            {
                int          skuId          = Convert.ToInt32(e.CommandArgument);
                DropDownList ddlQuantity    = e.Item.FindControl("ddlQuantity") as DropDownList;
                LinkButton   product_anchor = e.Item.FindControl("product_anchor") as LinkButton;
                if (skuId == 161)
                {
                    Response.Redirect(product_anchor.PostBackUrl);
                }
                else
                {
                    if (Session["ClientOrderData"] == null)
                    {
                        clientData          = new ClientCartContext();
                        clientData.CartInfo = new Cart();
                    }
                    else
                    {
                        clientData = (ClientCartContext)Session["ClientOrderData"];
                        if (clientData.CartInfo == null)
                        {
                            clientData.CartInfo = new CSBusiness.ShoppingManagement.Cart();
                            clientData.CartInfo.ShippingAddress = new CSBusiness.CustomerManagement.Address();
                        }
                    }



                    clientData.CartInfo.AddItem(skuId, 1, true, false);
                    //clientData.CartInfo.ShippingMethod = UserShippingMethodType.Rush;
                    SiteBasePage.SetCatalogShipping();
                    clientData.CartInfo.Compute();
                    clientData.CartInfo.ShowQuantity = false;

                    Session["ClientOrderData"] = clientData;
                    //Response.Redirect("Cart.aspx");
                    mpeMiniCart.Show();
                    ucMiniCart.CallBindControl();
                }
            }
            break;

            default:
                break;
            }
        }
Exemplo n.º 4
0
        protected void rptShoppingCart_OnItemCommand(object sender, RepeaterCommandEventArgs e)
        {
            switch (e.CommandName)
            {
            case "delete":
            {
                int skuToRemove = Convert.ToInt32(e.CommandArgument);
                CartContext.CartInfo.UpdateSku(skuToRemove);
                Sku sku = new SkuManager().GetSkuByID(skuToRemove);
                sku.LoadAttributeValues();
                var removeSkus = sku.GetAttributeValue <string>("removeSku", string.Empty).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string removeSku in removeSkus)
                {
                    if (CartContext.CartInfo.SkuExists(int.Parse(removeSku)))
                    {
                        CartContext.CartInfo.UpdateSku(int.Parse(removeSku));
                        Sku skuRemove = new SkuManager().GetSkuByID(int.Parse(removeSku));
                        skuRemove.LoadAttributeValues();
                        var replaceSkus = skuRemove.GetAttributeValue <string>("replaceSku", string.Empty).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string replaceSku in replaceSkus)
                        {
                            OrderHelper.ChangeCart(replaceSku);
                        }
                    }
                }
                bool flag = false;
                foreach (Sku sku1 in ClientOrderData.CartInfo.CartItems)
                {
                    if ((sku1.SkuId >= 138 && sku1.SkuId <= 152) || sku1.SkuId == 161)         // g2 individual products
                    {
                        flag = true;
                    }
                }
                if (flag)
                {
                    SiteBasePage.SetCatalogShipping();
                }
                BindControls();
                if (UpdateCart != null)
                {
                    UpdateCart(sender, e);
                }
                Response.Redirect(Request.RawUrl);
            }
            break;

            default:
                break;
            }
        }
Exemplo n.º 5
0
        public void SaveData()
        {
            if (Page.IsValid)
            {
                //Set Customer Information
                Address shippingAddress = new Address();
                shippingAddress.FirstName       = CommonHelper.fixquotesAccents(txtShippingFirstName.Text);
                shippingAddress.LastName        = CommonHelper.fixquotesAccents(txtShippingLastName.Text);
                shippingAddress.Address1        = CommonHelper.fixquotesAccents(txtShippingAddress1.Text);
                shippingAddress.Address2        = CommonHelper.fixquotesAccents(txtShippingAddress2.Text);
                shippingAddress.City            = CommonHelper.fixquotesAccents(txtShippingCity.Text);
                shippingAddress.StateProvinceId = Convert.ToInt32(ddlShippingState.SelectedValue);
                shippingAddress.CountryId       = Convert.ToInt32(ddlShippingCountry.SelectedValue);
                shippingAddress.ZipPostalCode   = txtShippingZipCode.Text;

                Customer CustData = new Customer();
                CustData.FirstName       = CommonHelper.fixquotesAccents(txtShippingFirstName.Text);
                CustData.LastName        = CommonHelper.fixquotesAccents(txtShippingLastName.Text);
                CustData.PhoneNumber     = txtPhoneNumber.Text;
                CustData.Email           = CommonHelper.fixquotesAccents(txtEmail.Text);
                CustData.Username        = CommonHelper.fixquotesAccents(txtEmail.Text);
                CustData.BillingAddress  = shippingAddress;
                CustData.ShippingAddress = shippingAddress;

                //Set the Client Order objects
                //Set the Client Order objects
                ClientCartContext contextData = (ClientCartContext)Session["ClientOrderData"];

                if (SiteBasePage.IsPOBoxAddress(shippingAddress.Address1 + " " + shippingAddress.Address2))
                {
                    if (contextData.OrderAttributeValues == null)
                    {
                        contextData.OrderAttributeValues = new Dictionary <string, CSBusiness.Attributes.AttributeValue>();
                    }

                    contextData.OrderAttributeValues.AddOrUpdateAttributeValue("IsPOBoxShipping", new AttributeValue(true));
                }

                if (contextData == null) // indicates session timeout
                {
                    Response.Redirect("CheckoutSessionExpired.aspx?page=index.aspx", true);
                }

                contextData.CustomerInfo      = CustData;
                contextData.CartAbandonmentId = CSResolve.Resolve <ICustomerService>().InsertCartAbandonment(CustData, contextData);
                Session["ClientOrderData"]    = contextData;
            }
        }
Exemplo n.º 6
0
        protected void ddlQty_SelectedIndexChanged1(object sender, EventArgs e)
        {
            DropDownList ddl = sender as DropDownList;
            RepeaterItem ri  = ddl.NamingContainer as RepeaterItem;

            if (ri != null)
            {
                int skuid = -1;
                int qty   = 1;

                TextBox tb = ri.FindControl("txtQuantity") as TextBox;
                if (tb != null)
                {
                    tb.Text = ddl.SelectedValue;
                    qty     = Convert.ToInt32(ddl.SelectedValue);
                }

                HiddenField hidSkuId = ri.FindControl("hidSkuId") as HiddenField;
                if (hidSkuId != null)
                {
                    skuid = int.Parse((hidSkuId.Value));
                }

                if (skuid > 0)
                {
                    ClientCartContext cartContext = ClientOrderData;
                    cartContext.CartInfo.AddOrUpdate(skuid, qty, true, false, false);
                    cartContext.CartInfo.Compute();
                    ClientOrderData = cartContext;
                }
            }
            bool flag = false;

            foreach (Sku sku in ClientOrderData.CartInfo.CartItems)
            {
                if (sku.SkuId >= 138) // g2 individual products
                {
                    flag = true;
                }
            }
            if (flag)
            {
                SiteBasePage.SetCatalogShipping();
            }
            BindControls();
        }
Exemplo n.º 7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string[] parts = Request.Url.AbsolutePath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            if (Request["oid"] != null)
            {
                orderId = Convert.ToInt32(Request["oid"].ToString());
            }
            else
            {
                orderId = CartContext.OrderId;
            }
            Order orderData = CSResolve.Resolve <IOrderService>().GetOrderDetails(orderId, true);

            if (orderData.OrderStatusId == 2)
            {
                // this means that  customer clicked back, so should be directed to receipt page.
                Response.Redirect("receipt.aspx");
            }
            if (!IsPostBack)
            {
                CSWebBase.SiteBasePage.TempOrderFix(CartContext, orderData.OrderStatusId);

                //new CSWeb.FulfillmentHouse.DataPakTax().CalculateTax(orderId);

                Dictionary <string, AttributeValue> orderAttributes = new Dictionary <string, AttributeValue>();

                if (orderData.CreditInfo.CreditCardNumber.Equals("4444333322221111"))
                {
                    CSResolve.Resolve <IOrderService>().UpdateOrderAttributes(orderData.OrderId, orderAttributes, 7);

                    Response.Redirect("receipt.aspx");
                }
                else if (orderData.CreditInfo.CreditCardNumber.Equals("4111111111111111") && !orderData.CreditInfo.CreditCardCSC.Equals("999"))
                {
                    CSResolve.Resolve <IOrderService>().UpdateOrderAttributes(orderData.OrderId, orderAttributes, 7);

                    Response.Redirect(string.Format("carddecline.aspx?returnUrl={0}", string.Concat("/", string.Join("/", parts, 0, parts.Length - 1), "/receipt.aspx")), true);
                }

                if (orderData.CreditInfo.CreditCardNumber.Equals("1111222233334444"))
                {
                    if (orderData.OrderStatusId == 4)
                    {
                    }
                    else
                    {
                        string message = OrderHelper.FinalizePayPalTransaction((ClientCartContext)Session["ClientOrderData"]);

                        if (!string.IsNullOrEmpty(message))
                        {
                            lblMessage.Text = message;
                        }
                        else
                        {
                            lblMessage.Text = string.Empty;
                            SiteBasePage.ResetPayPal();
                            Response.Redirect("receipt.aspx", true);
                        }
                    }
                }

                bool authSuccess = false;

                // Check if payment gateway service is enabled or not.
                if (CSFactory.GetCacheSitePref().PaymentGatewayService)
                {
                    try
                    {
                        authSuccess = orderData.OrderStatusId == 4 ||
                                      orderData.OrderStatusId == 5 || // fulfillment failure (fulfillment was attempted after payment success), so don't charge again.
                                      OrderHelper.AuthorizeOrder(orderId);
                    }
                    catch (Exception ex)
                    {
                        CSCore.CSLogger.Instance.LogException("AuthorizeOrder - auth error - orderid: " + Convert.ToString(orderId), ex);

                        throw;
                    }
                }
                else
                {
                    authSuccess = true;
                }

                if (authSuccess)
                {
                    // Check if fulfillment gateway service is enabled or not.
                    if (CSFactory.GetCacheSitePref().FulfillmentHouseService)
                    {
                        try
                        {
                            new CSWeb.FulfillmentHouse.Moulton().PostOrder(orderId);
                        }
                        catch (Exception ex)
                        {
                            CSCore.CSLogger.Instance.LogException("AuthorizeOrder - fulfillment post error - orderid: " + Convert.ToString(orderId), ex);

                            throw;
                        }

                        if (Request.QueryString != null)
                        {
                            Response.Redirect("receipt.aspx?" + Request.QueryString);
                        }
                        else
                        {
                            Response.Redirect("receipt.aspx");
                        }
                    }
                }
                else
                {
                    Response.Redirect(string.Format("carddecline.aspx?returnUrl={0}", string.Concat("/", string.Join("/", parts, 0, parts.Length - 1), "/receipt.aspx")), true);
                }
            }
            Response.Redirect("receipt.aspx");
        }
Exemplo n.º 8
0
        public string GetRequest(Order orderItem)
        {
            string Prefix        = config.Attributes["MVISPrefix"].Value.ToUpper();
            string DNIS          = config.Attributes["DNIS"].Value.ToUpper();
            string NoSoliciting  = config.Attributes["NO_SOLICITING"].Value.ToUpper();
            string PaymentType   = config.Attributes["PaymentType"].Value.ToUpper();    // AUTH OR SALE or BLANK
            string PaymentMethod = config.Attributes["PAYMENT_METHOD"].Value.ToUpper(); // CC or CK (Check)
            string EmpNumber     = config.Attributes["EmpNumber"].Value.ToUpper();

            string CustomerNumber       = Prefix + "-" + orderItem.CustomerId; // BillingAddress.AddressId.ToString();
            List <StateProvince> states = StateManager.GetAllStates(0);
            String strXml    = String.Empty;
            string lineItems = String.Empty;

            orderItem.LoadAttributeValues();
            using (StringWriter str = new StringWriter())
            {
                using (XmlTextWriter xml = new XmlTextWriter(str))
                {
                    string sid  = "default";
                    string afid = string.Empty;
                    string cid  = string.Empty;
                    string adid = string.Empty;
                    if (orderItem.CustomFiledInfo != null)
                    {
                        if (orderItem.CustomFiledInfo.Count > 0)
                        {
                            try
                            {
                                if (orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "afid") != null)
                                {
                                    afid = orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "afid").FieldValue.ToString();
                                }
                                if (orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "sid") != null)
                                {
                                    sid = orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "sid").FieldValue.ToString();
                                }
                                if (orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "adid") != null)
                                {
                                    adid = orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "adid").FieldValue.ToString();
                                }
                                if (orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "cid") != null)
                                {
                                    cid = orderItem.CustomFiledInfo.Find(x => x.FieldName.ToLower() == "cid").FieldValue.ToString();
                                }
                            }
                            catch { }
                        }
                    }

                    sid = orderItem.GetAttributeValue <string>("sid", string.Empty);

                    xml.WriteStartElement("OrderImport");
                    xml.WriteStartElement("Order");
                    xml.WriteElementString("CUSTOMER_NUMBER", CustomerNumber); // Store Billing Address ID as Customer Number
                    xml.WriteElementString("BILL_COMPANY", "");
                    xml.WriteElementString("BILL_FIRST_NAME", orderItem.CustomerInfo.BillingAddress.FirstName.Replace("&amp;", "").Replace(" &", "").Replace("'", ""));
                    xml.WriteElementString("BILL_LAST_NAME", orderItem.CustomerInfo.BillingAddress.LastName.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("BILL_ADDRESS1", orderItem.CustomerInfo.BillingAddress.Address1.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("BILL_ADDRESS2", orderItem.CustomerInfo.BillingAddress.Address2.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("BILL_CITY", orderItem.CustomerInfo.BillingAddress.City.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("CUSTOM_2", sid);
                    xml.WriteElementString("CUSTOM_1", DynamicSidDAL.GetDynamicSidData("ProjectCode", sid, orderItem.OrderId));
                    StateProvince itemBillingStateProvince = states.FirstOrDefault(x => x.StateProvinceId == Convert.ToInt32(orderItem.CustomerInfo.BillingAddress.StateProvinceId));
                    if (itemBillingStateProvince != null)
                    {
                        xml.WriteElementString("BILL_STATE", itemBillingStateProvince.Abbreviation);
                    }
                    else
                    {
                        xml.WriteElementString("BILL_STATE", string.Empty);
                    }

                    xml.WriteElementString("BILL_ZIPCODE", orderItem.CustomerInfo.BillingAddress.ZipPostalCode);
                    if (orderItem.CustomerInfo.BillingAddress.CountryId == 231)
                    {
                        xml.WriteElementString("COUNTRY", "USA");
                    }
                    else if (orderItem.CustomerInfo.BillingAddress.CountryId == 46)
                    {
                        xml.WriteElementString("COUNTRY", "CAN");
                    }
                    xml.WriteElementString("BILL_PHONE_NUMBER", orderItem.CustomerInfo.BillingAddress.PhoneNumber);
                    xml.WriteElementString("BILL_PHONE_2", "");
                    xml.WriteElementString("EMAIL", orderItem.Email);
                    xml.WriteElementString("NO_SOLICITING", NoSoliciting);

                    xml.WriteElementString("SHIP_TO_COMPANY", "");
                    xml.WriteElementString("SHIP_TO_FIRST_NAME", orderItem.CustomerInfo.ShippingAddress.FirstName.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("SHIP_TO_LAST_NAME", orderItem.CustomerInfo.ShippingAddress.LastName.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("SHIP_TO_ADDRESS1", orderItem.CustomerInfo.ShippingAddress.Address1.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("SHIP_TO_ADDRESS2", orderItem.CustomerInfo.ShippingAddress.Address2.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    xml.WriteElementString("SHIP_TO_CITY", orderItem.CustomerInfo.ShippingAddress.City.Replace("&amp;", "").Replace("&", "").Replace("'", ""));
                    StateProvince itemShippingStateProvince = states.FirstOrDefault(x => x.StateProvinceId == Convert.ToInt32(orderItem.CustomerInfo.ShippingAddress.StateProvinceId));
                    if (itemShippingStateProvince != null)
                    {
                        xml.WriteElementString("SHIP_TO_STATE", itemShippingStateProvince.Abbreviation);
                    }
                    else
                    {
                        xml.WriteElementString("SHIP_TO_STATE", string.Empty);
                    }
                    xml.WriteElementString("SHIP_TO_ZIPCODE", orderItem.CustomerInfo.ShippingAddress.ZipPostalCode);
                    if (orderItem.CustomerInfo.ShippingAddress.CountryId == 231)
                    {
                        xml.WriteElementString("SCOUNTRY", "USA");
                    }
                    else if (orderItem.CustomerInfo.ShippingAddress.CountryId == 46)
                    {
                        xml.WriteElementString("SCOUNTRY", "CAN");
                    }
                    xml.WriteElementString("SHIP_TO_PHONE", orderItem.CustomerInfo.BillingAddress.PhoneNumber);
                    xml.WriteElementString("SHIP_TO_PHONE2", "");

                    xml.WriteElementString("ORDER_DATE", orderItem.CreatedDate.ToString("MM/dd/yy"));
                    xml.WriteElementString("ORDER_NUMBER", Prefix + orderItem.OrderId.ToString());
                    xml.WriteElementString("DNIS", DNIS);
                    xml.WriteElementString("EMP_NUMBER", EmpNumber);
                    if (!string.IsNullOrEmpty(orderItem.CreditInfo.TransactionCode))
                    {
                        xml.WriteElementString("PAYMENT_TYPE", PaymentType);  // AUTH or SALE or Blank
                        xml.WriteElementString("AMOUNT_ALREADY_PAID", (orderItem.Total).ToString("N2"));
                        if (orderItem.CreditInfo.CreditCardNumber.Equals("4000000000000002") &&
                            string.IsNullOrEmpty(orderItem.CreditInfo.TransactionCode))
                        {
                            xml.WriteElementString("MERCHANT_TRANSACTION_ID", "Test");
                        }
                        else
                        {
                            xml.WriteElementString("MERCHANT_TRANSACTION_ID", orderItem.CreditInfo.TransactionCode);
                        }
                    }
                    xml.WriteElementString("PAYMENT_METHOD", PaymentMethod); // "CC" for credit card or "CK" for check/check by phone
                    xml.WriteElementString("CC_TYPE", GetCCType(orderItem.CreditInfo.CreditCardName));
                    xml.WriteElementString("CC_NUMBER", orderItem.CreditInfo.CreditCardNumber);
                    xml.WriteElementString("EXP_DATE", orderItem.CreditInfo.CreditCardExpired.ToString("MM/yy"));
                    xml.WriteElementString("CVV_CODE", orderItem.CreditInfo.CreditCardCSC);

                    xml.WriteElementString("SHIPPING_METHOD", "REG");
                    xml.WriteElementString("SHIPPING_CARRIER", "");
                    // We have both Trial as well as One Pay “In the case set Use prices and use shipping to "N."
                    string useShipping = config.Attributes["useShipping"].Value.ToUpper();
                    string usePrices   = config.Attributes["usePrices"].Value.ToUpper();
                    string useTaxes    = config.Attributes["useTaxes"].Value.ToUpper();

                    xml.WriteElementString("USE_SHIPPING", useShipping);
                    xml.WriteElementString("SHIPPING", Math.Round(orderItem.ShippingCost + orderItem.AdditionalShippingCharge, 2).ToString("N2"));
                    xml.WriteElementString("ORDER_STATE_SALES_TAX", Math.Round(orderItem.Tax, 2).ToString("N2"));
                    xml.WriteElementString("USE_PRICES", usePrices);
                    xml.WriteElementString("USE_TAXES", useTaxes);
                    xml.WriteElementString("ORDER_SUBTOTAL", Math.Round(orderItem.FullPriceSubTotal - orderItem.DiscountAmount, 2).ToString("N2"));
                    xml.WriteElementString("ORDER_TOTAL", Math.Round(orderItem.FullPriceSubTotal + orderItem.ShippingCost + orderItem.AdditionalShippingCharge + orderItem.Tax - orderItem.DiscountAmount, 2).ToString("N2"));


                    int        count            = 1;
                    SkuManager skuManager       = new SkuManager();
                    string     fieldnamePRODUCT = "PRODUCT";
                    // string fieldnameDESCRIPTION = "DESCRIPTION" + count.ToString();
                    string fieldnameQUANTITY    = "QUANTITY";
                    string fieldnamePRICE       = "PRICE";
                    string fieldnameDISCOUNT    = "DISCOUNT";
                    string fieldnameCOUPON_CODE = "COUPON_CODE";
                    string fieldnameTAXRATE     = "TAX_RATE";
                    string fieldnamePAIDPRICE   = "PAID_PRICE_PROD";
                    string fieldnameSHIPPING    = "SHIPPING";
                    //PAID_PRICE
                    Order orderCouponInfo = CSResolve.Resolve <IOrderService>().GetOrderDetails(orderItem.OrderId, true);
                    foreach (Sku Item in orderItem.SkuItems)
                    {
                        Sku sku = skuManager.GetSkuByID(Item.SkuId);
                        sku.LoadAttributeValues();
                        if (!sku.GetAttributeValue <bool>("FreeSku", false))
                        {
                            string counter = zeropad(count.ToString(), 2);
                            fieldnamePRODUCT     = "PRODUCT" + counter;
                            fieldnameQUANTITY    = "QUANTITY" + counter;
                            fieldnamePRICE       = "PRICE" + counter;
                            fieldnameDISCOUNT    = "DISCOUNT" + counter;
                            fieldnameCOUPON_CODE = "COUPON_CODE" + counter;
                            fieldnamePAIDPRICE   = "PAID_PRICE_PROD" + counter;
                            fieldnameTAXRATE     = "TAX_RATE" + counter;
                            fieldnameSHIPPING    = "SHIPPING" + counter;
                            xml.WriteElementString(fieldnamePRODUCT, GetSkuCode(sku.SkuId, orderItem.CustomerInfo.ShippingAddress.CountryId));
                            xml.WriteElementString(fieldnameQUANTITY, Item.Quantity.ToString());
                            xml.WriteElementString(fieldnamePRICE, sku.FullPrice.ToString("N2"));
                            xml.WriteElementString(fieldnameTAXRATE, SiteBasePage.CalculateTaxRate(orderItem.OrderId, Item.FullPrice).ToString());

                            if (count == 1)
                            {
                                if (orderCouponInfo.DiscountCode.Length > 0)
                                {
                                    xml.WriteElementString(fieldnamePAIDPRICE, ((sku.InitialPrice * Item.Quantity) - orderCouponInfo.DiscountAmount).ToString("N2"));
                                    xml.WriteElementString(fieldnameDISCOUNT, orderCouponInfo.DiscountAmount.ToString("n2"));
                                    xml.WriteElementString(fieldnameCOUPON_CODE, orderCouponInfo.DiscountCode);
                                }
                                else
                                {
                                    xml.WriteElementString(fieldnamePAIDPRICE, (sku.InitialPrice * Item.Quantity).ToString("N2"));
                                    xml.WriteElementString(fieldnameDISCOUNT, "");
                                    xml.WriteElementString(fieldnameCOUPON_CODE, "");
                                }
                                xml.WriteElementString(fieldnameSHIPPING, orderItem.ShippingCost.ToString("N2"));
                                xml.WriteElementString("PAID_SHIPPING_PROD01", orderItem.ShippingCost.ToString("N2"));
                                xml.WriteElementString("PAID_TAX_PROD01", Math.Round(orderItem.Tax, 2).ToString("N2"));
                            }
                            else
                            {
                                xml.WriteElementString(fieldnamePAIDPRICE, (sku.InitialPrice * Item.Quantity).ToString("N2"));
                                xml.WriteElementString(fieldnameDISCOUNT, "");
                                xml.WriteElementString(fieldnameCOUPON_CODE, "");
                            }
                            count++;
                        }
                    }

                    //if (orderCouponInfo.DiscountCode.Length > 0)
                    //{
                    //    string counter = zeropad(count.ToString(), 2);
                    //    fieldnamePRODUCT = "PRODUCT" + counter;
                    //    fieldnameQUANTITY = "QUANTITY" + counter;
                    //    fieldnamePRICE = "PRICE" + counter;
                    //    fieldnameDISCOUNT = "DISCOUNT" + counter;
                    //    fieldnameCOUPON_CODE = "COUPON_CODE" + counter;
                    //    //fieldnamePAIDPRICE = "PAID_PRICE_PROD" + counter;
                    //    //fieldnameTAXRATE = "TAX_RATE" + counter;
                    //    //fieldnameSHIPPING = "SHIPPING" + counter;
                    //    xml.WriteElementString(fieldnamePRODUCT, orderCouponInfo.DiscountCode);
                    //    xml.WriteElementString(fieldnameQUANTITY, "1");
                    //    xml.WriteElementString(fieldnamePRICE, "0");
                    //    xml.WriteElementString(fieldnameDISCOUNT, orderCouponInfo.DiscountAmount.ToString("n2"));
                    //    xml.WriteElementString(fieldnameCOUPON_CODE, orderCouponInfo.DiscountCode);
                    //    //xml.WriteElementString(fieldnameTAXRATE, "0");
                    //    //xml.WriteElementString(fieldnamePAIDPRICE, "0");
                    //    //if (count == 1)
                    //    //{
                    //    //    //xml.WriteElementString(fieldnameSHIPPING, orderItem.ShippingCost.ToString("N2"));
                    //    //    xml.WriteElementString("PAID_SHIPPING_PROD01", orderItem.ShippingCost.ToString("N2"));
                    //    //    xml.WriteElementString("PAID_TAX_PROD01", Math.Round(orderItem.Tax, 2).ToString("N2"));
                    //    //}
                    //    count++;
                    //}
                    xml.WriteEndElement();
                    xml.WriteStartElement("Settings");
                    xml.WriteElementString("MATCH_FIRST_NAME", "");
                    xml.WriteElementString("MATCH_LAST_NAME", "");
                    xml.WriteElementString("MATCH_ADDRESS", "");
                    xml.WriteElementString("MATCH_ADDRESS_2", "");
                    xml.WriteElementString("MATCH_CITY", "");
                    xml.WriteElementString("MATCH_STATE", "");
                    xml.WriteElementString("MATCH_ZIP", "");
                    xml.WriteElementString("MATCH_PHONE", "");
                    xml.WriteElementString("MATCH_EMAIL", "");
                    xml.WriteElementString("MATCH_CLIENT", "");
                    xml.WriteElementString("MATCH_CAMPAIGN", "");
                    xml.WriteElementString("API_LAYOUT_VERSION", "2");
                    xml.WriteElementString("TAX_CALCULATION_METHOD", "ITEM");
                    xml.WriteEndElement();
                    xml.WriteEndElement();
                    strXml = str.ToString();
                }
            }
            return(strXml);
        }