public override object Do(object obj)
        {
            BatchCreatePrePaymentDRDetailBP bpObj = (BatchCreatePrePaymentDRDetailBP)obj;

            if (bpObj == null)
            {
                return(false);
            }

            if (bpObj.PreDeductionRegisterDTOs.Count > 0)
            {
                //集合中的PrePaymentLineKey值一定都是相同,故只取第一个即可
                UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line = bpObj.PreDeductionRegisterDTOs[0].PrePaymentLineKey.GetEntity();
                if (line != null)
                {
                    using (ISession session = Session.Open())
                    {
                        int     lineNum    = 10; //行号
                        decimal sumDRMoney = 0;  //本次扣款合计
                        foreach (PreDeductionRegisterDTO dto in bpObj.PreDeductionRegisterDTOs)
                        {
                            CreatePrePaymentDRDetail(dto, line, lineNum);
                            lineNum    = lineNum + 10;
                            sumDRMoney = sumDRMoney + dto.ThisDRMoney;
                        }
                        UpdatePrePaymentLine(line, sumDRMoney);

                        session.Commit();
                    }
                }
            }

            return(true);
        }
 /// <summary>
 /// 给单行赋值
 /// </summary>
 /// <param name="lineDto"></param>
 /// <param name="line"></param>
 /// <param name="lineNum"></param>
 private void SetPrePaymentLine(PrePaymentLineDTO lineDto, UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line, int lineNum)
 {
     line.LineNum     = lineNum;
     line.SrcPOKey    = lineDto.PurchaseOrder;
     line.PrePayMoney = lineDto.PrePayMoney;
     line.ActualMoeny = lineDto.PrePayMoney;
 }
        /// <summary>
        /// 新增预付款通知单行
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="lineDto"></param>
        private void CreatePrePaymentLine(UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePayment doc, PrePaymentLineDTO lineDto, int lineNum)
        {
            UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine.Create(doc);
            line.LineNum     = lineNum;
            line.SrcPOKey    = lineDto.PurchaseOrder;
            line.PrePayMoney = lineDto.PrePayMoney;
            line.ActualMoeny = lineDto.PrePayMoney;

            line.SrcMoveDocID   = lineDto.SrcMoveDocID;
            line.SrcMoveDocNo   = lineDto.SrcMoveDocNo;
            line.SrcMoveLineID  = lineDto.SrcMoveLineID;
            line.SrcMoveLineNum = lineDto.SrcMoveLineNum;
        }
        /// <summary>
        /// 创建红字的预付款通知单
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="headDto"></param>
        private long CreatePrePayment(UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePayment doc, PrePaymentHeadDTO headDto)
        {
            UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePayment head = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePayment.Create();
            head.DocumentTypeKey = headDto.DocumentType;
            head.SrcDocType      = EnumBE.PrePaySrcDocTypeEnum.PO;
            head.CurrencyKey     = doc.CurrencyKey;
            head.SupplierKey     = doc.SupplierKey;
            head.POOrgKey        = doc.POOrgKey;
            head.BusinessDate    = DateTime.Today;
            head.DeptKey         = doc.DeptKey;
            head.BuyerKey        = doc.BuyerKey;
            head.PrePayDate      = head.BusinessDate;

            if (doc.POOrg != null)
            {
                head.AccountPeriod = PubHelperExtend.GetSOBAccountingPeriod(head.BusinessDate, doc.POOrg.ID);
            }

            head.SrcPrePayDocID = doc.ID;
            head.SrcPrePayDocNo = doc.DocNo;

            int lineNum = 10;//行号

            foreach (PrePaymentLineDTO lineDto in headDto.PrePaymentLineDTOs)
            {
                UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine.Create(head);
                line.LineNum     = lineNum;
                line.SrcPOKey    = lineDto.PurchaseOrder;
                line.PrePayMoney = lineDto.ThisRedMoney;
                line.ActualMoeny = lineDto.ThisRedMoney;

                UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine oldLine = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine.Finder.FindByID(lineDto.SrcPrePayLineID);
                if (oldLine != null)
                {
                    oldLine.SumRedFlushMoney = oldLine.SumRedFlushMoney + lineDto.ThisRedMoney;

                    if (oldLine.SrcPO != null)
                    {
                        UpdatePORedMoney(oldLine.SrcPO.ID, lineDto.ThisRedMoney);
                    }
                }
            }
            return(head.ID);
        }
        /// <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);
            }
        }
        /// <summary>
        /// 修改预付款通知单行中的挪出数量
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="lineDto"></param>
        private void UpdatePrePaymentLine(UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePayment doc, PrePaymentLineDTO lineDto)
        {
            UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine.Finder.FindByID(lineDto.ID);
            if (line != null)
            {
                line.SumMoveMoney = line.SumMoveMoney + lineDto.ThisMoveMoney;

                if (line.SrcPO != null)
                {
                    UFIDA.U9.PM.PO.PurchaseOrder poDoc = UFIDA.U9.PM.PO.PurchaseOrder.Finder.FindByID(line.SrcPO.ID);
                    if (poDoc != null)
                    {
                        decimal sumMoveMoney = 0;
                        if (!string.IsNullOrEmpty(poDoc.DescFlexField.PrivateDescSeg6))
                        {
                            sumMoveMoney = decimal.Parse(poDoc.DescFlexField.PrivateDescSeg6);
                        }
                        sumMoveMoney = sumMoveMoney + lineDto.ThisMoveMoney;
                        poDoc.DescFlexField.PrivateDescSeg6 = sumMoveMoney.ToString();
                    }
                }
            }
        }
        public override object Do(object obj)
        {
            BatchCreatePrePaymentBP bpObj = (BatchCreatePrePaymentBP)obj;

            if (bpObj == null)
            {
                return(null);
            }

            List <CommonDTO> resultList = new List <CommonDTO>();

            using (ISession session = Session.Open())
            {
                foreach (PrePaymentHeadDTO headDto in bpObj.PrePaymentHeadDTOs)
                {
                    UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePayment doc = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePayment.Create();

                    SetPrePaymentHead(headDto, doc);

                    int lineNum = 10;//行号
                    foreach (PrePaymentLineDTO lineDto in headDto.PrePaymentLineDTOs)
                    {
                        UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line = UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine.Create(doc);

                        SetPrePaymentLine(lineDto, line, lineNum);

                        lineNum = lineNum + 10;
                    }

                    CommonDTO result = new CommonDTO();
                    result.ID = doc.ID;//返回新创建的预付款通知单ID
                    resultList.Add(result);
                }
                session.Commit();
            }
            return(resultList);
        }
 /// <summary>
 /// 更新预付款通知单行的扣款金额及实付金额
 /// </summary>
 /// <param name="line"></param>
 /// <param name="totalMoney"></param>
 private void UpdatePrePaymentLine(UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine line, decimal totalMoney)
 {
     line.DRMoney = line.DRMoney + totalMoney;
 }
 private static PrePaymentDRDetail CreateDefault_Extend(UFIDA.U9.Cust.GS.FI.PrePaymentBE.PrePaymentLine parentEntity)
 {
     //TODO delete next code and add your custome code here
     throw new NotImplementedException();
 }