Esempio n. 1
0
    /// <summary>
    /// 创建receipt后保存支付信息
    /// </summary>
    private void DAL_Insert_Pay()
    {
        DbHelper db = new DbHelper(Common.OracleConnStrLocal, true);

        try
        {
            etyH             = new M_T_PAYMENT();
            etyH.paymentid   = BHelper.FetchPaymentId(db) + 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顺序转换。
            Common.Insert <M_T_PAYMENT>(etyH, db);

            Req35_2 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;
                Common.Insert <M_T_PAYMENT_INFO>(etyD, db);
            }
            db.Commit();
        }
        catch (Exception err)
        {
            db.Abort();
            throw err;
        }
    }
Esempio n. 2
0
    /// <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;
        }
    }