コード例 #1
0
        public static decimal GetFreight(ShoppingCartInfo shoppingCartItemInfo, int RegionId, bool isGroupBuy)
        {
            int     totalQuantity = 0;
            decimal freight       = 0;
            Dictionary <int, decimal> dictShippingMode = new Dictionary <int, decimal>();

            foreach (ShoppingCartItemInfo item in shoppingCartItemInfo.LineItems)
            {
                totalQuantity += item.Quantity;
                if ((!shoppingCartItemInfo.IsFreightFree || !item.IsfreeShipping || isGroupBuy))
                {
                    if (item.TemplateId > 0)
                    {
                        if (dictShippingMode.ContainsKey(item.TemplateId))
                        {
                            dictShippingMode[item.TemplateId] += item.Weight * item.Quantity;
                        }
                        else
                        {
                            dictShippingMode.Add(item.TemplateId, item.Weight * item.Quantity);
                        }
                    }
                }
            }
            foreach (var item in dictShippingMode)
            {
                ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(item.Key);
                freight += ShoppingProcessor.CalcFreight(RegionId, item.Value, shippingMode);
            }
            return(freight);
        }
コード例 #2
0
        void FillOrderShippingMode(OrderInfo orderInfo, ShoppingCartInfo shoppingCartInfo)
        {
            orderInfo.ShippingRegion = dropRegions.SelectedRegions;
            orderInfo.Address        = Globals.HtmlEncode(txtAddress.Text);
            orderInfo.ZipCode        = txtZipcode.Text;
            orderInfo.ShipTo         = Globals.HtmlEncode(txtShipTo.Text);
            orderInfo.TelPhone       = txtTelPhone.Text;
            orderInfo.CellPhone      = txtCellPhone.Text;
            if (!string.IsNullOrEmpty(inputShippingModeId.Value))
            {
                orderInfo.ShippingModeId = int.Parse(inputShippingModeId.Value, NumberStyles.None);
            }
            if (dropRegions.GetSelectedRegionId().HasValue)
            {
                orderInfo.RegionId = dropRegions.GetSelectedRegionId().Value;
            }
            ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(orderInfo.ShippingModeId, true);

            if (shippingMode != null)
            {
                orderInfo.ModeName        = shippingMode.Name;
                orderInfo.Freight         = ShoppingProcessor.CalcFreight(orderInfo.RegionId, shoppingCartInfo.Weight, shippingMode);
                orderInfo.AdjustedFreight = orderInfo.Freight;
            }
        }
コード例 #3
0
        /// <summary>
        /// 计算重量
        /// </summary>
        /// <param name="context"></param>
        void CalculateFreight(HttpContext context)
        {
            decimal freight = 0M;

            if (!string.IsNullOrEmpty(context.Request.Params["ModeId"]) && !string.IsNullOrEmpty(context.Request["RegionId"]))
            {
                int modeId = int.Parse(context.Request["ModeId"], NumberStyles.None);

                int totalWeight = int.Parse(context.Request["Weight"], NumberStyles.None);

                int regionId = int.Parse(context.Request["RegionId"], NumberStyles.None);

                ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(modeId, true);

                freight = ShoppingProcessor.CalcFreight(regionId, totalWeight, shippingMode);
            }

            StringBuilder builder = new StringBuilder();

            builder.Append("{");
            builder.Append("\"Status\":\"OK\",");
            builder.AppendFormat("\"Price\":\"{0}\", \"Price_v\":\"{1}\"", Globals.FormatMoney(freight), freight);
            builder.Append("}");
            context.Response.ContentType = "text/plain";

            context.Response.Write(builder.ToString());
        }
コード例 #4
0
        private void CalculateFreight1(System.Web.HttpContext context)//原有的计算运费方法
        {
            decimal money = 0m;

            if (!string.IsNullOrEmpty(context.Request.Params["ModeId"]) && !string.IsNullOrEmpty(context.Request["RegionId"]))
            {
                int     modeId = int.Parse(context.Request["ModeId"], System.Globalization.NumberStyles.None);
                decimal num    = 0m;
                decimal.TryParse(context.Request["Weight"], out num);
                int regionId = int.Parse(context.Request["RegionId"], System.Globalization.NumberStyles.None);
                ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(modeId, true);
                int buyAmount;
                ShoppingCartInfo shoppingCart;
                if (int.TryParse(context.Request["buyAmount"], out buyAmount) && !string.IsNullOrWhiteSpace(context.Request["productSku"]))
                {
                    string productSkuId = System.Convert.ToString(context.Request["productSku"]);
                    shoppingCart = ShoppingCartProcessor.GetShoppingCart(productSkuId, buyAmount, 0);
                }
                else
                {
                    int boundlingid;
                    if (int.TryParse(context.Request["buyAmount"], out buyAmount) && int.TryParse(context.Request["Bundlingid"], out boundlingid))
                    {
                        shoppingCart = ShoppingCartProcessor.GetShoppingCart(boundlingid, buyAmount);
                    }
                    else
                    {
                        shoppingCart = ShoppingCartProcessor.GetShoppingCart();
                    }
                }
                if (!shoppingCart.IsFreightFree)
                {
                    if (shoppingCart.LineItems.Count((ShoppingCartItemInfo a) => !a.IsfreeShipping) > 0 || shoppingCart.LineGifts.Count > 0)
                    {
                        money = ShoppingProcessor.CalcFreight(regionId, shoppingCart.Weight, shippingMode);
                    }
                }
            }
            System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
            stringBuilder.Append("{");
            stringBuilder.Append("\"Status\":\"OK\",");
            stringBuilder.AppendFormat("\"Price\":\"{0}\"", Globals.FormatMoney(money));
            stringBuilder.Append("}");
            context.Response.ContentType = "text/plain";
            context.Response.Write(stringBuilder.ToString());
        }
