Exemple #1
0
        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));
        }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
 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"]);
 }
Exemple #4
0
        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), "");
            }
        }
Exemple #5
0
        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();
            }
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        /// <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"]);
            }
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        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();
            }
        }
Exemple #11
0
        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();
            }
        }
Exemple #12
0
 public void UpdatePointDelay(SalePointDelayInfo oParam)
 {
     new PointDac().UpdatePointDelay(oParam);
 }