public static PointManager GetInstance() { if (_instance == null) { _instance = new PointManager(); } return(_instance); }
public void ReturnRO(ROInfo roInfo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { if (this.GetROCurrentStatus(roInfo.SysNo) != (int)AppEnum.ROStatus.Audited) { throw new BizException("This RO is not Audited now ,can't be returned"); } roInfo.Status = (int)AppEnum.ROStatus.Returned; //update ro status Hashtable paramHash = new Hashtable(4); paramHash.Add("Status", roInfo.Status); paramHash.Add("ReturnTime", roInfo.ReturnTime); paramHash.Add("ReturnUserSysNo", roInfo.ReturnUserSysNo); paramHash.Add("SysNo", roInfo.SysNo); this.UpdateROMaster(paramHash); //update inventory foreach (ROItemInfo roItem in roInfo.ItemHash.Values) { //UnitCostManager.GetInstance().SetCost(roItem.ProductSysNo, roItem.Quantity, roItem.Cost); //Serious bug 2007-07-21 //退货时不影响一手商品的成本,只需要修改二手商品的成本 UnitCostManager.GetInstance().SetCost(roItem.ReturnSysNo, roItem.Quantity, roItem.Cost); InventoryManager.GetInstance().SetInStockQty(roInfo.StockSysNo, roItem.ReturnSysNo, roItem.Quantity); } //update customer score RMAInfo oRMA = RMAManager.GetInstance().LoadMaster(roInfo.RMASysNo); //先将销售单所得积分加上 PointManager.GetInstance().DoDelayPointSingle(oRMA.SOSysNo); //然后减去退货对应积分 if (roInfo.PointAmt != 0) { PointManager.GetInstance().SetScore(oRMA.CustomerSysNo, roInfo.PointAmt * (-1), (int)AppEnum.PointLogType.ReturnProduct, roInfo.SysNo.ToString()); } //生成收款单 //如果无有效的收款单-->生成soincome(normal, origin) SOIncomeInfo soIncome = SOIncomeManager.GetInstance().LoadValid((int)AppEnum.SOIncomeOrderType.RO, roInfo.SysNo); if (soIncome == null)//无有效收款单,生成收款单 { soIncome = new SOIncomeInfo(); soIncome.OrderType = (int)AppEnum.SOIncomeOrderType.RO; soIncome.OrderSysNo = roInfo.SysNo; soIncome.OrderAmt = soIncome.IncomeAmt = Util.TruncMoney(roInfo.CashAmt + roInfo.RedeemAmt); soIncome.IncomeStyle = (int)AppEnum.SOIncomeStyle.Normal; soIncome.IncomeUserSysNo = roInfo.ReturnUserSysNo; soIncome.IncomeTime = DateTime.Now; soIncome.Status = (int)AppEnum.SOIncomeStatus.Origin; SOIncomeManager.GetInstance().Insert(soIncome); } scope.Complete(); } }
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(); } }
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 CancelReturnRO(ROInfo roInfo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { if (this.GetROCurrentStatus(roInfo.SysNo) != (int)AppEnum.ROStatus.Returned) { throw new BizException("This RO is not returned now ,can't cancel return"); } roInfo.Status = (int)AppEnum.ROStatus.Audited; //update ro status Hashtable paramHash = new Hashtable(4); paramHash.Add("Status", roInfo.Status); paramHash.Add("ReturnTime", roInfo.ReturnTime); paramHash.Add("ReturnUserSysNo", roInfo.ReturnUserSysNo); paramHash.Add("SysNo", roInfo.SysNo); this.UpdateROMaster(paramHash); //update inventory foreach (ROItemInfo roItem in roInfo.ItemHash.Values) { //UnitCostManager.GetInstance().SetCost(roItem.ProductSysNo, roItem.Quantity*(-1), roItem.Cost); UnitCostManager.GetInstance().SetCost(roItem.ReturnSysNo, roItem.Quantity * (-1), roItem.Cost); InventoryManager.GetInstance().SetInStockQty(roInfo.StockSysNo, roItem.ReturnSysNo, roItem.Quantity * (-1)); } //update customer score if (roInfo.PointAmt != 0) { RMAInfo oRMA = RMAManager.GetInstance().LoadMaster(roInfo.RMASysNo); PointManager.GetInstance().SetScore(oRMA.CustomerSysNo, roInfo.PointAmt, (int)AppEnum.PointLogType.CancelReturn, roInfo.SysNo.ToString()); } //abandon soincome SOIncomeManager.GetInstance().ROCancelReturn(roInfo.SysNo); 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 static PointManager GetInstance() { if(_instance==null) _instance = new PointManager(); return _instance; }