zoukankan      html  css  js  c++  java
  • 客户对账单本月欠款

    create or replace function byamountfn
    (
        customernum 
    varchar2,
        startdate   date,
        enddate     date
    return char is
        v_amount          
    number;
        v_receipt_amount  
    number;
        refundamount      
    number;
        l_receive_amount1 
    number;
        l_receive_amount2 
    number;
        lastdebt          
    number;
        thisamount        
    number;
        thismoeny         
    number;
        upextendedamount  
    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 ctt.NAME != 'SH-内销开帐'
                   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 <= startdate - 1;

        
    select sum(nvl(acr.functional_amount, 0)) --当前参数日期之前的所有应付款
          into v_receipt_amount
          
    from ar_cash_receipts_v acr
         
    where acr.gl_date <= startdate - 1
           
    and acr.state != 'REVERSED'
           
    and acr.customer_id =
               (
    select a.customer_id
                  
    from ar_customers a
                 
    where a.customer_number = customernum);

        
    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 <= startdate - 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);
        lastdebt :
    = (v_amount - v_receipt_amount + refundamount); --小于当前日期之前的所有货款 减去 小于当前日期之前的所有应付帐款 加小于当前日期之前的所有退款=上月欠款
        ---------------------------***********本月货款**********------------------------------- 
        select nvl(sum(extended_amount), 0)
          
    into thisamount
          
    from (select ct.trx_number,
                       ct.trx_date,
                       decode(ctl.gross_extended_amount,
                              
    null,
                              ctl.extended_amount,
                              ctl.gross_extended_amount) 
    as extended_amount
                  
    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,
                       ra_cust_trx_line_gl_dist_all rctl
                 
    where ct.customer_trx_id = ctl.customer_trx_id
                   
    and rctl.customer_trx_id = ct.customer_trx_id
                   
    and 'REC' = rctl.account_class
                   
    and 'Y' = rctl.latest_rec_flag
                   
    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 ctt.NAME != 'SH-内销开帐'
                   and ctl.uom_code = uom.uom_code(+)
                   
    and to_char(rctl.gl_date, 'yyyy-mm-dd'between
                       to_char(startdate, 
    'YYYY-MM-DD'and
                       to_char(enddate, 
    'YYYY-MM-DD')
                   
    and hca.account_number = customernum);
        
    ---------------------------**********本月回款************------------------------------- 
        select nvl(sum(acr.functional_amount), 0--付款
          into l_receive_amount1
          
    from ar_cash_receipts_v acr
         
    where to_char(acr.gl_date, 'YYYY-MM-DD'between
               to_char(startdate, 
    'YYYY-MM-DD'and
               to_char(enddate, 
    'YYYY-MM-DD')
           
    and acr.state != 'REVERSED'
           
    and acr.customer_id =
               (
    select a.customer_id
                  
    from ar_customers a
                 
    where a.customer_number = customernum);
        
    select nvl(sum(araa.amount_applied), 0--退款
          into l_receive_amount2
          
    from ar_cash_receipt_history_all    acrh,
               ar_cash_receipts_all           acr,
               ar_receivable_applications_all araa
         
    where to_char(acrh.gl_date, 'YYYY-MM-DD'between
               to_char(startdate, 
    'YYYY-MM-DD'and
               to_char(enddate, 
    'YYYY-MM-DD')
           
    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);
        thismoeny :
    = (l_receive_amount1 - l_receive_amount2); --本月回款 = 本月应付帐款-本月退款
        ---------------------------**********本月欠款************-------------------------------              
        --本月欠款= 上月欠款+本月货款-本月回款          
        upextendedamount := (lastdebt + thisamount - thismoeny);
        
    return upextendedamount;
    end;

    cux_ar_utl_pkg.get_return_commitment_type

    function get_return_commitment_type return number is
    cursor csr_type is
    select cust_trx_type_id from ra_cust_trx_types_all where name = 'SH-保证金退回'; retval number;
    begin
    open csr_type; fetch csr_type into retval; close csr_type; return nvl(retval, -1);
    end;


             

                成长

           /      |     \

        学习   总结   分享

    QQ交流群:122230156

  • 相关阅读:
    Redis 和 Memcached 的区别
    缓存详解
    HTTP常见状态码
    ORM的概念, ORM到底是什么
    remote: Unauthorized fatal: Authentication failed for...
    TR、FN、FP、FN
    <笔记>ue破解
    <笔记>bmp图片数据格式
    三轴加速度数据处理
    智能手环+三轴加速度传感器总结
  • 原文地址:https://www.cnblogs.com/benio/p/1923534.html
Copyright © 2011-2022 走看看