• oracle报表范例1 (转载)


    复制代码
    PL/SQL数据包:

    create or replace package CUX_GL_REP_LISTPKG is

      
    -- Author  : LIJINQIAN
      -- Created : 2005-7-12 9:50:00
      -- Purpose : 总帐科目列表
      
        
    -- 总帐汇总
      Procedure cuxgllistgath(
        errbuf      Out 
    Varchar2,
        retcode     Out 
    Varchar2,
        p_start_date    
    Varchar2,
        p_end_date      
    Varchar2,
        p_set_of_gl_id  
    Number,
        p_org_id        
    Number,
        p_report_type   
    Number);    
        
        
    --总帐明细
      Procedure cuxgllistgathmx(
        errbuf      Out 
    Varchar2,
        retcode     Out 
    Varchar2,
        p_start_date    
    Varchar2,
        p_end_date      
    Varchar2,
        Chart_of_Accounts_ID 
    number,
        p_Account_From  
    varchar2,
        p_Account_to    
    varchar2,   
        p_to_gl         
    varchar2,
        p_je_source     
    Varchar2,  
        p_set_of_gl_id  
    Number,
        p_org_id        
    Number,
        p_report_type   
    Number);
        
    end CUX_GL_REP_LISTPKG;


    包体:

    create or replace package body CUX_GL_REP_LISTPKG is

      
    --=======================================
      --   总帐科目汇总
      --=======================================
      Procedure cuxgllistgath(
        errbuf      Out 
    Varchar2,
        retcode     Out 
    Varchar2,
        p_start_date    
    Varchar2,
        p_end_date      
    Varchar2,
        p_set_of_gl_id  
    Number,
        p_org_id        
    Number,
        p_report_type   
    Number
      ) 
    Is 
        l_show          
    Varchar2(2000);
        l_org_name      
    Varchar2(2000);
        
        p_sign          
    Varchar2(200);
        p_account_type  
    Number:=0;
        
        l_start_dr    
    number:=0;
        l_start_cr    
    number:=0;
        l_now_dr      
    number:=0;
        l_now_cr      
    number:=0;
        l_year_dr     
    number:=0;
        l_year_cr     
    number:=0;
        
        l_qm_dr       
    Number:=0;
        l_qm_cr       
    Number:=0;
        
        l_start_dr_t    
    number:=0;
        l_start_cr_t    
    number:=0;
        l_now_dr_t      
    number:=0;
        l_now_cr_t      
    number:=0;
        l_year_dr_t     
    number:=0;
        l_year_cr_t     
    number:=0;
        l_end_dr_t      
    Number:=0;
        l_end_cr_t      
    Number:=0;
        
        l_total         
    Number:=0;
        
        
    Cursor cr1 Is
           
    select Distinct  
               gccv.Code_Combination_Id accid,
               gccv.segment1
    ||'.'||'T'||'.'||SUBSTR(gccv.segment3,1,4)||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T' A2,
               fvl1.Description
    ||'.'||fvl2.Description||'.'||fvl3.Description||'.'||fvl4.Description||'.'||fvl5.Description||'.'||fvl6.Description||'.'||fvl7.Description||'.'||fvl8.Description A3
           
    from
               gl_balances gl_ba                    
    -- 总帐表
               ,Gl_Code_Combinations gccv
               ,fnd_flex_values_vl fvl1
               ,fnd_flex_values_vl fvl2
               ,fnd_flex_values_vl fvl3
               ,fnd_flex_values_vl fvl4
               ,fnd_flex_values_vl fvl5
               ,fnd_flex_values_vl fvl6
               ,fnd_flex_values_vl fvl7
               ,fnd_flex_values_vl fvl8
           
    where gl_ba.code_combination_id=gccv.CODE_COMBINATION_ID
             
    And (fvl1.flex_value=gccv.segment1 And fvl1.FLEX_VALUE_SET_ID='1007720')              -- 公司段
             And (fvl2.flex_value='T' And fvl2.FLEX_VALUE_SET_ID='1007721')                        -- 部门段
             And (fvl3.flex_value=substr(gccv.segment3,1,4And fvl3.FLEX_VALUE_SET_ID='1007722')  -- 科目段
             And (fvl4.flex_value='T' And fvl4.FLEX_VALUE_SET_ID='1007723')                        -- 子科目段
             And (fvl5.flex_value='T' And fvl5.FLEX_VALUE_SET_ID='1007724')                        -- 公司间段
             And (fvl6.flex_value='T' And fvl6.FLEX_VALUE_SET_ID='1007725')                        -- 产品段
             And (fvl7.flex_value='T' And fvl7.FLEX_VALUE_SET_ID='1007726')                        -- 项目段
             And (fvl8.flex_value='T' And fvl8.FLEX_VALUE_SET_ID='1007727')                        -- 备用段 
             And to_number(substr(gl_ba.Period_Name,4,4)||substr(gl_ba.Period_Name,1,2)) between to_number(substr(p_start_date,4,4)||substr(p_start_date,1,2)) and to_number(substr(p_end_date,4,4)||substr(p_end_date,1,2))
             
    And gl_ba.Actual_Flag='A'                  --  取实际数
             And gccv.Summary_Flag='Y'                  --  取汇总科目
             And gl_ba.Template_Id='75'                 --  一级科目汇总
             And gccv.segment1=Select Distinct 
                                      gcc.Segment1
                                 
    From  gl_je_lines lines 
                                      ,gl_je_headers h 
                                      ,gl_je_batches b
                                      ,Gl_Code_Combinations gcc
                                 
    Where b.je_batch_id = h.je_batch_id 
                                   
    And h.je_header_id = lines.je_header_id
                                   
    And lines.Code_Combination_Id=gcc.Code_Combination_Id
                                   
    And b.org_id=p_org_id)
           
    Order By gccv.segment1||'.'||'T'||'.'||SUBSTR(gccv.segment3,1,4)||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T'||'.'||'T';    
      
    Begin
          
    -- 取得单位名称
          select a.name into l_org_name from hr_organization_units a 
          
    where a.organization_id=p_org_id; 
          
          
    -- 输出报表头
          l_SHOW := lpad('客户化 总帐科目余额列表'100' ');
          cux_my_public_pkg.OUT(l_SHOW);
          cux_my_public_pkg.OUT(
    ' ');  
        
          l_SHOW :
    = rpad('会计日期'10' '|| rpad(p_start_date, 10' ')|| rpad(''|| p_end_date, 30' ');
          cux_my_public_pkg.OUT(l_SHOW);
          cux_my_public_pkg.OUT(
    ' ');
        
          
    --帐户名称
          l_SHOW := rpad('单位名称'20' '|| rpad(l_org_name, 100' ');
          cux_my_public_pkg.OUT(l_SHOW);
          cux_my_public_pkg.Out(
    ' ');
           
          l_SHOW :
    = rpad('来源'20' '|| rpad('科目'30' '||rpad('科目说明'100' '|| 
          rpad(
    '过帐状态'10' '|| 
          rpad(
    '期初余额借方'20' '|| rpad('期初余额贷方'20' '|| 
          rpad(
    '本期发生借方'20' '|| rpad('本期发生贷方'20' '||
          rpad(
    '本年累计借方'20' '|| rpad('本年累计贷方'20' '||
          rpad(
    '期末余额借方'20' '|| rpad('期末余额贷方'20' ');
          cux_my_public_pkg.OUT(l_SHOW);
          
          l_SHOW :
    = lpad(' '20'-'|| lpad(' '30'-'||
                  lpad(
    ' '100'-'|| 
                  lpad(
    ' '10'-'|| 
                  lpad(
    ' '20'-'|| lpad(' '20'-'|| 
                  lpad(
    ' '20'-'|| lpad(' '20'-'||
                  lpad(
    ' '20'-'|| lpad(' '20'-'||
                  lpad(
    ' '20'-'|| lpad(' '20'-');
          cux_my_public_pkg.OUT(l_SHOW);
       
          
    -- 汇总科目
          If p_report_type=1 Then
             
             
    -- 汇总init
             l_start_dr_t:=0;
             l_start_cr_t:
    =0;
             l_now_dr_t:
    =0;
             l_now_cr_t:
    =0;
             l_year_dr_t:
    =0;
             l_year_cr_t:
    =0;
             l_end_dr_t:
    =0;
             l_end_cr_t:
    =0;
             
             
    For i In cr1 Loop
             
                
    -- 帐户类型
                --  A  (资产) 1
                --  E  (费用类) 4 
                SELECT Count(Distinct gcc.account_type)
                    
    INTO p_account_type
                 
    FROM gl_code_combinations gcc
                
    WHERE gcc.Code_Combination_Id=i.accid
                  
    And (gcc.Segment3 Like '1%' Or gcc.Segment3 Like '4%');
                
                
    IF p_account_type<>0 THEN
                    p_sign :
    = 1;
                
    ELSE
                    p_sign :
    = -1;
                
    END IF;
          
                
    -- 期初余额YTD
                SELECT p_sign*nvl(sum((gc.begin_balance_dr-gc.begin_balance_cr)+(gc.period_net_dr-gc.period_net_cr)),0)
                    
    into l_total
                
    FROM GL_BALANCES gc
                
    WHERE gc.Set_Of_Books_Id = p_set_of_gl_id
                  
    AND gc.code_combination_id = i.accid
                  
    AND gc.period_name = substr(to_char(add_months(to_date(substr(p_start_date,4,4)||'-'||substr(p_start_date,1,2)||'-01','yyyy-mm-dd'),-1),'YYYY-MM-DD'),6,2)||'-'||substr(to_char(add_months(to_date(substr(p_start_date,4,4)||'-'||substr(p_start_date,1,2)||'-01','yyyy-mm-dd'),-1),'YYYY-MM-DD'),1,4)
                  
    AND gc.actual_flag = 'A';
                  
                
    IF p_account_type<>0 THEN
                   l_start_dr:
    =l_total;
                   l_start_cr:
    =0;
                
    Else
                   l_start_dr:
    =0;
                   l_start_cr:
    =l_total;
                
    end if;
                
                
    -- 本期发生额
                Select nvl(sum(gv.Line_Entered_Dr),0),
                       nvl(
    sum(gv.Line_Entered_cr),0)
                     
    Into l_now_dr,
                          l_now_cr
                
    From Gl_Je_Journal_Lines_v gv,
                     Gl_Account_Hierarchies gah
                
    Where to_number(substr(gv.Period_Name,4,4)||substr(gv.Period_Name,1,2)) between to_number(substr(p_start_date,4,4)||substr(p_start_date,1,2)) and to_number(substr(p_end_date,4,4)||substr(p_end_date,1,2))
                  
    And gv.Actual_Flag='A'
                  
    And GV.Batch_Status='P'
                  
    And gv.Line_Code_Combination_Id=gah.Detail_Code_Combination_Id
                  
    And gah.Summary_Code_Combination_Id=i.accid;
                
                
    -- 年发生额
                Select nvl(sum(gv.Line_Entered_Dr),0),
                       nvl(
    sum(gv.Line_Entered_cr),0)
                     
    Into l_year_dr,
                          l_year_cr
                
    From Gl_Je_Journal_Lines_v gv,
                     Gl_Account_Hierarchies gah
                
    Where gv.Period_Year=substr(p_start_date,4,4
                  
    And gv.Actual_Flag='A'
                  
    And GV.Batch_Status='P'
                  
    And gv.Line_Code_Combination_Id=gah.Detail_Code_Combination_Id
                  
    And gah.Summary_Code_Combination_Id=i.accid;

                
    -- 期末数
                IF p_account_type<>0 THEN
                   l_qm_dr:
    =l_start_dr+l_now_dr-l_now_cr;
                   l_qm_cr:
    =0;
                
    Else
                   l_qm_dr:
    =0;
                   l_qm_cr:
    =l_start_cr+l_now_cr-l_now_dr;
                
    End If;               
                  
                l_SHOW :
    = rpad('汇总'20' '|| rpad(i.A2, 30' '||
                          rpad(i.A3, 
    100' '|| 
                          rpad(
    '汇总'10' '|| 
                          rpad(to_char(l_start_dr,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_start_cr,'999,999,999,990.00'), 20' '|| 
                          rpad(to_char(l_now_dr,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_now_cr,'999,999,999,990.00'), 20' '||
                          rpad(to_char(l_year_dr,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_year_cr,'999,999,999,990.00'), 20' '||
                          rpad(to_char(l_qm_dr,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_qm_cr,'999,999,999,990.00'), 20' ');
                cux_my_public_pkg.OUT(l_SHOW);
          
                
    -- 汇总
                l_start_dr_t:=l_start_dr_t+l_start_dr;
                l_start_cr_t:
    =l_start_cr_t+l_start_cr;
                
                l_now_dr_t:
    =l_now_dr_t+l_now_dr;
                l_now_cr_t:
    =l_now_cr_t+l_now_cr;
                
                l_year_dr_t:
    =l_year_dr_t+l_year_dr;
                l_year_cr_t:
    =l_year_cr_t+l_year_cr;
                l_end_dr_t:
    =l_end_dr_t+l_qm_dr;
                l_end_cr_t:
    =l_end_cr_t+l_qm_cr;
          
             
    END LOOP;
             l_SHOW :
    = lpad(' '20'-'|| lpad(' '30'-'||
                        lpad(
    ' '100'-'|| 
                        lpad(
    ' '10'-'|| 
                        lpad(
    ' '20'-'|| lpad(' '20'-'|| 
                        lpad(
    ' '20'-'|| lpad(' '20'-'||
                        lpad(
    ' '20'-'|| lpad(' '20'-'||
                        lpad(
    ' '20'-'|| lpad(' '20'-');
             cux_my_public_pkg.OUT(l_SHOW);
              
             l_SHOW :
    = rpad('合计'20' '|| rpad(' '30' '||
                        rpad(
    ' '100' '|| 
                        rpad(
    ' '10' '|| 
                        rpad(to_char(l_start_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_start_cr_t,'999,999,999,990.00'), 20' '|| 
                        rpad(to_char(l_now_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_now_cr_t,'999,999,999,990.00'), 20' '||
                        rpad(to_char(l_year_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_year_cr_t,'999,999,999,990.00'), 20' '||
                        rpad(to_char(l_end_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_end_cr_t,'999,999,999,990.00'), 20' ');
             cux_my_public_pkg.OUT(l_SHOW);
          
    End If;
      
    End cuxgllistgath;
      
      
    --==================================
      --   总帐明细
      --==================================
      Procedure cuxgllistgathmx(
        errbuf      Out 
    Varchar2,
        retcode     Out 
    Varchar2,
        p_start_date    
    Varchar2,
        p_end_date      
    Varchar2,
        Chart_of_Accounts_ID 
    number,
        p_Account_From  
    varchar2,
        p_Account_to    
    varchar2,   
        p_to_gl         
    varchar2,
        p_je_source     
    Varchar2,  
        p_set_of_gl_id  
    Number,
        p_org_id        
    Number,
        p_report_type   
    Number
      ) 
    Is
        l_show          
    Varchar2(2000);
        l_org_name      
    Varchar2(2000);
        
        p_sign          
    Varchar2(200);
        p_account_type  
    Number:=0;
        
        
    -- 帐户的范围
        l_acct_desc1    Varchar2(200);
        l_acct_desc2    
    Varchar2(200);
        l_acct_desc     
    Varchar2(2000);
        l_acct_name     
    Varchar2(2000);
        
        
    -- 总帐值
        l_start_dr      number:=0;
        l_start_cr      
    number:=0;
        l_now_dr        
    number:=0;
        l_now_cr        
    number:=0;
        l_year_dr       
    number:=0;
        l_year_cr       
    number:=0;
        
        l_qm_dr         
    Number:=0;
        l_qm_cr         
    Number:=0;
        
        l_start_dr_t    
    number:=0;
        l_start_cr_t    
    number:=0;
        l_now_dr_t      
    number:=0;
        l_now_cr_t      
    number:=0;
        l_year_dr_t     
    number:=0;
        l_year_cr_t     
    number:=0;
        l_end_dr_t      
    Number:=0;
        l_end_cr_t      
    Number:=0;
        
        l_total         
    Number:=0;
       
        
    -- 总帐明细
        Cursor cr1 Is
                
    Select 
                     decode(gjh.Je_Source,
    'Payables','应付款','Receivables','应收款','Spreadsheet','电子表格','Manual','人工',gjh.Je_Source) A3,
                     gjl.Code_Combination_Id accid,
                     gccb.Segment1
    ||'.'||gccb.Segment2||'.'||gccb.Segment3||'.'||gccb.Segment4||'.'||gccb.Segment5||'.'||gccb.Segment6||'.'||gccb.Segment7||'.'||gccb.Segment8 A1,
                     ffvl1.Description
    ||'.'||ffvl2.Description||'.'||ffvl3.Description||'.'||ffvl4.Description||'.'||ffvl5.Description||'.'||ffvl6.Description||'.'||ffvl7.Description||'.'||ffvl8.Description A2, 
                     decode(gjh.Status,
    'P','已过账','未过账') A4,
                     
    Sum(nvl(gjl.Entered_Dr,0)) A5,
                     
    Sum(nvl(gjl.Entered_Cr,0)) A6
                
    From gl_je_batches gjb  
                    ,gl_je_headers gjh
                    ,gl_je_lines gjl
                    ,Gl_Account_Hierarchies gah
                    ,Gl_Code_Combinations gccb
                    ,fnd_flex_values_vl ffvl1
                    ,fnd_flex_values_vl ffvl2
                    ,fnd_flex_values_vl ffvl3
                    ,fnd_flex_values_vl ffvl4
                    ,fnd_flex_values_vl ffvl5
                    ,fnd_flex_values_vl ffvl6
                    ,fnd_flex_values_vl ffvl7
                    ,fnd_flex_values_vl ffvl8
                
    Where to_number(substr(gjh.Period_Name,4,4)||substr(gjh.Period_Name,1,2)) between to_number(substr(p_start_date,4,4)||substr(p_start_date,1,2)) and to_number(substr(p_end_date,4,4)||substr(p_end_date,1,2))
                  
    And gjh.je_header_id = gjl.je_header_id
                  
    and gjl.code_combination_id = gccb.code_combination_id
                  
    and gjh.je_batch_id = gjb.je_batch_id
                  
    and gjb.org_id = p_org_id
                  
    And gjh.Actual_Flag='A'
                  
    And gjl.Code_Combination_Id=gah.Detail_Code_Combination_Id
                  
    And gah.Template_Id=75
                  
    And (ffvl1.flex_value=gccb.segment1 And ffvl1.FLEX_VALUE_SET_ID='1007720')  -- 公司段
                  And (ffvl2.flex_value=gccb.segment2 And ffvl2.FLEX_VALUE_SET_ID='1007721')  -- 部门段
                  And (ffvl3.flex_value=gccb.segment3 And ffvl3.FLEX_VALUE_SET_ID='1007722')  -- 科目段
                  And (ffvl4.flex_value=gccb.segment4 And ffvl4.FLEX_VALUE_SET_ID='1007723')  -- 子科目段
                  And (ffvl5.flex_value=gccb.segment5 And ffvl5.FLEX_VALUE_SET_ID='1007724')  -- 公司间段
                  And (ffvl6.flex_value=gccb.segment6 And ffvl6.FLEX_VALUE_SET_ID='1007725')  -- 产品段
                  And (ffvl7.flex_value=gccb.segment7 And ffvl7.FLEX_VALUE_SET_ID='1007726')  -- 项目段
                  And (ffvl8.flex_value=gccb.segment8 And ffvl8.FLEX_VALUE_SET_ID='1007727')  
                  
    And gjh.Je_Source = decode(p_je_source,'',gjh.Je_Source,Null,gjh.Je_Source,p_je_source)
                  
    And decode(gjb.status,'P','已过账','未过账'Like decode(p_to_gl,'Y','已过账','N','未过账','%过账')
                  
    -- 科目查询
                  and gccb.segment1 between nvl(substr(p_Account_From,1,instr(p_Account_From,'.',1,1)-1),gccb.segment1) 
                                       
    and nvl(substr(p_Account_to,1,instr(p_Account_to,'.',1,1)-1),gccb.segment1)
                  
    and gccb.segment2 between nvl(substr(p_Account_From,instr(p_Account_From,'.',1,1)+1,((instr(p_Account_From,'.',1,2))- (instr(p_Account_From,'.',1,1)+1))),gccb.segment2) 
                                       
    and nvl(substr(p_Account_to,instr(p_Account_to,'.',1,1)+1,((instr(p_Account_to,'.',1,2))- (instr(p_Account_to,'.',1,1)+1))),gccb.segment2)
                  
    and gccb.segment3 between nvl(substr(p_Account_From,instr(p_Account_From,'.',1,2)+1,((instr(p_Account_From,'.',1,3))- (instr(p_Account_From,'.',1,2)+1))),gccb.segment3) 
                                      
    and nvl(substr(p_Account_to,instr(p_Account_to,'.',1,2)+1,((instr(p_Account_to,'.',1,3))- (instr(p_Account_to,'.',1,2)+1))),gccb.segment3)
                  
    and gccb.segment4 between nvl(substr(p_Account_From,instr(p_Account_From,'.',1,3)+1,((instr(p_Account_From,'.',1,4))- (instr(p_Account_From,'.',1,3)+1))),gccb.segment4) 
                                       
    and nvl(substr(p_Account_to,instr(p_Account_to,'.',1,3)+1,((instr(p_Account_to,'.',1,4))- (instr(p_Account_to,'.',1,3)+1))),gccb.segment4)
                  
    and gccb.segment5 between nvl(substr(p_Account_From,instr(p_Account_From,'.',1,4)+1,((instr(p_Account_From,'.',1,5))- (instr(p_Account_From,'.',1,4)+1))),gccb.segment5) 
                                       
    and nvl(substr(p_Account_to,instr(p_Account_to,'.',1,4)+1,((instr(p_Account_to,'.',1,5))- (instr(p_Account_to,'.',1,4)+1))),gccb.segment5)
                  
    and gccb.segment6 between nvl(substr(p_Account_From,instr(p_Account_From,'.',1,5)+1,((instr(p_Account_From,'.',1,6))- (instr(p_Account_From,'.',1,5)+1))),gccb.segment6) 
                                       
    and nvl(substr(p_Account_to,instr(p_Account_to,'.',1,5)+1,((instr(p_Account_to,'.',1,6))- (instr(p_Account_to,'.',1,5)+1))),gccb.segment6)
                  
    and gccb.segment7 between nvl(substr(p_Account_From,instr(p_Account_From,'.',1,6)+1,((instr(p_Account_From,'.',1,7))- (instr(p_Account_From,'.',1,6)+1))),gccb.segment7) 
                                       
    and nvl(substr(p_Account_to,instr(p_Account_to,'.',1,6)+1,((instr(p_Account_to,'.',1,7))- (instr(p_Account_to,'.',1,6)+1))),gccb.segment7)
                  
    and gccb.segment8 between nvl(substr(p_Account_From,instr(p_Account_From,'.',1,7)+1,10),gccb.segment8) 
                                       
    and nvl(substr(p_Account_to,instr(p_Account_to,'.',1,7)+1,10),gccb.segment8)
                  
    And gah.Summary_Code_Combination_Id In (select   
                                                           gccv.Code_Combination_Id accid
                                                       
    from
                                                            gl_balances gl_ba                    
    -- 总帐表
                                                           ,Gl_Code_Combinations gccv
                                                           ,fnd_flex_values_vl fvl1
                                                           ,fnd_flex_values_vl fvl2
                                                           ,fnd_flex_values_vl fvl3
                                                           ,fnd_flex_values_vl fvl4
                                                           ,fnd_flex_values_vl fvl5
                                                           ,fnd_flex_values_vl fvl6
                                                           ,fnd_flex_values_vl fvl7
                                                           ,fnd_flex_values_vl fvl8
                                                       
    where gl_ba.code_combination_id=gccv.CODE_COMBINATION_ID
                                                         
    And (fvl1.flex_value=gccv.segment1 And fvl1.FLEX_VALUE_SET_ID='1007720')              -- 公司段
                                                         And (fvl2.flex_value='T' And fvl2.FLEX_VALUE_SET_ID='1007721')                        -- 部门段
                                                         And (fvl3.flex_value=substr(gccv.segment3,1,4And fvl3.FLEX_VALUE_SET_ID='1007722')  -- 科目段
                                                         And (fvl4.flex_value='T' And fvl4.FLEX_VALUE_SET_ID='1007723')                        -- 子科目段
                                                         And (fvl5.flex_value='T' And fvl5.FLEX_VALUE_SET_ID='1007724')                        -- 公司间段
                                                         And (fvl6.flex_value='T' And fvl6.FLEX_VALUE_SET_ID='1007725')                        -- 产品段
                                                         And (fvl7.flex_value='T' And fvl7.FLEX_VALUE_SET_ID='1007726')                        -- 项目段
                                                         And (fvl8.flex_value='T' And fvl8.FLEX_VALUE_SET_ID='1007727')                        -- 备用段 
                                                         And to_number(substr(gl_ba.Period_Name,4,4)||substr(gl_ba.Period_Name,1,2)) between to_number(substr(p_start_date,4,4)||substr(p_start_date,1,2)) and to_number(substr(p_end_date,4,4)||substr(p_end_date,1,2))
                                                         
    And gl_ba.Actual_Flag='A'                  --  取实际数
                                                         And gccv.Summary_Flag='Y'                  --  取汇总科目
                                                         And gl_ba.Template_Id='75'                 --  一级科目汇总
                                                         And gccv.segment1=Select Distinct 
                                                                                  gcc.Segment1
                                                                             
    From  gl_je_lines lines 
                                                                                  ,gl_je_headers h 
                                                                                  ,gl_je_batches b
                                                                                  ,Gl_Code_Combinations gcc
                                                                             
    Where b.je_batch_id = h.je_batch_id 
                                                                               
    And h.je_header_id = lines.je_header_id
                                                                               
    And lines.Code_Combination_Id=gcc.Code_Combination_Id
                                                                               
    And b.org_id=p_org_id)
                                                       )
                
    Group By  gjl.Code_Combination_Id,
                          gccb.Segment1
    ||'.'||gccb.Segment2||'.'||gccb.Segment3||'.'||gccb.Segment4||'.'||gccb.Segment5||'.'||gccb.Segment6||'.'||gccb.Segment7||'.'||gccb.Segment8,
                          ffvl1.Description
    ||'.'||ffvl2.Description||'.'||ffvl3.Description||'.'||ffvl4.Description||'.'||ffvl5.Description||'.'||ffvl6.Description||'.'||ffvl7.Description||'.'||ffvl8.Description, 
                          gjh.Je_Source,
                          gjh.Status
                
    Order By decode(gjh.Je_Source,'Payables','应付款','Receivables','应收款','Spreadsheet','电子表格','Manual','人工',gjh.Je_Source),
                         gccb.Segment1
    ||'.'||gccb.Segment2||'.'||gccb.Segment3||'.'||gccb.Segment4||'.'||gccb.Segment5||'.'||gccb.Segment6||'.'||gccb.Segment7||'.'||gccb.Segment8;
      
    Begin
          
    -- 取得单位名称
          select a.name into l_org_name from hr_organization_units a 
          
    where a.organization_id=p_org_id;
          
          
    -- 取得查询的科目   l_acct_desc1
          --       说明范围   l_acct_desc2   
          If p_Account_From Is Not Null Then
               
    Select 
                     fvl1.Description
    ||'.'||fvl2.Description||'.'||fvl3.Description||'.'||fvl4.Description||'.'||fvl5.Description||'.'||fvl6.Description||'.'||fvl7.Description||'.'||fvl8.Description A3
                 
    Into l_acct_desc1
                
    From gl_code_combinations_kfv gcck
                     ,fnd_flex_values_vl fvl1
                     ,fnd_flex_values_vl fvl2
                     ,fnd_flex_values_vl fvl3
                     ,fnd_flex_values_vl fvl4
                     ,fnd_flex_values_vl fvl5
                     ,fnd_flex_values_vl fvl6
                     ,fnd_flex_values_vl fvl7
                     ,fnd_flex_values_vl fvl8
                
    Where gcck.Concatenated_Segments=p_Account_From
                 
    And (fvl1.flex_value=gcck.segment1 And fvl1.FLEX_VALUE_SET_ID='1007720')                        -- 公司段
                 And (fvl2.flex_value=gcck.segment2 And fvl2.FLEX_VALUE_SET_ID='1007721')                        -- 部门段
                 And (fvl3.flex_value=gcck.segment3 And fvl3.FLEX_VALUE_SET_ID='1007722')                        -- 科目段
                 And (fvl4.flex_value=gcck.segment4 And fvl4.FLEX_VALUE_SET_ID='1007723')                        -- 子科目段
                 And (fvl5.flex_value=gcck.segment5 And fvl5.FLEX_VALUE_SET_ID='1007724')                        -- 公司间段
                 And (fvl6.flex_value=gcck.segment6 And fvl6.FLEX_VALUE_SET_ID='1007725')                        -- 产品段
                 And (fvl7.flex_value=gcck.segment7 And fvl7.FLEX_VALUE_SET_ID='1007726')                        -- 项目段
                 And (fvl8.flex_value=gcck.segment8 And fvl8.FLEX_VALUE_SET_ID='1007727');
                 
               
    Select 
                     fvl1.Description
    ||'.'||fvl2.Description||'.'||fvl3.Description||'.'||fvl4.Description||'.'||fvl5.Description||'.'||fvl6.Description||'.'||fvl7.Description||'.'||fvl8.Description A3
                 
    Into l_acct_desc2
                
    From gl_code_combinations_kfv gcck
                     ,fnd_flex_values_vl fvl1
                     ,fnd_flex_values_vl fvl2
                     ,fnd_flex_values_vl fvl3
                     ,fnd_flex_values_vl fvl4
                     ,fnd_flex_values_vl fvl5
                     ,fnd_flex_values_vl fvl6
                     ,fnd_flex_values_vl fvl7
                     ,fnd_flex_values_vl fvl8
                
    Where gcck.Concatenated_Segments=p_Account_to
                 
    And (fvl1.flex_value=gcck.segment1 And fvl1.FLEX_VALUE_SET_ID='1007720')                        -- 公司段
                 And (fvl2.flex_value=gcck.segment2 And fvl2.FLEX_VALUE_SET_ID='1007721')                        -- 部门段
                 And (fvl3.flex_value=gcck.segment3 And fvl3.FLEX_VALUE_SET_ID='1007722')                        -- 科目段
                 And (fvl4.flex_value=gcck.segment4 And fvl4.FLEX_VALUE_SET_ID='1007723')                        -- 子科目段
                 And (fvl5.flex_value=gcck.segment5 And fvl5.FLEX_VALUE_SET_ID='1007724')                        -- 公司间段
                 And (fvl6.flex_value=gcck.segment6 And fvl6.FLEX_VALUE_SET_ID='1007725')                        -- 产品段
                 And (fvl7.flex_value=gcck.segment7 And fvl7.FLEX_VALUE_SET_ID='1007726')                        -- 项目段
                 And (fvl8.flex_value=gcck.segment8 And fvl8.FLEX_VALUE_SET_ID='1007727');
          
    End If;
          
          l_acct_name:
    =p_Account_From||'---'||p_Account_to;
          l_acct_desc:
    =l_acct_desc1||'---'||l_acct_desc2;
          
          
    -- 输出报表头
          l_SHOW := lpad('客户化 总帐科目余额明细列表'100' ');
          cux_my_public_pkg.OUT(l_SHOW);
          cux_my_public_pkg.OUT(
    ' ');  
        
          l_SHOW :
    = rpad('会计日期'10' '|| rpad(p_start_date, 10' ')|| rpad(''|| p_end_date, 30' ');
          cux_my_public_pkg.OUT(l_SHOW);
          cux_my_public_pkg.OUT(
    ' ');
        
          
    --帐户名称
          l_SHOW := rpad('单位名称'20' '|| rpad(l_org_name, 100' ');
          cux_my_public_pkg.OUT(l_SHOW);
          l_SHOW :
    = rpad('会计科目'20' '|| rpad(l_acct_name,100' ');
          cux_my_public_pkg.Out(l_SHOW);
          l_SHOW :
    = rpad('科目说明'20' '|| rpad(l_acct_desc,100' ');
          cux_my_public_pkg.Out(l_SHOW);
          cux_my_public_pkg.OUT(
    ' ');
           
          l_SHOW :
    = rpad('来源'20' '|| rpad('科目'50' '||rpad('科目说明'150' '|| 
          rpad(
    '过帐状态'10' '|| 
          rpad(
    '期初余额借方'20' '|| rpad('期初余额贷方'20' '|| 
          rpad(
    '本期发生借方'20' '|| rpad('本期发生贷方'20' '||
          rpad(
    '本年累计借方'20' '|| rpad('本年累计贷方'20' '||
          rpad(
    '期末余额借方'20' '|| rpad('期末余额贷方'20' ');
          cux_my_public_pkg.OUT(l_SHOW);
          
          l_SHOW :
    = lpad(' '20'-'|| lpad(' '50'-'||
                  lpad(
    ' '150'-'|| 
                  lpad(
    ' '10'-'|| 
                  lpad(
    ' '20'-'|| lpad(' '20'-'|| 
                  lpad(
    ' '20'-'|| lpad(' '20'-'||
                  lpad(
    ' '20'-'|| lpad(' '20'-'||
                  lpad(
    ' '20'-'|| lpad(' '20'-');
          cux_my_public_pkg.OUT(l_SHOW);
          
          
    -- 汇总科目明细
          If p_report_type=1 Then
             
             
    -- 汇总init
             l_start_dr_t:=0;
             l_start_cr_t:
    =0;
             l_now_dr_t:
    =0;
             l_now_cr_t:
    =0;
             l_year_dr_t:
    =0;
             l_year_cr_t:
    =0;
             l_end_dr_t:
    =0;
             l_end_cr_t:
    =0;
             
             
    For i In cr1 Loop
             
                
    -- 帐户类型  A  (资产) E  (费用类) 
                SELECT Count(Distinct gcc.account_type)
                    
    INTO p_account_type
                 
    FROM gl_code_combinations gcc
                
    WHERE gcc.Code_Combination_Id=i.accid
                  
    And (gcc.Segment3 Like '1%' Or gcc.Segment3 Like '4%');
                
                
    IF p_account_type>0 THEN
                    p_sign :
    = 1;
                
    ELSE
                    p_sign :
    = -1;
                
    END IF;

                
    -- 期初余额
                SELECT p_sign*nvl(Sum(Distinct (gc.begin_balance_dr-gc.begin_balance_cr)+(gc.period_net_dr-gc.period_net_cr)),0)
                    
    into l_total
                 
    FROM GL_BALANCES gc
                
    WHERE gc.Set_Of_Books_Id = p_set_of_gl_id
                  
    AND gc.code_combination_id = i.accid
                  
    AND gc.period_name = substr(to_char(add_months(to_date(substr(p_start_date,4,4)||'-'||substr(p_start_date,1,2)||'-01','yyyy-mm-dd'),-1),'YYYY-MM-DD'),6,2)||'-'||substr(to_char(add_months(to_date(substr(p_start_date,4,4)||'-'||substr(p_start_date,1,2)||'-01','yyyy-mm-dd'),-1),'YYYY-MM-DD'),1,4)
                  
    AND gc.actual_flag = 'A';
                  
                
    IF p_sign=1 THEN
                   l_start_dr:
    =l_total;
                   l_start_cr:
    =0;
                
    End If;
                
                
    If p_sign=-1 Then
                   l_start_dr:
    =0;
                   l_start_cr:
    =l_total;
                
    end if;
                
                
    -- 年发生额
                Select nvl(sum(gv.Line_Entered_Dr),0),
                       nvl(
    sum(gv.Line_Entered_cr),0)
                     
    Into l_year_dr,
                          l_year_cr
                
    From Gl_Je_Journal_Lines_v gv
                
    Where gv.Period_Year=substr(p_start_date,4,4
                  
    And gv.Actual_Flag='A'
                  
    And gv.Batch_Status='P'
                  
    And gv.Line_Code_Combination_Id=i.accid;

                
    -- 期末数
               IF p_account_type>0 THEN
                  l_qm_dr:
    =l_start_dr+i.A5-i.A6;
                  l_qm_cr:
    =0;
               
    Else
                  l_qm_dr:
    =0;
                  l_qm_cr:
    =l_start_cr+i.A6-i.A5;
               
    End If;               
                  
                l_SHOW :
    = rpad(i.A3, 20' '|| rpad(i.A1, 50' '||
                          rpad(i.A2, 
    150' '|| 
                          rpad(i.A4, 
    10' '|| 
                          rpad(to_char(l_start_dr,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_start_cr,'999,999,999,990.00'), 20' '|| 
                          rpad(to_char(i.A5,
    '999,999,999,990.00'), 20' '|| rpad(to_char(i.A6,'999,999,999,990.00'), 20' '||
                          rpad(to_char(l_year_dr,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_year_cr,'999,999,999,990.00'), 20' '||
                          rpad(to_char(l_qm_dr,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_qm_cr,'999,999,999,990.00'), 20' ');
                cux_my_public_pkg.OUT(l_SHOW);
          
                
    -- 汇总
                l_start_dr_t:=l_start_dr_t+l_start_dr;
                l_start_cr_t:
    =l_start_cr_t+l_start_cr;
                
                l_now_dr_t:
    =l_now_dr_t+i.A5;
                l_now_cr_t:
    =l_now_cr_t+i.A6;
                
                l_year_dr_t:
    =l_year_dr_t+l_year_dr;
                l_year_cr_t:
    =l_year_cr_t+l_year_cr;
                l_end_dr_t:
    =l_end_dr_t+l_qm_dr;
                l_end_cr_t:
    =l_end_cr_t+l_qm_cr;
          
             
    END LOOP;
             l_SHOW :
    = lpad(' '20'-'|| lpad(' '50'-'||
                        lpad(
    ' '150'-'|| 
                        lpad(
    ' '10'-'|| 
                        lpad(
    ' '20'-'|| lpad(' '20'-'|| 
                        lpad(
    ' '20'-'|| lpad(' '20'-'||
                        lpad(
    ' '20'-'|| lpad(' '20'-'||
                        lpad(
    ' '20'-'|| lpad(' '20'-');
             cux_my_public_pkg.OUT(l_SHOW);
              
             l_SHOW :
    = rpad('合计'20' '|| rpad(' '50' '||
                        rpad(
    ' '150' '|| 
                        rpad(
    ' '10' '|| 
                        rpad(to_char(l_start_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_start_cr_t,'999,999,999,990.00'), 20' '|| 
                        rpad(to_char(l_now_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_now_cr_t,'999,999,999,990.00'), 20' '||
                        rpad(to_char(l_year_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_year_cr_t,'999,999,999,990.00'), 20' '||
                        rpad(to_char(l_end_dr_t,
    '999,999,999,990.00'), 20' '|| rpad(to_char(l_end_cr_t,'999,999,999,990.00'), 20' ');
             cux_my_public_pkg.OUT(l_SHOW);
          
    End If;
      
    End cuxgllistgathmx;
      
    end CUX_GL_REP_LISTPKG;

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/long_li/archive/2005/08/03/444862.aspx

  • 相关阅读:
    JSP 隐含对象
    Cookie 和 Session
    Servlet(Server Applet) 详解
    AbstractQueuedSynchronizer 详解
    ThreadLocal 详解
    线程的生命周期
    phpfor函数和foreach函数
    php的while函数
    php的switch函数
    php的if函数
  • 原文地址:https://www.cnblogs.com/liuweicong39/p/2534765.html
Copyright © 2020-2023  润新知