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 , 4 ) And 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 , 4 ) And 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
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 , 4 ) And 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 , 4 ) And 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