コード例 #5
0
        private void CalculateFreight(System.Web.HttpContext context)
        {
            decimal money = 0m;

            if (!string.IsNullOrEmpty(context.Request.Params["ModeId"]) && !string.IsNullOrEmpty(context.Request["RegionId"]))
            {
                int modeId   = int.Parse(context.Request["ModeId"], System.Globalization.NumberStyles.None);
                int value    = int.Parse(context.Request["Weight"], System.Globalization.NumberStyles.None);
                int regionId = int.Parse(context.Request["RegionId"], System.Globalization.NumberStyles.None);
                ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(modeId, true);
                money = ShoppingProcessor.CalcFreight(regionId, value, shippingMode);
            }
            System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
            stringBuilder.Append("{");
            stringBuilder.Append("\"Status\":\"OK\",");
            stringBuilder.AppendFormat("\"Price\":\"{0}\"", Globals.FormatMoney(money));
            stringBuilder.Append("}");
            context.Response.ContentType = "text/plain";
            context.Response.Write(stringBuilder.ToString());
        }
コード例 #6
0
        protected override void Render(HtmlTextWriter writer)
        {
            IList <ShippingModeInfo> shippingModes = ShoppingProcessor.GetShippingModes();

            if (shippingModes != null && shippingModes.Count > 0)
            {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.AppendLine(" <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\">请选择配送方式<span class=\"caret\"></span></button>");
                stringBuilder.AppendLine("<ul id=\"shippingTypeUl\" class=\"dropdown-menu\" role=\"menu\">");
                foreach (ShippingModeInfo current in shippingModes)
                {
                    decimal num = 0m;
                    if (this.ShoppingCartItemInfo.Count != this.ShoppingCartItemInfo.Count((ShoppingCartItemInfo a) => a.IsfreeShipping))
                    {
                        num = ShoppingProcessor.CalcFreight(this.RegionId, this.Weight, current);
                    }
                    stringBuilder.AppendFormat("<li><a href=\"#\" name=\"{0}\" value=\"{2}\">{1}</a></li>", current.ModeId, current.Name + ": ¥" + num.ToString("F2"), num.ToString("F2")).AppendLine();
                }
                stringBuilder.AppendLine("</ul>");
                writer.Write(stringBuilder.ToString());
            }
        }
コード例 #7
0
        protected override void Render(HtmlTextWriter writer)
        {
            Hidistro.Core.Entities.SiteSettings masterSettings = Hidistro.Core.SettingsManager.GetMasterSettings(false);
            IList <ShippingModeInfo>            shippingModes  = ShoppingProcessor.GetShippingModes();

            if ((shippingModes != null) && (shippingModes.Count > 0))
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine(" <button type=\"button\" class=\"btn btn-default dropdown-toggle\" data-toggle=\"dropdown\">请选择配送啊啊方式<span class=\"caret\"></span></button>");
                builder.AppendLine("<ul id=\"shippingTypeUl\" class=\"dropdown-menu\" role=\"menu\">");
                decimal total = 0m;//商品总额
                for (int i = 0; i < ShoppingCartItemInfo.Count; i++)
                {
                    total += ShoppingCartItemInfo[i].SubTotal;
                }
                bool isAllFreeShipping = false;
                if (masterSettings.SpecialOrderAmountType == "freeShipping")
                {
                    isAllFreeShipping = total >= masterSettings.SpecialValue1 && masterSettings.SpecialValue1 > 0M;
                }
                foreach (ShippingModeInfo info in shippingModes)
                {
                    decimal num = 0M;
                    if (this.ShoppingCartItemInfo.Count != this.ShoppingCartItemInfo.Count <Hidistro.Entities.Sales.ShoppingCartItemInfo>(a => a.IsfreeShipping))
                    {
                        num = ShoppingProcessor.CalcFreight(this.RegionId, this.Weight, info);
                        if (isAllFreeShipping)//如果达到了设置好的包邮金额,那么邮费全免
                        {
                            num = 0M;
                        }
                    }
                    string introduced5 = info.Name + ": ¥" + num.ToString("F2") + "(包邮)";
                    builder.AppendFormat("<li><a href=\"#\" name=\"{0}\" value=\"{2}\">{1}</a></li>", info.ModeId, introduced5, num.ToString("F2")).AppendLine();
                }
                builder.AppendLine("</ul>");
                writer.Write(builder.ToString());
            }
        }
