public void ManualAbandon(int soIncomeSysNo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { SOIncomeInfo dbInfo = Load(soIncomeSysNo); if (dbInfo.Status != (int)AppEnum.SOIncomeStatus.Origin) { throw new BizException("soincome: the status is not origin, abandon failed."); } if (dbInfo.IncomeStyle != (int)AppEnum.SOIncomeStyle.Advanced) { throw new BizException("Only advanced income can be manually abandon"); } Hashtable ht = new Hashtable(5); ht.Add("SysNo", dbInfo.SysNo); ht.Add("Status", (int)AppEnum.SOIncomeStatus.Abandon); new SOIncomeDac().Update(ht); NetPayManager.GetInstance().SOIncomeAbandon(dbInfo.OrderSysNo); //如果Manual Abandon SaleManager.GetInstance().UnPaySO(dbInfo.OrderSysNo); DeleteSOIncomeVoucher(soIncomeSysNo); scope.Complete(); } }
public void Insert(SOIncomeInfo oParam) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { SOIncomeInfo dbInfo = LoadValid(oParam.OrderType, oParam.OrderSysNo); if (dbInfo != null) { throw new BizException("soincome: record exist already, insert failed"); } new SOIncomeDac().Insert(oParam); if (oParam.OrderType == (int)AppEnum.SOIncomeOrderType.SO) { SaleManager.GetInstance().PaySO(oParam.OrderSysNo); } scope.Complete(); } }
public void SOAbandon(int soSysNo) { /* * 这时候只能存在Advanced收款单,Normal的在取消出库的时候已经处理了 * 如果soincome(advanced,confirmed) 抛出异常:提示必须先手动取消财务确认 * 如果soincome(advanced, origin) 抛出异常:必须先手动作废收款单. */ TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { SOIncomeInfo dbInfo = LoadValid((int)AppEnum.SOIncomeOrderType.SO, soSysNo); if (dbInfo != null) { if (dbInfo.Status == (int)AppEnum.SOIncomeStatus.Confirmed) { throw new BizException(soSysNo + "收款单财务已经确认,请通知财务取消确认"); } if (dbInfo.Status == (int)AppEnum.SOIncomeStatus.Origin) { throw new BizException(soSysNo + "存在有效收款单,请手动作废收款单"); } } scope.Complete(); } }
public void VoidGroupBuyingTicket(int sysNo) { if (sysNo <= 0) { throw new ArgumentException("sysNo"); } var origin = m_GroupBuyingDA.LoadGroupBuyingTicketBySysNo(sysNo); if (origin == null) { //throw new BizException(string.Format("团购活动券[{0}]不存在!", origin.TicketID)); throw new BizException(string.Format(ResouceManager.GetMessageString("MKT.Promotion.GroupBuying", "GroupBuying_NotExsistGroupBuyingTicket"), origin.TicketID)); } if (origin.Status == GroupBuyingTicketStatus.Used || origin.Status == GroupBuyingTicketStatus.Abandon) { //throw new BizException(string.Format("团购活动券[{0}]已经使用或作废,不能作废!", origin.TicketID)); throw new BizException(string.Format(ResouceManager.GetMessageString("MKT.Promotion.GroupBuying", "GroupBuying_AlreadyUseGroupBuyingTicket"), origin.TicketID)); } TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { if (origin.Status == GroupBuyingTicketStatus.Created) { m_GroupBuyingDA.UpdateGroupBuyingTicketStatus(sysNo, GroupBuyingTicketStatus.Abandon); } else { var soIncomeInfo = new SOIncomeInfo() { OrderSysNo = origin.SysNo.Value, OrderType = SOIncomeOrderType.GroupRefund, OrderAmt = origin.TicketAmt.Value * -1, IncomeAmt = origin.TicketAmt.Value * -1, GiftCardPayAmt = 0, PointPay = 0, IncomeStyle = SOIncomeOrderStyle.Advanced, //ReferenceID = origin.GroupBuyingSysNo.ToString(), Status = SOIncomeStatus.Origin, Note = "虚拟团购负收款单", CompanyCode = origin.CompanyCode, MasterSoSysNo = origin.OrderSysNo, }; //生成付款单 ExternalDomainBroker.CreateSOIncome(soIncomeInfo); var item = new GroupBuyingTicketInfo { SysNo = origin.SysNo, RefundDate = DateTime.Now, RefundStatus = RefundStatus.Origin, RefundMemo = "退款且作废团购券", Status = GroupBuyingTicketStatus.Abandon }; m_GroupBuyingDA.UpdateGroupBuyingTicketRefundInfo(item); } scope.Complete(); } }
private void CreateSOIncome() { SOIncomeInfo soIncomeInfo = CurrentSOIncomeInfo; if (soIncomeInfo == null) { soIncomeInfo = new SOIncomeInfo(); soIncomeInfo.OrderType = SOIncomeOrderType.SO; soIncomeInfo.OrderSysNo = SOSysNo; soIncomeInfo.OrderAmt = UtilityHelper.TruncMoney(CurrentSO.BaseInfo.SOTotalAmount); soIncomeInfo.IncomeAmt = CurrentSO.BaseInfo.ReceivableAmount; soIncomeInfo.PrepayAmt = Math.Max(CurrentSO.BaseInfo.PrepayAmount.Value, 0); soIncomeInfo.IncomeStyle = (int)SOIncomeOrderStyle.Normal; soIncomeInfo.Status = (int)SOIncomeStatus.Origin; soIncomeInfo.GiftCardPayAmt = CurrentSO.BaseInfo.GiftCardPay; soIncomeInfo.PointPay = CurrentSO.BaseInfo.PointPay; soIncomeInfo.PayAmount = CurrentSO.BaseInfo.ReceivableAmount; soIncomeInfo.CompanyCode = CurrentSO.CompanyCode; if (CurrentSO.BaseInfo.SOSplitMaster != null) { soIncomeInfo.MasterSoSysNo = CurrentSO.BaseInfo.SOSplitMaster.Value; //获取母单号 } ExternalDomainBroker.CreateSOIncome(soIncomeInfo); } }
public void UnConfirm(int soIncomeSysNo, int userSysNo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { SOIncomeInfo dbInfo = Load(soIncomeSysNo); if (dbInfo.Status != (int)AppEnum.SOIncomeStatus.Confirmed) { throw new BizException("soincome: only confirmed status can be unconfirmed"); } dbInfo.Status = (int)AppEnum.SOIncomeStatus.Origin; Hashtable ht = new Hashtable(5); ht.Add("SysNo", soIncomeSysNo); ht.Add("ConfirmTime", DateTime.Now); ht.Add("ConfirmUserSysNo", userSysNo); ht.Add("Status", dbInfo.Status); new SOIncomeDac().Update(ht); DeleteSOIncomeVoucher(soIncomeSysNo); scope.Complete(); } }
/// <summary> /// 创建财务收款单 /// </summary> /// <param name="refundBalanceInfo"></param> private void CreateSOIncome(RefundBalanceInfo refundBalanceInfo) { SOIncomeInfo soIncomeInfo = new SOIncomeInfo() { OrderSysNo = refundBalanceInfo.SysNo.Value, OrderType = SOIncomeOrderType.RO_Balance, OrderAmt = refundBalanceInfo.CashAmt.Value * -1, IncomeAmt = (refundBalanceInfo.RefundPayType == RefundPayType.TransferPointRefund) ? 0 : refundBalanceInfo.CashAmt.Value * -1, GiftCardPayAmt = -refundBalanceInfo.GiftCardAmt.Value, PointPay = -refundBalanceInfo.PointAmt.Value, IncomeStyle = SOIncomeOrderStyle.RO_Balance, ReferenceID = "", Status = SOIncomeStatus.Origin, Note = "", CompanyCode = refundBalanceInfo.CompanyCode }; ExternalDomainBroker.CreateSOIncome(soIncomeInfo); if (refundBalanceInfo.RefundPayType == RefundPayType.TransferPointRefund) { int userSysNo = ExternalDomainBroker.GetUserSysNo(AppSettingManager.GetSetting("RMA", RMAConst.AutoRMAPhysicalUserName), AppSettingManager.GetSetting("RMA", RMAConst.AutoRMALoginUserName), AppSettingManager.GetSetting("RMA", RMAConst.AutoRMASourceDirectoryKey)); ExternalDomainBroker.AutoConfirmIncomeInfo(soIncomeInfo.SysNo.Value, refundBalanceInfo.SysNo.Value, userSysNo); } }
public void UpdateStatusSplitForSO(SOIncomeInfo entity) { DataCommand command = DataCommandManager.GetDataCommand("UpdateSOIncomeStatusSplitForSO"); command.SetParameterValue("@SysNo", entity.SysNo); command.SetParameterValue("@Status", entity.Status); command.ExecuteNonQuery(); }
/// <summary> /// 创建销售收款单 /// </summary> /// <param name="entity">收款单信息</param> /// <returns>创建好的销售收款单</returns> public static int?CreateSOIncome(SOIncomeInfo entity) { DataCommand command = DataCommandManager.GetDataCommand("InsertSOIncome"); command.SetParameterValue(entity); entity.SysNo = Convert.ToInt32(command.ExecuteScalar()); return(entity.SysNo); }
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(); } }
/// <summary> /// 自动确认收款单 /// </summary> /// <param name="soIncomeSysNo">收款单系统编号</param> /// <param name="soSysNo">订单系统编号</param> /// <param name="opUserSysNo">操作用户系统编号</param> public void AutoConfirmIncome(int soIncomeSysNo, int soSysNo, int opUserSysNo) { var soIncomeInfo = new SOIncomeInfo(); soIncomeInfo.SysNo = soIncomeSysNo; soIncomeInfo.ConfirmUserSysNo = opUserSysNo; soIncomeInfo.OrderSysNo = soSysNo; ObjectFactory <SOIncomeProcessor> .Instance.Confirm(soIncomeInfo, true); }
/// <summary> /// 创建销售收款单 /// </summary> /// <param name="entity">收款单基本信息</param> /// <returns></returns> public SOIncomeInfo Create(SOIncomeInfo entity) { DataCommand command = DataCommandManager.GetDataCommand("InsertSOIncome"); command.SetParameterValue(entity); entity.SysNo = Convert.ToInt32(command.ExecuteScalar()); if (entity.SysNo != 0) { return(LoadBySysNo(entity.SysNo.Value)); } return(entity); }
protected override void CreateAOAndAbandonSO(SOIncomeInfo soIncomeInfo, SOIncomeRefundInfo soIncomeRefundInfo) { // 下面类型订单不用创建负收款单 if (!NeedCreateAO(CurrentSO.BaseInfo.SpecialSOType)) { Abandon(); } else { base.CreateAOAndAbandonSO(soIncomeInfo, soIncomeRefundInfo); } }
public static SOIncomeInfo UpdateSOIncomeStatus(SOIncomeInfo soIncomeInfo) { DataCommand command = DataCommandManager.GetDataCommand("UpdateSOIncomeStatus"); command.SetParameterValue("@SysNo", soIncomeInfo.SysNo); command.SetParameterValue("@Status", soIncomeInfo.Status); command.SetParameterValue("@ConfirmTime", soIncomeInfo.ConfirmTime); command.SetParameterValue("@ConfirmUserSysNo", soIncomeInfo.ConfirmUserSysNo); command.ExecuteNonQuery(); return(soIncomeInfo); }
/// <summary> /// 查询退款 /// </summary> /// <param name="sysNo">退款单号</param> public void QueryRefund(int sysNo) { string queryUrl = AppSettingManager.GetSetting("Invoice", "TenPayQueryRefundUrl"); var soincomInfo = ObjectFactory <ISOIncomeDA> .Instance.LoadBySysNo(sysNo); Dictionary <string, string> reqParams = new Dictionary <string, string>(); reqParams["input_charset"] = "UTF-8"; reqParams["service_version"] = "1.0"; reqParams["sign_key_index"] = "1"; reqParams["partner"] = AppSettingManager.GetSetting("Invoice", "TenPayParnter"); reqParams["out_trade_no"] = soincomInfo.OrderSysNo.ToString(); reqParams["sign_type"] = "MD5"; string reqData = ""; string[] allKeys = reqParams.Keys.ToArray(); Array.Sort(allKeys); foreach (var item in allKeys) { reqData += string.Format("{0}={1}&", item, reqParams[item]); } string sign = GetMD5(reqData + string.Format("key={0}", AppSettingManager.GetSetting("Invoice", "TenPaySecretKey"))); reqData += string.Format("sign={0}", sign); var resultXml = HttpRequestReturnXml(string.Format("{0}?{1}", queryUrl, reqData), "GET", ""); var result = new TransactionQueryBill(); var code = resultXml.SelectSingleNode("root/retcode").InnerText;//请求结果 if (code == "0") { SOIncomeInfo updateEntity = new SOIncomeInfo() { SysNo = sysNo, ExternalKey = resultXml.SelectSingleNode("root/refund_id_0").InnerText }; string status = resultXml.SelectSingleNode("root/refund_state_0").InnerText; if (status == "4" || status == "10") { updateEntity.Status = SOIncomeStatus.Processed; ObjectFactory <ISOIncomeDA> .Instance.UpdateStatus(updateEntity); } else if (status == "3" || status == "5" || status == "6") { updateEntity.Status = SOIncomeStatus.ProcessingFailed; ObjectFactory <ISOIncomeDA> .Instance.UpdateStatus(updateEntity); } } }
public static void ConfirmRefundSOIncomeNet(RMARefundInfo info, SOIncomeInfo soIncomeInfo) { DataCommand command = DataCommandManager.GetDataCommand("ConfirmRefundSOIncomeNet"); command.SetParameterValue("@OrderSysNo", info.SysNo); command.SetParameterValue("@OrderType", info.OrderType); command.SetParameterValue("@Status", soIncomeInfo.Status); command.SetParameterValue("@ExternalKey", soIncomeInfo.ExternalKey); command.SetParameterValue("@ConfirmUserSysNo", info.RefundUserSysNo); command.SetParameterValue("@ConfirmUserName", info.RefundUserName); command.SetParameterValue("@ConfirmTime", info.RefundDate); command.ExecuteNonQuery(); }
protected virtual void CreateAOAndAbandonSO(SOIncomeInfo soIncomeInfo, SOIncomeRefundInfo soIncomeRefundInfo) { TransactionOptions options = new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted }; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { AbandonSO(); ExternalDomainBroker.CreateSOIncome(soIncomeInfo); ExternalDomainBroker.CreateSOIncomeRefundInfo(soIncomeRefundInfo); scope.Complete(); } }
private void map(SOIncomeInfo oParam, DataRow tempdr) { oParam.SysNo = Util.TrimIntNull(tempdr["SysNo"]); oParam.OrderType = Util.TrimIntNull(tempdr["OrderType"]); oParam.OrderSysNo = Util.TrimIntNull(tempdr["OrderSysNo"]); oParam.OrderAmt = Util.TrimDecimalNull(tempdr["OrderAmt"]); oParam.IncomeStyle = Util.TrimIntNull(tempdr["IncomeStyle"]); oParam.IncomeAmt = Util.TrimDecimalNull(tempdr["IncomeAmt"]); oParam.IncomeTime = Util.TrimDateNull(tempdr["IncomeTime"]); oParam.IncomeUserSysNo = Util.TrimIntNull(tempdr["IncomeUserSysNo"]); oParam.ConfirmTime = Util.TrimDateNull(tempdr["ConfirmTime"]); oParam.ConfirmUserSysNo = Util.TrimIntNull(tempdr["ConfirmUserSysNo"]); oParam.Note = Util.TrimNull(tempdr["Note"]); oParam.Status = Util.TrimIntNull(tempdr["Status"]); }
private void CustomsAbandonSO() { SOIncomeInfo soIncomeInfo = new SOIncomeInfo { OrderAmt = -CurrentSOIncome.OrderAmt, OrderType = SOIncomeOrderType.AO, Note = this.Note,//ResourceHelper.Get("Res_SO_Abandon_CreateAO"), ReferenceID = "", Status = SOIncomeStatus.Origin, OrderSysNo = CurrentSO.SysNo, IncomeAmt = -(CurrentSOIncome.OrderAmt - CurrentSOIncome.PrepayAmt - CurrentSOIncome.GiftCardPayAmt), PayAmount = -(CurrentSOIncome.OrderAmt - CurrentSOIncome.PrepayAmt - CurrentSOIncome.GiftCardPayAmt), IncomeStyle = CurrentSOIncome.IncomeStyle, PrepayAmt = -CurrentSOIncome.PrepayAmt, GiftCardPayAmt = -CurrentSOIncome.GiftCardPayAmt, PointPay = -CurrentSOIncome.PointPay, CompanyCode = CurrentSO.CompanyCode }; SOIncomeRefundInfo soIncomeRefundInfo = new SOIncomeRefundInfo { OrderSysNo = SOSysNo, OrderType = RefundOrderType.AO, SOSysNo = SOSysNo, RefundPayType = RefundPayType.NetWorkRefund, //BankName = refundInfo.BankName, //BranchBankName = refundInfo.BranchBankName, //CardNumber = refundInfo.CardNumber, //CardOwnerName = refundInfo.CardOwnerName, //PostAddress = refundInfo.PostAddress, //PostCode = refundInfo.PostCode, //ReceiverName = refundInfo.ReceiverName, Note = this.Note, HaveAutoRMA = false, RefundPoint = 0, RefundReason = RefundReason, CompanyCode = CurrentSO.CompanyCode }; soIncomeRefundInfo.Status = RefundStatus.Origin; soIncomeRefundInfo.RefundCashAmt = CurrentSOIncome.OrderAmt - CurrentSOIncome.GiftCardPayAmt; soIncomeRefundInfo.RefundGiftCard = CurrentSOIncome.GiftCardPayAmt; //验证 ValidateAbandonSO(false); //作废订单 CreateAOAndAbandonSO(soIncomeInfo, soIncomeRefundInfo); }
public static RMARefundInfo Valid(int rmaRefundSysNo, LoginUser operateUser) { RMARefundInfo info = LoadWithRefundSysNo(rmaRefundSysNo, operateUser.SellerSysNo); if (info == null) { throw new BusinessException(L("未找到编号为【{0}】的退款单", rmaRefundSysNo)); } if (info.Status != RMARefundStatus.WaitingAudit) { throw new BusinessException(L("退款单不是“待审核”,不能审核通过")); } //info.Status = RMARefundStatus.WaitingRefund; info.Status = RMARefundStatus.Refunded; info.SOIncomeStatus = SOIncomeStatus.Origin; info.AuditUserSysNo = operateUser.UserSysNo; info.AuditUserName = operateUser.UserDisplayName; info.AuditDate = DateTime.Now; using (ITransaction ts = TransactionManager.Create()) { RMARefundDA.Update(info); //更新BankInfoStatus的为审核通过 RMARefundDA.AuditSOIncomeRefund(info.SysNo.Value, (int)info.OrderType, (int)RefundStatus.Refunded, operateUser.UserSysNo, operateUser.UserDisplayName); RMARefundDA.BatchUpdateRegisterRefundStatus(info.SysNo.Value, RMARefundStatus.WaitingRefund); //写入退款单 SOIncomeInfo soIncomeInfo = new SOIncomeInfo() { OrderType = SOIncomeOrderType.RO, OrderSysNo = info.SysNo, OrderAmt = -1 * info.CashAmt, IncomeStyle = SOIncomeOrderStyle.RO, IncomeAmt = -1 * info.CashAmt, PayAmount = -1 * info.CashAmt, InUserSysNo = operateUser.UserSysNo, InUserName = operateUser.UserDisplayName, Status = SOIncomeStatus.Origin, PointPay = info.PointPay, GiftCardPayAmt = info.GiftCardAmt, }; RMARefundDA.CreateRefundSOIncome(soIncomeInfo); ts.Complete(); } return(info); }
/// <summary> /// 更新收款单状态 /// </summary> /// <param name="entity"></param> public void UpdateStatus(SOIncomeInfo entity) { DataCommand command = DataCommandManager.GetDataCommand("UpdateSOIncomeStatus"); command.SetParameterValue("@SysNo", entity.SysNo); command.SetParameterValue("@Status", entity.Status); command.SetParameterValue("@ExternalKey", entity.ExternalKey); if (entity.ConfirmUserSysNo.HasValue) { command.SetParameterValue("@ConfirmUserSysNo", entity.ConfirmUserSysNo); } else { command.SetParameterValueAsCurrentUserSysNo("@ConfirmUserSysNo"); } command.ExecuteNonQuery(); }
public static SOIncomeInfo CreateSOIncome(SOIncomeInfo entity) { SOIncomeQueryFilter query = new SOIncomeQueryFilter(); query.SysNo = null; query.OrderSysNo = entity.OrderSysNo.HasValue ? entity.OrderSysNo.ToString() : null; query.OrderType = entity.OrderType; query.InIncomeStatusList = null; List <SOIncomeInfo> result = SOIncomeDA.GetListByCriteria(query); if (result.Exists(s => s.Status != SOIncomeStatus.Abandon)) { throw new BusinessException("收款单记录已经存在,插入操作失败。"); } SOIncomeDA.CreateSOIncome(entity); return(entity); }
/// <summary> /// 创建财务收款信息 /// </summary> /// <param name="postPayInfo"></param> /// <param name="soBaseInfo"></param> /// <returns></returns> private SOIncomeInfo CreateSOIncomeInfo(PostPayInfo postPayInfo, SOBaseInfo soBaseInfo) { var soIncomeInfo = new SOIncomeInfo() { OrderType = SOIncomeOrderType.SO, OrderSysNo = postPayInfo.SOSysNo.Value, OrderAmt = soBaseInfo.SOTotalAmount, IncomeStyle = SOIncomeOrderStyle.Advanced, IncomeAmt = postPayInfo.PayAmount, PrepayAmt = soBaseInfo.PrepayAmount, Status = SOIncomeStatus.Origin, PayAmount = postPayInfo.PayAmount, PointPay = soBaseInfo.PointPay, GiftCardPayAmt = soBaseInfo.GiftCardPay, CompanyCode = soBaseInfo.CompanyCode }; return(ObjectFactory <SOIncomeProcessor> .Instance.Create(soIncomeInfo)); }
public static void CreateRefundSOIncome(SOIncomeInfo soIncomeInfo) { DataCommand command = DataCommandManager.GetDataCommand("CreateRefundSOIncome"); command.SetParameterValue("@OrderType", soIncomeInfo.OrderType); command.SetParameterValue("@OrderSysNo", soIncomeInfo.OrderSysNo); command.SetParameterValue("@OrderAmt", soIncomeInfo.OrderAmt); command.SetParameterValue("@IncomeStyle", soIncomeInfo.OrderType); command.SetParameterValue("@IncomeAmt", soIncomeInfo.IncomeAmt); command.SetParameterValue("@PayAmount", soIncomeInfo.PayAmount); command.SetParameterValue("@IncomeUserSysNo", soIncomeInfo.InUserSysNo); command.SetParameterValue("@IncomeUserName", soIncomeInfo.InUserName); command.SetParameterValue("@Status", soIncomeInfo.Status); command.SetParameterValue("@PointPayAmt", soIncomeInfo.PointPay); command.SetParameterValue("@GiftCardPayAmt", soIncomeInfo.GiftCardPayAmt); command.SetParameterValue("@CompanyCode", soIncomeInfo.CompanyCode); command.SetParameterValue("@LanguageCode", soIncomeInfo.LanguageCode); command.SetParameterValue("@StoreCompanyCode", soIncomeInfo.CompanyCode); command.ExecuteNonQuery(); }
public SOIncomeInfo load(string sql) { SOIncomeInfo oInfo = null; TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { DataSet ds = SqlHelper.ExecuteDataSet(sql); if (Util.HasMoreRow(ds)) { oInfo = new SOIncomeInfo(); map(oInfo, ds.Tables[0].Rows[0]); } scope.Complete(); } return(oInfo); }
public void Verify(int netpaySysNo, int userSysNo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { NetPayInfo dbInfo = Load(netpaySysNo); if (dbInfo.Status != (int)AppEnum.NetPayStatus.Origin) { throw new BizException("netpay: not origin, can't verify"); } dbInfo.Status = (int)AppEnum.NetPayStatus.Verified; Hashtable ht = new Hashtable(5); ht.Add("SysNo", dbInfo.SysNo); ht.Add("ApproveUserSysNo", userSysNo); ht.Add("ApproveTime", DateTime.Now); ht.Add("Status", dbInfo.Status); new NetPayDac().Update(ht); //so income 的唯一性那边会判断的 SOIncomeInfo oIncome = new SOIncomeInfo(); oIncome.OrderType = (int)AppEnum.SOIncomeOrderType.SO; oIncome.OrderSysNo = dbInfo.SOSysNo; oIncome.OrderAmt = dbInfo.PayAmount; oIncome.IncomeStyle = (int)AppEnum.SOIncomeStyle.Advanced; oIncome.IncomeAmt = dbInfo.PayAmount; oIncome.IncomeUserSysNo = userSysNo; oIncome.IncomeTime = DateTime.Now; oIncome.Status = (int)AppEnum.SOIncomeStatus.Origin; SOIncomeManager.GetInstance().Insert(oIncome); scope.Complete(); } }
/// <summary> /// 构造销售收款单信息 /// </summary> private SOIncomeInfo CreateSOIncomeInfo(NetPayInfo netpayInfo, SOBaseInfo soBaseInfo) { var soIncomeInfo = new SOIncomeInfo() { IncomeStyle = SOIncomeOrderStyle.Advanced, OrderType = SOIncomeOrderType.SO, OrderSysNo = netpayInfo.SOSysNo, OrderAmt = soBaseInfo.SOTotalAmount, IncomeAmt = netpayInfo.PayAmount, PrepayAmt = soBaseInfo.PrepayAmount, Status = SOIncomeStatus.Origin, MasterSoSysNo = soBaseInfo.SOSplitMaster, PointPay = soBaseInfo.PointPay / decimal.Parse(AppSettingManager.GetSetting("Invoice", "PointExChangeRate")), GiftCardPayAmt = soBaseInfo.GiftCardPay, PayAmount = netpayInfo.PayAmount, CompanyCode = soBaseInfo.CompanyCode //取订单上的CompanyCode }; //SOIncomeProcessor检查,如果已经存在收款单记录,则不允许创建 return(ObjectFactory <SOIncomeProcessor> .Instance.Create(soIncomeInfo)); }
private static RefundResult ProcessNetWorkRefund(SOIncomeInfo entity, SOInfo soInfo) { var result = new RefundResult(); List <string> payTypeList = CodeNamePairManager.GetList("Inventory", "ChinaPayPayTypeList").Select(p => p.Code).ToList(); if (payTypeList.Contains(soInfo.Payment.PayTypeID.ToString())) { var biz = new IPSPayUtils(); var refundEntity = new RefundEntity { SOSysNo = soInfo.SOSysNo, RefundSysNo = entity.OrderSysNo.Value, RefundAmt = Math.Abs(entity.IncomeAmt.Value), CompanyCode = entity.CompanyCode, OrderDate = soInfo.OrderDate.Value }; refundEntity.ProductAmount = Math.Abs(entity.IncomeAmt.Value) - soInfo.Amount.ShipPrice - soInfo.TariffAmt; refundEntity.TaxFeeAmount = soInfo.TariffAmt; refundEntity.ShippingFeeAmount = soInfo.Amount.ShipPrice; if (soInfo.Payment.PayTypeID >= 200 && soInfo.Payment.PayTypeID < 300) { result = biz.Refund(refundEntity); } else { throw new BusinessException("未实现此支付方式"); } } else { result.Result = false; result.Message = ("支付方式" + soInfo.Payment.PayTypeName + "不支持网关直退。"); } return(result); }
public void InsertSOIncomeVoucherList(Hashtable ht) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { foreach (SOIncomeVoucherInfo oParam in ht.Keys) { SOIncomeVoucherInfo newInfo = LoadSOIncomeVoucher(oParam); if (newInfo == null) { InsertSOIncomeVoucher(oParam); } else { newInfo.VoucherID = oParam.VoucherID; newInfo.VoucherTime = oParam.VoucherTime; UpdateSOIncomeVoucher(newInfo); } SOIncomeInfo oInfo = SOIncomeManager.GetInstance().Load(oParam.FSISysNo); if (oInfo.OrderType == (int)AppEnum.SOIncomeOrderType.RO) { RMARefundInfo oRefundInfo = RMARefundManager.GetInstance().LoadRMARefund(oInfo.OrderSysNo); if (oRefundInfo != null) { Hashtable rmaht = new Hashtable(); rmaht.Add("SysNo", oRefundInfo.SysNo); rmaht.Add("VoucherID", oParam.VoucherID); rmaht.Add("VoucherTime", oParam.VoucherTime); RMARefundManager.GetInstance().UpdateMasterMemo(rmaht); } } } scope.Complete(); } }
public void ROCancelReturn(int roSysNo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { SOIncomeInfo dbInfo = LoadValid((int)AppEnum.SOIncomeOrderType.RO, roSysNo); if (dbInfo.Status == (int)AppEnum.SOIncomeStatus.Confirmed) { throw new BizException("收款单财务已经确认,请通知财务取消确认"); } Hashtable ht = new Hashtable(5); ht.Add("SysNo", dbInfo.SysNo); ht.Add("Status", (int)AppEnum.SOIncomeStatus.Abandon); new SOIncomeDac().Update(ht); scope.Complete(); } }