1 PACKAGE EGO_USER_ATTRS_BULK_PVT AUTHID CURRENT_USER AS
2 /* $Header: EGOVBUAS.pls 120.16.12020000.4 2012/07/13 01:37:57 mshirkol ship $ */
3
4 ----------------
5 -- Data Types --
6 ----------------
7
8 TYPE EGO_USER_ATTRS_BULK_STR_TBL IS TABLE OF VARCHAR2(1000);
9 TYPE EGO_USER_ATTRS_BULK_NUM_TBL IS TABLE OF NUMBER;
10 TYPE EGO_USER_ATTRS_BULK_DATE_TBL IS TABLE OF DATE;
11
12
13
14 ----------------------
15 -- Global Variables --
16 ----------------------
17
18 G_NULL_TOKEN_NUM CONSTANT VARCHAR2(8) := '9.97E125';
19 G_NULL_TOKEN_STR CONSTANT VARCHAR2(6) := 'CHR(1)';
20 G_NULL_TOKEN_DATE CONSTANT VARCHAR2(20) := 'TO_DATE(''3'',''J'')';
21
22 G_NULL_NUM_VAL CONSTANT VARCHAR2(8) := '9.99E125';
23 G_NULL_CHAR_VAL CONSTANT VARCHAR2(2) := '!';
24 G_NULL_DATE_VAL CONSTANT VARCHAR2(20) := 'TO_DATE(''1'',''j'')';
25 G_NULL_NUM_VAL_STR CONSTANT VARCHAR2(130):= '999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
26
27 G_NULL_TOKEN_NUM_1 CONSTANT VARCHAR2(8) := '9.91E125';
28 G_NULL_TOKEN_STR_1 CONSTANT VARCHAR2(6) := 'CHR(2)';
29 G_NULL_TOKEN_DATE_1 CONSTANT VARCHAR2(20) := 'TO_DATE(''5'',''J'')';
30
31
32 /*
33 * PROCESS_STATUS constants
34 * ------------------------
35 * The following constants are used in the PROCESS_STATUS column of the table
36 *
37 * G_PS_TO_BE_PROCESSED: row should be processed
38 * G_PS_IN_PROCESS: row is being processed
39 * G_PS_GENERIC_ERROR: some row in the same logical Attribute Group as this row
40 * encountered an error (all error statuses described below
41 * are set to this status at the completion of processing)
42 * G_PS_SUCCESS: row processed succcessfully
43 *
44 * In addition to the four basic error statuses above, there are several internal
45 * statuses that may appear in the interface table at times (for instance, while
46 * a data set is being processed, or if the process encountered a fatal error)
47 */
48 G_PS_TO_BE_PROCESSED CONSTANT NUMBER := 1;
49 G_PS_IN_PROCESS CONSTANT NUMBER := 2;
50 G_PS_GENERIC_ERROR CONSTANT NUMBER := 3;
51 G_PS_SUCCESS CONSTANT NUMBER := 4;
52
53 /* 3*/ G_PS_BAD_ATTR_OR_AG_METADATA CONSTANT NUMBER := POWER(2,3); -- 8
54 /* 4*/ G_PS_MULTIPLE_ENTRIES CONSTANT NUMBER := POWER(2,4); -- 16
55 /* 5*/ G_PS_MULTIPLE_VALUES CONSTANT NUMBER := POWER(2,5); -- 32
56 /* 6*/ G_PS_NO_PRIVILEGES CONSTANT NUMBER := POWER(2,6); -- 64
57 /* 7*/ G_PS_VALUE_NOT_IN_VS CONSTANT NUMBER := POWER(2,7); -- 128
58 /* 8*/ G_PS_INVALID_NUMBER_DATA CONSTANT NUMBER := POWER(2,8); -- 256
59 /* 9*/ G_PS_INVALID_DATE_DATA CONSTANT NUMBER := POWER(2,9); -- 512
60 /*10*/ G_PS_INVALID_DATE_TIME_DATA CONSTANT NUMBER := POWER(2,10); -- 1024
61 /*11*/ G_PS_MAX_LENGTH_VIOLATION CONSTANT NUMBER := POWER(2,11); -- 2048
62 /*12*/ G_PS_BAD_TTYPE_UPDATE CONSTANT NUMBER := POWER(2,12); -- 4096
63 /*13*/ G_PS_BAD_TTYPE_CREATE CONSTANT NUMBER := POWER(2,13); -- 8192
64 /*14*/ G_PS_BAD_TTYPE_DELETE CONSTANT NUMBER := POWER(2,14); -- 16384
65 /*15*/ G_PS_REQUIRED_ATTRIBUTE CONSTANT NUMBER := POWER(2,15); -- 32768
66 /*16*/ G_PS_AG_NOT_ASSOCIATED CONSTANT NUMBER := POWER(2,16); -- 65536
67 /*17*/ G_PS_IDENTICAL_ROWS CONSTANT NUMBER := POWER(2,17); -- 131072
68 /*18*/ G_PS_BAD_PK_VAL CONSTANT NUMBER := POWER(2,18); -- 262144
69 /*19*/ G_PS_DATA_IN_WRONG_COL CONSTANT NUMBER := POWER(2,19); -- 524288
70 /*20*/ G_PS_BAD_ATTRS_IN_TVS_WHERE CONSTANT NUMBER := POWER(2,20); -- 1048576
71 /*21*/ G_PS_VALUE_NOT_IN_TVS CONSTANT NUMBER := POWER(2,21); -- 2097152
72 /*22*/ G_PS_BAD_TVS_SETUP CONSTANT NUMBER := POWER(2,22); -- 4194304
73 /*23*/ G_PS_MAX_VAL_VIOLATION CONSTANT NUMBER := POWER(2,23); -- 8388608
74 /*24*/ G_PS_MIN_VAL_VIOLATION CONSTANT NUMBER := POWER(2,24); -- 16777216
75 /*25*/ G_PS_BAD_ATTR_GRP_ID CONSTANT NUMBER := POWER(2,25); -- 33554432
76 /*26*/ G_PS_TL_COL_IS_A_UK CONSTANT NUMBER := POWER(2,26); -- 67108864
77 /*27*/ G_PS_PRE_EVENT_FAILED CONSTANT NUMBER := POWER(2,27); -- 134217728
78 /*28*/ G_PS_INVALID_UOM CONSTANT NUMBER := POWER(2,28); -- 268435456
79 /*29*/ G_PS_VAL_RANGE_VIOLATION CONSTANT NUMBER := POWER(2,29); -- 536870912
80 /*30*/ G_PS_INVALID_DATA_LEVEL CONSTANT NUMBER := POWER(2,30); -- 1073741824
81 /*
82 ****** THE ERROR STATUS G_PS_OTHER_ATTRS_INVALID SHOULD ALWAYS BE THE LAST ONE ******
83 */
84 /*30*/ G_PS_OTHER_ATTRS_INVALID CONSTANT NUMBER := POWER(2,31); --
85 --
86 -- DO NOT EXCEED THE LIMIT
87 -- BITAND is failing in error_log for NUMBER > 31
88 --
89
90
91 ----------------
92 -- Procedures --
93 ----------------
94
95 ------------------------------------------------------------------------------------------
96 --API Name : Bulk_Load_User_Attrs_Data
97 --Description : The api would would do all the validations for the rows in interface table
98 -- and updloads the valid rows. For bad rows the error is reported and the row
99 -- is marked as bad.
100
101 --Parameteres required : p_api_version
102 -- p_application_id
103 -- p_attr_group_type
104 -- p_object_name
105 -- p_interface_table_name
106 -- p_data_set_id
107
108 --Return parametere : x_return_status = 1 if no associations exist
109 -- 0 in all other cases
110 --
111 ------------------------------------------------------------------------------------------
112
113 PROCEDURE Bulk_Load_User_Attrs_Data (
114 p_api_version IN NUMBER
115 ,p_application_id IN NUMBER
116 ,p_attr_group_type IN VARCHAR2
117 ,p_object_name IN VARCHAR2
118 ,p_hz_party_id IN VARCHAR2
119 ,p_interface_table_name IN VARCHAR2
120 ,p_data_set_id IN NUMBER
121 ,p_entity_id IN NUMBER DEFAULT NULL
122 ,p_entity_index IN NUMBER DEFAULT NULL
123 ,p_entity_code IN VARCHAR2 DEFAULT NULL
124 ,p_debug_level IN NUMBER DEFAULT 0
125 ,p_init_error_handler IN VARCHAR2 DEFAULT FND_API.G_TRUE
126 ,p_init_fnd_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE
127 ,p_log_errors IN VARCHAR2 DEFAULT FND_API.G_FALSE
128 ,p_add_errors_to_fnd_stack IN VARCHAR2 DEFAULT FND_API.G_FALSE
129 ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
130 ,p_default_dl_view_priv_list IN EGO_COL_NAME_VALUE_PAIR_ARRAY DEFAULT NULL
131 ,p_default_dl_edit_priv_list IN EGO_COL_NAME_VALUE_PAIR_ARRAY DEFAULT NULL
132 ,p_default_view_privilege IN VARCHAR2 DEFAULT NULL
133 ,p_default_edit_privilege IN VARCHAR2 DEFAULT NULL
134 ,p_privilege_predicate_api_name IN VARCHAR2 DEFAULT NULL
135 ,p_related_class_codes_query IN VARCHAR2 DEFAULT '-100'
136 ,p_validate IN BOOLEAN DEFAULT TRUE
137 ,p_do_dml IN BOOLEAN DEFAULT TRUE
138 ,p_do_req_def_valiadtion IN BOOLEAN DEFAULT TRUE
139 ,x_return_status OUT NOCOPY VARCHAR2
140 ,x_errorcode OUT NOCOPY NUMBER
141 ,x_msg_count OUT NOCOPY NUMBER
142 ,x_msg_data OUT NOCOPY VARCHAR2
143 );
144
145
146
147
148 ------------------------------------------------------------------------------------------
149 --API Name : Get_Datatype_Error_Val
150 --Description : The api would return the error code to be added to process status in case
151 -- the datatype of the attribute is not same as the data type of the entered
152 -- data.
153
154 --Parameteres required : p_value_to_convert
155 -- p_datatype
156 ------------------------------------------------------------------------------------------
157 FUNCTION Get_Datatype_Error_Val (
158 p_value_to_convert IN VARCHAR2
159 ,p_datatype IN VARCHAR2
160 ) RETURN NUMBER;
161
162
163
164 ------------------------------------------------------------------------------------------
165 --API Name : Get_Max_Min_Error_Val
166 --Description : The api would return the error code to be added to process status in case
167 -- the value entered for the attribute is not in the limits given in the value
168 -- set.
169
170 --Parameteres required : p_value_to_check
171 -- p_datatype
172 -- p_min_value
173 -- p_max_value
174 ------------------------------------------------------------------------------------------
175 FUNCTION Get_Max_Min_Error_Val (
176 p_value_to_check IN VARCHAR2
177 ,p_datatype IN VARCHAR2
178 ,p_min_value IN VARCHAR2
179 ,p_max_value IN VARCHAR2
180 ) RETURN NUMBER;
181
182
183
184 ------------------------------------------------------------------------------------------
185 --API Name : Get_Date
186 --Description : The api would return the date value of a given string, in case the given
187 -- string is not in the valid format or is not a valid date it returns a null
188
189 --Parameteres required : p_date
190 ------------------------------------------------------------------------------------------
191
192 FUNCTION Get_Date (
193 p_date IN VARCHAR2
194 ,p_format IN VARCHAR2 DEFAULT NULL
195 ) RETURN DATE;
196
197
198
199
200
201
202 ---------------------------------------------------------------------------------------------------------------------
203 --API Name : Apply_Template_On_Intf_Table
204 --Description : The api would apply the attribute values in the template to the interface
205 -- table, this api should be called after the rows in the interface table are
206 -- validated.
207 --Parameteres required : p_api_version
208 -- p_application_id
209 -- p_object_name
210 -- p_interface_table_name
211 -- p_data_set_id
212 -- p_template_id
213 -- p_Classification_code
214 -- p_attr_group_type
215 -- p_target_entity_sql : this parameter should contain a query which would give a list of
216 -- entities on which the template is to be applied and which template
217 -- is to be applied and a rownum column.
218 -- e.g. 'SELECT ROWNUM ENTITYNUMBER,
219 -- Decode(ROWNUM, 1,256678,2,256679,null) INVENTORY_ITEM_ID,
220 -- 204 ORGANIZATION_ID, 14978 ITEM_CATALOG_GROUP_ID, -
221 -- 1 TEMPLATE_ID
222 -- FROM ego_itm_usr_Attr_intrfc WHERE ROWNUM<3';
223 -- p_class_code_hierarchy_sql : this would take in the comma seperated list or a SQL which returns
224 -- the class_codes which might have to be considered while applying the
225 -- template.
226 --
227 -- p_hierarchy_template_tbl_sql: this paramter takes in a wrapper SQL over the template table to tweak
228 -- the values to be applied bby the template. Items uses it to give in the
229 -- SQL which returns the attr values for the template even for parent ICC's
230 --Return parametere : x_return_status = 1 if no associations exist
231 -- 0 in all other cases
232 -- x_return_status
233 -- x_errorcode
234 -- x_msg_count
235 -- x_msg_data
236 --
237 --
238 ----------------------------------------------------------------------------------------------------------------------
239
240
241
242 PROCEDURE Apply_Template_On_Intf_Table(
243 p_api_version IN NUMBER
244 ,p_application_id IN NUMBER
245 ,p_object_name IN VARCHAR2
246 ,p_interface_table_name IN VARCHAR2
247 ,p_data_set_id IN NUMBER
248 ,p_attr_group_type IN VARCHAR2
249 ,p_request_id IN NUMBER
250 ,p_program_application_id IN NUMBER
251 ,p_program_id IN NUMBER
252 ,p_program_update_date IN DATE
253 ,p_current_user_party_id IN NUMBER
254 ,p_target_entity_sql IN VARCHAR2
255 ,p_process_status IN NUMBER DEFAULT G_PS_IN_PROCESS
256 ,p_class_code_hierarchy_sql IN VARCHAR2 DEFAULT NULL
257 ,p_hierarchy_template_tbl_sql IN VARCHAR2 DEFAULT NULL
258 ,x_return_status OUT NOCOPY VARCHAR2
259 ,x_errorcode OUT NOCOPY NUMBER
260 ,x_msg_count OUT NOCOPY NUMBER
261 ,x_msg_data OUT NOCOPY VARCHAR2
262 );
263
264
265
266
267
268 -------------------------------------------------------------------------------------------------------
269 --API Name : Insert_Default_Val_Rows
270 --Description : This API would insert rows with default values for attributes in attribute
271 -- groups not present in the interface table. Here only single row attr groups
272 -- with no required attrs are processed.
273
274 --Parameteres : p_api_version : Api version
275 --Parameteres : p_application_id : Application Id
276 --Parameteres : p_attr_group_type : The type of attr groups to be processed for the given
277 -- data set id.
278 --Parameteres : p_object_name : Object name.
279 --Parameteres : p_interface_table_name : Interface table name for the UDA.
280 --Parameteres : p_data_set_id : Data set to be processed.
281 --Parameteres : p_target_entity_sql : This SQL should return all the entities to be processed,
282 -- it should give the pk's, class code and data level of
283 -- the entity. Sample SQL:
284 -- 'SELECT INVENTORY_ITEM_ID,
285 -- ORGANIZATION_ID,
286 -- ITEM_CATALOG_GROUP_ID,
287 -- REVISION_ID
288 -- FROM MTL_SYSTEM_ITEMS_INTERFACE
289 -- WHERE SET_PROCESS_ID = 2910
290 -- AND PROCESS_FLAG = 7'
291
292 --Parameteres : p_additional_class_Code_query : This sQL should return all the classification
293 -- codes for which attr group associations are to be
294 -- considered, for example this can give all the parent
295 -- class codes for an entity. Sampl SQL:
296 -- SELECT CHILD_CATALOG_GROUP_ID
297 -- FROM EGO_ITEM_CAT_DENORM_HIER
298 -- WHERE PARENT_CATALOG_GROUP_ID = ENTITY.ITEM_CATALOG_GROUP_ID
299 --Parameteres : p_extra_column_names: This parapeter can be used to specify the columns whcih the
300 -- defaulting API should populate while creating attr rows.
301 -- It takes in comma seperated column names with no comma at the
302 -- beginning and the end.
303 --Parameteres : p_extra_column_values:This parapeter would contain the values for the columns passed
304 -- in the parameter p_extra_column_names.
305 -- It takes in comma seperated values with no comma at the
306 -- beginning and the end.
307 -- p_extra_column_names and p_extra_column_values should co exist.
311 PROCEDURE Insert_Default_Val_Rows (
308 --Parameteres : p_commit : Should the changes made be commited in the API
309 ------------------------------------------------------------------------------------------
310
312 p_api_version IN NUMBER
313 ,p_application_id IN NUMBER
314 ,p_attr_group_type IN VARCHAR2
315 ,p_object_name IN VARCHAR2
316 ,p_interface_table_name IN VARCHAR2
317 ,p_data_set_id IN NUMBER
318 ,p_target_entity_sql IN VARCHAR2
319 ,p_attr_groups_to_exclude IN VARCHAR2 DEFAULT NULL
320 ,p_additional_class_Code_query IN VARCHAR2 DEFAULT NULL
321 ,p_extra_column_names IN VARCHAr2 DEFAULT NULL
322 ,p_extra_column_values IN VARCHAR2 DEFAULT NULL
323 ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
324 ,p_process_status IN NUMBER DEFAULT G_PS_IN_PROCESS
325 ,p_comp_seq_id IN NUMBER DEFAULT NULL
326 ,p_bill_seq_id IN NUMBER DEFAULT NULL
327 ,p_structure_type_id IN NUMBER DEFAULT NULL
328 ,p_data_level_column IN VARCHAR2 DEFAULT NULL
329 ,p_datalevel_id IN NUMBER DEFAULT NULL
330 ,p_context_id IN NUMBER DEFAULT NULL
331 ,p_transaction_id IN NUMBER DEFAULT NULL
332 ,x_return_status OUT NOCOPY VARCHAR2
333 ,x_msg_data OUT NOCOPY VARCHAR2
334 );
335
336
337 -------------------------------------------------------------------------------------------------------
338 --API Name : Mark_Unchanged_Attr_Rows
339 --Description : This API would insert rows with default values for attributes in attribute
340 -- groups not present in the interface table. Here only single row attr groups
341 -- with no required attrs are processed.
342
343 --Parameteres : p_api_version : Api version
344 --Parameteres : p_application_id : Application Id
345 --Parameteres : p_attr_group_type : The type of attr groups to be processed for the given
346 -- data set id.
347 --Parameteres : p_object_name : Object name.
348 --Parameteres : p_interface_table_name : Interface table name for the UDA.
349 --Parameteres : p_data_set_id : Data set to be processed.
350 --Parameteres : p_commit : Should the changes made be commited in the API
351 -------------------------------------------------------------------------------------------------------
352
353
354 PROCEDURE Mark_Unchanged_Attr_Rows ( p_api_version IN NUMBER
355 ,p_application_id IN NUMBER
356 ,p_attr_group_type IN VARCHAR2
357 ,p_object_name IN VARCHAR2
358 ,p_interface_table_name IN VARCHAR2
359 ,p_data_set_id IN NUMBER
360 ,p_new_status IN NUMBER
361 ,p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
362 ,x_return_status OUT NOCOPY VARCHAR2
363 ,x_msg_data OUT NOCOPY VARCHAR2
364 );
365
366
367 -- abedajna Bug 6322809
368 function get_num_occur (p_string in varchar2, p_char in varchar2) return number;
369
370 -- abedajna Bug 6322809
371 function get_order_by (p_whereclause in varchar2, p_len in number) return number;
372
373 -- abedajna Bug 6322809
374 function process_whereclause (p_whereclausein in varchar2) return varchar2;
375
376
377
378 END EGO_USER_ATTRS_BULK_PVT;
379