コード例 #8
0
        private void ProcessPurchaseOrderAdd(System.Web.HttpContext context)
        {
            PurchaseOrderInfo purchaseOrderInfo = new PurchaseOrderInfo();
            decimal           num = 0m;

            if (string.IsNullOrEmpty(context.Request["Products"]))
            {
                context.Response.Write("{\"PurchaseOrderAddResponse\":\"-1\"}");
                return;
            }
            int num2 = int.Parse(context.Request["distributorUserId"]);

            string[] array = context.Request["Products"].Split(new char[]
            {
                ';'
            });
            string[] array2 = array;
            for (int i = 0; i < array2.Length; i++)
            {
                string   text   = array2[i];
                string[] array3 = text.Split(new char[]
                {
                    ','
                });
                System.Data.DataTable skuContent = SubSiteProducthelper.GetSkuContent(long.Parse(array3[0]), array3[1], num2);
                if (skuContent != null && skuContent.Rows.Count > 0)
                {
                    PurchaseOrderItemInfo purchaseOrderItemInfo = new PurchaseOrderItemInfo();
                    foreach (System.Data.DataRow dataRow in skuContent.Rows)
                    {
                        if (!string.IsNullOrEmpty(dataRow["AttributeName"].ToString()) && !string.IsNullOrEmpty(dataRow["ValueStr"].ToString()))
                        {
                            PurchaseOrderItemInfo expr_124 = purchaseOrderItemInfo;
                            object sKUContent = expr_124.SKUContent;
                            expr_124.SKUContent = string.Concat(new object[]
                            {
                                sKUContent,
                                dataRow["AttributeName"],
                                ":",
                                dataRow["ValueStr"],
                                "; "
                            });
                        }
                    }
                    purchaseOrderItemInfo.PurchaseOrderId = purchaseOrderInfo.PurchaseOrderId;
                    purchaseOrderItemInfo.SkuId           = (string)skuContent.Rows[0]["SkuId"];
                    purchaseOrderItemInfo.ProductId       = (int)skuContent.Rows[0]["ProductId"];
                    if (skuContent.Rows[0]["SKU"] != System.DBNull.Value)
                    {
                        purchaseOrderItemInfo.SKU = (string)skuContent.Rows[0]["SKU"];
                    }
                    if (skuContent.Rows[0]["Weight"] != System.DBNull.Value)
                    {
                        purchaseOrderItemInfo.ItemWeight = (decimal)skuContent.Rows[0]["Weight"];
                    }
                    purchaseOrderItemInfo.ItemPurchasePrice = (decimal)skuContent.Rows[0]["PurchasePrice"];
                    purchaseOrderItemInfo.Quantity          = int.Parse(array3[2]);
                    purchaseOrderItemInfo.ItemListPrice     = (decimal)skuContent.Rows[0]["SalePrice"];
                    if (skuContent.Rows[0]["CostPrice"] != System.DBNull.Value)
                    {
                        purchaseOrderItemInfo.ItemCostPrice = (decimal)skuContent.Rows[0]["CostPrice"];
                    }
                    purchaseOrderItemInfo.ItemDescription         = (string)skuContent.Rows[0]["ProductName"];
                    purchaseOrderItemInfo.ItemHomeSiteDescription = (string)skuContent.Rows[0]["ProductName"];
                    if (skuContent.Rows[0]["ThumbnailUrl40"] != System.DBNull.Value)
                    {
                        purchaseOrderItemInfo.ThumbnailsUrl = (string)skuContent.Rows[0]["ThumbnailUrl40"];
                    }
                    num += purchaseOrderItemInfo.ItemWeight * purchaseOrderItemInfo.Quantity;
                    purchaseOrderInfo.PurchaseOrderItems.Add(purchaseOrderItemInfo);
                }
            }
            if (purchaseOrderInfo.PurchaseOrderItems.Count <= 0)
            {
                context.Response.Write("{\"PurchaseOrderAddResponse\":\"-3\"}");
                return;
            }
            purchaseOrderInfo.Weight          = num;
            purchaseOrderInfo.TaobaoOrderId   = context.Request["TaobaoOrderId"];
            purchaseOrderInfo.PurchaseOrderId = "MPO" + purchaseOrderInfo.TaobaoOrderId;
            purchaseOrderInfo.ShipTo          = context.Request["ShipTo"];
            string text2 = context.Request["ReceiverState"];
            string text3 = context.Request["ReceiverCity"];
            string text4 = context.Request["ReceiverDistrict"];

            purchaseOrderInfo.ShippingRegion = text2 + text3 + text4;
            purchaseOrderInfo.RegionId       = RegionHelper.GetRegionId(text4, text3, text2);
            purchaseOrderInfo.Address        = context.Request["Address"];
            purchaseOrderInfo.TelPhone       = context.Request["TelPhone"];
            purchaseOrderInfo.CellPhone      = context.Request["CellPhone"];
            purchaseOrderInfo.ZipCode        = context.Request["ZipCode"];
            purchaseOrderInfo.OrderTotal     = decimal.Parse(context.Request["OrderTotal"]);
            ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(Hidistro.Membership.Context.HiContext.Current.SiteSettings.TaobaoShippingType, true);

            if (shippingMode != null)
            {
                purchaseOrderInfo.ModeName        = shippingMode.Name;
                purchaseOrderInfo.AdjustedFreight = (purchaseOrderInfo.Freight = ShoppingProcessor.CalcFreight(purchaseOrderInfo.RegionId, num, shippingMode));
            }
            purchaseOrderInfo.PurchaseStatus = OrderStatus.WaitBuyerPay;
            purchaseOrderInfo.RefundStatus   = RefundStatus.None;
            Hidistro.Membership.Context.Distributor distributor = Hidistro.Membership.Context.Users.GetUser(num2) as Hidistro.Membership.Context.Distributor;
            if (distributor != null)
            {
                purchaseOrderInfo.DistributorId       = distributor.UserId;
                purchaseOrderInfo.Distributorname     = distributor.Username;
                purchaseOrderInfo.DistributorEmail    = distributor.Email;
                purchaseOrderInfo.DistributorRealName = distributor.RealName;
                purchaseOrderInfo.DistributorQQ       = distributor.QQ;
                purchaseOrderInfo.DistributorWangwang = distributor.Wangwang;
                purchaseOrderInfo.DistributorMSN      = distributor.MSN;
            }
            if (!SubsiteSalesHelper.CreatePurchaseOrder(purchaseOrderInfo))
            {
                context.Response.Write("{\"PurchaseOrderAddResponse\":\"0\"}");
                return;
            }
            context.Response.Write("{\"PurchaseOrderAddResponse\":\"1\"}");
        }
