AR客户对账单(上月欠款)

CREATE OR REPLACE FUNCTION amountFN(CUSTOMERNUM varchar2, startdate date)
  RETURN CHAR IS
  v_amount         number;
  v_receipt_amount number;
  refundAmount     number;
  lastdebt         number;
begin
  ---------------------------**********得到上月欠款**************-------------------------------
  SELECT sum(nvl(rct.extended_amount_tax, 0)) extended_amount --当前参数日期之前的所有货款
    into v_amount
    FROM (SELECT ctl.customer_trx_line_id,
                 ct.customer_trx_id,
                 ct.initial_customer_trx_id,
                 ct.trx_number,
                 nvl(cux_ar_utl_pkg.get_trx_gl_date(ct.customer_trx_id),
                     ct.trx_date) trx_date,
                 ct.bill_to_customer_id,
                 nvl(ctl.gross_extended_amount, ctl.extended_amount) extended_amount_tax
            FROM ra_customer_trx_all          ct,
                 ra_customer_trx_lines_all    ctl,
                 hz_parties                   hpt,
                 hz_cust_accounts             hca,
                 ra_cust_trx_types_all        ctt,
                 mtl_units_of_measure         uom
           WHERE ct.customer_trx_id = ctl.customer_trx_id
             AND ct.org_id = ctl.org_id
             AND ct.bill_to_customer_id = hca.cust_account_id
             AND hca.party_id = hpt.party_id
             AND ctt.cust_trx_type_id = ct.cust_trx_type_id
             AND ctl.line_type != 'TAX'
             AND ctt.TYPE IN ('INV', 'CM')
             AND ctt.cust_trx_type_id !=
                 cux_ar_utl_pkg.get_return_commitment_type
             AND ctl.uom_code = uom.uom_code(+)
  )rct
  WHERE 1 = 1
    and rct.bill_to_customer_id =
        (SELECT a.CUSTOMER_ID
           FROM ar_customers a
          where a.CUSTOMER_NUMBER = CUSTOMERNUM)
    AND rct.trx_date <= trunc(startdate,'month' )- 1;
DBMS_OUTPUT.put_line(v_amount||':v_amountv_amountv_amountv_amountv_amount');
  SELECT nvl(SUM(acr.functional_amount), 0) --当前参数日期之前的所有应付款
    INTO v_receipt_amount
    FROM ar_cash_receipts_v acr
   WHERE acr.gl_date <= trunc(startdate,'month' )- 1
     AND acr.state != 'REVERSED'
     AND acr.customer_id =
         (SELECT a.CUSTOMER_ID
            FROM ar_customers a
           where a.CUSTOMER_NUMBER =CUSTOMERNUM);
DBMS_OUTPUT.put_line(v_receipt_amount||':v_receipt_amountv_receipt_amountv_receipt_amount');
  SELECT nvl(sum(araa.amount_applied), 0) --当前参数日期之前的所有退款
    into refundAmount
    FROM AR_CASH_RECEIPT_HISTORY_ALL    acrh,
         AR_CASH_RECEIPTS_all           aCR,
         AR_RECEIVABLE_APPLICATIONS_all araa
   WHERE acrh.gl_date <=trunc(startdate,'month' )- 1
     AND acrh.STATUS != 'REVERSED'
     AND ACR.CASH_RECEIPT_ID = ACRH.CASH_RECEIPT_ID
     AND ACRh.CASH_RECEIPT_HISTORY_ID = araa.CASH_RECEIPT_HISTORY_ID
     AND araa.APPLIED_CUSTOMER_TRX_ID is null
     AND ACRH.ORG_ID = ACR.ORG_ID
     and araa.DISPLAY = 'Y'
     and araa.STATUS = 'ACTIVITY'
     AND aCR.PAY_FROM_CUSTOMER =
         (SELECT a.CUSTOMER_ID
            FROM ar_customers a
           where a.CUSTOMER_NUMBER =CUSTOMERNUM);
DBMS_OUTPUT.put_line(refundAmount||':refundAmountrefundAmountrefundAmount');
  lastdebt := (v_amount - v_receipt_amount + refundAmount); --小于当前日期之前的所有货款 减去 小于当前日期之前的所有应付帐款 加 小于当前日期之前的所有退款=上月欠款

  return lastdebt;
end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24899662/viewspace-680638/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24899662/viewspace-680638/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值