[Home] [Help]
PACKAGE BODY: APPS.BIX_PMV_EMC_RESOLV_RPT_PKG
Source
1 PACKAGE BODY BIX_PMV_EMC_RESOLV_RPT_PKG AS
2 /*$Header: bixeresb.plb 120.0 2005/05/25 17:22:28 appldev noship $ */
3
4 PROCEDURE GET_SQL(p_page_parameter_tbl IN BIS_PMV_PAGE_PARAMETER_TBL,
5 p_sql_text OUT NOCOPY VARCHAR2,
6 p_custom_output OUT NOCOPY bis_query_attributes_TBL
7 )
8 AS
9 l_sqltext VARCHAR2(32000) ;
10 l_where_clause VARCHAR2(1000) ;
11 l_as_of_date DATE;
12 l_period_type varchar2(2000);
13 l_comp_type varchar2(2000);
14 l_sql_errm varchar2(32000);
15 l_agent_cost NUMBER := 0;
16 l_cust_resp_time_goal NUMBER;
17 l_service_level_goal NUMBER;
18 l_custom_rec BIS_QUERY_ATTRIBUTES;
19 l_period_type_id NUMBER := 1;
20 l_record_type_id NUMBER;
21 l_account VARCHAR2(32000);
22 l_start_date DATE;
23 l_end_date DATE;
24 l_period_from DATE;
25 l_period_to DATE;
26 l_max_collect_date VARCHAR2(100);
27 l_period_start_Date DATE;
28 l_classification VARCHAR2(32000);
29 l_view_by varchar2(1000);
30 l_row_type varchar2(10) := 'AC';
31
32 BEGIN
33
34 --
35 --Initialize p_custom_output
36 --
37
38 p_custom_output := BIS_QUERY_ATTRIBUTES_TBL();
39 l_custom_rec := BIS_PMV_PARAMETERS_PUB.Initialize_Query_Type;
40
41 -- Get the parameters
42
43 BIX_PMV_DBI_UTL_PKG.get_emc_page_params( p_page_parameter_tbl,
44 l_as_of_date,
45 l_period_type,
46 l_record_type_id,
47 l_comp_type,
48 l_account,
49 l_classification,
50 l_view_by
51 );
52
53
54 -- If the account is not 'All'
55
56 IF l_account IS NOT NULL THEN
57 l_where_clause := 'AND email_account_id IN (:l_account) ';
58 END IF;
59
60
61 IF l_classification IS NOT NULL THEN
62 l_where_clause := l_where_clause || ' AND email_classification_id IN (:l_classification) ';
63 END IF;
64
65 /*
66 l_sqltext := '
67 SELECT
68 ''[email protected]'' VIEWBY,
69 10 BIX_EMC_COMPLETED,
70 20 BIX_EMC_COMPCHANGE,
71 30 BIX_EMC_REPLD,
72 40 BIX_EMC_REPCHANGE,
73 50 BIX_EMC_DELETED,
74 60 BIX_EMC_DELCHANGE,
75 70 BIX_EMC_AUTOREPLD,
76 80 BIX_EMC_AUTOREPLD_CHANGE,
77 90 BIX_EMC_AUTODELETED,
78 100 BIX_EMC_AUTODELETED_CHANGE,
79 10 BIX_EMC_AUTORESOLV,
80 20 BIX_EMC_AUTORESOLV_CHANGE,
81 30 BIX_EMC_AUTOUPDATESR,
82 40 BIX_EMC_AUTOUPDATESR_CHANGE,
83 10 BIX_PMV_TOTAL3,
84 20 BIX_PMV_TOTAL4,
85 30 BIX_PMV_TOTAL5,
86 40 BIX_PMV_TOTAL6,
87 50 BIX_PMV_TOTAL7,
88 60 BIX_PMV_TOTAL8,
89 70 BIX_PMV_TOTAL9,
90 80 BIX_PMV_TOTAL10,
91 90 BIX_PMV_TOTAL11,
92 100 BIX_PMV_TOTAL12,
93 10 BIX_PMV_TOTAL13,
94 20 BIX_PMV_TOTAL14,
95 30 BIX_PMV_TOTAL15,
96 40 BIX_PMV_TOTAL16,
97 1000 BIX_EMC_AUTORESPONSE,
98 2000 BIX_EMC_RESPONSE
99 FROM DUAL';
100
101 p_sql_text := l_sqltext;
102 */
103
104 l_sqltext :=
105 '
106 SELECT * FROM
107 (
108 SELECT
109 lookup_table.value VIEWBY,
110 lookup_table.id VIEWBYID,
111 NVL(SUM(curr_completed),0) BIX_EMC_COMPLETED_CP,
112 (NVL(SUM(curr_completed),0) - DECODE(SUM(prev_completed),0,NULL,SUM(prev_completed)))
113 / DECODE(SUM(prev_completed),0,NULL,SUM(prev_completed)) * 100 BIX_EMC_COMPCHANGE,
114 NVL(SUM(curr_replied),0) BIX_EMC_REPLD,
115 (NVL(SUM(curr_replied),0) - SUM(prev_replied)) / SUM(prev_replied) * 100 BIX_EMC_REPCHANGE,
116 NVL(SUM(curr_deleted),0) BIX_EMC_DELETED,
117 (NVL(SUM(curr_deleted),0) - SUM(prev_deleted)) / SUM(prev_deleted) * 100 BIX_EMC_DELCHANGE,
118 NVL(SUM(curr_auto_replied),0) BIX_EMC_AUTOREPLD,
119 (NVL(SUM(curr_auto_replied),0) - SUM(prev_auto_replied)) / SUM(prev_auto_replied) * 100 BIX_EMC_AUTOREPLD_CHANGE,
120 NVL(SUM(curr_auto_deleted),0) BIX_EMC_AUTODELETED,
121 (NVL(SUM(curr_auto_deleted),0) - SUM(prev_auto_deleted)) / SUM(prev_auto_deleted) * 100 BIX_EMC_AUTODELETED_CHANGE,
122 NVL(SUM(curr_auto_resolv),0) BIX_EMC_AUTORESOLV,
123 (NVL(SUM(curr_auto_resolv),0) - SUM(prev_auto_resolv)) / SUM(prev_auto_resolv) * 100 BIX_EMC_AUTORESOLV_CHANGE,
124 NVL(SUM(curr_auto_sr),0) BIX_EMC_AUTOUPDATESR,
125 (NVL(SUM(curr_auto_sr),0) - SUM(prev_auto_sr)) / SUM(prev_auto_sr) * 100 BIX_EMC_AUTOUPDATESR_CHANGE,
126 NVL(SUM(curr_replied),0) + NVL(SUM(curr_deleted),0) BIX_EMC_RESPONSE,
127 NVL(SUM(curr_auto_replied),0) + NVL(SUM(curr_auto_deleted),0) +
128 NVL(SUM(curr_auto_sr),0) + NVL(SUM(curr_auto_resolv),0) BIX_EMC_AUTORESPONSE,
129 NVL(SUM(SUM(curr_completed)) OVER(),0) BIX_PMV_TOTAL3,
130 (NVL(SUM(SUM(curr_completed)) OVER(),0) - DECODE(SUM(SUM(prev_completed)) OVER(),0,NULL,SUM(SUM(prev_completed)) OVER() ))
131 / DECODE(SUM(SUM(prev_completed)) OVER(),0,NULL,SUM(SUM(prev_completed)) OVER()) * 100 BIX_PMV_TOTAL4,
132 NVL(SUM(SUM(curr_replied)) OVER(),0) BIX_PMV_TOTAL5,
133 (NVL(SUM(SUM(curr_replied)) OVER(),0) - SUM(SUM(prev_replied)) OVER()) / SUM(SUM(prev_replied)) OVER() * 100 BIX_PMV_TOTAL6,
134 NVL(SUM(SUM(curr_deleted)) OVER(),0) BIX_PMV_TOTAL7,
135 (NVL(SUM(SUM(curr_deleted)) OVER(),0) - SUM(SUM(prev_deleted)) OVER()) / SUM(SUM(prev_deleted)) OVER() * 100 BIX_PMV_TOTAL8,
136 NVL(SUM(SUM(curr_auto_replied)) OVER(),0) BIX_PMV_TOTAL9,
137 (NVL(SUM(SUM(curr_auto_replied)) OVER(),0) - SUM(SUM(prev_auto_replied)) OVER()) / SUM(SUM(prev_auto_replied)) OVER() * 100 BIX_PMV_TOTAL10,
138 NVL(SUM(SUM(curr_auto_deleted)) OVER() ,0) BIX_PMV_TOTAL11,
139 (NVL(SUM(SUM(curr_auto_deleted)) OVER(),0) - SUM(SUM(prev_auto_deleted)) OVER()) / SUM(SUM(prev_auto_deleted)) OVER() * 100 BIX_PMV_TOTAL12,
140 NVL(SUM(SUM(curr_auto_resolv)) OVER(),0) BIX_PMV_TOTAL13,
141 (NVL(SUM(SUM(curr_auto_resolv)) OVER(),0) - SUM(SUM(prev_auto_resolv)) OVER()) / SUM(SUM(prev_auto_resolv)) OVER() * 100 BIX_PMV_TOTAL14,
142 NVL(SUM(SUM(curr_auto_sr)) OVER(),0) BIX_PMV_TOTAL15,
143 (NVL(SUM(SUM(curr_auto_sr)) OVER(),0) - SUM(SUM(prev_auto_sr)) OVER()) / SUM(SUM(prev_auto_sr)) OVER() * 100 BIX_PMV_TOTAL16,
144 NVL(SUM(SUM(curr_replied)) OVER(),0) + NVL(SUM(SUM(curr_deleted)) OVER(),0) BIX_CALC_ITEM33,--001
145 NVL(SUM(SUM(curr_auto_replied)) OVER(),0) + NVL(SUM(SUM(curr_auto_deleted)) OVER(),0) +
146 NVL(SUM(SUM(curr_auto_sr)) OVER(),0) + NVL(SUM(SUM(curr_auto_resolv)) OVER(),0) BIX_CALC_ITEM34 --001
147 FROM
148 ( ';
149
150 IF l_view_by = 'EMAIL ACCOUNT+EMAIL ACCOUNT' THEN
151 l_sqltext := l_sqltext || ' SELECT
152 email_account_id id,
153 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,
154 NVL(EMAILS_REPLIED_IN_PERIOD,0) +
155 NVL(EMAILS_AUTO_REPLIED_IN_PERIOD,0) +
156 NVL(EMAILS_DELETED_IN_PERIOD,0) +
157 NVL(EMAILS_AUTO_DELETED_IN_PERIOD,0)+
158 NVL(EMAILS_AUTO_UPTD_SR_IN_PERIOD,0)+
159 NVL(EMAILS_AUTO_RESOLVED_IN_PERIOD,0)
160 )) curr_completed,
161 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,
162 NVL(EMAILS_REPLIED_IN_PERIOD,0) +
163 NVL(EMAILS_AUTO_REPLIED_IN_PERIOD,0) +
164 NVL(EMAILS_DELETED_IN_PERIOD,0) +
165 NVL(EMAILS_AUTO_DELETED_IN_PERIOD,0)+
166 NVL(EMAILS_AUTO_UPTD_SR_IN_PERIOD,0)+
167 NVL(EMAILS_AUTO_RESOLVED_IN_PERIOD,0)
168 )) prev_completed,
169 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_REPLIED_IN_PERIOD)) curr_replied,
170 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_REPLIED_IN_PERIOD)) prev_replied,
171 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_DELETED_IN_PERIOD)) curr_deleted,
172 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_DELETED_IN_PERIOD)) prev_deleted,
173 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_REPLIED_IN_PERIOD)) curr_auto_replied,
174 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_REPLIED_IN_PERIOD)) prev_auto_replied,
175 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_DELETED_IN_PERIOD)) curr_auto_deleted,
176 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_DELETED_IN_PERIOD)) prev_auto_deleted,
177 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_UPTD_SR_IN_PERIOD)) curr_auto_sr,
178 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_UPTD_SR_IN_PERIOD)) prev_auto_sr,
179 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_RESOLVED_IN_PERIOD)) curr_auto_resolv,
180 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_RESOLVED_IN_PERIOD)) prev_auto_resolv
181 FROM bix_email_details_mv fact,
182 fii_time_rpt_struct calendar
183 WHERE fact.time_id = calendar.time_id
184 AND fact.row_type = :l_row_type
185 AND fact.period_type_id = calendar.period_type_id
186 AND calendar.report_date IN (&BIS_CURRENT_ASOF_DATE,&BIS_PREVIOUS_ASOF_DATE)
187 AND bitand(calendar.record_type_id,&BIS_NESTED_PATTERN ) = calendar.record_type_id '
188 || l_where_clause || '
189 GROUP BY email_account_id
190 ) fact, ';
191 ELSE
192 l_sqltext := l_sqltext || ' SELECT
193 email_classification_id id,
194 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,
195 NVL(EMAILS_REPLIED_IN_PERIOD,0) +
196 NVL(EMAILS_AUTO_REPLIED_IN_PERIOD,0) +
197 NVL(EMAILS_DELETED_IN_PERIOD,0) +
198 NVL(EMAILS_AUTO_DELETED_IN_PERIOD,0)+
199 NVL(EMAILS_AUTO_UPTD_SR_IN_PERIOD,0)+
200 NVL(EMAILS_AUTO_RESOLVED_IN_PERIOD,0)
201 )) curr_completed,
202 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,
203 NVL(EMAILS_REPLIED_IN_PERIOD,0) +
204 NVL(EMAILS_AUTO_REPLIED_IN_PERIOD,0) +
205 NVL(EMAILS_DELETED_IN_PERIOD,0) +
206 NVL(EMAILS_AUTO_DELETED_IN_PERIOD,0)+
207 NVL(EMAILS_AUTO_UPTD_SR_IN_PERIOD,0)+
208 NVL(EMAILS_AUTO_RESOLVED_IN_PERIOD,0)
209 )) prev_completed,
210 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_REPLIED_IN_PERIOD)) curr_replied,
211 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_REPLIED_IN_PERIOD)) prev_replied,
212 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_DELETED_IN_PERIOD)) curr_deleted,
213 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_DELETED_IN_PERIOD)) prev_deleted,
214 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_REPLIED_IN_PERIOD)) curr_auto_replied,
215 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_REPLIED_IN_PERIOD)) prev_auto_replied,
216 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_DELETED_IN_PERIOD)) curr_auto_deleted,
217 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_DELETED_IN_PERIOD)) prev_auto_deleted,
218 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_UPTD_SR_IN_PERIOD)) curr_auto_sr,
219 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_UPTD_SR_IN_PERIOD)) prev_auto_sr,
220 SUM(DECODE(calendar.report_date,&BIS_CURRENT_ASOF_DATE,EMAILS_AUTO_RESOLVED_IN_PERIOD)) curr_auto_resolv,
221 SUM(DECODE(calendar.report_date,&BIS_PREVIOUS_ASOF_DATE,EMAILS_AUTO_RESOLVED_IN_PERIOD)) prev_auto_resolv
222 FROM bix_email_details_mv fact,
223 fii_time_rpt_struct calendar
224 WHERE fact.time_id = calendar.time_id
225 AND fact.row_type = :l_row_type
226 AND fact.period_type_id = calendar.period_type_id
227 AND calendar.report_date IN (&BIS_CURRENT_ASOF_DATE,&BIS_PREVIOUS_ASOF_DATE)
228 AND bitand(calendar.record_type_id,&BIS_NESTED_PATTERN ) = calendar.record_type_id '
229 || l_where_clause || '
230 GROUP BY email_classification_id
231 ) fact, ';
232 END IF;
233
234 IF l_view_by = 'EMAIL ACCOUNT+EMAIL ACCOUNT' THEN
235 l_sqltext := l_sqltext || ' bix_email_accounts_v lookup_table ';
236 ELSE
237 l_sqltext := l_sqltext || ' bix_email_classifications_v lookup_table ';
238 END IF;
239
240 l_sqltext := l_sqltext || ' WHERE fact.id = lookup_table.id
241 GROUP BY lookup_table.value,lookup_table.id
242 )
243 where
244 (
245 nvl(BIX_EMC_COMPLETED_CP,0)+
246 abs(nvl(BIX_EMC_COMPCHANGE,0))+
247 nvl(BIX_EMC_RESPONSE,0)+
248 nvl(BIX_EMC_AUTORESPONSE,0)+
249 nvl(BIX_EMC_REPLD,0)+
250 abs(nvl(BIX_EMC_REPCHANGE,0))+
251 nvl(BIX_EMC_DELETED,0)+
252 abs(nvl(BIX_EMC_DELCHANGE,0))+
253 nvl(BIX_EMC_AUTOREPLD,0)+
254 abs(nvl(BIX_EMC_AUTOREPLD_CHANGE,0))+
255 nvl(BIX_EMC_AUTODELETED,0)+
256 abs(nvl(BIX_EMC_AUTODELETED_CHANGE,0))+
257 nvl(BIX_EMC_AUTORESOLV,0)+
258 abs(nvl(BIX_EMC_AUTORESOLV_CHANGE,0))+
259 nvl(BIX_EMC_AUTOUPDATESR,0)+
260 abs(nvl(BIX_EMC_AUTOUPDATESR_CHANGE,0))
261 )<> 0
262 &ORDER_BY_CLAUSE ';
263
264 p_sql_text := l_sqltext;
265
266 p_custom_output.EXTEND();
267 l_custom_rec.attribute_name := ':l_period_type_id' ;
268 l_custom_rec.attribute_value:= l_period_type_id;
269 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
270 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.NUMERIC_BIND;
271
272 p_custom_output.Extend();
273 p_custom_output(p_custom_output.count) := l_custom_rec;
274
275 -- Insert account Bind Variable
276
277 IF ( l_account IS NOT NULL) THEN
278 l_custom_rec.attribute_name := ':l_account' ;
279 l_custom_rec.attribute_value:= l_account;
280 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
281 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
282
283 p_custom_output.Extend();
284 p_custom_output(p_custom_output.count) := l_custom_rec;
285 END IF;
286
287 IF ( l_classification IS NOT NULL) THEN
288 l_custom_rec.attribute_name := ':l_classification' ;
289 l_custom_rec.attribute_value:= l_classification;
290 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
291 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
292
293 p_custom_output.Extend();
294 p_custom_output(p_custom_output.count) := l_custom_rec;
295 END IF;
296
297 l_custom_rec.attribute_name := ':l_max_collect_date' ;
298 l_custom_rec.attribute_value:= l_max_collect_date;
299 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
300 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.DATE_BIND;
301
302 p_custom_output.Extend();
303 p_custom_output(p_custom_output.count) := l_custom_rec;
304
305 l_custom_rec.attribute_name := BIS_PMV_PARAMETERS_PUB.VIEW_BY_VALUE;
306 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.View_By_Type;
307 l_custom_rec.attribute_value := l_view_by;
308
309 p_custom_output.EXTEND();
310 p_custom_output(p_custom_output.COUNT) := l_custom_rec;
311
312 l_custom_rec.attribute_name := ':l_row_type' ;
313 l_custom_rec.attribute_value:= l_row_type;
314 l_custom_rec.attribute_type := BIS_PMV_PARAMETERS_PUB.BIND_TYPE;
315 l_custom_rec.attribute_data_type := BIS_PMV_PARAMETERS_PUB.VARCHAR2_BIND;
316
317 p_custom_output.Extend();
318 p_custom_output(p_custom_output.count) := l_custom_rec;
319
320 EXCEPTION
321 WHEN OTHERS THEN
322 NULL;
323 END GET_SQL;
324 END BIX_PMV_EMC_RESOLV_RPT_PKG;