コード例 #9
0
ファイル: AgentProducts.cs プロジェクト: tyriankid/WFX
        /// <summary>
        /// 提交到订货列表按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnBuy_Click(object sender, System.EventArgs e)
        {
            this.btnBuy.Enabled = false;                                    //禁用当前按钮
            ManagerInfo currentManager = ManagerHelper.GetCurrentManager(); //当前登录用户信息

            if (currentManager != null /*&& currentManager.ClientUserId > 0*/)
            {
                string strSkuIds     = string.Empty; //存储所有订购商品的SkuId,用于操作后清除待选列表Erp_AgentProduct表数据
                int    shipaddressId = 0;            //送货地址Id
                int    givemodeId    = 0;            //配送方式Id
                int    paymodeId     = 0;            //支付方式Id

                ShoppingCartInfo shoppingCart = null;

                OrderInfo  orderInfo     = new OrderInfo();
                MemberInfo currentMember = MemberHelper.GetMember(currentManager.ClientUserId);
                foreach (System.Web.UI.WebControls.GridViewRow row in this.grdProducts.Rows)
                {
                    //decimal total = 0;
                    decimal price     = 0;                                                                                                 //单价
                    int     resultNum = 0;                                                                                                 //数量

                    System.Web.UI.WebControls.HiddenField txtboxvalue = (System.Web.UI.WebControls.HiddenField)row.FindControl("hiValue"); //得到SkuId
                    //System.Web.UI.WebControls.HiddenField txtboxproduct = (System.Web.UI.WebControls.HiddenField)row.FindControl("hiProductId");//得到ProductId
                    System.Web.UI.WebControls.Literal litSalePrice = (System.Web.UI.WebControls.Literal)row.FindControl("litSalePrice");

                    if (int.TryParse(txtboxvalue.Value.Trim(), out resultNum) && decimal.TryParse(litSalePrice.Text, out price))
                    {
                        string skuId = this.grdProducts.DataKeys[row.RowIndex].Value.ToString();
                        strSkuIds += "'" + skuId + "',";//累加SkuId值并用'',''分割
                        if (!string.IsNullOrEmpty(skuId))
                        {
                            //首先将商品插入购物车
                            //后台订单的购物车处理
                            int pcUserid = 0;
                            if (Hidistro.ControlPanel.Config.CustomConfigHelper.Instance.RegionalFunction && ManagerHelper.GetCurrentManager() != null)
                            {
                                int categoryId = CategoryBrowser.GetCategoryIdBySkuId(skuId);
                                pcUserid = currentManager.UserId;
                                ShoppingCartProcessor.AddLineItemPC(skuId, resultNum, categoryId, pcUserid);
                            }


                            //total += price * resultNum;//计算合计
                            //生成订单项

                            //shoppingCart = ShoppingCartProcessor.GetGroupBuyShoppingCart(currentMember, price, skuId, resultNum);
                            shoppingCart = ShoppingCartProcessor.GetShoppingCart(currentManager.UserId);
                            if (shoppingCart != null && shoppingCart.LineItems != null && shoppingCart.LineItems.Count > 0)
                            {
                                foreach (ShoppingCartItemInfo info2 in shoppingCart.LineItems)
                                {
                                    LineItemInfo info3 = new LineItemInfo
                                    {
                                        SkuId             = info2.SkuId,
                                        ProductId         = info2.ProductId,
                                        SKU               = info2.SKU,
                                        Quantity          = info2.Quantity,
                                        ShipmentQuantity  = info2.ShippQuantity,
                                        ItemCostPrice     = new SkuDao().GetSkuItem(info2.SkuId).CostPrice,
                                        ItemListPrice     = info2.MemberPrice,
                                        ItemAdjustedPrice = info2.AdjustedPrice,
                                        ItemDescription   = info2.Name,
                                        ThumbnailsUrl     = info2.ThumbnailUrl40,
                                        ItemWeight        = info2.Weight,
                                        SKUContent        = info2.SkuContent,
                                        PromotionId       = info2.PromotionId,
                                        PromotionName     = info2.PromotionName,
                                        MainCategoryPath  = info2.MainCategoryPath
                                    };
                                    orderInfo.LineItems.Add(info3.SkuId, info3);
                                }
                            }
                            else
                            {
                                this.ShowMsg("订单生成失败。", true);
                                this.btnBuy.Enabled = true;//启用当前按钮
                                return;
                            }
                        }
                    }
                }
                //一个商品数量都没输入,则退出
                if (string.IsNullOrEmpty(strSkuIds))
                {
                    this.ShowMsg("请输入商品数量。", true);
                    this.btnBuy.Enabled = true;//启用当前按钮
                    return;
                }

                //送货地址
                if (int.TryParse(this.userAddress.SelectedValue, out shipaddressId))
                {
                    ShippingAddressInfo shippingAddress = MemberProcessor.GetShippingAddress(shipaddressId, Convert.ToInt32("99999" + currentManager.UserId.ToString()));//(shipaddressId, currentMember.UserId);
                    if (shippingAddress != null)
                    {
                        //this.userAddress.SelectedItem.Text
                        orderInfo.ShippingRegion = RegionHelper.GetFullRegion(shippingAddress.RegionId, ",");
                        orderInfo.RegionId       = shippingAddress.RegionId;
                        orderInfo.Address        = shippingAddress.Address;
                        orderInfo.ZipCode        = shippingAddress.Zipcode;
                        orderInfo.ShipTo         = shippingAddress.ShipTo;
                        orderInfo.TelPhone       = shippingAddress.TelPhone;
                        orderInfo.CellPhone      = shippingAddress.CellPhone;
                        MemberProcessor.SetDefaultShippingAddress(shipaddressId, Convert.ToInt32("99999" + currentManager.UserId.ToString()));
                    }
                }
                //配送方式
                if (int.TryParse(this.userGiveMode.SelectedValue, out givemodeId))
                {
                    ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(givemodeId, true);
                    if (shippingMode != null)
                    {
                        orderInfo.ShippingModeId = shippingMode.ModeId;
                        orderInfo.ModeName       = shippingMode.Name;
                        if (shoppingCart.LineItems.Count != shoppingCart.LineItems.Count((ShoppingCartItemInfo a) => a.IsfreeShipping))
                        {
                            orderInfo.AdjustedFreight = (orderInfo.Freight = ShoppingProcessor.CalcFreight(orderInfo.RegionId, shoppingCart.Weight, shippingMode));
                        }
                        else
                        {
                            orderInfo.AdjustedFreight = (orderInfo.Freight = 0m);
                        }
                    }
                }
                //支付方式
                if (int.TryParse(this.userPayMode.SelectedValue, out paymodeId))
                {
                    orderInfo.PaymentTypeId = paymodeId;
                    switch (paymodeId)
                    {
                    //case -1:
                    //case 0:
                    //    {
                    //        orderInfo.PaymentType = "货到付款";
                    //        orderInfo.Gateway = "hishop.plugins.payment.podrequest";
                    //        break;
                    //    }
                    //case 88:
                    //    {
                    //        orderInfo.PaymentType = "微信支付";
                    //        orderInfo.Gateway = "hishop.plugins.payment.weixinrequest";
                    //        break;
                    //    }
                    case 99:
                    {
                        orderInfo.PaymentType = "线下付款";
                        orderInfo.Gateway     = "hishop.plugins.payment.offlinerequest";
                        break;
                    }

                    default:
                    {
                        PaymentModeInfo paymentMode = ShoppingProcessor.GetPaymentMode(paymodeId);
                        if (paymentMode != null)
                        {
                            orderInfo.PaymentTypeId = paymentMode.ModeId;
                            orderInfo.PaymentType   = paymentMode.Name;
                            orderInfo.Gateway       = paymentMode.Gateway;
                        }
                        break;
                    }
                    }
                }
                orderInfo.OrderId   = this.GenerateOrderId(currentManager.UserId); //生成ID
                orderInfo.OrderDate = System.DateTime.Now;                         //当前时间
                //基本信息
                orderInfo.OrderStatus    = OrderStatus.WaitBuyerPay;
                orderInfo.RefundStatus   = RefundStatus.None;
                orderInfo.ShipToDate     = "时间不限";
                orderInfo.ReferralUserId = 0;//订单的所属分销ID,没有就设置为0

                //代理商用户相关信息
                orderInfo.UserId       = Convert.ToInt32("99999" + currentManager.UserId.ToString()); //currentMember.UserId;
                orderInfo.Username     = currentManager.UserName;                                     //currentMember.UserName;
                orderInfo.EmailAddress = currentManager.Email;                                        //currentMember.Email;

                //orderInfo.RealName = currentMember.RealName;
                orderInfo.RealName = currentManager.AgentName;//存储用户后台昵称

                //orderInfo.QQ = currentMember.QQ;
                orderInfo.Remark      = this.txtOrderRemark.Text; //得到前端TextBox值
                orderInfo.OrderSource = 1;                        //来源代理商采购
                this.SetOrderItemStatus(orderInfo);



                if (ShoppingProcessor.CreatOrder(orderInfo))
                {
                    ShoppingCartProcessor.ClearShoppingCartPC();
                    //订单生成成功后清空
                    strSkuIds = strSkuIds.TrimEnd(',');
                    //清除已经订购的商品在订购列表中
                    ProductBrowser.DeleteAgentProduct(strSkuIds, currentManager.UserId);

                    this.ShowMsg("订单生成成功,请尽快完成支付。", true);
                }
                else
                {
                    this.ShowMsg("订单生成失败。", true);
                }

                //HiCache.Remove("DataCache-Categories");//刷前台缓存
                this.BindProducts();
            }
            else
            {
                this.ShowMsg("当前登录用户不是前端用户升级而来,无法进行生成订单操作。", true);
            }
            this.btnBuy.Enabled = true;//启用当前按钮
        }
