/// <summary> /// 插入AR_Application_Line表 /// </summary> /// <param name="model"></param> private void DAL_AppLine_Insert(M_Application_Line model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into AR_APPLICATION_LINE("); strSql.Append("APPLICATION_LINE_NUMBER,RECEIPT_NUMBER,RECEIPT_TYPE,INVOICE_NUMBER,INVOICE_LINE_NUMBER,CHARGE_CODE,AMOUNT,REMARKS,FROM_RECEIPT_NUMBER,FROM_RECEIPT_TYPE,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATED_DATE,RECEIPT_STATUS,FROM_RECEIPT_STATUS"); strSql.Append(")"); strSql.Append(" values ("); strSql.Append("'" + model.APPLICATION_LINE_NUMBER + "',"); strSql.Append("'" + model.RECEIPT_NUMBER + "',"); strSql.Append("'" + model.RECEIPT_TYPE + "',"); strSql.Append("'" + model.INVOICE_NUMBER + "',"); strSql.Append("'" + model.INVOICE_LINE_NUMBER + "',"); strSql.Append("'" + model.CHARGE_CODE + "',"); strSql.Append("'" + model.AMOUNT + "',"); strSql.Append("'" + model.REMARKS + "',"); strSql.Append("'" + model.FROM_RECEIPT_NUMBER + "',"); strSql.Append("'" + model.FROM_RECEIPT_TYPE + "',"); strSql.Append("'" + model.CREATED_BY + "',"); strSql.Append("sysdate,"); strSql.Append("'" + model.LAST_UPDATED_BY + "',"); strSql.Append("sysdate,"); strSql.Append("'" + model.RECEIPT_STATUS + "',"); strSql.Append("'" + model.FROM_RECEIPT_STATUS + "'"); strSql.Append(")"); _db.ExecuteNonQuery(strSql.ToString()); }
/// <summary> /// 新增Receipt /// </summary> /// <param name="result">用于创建receipt的支付信息</param> public bool Create(Req35_1 data) { /// 1.检查 /// 2.新增receipt表数据 /// 3.创建ar_application_line /// 4.创建分录 try { #region 1.检查 ///考虑重复创建receipt的情况 /// #endregion #region 2.新增receipt表数据 M_Receipt receipt = new M_Receipt(); receipt.RECEIPT_TYPE = "NL"; receipt.RECEIPT_DATE = "to_date('" + Common.EstrSql(Common.DateFmt(DateTime.Now, "yyyy-MM-dd")) + "','yyyy-MM-dd')"; //need receipt.RECEIVING_COMPANY_CODE = Common.EstrSql(data.receivecompanycode); receipt.PAYMENT_METHOD = Common.GetPaymentNm(data.actualpaytype); receipt.CURRENCY = data.currencycode; receipt.RATE = 1; receipt.AMOUNT = data.actualamount; //实际支付金额,由于不能修改,则一定等于应收金额 receipt.BANK_ACCOUNT = data.bankaccount; receipt.CUSTOMER_NUMBER = data.customercode; receipt.SITE_NUMBER = BHelper.FetchCustSite(data.leasenum, this._db); receipt.VOID_DATE = "null"; receipt.BANK_IN_DATE = "to_date('" + Common.DateFmt10(Common.EstrSql(data.actualpaydate)) + "','yyyy-MM-dd')"; receipt.PDC_RECEIPT_DATE = "null"; receipt.CHEQUE_NUMBER = ""; receipt.BILLING_COMPANY_CODE = ""; receipt.DESCRIPTION = ""; receipt.POST_STATUS = "U"; string maxnumber = Common.GetSingleValue("select max(RECEIPT_NUMBER) from ar_RECEIPT where RECEIPT_NUMBER like '" + data.receivecompanycode + "-" + "NL" + "%'", this._db); //receivecompanycode必须有值 if (maxnumber != null && maxnumber != "") { maxnumber = maxnumber.Substring(8); } else { maxnumber = "0"; } int oldnumber = int.Parse(maxnumber) + 1; string newnum = oldnumber.ToString().PadLeft(7, '0'); //7位字符串左边补零 receipt.RECEIPT_NUMBER = data.receivecompanycode + "-" + "NL" + "-" + newnum; receipt.GL_DATE = "null"; receipt.POSTING_DATE = "null"; receipt.APPLICATION_STATUS = "F"; receipt.RECEIPT_STATUS = "N"; receipt.CREATED_BY = Common.CurrentUser; receipt.LAST_UPDATED_BY = Common.CurrentUser; receipt.APPROVAL_STATUS = "U"; receipt.ACTIVE = "A"; receipt.IDENTIFIED_DATE = "null"; receipt.IND_VOID_RECEIPT_ON_STATEMENT = "N"; receipt.RECEIPT_SOURCE = "M"; receipt.OVERPLUS_AMOUNT = 0; DAL_Receipt_Insert(receipt); this._receipt = receipt; #endregion #region 3.创建ar_application_line int seqNum = 1; Req35_2 detail = null; for (int i = 0; i < data.actualpayinfo.Count; i++) { detail = data.actualpayinfo[i]; if (detail.actualpay <= 0) //如果实际支付金额<=0,则跳过。 { continue; } M_Application_Line Application_Line = new M_Application_Line(); Application_Line.AMOUNT = data.actualpayinfo[i].actualpay.ToString(); Application_Line.APPLICATION_LINE_NUMBER = seqNum.ToString(); //单据序列号 Application_Line.CHARGE_CODE = detail.chargecode; Application_Line.CREATED_BY = Common.CurrentUser; Application_Line.FROM_RECEIPT_NUMBER = receipt.RECEIPT_NUMBER; Application_Line.FROM_RECEIPT_STATUS = receipt.RECEIPT_STATUS; Application_Line.FROM_RECEIPT_TYPE = receipt.RECEIPT_TYPE; Application_Line.INVOICE_LINE_NUMBER = detail.invoicelinenum.ToString(); Application_Line.INVOICE_NUMBER = detail.transno; Application_Line.LAST_UPDATED_BY = Common.CurrentUser; Application_Line.LAST_UPDATED_DATE = "to_date('" + System.DateTime.Now.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo) + "','yyyy-MM-dd')"; Application_Line.RECEIPT_NUMBER = receipt.RECEIPT_NUMBER; Application_Line.RECEIPT_STATUS = receipt.RECEIPT_STATUS; Application_Line.RECEIPT_TYPE = receipt.RECEIPT_TYPE; DAL_AppLine_Insert(Application_Line); string paystatus = "U"; string oldoutstandingValue = Common.GetSingleValue("select outstanding_amount from ar_invoice_line where invoice_number='" + Application_Line.INVOICE_NUMBER + "'and invoice_line_number='" + Application_Line.INVOICE_LINE_NUMBER + "'", this._db); string outstandingValue = Convert.ToString(Convert.ToDecimal(oldoutstandingValue) - Convert.ToDecimal(Application_Line.AMOUNT)); if (Convert.ToDecimal(outstandingValue) == 0) { paystatus = "F"; } else if (Convert.ToDecimal(outstandingValue) != 0 && Convert.ToDecimal(Application_Line.AMOUNT) != 0) { paystatus = "P"; } this.UpdateInvice(Application_Line.INVOICE_NUMBER, Application_Line.INVOICE_LINE_NUMBER, outstandingValue, paystatus); this._db.ExecuteNonQuery("update ar_invoice_line a set a.settle_before_due_date='Y' where a.INVOICE_NUMBER = ( select b.INVOICE_NUMBER from ar_invoice b where b.payment_due_date>=to_date('" + Common.DateFmt10(data.actualpaydate) + "','yyyy-MM-dd') and b.invoice_number='" + Application_Line.INVOICE_NUMBER + "') and a.invoice_line_number='" + Application_Line.INVOICE_LINE_NUMBER + "'"); this._db.ExecuteNonQuery("update ar_invoice_line a set a.LAST_APPLICATION_DATE=sysdate where a.invoice_number='" + Application_Line.INVOICE_NUMBER + "' and a.invoice_line_number='" + Application_Line.INVOICE_LINE_NUMBER + "'"); seqNum++; } #endregion return(true); } catch (Exception err) { throw err; } }