public override object Do(object obj) { CalculationDRMoneyBP bpObj = (CalculationDRMoneyBP)obj; if (bpObj == null) { return(false); } using (ISession session = Session.Open()) { foreach (CalculationDRMoneyDTO dto in bpObj.CalculationDRMoneyDTOs) { UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.DeductionRegister mDoc = UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.DeductionRegister.Finder.FindByID(dto.EntityKey); if (mDoc == null) { throw new Exception("单据不存在!" + dto.DocNo); } if (mDoc.DRMoney < mDoc.SumDRMoney + dto.DRMoney) { throw new Exception("单号" + mDoc.DocNo + "扣款失败:本次扣款金额大于可扣款金额!"); } if (bpObj.Type == 0)//累加 { mDoc.SumDRMoney = mDoc.SumDRMoney + dto.DRMoney; mDoc.LastDRDate = DateTime.Now; } if (bpObj.Type == 0)//累减 { mDoc.SumDRMoney = mDoc.SumDRMoney - dto.DRMoney; } #region 处理扣款状态 if (mDoc.SumDRMoney > 0 && mDoc.SumDRMoney < mDoc.DRMoney) { mDoc.DRStatus = DRStatusEnum.Part;//部分扣款 } if (mDoc.SumDRMoney == 0) { mDoc.DRStatus = DRStatusEnum.None;//未扣款 mDoc.LastDRDate = DateTime.MinValue; } if (mDoc.SumDRMoney == mDoc.DRMoney) { mDoc.DRStatus = DRStatusEnum.Closed;//扣款关闭 } #endregion } session.Commit(); } return(true); }
/// <summary> /// 更新扣款登记的累计扣款金额 /// </summary> /// <param name="type">操作来源类型,0:新增操作,1:删除操作,2:更新操作</param> /// <param name="oldMoney"></param> /// <param name="newMoney"></param> /// <param name="id"></param> public static void UpdateDeductionRegister(int type, decimal oldMoney, decimal newMoney, long id) { using (ISession session = Session.Open()) { UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.DeductionRegister doc = UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.DeductionRegister.Finder.FindByID(id); if (doc != null) { if (type == 0) { doc.SumDRMoney = doc.SumDRMoney + newMoney; doc.LastDRDate = DateTime.Now; } else if (type == 1) { doc.SumDRMoney = doc.SumDRMoney - newMoney; doc.LastDRDate = DateTime.MinValue; } else { doc.SumDRMoney = doc.SumDRMoney - oldMoney + newMoney; doc.LastDRDate = DateTime.Now; } if (doc.SumDRMoney > doc.DRMoney) { throw new Exception("本次扣款金额大于扣款登记的可扣款金额!单号:" + doc.DocNo); } if (doc.SumDRMoney > 0 && doc.SumDRMoney < doc.DRMoney) { doc.DRStatus = DRStatusEnum.Part;//部分扣款 } if (doc.SumDRMoney == 0) { doc.DRStatus = DRStatusEnum.None;//未扣款 } if (doc.SumDRMoney == doc.DRMoney) { doc.DRStatus = DRStatusEnum.Closed;//扣款关闭 } } session.Commit(); } }
/// <summary> /// 更新扣款登记的累计扣款金额及扣款状态 /// </summary> /// <param name="doc"></param> /// <param name="thisMoney"></param> private void UpdateDeductionRegister(UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.DeductionRegister doc, decimal thisMoney) { doc.SumDRMoney = doc.SumDRMoney + thisMoney; doc.LastDRDate = DateTime.Now; if (doc.SumDRMoney > 0 && doc.SumDRMoney < doc.DRMoney) { doc.DRStatus = DRStatusEnum.Part;//部分扣款 } if (doc.SumDRMoney == 0) { doc.DRStatus = DRStatusEnum.None;//未扣款 doc.LastDRDate = DateTime.MinValue; } if (doc.SumDRMoney == doc.DRMoney) { doc.DRStatus = DRStatusEnum.Closed;//扣款关闭 } }
/// <summary> /// 创建预付款通知单扣款明细 /// </summary> /// <param name="dto"></param> /// <param name="line"></param> /// <param name="LineNum"></param> private void CreatePrePaymentDRDetail(PreDeductionRegisterDTO dto, UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line, int LineNum) { UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.DeductionRegister drDoc = dto.DeductionRegisterKey.GetEntity(); if (drDoc != null) { UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentDRDetail subLine = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentDRDetail.Create(line); subLine.LineNum = LineNum; subLine.SrcDocNo = drDoc.DocNo; subLine.SrcDocID = drDoc.ID; subLine.SrcBusDate = drDoc.BusinessDate; subLine.SrcDocOrgKey = drDoc.OrgKey; subLine.SupplierKey = drDoc.SupplierKey; subLine.SumDRMoney = drDoc.DRMoney; subLine.CurrencyKey = drDoc.CurrencyKey; subLine.DRMoney = dto.ThisDRMoney; //UpdateDeductionRegister(drDoc, dto.ThisDRMoney); } }
public override object Do(object obj) { ApprovedDeductionRegisterBP bpObj = (ApprovedDeductionRegisterBP)obj; ErrorMessageDTO dto = new ErrorMessageDTO(); if (bpObj == null) { dto.IsSuccess = false; dto.ErrorMessage = "没有可返回的信息!"; return(dto); } UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.DeductionRegister mDoc = bpObj.EntityKey.GetEntity(); if (mDoc == null) { dto.IsSuccess = false; dto.ErrorMessage = "单据不存在或者已删除!"; return(dto); } try { if (bpObj.DocStatus == 0) { //提交 using (Session s = Session.Open()) { mDoc.StateMachineInstance.Opened_SubmitEventDriven(new UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.SubmintEvent()); s.InList(mDoc); s.Commit(); } } else if (bpObj.DocStatus == 1) { //审核 using (Session s = Session.Open()) { mDoc.StateMachineInstance.Approving_ApproveEventDriven(new UFIDA.U9.GeneralEvents.ApprovalResultEvent()); s.InList(mDoc); s.Commit(); } } else if (bpObj.DocStatus == 2) { if (mDoc.SumDRMoney > 0) { dto.IsSuccess = false; dto.ErrorMessage = "已执行扣款,不允许弃审!"; return(dto); } //弃审 using (Session s = Session.Open()) { mDoc.StateMachineInstance.Approved_UnApprovedEventDriven(new UFIDA.U9.Cust.GS.FI.DeductionRegisterBE.UnApprovedEvent()); s.InList(mDoc); s.Commit(); } } else if (bpObj.DocStatus == 3) { //收回 using (Session s = Session.Open()) { ApprovalService.Instance.CanRevocateAfterSubmit(mDoc, long.Parse(UFIDA.U9.Base.Context.LoginUserID.ToString())); ApprovalService.Instance.RevocateAfterSubmit(mDoc, long.Parse(UFIDA.U9.Base.Context.LoginUserID.ToString())); s.InList(mDoc); s.Commit(); } } dto.IsSuccess = true; } catch (Exception ex) { dto.IsSuccess = false; dto.ErrorMessage = ex.Message; } return(dto); }