public bool InsertOrderRefund(RefundInfo refundInfo) { bool result = false; LineItemDao lineItemDao = new LineItemDao(); LineItemInfo returnMoneyByOrderIDAndProductID = lineItemDao.GetReturnMoneyByOrderIDAndProductID(refundInfo.OrderId, refundInfo.SkuId, refundInfo.OrderItemID); if (returnMoneyByOrderIDAndProductID != null) { decimal num = returnMoneyByOrderIDAndProductID.GetSubTotal() - returnMoneyByOrderIDAndProductID.DiscountAverage - returnMoneyByOrderIDAndProductID.ItemAdjustedCommssion; if (num < 0m) { num = 0m; } System.Data.Common.DbCommand sqlStringCommand = this.database.GetSqlStringCommand("insert into Hishop_OrderReturns(OrderId,ApplyForTime,Comments,HandleStatus,Account,RefundMoney,RefundType,ProductId,UserId,AuditTime,SkuId,OrderItemID) values(@OrderId,@ApplyForTime,@Comments,@HandleStatus,@Account,@RefundMoney,@RefundType,@ProductId,@UserId,@AuditTime,@SkuId,@OrderItemID)"); this.database.AddInParameter(sqlStringCommand, "OrderId", System.Data.DbType.String, refundInfo.OrderId); this.database.AddInParameter(sqlStringCommand, "ApplyForTime", System.Data.DbType.DateTime, refundInfo.ApplyForTime); this.database.AddInParameter(sqlStringCommand, "Comments", System.Data.DbType.String, refundInfo.Comments); this.database.AddInParameter(sqlStringCommand, "HandleStatus", System.Data.DbType.Int32, (int)refundInfo.HandleStatus); this.database.AddInParameter(sqlStringCommand, "Account", System.Data.DbType.String, refundInfo.Account); this.database.AddInParameter(sqlStringCommand, "RefundMoney", System.Data.DbType.Decimal, num); this.database.AddInParameter(sqlStringCommand, "RefundType", System.Data.DbType.Int32, refundInfo.RefundType); this.database.AddInParameter(sqlStringCommand, "ProductId", System.Data.DbType.Int32, refundInfo.ProductId); this.database.AddInParameter(sqlStringCommand, "UserId", System.Data.DbType.Int32, refundInfo.UserId); this.database.AddInParameter(sqlStringCommand, "AuditTime", System.Data.DbType.String, refundInfo.AuditTime); this.database.AddInParameter(sqlStringCommand, "SkuId", System.Data.DbType.String, refundInfo.SkuId); this.database.AddInParameter(sqlStringCommand, "OrderItemID", System.Data.DbType.Int32, refundInfo.OrderItemID); result = (this.database.ExecuteNonQuery(sqlStringCommand) > 0); } return(result); }
public bool InsertOrderRefund(RefundInfo refundInfo) { bool flag = false; decimal num = 0M; LineItemInfo returnMoneyByOrderIDAndProductID = new LineItemDao().GetReturnMoneyByOrderIDAndProductID(refundInfo.OrderId, refundInfo.ProductId); if (returnMoneyByOrderIDAndProductID == null) { return(flag); } num = (returnMoneyByOrderIDAndProductID.GetSubTotal() - returnMoneyByOrderIDAndProductID.DiscountAverage) - returnMoneyByOrderIDAndProductID.ItemAdjustedCommssion; if (num < 0M) { num = 0M; } DbCommand sqlStringCommand = this.database.GetSqlStringCommand("insert into Hishop_OrderReturns(OrderId,ApplyForTime,Comments,HandleStatus,Account,RefundMoney,RefundType,ProductId,UserId,AuditTime) values(@OrderId,@ApplyForTime,@Comments,@HandleStatus,@Account,@RefundMoney,@RefundType,@ProductId,@UserId,@AuditTime)"); this.database.AddInParameter(sqlStringCommand, "OrderId", DbType.String, refundInfo.OrderId); this.database.AddInParameter(sqlStringCommand, "ApplyForTime", DbType.DateTime, refundInfo.ApplyForTime); this.database.AddInParameter(sqlStringCommand, "Comments", DbType.String, refundInfo.RefundRemark); this.database.AddInParameter(sqlStringCommand, "HandleStatus", DbType.Int32, (int)refundInfo.HandleStatus); this.database.AddInParameter(sqlStringCommand, "Account", DbType.String, refundInfo.Account); this.database.AddInParameter(sqlStringCommand, "RefundMoney", DbType.Decimal, num); this.database.AddInParameter(sqlStringCommand, "RefundType", DbType.Int32, refundInfo.RefundType); this.database.AddInParameter(sqlStringCommand, "ProductId", DbType.Int32, refundInfo.ProductId); this.database.AddInParameter(sqlStringCommand, "UserId", DbType.Int32, refundInfo.UserId); this.database.AddInParameter(sqlStringCommand, "AuditTime", DbType.String, refundInfo.AuditTime); return(this.database.ExecuteNonQuery(sqlStringCommand) > 0); }
public static string UpdateAndCreateOrderByOrderSplitInfo(IList <OrderSplitInfo> infoList, OrderInfo oldorderinfo) { string text = "1"; Database database = DatabaseFactory.CreateDatabase(); string result; using (System.Data.Common.DbConnection dbConnection = database.CreateConnection()) { dbConnection.Open(); System.Data.Common.DbTransaction dbTransaction = dbConnection.BeginTransaction(); StringBuilder stringBuilder = new StringBuilder(); try { decimal num = 0m; foreach (OrderSplitInfo current in infoList) { OrderInfo orderInfo = new OrderInfo(); if (current.OrderIDNum != 1) { string itemList = current.ItemList; if (string.IsNullOrEmpty(itemList)) { dbTransaction.Rollback(); result = "订单拆分失败"; return(result); } string text2 = oldorderinfo.OrderId + "-" + current.OrderIDNum.ToString(); decimal num2 = 0m; decimal d = 0m; string[] array = itemList.Split(new char[] { ',' }); string[] array2 = array; for (int i = 0; i < array2.Length; i++) { string s = array2[i]; LineItemInfo lineItemInfo = new LineItemDao().GetLineItemInfo(Globals.ToNum(s), ""); if (lineItemInfo == null) { dbTransaction.Rollback(); result = "订单详情更新失败"; return(result); } num2 += lineItemInfo.ItemWeight * lineItemInfo.Quantity; num += num2; d += lineItemInfo.ItemAdjustedPrice * lineItemInfo.Quantity; } stringBuilder.Append("," + itemList.Trim(new char[] { ',' })); if (!new LineItemDao().UpdateLineItemOrderID(itemList, text2, dbTransaction)) { dbTransaction.Rollback(); result = "订单详情更新失败"; return(result); } orderInfo.OrderId = text2; orderInfo.OrderMarking = oldorderinfo.OrderMarking; orderInfo.ClientShortType = oldorderinfo.ClientShortType; orderInfo.Remark = oldorderinfo.Remark; orderInfo.ManagerMark = oldorderinfo.ManagerMark; orderInfo.AdjustedDiscount = 0m; orderInfo.OrderStatus = oldorderinfo.OrderStatus; orderInfo.CloseReason = oldorderinfo.CloseReason; orderInfo.OrderDate = oldorderinfo.OrderDate; orderInfo.PayDate = oldorderinfo.PayDate; orderInfo.ShippingDate = oldorderinfo.ShippingDate; orderInfo.FinishDate = oldorderinfo.FinishDate; orderInfo.UserId = oldorderinfo.UserId; orderInfo.Username = oldorderinfo.Username; orderInfo.EmailAddress = oldorderinfo.EmailAddress; orderInfo.RealName = oldorderinfo.RealName; orderInfo.QQ = oldorderinfo.QQ; orderInfo.Wangwang = oldorderinfo.Wangwang; orderInfo.MSN = oldorderinfo.MSN; orderInfo.ShippingRegion = oldorderinfo.ShippingRegion; orderInfo.Address = oldorderinfo.Address; orderInfo.ZipCode = oldorderinfo.ZipCode; orderInfo.ShipTo = oldorderinfo.ShipTo; orderInfo.TelPhone = oldorderinfo.TelPhone; orderInfo.CellPhone = oldorderinfo.CellPhone; orderInfo.ShipToDate = oldorderinfo.ShipToDate; orderInfo.ShippingModeId = oldorderinfo.ShippingModeId; orderInfo.ModeName = oldorderinfo.ModeName; orderInfo.RealShippingModeId = oldorderinfo.RealShippingModeId; orderInfo.RealModeName = oldorderinfo.RealModeName; orderInfo.RegionId = oldorderinfo.RegionId; orderInfo.Freight = current.AdjustedFreight; orderInfo.AdjustedFreight = current.AdjustedFreight; orderInfo.ShipOrderNumber = oldorderinfo.ShipOrderNumber; orderInfo.Weight = num2; orderInfo.Weight = oldorderinfo.Weight; orderInfo.ExpressCompanyName = oldorderinfo.ExpressCompanyName; orderInfo.ExpressCompanyAbb = oldorderinfo.ExpressCompanyAbb; orderInfo.PaymentTypeId = oldorderinfo.PaymentTypeId; orderInfo.PaymentType = oldorderinfo.PaymentType; orderInfo.PayCharge = oldorderinfo.PayCharge; orderInfo.RefundStatus = oldorderinfo.RefundStatus; orderInfo.RefundAmount = oldorderinfo.RefundAmount; orderInfo.RefundRemark = oldorderinfo.RefundRemark; orderInfo.Gateway = oldorderinfo.Gateway; orderInfo.Points = 0; orderInfo.DiscountAmount = 0m; orderInfo.ActivitiesId = ""; orderInfo.ActivitiesName = ""; orderInfo.ReducedPromotionId = 0; orderInfo.ReducedPromotionName = ""; orderInfo.ReducedPromotionAmount = 0m; orderInfo.IsReduced = false; orderInfo.SentTimesPointPromotionId = 0; orderInfo.SentTimesPointPromotionName = ""; orderInfo.FreightFreePromotionId = 0; orderInfo.FreightFreePromotionName = ""; orderInfo.IsFreightFree = oldorderinfo.IsFreightFree; orderInfo.GatewayOrderId = oldorderinfo.GatewayOrderId; orderInfo.IsPrinted = oldorderinfo.IsPrinted; orderInfo.InvoiceTitle = oldorderinfo.InvoiceTitle; orderInfo.ReferralUserId = oldorderinfo.ReferralUserId; orderInfo.ReferralPath = oldorderinfo.ReferralPath; orderInfo.RedPagerID = null; orderInfo.RedPagerActivityName = ""; orderInfo.RedPagerOrderAmountCanUse = 0m; orderInfo.RedPagerAmount = 0m; orderInfo.PointToCash = 0m; orderInfo.PointExchange = 0; if (!new OrderDao().CreatOrder(orderInfo, dbTransaction)) { dbTransaction.Rollback(); result = "生成新订单失败"; return(result); } if (!new OrderDao().UpdateOrderSplitState(orderInfo.OrderId, 2, dbTransaction)) { dbTransaction.Rollback(); result = "更新订单状态失败"; return(result); } } } foreach (OrderSplitInfo current in infoList) { if (current.OrderIDNum == 1) { decimal num3 = oldorderinfo.Weight - num; if (num3 > 0m) { oldorderinfo.Weight = num3; } oldorderinfo.AdjustedFreight = current.AdjustedFreight; if (!new OrderDao().UpdateOrder(oldorderinfo, dbTransaction)) { dbTransaction.Rollback(); result = "更新订单失败"; return(result); } if (!new OrderDao().UpdateOrderSplitState(oldorderinfo.OrderId, 1, dbTransaction)) { dbTransaction.Rollback(); result = "更新主订单状态失败"; return(result); } if (!new OrderSplitDao().DelOrderSplitByOrderID(oldorderinfo.OrderId, dbTransaction)) { dbTransaction.Rollback(); result = "删除拆分记录失败"; return(result); } } } dbTransaction.Commit(); foreach (OrderSplitInfo current in infoList) { OrderInfo orderInfo2 = new OrderDao().GetOrderInfo(current.OldOrderId + ((current.OrderIDNum == 1) ? "" : ("-" + current.OrderIDNum.ToString()))); if (orderInfo2 != null) { if (oldorderinfo.PayDate.HasValue) { orderInfo2.PayDate = oldorderinfo.PayDate; } int num4 = 0; foreach (LineItemInfo current2 in orderInfo2.LineItems.Values) { if (current2.OrderItemsStatus.ToString() == OrderStatus.Refunded.ToString() || current2.OrderItemsStatus.ToString() == OrderStatus.Returned.ToString()) { num4++; } } if (orderInfo2.LineItems.Values.Count == num4) { orderInfo2.OrderStatus = OrderStatus.Closed; } new OrderDao().UpdateOrder(orderInfo2, null); } } } catch { dbTransaction.Rollback(); text = "系统错误"; } finally { dbConnection.Close(); } } result = text; return(result); }
public static string OrderSplitToTemp(OrderInfo OldOrderInfo, string skuid, string neworderid, int itemid) { string result = string.Empty; string orderId = OldOrderInfo.OrderId; string text = string.Empty; string text2 = string.Empty; if (OldOrderInfo != null) { if (neworderid == "0") { IList <OrderSplitInfo> orderSplitItems = new OrderSplitDao().GetOrderSplitItems(orderId); if (orderSplitItems.Count == 0) { foreach (LineItemInfo current in OldOrderInfo.LineItems.Values) { if (current.ID == itemid) { text = current.ID.ToString(); } else { text2 = text2 + "," + current.ID.ToString(); } } text2 = text2.Trim(new char[] { ',' }); OrderSplitInfo orderSplitInfo = new OrderSplitInfo(); int num = 1; orderSplitInfo.OldOrderId = orderId; orderSplitInfo.OrderIDNum = num; orderSplitInfo.ItemList = text2; orderSplitInfo.UpdateTime = DateTime.Now; orderSplitInfo.AdjustedFreight = OldOrderInfo.AdjustedFreight; new OrderSplitDao().NewOrderSplit(orderSplitInfo); orderSplitInfo.ItemList = text; orderSplitInfo.OrderIDNum = num + 1; orderSplitInfo.UpdateTime = DateTime.Now; orderSplitInfo.AdjustedFreight = 0m; new OrderSplitDao().NewOrderSplit(orderSplitInfo); result = "1"; } else { string text3 = string.Empty; int id = 0; foreach (OrderSplitInfo current2 in orderSplitItems) { if (current2.OrderIDNum == 1) { text3 = current2.ItemList; id = current2.Id; break; } } LineItemInfo returnMoneyByOrderIDAndProductID = new LineItemDao().GetReturnMoneyByOrderIDAndProductID(orderId, skuid, itemid); if (returnMoneyByOrderIDAndProductID != null && ("," + text3 + ",").Contains("," + returnMoneyByOrderIDAndProductID.ID + ",")) { decimal d = 0m; decimal num2 = 0m; string[] array = text3.Split(new char[] { ',' }); if (array.Length > 1) { string[] array2 = array; for (int i = 0; i < array2.Length; i++) { string s = array2[i]; LineItemInfo lineItemInfo = new LineItemDao().GetLineItemInfo(Globals.ToNum(s), orderId); if (lineItemInfo != null) { decimal num3 = 0m; if (lineItemInfo.Type == 0) { num3 = lineItemInfo.ItemAdjustedPrice * lineItemInfo.Quantity - lineItemInfo.ItemAdjustedCommssion - lineItemInfo.DiscountAverage; } if (lineItemInfo.ID == itemid) { num2 = num3; text = lineItemInfo.ID.ToString(); } d += num3; } } if (d > num2 && num2 > 0m) { OrderSplitInfo orderSplitInfo = new OrderSplitInfo(); int num = new OrderSplitDao().GetMaxOrderIDNum(orderId); orderSplitInfo.Id = id; orderSplitInfo.OldOrderId = orderId; orderSplitInfo.OrderIDNum = 1; orderSplitInfo.ItemList = ("," + text3 + ",").Replace("," + returnMoneyByOrderIDAndProductID.ID.ToString() + ",", ",").Trim(new char[] { ',' }); orderSplitInfo.UpdateTime = DateTime.Now; orderSplitInfo.AdjustedFreight = OldOrderInfo.AdjustedFreight; new OrderSplitDao().UpdateOrderSplitInfo(orderSplitInfo); orderSplitInfo.AdjustedFreight = 0m; orderSplitInfo.ItemList = returnMoneyByOrderIDAndProductID.ID.ToString(); orderSplitInfo.OrderIDNum = num + 1; orderSplitInfo.UpdateTime = DateTime.Now; new OrderSplitDao().NewOrderSplit(orderSplitInfo); result = "1"; } else { result = "-3"; } } else { result = "-1"; } } else { result = "-2"; } } } else { IList <OrderSplitInfo> orderSplitItems = new OrderSplitDao().GetOrderSplitItems(orderId); if (orderSplitItems.Count > 0) { string text3 = string.Empty; int id = 0; int id2 = 0; int orderIDNum = 0; string str = string.Empty; int num4 = 0; foreach (OrderSplitInfo current2 in orderSplitItems) { if (current2.OrderIDNum == 1) { text3 = current2.ItemList; id = current2.Id; num4++; } if (current2.Id.ToString() == neworderid) { str = current2.ItemList; id2 = current2.Id; orderIDNum = current2.OrderIDNum; num4++; } if (num4 == 2) { break; } } decimal d = 0m; decimal num2 = 0m; string[] array = text3.Split(new char[] { ',' }); if (array.Length > 1) { string[] array2 = array; for (int i = 0; i < array2.Length; i++) { string s = array2[i]; LineItemInfo lineItemInfo = new LineItemDao().GetLineItemInfo(Globals.ToNum(s), orderId); if (lineItemInfo != null) { decimal num3 = 0m; if (lineItemInfo.Type == 0) { num3 = lineItemInfo.ItemAdjustedPrice * lineItemInfo.Quantity - lineItemInfo.ItemAdjustedCommssion - lineItemInfo.DiscountAverage; } if (lineItemInfo.ID == itemid) { num2 = num3; text = lineItemInfo.ID.ToString(); } d += num3; } } if (d > num2 && num2 > 0m) { OrderSplitInfo orderSplitInfo = new OrderSplitInfo(); orderSplitInfo.Id = id; orderSplitInfo.OldOrderId = orderId; orderSplitInfo.OrderIDNum = 1; orderSplitInfo.ItemList = ("," + text3 + ",").Replace("," + text + ",", ",").Trim(new char[] { ',' }); orderSplitInfo.UpdateTime = DateTime.Now; orderSplitInfo.AdjustedFreight = OldOrderInfo.AdjustedFreight; new OrderSplitDao().UpdateOrderSplitInfo(orderSplitInfo); orderSplitInfo.Id = id2; orderSplitInfo.AdjustedFreight = 0m; orderSplitInfo.ItemList = str + "," + text; orderSplitInfo.OrderIDNum = orderIDNum; orderSplitInfo.UpdateTime = DateTime.Now; new OrderSplitDao().UpdateOrderSplitInfo(orderSplitInfo); result = "1"; } else { result = "-3"; } } else { result = "-1"; } } else { result = "-2"; } } } return(result); }
public static string OrderSplitToTemp(OrderInfo OldOrderInfo, string skuid, string neworderid, int itemid) { IList <OrderSplitInfo> orderSplitItems; OrderSplitInfo info2; string itemList; int id; decimal num3; decimal num4; string[] strArray; LineItemInfo lineItemInfo; decimal num5; int num6; int orderIDNum; string str7; string str = string.Empty; string orderId = OldOrderInfo.OrderId; string str3 = string.Empty; string str4 = string.Empty; if (OldOrderInfo == null) { return(str); } if (!(neworderid == "0")) { orderSplitItems = new OrderSplitDao().GetOrderSplitItems(orderId); if (orderSplitItems.Count <= 0) { return("-2"); } itemList = string.Empty; id = 0; num6 = 0; orderIDNum = 0; str7 = string.Empty; int num8 = 0; foreach (OrderSplitInfo info3 in orderSplitItems) { if (info3.OrderIDNum == 1) { itemList = info3.ItemList; id = info3.Id; num8++; } if (info3.Id.ToString() == neworderid) { str7 = info3.ItemList; num6 = info3.Id; orderIDNum = info3.OrderIDNum; num8++; } if (num8 == 2) { break; } } } else { int maxOrderIDNum; orderSplitItems = new OrderSplitDao().GetOrderSplitItems(orderId); if (orderSplitItems.Count == 0) { foreach (LineItemInfo info in OldOrderInfo.LineItems.Values) { if (info.ID == itemid) { str3 = info.ID.ToString(); } else { str4 = str4 + "," + info.ID.ToString(); } } str4 = str4.Trim(new char[] { ',' }); info2 = new OrderSplitInfo(); maxOrderIDNum = 1; info2.OldOrderId = orderId; info2.OrderIDNum = maxOrderIDNum; info2.ItemList = str4; info2.UpdateTime = DateTime.Now; info2.AdjustedFreight = OldOrderInfo.AdjustedFreight; new OrderSplitDao().NewOrderSplit(info2); info2.ItemList = str3; info2.OrderIDNum = maxOrderIDNum + 1; info2.UpdateTime = DateTime.Now; info2.AdjustedFreight = 0M; new OrderSplitDao().NewOrderSplit(info2); return("1"); } itemList = string.Empty; id = 0; foreach (OrderSplitInfo info3 in orderSplitItems) { if (info3.OrderIDNum == 1) { itemList = info3.ItemList; id = info3.Id; break; } } LineItemInfo info4 = new LineItemDao().GetReturnMoneyByOrderIDAndProductID(orderId, skuid, itemid); if ((info4 != null) && ("," + itemList + ",").Contains("," + info4.ID + ",")) { num3 = 0M; num4 = 0M; strArray = itemList.Split(new char[] { ',' }); if (strArray.Length > 1) { foreach (string str6 in strArray) { lineItemInfo = new LineItemDao().GetLineItemInfo(Globals.ToNum(str6), orderId); if (lineItemInfo != null) { num5 = 0M; if (lineItemInfo.Type == 0) { num5 = ((lineItemInfo.ItemAdjustedPrice * lineItemInfo.Quantity) - lineItemInfo.ItemAdjustedCommssion) - lineItemInfo.DiscountAverage; } if (lineItemInfo.ID == itemid) { num4 = num5; str3 = lineItemInfo.ID.ToString(); } num3 += num5; } } if ((num3 > num4) && (num4 > 0M)) { info2 = new OrderSplitInfo(); maxOrderIDNum = new OrderSplitDao().GetMaxOrderIDNum(orderId); info2.Id = id; info2.OldOrderId = orderId; info2.OrderIDNum = 1; info2.ItemList = ("," + itemList + ",").Replace("," + info4.ID.ToString() + ",", ",").Trim(new char[] { ',' }); info2.UpdateTime = DateTime.Now; info2.AdjustedFreight = OldOrderInfo.AdjustedFreight; new OrderSplitDao().UpdateOrderSplitInfo(info2); info2.AdjustedFreight = 0M; info2.ItemList = info4.ID.ToString(); info2.OrderIDNum = maxOrderIDNum + 1; info2.UpdateTime = DateTime.Now; new OrderSplitDao().NewOrderSplit(info2); return("1"); } return("-3"); } return("-1"); } return("-2"); } num3 = 0M; num4 = 0M; strArray = itemList.Split(new char[] { ',' }); if (strArray.Length > 1) { foreach (string str6 in strArray) { lineItemInfo = new LineItemDao().GetLineItemInfo(Globals.ToNum(str6), orderId); if (lineItemInfo != null) { num5 = 0M; if (lineItemInfo.Type == 0) { num5 = ((lineItemInfo.ItemAdjustedPrice * lineItemInfo.Quantity) - lineItemInfo.ItemAdjustedCommssion) - lineItemInfo.DiscountAverage; } if (lineItemInfo.ID == itemid) { num4 = num5; str3 = lineItemInfo.ID.ToString(); } num3 += num5; } } if ((num3 > num4) && (num4 > 0M)) { info2 = new OrderSplitInfo { Id = id, OldOrderId = orderId, OrderIDNum = 1, ItemList = ("," + itemList + ",").Replace("," + str3 + ",", ",").Trim(new char[] { ',' }), UpdateTime = DateTime.Now, AdjustedFreight = OldOrderInfo.AdjustedFreight }; new OrderSplitDao().UpdateOrderSplitInfo(info2); info2.Id = num6; info2.AdjustedFreight = 0M; info2.ItemList = str7 + "," + str3; info2.OrderIDNum = orderIDNum; info2.UpdateTime = DateTime.Now; new OrderSplitDao().UpdateOrderSplitInfo(info2); return("1"); } return("-3"); } return("-1"); }
public static string UpdateAndCreateOrderByOrderSplitInfo(IList <OrderSplitInfo> infoList, OrderInfo oldorderinfo) { string str = "1"; using (DbConnection connection = DatabaseFactory.CreateDatabase().CreateConnection()) { connection.Open(); DbTransaction dbTran = connection.BeginTransaction(); StringBuilder builder = new StringBuilder(); try { decimal num = 0M; foreach (OrderSplitInfo info in infoList) { OrderInfo orderInfo = new OrderInfo(); if (info.OrderIDNum != 1) { string itemList = info.ItemList; if (string.IsNullOrEmpty(itemList)) { dbTran.Rollback(); return("订单拆分失败"); } string orderid = oldorderinfo.OrderId + "-" + info.OrderIDNum.ToString(); decimal num2 = 0M; decimal num3 = 0M; string[] strArray = itemList.Split(new char[] { ',' }); foreach (string str4 in strArray) { LineItemInfo lineItemInfo = new LineItemDao().GetLineItemInfo(Globals.ToNum(str4), ""); if (lineItemInfo != null) { num2 += lineItemInfo.ItemWeight * lineItemInfo.Quantity; num += num2; num3 += lineItemInfo.ItemAdjustedPrice * lineItemInfo.Quantity; } else { dbTran.Rollback(); return("订单详情更新失败"); } } builder.Append("," + itemList.Trim(new char[] { ',' })); if (!new LineItemDao().UpdateLineItemOrderID(itemList, orderid, dbTran)) { dbTran.Rollback(); return("订单详情更新失败"); } orderInfo.OrderId = orderid; orderInfo.OrderMarking = oldorderinfo.OrderMarking; orderInfo.ClientShortType = oldorderinfo.ClientShortType; orderInfo.Remark = oldorderinfo.Remark; orderInfo.ManagerMark = oldorderinfo.ManagerMark; orderInfo.AdjustedDiscount = 0M; orderInfo.OrderStatus = oldorderinfo.OrderStatus; orderInfo.CloseReason = oldorderinfo.CloseReason; orderInfo.OrderDate = oldorderinfo.OrderDate; orderInfo.PayDate = oldorderinfo.PayDate; orderInfo.ShippingDate = oldorderinfo.ShippingDate; orderInfo.FinishDate = oldorderinfo.FinishDate; orderInfo.UserId = oldorderinfo.UserId; orderInfo.Username = oldorderinfo.Username; orderInfo.EmailAddress = oldorderinfo.EmailAddress; orderInfo.RealName = oldorderinfo.RealName; orderInfo.QQ = oldorderinfo.QQ; orderInfo.Wangwang = oldorderinfo.Wangwang; orderInfo.MSN = oldorderinfo.MSN; orderInfo.ShippingRegion = oldorderinfo.ShippingRegion; orderInfo.Address = oldorderinfo.Address; orderInfo.ZipCode = oldorderinfo.ZipCode; orderInfo.ShipTo = oldorderinfo.ShipTo; orderInfo.TelPhone = oldorderinfo.TelPhone; orderInfo.CellPhone = oldorderinfo.CellPhone; orderInfo.ShipToDate = oldorderinfo.ShipToDate; orderInfo.ShippingModeId = oldorderinfo.ShippingModeId; orderInfo.ModeName = oldorderinfo.ModeName; orderInfo.RealShippingModeId = oldorderinfo.RealShippingModeId; orderInfo.RealModeName = oldorderinfo.RealModeName; orderInfo.RegionId = oldorderinfo.RegionId; orderInfo.Freight = info.AdjustedFreight; orderInfo.AdjustedFreight = info.AdjustedFreight; orderInfo.ShipOrderNumber = oldorderinfo.ShipOrderNumber; orderInfo.Weight = num2; orderInfo.Weight = oldorderinfo.Weight; orderInfo.ExpressCompanyName = oldorderinfo.ExpressCompanyName; orderInfo.ExpressCompanyAbb = oldorderinfo.ExpressCompanyAbb; orderInfo.PaymentTypeId = oldorderinfo.PaymentTypeId; orderInfo.PaymentType = oldorderinfo.PaymentType; orderInfo.PayCharge = oldorderinfo.PayCharge; orderInfo.RefundStatus = oldorderinfo.RefundStatus; orderInfo.RefundAmount = oldorderinfo.RefundAmount; orderInfo.RefundRemark = oldorderinfo.RefundRemark; orderInfo.Gateway = oldorderinfo.Gateway; orderInfo.Points = 0; orderInfo.DiscountAmount = 0M; orderInfo.ActivitiesId = ""; orderInfo.ActivitiesName = ""; orderInfo.ReducedPromotionId = 0; orderInfo.ReducedPromotionName = ""; orderInfo.ReducedPromotionAmount = 0M; orderInfo.IsReduced = false; orderInfo.SentTimesPointPromotionId = 0; orderInfo.SentTimesPointPromotionName = ""; orderInfo.FreightFreePromotionId = 0; orderInfo.FreightFreePromotionName = ""; orderInfo.IsFreightFree = oldorderinfo.IsFreightFree; orderInfo.GatewayOrderId = oldorderinfo.GatewayOrderId; orderInfo.IsPrinted = oldorderinfo.IsPrinted; orderInfo.InvoiceTitle = oldorderinfo.InvoiceTitle; orderInfo.ReferralUserId = oldorderinfo.ReferralUserId; orderInfo.ReferralPath = oldorderinfo.ReferralPath; orderInfo.RedPagerID = null; orderInfo.RedPagerActivityName = ""; orderInfo.RedPagerOrderAmountCanUse = 0M; orderInfo.RedPagerAmount = 0M; orderInfo.PointToCash = 0M; orderInfo.PointExchange = 0; if (!new OrderDao().CreatOrder(orderInfo, dbTran)) { dbTran.Rollback(); return("生成新订单失败"); } if (!new OrderDao().UpdateOrderSplitState(orderInfo.OrderId, 2, dbTran)) { dbTran.Rollback(); return("更新订单状态失败"); } } } foreach (OrderSplitInfo info in infoList) { if (info.OrderIDNum == 1) { decimal num4 = oldorderinfo.Weight - num; if (num4 > 0M) { oldorderinfo.Weight = num4; } oldorderinfo.AdjustedFreight = info.AdjustedFreight; if (!new OrderDao().UpdateOrder(oldorderinfo, dbTran)) { dbTran.Rollback(); return("更新订单失败"); } if (!new OrderDao().UpdateOrderSplitState(oldorderinfo.OrderId, 1, dbTran)) { dbTran.Rollback(); return("更新主订单状态失败"); } if (!new OrderSplitDao().DelOrderSplitByOrderID(oldorderinfo.OrderId, dbTran)) { dbTran.Rollback(); return("删除拆分记录失败"); } } } dbTran.Commit(); foreach (OrderSplitInfo info in infoList) { OrderInfo order = new OrderDao().GetOrderInfo(info.OldOrderId + ((info.OrderIDNum == 1) ? "" : ("-" + info.OrderIDNum.ToString()))); if (order != null) { if (oldorderinfo.PayDate.HasValue) { order.PayDate = oldorderinfo.PayDate; } int num5 = 0; foreach (LineItemInfo info5 in order.LineItems.Values) { if ((info5.OrderItemsStatus.ToString() == OrderStatus.Refunded.ToString()) || (info5.OrderItemsStatus.ToString() == OrderStatus.Returned.ToString())) { num5++; } } if (order.LineItems.Values.Count == num5) { order.OrderStatus = OrderStatus.Closed; } new OrderDao().UpdateOrder(order, null); } } return(str); } catch { dbTran.Rollback(); str = "系统错误"; } finally { connection.Close(); } } return(str); }