DBA Data[Home] [Help]

PACKAGE BODY: APPS.OPI_DBI_RES_VAR_JOB_DTL_PKG

Source


1 PACKAGE BODY OPI_DBI_RES_VAR_JOB_DTL_PKG AS
2 /*$Header: OPIDRRSVJDB.pls 120.3 2006/03/27 21:17:18 vganeshk noship $ */
3 
4   PROCEDURE get_dtl_sql (p_param in BIS_PMV_PAGE_PARAMETER_TBL,
5        x_custom_sql out nocopy VARCHAR2,
6        x_custom_output out nocopy BIS_QUERY_ATTRIBUTES_TBL)
7   IS
8 
9     l_org 		  VARCHAR2(255);
10     l_resource_group	  VARCHAR2(255);
11     l_resource_dept       VARCHAR2(255);
12     l_resource		  VARCHAR2(255);
13     l_currency            VARCHAR2(30);
14     l_currency_code       VARCHAR2(2);
15     l_flag                VARCHAR2(1);
16     l_jobstatus		  VARCHAR2(255);
17     l_resource_where	  VARCHAR2(2000);
18     l_resource_grp_where  VARCHAR2(2000);
19     l_resource_dept_where VARCHAR2(2000);
20     l_org_where		  VARCHAR2(255);
21     l_jobstatus_where 	  VARCHAR2(1500);
22     l_job_info_drill      VARCHAR2(255);
23     l_respid 		  NUMBER;
24 
25   BEGIN
26 
27     --Initialization
28     l_org 		   := NULL;
29     l_resource_group	   := NULL;
30     l_resource_dept        := NULL;
31     l_resource		   := NULL;
32     l_currency             := '';
33     l_currency_code        := 'B';
34     l_flag                 := NULL;
35     l_jobstatus		   := NULL;
36     l_resource_where	   := NULL;
37     l_resource_grp_where   := NULL;
38     l_resource_dept_where  := NULL;
39     l_org_where		   := NULL;
40     l_jobstatus_where 	   := NULL;
41     l_job_info_drill       := NULL;
42     l_respid 		   := -1;
43 
44     FOR i IN 1..p_param.COUNT
45     LOOP
46     	IF(p_param(i).parameter_name = 'ORGANIZATION+ORGANIZATION') THEN
47     		l_org :=  p_param(i).parameter_id;
48     	END IF;
49 
50     	IF(p_param(i).parameter_name = 'RESOURCE+ENI_RESOURCE_GROUP') THEN
51     	  IF (p_param(i).parameter_id IS NULL or upper(p_param(i).parameter_id) = 'ALL'
52     	      or p_param(i).parameter_id = '-1') THEN
53     		l_resource_group :=  p_param(i).parameter_id;
54           ELSE
55                 l_resource_group :=  'Selected';
56           END IF;
57     	END IF;
58 
59     	IF(p_param(i).parameter_name = 'RESOURCE+ENI_RESOURCE_DEPARTMENT') THEN
60     	  IF (p_param(i).parameter_id IS NULL or upper(p_param(i).parameter_id) = 'ALL'
61     	      or p_param(i).parameter_id = '-1') THEN
62     		l_resource_dept :=  p_param(i).parameter_id;
63           ELSE
64                 l_resource_dept :=  'Selected';
65           END IF;
66     	END IF;
67 
68     	IF(p_param(i).parameter_name = 'RESOURCE+ENI_RESOURCE') THEN
69     	   IF (p_param(i).parameter_id IS NULL or upper(p_param(i).parameter_id) = 'ALL') THEN
70     	       l_resource :=  p_param(i).parameter_id;
71     	   ELSE
72     	       l_resource :=  'Selected';
73     	   END IF;
74     	END IF;
75 
76     	IF(p_param(i).parameter_name = 'OPI_MFG_WO_ATTRIB+OPI_MFG_WO_STATUS_LVL') THEN
77     	   IF (p_param(i).parameter_id IS NULL or upper(p_param(i).parameter_id) = 'ALL') THEN
78     	       l_jobstatus := p_param(i).parameter_id;
79     	   ELSE
80     	       l_jobstatus := 'Selected';
81     	   END IF;
82     	END IF;
83 
84     	IF(p_param(i).parameter_name = 'CURRENCY+FII_CURRENCIES') THEN
85     	   l_currency := p_param(i).parameter_id;
86     	END IF;
87 
88 
89      END LOOP;
90 
91 
92      IF(l_currency = '''FII_GLOBAL1''') THEN
93     	 l_currency_code := 'G';
94      ELSE
95        IF(l_currency = '''FII_GLOBAL2''') THEN
96            l_currency_code := 'SG';
97        END IF;
98      END IF;
99 
100      IF (UPPER(l_resource) <> 'ALL') THEN
101      	l_resource_where := ' and resview.id in (&RESOURCE+ENI_RESOURCE)';
102      END IF;
103 
104      IF (UPPER(l_resource_group) <> 'ALL') THEN
105      	IF(UPPER(l_resource_group) <> '-1') THEN
106      		l_resource_grp_where := ' and resview.resource_group_fk in (&RESOURCE+ENI_RESOURCE_GROUP) ';
107      	ELSE
108      		l_resource_grp_where := ' and resview.resource_group_fk in (''-1'')';
109      	END IF;
110      END IF;
111 
112      IF (UPPER(l_resource_dept) <> 'ALL') THEN
113         IF(UPPER(l_resource_dept) <> '-1') THEN
114      		l_resource_dept_where := ' and resview.department_fk in (&RESOURCE+ENI_RESOURCE_DEPARTMENT) ';
115      	ELSE
116      		l_resource_dept_where := ' and resview.department_fk in (''-1'')';
117      	END IF;
118      END IF;
119 
120      IF (UPPER(l_jobstatus) <> 'ALL') THEN
121      	l_jobstatus_where := ' and
122      	decode (job.status,''Closed'',''12'',''Cancelled'',''7'',''Complete - No Charges'',''5'',
123      		           ''Complete'',''4'',''Pending Close'',''14'',''Failed Close'',''15'',''Released'',''3'',
124      		           ''On Hold'',''6'',''-1'') in (&OPI_MFG_WO_ATTRIB+OPI_MFG_WO_STATUS_LVL) ';
125      END IF;
126 
127      IF (l_org is NULL) THEN
128 
129      select fnd_global.resp_id into l_respid from dual ;
130      select id into l_org from (select id from bis_organizations_v where responsibility_id = l_respid order by value asc) where rownum=1;
131 
132      ELSE
133 
134      select process_enabled_flag
135      into l_flag
136      from mtl_parameters mp
137      where mp.organization_id = trim(both '''' from l_org);
138 
139      END IF;
140 
141      l_org_where := 'and job.organization_id = '||l_org;
142 
143      IF (l_flag = 'Y') THEN
144 
145         l_job_info_drill := 'OPI_DBI_JOB_INFO_PROC_REP&addBreadCrumb=Y&cloInd=1';
146      	-- Construct the URL for OPM Job info OA page
147      ELSE
148 
149         l_job_info_drill := 'OPI_DBI_JOB_INFO_DISC_REP&addBreadCrumb=Y&cloInd=1';
150         -- Construct the URL for Discrete Job info OA Page
151      END IF;
152 
153 
154      x_custom_sql :=
155      'SELECT
156          fact.job_name ||''(''||mtp.organization_code||'')'' OPI_ATTRIBUTE1,
157  	 jobstatus.value 					    OPI_ATTRIBUTE2,
158  	 fact.opi_date1 				    OPI_DATE1,
159  	 ''pFunctionName='||l_job_info_drill ||'&jobId=''||fact.job_id||
160  	                                       ''&orgId=''||fact.organization_id ||
161  	                                       ''&jobName=''|| mtp.organization_code ||
162  	                                       ''&repId=''|| fact.job_name ||
163  	                                       ''&jobType=''|| fact.job_type OPI_ATTRIBUTE4,
164  	 fact.opi_measure1                                  OPI_MEASURE1,
165          fact.opi_measure2                                  OPI_MEASURE2,
166  	 fact.opi_measure3                                  OPI_MEASURE3,
167  	 fact.opi_measure4                                  OPI_MEASURE4,
168  	 fact.opi_measure5                                  OPI_MEASURE5,
169  	 fact.opi_measure6				    OPI_MEASURE6,
170  	 fact.opi_measure7				    OPI_MEASURE7,
171  	 fact.opi_measure8                                  OPI_MEASURE8,
172 	 fact.opi_measure9                                  OPI_MEASURE9,
173 	 fact.opi_measure10                                 OPI_MEASURE10,
174 	 fact.opi_measure11                                 OPI_MEASURE11,
175 	 fact.opi_measure12				    OPI_MEASURE12,
176  	 fact.opi_measure13				    OPI_MEASURE13
177  	 FROM
178         (SELECT
179            (rank() over
180            (&ORDER_BY_CLAUSE nulls last,organization_id,job_name)) - 1 rnk,
181   	   organization_id,
182   	   job_status_code,
183   	   job_name,
184   	   job_type,
185   	   job_id,
186            opi_date1,
187            opi_measure1,
188            opi_measure2,
189            opi_measure3,
190            opi_measure4,
191            opi_measure5,
192            opi_measure6,
193            opi_measure7,
194            opi_measure8,
195            opi_measure9,
196            opi_measure10,
197            opi_measure11,
198            (opi_measure8-opi_measure10) opi_measure12,
199            (opi_measure8-opi_measure10)/decode(opi_measure10,0,null,opi_measure10)*100 opi_measure13
200          FROM
201            (select
202             	organization_id,
203             	job_status_code,
204             	job_name,
205             	job_type,
206             	job_id,
207             	opi_date1,
208                 opi_measure1,
209                 decode('''|| l_currency_code || ''', ''B'',opi_measure2_b,''G'',opi_measure2_g,''SG'',opi_measure2_sg) opi_measure2,
210         	opi_measure3,
211         	decode('''|| l_currency_code || ''', ''B'',opi_measure4_b,''G'',opi_measure4_g,''SG'',opi_measure4_sg) opi_measure4,
212         	opi_measure5,
213         	decode('''|| l_currency_code || ''', ''B'',opi_measure6_b,''G'',opi_measure6_g,''SG'',opi_measure6_sg) opi_measure6,
214         	decode('''|| l_currency_code || ''', ''B'',opi_measure7_b,''G'',opi_measure7_g,''SG'',opi_measure7_sg) opi_measure7,
215         	decode('''|| l_currency_code || ''', ''B'',opi_measure8_b,''G'',opi_measure8_g,''SG'',opi_measure8_sg) opi_measure8,
216         	opi_measure9,
217         	decode('''|| l_currency_code || ''', ''B'',opi_measure10_b,''G'',opi_measure10_g,''SG'',opi_measure10_sg) opi_measure10,
218         	opi_measure11
219             from
220   		(select
221 		   job.organization_id organization_id,
222 		   job.job_status_code job_status_code,
223 		   job.job_name job_name,
224 		   job.job_type job_type,
225 		   job.job_id job_id,
226 		   job.completion_date opi_date1,
227 		   job.actual_qty_completed opi_measure1,
228 		   sum(act.actual_val_g) opi_measure2_g,
229 		   sum(act.actual_val_b) opi_measure2_b,
230 		   sum(act.actual_val_sg) opi_measure2_sg,
231 		   sum(act.actual_qty) opi_measure3,
232 		   sum(std.std_usage_val_g) opi_measure4_g,
233 		   sum(std.std_usage_val_b) opi_measure4_b,
234 		   sum(std.std_usage_val_sg) opi_measure4_sg,
235 		   sum(std.std_usage_qty) opi_measure5,
236 		   sum(act.actual_val_g) - sum(std.std_usage_val_g) opi_measure6_g,
237 		   sum(act.actual_val_b) - sum(std.std_usage_val_b) opi_measure6_b,
238 		   sum(act.actual_val_sg) - sum(std.std_usage_val_sg) opi_measure6_sg,
239 		   (sum(act.actual_val_g) - sum(std.std_usage_val_g))/(decode(sum(std.std_usage_val_g),0,
240 		   null,sum(std.std_usage_val_g)))*100 opi_measure7_g,
241 		   (sum(act.actual_val_b) - sum(std.std_usage_val_b))/(decode(sum(std.std_usage_val_b),0,
242 		   null,sum(std.std_usage_val_b)))*100 opi_measure7_b,
243 		   (sum(act.actual_val_sg) - sum(std.std_usage_val_sg))/(decode(sum(std.std_usage_val_sg),0,
244 		   null,sum(std.std_usage_val_sg)))*100 opi_measure7_sg,
245 		   sum(sum(act.actual_val_sg)) over() opi_measure8_sg,
246 		   sum(sum(act.actual_val_b)) over() opi_measure8_b,
247 		   sum(sum(act.actual_val_g)) over() opi_measure8_g,
248 		   sum(sum(act.actual_qty)) over() opi_measure9,
249 		   sum(sum(std.std_usage_val_g)) over() opi_measure10_g,
250 		   sum(sum(std.std_usage_val_b)) over() opi_measure10_b,
251 		   sum(sum(std.std_usage_val_sg)) over() opi_measure10_sg,
252 		   sum(sum(std.std_usage_qty)) over() opi_measure11
253 		 from
254 		   opi_dbi_res_std_f std,
255 		   opi_dbi_res_actual_f act,
256 		   opi_dbi_jobs_f job,
257 		   eni_resource_v resview
258 		 where
259 		   job.completion_date between &BIS_CURRENT_EFFECTIVE_START_DATE and
260 		   &BIS_CURRENT_ASOF_DATE and
261 		   job.job_id = act.job_id	and
262 		   job.source = act.source and
263 		   job.organization_id = act.organization_id and
264 		   job.assembly_item_id = act.assembly_item_id and
265 		   job.job_type = act.job_type and
266 		   job.job_id = std.job_id	and
267 		   job.source = std.source and
268 		   job.organization_id = std.organization_id and
269 		   job.assembly_item_id = std.assembly_item_id and
270 		   job.job_type = std.job_type and
271 		   std.resource_id = act.resource_id and
272 		   job.organization_id = resview.organization_id and
273 		   job.status IN (''Cancelled'', ''Complete - No Charges'',
274                                   ''Closed'') and
275 		   resview.resource_id = act.resource_id and
276 		   job.job_type <> 5'
277 		   		|| l_resource_where
278 		    		|| l_resource_grp_where
279 		    		|| l_resource_dept_where
280 		    		|| l_jobstatus_where
281 		    		|| l_org_where
282 		    		|| '
283 		group by
284 		   job.organization_id,
285 		   job.job_status_code,
286 		   job.completion_date,
287 		   job.actual_qty_completed,
288 		   job.job_name,
289 		   job.job_type,
290 		   job.job_id,
291 		   job.assembly_item_id
292      		)))fact,
293         	   fii_time_day        time,
294         	   mtl_parameters          mtp,
295                opi_mfg_wo_status_lvl_v jobstatus
296         	 where
297                 jobstatus.id = fact.job_status_code and
298         	     mtp.organization_id = fact.organization_id and
299   		     time.report_date = fact.opi_date1 and
300 		     (rnk between &START_INDEX and &END_INDEX or &END_INDEX = -1)
301 		      &ORDER_BY_CLAUSE nulls last';
302   	x_custom_output := BIS_QUERY_ATTRIBUTES_TBL();
303 
304    END get_dtl_sql;
305    END OPI_DBI_RES_VAR_JOB_DTL_PKG;