[Home] [Help]
PACKAGE BODY: APPS.PO_POXPRCLM_PKG
Source
1 PACKAGE BODY PO_POXPRCLM_PKG AS
2 /* $Header: POXPRCLMB.pls 120.1 2011/01/03 04:55:30 bhuchand noship $ */
3
4 FUNCTION AfterPForm return boolean is
5 begin
6
7 SEGMENT_WHERE :='1=1 ';
8
9 if (p_req_num_from is not null and p_req_num_to is null) then
10 SEGMENT_WHERE := 'prh.segment1 >= :p_req_num_from ';
11 elsif (p_req_num_to is not null and p_req_num_from is null) then
12 SEGMENT_WHERE := 'prh.segment1 <= :p_req_num_to ';
13 elsif (p_req_num_to is not null and p_req_num_from is not null) then
14 SEGMENT_WHERE := '(prh.segment1 between :p_req_num_from and :p_req_num_to) ';
15 end if;
16
17 return (TRUE);
18 end;
19
20 FUNCTION GET_UDA_HEADER_XML( p_req_header_id NUMBER) RETURN XMLType IS
21 CURSOR C_ATTR_GRP IS
22 SELECT AG.DESCRIPTIVE_FLEX_CONTEXT_CODE ATTR_GROUP, AG.ATTR_GROUP_ID
23 ATTR_GROUP_ID,
24 AG.DESCRIPTIVE_FLEXFIELD_NAME DESC_FLEXFLD_NAME, AG.MULTI_ROW
25 MULTI_ROW
26 FROM EGO_FND_DSC_FLX_CTX_EXT AG, po_requisition_headers_all H,
27 PO_UDA_AG_TEMPLATES POT, PO_UDA_AG_TEMPLATE_USAGES POTU
28 WHERE H.requisition_header_id = p_req_header_id
29 AND H.UDA_TEMPLATE_ID = POT.TEMPLATE_ID
30 AND POT.TEMPLATE_ID = POTU.TEMPLATE_ID
31 AND AG.DESCRIPTIVE_FLEXFIELD_NAME = POT.ENTITY_CODE
32 AND AG.ATTR_GROUP_ID = POTU.ATTRIBUTE_GROUP_ID
33 and POTU.attribute_group_id in (select distinct attr_group_id from PO_REQ_HEADERS_EXT_B
34 where REQUISITION_HEADER_ID = H.requisition_header_id and attr_group_id = POTU.attribute_group_id)
35
36 ORDER BY POTU.ATTRIBUTE_GROUP_SEQUENCE;
37
38 CURSOR C_ATTR_MD(P_ATTR_GROUP VARCHAR2, P_DESC_FLEXFLD_NAME VARCHAR2) IS
39 SELECT EFDFCE.ATTR_ID ,
40 EFDFCE.APPLICATION_COLUMN_NAME ,
41 FCU.END_USER_COLUMN_NAME,
42 fcu.flex_value_set_id,
43 EFDFCE.data_type
44 FROM
45 EGO_FND_DF_COL_USGS_EXT EFDFCE
46 , FND_DESCR_FLEX_COLUMN_USAGES FCU
47 WHERE EFDFCE.DESCRIPTIVE_FLEXFIELD_NAME = P_DESC_FLEXFLD_NAME
48 AND EFDFCE.DESCRIPTIVE_FLEX_CONTEXT_CODE = P_ATTR_GROUP
49 AND FCU.DESCRIPTIVE_FLEX_CONTEXT_CODE =
50 EFDFCE.DESCRIPTIVE_FLEX_CONTEXT_CODE
51 AND FCU.DESCRIPTIVE_FLEXFIELD_NAME =
52 EFDFCE.DESCRIPTIVE_FLEXFIELD_NAME
53 AND FCU.APPLICATION_COLUMN_NAME = EFDFCE.APPLICATION_COLUMN_NAME
54 AND FCU.DISPLAY_FLAG <> 'H';
55
56 L_SQL VARCHAR2(32767);
57 L_OP VARCHAR2(32767);
58 L_ATTR_GRP NUMBER;
59 L_CTR NUMBER;
60 L_O_CTR NUMBER;
61 l_uda_xml XMLTYPE;
62
63 p_application_id number := 201;
64 p_attr_internal_str_value varchar2(100);
65
66 p_attr_internal_name varchar2(100);
67 p_attr_group_type varchar2(200) := 'PO_REQ_HEADER_EXT_ATTRS';
68 p_attr_group_int_name varchar2(200);
69
70 p_object_name varchar2(200) := 'PO_REQ_HEADERS_EXT_B';
71
72 p_pk1_column_name varchar2(200) := 'REQUISITION_HEADER_ID';
73 p_pk1_value number := p_req_header_id;
74
75
76 BEGIN
77
78 L_O_CTR := 0;
79 FOR REC IN C_ATTR_GRP LOOP
80 IF REC.MULTI_ROW = 'Y' THEN
81 IF L_O_CTR > 0 THEN
82 L_SQL := L_SQL || ',' || '(select XMLElement("' || REC.ATTR_GROUP
83 || '", XMLAgg(XMLForest(' ;
84 ELSE
85 L_SQL := '(select XMLElement("' || REC.ATTR_GROUP || '",
86 XMLAgg(XMLForest(';
87 END IF;
88 ELSE
89 IF L_O_CTR > 0 THEN
90 L_SQL := L_SQL || ',' || '(select XMLElement("' || REC.ATTR_GROUP
91 || '", XMLForest(' ;
92 ELSE
93 L_SQL := '(select XMLElement("' || REC.ATTR_GROUP || '", XMLForest(';
94 END IF;
95 END IF;
96 L_CTR := 0 ;
97 FOR R IN C_ATTR_MD(REC.ATTR_GROUP, REC.DESC_FLEXFLD_NAME) LOOP
98 IF L_CTR = 0 THEN
99 L_SQL := L_SQL || R.APPLICATION_COLUMN_NAME || ' as ' ||
100 R.END_USER_COLUMN_NAME;
101 ELSE
102 L_SQL := L_SQL || ',' || R.APPLICATION_COLUMN_NAME || ' as ' ||
103 R.END_USER_COLUMN_NAME;
104 END IF;
105
106 if r.flex_value_set_id is not null then
107 if (r.data_type = 'C' or r.data_type = 'A' ) then
108 l_sql := l_sql || ',' || ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
109 p_application_id || ',' || ' null, ' ||
110 R.APPLICATION_COLUMN_NAME || ', null , ''' ||
111 R.END_USER_COLUMN_NAME || ''',''' ||
112 p_attr_group_type || ''',''' ||
113 REC.ATTR_GROUP || ''',' ||
114 r.attr_id || ',''' ||
115 p_object_name || ''',''' ||
116 p_pk1_column_name || ''',' ||
117 p_pk1_value || ') as ' || R.end_user_column_name || '_DESC' ;
118 elsif r.data_type = 'N' then
119 l_sql := l_sql || ',' || ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
120 p_application_id || ',' || ' null, null, ' ||
121 R.APPLICATION_COLUMN_NAME || ', ''' ||
122 R.END_USER_COLUMN_NAME || ''',''' ||
123 p_attr_group_type || ''',''' ||
124 REC.ATTR_GROUP || ''',' ||
125 r.attr_id || ',''' ||
126 p_object_name || ''',''' ||
127 p_pk1_column_name || ''',' ||
128 p_pk1_value || ') as ' || R.end_user_column_name || '_DESC' ;
129 elsif (r.data_type = 'X' or r.data_type = 'Y') then
130 l_sql := l_sql || ',' || ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
131 p_application_id || ',' || R.APPLICATION_COLUMN_NAME ||
132 ' , null, null, ''' ||
133 R.END_USER_COLUMN_NAME || ''',''' ||
134 p_attr_group_type || ''',''' ||
135 REC.ATTR_GROUP || ''',' ||
136 r.attr_id || ',''' ||
137 p_object_name || ''',''' ||
138 p_pk1_column_name || ''',' ||
139 p_pk1_value || ') as ' || R.end_user_column_name || '_DESC' ;
140 end if;
141 end if;
142
143
144
145 L_CTR := L_CTR + 1;
146 END LOOP;
147 IF REC.MULTI_ROW = 'Y' THEN
148 L_SQL := L_SQL || ')))';
149 ELSE
150 L_SQL := L_SQL || ' ))';
151 END IF;
152 L_SQL := L_SQL || ' from PO_REQ_HEADERS_EXT_VL where
153 REQUISITION_HEADER_ID = ' || p_req_header_id || ' and attr_group_id = '
154 || REC.ATTR_GROUP_ID || ')' ;
155
156 L_O_CTR := L_O_CTR + 1;
157 END LOOP;
158
159 l_op := ' select XMLConcat(' || l_sql || ') from dual';
160 execute immediate l_op into l_uda_xml;
161
162 RETURN (l_uda_xml);
163 END;
164
165
166 FUNCTION GET_UDA_LINES_XML(p_req_line_id NUMBER) RETURN XMLTYPE IS
167 CURSOR C_ATTR_GRP IS
168 SELECT AG.DESCRIPTIVE_FLEX_CONTEXT_CODE ATTR_GROUP, AG.ATTR_GROUP_ID
169 ATTR_GROUP_ID,
170 AG.DESCRIPTIVE_FLEXFIELD_NAME DESC_FLEXFLD_NAME, AG.MULTI_ROW
171 MULTI_ROW
172 FROM EGO_FND_DSC_FLX_CTX_EXT AG, po_requisition_lines_all L,
173 PO_UDA_AG_TEMPLATES POT, PO_UDA_AG_TEMPLATE_USAGES POTU
174 WHERE L.requisition_line_id = p_req_line_id
175 AND L.UDA_TEMPLATE_ID = POT.TEMPLATE_ID
176 AND POT.TEMPLATE_ID = POTU.TEMPLATE_ID
177 AND AG.DESCRIPTIVE_FLEXFIELD_NAME = POT.ENTITY_CODE
178 AND AG.ATTR_GROUP_ID = POTU.ATTRIBUTE_GROUP_ID
179 and potu.attribute_group_id in (select distinct attr_group_id from PO_REQ_LINES_EXT_B
180 where requisition_line_id=p_req_line_id and attr_group_id = potu.attribute_group_id)
181 ORDER BY POTU.ATTRIBUTE_GROUP_SEQUENCE;
182
183 CURSOR C_ATTR_MD(P_ATTR_GROUP VARCHAR2, P_DESC_FLEXFLD_NAME VARCHAR2) IS
184 SELECT EFDFCE.ATTR_ID ,
185 EFDFCE.APPLICATION_COLUMN_NAME ,
186 FCU.END_USER_COLUMN_NAME ,
187 fcu.flex_value_set_id,
188 EFDFCE.data_type
189
190 FROM
191 EGO_FND_DF_COL_USGS_EXT EFDFCE
192 , FND_DESCR_FLEX_COLUMN_USAGES FCU
193 WHERE EFDFCE.DESCRIPTIVE_FLEXFIELD_NAME = P_DESC_FLEXFLD_NAME
194 AND EFDFCE.DESCRIPTIVE_FLEX_CONTEXT_CODE = P_ATTR_GROUP
195 AND FCU.DESCRIPTIVE_FLEX_CONTEXT_CODE =
196 EFDFCE.DESCRIPTIVE_FLEX_CONTEXT_CODE
197 AND FCU.DESCRIPTIVE_FLEXFIELD_NAME =
198 EFDFCE.DESCRIPTIVE_FLEXFIELD_NAME
199 AND FCU.APPLICATION_COLUMN_NAME = EFDFCE.APPLICATION_COLUMN_NAME
200 AND FCU.DISPLAY_FLAG <> 'H';
201
202 L_SQL VARCHAR2(32767);
203 L_OP VARCHAR2(32767);
204 L_ATTR_GRP NUMBER;
205 L_CTR NUMBER;
206 L_O_CTR NUMBER;
207 l_uda_xml XMLTYPE;
208
209 p_application_id number := 201;
210 p_attr_internal_str_value varchar2(100);
211
212 p_attr_internal_name varchar2(100);
213 p_attr_group_type varchar2(200) := 'PO_REQ_LINE_EXT_ATTRS';
214 p_attr_group_int_name varchar2(200);
215
216 p_object_name varchar2(200) := 'PO_REQ_LINES_EXT_B';
217
218 p_pk1_column_name varchar2(200) := 'REQUISITION_LINE_ID';
219 p_pk1_value number := p_req_line_id;
220
221 BEGIN
222
223 L_O_CTR := 0;
224 FOR REC IN C_ATTR_GRP LOOP
225 IF REC.MULTI_ROW = 'Y' THEN
226 IF L_O_CTR > 0 THEN
227 L_SQL := L_SQL || ',' || '(select XMLElement("' || REC.ATTR_GROUP
228 || '", XMLAgg(XMLForest(' ;
229 ELSE
230 L_SQL := '(select XMLElement("' || REC.ATTR_GROUP || '",
231 XMLAgg(XMLForest(';
232 END IF;
233 ELSE
234 IF L_O_CTR > 0 THEN
235 L_SQL := L_SQL || ',' || '(select XMLElement("' || REC.ATTR_GROUP
236 || '", XMLForest(' ;
237 ELSE
238 L_SQL := '(select XMLElement("' || REC.ATTR_GROUP || '", XMLForest(';
239 END IF;
240 END IF;
241 L_CTR := 0 ;
242 FOR R IN C_ATTR_MD(REC.ATTR_GROUP, REC.DESC_FLEXFLD_NAME) LOOP
243 IF L_CTR = 0 THEN
244 L_SQL := L_SQL || R.APPLICATION_COLUMN_NAME || ' as ' ||
245 R.END_USER_COLUMN_NAME;
246 ELSE
247 L_SQL := L_SQL || ',' || R.APPLICATION_COLUMN_NAME || ' as ' ||
248 R.END_USER_COLUMN_NAME;
249 END IF;
250
251 if r.flex_value_set_id is not null then
252 if (r.data_type = 'C' or r.data_type = 'A' ) then
253 l_sql := l_sql || ',' || ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
254 p_application_id || ',' || ' null, ' ||
255 R.APPLICATION_COLUMN_NAME || ', null , ''' ||
256 R.END_USER_COLUMN_NAME || ''',''' ||
257 p_attr_group_type || ''',''' ||
258 REC.ATTR_GROUP || ''',' ||
259 r.attr_id || ',''' ||
260 p_object_name || ''',''' ||
261 p_pk1_column_name || ''',' ||
262 p_pk1_value || ') as ' || R.end_user_column_name || '_DESC' ;
263 elsif r.data_type = 'N' then
264 l_sql := l_sql || ',' || ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
265 p_application_id || ',' || ' null, null, ' ||
266 R.APPLICATION_COLUMN_NAME || ', ''' ||
267 R.END_USER_COLUMN_NAME || ''',''' ||
268 p_attr_group_type || ''',''' ||
269 REC.ATTR_GROUP || ''',' ||
270 r.attr_id || ',''' ||
271 p_object_name || ''',''' ||
272 p_pk1_column_name || ''',' ||
273 p_pk1_value || ') as ' || R.end_user_column_name || '_DESC' ;
274 elsif (r.data_type = 'X' or r.data_type = 'Y') then
275 l_sql := l_sql || ',' || ' EGO_USER_ATTRS_DATA_PVT.Get_Attr_Disp_Val_From_VSet ( ' ||
276 p_application_id || ',' || R.APPLICATION_COLUMN_NAME ||
277 ' , null, null, ''' ||
278 R.END_USER_COLUMN_NAME || ''',''' ||
279 p_attr_group_type || ''',''' ||
280 REC.ATTR_GROUP || ''',' ||
281 r.attr_id || ',''' ||
282 p_object_name || ''',''' ||
283 p_pk1_column_name || ''',' ||
284 p_pk1_value || ') as ' || R.end_user_column_name || '_DESC' ;
285 end if;
286 end if;
287
288
289 L_CTR := L_CTR + 1;
290 END LOOP;
291 IF REC.MULTI_ROW = 'Y' THEN
292 L_SQL := L_SQL || ')))';
293 ELSE
294 L_SQL := L_SQL || ' ))';
295 END IF;
296 L_SQL := L_SQL || ' from PO_REQ_LINES_EXT_VL where
297 REQUISITION_LINE_ID = '||p_req_line_id||' and attr_group_id = ' || REC.ATTR_GROUP_ID || ')' ;
298
299 L_O_CTR := L_O_CTR + 1;
300 END LOOP;
301
302 l_op := ' select XMLConcat(' || l_sql || ') from dual';
303 execute immediate l_op into l_uda_xml;
304
305 RETURN (l_uda_xml);
306 END;
307
308
309 END;
310