コード例 #10
0
        private void ProcessPurchaseOrderAdd(HttpContext context)
        {
            PurchaseOrderInfo purchaseOrderInfo = new PurchaseOrderInfo();
            decimal           totalWeight       = 0M;

            if (string.IsNullOrEmpty(context.Request["Products"]))
            {
                context.Response.Write("{\"PurchaseOrderAddResponse\":\"-1\"}");
            }
            else
            {
                int distributorId = int.Parse(context.Request["distributorUserId"]);
                foreach (string str in context.Request["Products"].Split(new char[] { ';' }))
                {
                    string[]  strArray2 = str.Split(new char[] { ',' });
                    DataTable table     = SubSiteProducthelper.GetSkuContent(long.Parse(strArray2[0]), strArray2[1], distributorId);
                    if ((table != null) && (table.Rows.Count > 0))
                    {
                        PurchaseOrderItemInfo item = new PurchaseOrderItemInfo();
                        foreach (DataRow row in table.Rows)
                        {
                            if (!string.IsNullOrEmpty(row["AttributeName"].ToString()) && !string.IsNullOrEmpty(row["ValueStr"].ToString()))
                            {
                                object sKUContent = item.SKUContent;
                                item.SKUContent = string.Concat(new object[] { sKUContent, row["AttributeName"], ":", row["ValueStr"], "; " });
                            }
                        }
                        item.PurchaseOrderId = purchaseOrderInfo.PurchaseOrderId;
                        item.SkuId           = (string)table.Rows[0]["SkuId"];
                        item.ProductId       = (int)table.Rows[0]["ProductId"];
                        if (table.Rows[0]["SKU"] != DBNull.Value)
                        {
                            item.SKU = (string)table.Rows[0]["SKU"];
                        }
                        if (table.Rows[0]["Weight"] != DBNull.Value)
                        {
                            item.ItemWeight = (decimal)table.Rows[0]["Weight"];
                        }
                        item.ItemPurchasePrice = (decimal)table.Rows[0]["PurchasePrice"];
                        item.Quantity          = int.Parse(strArray2[2]);
                        item.ItemListPrice     = (decimal)table.Rows[0]["SalePrice"];
                        if (table.Rows[0]["CostPrice"] != DBNull.Value)
                        {
                            item.ItemCostPrice = (decimal)table.Rows[0]["CostPrice"];
                        }
                        item.ItemDescription         = (string)table.Rows[0]["ProductName"];
                        item.ItemHomeSiteDescription = (string)table.Rows[0]["ProductName"];
                        if (table.Rows[0]["ThumbnailUrl40"] != DBNull.Value)
                        {
                            item.ThumbnailsUrl = (string)table.Rows[0]["ThumbnailUrl40"];
                        }
                        totalWeight += item.ItemWeight * item.Quantity;
                        purchaseOrderInfo.PurchaseOrderItems.Add(item);
                    }
                }
                if (purchaseOrderInfo.PurchaseOrderItems.Count <= 0)
                {
                    context.Response.Write("{\"PurchaseOrderAddResponse\":\"-3\"}");
                }
                else
                {
                    purchaseOrderInfo.Weight          = totalWeight;
                    purchaseOrderInfo.TaobaoOrderId   = context.Request["TaobaoOrderId"];
                    purchaseOrderInfo.PurchaseOrderId = "MPO" + purchaseOrderInfo.TaobaoOrderId;
                    purchaseOrderInfo.ShipTo          = context.Request["ShipTo"];
                    string province = context.Request["ReceiverState"];
                    string city     = context.Request["ReceiverCity"];
                    string county   = context.Request["ReceiverDistrict"];
                    purchaseOrderInfo.ShippingRegion = province + city + county;
                    purchaseOrderInfo.RegionId       = RegionHelper.GetRegionId(county, city, province);
                    purchaseOrderInfo.Address        = context.Request["Address"];
                    purchaseOrderInfo.TelPhone       = context.Request["TelPhone"];
                    purchaseOrderInfo.CellPhone      = context.Request["CellPhone"];
                    purchaseOrderInfo.ZipCode        = context.Request["ZipCode"];
                    purchaseOrderInfo.OrderTotal     = decimal.Parse(context.Request["OrderTotal"]);
                    ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(HiContext.Current.SiteSettings.TaobaoShippingType, true);
                    if (shippingMode != null)
                    {
                        purchaseOrderInfo.ModeName        = shippingMode.Name;
                        purchaseOrderInfo.AdjustedFreight = purchaseOrderInfo.Freight = ShoppingProcessor.CalcFreight(purchaseOrderInfo.RegionId, totalWeight, shippingMode);
                    }
                    purchaseOrderInfo.PurchaseStatus = OrderStatus.WaitBuyerPay;
                    purchaseOrderInfo.RefundStatus   = RefundStatus.None;
                    Distributor user = Users.GetUser(distributorId) as Distributor;
                    if (user != null)
                    {
                        purchaseOrderInfo.DistributorId       = user.UserId;
                        purchaseOrderInfo.Distributorname     = user.Username;
                        purchaseOrderInfo.DistributorEmail    = user.Email;
                        purchaseOrderInfo.DistributorRealName = user.RealName;
                        purchaseOrderInfo.DistributorQQ       = user.QQ;
                        purchaseOrderInfo.DistributorWangwang = user.Wangwang;
                        purchaseOrderInfo.DistributorMSN      = user.MSN;
                    }
                    if (!SubsiteSalesHelper.CreatePurchaseOrder(purchaseOrderInfo))
                    {
                        context.Response.Write("{\"PurchaseOrderAddResponse\":\"0\"}");
                    }
                    else
                    {
                        context.Response.Write("{\"PurchaseOrderAddResponse\":\"1\"}");
                    }
                }
            }
        }
