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); } } }
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(); }
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); }