Ejemplo n.º 1
0
        /// <summary>
        /// 创建receipt后保存支付信息
        /// </summary>
        private void Save()
        {
            BLL.CRUD biz = new CRUD(DbVendor.Oracle, Runtime.OracleConnStrLocal, true);
            try
            {
                etyH             = new M_T_PAYMENT();
                etyH.paymentid   = Bizhub.FetchPaymentId(biz) + 1;
                etyH.amount      = this.req.data.actualamount;
                etyH.leasenumber = this.req.data.leasenum;
                etyH.paydate     = DateTime.Parse(this.req.data.actualpaydate);
                etyH.paytype     = this.req.data.actualpaytype;
                etyH.status      = "0"; // Status取值定义:0=本地保存完成;1=Receipt创建完成;2=分录创建完成。状态必须从0~2顺序转换。
                biz.Create(etyH);


                Model.Req35dataDtl detail = null;
                etyD = new M_T_PAYMENT_INFO();
                for (int i = 0; i < this.req.data.actualpayinfo.Count; i++)
                {
                    detail = this.req.data.actualpayinfo[i];

                    etyD.actualpay      = detail.actualpay;
                    etyD.amount         = detail.amount;
                    etyD.chargecode     = detail.chargecode;
                    etyD.invoicenumber  = detail.transno;
                    etyD.invoicelinenum = detail.invoicelinenum;
                    etyD.paymentid      = etyH.paymentid;
                    biz.Create(etyD);
                }
                biz.Commit();
            }
            catch (Exception err)
            {
                biz.Abort();
                throw err;
            }
        }
Ejemplo n.º 2
0
        public bool Create(Model.Req35data data)
        {
            try
            {
                #region 1.检查
                ///考虑重复创建receipt的情况
                ///
                #endregion

                #region 2.新增receipt表数据
                M_Receipt receipt = new M_Receipt();
                receipt.RECEIPT_TYPE = "NL";
                receipt.RECEIPT_DATE = "to_date('" + Common.Aid.EstrSql(Common.Aid.DateFmt(DateTime.Now, "yyyy-MM-dd")) + "','yyyy-MM-dd')"; //need

                receipt.RECEIVING_COMPANY_CODE = Common.Aid.EstrSql(data.receivecompanycode);
                receipt.PAYMENT_METHOD         = Common.Aid.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.SITE_NUMBER          = this.GetCustSite(data.leasenum);
                receipt.VOID_DATE            = "null";
                receipt.BANK_IN_DATE         = "to_date('" + Common.Aid.DateFmt10(Common.Aid.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.Aid.GetSingleValue("select max(RECEIPT_NUMBER) from ar_RECEIPT where RECEIPT_NUMBER like '" + data.receivecompanycode + "-" + "NL" + "%'", this.dal); //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.Runtime.CurrentUser;
                receipt.LAST_UPDATED_BY               = Common.Runtime.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;
                this.Insert(receipt);

                this.ety = receipt;
                #endregion

                #region 3.创建ar_application_line

                int seqNum = 1;
                Model.Req35dataDtl 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.Runtime.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.Runtime.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;
                    Insert2AppLine(Application_Line);

                    string paystatus           = "U";
                    string oldoutstandingValue = Common.Aid.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.dal);
                    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.dal.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.Aid.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.dal.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)
            {
                throw;
            }
        }