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); }
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; } }
/// <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()); }
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()); }
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()); }
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()); } }
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()); } }
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\"}"); }
/// <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;//启用当前按钮 }
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\"}"); } } } }
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); } } }
//后台添加门店订单,计算运费 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()); }