Пример #1
0
 private void BalanceStoreOrder()
 {
     if (this.setting.OpenMultStore)
     {
         try
         {
             Dictionary <int, decimal> storeCommissionRate = this.GetStoreCommissionRate();
             if (storeCommissionRate.Count != 0)
             {
                 DbCommand sqlStringCommand = this.database.GetSqlStringCommand("SELECT OrderId,IsStoreCollect,OrderStatus,ShippingDate FROM Hishop_Orders o WHERE o.IsBalanceOver = 0 AND o.IsServiceOver = 1 AND o.StoreId > 0  ORDER BY FinishDate");
                 using (IDataReader dataReader = this.database.ExecuteReader(sqlStringCommand))
                 {
                     while (dataReader.Read())
                     {
                         string      text        = ((IDataRecord)dataReader)["OrderId"].ToNullString();
                         OrderStatus orderStatus = (OrderStatus)((IDataRecord)dataReader)["OrderStatus"].ToInt(0);
                         DateTime?   nullable    = null;
                         if (((IDataRecord)dataReader)["ShippingDate"] != DBNull.Value)
                         {
                             nullable = ((IDataRecord)dataReader)["ShippingDate"].ToDateTime();
                         }
                         StoreBalanceOrderInfo storeBalanceOrderInfo = this.GetStoreBalanceOrderInfo(text);
                         if (storeBalanceOrderInfo != null)
                         {
                             StringBuilder stringBuilder  = new StringBuilder();
                             decimal       num            = storeBalanceOrderInfo.GetShouldOverBalance(storeCommissionRate[storeBalanceOrderInfo.StoreId]);
                             decimal       platCommission = storeBalanceOrderInfo.GetPlatCommission(storeCommissionRate[storeBalanceOrderInfo.StoreId]);
                             if ((storeBalanceOrderInfo.OrderType == OrderType.ServiceOrder && orderStatus == OrderStatus.Closed) || (!nullable.HasValue && orderStatus == OrderStatus.Closed && storeBalanceOrderInfo.OrderType != OrderType.ServiceOrder))
                             {
                                 stringBuilder.Append(" UPDATE Hishop_Orders SET IsBalanceOver= 1 WHERE  OrderId='" + text + "' AND IsBalanceOver = 0 AND IsServiceOver = 1 ;");
                             }
                             else
                             {
                                 if (orderStatus == OrderStatus.Closed)
                                 {
                                     platCommission = default(decimal);
                                     num            = storeBalanceOrderInfo.Freight;
                                 }
                                 stringBuilder.Append("INSERT INTO[dbo].[Hishop_StoreBalanceDetails]([StoreId],[TradeDate],[TradeType],[TradeNo],[Income],[Expenses],[Balance],CreateTime,PlatCommission)");
                                 stringBuilder.AppendFormat("SELECT {0},'{1}',2,'{2}',{3},0,Balance,GETDATE(),{4} FROM Hishop_Stores s WHERE s.StoreId={0};", storeBalanceOrderInfo.StoreId, storeBalanceOrderInfo.OrderDate, storeBalanceOrderInfo.OrderId, num, storeBalanceOrderInfo.GetPlatCommission(storeCommissionRate[storeBalanceOrderInfo.StoreId]));
                                 stringBuilder.Append(" UPDATE s SET s.Balance = s.Balance + " + num + " FROM dbo.Hishop_Stores s WHERE s.storeId = " + storeBalanceOrderInfo.StoreId + ";");
                                 stringBuilder.Append(" UPDATE Hishop_Orders SET IsBalanceOver= 1 WHERE  OrderId='" + text + "' AND IsBalanceOver = 0 AND IsServiceOver = 1 ;");
                             }
                             sqlStringCommand.CommandText = stringBuilder.ToString();
                             this.database.ExecuteNonQuery(sqlStringCommand);
                         }
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             this.WriteLog(ex, DateTime.Now, DateTime.Now);
         }
     }
 }
Пример #2
0
        private void GetBalanceOnLineDetailById(HttpContext context)
        {
            StoreBalanceOrderInfo balanceDetails       = StoreBalanceHelper.GetBalanceDetails(context.Request.QueryString["id"].ToInt(0));
            IsoDateTimeConverter  isoDateTimeConverter = new IsoDateTimeConverter();

            isoDateTimeConverter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
            string s = JsonConvert.SerializeObject(balanceDetails, Formatting.Indented, isoDateTimeConverter);

            context.Response.Write(s);
            context.Response.End();
        }
Пример #3
0
        public StoreBalanceOrderInfo GetBalanceOrderDetail(string orderId, bool isOverBalance = true)
        {
            StoreBalanceOrderInfo result = new StoreBalanceOrderInfo();
            string text = "";

            text = ((!isOverBalance) ? "SELECT OrderId,OrderDate,OrderTotal,AdjustedFreight AS Freight,ISNULL(DeductionMoney,0) AS DeductionMoney,ISNULL(CouponValue,0) AS CouponValue,ISNULL(RefundAmount,0) AS RefundAmount,IsStoreCollect, OrderDate AS OverBalanceDate,0 AS OverBalance,Tax FROM Hishop_Orders WHERE OrderId = @OrderId" : "SELECT OrderId,OrderDate,OrderTotal,AdjustedFreight AS Freight,ISNULL(DeductionMoney,0) AS DeductionMoney,ISNULL(CouponValue,0) AS CouponValue,ISNULL(RefundAmount,0) AS RefundAmount,IsStoreCollect,d.CreateTime AS OverBalanceDate,ISNULL(InCome,0) AS OverBalance,0 AS Tax,d.PlatCommission FROM Hishop_Orders o,Hishop_StoreBalanceDetails d WHERE d.TradeNO = o.OrderId AND o.OrderId = @OrderId");
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand(text);

            base.database.AddInParameter(sqlStringCommand, "OrderId", DbType.String, orderId);
            using (IDataReader objReader = base.database.ExecuteReader(sqlStringCommand))
            {
                result = DataHelper.ReaderToModel <StoreBalanceOrderInfo>(objReader);
            }
            return(result);
        }