The following lines contain the word 'select', 'insert', 'update' or 'delete':
select sequence into g_current_sequence from fii_time_week where fii_ar_util_pkg.g_as_of_date between start_date and end_date;
select sequence into g_current_sequence from FII_TIME_ENT_QTR where fii_ar_util_pkg.g_as_of_date between start_date and end_date;
select sequence into g_current_sequence from FII_TIME_ENT_YEAR where fii_ar_util_pkg.g_as_of_date between start_date and end_date;
select sequence into g_current_sequence from FII_TIME_ENT_PERIOD where fii_ar_util_pkg.g_as_of_date between start_date and end_date;
l_select_sql1 varchar2(500);
l_select_sql2 varchar2(500);
l_select_sql3 varchar2(500);
l_inner_cst_select varchar2(70);
l_self_drill_select varchar2(200);
l_customer_select varchar2(500);
l_self_drill_select := '''''';
l_select_sql1 := ''''||l_beg_open_rec_drill_2||'''';
l_select_sql2 := ''''||l_end_open_rec_drill_2||'''';
l_select_sql3 := ''''||l_end_curr_rec_drill_2||'''';
l_select_sql1 := ''''||l_beg_open_rec_drill_l||'''';
l_select_sql2 := ''''||l_end_open_rec_drill_l||'''';
l_select_sql3 := ''''||l_end_curr_rec_drill_l||'''';
l_customer_select := ' t.party_id party_id, ';
l_select_sql1 := 'DECODE(inline_view.is_self_flag, ''Y'' ,'''||l_beg_open_rec_drill_l||''', DECODE(is_leaf_flag,''Y'', '''||l_beg_open_rec_drill_l||''', '''||l_beg_open_rec_drill||'''))';
l_select_sql2 := 'DECODE(inline_view.is_self_flag, ''Y'' ,'''||l_end_open_rec_drill_l||''', DECODE(is_leaf_flag,''Y'', '''||l_end_open_rec_drill_l||''', '''||l_end_open_rec_drill||'''))';
l_select_sql3 := 'DECODE(inline_view.is_self_flag, ''Y'' ,'''||l_end_curr_rec_drill_l||''', DECODE(is_leaf_flag,''Y'', '''||l_end_curr_rec_drill_l||''', '''||l_end_curr_rec_drill||'''))';
l_self_drill_select := 'DECODE(inline_view.is_self_flag, ''Y'', '''', DECODE(inline_view.is_leaf_flag, ''Y'','''','''||l_self_drill||'''))';
--Select and Groupp by Clauses
l_inner_cst_select := 'is_self_flag is_self_flag, is_leaf_flag is_leaf_flag,';
l_select_sql1 := ''''||l_beg_open_rec_drill_l||'''';
l_select_sql2 := ''''||l_end_open_rec_drill_l||'''';
l_select_sql3 := ''''||l_end_curr_rec_drill_l||'''';
sqlstmt := 'SELECT
inline_view.viewby VIEWBY,
inline_view.viewby_id VIEWBYID,
((DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC) +
(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC))/
NULLIF((DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)
+ (DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)),0)) * 100 FII_AR_COLL_EFF_INDEX,
(((DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC) +
(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
-DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC))/
NULLIF((NULLIF(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0,FII_AR_BEG_OPEN_REC), 0)
+(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
-DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)),0))* 100) -
(((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)
+(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_PRIOR_END_OPEN_REC, NULL, 0, FII_AR_PRIOR_END_OPEN_REC))/
NULLIF((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)
+(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_PRIOR_END_CURR_REC, NULL, 0, FII_AR_PRIOR_END_CURR_REC)),0))*100) FII_AR_COLL_EFF_CHANGE,
FII_AR_BEG_OPEN_REC,
FII_AR_BILLED_AMOUNT,
FII_AR_END_OPEN_REC,
FII_AR_BEG_CURR_REC,
FII_AR_PAST_DUE_REC,
FII_AR_END_CURR_REC,
((SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)) OVER() +
SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC)) OVER())/
NULLIF((SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))OVER()
+SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)) OVER()),0)) *100 FII_AR_GT_COLL_EFF_IND,
(((SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)) OVER()
+SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC)) OVER())/
NULLIF((SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))OVER()
+SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)) OVER()),0))* 100) -
(((SUM(DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)) OVER()
+SUM(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_PRIOR_END_OPEN_REC, NULL, 0, FII_AR_PRIOR_END_OPEN_REC)) OVER())/
NULLIF((SUM(DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)) OVER()
+SUM(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_PRIOR_END_CURR_REC, NULL, 0, FII_AR_PRIOR_END_CURR_REC)) OVER()),0))* 100) FII_AR_GT_COLL_EFF_CHG,
SUM(FII_AR_BEG_OPEN_REC) OVER() FII_AR_GT_BEG_OPEN_REC,
SUM(FII_AR_BILLED_AMOUNT) OVER() FII_AR_GT_BILLED_AMT,
SUM(FII_AR_END_OPEN_REC) OVER() FII_AR_GT_END_OPEN_REC,
SUM(FII_AR_END_CURR_REC) OVER() FII_AR_GT_END_CURR_REC,
((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)
+ (DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_PRIOR_END_OPEN_REC, NULL, 0, FII_AR_PRIOR_END_OPEN_REC))/
NULLIF((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)
+ (DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_PRIOR_END_CURR_REC, NULL, 0, FII_AR_PRIOR_END_CURR_REC)),0)) * 100 FII_AR_PRIO_COLL_EFF_INDEX,
FII_AR_END_PAST_DUE_REC,
DECODE(FII_AR_BEG_OPEN_REC,0,'''',DECODE(NVL(FII_AR_BEG_OPEN_REC,-999999),-999999,'''',
'||l_select_sql1||')) FII_AR_BEG_OPEN_REC_DRILL,
DECODE(FII_AR_END_OPEN_REC,0,'''',DECODE(NVL(FII_AR_END_OPEN_REC,-999999),-999999,'''',
'||l_select_sql2||')) FII_AR_END_OPEN_REC_DRILL,
DECODE(FII_AR_END_CURR_REC,0,'''',DECODE(NVL(FII_AR_END_CURR_REC,-999999),-999999,'''',
'||l_select_sql3||')) FII_AR_END_CURR_REC_DRILL,
'||l_self_drill_select ||' FII_AR_CUST_SELF_DRILL ,
((SUM(DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)) OVER() +
SUM(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_PRIOR_END_OPEN_REC, NULL, 0, FII_AR_PRIOR_END_OPEN_REC)) OVER())/
NULLIF((SUM(DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC))OVER()
+SUM(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') OVER()
-SUM(DECODE(FII_AR_PRIOR_END_CURR_REC, NULL, 0, FII_AR_PRIOR_END_CURR_REC)) OVER()),0)) * 100 FII_AR_GT_PRIO_COLL_EFF_INDEX
FROM (
SELECT /*+ INDEX(f FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv_N1)*/ VIEWBY,
viewby_code viewby_id,
'||l_inner_cst_select||l_customer_select||'
SUM(DECODE(t.report_date, :CURR_PERIOD_START ,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_BEG_OPEN_REC,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_END_OPEN_REC,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN current_open_amount ELSE NULL END) ) ) FII_AR_END_CURR_REC,
SUM(DECODE(t.report_date, :CURR_PERIOD_START,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN current_open_amount ELSE NULL END) ) ) FII_AR_BEG_CURR_REC,
SUM(DECODE(t.report_date, :CURR_PERIOD_START, /*This date will be starting date of the period*/
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN past_due_open_amount ELSE NULL END) ) ) FII_AR_PAST_DUE_REC,
SUM(DECODE(t.report_date, :ASOF_DATE, /*This date will be the as-of-date*/
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN past_due_open_amount ELSE NULL END) ) ) FII_AR_END_PAST_DUE_REC,
SUM(DECODE(t.report_date, :ASOF_DATE, /*This date will be the as-of-date*/
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN billed_amount ELSE NULL END) ) ) FII_AR_BILLED_AMOUNT,
SUM(DECODE(t.report_date, :PRIOR_PERIOD_START, /*This date will be starting date of the prior period*/
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_PRIOR_BEG_OPEN_REC,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE, /*This date will be the prior as-of-date*/
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_PRIOR_END_OPEN_REC,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE, /*This date will be the prior as-of-date*/
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN current_open_amount ELSE NULL END) ) ) FII_AR_PRIOR_END_CURR_REC,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE, /*This date will be the prior as-of-date*/
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN billed_amount ELSE NULL END) ) ) FII_AR_PRIOR_BILLED_AMOUNT
FROM FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv'|| fii_ar_util_pkg.g_curr_suffix
||' f,( SELECT /*+ no_merge '||l_gt_hint|| ' */ *
FROM fii_time_structures cal,
'||fii_ar_util_pkg.get_from_statement||' gt
WHERE report_date IN ( :CURR_PERIOD_START ,
:ASOF_DATE,
:PREVIOUS_ASOF_DATE,
:PRIOR_PERIOD_START
)
AND ( bitand(cal.record_type_id, :BITAND) = :BITAND OR
bitand(cal.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
)
AND '||fii_ar_util_pkg.get_where_statement||'
) t
WHERE f.time_id = t.time_id
AND f.period_type_id = t.period_type_id '||l_child_party_where||'
AND f.org_id = t.org_id
AND '||fii_ar_util_pkg.get_mv_where_statement||' '|| l_party_where ||' ' || l_collector_where ||' '|| l_cust_acct_where ||'
GROUP BY viewby_code, VIEWBY '||l_inner_cst_group||') inline_view
'||l_order_by;
l_select_sql1 varchar2(500);
l_select_sql2 varchar2(500);
l_inner_cst_select varchar2(70);
l_self_drill_select varchar2(200);
l_customer_select varchar2(500);
l_self_drill_select := '''''';
l_select_sql1 := ''''||l_rec_amt_drill_2||'''';
l_select_sql2 := ''''||l_wadp_drill_1||'''';
l_select_sql1 := ''''||l_rec_amt_drill_1||'''';
l_select_sql2 := '''''';
l_customer_select := ' t.party_id party_id, ';
l_select_sql1 := 'DECODE(inline_view.is_self_flag, ''Y'' ,'''||l_rec_amt_drill_1||''', DECODE(is_leaf_flag,''Y'', '''||l_rec_amt_drill_1||''', '''||l_rec_amt_drill||'''))';
l_select_sql2 := 'DECODE(inline_view.is_self_flag, ''Y'' ,'''', DECODE(is_leaf_flag,''Y'', '''', '''||l_wadp_drill||'''))';
l_self_drill_select := 'DECODE(inline_view.is_self_flag, ''Y'' , '''', DECODE(inline_view.is_leaf_flag, ''Y'','''','''||l_self_drill||'''))';
--Select and group by clauses for hierarchical Customer dimension
l_inner_cst_select := 'is_self_flag is_self_flag, is_leaf_flag is_leaf_flag,';
l_select_sql1 := ''''||l_rec_amt_drill_1||'''';
l_select_sql2 := '''''';
sqlstmt := 'SELECT
inline_view.viewby VIEWBY,
inline_view .viewby_id VIEWBYID,
((DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)
+ (DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC))/
NULLIF((DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)
+ (DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)),0)) * 100 FII_AR_COLL_EFF_INDEX,
(((DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)
+(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
-DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC))/
NULLIF((DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)
+(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||')
-DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)),0)) * 100) -
(((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)
+(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
-DECODE(FII_AR_PRIOR_END_OPEN_REC, NULL, 0, FII_AR_PRIOR_END_OPEN_REC))/
NULLIF((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)
+(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
-DECODE(FII_AR_PRIOR_END_CURR_REC, NULL, 0, FII_AR_PRIOR_END_CURR_REC)),0)) * 100) FII_AR_COLL_EFF_CHANGE,
(FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_DAYS_PAID,
((FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) - (FII_AR_PRIOR_WTD_DP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0)))FII_AR_CHANGE_DP,
((FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) - (FII_AR_WTD_TERMS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0))) FII_AR_DAYS_DELQ,
(((FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) - (FII_AR_WTD_TERMS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)))
-
((FII_AR_PRIOR_WTD_DP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0)) - (FII_AR_PRIOR_WTD_TP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0))) ) FII_AR_CHANGE_DD,
(FII_AR_WTD_TERMS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_TERMS_PAID,
((FII_AR_WTD_TERMS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) - (FII_AR_PRIOR_WTD_TP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0))) FII_AR_CHANGE_TP,
FII_AR_BILLED_AMOUNT FII_AR_BILLED_AMOUNT,
FII_AR_REC_AMT FII_AR_REC_AMT,
((sum(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)) over()
+sum(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') over()
-sum(DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC)) over())/
NULLIF((sum(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))over()
+sum(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') over()
-sum(DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)) over()),0)) * 100 FII_AR_GT_COLL_EFF_IND,
(((sum(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC)) over()
+sum(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') over()
-sum(DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC)) over())/
NULLIF((sum(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))over()
+sum(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT) '||g_scale_sign||' '||g_scaling_factor||') over()
-sum(DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC)) over()),0)) * 100 ) -
(((sum(DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)) over()
+sum(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||') over()
-sum(DECODE(FII_AR_PRIOR_END_OPEN_REC, NULL, 0, FII_AR_PRIOR_END_OPEN_REC)) over())/
NULLIF((sum(DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)) over()
+sum(DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||') over()
-sum(DECODE(FII_AR_PRIOR_END_CURR_REC, NULL, 0, FII_AR_PRIOR_END_CURR_REC)) over()),0)) * 100 ) FII_AR_GT_COLL_EFF_CHG,
(SUM(FII_AR_WTD_DAYS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0)) FII_AR_GT_DP,
((SUM(FII_AR_WTD_DAYS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0)) - (SUM(FII_AR_PRIOR_WTD_DP_NUM) OVER()/NULLIF(SUM(FII_AR_PRIOR_APPLIED_AMOUNT) OVER(),0))) FII_AR_GT_DP_CHG,
((SUM(FII_AR_WTD_DAYS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0)) - (SUM(FII_AR_WTD_TERMS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0))) FII_AR_GT_DD,
(((SUM(FII_AR_WTD_DAYS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0)) - (SUM(FII_AR_WTD_TERMS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0)))
-
((SUM(FII_AR_PRIOR_WTD_DP_NUM) OVER() /NULLIF(SUM(FII_AR_PRIOR_APPLIED_AMOUNT) OVER(),0)) - (SUM(FII_AR_PRIOR_WTD_TP_NUM) OVER()/NULLIF(SUM(FII_AR_PRIOR_APPLIED_AMOUNT) OVER(),0))) ) FII_AR_GT_DD_CHG,
(SUM(FII_AR_WTD_TERMS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0)) FII_AR_GT_TP,
((SUM(FII_AR_WTD_TERMS_PAID_NUM) OVER()/NULLIF(SUM(FII_AR_APPLIED_AMOUNT) OVER(),0)) - (SUM(FII_AR_PRIOR_WTD_TP_NUM) OVER()/NULLIF(SUM(FII_AR_PRIOR_APPLIED_AMOUNT) OVER(),0))) FII_AR_GT_TP_CHG,
SUM(FII_AR_BILLED_AMOUNT) OVER() FII_AR_GT_BILLED_AMT,
SUM(FII_AR_REC_AMT) OVER() FII_AR_GT_REC_AMT,
((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0, FII_AR_PRIOR_BEG_OPEN_REC)
+ (DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_PRIOR_END_OPEN_REC, NULL, 0, FII_AR_PRIOR_END_OPEN_REC))/
NULLIF((DECODE(FII_AR_PRIOR_BEG_OPEN_REC, NULL, 0,FII_AR_PRIOR_BEG_OPEN_REC)
+ (DECODE(FII_AR_PRIOR_BILLED_AMOUNT, NULL, 0, FII_AR_PRIOR_BILLED_AMOUNT)'||g_scale_sign||' '||g_scaling_factor||')
- DECODE(FII_AR_PRIOR_END_CURR_REC, NULL, 0, FII_AR_PRIOR_END_CURR_REC)),0)) * 100 FII_AR_PRIO_COLL_EFF_INDEX_G,
((FII_AR_PRIOR_WTD_DP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0)) - (FII_AR_PRIOR_WTD_TP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0))) FII_AR_AVG_DD_PRIOR_G,
'||l_self_drill_select ||' FII_AR_VIEW_BY_DRILL,
DECODE(FII_AR_REC_AMT,0,'''',DECODE(NVL(FII_AR_REC_AMT,-999999),-999999,'''',
'||l_select_sql1||')) FII_AR_REC_AMT_DRILL,
DECODE((FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)),0,'''',DECODE(NVL((FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)),-999999),-999999,'''',
'||l_select_sql2||')) FII_AR_WADP_DRILL,
FII_AR_PRIOR_REC_AMT FII_AR_PRIOR_REC_AMT,
SUM(FII_AR_PRIOR_REC_AMT) OVER() FII_AR_GT_PRIOR_REC_AMT,
FII_AR_PRIOR_WTD_DP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0) FII_AR_PRIOR_WTD_AVG_DP,
((FII_AR_PRIOR_WTD_DP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0)) - (FII_AR_PRIOR_WTD_TP_NUM/NULLIF(FII_AR_PRIOR_APPLIED_AMOUNT,0))) FII_AR_PRIOR_WTD_AVG_DD,
NVL((SUM(FII_AR_PRIOR_WTD_DP_NUM) OVER()/NULLIF(SUM(FII_AR_PRIOR_APPLIED_AMOUNT) OVER(),0)),0) FII_AR_GT_PRIOR_WTD_AVG_DP,
NVL( ((SUM(FII_AR_PRIOR_WTD_DP_NUM) OVER()/NULLIF(SUM(FII_AR_PRIOR_APPLIED_AMOUNT) OVER(),0))
- (SUM(FII_AR_PRIOR_WTD_TP_NUM) OVER()/NULLIF(SUM(FII_AR_PRIOR_APPLIED_AMOUNT) OVER(),0))),0) FII_AR_GT_PRIOR_WTD_AVG_DD
FROM (
SELECT /*+ INDEX(f FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv_N1)*/ VIEWBY,
viewby_code viewby_id,
'|| l_inner_cst_select || l_customer_select ||'
SUM(DECODE(t.report_date, :CURR_PERIOD_START ,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_BEG_OPEN_REC,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_END_OPEN_REC,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN current_open_amount ELSE NULL END) ) ) FII_AR_END_CURR_REC,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN billed_amount ELSE NULL END) ) ) FII_AR_BILLED_AMOUNT,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN app_amount ELSE NULL END) ) ) FII_AR_APPLIED_AMOUNT,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN wtd_days_paid_num ELSE NULL END) ) ) FII_AR_WTD_DAYS_PAID_NUM,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN wtd_terms_paid_num ELSE NULL END) ) ) FII_AR_WTD_TERMS_PAID_NUM,
SUM(DECODE(t.report_date, :ASOF_DATE,
(CASE WHEN (f.header_filter_date <= :ASOF_DATE) and
(f.header_filter_date >= :CURR_PERIOD_START) and (bitand(t.record_type_id,:BITAND) = :BITAND)
THEN total_receipt_amount ELSE NULL END) ) ) FII_AR_REC_AMT,
SUM(DECODE(t.report_date, :PRIOR_PERIOD_START,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_PRIOR_BEG_OPEN_REC,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN total_open_amount ELSE NULL END) ) ) FII_AR_PRIOR_END_OPEN_REC,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN current_open_amount ELSE NULL END) ) ) FII_AR_PRIOR_END_CURR_REC,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN billed_amount ELSE NULL END) ) ) FII_AR_PRIOR_BILLED_AMOUNT,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN app_amount ELSE NULL END) ) ) FII_AR_PRIOR_APPLIED_AMOUNT,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN wtd_days_paid_num ELSE NULL END) ) ) FII_AR_PRIOR_WTD_DP_NUM,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE,
(CASE WHEN bitand(t.record_type_id,:BITAND) = :BITAND
THEN wtd_terms_paid_num ELSE NULL END) ) ) FII_AR_PRIOR_WTD_TP_NUM,
SUM(DECODE(t.report_date, :PREVIOUS_ASOF_DATE,
(CASE WHEN (f.header_filter_date <= :PREVIOUS_ASOF_DATE) and
(f.header_filter_date >= :PRIOR_PERIOD_START) and (bitand(t.record_type_id,:BITAND) = :BITAND)
THEN total_receipt_amount ELSE NULL END) ) ) FII_AR_PRIOR_REC_AMT
FROM FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv'|| fii_ar_util_pkg.g_curr_suffix
||' f,( SELECT /*+ no_merge '||l_gt_hint|| ' */ *
FROM fii_time_structures cal,
'||fii_ar_util_pkg.get_from_statement||' gt
WHERE report_date in ( :CURR_PERIOD_START ,
:ASOF_DATE,
:PREVIOUS_ASOF_DATE,
:PRIOR_PERIOD_START
)
AND ( bitand(cal.record_type_id, :BITAND) = :BITAND OR
bitand(cal.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
)
AND '||fii_ar_util_pkg.get_where_statement||'
) t
WHERE f.time_id = t.time_id
AND f.period_type_id = t.period_type_id '||l_child_party_where||'
AND f.org_id = t.org_id
AND '||fii_ar_util_pkg.get_mv_where_statement||' '|| l_party_where ||' ' || l_collector_where ||' '|| l_cust_acct_where ||' '|| l_industry_where ||'
GROUP BY viewby_code, VIEWBY '||l_inner_cst_group||' ) inline_view
'||l_order_by;
l_select_clause VARCHAR2(30000); --Intermediate sql statement for the upper select part of the final sql
l_prior_column VARCHAR2(5000); --Prior columns select clause
l_current_prior_column varchar2(5000); --Prior columns select clause for current period
l_prior_column:= ' SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' ,
CASE
WHEN t.report_date < :SD_SDATE
AND bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN f.total_open_amount
ELSE null
END )) FII_PRIOR_AR_BEG_OPEN_REC,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'', null,
CASE
WHEN t.report_date < :SD_SDATE
AND bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN f.total_open_amount
ELSE null
END )) FII_PRIOR_AR_END_OPEN_REC,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN t.report_date < :SD_SDATE
AND bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN f.current_open_amount
ELSE null
END )) FII_PRIOR_AR_END_CURR_REC,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'', null,
CASE
WHEN t.report_date < :SD_SDATE
AND bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.billed_amount
ELSE NULL
END )) FII_PRIOR_AR_BILLED_AMOUNT, ';
/*Upper select clause. This is common for all period types*/
-- In this case Union All is not required which means all periods are fully exhausted and
-- hence the scaling factor are constant for all
l_select_clause := 'SELECT
cy_per.name FII_AR_COLL_EFF_VIEW_BY,
FII_AR_COLL_EFF_INDEX * 100 FII_AR_COLL_EFF_INDEX,
FII_AR_PRIO_COLL_EFF_INDEX_G * 100 FII_AR_PRIO_COLL_EFF_INDEX_G,
FII_AR_WTD_AVG_DP,
(FII_AR_WTD_AVG_DP - FII_AR_WTD_AVG_TP) FII_AR_DAYS_DELQ,
FII_AR_WTD_AVG_TP,
FII_AR_REC_AMT,
DECODE(FII_AR_WTD_AVG_DP,0,'''',DECODE(NVL(FII_AR_WTD_AVG_DP, -99999),-99999, '''',DECODE(SIGN(cy_per.end_date - :ASOF_DATE),1,
''pFunctionName=FII_AR_COLL_EFFECTIVENESS&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'',
''AS_OF_DATE=''|| to_char(cy_per.end_date,''DD/MM/YYYY'')||''&pFunctionName=FII_AR_COLL_EFFECTIVENESS&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'' )))
FII_AR_DAYS_PAID_DRILL,
DECODE(FII_AR_COLL_EFF_INDEX,0,'''',DECODE(NVL(FII_AR_COLL_EFF_INDEX, -99999),-99999, '''',DECODE(SIGN(cy_per.end_date - :ASOF_DATE),1,
''pFunctionName=FII_AR_COLL_EFF_INDEX&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'',
''AS_OF_DATE=''|| to_char(cy_per.end_date,''DD/MM/YYYY'')||''&pFunctionName=FII_AR_COLL_EFF_INDEX&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'' )))
FII_AR_CEI_DRILL,
DECODE(FII_AR_REC_AMT,0,'''',DECODE(NVL(FII_AR_REC_AMT, -99999),-99999, '''', DECODE(SIGN(cy_per.end_date - :ASOF_DATE),1,
''pFunctionName=FII_AR_REC_ACTIVITY&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'',
''AS_OF_DATE=''|| to_char(cy_per.end_date,''DD/MM/YYYY'')||''&pFunctionName=FII_AR_REC_ACTIVITY&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'' )))
FII_AR_RCT_AMT_DRILL
FROM '||l_time_table||' cy_per, (
SELECT
sequence sequence,
(SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
- SUM(DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC)))
/NULLIF((SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
-SUM(DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC))),0) FII_AR_COLL_EFF_INDEX,
SUM(FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_WTD_AVG_DP,
SUM(FII_AR_AVG_DD_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_DAYS_DELQ,
SUM(FII_AR_WTD_TERMS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_WTD_AVG_TP,
SUM(FII_AR_REC_AMT) FII_AR_REC_AMT,
(SUM(DECODE(FII_PRIOR_AR_BEG_OPEN_REC, NULL, 0, FII_PRIOR_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_PRIOR_AR_BILLED_AMOUNT, NULL, 0, FII_PRIOR_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
-SUM(DECODE(FII_PRIOR_AR_END_OPEN_REC, NULL, 0, FII_PRIOR_AR_END_OPEN_REC)))
/NULLIF((SUM(DECODE(FII_PRIOR_AR_BEG_OPEN_REC, NULL, 0, FII_PRIOR_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_PRIOR_AR_BILLED_AMOUNT, NULL, 0, FII_PRIOR_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
- SUM(DECODE(FII_PRIOR_AR_END_CURR_REC, NULL, 0, FII_PRIOR_AR_END_CURR_REC))),0) FII_AR_PRIO_COLL_EFF_INDEX_G
from (
SELECT per.name,per.sequence,
sum(FII_AR_REC_AMT) FII_AR_REC_AMT,
sum(FII_AR_BEG_OPEN_REC) FII_AR_BEG_OPEN_REC,
sum(FII_AR_END_OPEN_REC) FII_AR_END_OPEN_REC,
sum(FII_AR_END_CURR_REC) FII_AR_END_CURR_REC,
sum(FII_PRIOR_AR_BEG_OPEN_REC) FII_PRIOR_AR_BEG_OPEN_REC,
sum(FII_PRIOR_AR_END_OPEN_REC)FII_PRIOR_AR_END_OPEN_REC,
sum(FII_PRIOR_AR_END_CURR_REC) FII_PRIOR_AR_END_CURR_REC,
sum(FII_PRIOR_AR_BILLED_AMOUNT) FII_PRIOR_AR_BILLED_AMOUNT,
sum(FII_AR_BILLED_AMOUNT) FII_AR_BILLED_AMOUNT,
sum(FII_AR_APPLIED_AMOUNT) FII_AR_APPLIED_AMOUNT,
sum(FII_AR_WTD_DAYS_PAID_NUM) FII_AR_WTD_DAYS_PAID_NUM,
sum(FII_AR_WTD_TERMS_PAID_NUM) FII_AR_WTD_TERMS_PAID_NUM,
sum(FII_AR_AVG_DD_NUM) FII_AR_AVG_DD_NUM FROM '||l_time_table||' per,(';
SELECT /*+ INDEX(f FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv_N1)*/
per.name,
per.sequence sequence,
SUM(DECODE(bitand(t.record_type_id,:BITAND), :BITAND,
CASE
WHEN (t.report_date = :ASOF_DATE)
AND (f.header_filter_date <= :ASOF_DATE )
AND (f.header_filter_date >= :CURR_PERIOD_START)
THEN f.total_receipt_amount
ELSE null
END
)) FII_AR_REC_AMT,
SUM(DECODE(bitand(t.record_type_id,:BITAND_INC_TODATE), :BITAND_INC_TODATE,
CASE
WHEN t.report_date = :CURR_PERIOD_START
THEN f.total_open_amount
ELSE null
END
)) FII_AR_BEG_OPEN_REC,
SUM(DECODE(bitand(t.record_type_id,:BITAND_INC_TODATE), :BITAND_INC_TODATE,
CASE
WHEN t.report_date = :ASOF_DATE
THEN f.total_open_amount
ELSE null
END
)) FII_AR_END_OPEN_REC,
SUM(DECODE(bitand(t.record_type_id,:BITAND_INC_TODATE), :BITAND_INC_TODATE,
CASE
WHEN t.report_date = :ASOF_DATE
THEN f.current_open_amount
ELSE null
END
)) FII_AR_END_CURR_REC,
'||l_current_prior_column||'
SUM(DECODE(bitand(t.record_type_id,:BITAND), :BITAND,
CASE
WHEN t.report_date = :ASOF_DATE
THEN f.billed_amount
ELSE null
END
)) FII_AR_BILLED_AMOUNT,
SUM(DECODE(bitand(t.record_type_id,:BITAND), :BITAND,
CASE
WHEN t.report_date = :ASOF_DATE
THEN f.app_amount
ELSE null
END
)) FII_AR_APPLIED_AMOUNT,
SUM(DECODE(bitand(t.record_type_id,:BITAND), :BITAND,
CASE
WHEN t.report_date = :ASOF_DATE
THEN f.wtd_days_paid_num
ELSE null
END
)) FII_AR_WTD_DAYS_PAID_NUM,
SUM(DECODE(bitand(t.record_type_id,:BITAND), :BITAND,
CASE
WHEN t.report_date = :ASOF_DATE
THEN f.wtd_terms_paid_num
ELSE null
END
)) FII_AR_WTD_TERMS_PAID_NUM,
SUM(DECODE(bitand(t.record_type_id,:BITAND), :BITAND,
CASE
WHEN t.report_date = :ASOF_DATE
THEN f.avg_dd_num
ELSE null
END
)) FII_AR_AVG_DD_NUM
FROM '||l_time_table||' per,
FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv'|| fii_ar_util_pkg.g_curr_suffix ||' f,
(
SELECT /*+ no_merge leading(gt) cardinality(gt 1)*/ *
FROM fii_time_structures cal,
fii_ar_summary_gt gt
WHERE report_date in(:ASOF_DATE, :PREVIOUS_ASOF_DATE, :PRIOR_PERIOD_START, :CURR_PERIOD_START)
AND
(
bitand(cal.record_type_id, :BITAND) = :BITAND
OR bitand(cal.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
)
) t
WHERE f.time_id = t.time_id
AND f.period_type_id = t.period_type_id
AND f.org_id = t.org_id '|| l_party_where ||' ' || l_collector_where ||' ' || l_industry_where || '
AND per.end_date = :CURR_PERIOD_END
AND '||fii_ar_util_pkg.get_mv_where_statement||'
GROUP BY t.report_date, per.sequence, name';
/*Upper select clause. This is common for all period types*/
-- In case when Union All is used which means that the current period should use a different scaling factor compared to
-- the other periods
l_select_clause := 'SELECT
cy_per.name FII_AR_COLL_EFF_VIEW_BY,
FII_AR_COLL_EFF_INDEX * 100 FII_AR_COLL_EFF_INDEX,
FII_AR_PRIO_COLL_EFF_INDEX_G * 100 FII_AR_PRIO_COLL_EFF_INDEX_G,
FII_AR_WTD_AVG_DP,
(FII_AR_WTD_AVG_DP - FII_AR_WTD_AVG_TP) FII_AR_DAYS_DELQ,
FII_AR_WTD_AVG_TP,
FII_AR_REC_AMT,
DECODE(FII_AR_WTD_AVG_DP,0,'''',DECODE(NVL(FII_AR_WTD_AVG_DP, -99999),-99999, '''',DECODE(SIGN(cy_per.end_date - :ASOF_DATE),1,
''pFunctionName=FII_AR_COLL_EFFECTIVENESS&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'',
''AS_OF_DATE=''|| to_char(cy_per.end_date,''DD/MM/YYYY'')||''&pFunctionName=FII_AR_COLL_EFFECTIVENESS&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'' )))
FII_AR_DAYS_PAID_DRILL,
DECODE(FII_AR_COLL_EFF_INDEX,0,'''',DECODE(NVL(FII_AR_COLL_EFF_INDEX, -99999),-99999, '''',DECODE(SIGN(cy_per.end_date - :ASOF_DATE),1,
''pFunctionName=FII_AR_COLL_EFF_INDEX&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'',
''AS_OF_DATE=''|| to_char(cy_per.end_date,''DD/MM/YYYY'')||''&pFunctionName=FII_AR_COLL_EFF_INDEX&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'' )))
FII_AR_CEI_DRILL,
DECODE(FII_AR_REC_AMT,0,'''',DECODE(NVL(FII_AR_REC_AMT, -99999),-99999, '''', DECODE(SIGN(cy_per.end_date - :ASOF_DATE),1,
''pFunctionName=FII_AR_REC_ACTIVITY&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'',
''AS_OF_DATE=''|| to_char(cy_per.end_date,''DD/MM/YYYY'')||''&pFunctionName=FII_AR_REC_ACTIVITY&VIEW_BY_NAME=VIEW_BY_ID&VIEW_BY=ORGANIZATION+FII_OPERATING_UNITS&pParamIds=Y'' )))
FII_AR_RCT_AMT_DRILL
FROM '||l_time_table||' cy_per, (
SELECT
sequence sequence,
DECODE (sequence, ' || g_current_sequence ||',
(SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT))'||g_scale_sign||' '||g_scaling_factor||')
- SUM(DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC)))/NULLIF((SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT))'||g_scale_sign||' '||g_scaling_factor||')
-SUM(DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC))),0),
(SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
- SUM(DECODE(FII_AR_END_OPEN_REC, NULL, 0, FII_AR_END_OPEN_REC)))/NULLIF((SUM(DECODE(FII_AR_BEG_OPEN_REC, NULL, 0, FII_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_AR_BILLED_AMOUNT, NULL, 0, FII_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
-SUM(DECODE(FII_AR_END_CURR_REC, NULL, 0, FII_AR_END_CURR_REC))),0) )FII_AR_COLL_EFF_INDEX,
SUM(FII_AR_WTD_DAYS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_WTD_AVG_DP,
SUM(FII_AR_AVG_DD_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_DAYS_DELQ,
SUM(FII_AR_WTD_TERMS_PAID_NUM/NULLIF(FII_AR_APPLIED_AMOUNT,0)) FII_AR_WTD_AVG_TP,
SUM(FII_AR_REC_AMT) FII_AR_REC_AMT,
DECODE (sequence, ' || g_current_sequence ||',
(SUM(DECODE(FII_PRIOR_AR_BEG_OPEN_REC, NULL, 0, FII_PRIOR_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_PRIOR_AR_BILLED_AMOUNT, NULL, 0, FII_PRIOR_AR_BILLED_AMOUNT))'||g_scale_sign||' '||g_scaling_factor||')
-SUM(DECODE(FII_PRIOR_AR_END_OPEN_REC, NULL, 0, FII_PRIOR_AR_END_OPEN_REC)))/NULLIF((SUM(DECODE(FII_PRIOR_AR_BEG_OPEN_REC, NULL, 0, FII_PRIOR_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_PRIOR_AR_BILLED_AMOUNT, NULL, 0, FII_PRIOR_AR_BILLED_AMOUNT))'||g_scale_sign||' '||g_scaling_factor||')
- SUM(DECODE(FII_PRIOR_AR_END_CURR_REC, NULL, 0, FII_PRIOR_AR_END_CURR_REC))),0),
(SUM(DECODE(FII_PRIOR_AR_BEG_OPEN_REC, NULL, 0, FII_PRIOR_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_PRIOR_AR_BILLED_AMOUNT, NULL, 0, FII_PRIOR_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
-SUM(DECODE(FII_PRIOR_AR_END_OPEN_REC, NULL, 0, FII_PRIOR_AR_END_OPEN_REC)))/NULLIF((SUM(DECODE(FII_PRIOR_AR_BEG_OPEN_REC, NULL, 0, FII_PRIOR_AR_BEG_OPEN_REC))
+(SUM(DECODE(FII_PRIOR_AR_BILLED_AMOUNT, NULL, 0, FII_PRIOR_AR_BILLED_AMOUNT))'||g_scale_sign_cons||' '||g_scaling_factor_cons||')
- SUM(DECODE(FII_PRIOR_AR_END_CURR_REC, NULL, 0, FII_PRIOR_AR_END_CURR_REC))),0) ) FII_AR_PRIO_COLL_EFF_INDEX_G
from (
SELECT per.name,per.sequence,
sum(FII_AR_REC_AMT) FII_AR_REC_AMT,
sum(FII_AR_BEG_OPEN_REC) FII_AR_BEG_OPEN_REC,
sum(FII_AR_END_OPEN_REC) FII_AR_END_OPEN_REC,
sum(FII_AR_END_CURR_REC) FII_AR_END_CURR_REC,
sum(FII_PRIOR_AR_BEG_OPEN_REC) FII_PRIOR_AR_BEG_OPEN_REC,
sum(FII_PRIOR_AR_END_OPEN_REC)FII_PRIOR_AR_END_OPEN_REC,
sum(FII_PRIOR_AR_END_CURR_REC) FII_PRIOR_AR_END_CURR_REC,
sum(FII_PRIOR_AR_BILLED_AMOUNT) FII_PRIOR_AR_BILLED_AMOUNT,
sum(FII_AR_BILLED_AMOUNT) FII_AR_BILLED_AMOUNT,
sum(FII_AR_APPLIED_AMOUNT) FII_AR_APPLIED_AMOUNT,
sum(FII_AR_WTD_DAYS_PAID_NUM) FII_AR_WTD_DAYS_PAID_NUM,
sum(FII_AR_WTD_TERMS_PAID_NUM) FII_AR_WTD_TERMS_PAID_NUM,
sum(FII_AR_AVG_DD_NUM) FII_AR_AVG_DD_NUM FROM '||l_time_table||' per,(';
sqlstmt := l_select_clause || '
SELECT /*+ no_merge INDEX(f FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv_N1)*/
t.report_date,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN (t.report_date >= :SD_SDATE )
AND (f.header_filter_date <= t.report_date)
AND (f.header_filter_date >= (select start_date
from '||l_time_table||'
where end_date = t.report_date))
AND (bitand(t.record_type_id, :BITAND) = :BITAND )
THEN f.total_receipt_amount
ELSE NULL
END )) FII_AR_REC_AMT,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' ,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE /*This needs to be the first date of the month */
THEN f.total_open_amount
ELSE null
END )) FII_AR_BEG_OPEN_REC,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'', null,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN f.total_open_amount
ELSE null
END
)) FII_AR_END_OPEN_REC,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN f.current_open_amount
ELSE null
END
)) FII_AR_END_CURR_REC,
'||l_prior_column||'
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.billed_amount
ELSE NULL
END))
FII_AR_BILLED_AMOUNT,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.app_amount
ELSE NULL
END )) FII_AR_APPLIED_AMOUNT,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'', null,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.wtd_days_paid_num
ELSE NULL
END )) FII_AR_WTD_DAYS_PAID_NUM,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.wtd_terms_paid_num
ELSE NULL
END )) FII_AR_WTD_TERMS_PAID_NUM,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN t.report_date >= :SD_SDATE
AND bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.avg_dd_num
ELSE NULL
END )) FII_AR_AVG_DD_NUM
FROM FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv'|| fii_ar_util_pkg.g_curr_suffix
||' f,
(
SELECT /*+ no_merge INDEX(cal FII_TIME_STRUCTURES_N1) leading(gt) cardinality(gt 1)*/ *
FROM fii_time_structures cal,
fii_ar_summary_gt gt
WHERE report_date in
(
SELECT end_date
FROM '||l_time_table||' cy_per
WHERE cy_per.start_date < '||l_date_bind||'
AND cy_per.start_date >= :SD_PRIOR_PRIOR
UNION
SELECT start_date
FROM '||l_time_table||' cy_per
WHERE cy_per.start_date <'||l_date_bind||'
AND cy_per.start_date >=:SD_PRIOR_PRIOR
)
AND (bitand(cal.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE OR bitand(cal.record_type_id, :BITAND) = :BITAND )
)
t
WHERE f.time_id = t.time_id
AND f.period_type_id = t.period_type_id
AND f.org_id = t.org_id
AND '||fii_ar_util_pkg.get_mv_where_statement||' '|| l_party_where ||' ' || l_collector_where ||' ' || l_industry_where || '
GROUP BY t.report_date) mv
WHERE per.start_date >= :SD_PRIOR_PRIOR
and ( per.end_date = mv.report_date
OR per.start_date = mv.report_date)
GROUP BY per.sequence, per.name
'||l_curr_sql_stmt||'
)
group by sequence)outer_view
WHERE cy_per.start_date <= :ASOF_DATE
AND cy_per.start_date > :SD_PRIOR
AND cy_per.sequence = outer_view.sequence (+)
ORDER BY cy_per.start_date ';
sqlstmt := l_select_clause || '
SELECT
/*+ no_merge INDEX(f FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv_N1)*/
t.report_date,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN (f.header_filter_date <= t.report_date)
AND (f.header_filter_date >= (select start_date
from '||l_time_table||'
where end_date = t.report_date))
AND (bitand(t.record_type_id, :BITAND) = :BITAND)
THEN f.total_receipt_amount
ELSE NULL
END )) FII_AR_REC_AMT,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' ,
CASE
WHEN bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE /*This needs to be the first date of the month */
THEN f.total_open_amount
ELSE null
END )) FII_AR_BEG_OPEN_REC,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN f.total_open_amount
ELSE null
END
)) FII_AR_END_OPEN_REC,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN bitand(t.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE
THEN f.current_open_amount
ELSE null
END
)) FII_AR_END_CURR_REC,
'||l_prior_column||'
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.billed_amount
ELSE NULL
END))
FII_AR_BILLED_AMOUNT,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.app_amount
ELSE NULL
END )) FII_AR_APPLIED_AMOUNT,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.wtd_days_paid_num
ELSE NULL
END )) FII_AR_WTD_DAYS_PAID_NUM,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.wtd_terms_paid_num
ELSE NULL
END )) FII_AR_WTD_TERMS_PAID_NUM,
SUM(DECODE((SELECT ''Y'' from '||l_time_table||'
WHERE start_date = t.report_date), ''Y'' , null,
CASE
WHEN bitand(t.record_type_id, :BITAND) = :BITAND
THEN f.avg_dd_num
ELSE NULL
END )) FII_AR_AVG_DD_NUM
FROM FII_AR_NET_REC'|| fii_ar_util_pkg.g_cust_suffix ||'_mv'|| fii_ar_util_pkg.g_curr_suffix
||' f,
(
SELECT /*+ no_merge INDEX(cal FII_TIME_STRUCTURES_N1) leading(gt) cardinality(gt 1) */ *
FROM fii_time_structures cal,
fii_ar_summary_gt gt
WHERE report_date in
(
SELECT end_date
FROM '||l_time_table||' cy_per
WHERE cy_per.start_date < '||l_date_bind||'
AND cy_per.start_date >= :SD_PRIOR_PRIOR
UNION
SELECT start_date
FROM '||l_time_table||' cy_per
WHERE cy_per.start_date < '||l_date_bind||'
AND cy_per.start_date >=:SD_PRIOR_PRIOR
)
AND (bitand(cal.record_type_id, :BITAND_INC_TODATE) = :BITAND_INC_TODATE OR bitand(cal.record_type_id, :BITAND) = :BITAND )
) t
WHERE f.time_id = t.time_id
AND f.period_type_id = t.period_type_id
AND f.org_id = t.org_id
AND '||fii_ar_util_pkg.get_mv_where_statement||' '|| l_party_where ||'
' || l_collector_where ||'
' || l_industry_where || '
GROUP BY t.report_date) mv
WHERE per.start_date >= :SD_PRIOR_PRIOR
and ( per.end_date = mv.report_date
OR per.start_date = mv.report_date
)
GROUP BY per.sequence, per.name
'||l_curr_sql_stmt||'
)
group by sequence)outer_view
WHERE cy_per.start_date <= :ASOF_DATE
AND cy_per.start_date > :SD_PRIOR
AND cy_per.sequence = outer_view.sequence (+)
ORDER BY cy_per.start_date ';