コード例 #11
0
ファイル: AddStoreOrder.cs プロジェクト: damoOnly/e-commerce
        private void btnAdd_Click(object sender, System.EventArgs e)
        {
            #region 获取商品规格信息,构造购物车信息
            //实例化购物车
            ShoppingCartInfo shoppingCartInfo = new ShoppingCartInfo();

            //实例化SKU信息
            SkuItemInfo skuItemInfo = new SkuItemInfo();

            List <SkuInfo> skuInfoList           = new List <SkuInfo>();
            List <ShoppingCartItemInfo> itemInfo = new List <ShoppingCartItemInfo>();

            //区县Id
            int regionId = 0;
            int.TryParse(txtRegionId.Text, out regionId);
            if (regionId == 0 && dropRegions.GetSelectedRegionId() != null && this.dropRegions.GetSelectedRegionId().Value > 0)
            {
                regionId = this.dropRegions.GetSelectedRegionId().Value;
            }

            string skuList = !string.IsNullOrWhiteSpace(hiddenSkus.Value) ? hiddenSkus.Value : "";

            if (!string.IsNullOrEmpty(skuList))
            {
                skuItemInfo.skuInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <SkuInfo[]>(skuList);
            }

            if (skuItemInfo != null && skuItemInfo.skuInfo != null && skuItemInfo.skuInfo.Count() > 0)
            {
                skuInfoList = skuItemInfo.skuInfo.OrderByDescending(a => a.SkuId).ToList();
            }
            string skuIdStr = "";

            if (skuInfoList.Count > 0)
            {
                skuInfoList.ForEach(a => { skuIdStr += "'" + a.SkuId + "'" + ","; });
            }

            if (!string.IsNullOrEmpty(skuIdStr) && skuIdStr.Length > 0)
            {
                skuIdStr = skuIdStr.Substring(0, skuIdStr.Length - 1);
                skuIdStr = "(" + skuIdStr + ")";

                itemInfo = ShoppingProcessor.GetSkuList(skuIdStr).ToList();
            }

            if (itemInfo.Count > 0)
            {
                //循环处理
                itemInfo.ForEach(a =>
                {
                    skuInfoList.ForEach(b =>
                    {
                        if (b.SkuId == a.SkuId)
                        {
                            a.Quantity      = b.BuyQty;
                            a.ShippQuantity = b.BuyQty;
                        }
                    });
                });
            }
            #endregion

            //收货地址ID
            int shippingId = 0;
            int.TryParse(txtShippingId.Text, out shippingId);
            //身份证号码
            string identityCard = txtIdentityCard.Text.Trim();
            //用户ID
            int userId = 0;
            int.TryParse(txtUserId.Text, out userId);
            //手机号码
            string cellPhone = txtCellPhone.Text.Trim();
            //收货人姓名
            string shipTo = txtShipTo.Text.Trim();
            //地址
            string address     = txtDetailsAddress.Text.Trim();
            string addressproc = "";
            if (!string.IsNullOrEmpty(dropRegions.SelectedRegions))
            {
                addressproc = (dropRegions.SelectedRegions).Replace(",", "") + address;
            }
            //邮政编码
            string zipcode = txtZipcode.Text.Trim();
            //电话号码
            string telPhone = txtTelPhone.Text.Trim();
            //用户名
            string username = txtUserName.Text.Trim();

            #region 新增或修改收货地址信息
            ShippingAddressInfo shippingAddress = new ShippingAddressInfo()
            {
                ShipTo       = shipTo,
                Address      = addressproc,
                Zipcode      = zipcode,
                TelPhone     = telPhone,
                CellPhone    = cellPhone,
                IdentityCard = identityCard,
                IsDefault    = true,
                RegionId     = regionId,
                UserId       = userId,
                ShippingId   = shippingId
            };

            //如果没有选择收获地址,那么新增一个用户,手机号作为用户名,密码为手机号
            int newUserId = 0;
            if (userId == 0)
            {
                Member member = new Member(UserRole.Member);
                member.GradeId             = MemberProcessor.GetDefaultMemberGrade();
                member.SessionId           = Globals.GetGenerateId();
                member.Username            = cellPhone;
                member.Email               = "";// cellPhone + "@mail.haimylife.com";
                member.Password            = cellPhone;
                member.PasswordFormat      = MembershipPasswordFormat.Hashed;
                member.TradePasswordFormat = MembershipPasswordFormat.Hashed;
                member.TradePassword       = cellPhone;
                member.IsApproved          = true;
                member.RealName            = string.Empty;
                member.Address             = string.Empty;
                CreateUserStatus createUserStatus = MemberProcessor.CreateMember(member);
                if (createUserStatus == CreateUserStatus.DuplicateUsername || createUserStatus == CreateUserStatus.DisallowedUsername)
                {
                    ErrorLog.Write("用户名重复,用户名为:" + member.Username);
                }
                if (createUserStatus == CreateUserStatus.DuplicateEmailAddress)
                {
                    ErrorLog.Write("邮件名重复,邮箱为:" + member.Email);
                }
                if (createUserStatus == CreateUserStatus.Created)
                {
                    newUserId = member.UserId;
                    userId    = member.UserId;
                }
            }

            int newShippingId = 0;

            //新增或修改收货地址信息
            int addressResult = MemberProcessor.AddOrUpdateShippingAddress(shippingAddress, newUserId, out newShippingId);
            if (addressResult > 0)
            {
                ErrorLog.Write("新增或修改收货地址信息成功,收获地址Id[newShippingId]" + newShippingId);
            }

            #endregion


            itemInfo.ForEach(a =>
            {
                //门店Id为当前登录用户的Id
                a.StoreId = HiContext.Current.User.UserId;
                a.UserId  = userId;
                shoppingCartInfo.LineItems.Add(a);
            });

            //获取订单信息
            OrderInfo orderInfo = ShoppingProcessor.ConvertShoppingCartToOrder(shoppingCartInfo, false, false, false, userId);
            if (orderInfo != null)
            {
                orderInfo.OrderId   = this.GenerateOrderId();
                orderInfo.OrderDate = System.DateTime.Now;
                orderInfo.UserId    = userId;

                if (!string.IsNullOrEmpty(username))
                {
                    orderInfo.Username = username;
                }
                else
                {
                    orderInfo.Username = cellPhone;
                }
                orderInfo.EmailAddress = "";
                orderInfo.RealName     = "";
                orderInfo.QQ           = "";
                orderInfo.Remark       = txtBak.Text.Trim();
                //站点默认为深圳
                orderInfo.SiteId       = 0;
                orderInfo.IdentityCard = identityCard;
                orderInfo.OrderStatus  = OrderStatus.WaitBuyerPay;
                orderInfo.RefundStatus = RefundStatus.None;
                orderInfo.ShipToDate   = DateTime.Now.ToString();
                //门店Id
                int userStoreId = ManagerHelper.GetStoreIdByUserId(HiContext.Current.User.UserId);
                orderInfo.StoreId = userStoreId;

                if (!string.IsNullOrEmpty(txtDeductible.Text.Trim()))
                {
                    orderInfo.Deductible = Decimal.Parse(txtDeductible.Text.Trim());
                }


                if (shippingAddress != null)
                {
                    #region 验证每人每日最多消费1000元,1000元以上为单件商品
                    int mayCount = 0;
                    foreach (ShoppingCartItemInfo item in shoppingCartInfo.LineItems)
                    {
                        mayCount += item.Quantity;
                        //#region 验证库存
                        int stock = ShoppingProcessor.GetProductStock(item.SkuId);
                        if (stock <= 0 || stock < item.Quantity)
                        {
                            this.ShowMsg("商品库存不足!商品名称为:" + item.Name, false);
                            return;
                        }
                    }
                    #endregion

                    #region 验证是否符合清关条件
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < shoppingCartInfo.LineItems.Count; i++)
                    {
                        if (i == (shoppingCartInfo.LineItems.Count - 1))
                        {
                            sb.Append(shoppingCartInfo.LineItems[i].ProductId);
                        }
                        else
                        {
                            sb.AppendFormat("{0},", shoppingCartInfo.LineItems[i].ProductId);
                        }
                    }
                    bool b = ShoppingProcessor.CheckIsCustomsClearance(sb.ToString());
                    if (b)
                    {
                        orderInfo.IsCustomsClearance = 1;
                        if (string.IsNullOrEmpty(identityCard))
                        {
                            Member memberNew = Users.GetUser(HiContext.Current.User.UserId, false) as Member;
                            identityCard = memberNew.IdentityCard;
                        }
                        if (string.IsNullOrEmpty(identityCard))
                        {
                            this.ShowMsg("有需要清关的商品,身份证号码不能为空,请到个人资料里面填写身份信息!", false);
                            return;
                        }
                    }
                    else
                    {
                        orderInfo.IsCustomsClearance = 0;
                    }
                    #endregion

                    orderInfo.ShippingRegion = RegionHelper.GetFullRegion(regionId, ",");
                    orderInfo.RegionId       = regionId;
                    orderInfo.Address        = address;
                    orderInfo.ZipCode        = zipcode;
                    orderInfo.ShipTo         = shipTo;
                    orderInfo.TelPhone       = telPhone;
                    orderInfo.CellPhone      = cellPhone;

                    orderInfo.ShippingId = shippingId <= 0 ? newShippingId : shippingId;
                }

                //配送方式
                orderInfo.ShippingModeId = ddlshippingMode.SelectedValue > 0 ? (int)ddlshippingMode.SelectedValue : 0;
                orderInfo.ModeName       = !string.IsNullOrEmpty(ddlshippingMode.SelectedItem.Text) ? ddlshippingMode.SelectedItem.Text : "";
                decimal tax     = 0m;
                decimal freight = 0m;

                Dictionary <int, decimal> dictShippingMode = new Dictionary <int, decimal>();
                if (shoppingCartInfo.LineItems.Count != shoppingCartInfo.LineItems.Count((ShoppingCartItemInfo a) => a.IsfreeShipping) && !shoppingCartInfo.IsFreightFree)
                {
                    foreach (ShoppingCartItemInfo item in shoppingCartInfo.LineItems)
                    {
                        tax += item.AdjustedPrice * item.TaxRate * item.Quantity;
                        if ((!item.IsfreeShipping))
                        {
                            if (item.TemplateId > 0)
                            {
                                if (dictShippingMode.ContainsKey(item.TemplateId))
                                {
                                    dictShippingMode[item.TemplateId] += item.Weight * item.Quantity;
                                }
                                else
                                {
                                    dictShippingMode.Add(item.TemplateId, item.Weight * item.Quantity);
                                }
                            }
                        }
                    }
                    foreach (var item in dictShippingMode)
                    {
                        ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(item.Key);
                        freight += ShoppingProcessor.CalcFreight(shippingAddress.RegionId, item.Value, shippingMode);
                    }
                    //运费需要减去优惠
                    orderInfo.Freight     = freight;
                    orderInfo.Tax         = tax <= 50 ? 0 : tax;
                    orderInfo.OriginalTax = tax;
                }
                else
                {
                    orderInfo.Freight = 0m;
                }
                orderInfo.AdjustedFreight = orderInfo.Freight;

                int num = ddlpayment.SelectedValue > 0 ? (int)ddlpayment.SelectedValue:0;
                orderInfo.PaymentTypeId = num;
                if (num == 16)
                {
                    orderInfo.PaymentType = "线下支付";
                    orderInfo.Gateway     = "Ecdev.plugins.payment.bankrequest";
                }
                else
                {
                    PaymentModeInfo paymentMode = ShoppingProcessor.GetPaymentMode(num);
                    if (paymentMode != null)
                    {
                        orderInfo.PaymentTypeId = paymentMode.ModeId;
                        orderInfo.PaymentType   = paymentMode.Name;
                        orderInfo.Gateway       = paymentMode.Gateway;
                    }
                }

                orderInfo.OrderSource = OrderSource.storeAdd;

                try
                {
                    orderInfo.OrderType = (int)OrderType.Normal;

                    if (ShoppingProcessor.CreateOrder(orderInfo, true, true))
                    {
                        Reset();
                        //this.ShowMsg("添加门店订单成功", true);
                        string url = Globals.GetAdminAbsolutePath("/sales/StoreManageOrder.aspx");
                        //清除前端的cookie
                        ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>ClearsCookie();alert('添加门店订单成功');window.location.href='" + url + "';</script>");
                        //base.Response.Redirect(Globals.GetAdminAbsolutePath("'/sales/StoreManageOrder.aspx'"), true);
                    }
                    else
                    {
                        this.ShowMsg("添加门店订单失败!", false);
                        return;
                    }
                }
                catch (Exception ex)
                {
                    ErrorLog.Write("后台成功添加门店订单错误:", Newtonsoft.Json.JsonConvert.SerializeObject(orderInfo), ex);
                }
            }
        }
