[Home] [Help]
PACKAGE BODY: APPS.ICX_DATATEMPLATE_PKG
Source
4 FUNCTION AfterPForm RETURN Boolean AS
1 PACKAGE BODY ICX_DATATEMPLATE_PKG AS
2 /* $Header: ICX_DATATEMPLATE_PKG.plb 120.4.12020000.3 2013/04/18 12:38:26 rparise noship $ */
3
5 l_return Boolean;
6 BEGIN
7 RETURN (TRUE);
8 END AfterPForm;
9
10 FUNCTION get_uda_attr_desc_sql(p_doc_type varchar2, p_pk1_value number,
11 p_data_type varchar2,
12 p_appl_col_name varchar2,
13 p_end_user_col_name varchar2,
14 p_attr_group varchar2, p_attr_id number)
15 return varchar2 is
16
17 p_application_id number := 201;
18 p_attr_group_type varchar2(200);
19 p_object_name varchar2(200);
20 p_pk1_column_name varchar2(200);
21 l_sql varchar2(1000);
22 begin
23 if p_doc_type = 'LINES' then
24 p_attr_group_type := 'PO_REQ_LINE_EXT_ATTRS';
25 p_object_name := 'PO_REQ_LINES_EXT_B';
26 p_pk1_column_name := 'REQUISITION_LINE_ID';
27 elsif p_doc_type = 'HEADER' then
28 p_attr_group_type := 'PO_REQ_HEADER_EXT_ATTRS';
29 p_object_name := 'PO_REQ_HEADERS_EXT_B';
30 p_pk1_column_name := 'REQUISITION_HEADER_ID';
31 end if;
32
33 if (p_data_type = 'C' or p_data_type = 'A' ) then
34 l_sql := ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
35 p_application_id || ',' || ' null, ' ||
36 p_appl_col_name|| ', null , ''' ||
37 p_end_user_col_name|| ''',''' ||
38 p_attr_group_type || ''',''' ||
39 P_ATTR_GROUP|| ''',' ||
40 p_attr_id || ',''' ||
41 p_object_name || ''',''' ||
42 p_pk1_column_name || ''',' ||
43 p_pk1_value || ') as ' || p_end_user_col_name || '_DESC' ;
44 elsif p_data_type = 'N' then
45 l_sql := ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
46 p_application_id || ',' || ' null, null, ' ||
47 p_appl_col_name|| ', ''' ||
48 p_end_user_col_name|| ''',''' ||
49 p_attr_group_type || ''',''' ||
50 p_attr_group || ''',' ||
51 p_attr_id || ',''' ||
52 p_object_name || ''',''' ||
53 p_pk1_column_name || ''',' ||
54 p_pk1_value || ') as ' || p_end_user_col_name || '_DESC' ;
55 elsif (p_data_type = 'X' or p_data_type = 'Y') then
56 l_sql := ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
57 p_application_id || ',' || p_appl_col_name ||
58 ' , null, null, ''' ||
59 p_end_user_col_name|| ''',''' ||
60 p_attr_group_type || ''',''' ||
61 p_attr_group || ''',' ||
62 p_attr_id || ',''' ||
63 p_object_name || ''',''' ||
67 return(l_sql);
64 p_pk1_column_name || ''',' ||
65 p_pk1_value || ') as ' || p_end_user_col_name || '_DESC ' ;
66 end if;
68 end get_uda_attr_desc_sql;
69
70
71 FUNCTION GET_UDA_HEADER_XML RETURN XMLType IS
72 CURSOR C_ATTR_GRP IS
73 SELECT AG.DESCRIPTIVE_FLEX_CONTEXT_CODE ATTR_GROUP,
74 AG.ATTR_GROUP_ID ATTR_GROUP_ID,
75 AG.DESCRIPTIVE_FLEXFIELD_NAME DESC_FLEXFLD_NAME,
76 AG.MULTI_ROW MULTI_ROW
77 FROM EGO_FND_DSC_FLX_CTX_EXT AG,
78 PO_UDA_AG_TEMPLATES POT, PO_UDA_AG_TEMPLATE_USAGES POTU
79 WHERE POT.TEMPLATE_ID = POTU.TEMPLATE_ID
80 AND AG.DESCRIPTIVE_FLEXFIELD_NAME = POT.ENTITY_CODE
81 AND AG.ATTR_GROUP_ID = POTU.ATTRIBUTE_GROUP_ID
82 AND potu.attribute_group_id in (select distinct attr_group_id
83 from po_req_headers_ext_b
84 where requisition_header_id = reqHeaderId
85 and uda_template_id = potu.template_id
86 and attr_group_id = potu.attribute_group_id)
87 ORDER BY POTU.ATTRIBUTE_GROUP_SEQUENCE;
88
89 CURSOR C_ATTR_MD(P_ATTR_GROUP VARCHAR2, P_DESC_FLEXFLD_NAME VARCHAR2) IS
90 SELECT EFDFCE.ATTR_ID ,
91 EFDFCE.APPLICATION_COLUMN_NAME ,
92 FCU.END_USER_COLUMN_NAME,
93 fcu.flex_value_set_id,
94 EFDFCE.data_type
95 FROM
96 EGO_FND_DF_COL_USGS_EXT EFDFCE,
97 FND_DESCR_FLEX_COLUMN_USAGES FCU
98 WHERE EFDFCE.DESCRIPTIVE_FLEXFIELD_NAME = P_DESC_FLEXFLD_NAME
99 AND EFDFCE.DESCRIPTIVE_FLEX_CONTEXT_CODE = P_ATTR_GROUP
100 AND FCU.DESCRIPTIVE_FLEX_CONTEXT_CODE = EFDFCE.DESCRIPTIVE_FLEX_CONTEXT_CODE
101 AND FCU.DESCRIPTIVE_FLEXFIELD_NAME = EFDFCE.DESCRIPTIVE_FLEXFIELD_NAME
102 AND FCU.APPLICATION_COLUMN_NAME = EFDFCE.APPLICATION_COLUMN_NAME
103 AND FCU.DISPLAY_FLAG <> 'H';
104
105 L_SQL VARCHAR2(32767);
106 L_OP VARCHAR2(32767);
107 L_ATTR_GRP NUMBER;
108 L_CTR NUMBER;
109 L_O_CTR NUMBER;
110 l_uda_xml XMLTYPE;
111 BEGIN
112
113 L_O_CTR := 0;
114 FOR REC IN C_ATTR_GRP LOOP
115 IF REC.MULTI_ROW = 'Y' THEN
116 IF L_O_CTR > 0 THEN
117 L_SQL := L_SQL || ',' || '(select XMLElement("' || REC.ATTR_GROUP
118 || '", XMLAgg(XMLForest(' ;
119 ELSE
120 L_SQL := '(select XMLElement("' || REC.ATTR_GROUP || '", XMLAgg(XMLForest(';
121 END IF;
122 ELSE
123 IF L_O_CTR > 0 THEN
124 L_SQL := L_SQL || ',' || '(select XMLElement("' || REC.ATTR_GROUP
125 || '", XMLForest(' ;
126 ELSE
127 L_SQL := '(select XMLElement("' || REC.ATTR_GROUP || '", XMLForest(';
128 END IF;
129 END IF;
130 L_CTR := 0 ;
131 FOR R IN C_ATTR_MD(REC.ATTR_GROUP, REC.DESC_FLEXFLD_NAME) LOOP
132 IF L_CTR = 0 THEN
133 L_SQL := L_SQL || R.APPLICATION_COLUMN_NAME || ' as ' || R.END_USER_COLUMN_NAME;
134 ELSE
135 L_SQL := L_SQL || ',' || R.APPLICATION_COLUMN_NAME || ' as ' || R.END_USER_COLUMN_NAME;
136 END IF;
137 if r.flex_value_set_id is not null then
138 if (r.data_type = 'C' or r.data_type = 'A' ) then
139 l_sql := l_sql || ',' || get_uda_attr_desc_sql('HEADER',
140 reqHeaderId,
141 r.data_type,
142 r.application_column_name,
143 r.end_user_column_name,
144 rec.attr_group,
145 r.ATTR_ID );
146 end if;
147 end if;
148 L_CTR := L_CTR + 1;
149 END LOOP;
150 IF REC.MULTI_ROW = 'Y' THEN
151 L_SQL := L_SQL || ')))';
152 ELSE
153 L_SQL := L_SQL || ' ))';
154 END IF;
155 L_SQL := L_SQL || ' from po_req_headers_ext_vl where requisition_header_id = ' ||
156 reqHeaderId ||
157 ' and attr_group_id = ' || REC.ATTR_GROUP_ID || ')' ;
158 L_O_CTR := L_O_CTR + 1;
159 END LOOP;
160
161 l_op := ' select XMLConcat(' || l_sql || ') from dual';
162 execute immediate l_op into l_uda_xml;
163 RETURN (l_uda_xml);
164 END GET_UDA_HEADER_XML;
165
166 FUNCTION GET_ADDRESSXML RETURN CLOB AS
167 l_where_sql varchar2(1000);
168 l_addr_sql varchar2(1000);
169 l_sql varchar2(4000);
170 l_col_name varchar2(50);
171 l_attr_grp_id number;
172 clob_addr CLOB;
173 c_addr SYS_REFCURSOR;
174 l_address varchar2(4000);
175 begin
176 l_where_sql := ' from po_req_headers_ext_vl where requisition_header_id = :1 ';
177
178 begin
179 SELECT ag.attr_group_id,
180 efdfce.application_column_name
181 into l_attr_grp_id, l_col_name
182 FROM ego_fnd_dsc_flx_ctx_ext ag,
183 ego_fnd_df_col_usgs_ext efdfce,
184 fnd_descr_flex_column_usages fcu
185 WHERE efdfce.descriptive_flexfield_name = ag.descriptive_flexfield_name
186 and efdfce.descriptive_flex_context_code = ag.descriptive_flex_context_code
187 and fcu.descriptive_flex_context_code = efdfce.descriptive_flex_context_code
188 and fcu.descriptive_flexfield_name = efdfce.descriptive_flexfield_name
189 and fcu.application_column_name = efdfce.application_column_name
190 and ag.DESCRIPTIVE_FLEXFIELD_NAME = 'PO_REQ_HEADER_EXT_ATTRS'
191 and upper(ag.descriptive_flex_context_code) = upper('addresses')
192 and upper(fcu.end_user_column_name) = upper('addressdtlsxml');
193
194 l_where_sql := l_where_sql || ' and attr_group_id = :3 ' ;
195
196 l_addr_sql := 'select ' || l_col_name || ' as address ' ;
197
198 exception
199 when no_data_found then
203 if l_addr_sql is not null then
200 l_addr_sql := '';
201 end;
202
204 l_sql := l_addr_sql || l_where_sql;
205
206 dbms_lob.createtemporary(clob_addr, true);
207 dbms_lob.open(clob_addr, dbms_lob.lob_readwrite);
208 open c_addr for l_sql using reqHeaderId, l_attr_grp_id;
209 loop
210 fetch c_addr into l_address;
211 exit when c_addr%notfound;
212 if l_address is not null then
213 dbms_lob.writeappend(clob_addr, length(l_address), l_address);
214 end if;
215 end loop;
216 dbms_lob.close(clob_addr);
217 end if;
218 return(clob_addr);
219 END GET_ADDRESSXML;
220
221
222 FUNCTION GET_CONTACTSXML RETURN CLOB AS
223 l_cnt_sql varchar2(1000);
224 l_where_sql varchar2(1000);
225 l_sql varchar2(4000);
226 l_cnt varchar2(4000);
227 l_col_name varchar2(50);
228 l_attr_grp_id number;
229 c_cnt SYS_REFCURSOR;
230 clob_cnt CLOB;
231 begin
232 l_where_sql := ' from po_req_headers_ext_vl where requisition_header_id = :1 ';
233
234 begin
235 SELECT ag.attr_group_id,
236 efdfce.application_column_name
237 into l_attr_grp_id, l_col_name
238 FROM ego_fnd_dsc_flx_ctx_ext ag,
239 ego_fnd_df_col_usgs_ext efdfce,
240 fnd_descr_flex_column_usages fcu
241 WHERE efdfce.descriptive_flexfield_name = ag.descriptive_flexfield_name
242 and efdfce.descriptive_flex_context_code = ag.descriptive_flex_context_code
243 and fcu.descriptive_flex_context_code = efdfce.descriptive_flex_context_code
244 and fcu.descriptive_flexfield_name = efdfce.descriptive_flexfield_name
245 and fcu.application_column_name = efdfce.application_column_name
246 and ag.DESCRIPTIVE_FLEXFIELD_NAME = 'PO_REQ_HEADER_EXT_ATTRS'
247 and upper(ag.descriptive_flex_context_code) = upper('addresses')
248 and upper(fcu.end_user_column_name) = upper('contactdtlsxml');
249
250 l_where_sql := l_where_sql || ' and attr_group_id = :3 ' ;
251
252 l_cnt_sql := 'select ' || l_col_name || ' as contacts ' ;
253
254 exception
255 when no_data_found then
256 l_cnt_sql := '';
257 end;
258
259 if l_cnt_sql is not null then
260 l_sql := l_cnt_sql || l_where_sql;
261
262 dbms_lob.createtemporary(clob_cnt, true);
263 dbms_lob.open(clob_cnt , dbms_lob.lob_readwrite);
264 open c_cnt for l_sql using reqHeaderId, l_attr_grp_id;
265 loop
266 fetch c_cnt into l_cnt;
267 exit when c_cnt%notfound;
268 if l_cnt is not null then
269 dbms_lob.writeappend(clob_cnt, length(l_cnt), l_cnt);
270 end if;
271 end loop;
272 dbms_lob.close(clob_cnt);
273 end if;
274 return(clob_cnt);
275 END GET_CONTACTSXML;
276
277 FUNCTION GET_AUTH_OFFICER_XML RETURN CLOB AS
278 l_where_sql varchar2(1000);
279 l_auth_sql varchar2(1000);
280 l_auth_sql_1 varchar2(4000);
281 l_sql varchar2(4000);
282 l_col_name varchar2(50);
283 l_attr_grp_id number;
284 clob_auth CLOB;
285 clob_auth_1 CLOB;
286 c_auth SYS_REFCURSOR;
287 l_auth varchar2(4000);
288 c_auth_1 SYS_REFCURSOR;
289 l_auth_id number;
290
291 begin
292 l_where_sql := ' from po_req_headers_ext_vl where requisition_header_id = :1 ';
293
294 begin
295 SELECT ag.attr_group_id,
296 efdfce.application_column_name
297 into l_attr_grp_id, l_col_name
298 FROM ego_fnd_dsc_flx_ctx_ext ag,
299 ego_fnd_df_col_usgs_ext efdfce,
300 fnd_descr_flex_column_usages fcu
301 WHERE efdfce.descriptive_flexfield_name = ag.descriptive_flexfield_name
302 and efdfce.descriptive_flex_context_code = ag.descriptive_flex_context_code
303 and fcu.descriptive_flex_context_code = efdfce.descriptive_flex_context_code
304 and fcu.descriptive_flexfield_name = efdfce.descriptive_flexfield_name
305 and fcu.application_column_name = efdfce.application_column_name
306 and ag.DESCRIPTIVE_FLEXFIELD_NAME = 'PO_REQ_HEADER_EXT_ATTRS'
307 and upper(ag.descriptive_flex_context_code) = upper('MIPR_ACC_INFO')
308 and upper(fcu.end_user_column_name) IN ('AUTH_OFFICER') ;
309
310 l_where_sql := l_where_sql || ' and attr_group_id = :3 ' ;
311
312 l_auth_sql := 'select ' || l_col_name || ' as AUTH_OFFICER_ID ' ;
313
314 exception
315 when no_data_found then
316 l_auth_sql := '';
317 end;
318
319 if l_auth_sql is not null then
320 l_sql := l_auth_sql || l_where_sql;
321 open c_auth for l_sql using reqHeaderId, l_attr_grp_id;
322 fetch c_auth into l_auth_id;
323 close c_auth;
324
325 l_auth_sql_1 := 'select nvl(hr_general.decode_position_latest_name (pa.position_id),jbt.name)
326 from per_all_assignments_f pa, per_jobs_tl jbt
327 where jbt.job_id(+) =pa.job_id and jbt.language=userenv(''LANG'')
328 and sysdate between nvl(pa.effective_start_date,sysdate) and nvl(pa.effective_end_date,sysdate)
329 and pa.person_id =:1';
330
331 dbms_lob.createtemporary(clob_auth_1, true);
332 dbms_lob.open(clob_auth_1, dbms_lob.lob_readwrite);
333 open c_auth_1 for l_auth_sql_1 using l_auth_id;
334 loop
335 fetch c_auth_1 into l_auth;
336 exit when c_auth_1%notfound;
337 if l_auth is not null then
338 dbms_lob.writeappend(clob_auth_1, length(l_auth), l_auth);
339 end if;
340 end loop;
341 dbms_lob.close(clob_auth_1);
342 end if;
343
344
345 return(clob_auth_1);
346 END GET_AUTH_OFFICER_XML;
347
348 FUNCTION GET_APPROPRIATION(CHARGE_ACCOUNT IN VARCHAR2) RETURN VARCHAR2 AS
349 BEGIN
350 -- Code need to be written for getting Appropriation from Charge account
354 FUNCTION GET_LIMITSH(CHARGE_ACCOUNT IN VARCHAR2) RETURN VARCHAR2 AS
351 return(CHARGE_ACCOUNT);
352 END GET_APPROPRIATION;
353
355 BEGIN
356 -- Code need to be written for getting Appropriation from Charge account
357 return(CHARGE_ACCOUNT);
358 END GET_LIMITSH;
359
360 FUNCTION GET_ADDRESS_FROM_LOCATION (p_location_id IN NUMBER)
361 RETURN VARCHAR2 IS
362
363 l_address_line_1 VARCHAR2(240);
364 l_address_line_2 VARCHAR2(240);
365 l_address_line_3 VARCHAR2(240);
366 l_town_or_city VARCHAR2(80);
367 l_state_or_province VARCHAR2(80);
368 l_postal_code VARCHAR2(80);
369 l_territory_short_name VARCHAR2(80);
370 l_iso_territory_code VARCHAR2(80);
371 address_string VARCHAR2(1000):= '';
372
373 BEGIN
374
375 PO_HR_LOCATION.get_address (
376 p_location_id => p_location_id
377 , x_address_line_1 => l_address_line_1
378 , x_address_line_2 => l_address_line_2
379 , x_address_line_3 => l_address_line_3
380 , x_town_or_city => l_town_or_city
381 , x_state_or_province => l_state_or_province
382 , x_postal_code => l_postal_code
383 , x_territory_short_name => l_territory_short_name
384 , x_iso_territory_code => l_iso_territory_code );
385
386
387 select decode(l_address_line_1,null,'',l_address_line_1||' ')||
388 decode(l_address_line_2,null,'',l_address_line_2||' ')||
389 decode(l_address_line_3,null,'',l_address_line_3||' ')||
390 decode(l_town_or_city,null,'',l_town_or_city||',')||
391 decode(l_state_or_province,null,'',l_state_or_province||',')||
392 decode(l_territory_short_name, null,'',l_territory_short_name||',')||
393 l_postal_code
394 into address_string
395 from dual;
396
397 RETURN address_string;
398
399 END GET_ADDRESS_FROM_LOCATION;
400
401 FUNCTION GET_FUNDSDATAXML RETURN CLOB AS
402
403 CURSOR c_funds_info IS
404 SELECT ag.attr_group_id as attr_grp_id,
405 efdfce.application_column_name as appl_col_name,
406 fcu.end_user_column_name as end_user_col_name
407 FROM ego_fnd_dsc_flx_ctx_ext ag,
408 ego_fnd_df_col_usgs_ext efdfce,
409 fnd_descr_flex_column_usages fcu
410 WHERE efdfce.descriptive_flexfield_name = ag.descriptive_flexfield_name
411 and efdfce.descriptive_flex_context_code = ag.descriptive_flex_context_code
412 and fcu.descriptive_flex_context_code = efdfce.descriptive_flex_context_code
413 and fcu.descriptive_flexfield_name = efdfce.descriptive_flexfield_name
414 and fcu.application_column_name = efdfce.application_column_name
415 and ag.DESCRIPTIVE_FLEXFIELD_NAME = 'PO_REQ_HEADER_EXT_ATTRS'
416 and upper(ag.descriptive_flex_context_code) = upper('MIPR_ACC_INFO')
417 and upper(fcu.end_user_column_name) IN ('FUNDS_INFO', 'AMOUNT') ;
418
419 l_where_sql varchar2(1000);
420 l_auth_sql varchar2(1000) := '';
421 l_sql varchar2(4000);
422 l_attr_grp_id number;
423 l_amount number;
424 l_op VARCHAR2(1000);
425 l_xml_sql varchar2(500) := '';
426 l_uda_xml XMLTYPE;
427 cnt NUMBER;
428 c_auth SYS_REFCURSOR;
429 l_funds_info VARCHAR2(20);
430
431 begin
432 cnt := 0;
433 for rec in c_funds_info loop
434 if cnt = 0 then
435 l_auth_sql := 'select ' || rec.appl_col_name || ' as ' || rec.end_user_col_name;
436 else
437 l_auth_sql := l_auth_sql || ' ,' || rec.appl_col_name || ' as ' || rec.end_user_col_name;
438 end if;
439 l_attr_grp_id := rec.attr_grp_id;
440 cnt := cnt + 1;
441 end loop;
442
443 l_where_sql := ' from po_req_headers_ext_vl where requisition_header_id = :1 and attr_group_id = :2 ' ;
444
445 if l_auth_sql is not null then
446 l_sql := l_auth_sql || l_where_sql;
447 open c_auth for l_sql using reqHeaderId, l_attr_grp_id;
448 fetch c_auth into l_funds_info, l_amount;
449 close c_auth;
450
451 if l_funds_info = 'REQUIRED' then
452 l_xml_sql := 'XMLELEMENT(ADDITIONAL_FUNDS_REQD_FLAG, ''Y''), XMLELEMENT(ADDITIONAL_FUNDS_REQD_AMOUNT,' || l_amount || ')';
453 elsif l_funds_info = 'WITHDRAW' then
454 l_xml_sql := 'XMLELEMENT(WITHDRAW_FUNDS_FLAG, ''Y''), XMLELEMENT(WITHDRAW_FUNDS_AMOUNT,' || l_amount || ')';
455 else
456 l_xml_sql := 'XMLELEMENT(ADDITIONAL_FUNDS_REQD_FLAG, ''N''), XMLELEMENT(ADDITIONAL_FUNDS_REQD_AMOUNT, ' || 0.00 || '),' ||
457 ' XMLELEMENT(WITHDRAW_FUNDS_FLAG, ''N''), XMLELEMENT(WITHDRAW_FUNDS_AMOUNT, ' || 0.00 || ')';
458 end if;
459
460 end if;
461
462 l_op := ' select XMLConcat( ' || l_xml_sql || ') from dual';
463 execute immediate l_op into l_uda_xml;
464
465 RETURN l_uda_xml.GETCLOBVAL();
466 END GET_FUNDSDATAXML;
467
468 FUNCTION GET_MIPR_ACC_ATTRIBUTES RETURN CLOB AS
469
470 cursor c_obligation is
471 SELECT count(*), clm_mipr_obligation_type
472 FROM po_requisition_lines_all
473 WHERE requisition_header_id = reqHeaderId
474 GROUP BY clm_mipr_obligation_type
475 HAVING clm_mipr_obligation_type is not null;
476
477 l_reimbursement_flag varchar2(1) := 'N';
478 l_direct_citation_flag varchar2(1) := 'N';
479 l_both_flag varchar2(1):= 'N';
480 l_acc_xml XMLTYPE;
481 l_count number;
482 l_obligation_type varchar2(20);
483 l_sql VARCHAR2(1000);
484
485 begin
486 open c_obligation;
487
488 loop
489 fetch c_obligation into l_count, l_obligation_type;
490 exit when c_obligation%NOTFOUND;
491 if l_obligation_type = 'REIMBURSEMENT' then
492 if l_direct_citation_flag = 'N' then
493 l_reimbursement_flag := 'Y';
494 else
495 l_both_flag := 'Y';
499 if l_reimbursement_flag = 'N' then
496 end if;
497 end if;
498 if l_obligation_type = 'DIRECT_CITE' then
500 l_direct_citation_flag := 'Y';
501 else
502 l_both_flag := 'Y';
503 end if;
504 end if;
505 end loop;
506
507 l_sql := 'SELECT XMLCONCAT(XMLELEMENT(REIMBURSEMENT_FLAG, '''
508 || l_reimbursement_flag || '''),
509 XMLELEMENT(DIRECT_CITATION_FLAG, '''
510 || l_direct_citation_flag||'''), XMLELEMENT(OBLG_BOTH_FLAG,'''
511 || l_both_flag ||''')) FROM DUAL';
512
513 EXECUTE IMMEDIATE l_sql INTO l_acc_xml;
514
515 return l_acc_xml.getclobval();
516 END GET_MIPR_ACC_ATTRIBUTES;
517
518 PROCEDURE GET_TEMPLATES_FOR_DD448(x_facePageTemplate OUT NOCOPY VARCHAR2,
519 x_contPagesTemplate OUT NOCOPY VARCHAR2,
520 x_datadef OUT NOCOPY VARCHAR2) IS
521 BEGIN
522 -- Code need to be written for getting PDF template code for DD448 report.
523 x_facePageTemplate := 'ICXMIPRDD448';
524 x_contPagesTemplate := 'ICXDD448SUB';
525
526 SELECT data_source_code INTO x_datadef
527 FROM XDO_TEMPLATES_VL
528 WHERE template_code = 'ICXMIPRDD448';
529
530 END GET_TEMPLATES_FOR_DD448;
531
532 PROCEDURE GET_TEMPLATES_FOR_DD448_2(x_facePageTemplate OUT NOCOPY VARCHAR2,
533 x_contPagesTemplate OUT NOCOPY VARCHAR2,
534 x_datadef OUT NOCOPY VARCHAR2) IS
535 BEGIN
536 -- Code need to be written for getting PDF template code for DD448-2 report.
537 x_facePageTemplate := 'ICXMIPRDD4482';
538 x_contPagesTemplate := 'ICXDD4482SUB';
539
540 SELECT data_source_code INTO x_datadef
541 FROM XDO_TEMPLATES_VL
542 WHERE template_code = 'ICXMIPRDD4482';
543
544 END GET_TEMPLATES_FOR_DD448_2;
545
546 FUNCTION GET_ADDRESS_FROM_UDA_ATTR(P_REQ_HEADER_ID NUMBER,
547 P_ADDRESS_TYPE IN VARCHAR2,
548 P_COL_NAME IN VARCHAR2) RETURN VARCHAR2 IS
549
550 l_sql VARCHAR2(4000);
551 l_address varchar2(1000);
552 c_addr SYS_REFCURSOR;
553 l_columns VARCHAR2(50);
554 l_col_names varchar2(50);
555 l_attr_group_id number;
556 l_addresstype VARCHAR2(25);
557 l_address_det VARCHAR2(25);
558 l_address_type VARCHAR2(50);
559
560 BEGIN
561 BEGIN
562
563 SELECT ag.attr_group_id,
564 LISTAGG (efdfce.application_column_name, ',')
565 WITHIN GROUP
566 (ORDER BY efdfce.application_column_name) cols
567 INTO l_attr_group_id, l_col_names
568 FROM ego_fnd_dsc_flx_ctx_ext ag,
569 ego_fnd_df_col_usgs_ext efdfce,
570 fnd_descr_flex_column_usages fcu
571 WHERE efdfce.descriptive_flexfield_name = ag.descriptive_flexfield_name
572 and efdfce.descriptive_flex_context_code = ag.descriptive_flex_context_code
573 and fcu.descriptive_flex_context_code = efdfce.descriptive_flex_context_code
574 and fcu.descriptive_flexfield_name = efdfce.descriptive_flexfield_name
575 and fcu.application_column_name = efdfce.application_column_name
576 and ag.DESCRIPTIVE_FLEXFIELD_NAME = 'PO_REQ_HEADER_EXT_ATTRS'
577 and upper(ag.descriptive_flex_context_code) = upper('addresses')
578 AND upper(fcu.end_user_column_name) IN (upper(p_col_name), upper('addresstype'))
579 GROUP BY ag.attr_group_id;
580
581 SELECT substr(l_col_names, 1, InStr(l_col_names, ',')-1), substr(l_col_names, InStr(l_col_names, ',')+1) INTO l_addresstype, l_address_det FROM dual;
582
583 l_sql := 'select ' || l_col_names || ' from po_req_headers_ext_vl where requisition_header_id = :1 and attr_group_id = :2 and ' ||
584 l_addresstype || ' = :3';
585
586 EXCEPTION
587 WHEN NO_DATA_FOUND THEN
588 l_sql := '';
589 END;
590
591 if l_sql is not null then
592 open c_addr for l_sql using p_req_header_id, l_attr_group_id, p_address_type;
593 LOOP
594 fetch c_addr into l_address_type, l_address;
595 exit when c_addr%notfound;
596 end loop;
597 end if;
598
599 RETURN (l_address);
600
601 END GET_ADDRESS_FROM_UDA_ATTR;
602
603 FUNCTION GET_MIPR_ACCEPTANCE_STATUS(P_REQ_HEADER_ID IN NUMBER) RETURN VARCHAR2 AS
604
605 l_where_sql varchar2(1000);
606 l_acc_sql varchar2(1000) := '';
607 l_sql varchar2(4000);
608 l_attr_grp_id number;
609 l_col_name varchar2(50);
610 l_acceptance_status VARCHAR2(15);
611 c_accept SYS_REFCURSOR;
612
613 BEGIN
614
615 SELECT ag.attr_group_id,
616 efdfce.application_column_name
617 INTO l_attr_grp_id, l_col_name
618 FROM ego_fnd_dsc_flx_ctx_ext ag,
619 ego_fnd_df_col_usgs_ext efdfce,
620 fnd_descr_flex_column_usages fcu
621 WHERE efdfce.descriptive_flexfield_name = ag.descriptive_flexfield_name
622 and efdfce.descriptive_flex_context_code = ag.descriptive_flex_context_code
623 and fcu.descriptive_flex_context_code = efdfce.descriptive_flex_context_code
624 and fcu.descriptive_flexfield_name = efdfce.descriptive_flexfield_name
625 and fcu.application_column_name = efdfce.application_column_name
626 and ag.DESCRIPTIVE_FLEXFIELD_NAME = 'PO_REQ_HEADER_EXT_ATTRS'
627 and upper(ag.descriptive_flex_context_code) = upper('MIPR_ACC_INFO')
628 and upper(fcu.end_user_column_name) = 'MIPR_ACC_STAT';
629
630 l_acc_sql := 'select ' || l_col_name || ' as CLM_MIPR_ACCEPTANCE_STATUS ' ;
631 l_where_sql := ' from po_req_headers_ext_vl where requisition_header_id = :1 and attr_group_id = :2 ' ;
632
633 if l_acc_sql is not null then
634 l_sql := l_acc_sql || l_where_sql;
635 open c_accept for l_sql using p_req_header_id, l_attr_grp_id;
636 fetch c_accept into l_acceptance_status;
637 close c_accept;
638 end if;
639
640 RETURN l_acceptance_status;
641 END GET_MIPR_ACCEPTANCE_STATUS;
642
643 END;