public int UpdatePointDelay(SalePointDelayInfo oParam) { string sql = @"UPDATE Sale_PointDelay SET Status=@Status WHERE SysNo=@SysNo"; SqlCommand cmd = new SqlCommand(sql); SqlParameter paramSysNo = new SqlParameter("@SysNo", SqlDbType.Int, 4); SqlParameter paramStatus = new SqlParameter("@Status", SqlDbType.Int, 4); if (oParam.SysNo != AppConst.IntNull) { paramSysNo.Value = oParam.SysNo; } else { paramSysNo.Value = System.DBNull.Value; } if (oParam.Status != AppConst.IntNull) { paramStatus.Value = oParam.Status; } else { paramStatus.Value = System.DBNull.Value; } cmd.Parameters.Add(paramSysNo); cmd.Parameters.Add(paramStatus); return(SqlHelper.ExecuteNonQuery(cmd)); }
public void ImportPointDelay() { if (!AppConfig.IsImportable) { throw new BizException("Is Importable is false"); } string sql = " select top 1 * from Sale_PointDelay "; DataSet ds = SqlHelper.ExecuteDataSet(sql); if (Util.HasMoreRow(ds)) { throw new BizException("the table Point Delay is not empty"); } TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { string sqlOld = @"select * from ipp2003..PointPayDelay "; DataSet dsOld = SqlHelper.ExecuteDataSet(sqlOld); if (Util.HasMoreRow(dsOld)) { foreach (DataRow dr in dsOld.Tables[0].Rows) { SalePointDelayInfo spInfo = new SalePointDelayInfo(); this.map(spInfo, dr); new PointDac().InsertPointDelay(spInfo); } } scope.Complete(); } }
private void map(SalePointDelayInfo oParam, DataRow tempdr) { oParam.SysNo = Util.TrimIntNull(tempdr["SysNo"]); oParam.SOSysNo = Util.TrimIntNull(tempdr["SOSysNo"]); oParam.CreateTime = Util.TrimDateNull(tempdr["CreateTime"]); oParam.Status = Util.TrimIntNull(tempdr["Status"]); }
public void DoDelayPoint() { string sql = @"select sp.* ,sm.pointamt,sm.customersysno from sale_pointdelay sp(nolock) inner join so_master sm(nolock) on sm.sysno = sp.sosysno inner join finance_soincome fs(nolock) on sm.sysno=fs.ordersysno where sm.pointamt <> 0 and sm.status = " + (int)AppEnum.SOStatus.OutStock + " and sp.status = " + (int)AppEnum.TriStatus.Origin + " and createtime<=" + Util.ToSqlString(DateTime.Now.AddDays(-3).ToString(AppConst.DateFormatLong)) + " and fs.ordertype=" + (int)AppEnum.SOIncomeOrderType.SO + " and fs.status=" + (int)AppEnum.SOIncomeStatus.Confirmed; DataSet ds = SqlHelper.ExecuteDataSet(sql); if (Util.HasMoreRow(ds)) { Hashtable failHash = new Hashtable(); foreach (DataRow dr in ds.Tables[0].Rows) { SalePointDelayInfo spInfo = new SalePointDelayInfo(); this.map(spInfo, dr); try { this.doDelayPoint(spInfo, (int)dr["PointAmt"], (int)dr["CustomerSysNo"]); } catch { failHash.Add(spInfo.SysNo, spInfo); } } TCPMail oMail = new TCPMail(); if (failHash.Count > 0) { StringBuilder sb = new StringBuilder(); sb.Append("<table align='center' border='1' cellpadding='0' cellspacing='0'>"); sb.Append(" <tr>"); sb.Append(" <td>SysNo</td>"); sb.Append(" <td>SOSysNo</td>"); sb.Append(" <td>CreateTime</td>"); sb.Append(" </tr>"); foreach (SalePointDelayInfo failInfo in failHash.Values) { sb.Append("<tr>"); sb.Append(" <td>" + failInfo.SysNo + "</td>"); sb.Append(" <td>" + failInfo.SOSysNo + "</td>"); sb.Append(" <td>" + failInfo.CreateTime + "</td>"); sb.Append("</tr>"); } sb.Append("</table>"); oMail.Send(AppConfig.AdminEmail, "Add Delay Point---Failed : " + DateTime.Now.ToString(AppConst.DateFormatLong), sb.ToString()); } else { oMail.Send(AppConfig.AdminEmail, "Add Delay Point---OK : " + DateTime.Now.ToString(AppConst.DateFormatLong), ""); } } else { TCPMail oMail = new TCPMail(); oMail.Send(AppConfig.AdminEmail, "Add Delay Point None---: " + DateTime.Now.ToString(AppConst.DateFormatLong), ""); } }
public void CancelInStockSR(SRInfo oParam) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { //更新退货单 this.UpdateSRMaster(oParam); //更新商品财务库存信息 foreach (SRItemInfo item in oParam.ItemHash.Values) { InventoryManager.GetInstance().SetInStockQty2(oParam.StockSysNo, item.ProductSysNo, -1 * item.Quantity); } SOInfo soInfo = SaleManager.GetInstance().LoadSO(oParam.SOSysNo); //扣除客户支付积分 if (soInfo.Status == (int)AppEnum.SOStatus.Return)//全部退货扣除积分,部分退货不扣除积分 { PointManager.GetInstance().SetScore(soInfo.CustomerSysNo, soInfo.PointPay * (-1), (int)AppEnum.PointLogType.CancelReturn, soInfo.SysNo.ToString()); } //如果有积分赠送则添加pointDelay,并修改订单赠送积分 int PointAmt = 0; foreach (SOItemInfo oItem in soInfo.ItemHash.Values) { if (oItem.ReturnQty > 0 && oItem.Point > 0) { PointAmt += oItem.ReturnQty * oItem.Point; } } if (PointAmt > 0) { int soPointAmt = soInfo.PointAmt + PointAmt; Hashtable ht = new Hashtable(); ht.Add("SysNo", soInfo.SysNo); ht.Add("PointAmt", soPointAmt); SaleManager.GetInstance().UpdateSOMaster(ht); } SalePointDelayInfo spInfo = new SalePointDelayInfo(); spInfo.SOSysNo = soInfo.SysNo; spInfo.CreateTime = DateTime.Now; spInfo.Status = (int)AppEnum.TriStatus.Origin; PointManager.GetInstance().InsertPointDelay(spInfo); scope.Complete(); } }
public void InsertPointDelay(SalePointDelayInfo oParam) { string sql = @"select * from sale_pointdelay where status>" + (int)AppEnum.TriStatus.Abandon + " and sosysno =" + oParam.SOSysNo; DataSet ds = SqlHelper.ExecuteDataSet(sql); if (Util.HasMoreRow(ds)) { throw new BizException("A valid delaypoint record of this SO already exists,can't add another.'"); } new PointDac().InsertPointDelay(oParam); }
public SalePointDelayInfo LoadValid(int soSysNo) { SalePointDelayInfo spInfo = null; string sql = @"select * from sale_pointdelay where status<>" + (int)AppEnum.TriStatus.Abandon + " and sosysno=" + soSysNo; DataSet ds = SqlHelper.ExecuteDataSet(sql); if (Util.HasMoreRow(ds)) { spInfo = new SalePointDelayInfo(); this.map(spInfo, ds.Tables[0].Rows[0]); } return(spInfo); }
/// <summary> /// 单独增加对应订单的积分 /// </summary> /// <param name="soSysNo"></param> public void DoDelayPointSingle(int soSysNo) { string sql = @"select sp.* ,sm.pointamt,sm.customersysno from sale_pointdelay sp inner join so_master sm on sm.sysno = sp.sosysno where sm.pointamt <> 0 and sm.status = " + (int)AppEnum.SOStatus.OutStock + " and sp.status = " + (int)AppEnum.TriStatus.Origin + " and sm.sysno =" + soSysNo; DataSet ds = SqlHelper.ExecuteDataSet(sql); if (Util.HasMoreRow(ds)) { SalePointDelayInfo spInfo = new SalePointDelayInfo(); DataRow dr = ds.Tables[0].Rows[0]; this.map(spInfo, dr); this.doDelayPoint(spInfo, (int)dr["PointAmt"], (int)dr["CustomerSysNo"]); } }
public int InsertPointDelay(SalePointDelayInfo oParam) { string sql = @"INSERT INTO Sale_PointDelay ( SOSysNo, CreateTime, Status ) VALUES ( @SOSysNo, @CreateTime, @Status )"; SqlCommand cmd = new SqlCommand(sql); SqlParameter paramSOSysNo = new SqlParameter("@SOSysNo", SqlDbType.Int, 4); SqlParameter paramCreateTime = new SqlParameter("@CreateTime", SqlDbType.DateTime); SqlParameter paramStatus = new SqlParameter("@Status", SqlDbType.Int, 4); if (oParam.SOSysNo != AppConst.IntNull) { paramSOSysNo.Value = oParam.SOSysNo; } else { paramSOSysNo.Value = System.DBNull.Value; } if (oParam.CreateTime != AppConst.DateTimeNull) { paramCreateTime.Value = oParam.CreateTime; } else { paramCreateTime.Value = System.DBNull.Value; } if (oParam.Status != AppConst.IntNull) { paramStatus.Value = oParam.Status; } else { paramStatus.Value = System.DBNull.Value; } cmd.Parameters.Add(paramSOSysNo); cmd.Parameters.Add(paramCreateTime); cmd.Parameters.Add(paramStatus); return(SqlHelper.ExecuteNonQuery(cmd)); }
private void doDelayPoint(SalePointDelayInfo spInfo, int pointDelt, int customerSysNo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { //更新point delay状态 spInfo.Status = (int)AppEnum.TriStatus.Handled; this.UpdatePointDelay(spInfo); //设置用户积分 PointManager.GetInstance().SetScore(customerSysNo, pointDelt, (int)AppEnum.PointLogType.AddPointLater, spInfo.SOSysNo.ToString()); scope.Complete(); } }
public void InStockSR(SRInfo oParam) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { //更新退货单 this.UpdateSRMaster(oParam); //更新商品财务库存信息 foreach (SRItemInfo item in oParam.ItemHash.Values) { InventoryManager.GetInstance().SetInStockQty2(oParam.StockSysNo, item.ProductSysNo, item.Quantity); } SOInfo soInfo = SaleManager.GetInstance().LoadSO(oParam.SOSysNo); //返还客户支付积分 if (soInfo.Status == (int)AppEnum.SOStatus.Return)//全部退货返还,部分退货不返还积分 { PointManager.GetInstance().SetScore(soInfo.CustomerSysNo, soInfo.PointPay, (int)AppEnum.PointLogType.ReturnProduct, soInfo.SysNo.ToString()); } //修改订单赠送的积分 int soPointAmt = 0; int PointAmt = 0; if (soInfo.Status == (int)AppEnum.SOStatus.PartlyReturn) { foreach (SOItemInfo oItem in soInfo.ItemHash.Values) { if (oItem.ReturnQty > 0 && oItem.Point > 0) { PointAmt += oItem.ReturnQty * oItem.Point; } } soPointAmt = soInfo.PointAmt - PointAmt; } else if (soInfo.Status == (int)AppEnum.SOStatus.Return) { soPointAmt = 0; } Hashtable ht = new Hashtable(); ht.Add("SysNo", soInfo.SysNo); ht.Add("PointAmt", soPointAmt); SaleManager.GetInstance().UpdateSOMaster(ht); //扣除赠送积分 SalePointDelayInfo spInfo = PointManager.GetInstance().LoadValid(soInfo.SysNo); if (spInfo != null) { if (spInfo.Status == (int)AppEnum.TriStatus.Handled)//积分已经加入客户账户,扣除对应积分 { PointManager.GetInstance().SetScore(soInfo.CustomerSysNo, soPointAmt * (-1), (int)AppEnum.PointLogType.ReturnProduct, soInfo.SysNo.ToString()); } //更新积分赠送记录状态 spInfo.Status = (int)AppEnum.TriStatus.Abandon; PointManager.GetInstance().UpdatePointDelay(spInfo); } scope.Complete(); } }
public void UpdatePointDelay(SalePointDelayInfo oParam) { new PointDac().UpdatePointDelay(oParam); }