コード例 #12
0
        //后台添加门店订单,计算运费
        public void CalcBackAddOrderFreight(System.Web.HttpContext context)
        {
            StringBuilder stringBuilder = new StringBuilder();

            //实例化购物车
            ShoppingCartInfo shoppingCartInfo = new ShoppingCartInfo();

            //实例化SKU信息
            SkuItemInfo skuItemInfo = new SkuItemInfo();

            List <SkuInfo> skuInfoList           = new List <SkuInfo>();
            List <ShoppingCartItemInfo> itemInfo = new List <ShoppingCartItemInfo>();

            //区县Id
            int regionId;

            int.TryParse(context.Request["RegionId"], out regionId);

            string skuList = context.Request["SkuList"];

            if (string.IsNullOrEmpty(skuList))
            {
                stringBuilder.Append("{");
                stringBuilder.Append("\"Status\":\"NO\"");
                stringBuilder.Append("}");
                return;
            }

            skuItemInfo.skuInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <SkuInfo[]>(skuList);

            if (skuItemInfo == null || skuItemInfo.skuInfo == null || skuItemInfo.skuInfo.Length <= 0)
            {
                stringBuilder.Append("{");
                stringBuilder.Append("\"Status\":\"NO\"");
                stringBuilder.Append("}");
                return;
            }

            skuInfoList = skuItemInfo.skuInfo.OrderByDescending(a => a.SkuId).ToList();
            string skuIdStr = "";

            if (skuInfoList.Count > 0)
            {
                skuInfoList.ForEach(a => { skuIdStr += "'" + a.SkuId + "'" + ","; });
            }

            if (!string.IsNullOrEmpty(skuIdStr) && skuIdStr.Length > 0)
            {
                skuIdStr = skuIdStr.Substring(0, skuIdStr.Length - 1);
                skuIdStr = "(" + skuIdStr + ")";
            }

            itemInfo = ShoppingProcessor.GetSkuList(skuIdStr).ToList();

            if (itemInfo.Count > 0)
            {
                //循环处理
                itemInfo.ForEach(a =>
                {
                    skuInfoList.ForEach(b =>
                    {
                        if (b.SkuId == a.SkuId)
                        {
                            a.Quantity      = b.BuyQty;
                            a.ShippQuantity = b.BuyQty;
                        }
                    });
                });

                itemInfo.ForEach(t =>
                {
                    //门店Id为当前登录用户的Id
                    t.StoreId = HiContext.Current.User.UserId;
                    shoppingCartInfo.LineItems.Add(t);
                });
            }

            decimal freight = 0m;

            if (shoppingCartInfo == null ||
                shoppingCartInfo.LineItems.Count == 0)
            {
                freight = 0m;
            }

            Dictionary <int, decimal> dictShippingMode = new Dictionary <int, decimal>();

            if (shoppingCartInfo.LineItems.Count != shoppingCartInfo.LineItems.Count((ShoppingCartItemInfo a) => a.IsfreeShipping) && !shoppingCartInfo.IsFreightFree)
            {
                foreach (ShoppingCartItemInfo item in shoppingCartInfo.LineItems)
                {
                    if ((!shoppingCartInfo.IsFreightFree || !item.IsfreeShipping))
                    {
                        if (item.TemplateId > 0)
                        {
                            if (dictShippingMode.ContainsKey(item.TemplateId))
                            {
                                dictShippingMode[item.TemplateId] += item.Weight * item.Quantity;
                            }
                            else
                            {
                                dictShippingMode.Add(item.TemplateId, item.Weight * item.Quantity);
                            }
                        }
                    }
                }

                foreach (var item in dictShippingMode)// 计算运费
                {
                    ShippingModeInfo shippingMode = ShoppingProcessor.GetShippingMode(item.Key);
                    freight += ShoppingProcessor.CalcFreight(regionId, item.Value, shippingMode);
                }
            }

            stringBuilder.Append("{");
            stringBuilder.Append("\"Status\":\"OK\",");
            stringBuilder.AppendFormat("\"Freight\":\"{0}\"", Globals.FormatMoney(freight));
            stringBuilder.Append("}");
            context.Response.ContentType = "text/plain";
            context.Response.Write(stringBuilder.ToString());
        }