Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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");
        }
Esempio n. 6
0
        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);
        }