DBA Data[Home] [Help]

PACKAGE BODY: APPS.FEM_WEBADI_FACT_TAB_UTILS_PVT

Source


1 PACKAGE BODY FEM_WEBADI_FACT_TAB_UTILS_PVT AS
2 /* $Header: FEMVADIFCTRUTILB.pls 120.5 2008/02/20 06:48:27 jcliving noship $ */
3 
4 G_OBJECT_DEFINITION_ID      NUMBER       := NULL;
5 G_LEDGER_ID                 NUMBER       := FND_PROFILE.Value_Specific('FEM_LEDGER',FND_GLOBAL.USER_ID);
6 G_OBJECT_ID                 NUMBER       := NULL;
7 G_ENTER_IN_DIMS             VARCHAR2(1)  := NULL;
8 
9 PROCEDURE UPLOAD_FACTOR_TABLE1_INTERFACE(
10 P_RULE_NAME                        VARCHAR2,
11 P_FOLDER_NAME                      VARCHAR2,
12 P_RULE_DESCRIPTION                 VARCHAR2,
13 P_VERSION_NAME                     VARCHAR2,
14 P_START_DATE                       VARCHAR2,
15 P_END_DATE                         VARCHAR2,
16 P_VERSION_DESCRIPTION              VARCHAR2,
17 P_FACTOR_TYPE                      VARCHAR2,
18 P_MATCHING_DIM1                    VARCHAR2,
19 P_HIERARCHY1                       VARCHAR2,
20 P_HIER1_VER                        VARCHAR2,
21 P_LEVEL1                           VARCHAR2,
22 P_HIERARCHY_REL1                   VARCHAR2,
23 P_MATCHING_DIM2                    VARCHAR2,
24 P_HIERARCHY2                       VARCHAR2,
25 P_HIER2_VER                        VARCHAR2,
26 P_LEVEL2                           VARCHAR2,
27 P_HIERARCHY_REL2                   VARCHAR2,
28 P_MATCHING_DIM3                    VARCHAR2,
29 P_HIERARCHY3                       VARCHAR2,
30 P_HIER3_VER                        VARCHAR2,
31 P_LEVEL3                           VARCHAR2,
32 P_HIERARCHY_REL3                   VARCHAR2,
33 P_DISTRIBUTION_DIM                 VARCHAR2,
34 P_FORCE_TO_HUNDRED                 VARCHAR2,
35 P_OBJECT_ACCESS_CODE               VARCHAR2,
36 P_MATCHING_DIM1_MEM                VARCHAR2,
37 P_MATCHING_DIM2_MEM                VARCHAR2,
38 P_MATCHING_DIM3_MEM                VARCHAR2,
39 P_DISTRIBUTION_DIM_MEM             VARCHAR2,
40 P_AMOUNT                           VARCHAR2)
41 IS
42 
43 l_user_id               number      := FND_GLOBAL.USER_ID;
44 l_update_login          number      := FND_GLOBAL.LOGIN_ID;
45 l_row_num               number      := NULL;
46 l_parent_row_num        number      := -1;
47 l_level_num             number      := 0;
48 l_dimension_member      varchar2(30);
49 x_err_code              number;
50 x_num_msg               number;
51 l_vs_combo_id           number      := FEM_DIMENSION_UTIL_PKG.Local_VS_Combo_ID(G_LEDGER_ID,x_err_code,x_num_msg);
52 e_invalid_amount        exception;
53 l_insert_m1             varchar2(1);
54 l_insert_m2             varchar2(1);
55 l_insert_m3             varchar2(1);
56 BEGIN
57 
58 if(P_AMOUNT = 0) THEN
59   raise e_invalid_amount;
60 end if;
61 --------------------------------------------------------- PART 1 ------------------------------------------------------------------------------
62 --- Entering the rule and rule version details in required tables.This block is executed for only once first time the PLSQL API is invoked.
63 -----------------------------------------------------------------------------------------------------------------------------------------------
64 
65 POPULATE_RULE_DETAILS(P_RULE_NAME,P_FOLDER_NAME,P_RULE_DESCRIPTION,P_VERSION_NAME,P_START_DATE,P_END_DATE,P_VERSION_DESCRIPTION,l_vs_combo_id,P_OBJECT_ACCESS_CODE);
66 
67 ------------------------------------------------------ PART 1 ENDS ----------------------------------------------------------------------------
68 
69 --------------------------------------------------------- PART 2 ------------------------------------------------------------------------------
70 --- Entering data into fem_factor_tables and fem_factor_table_dims. This block is executed for only once first time the PLSQL API is invoked.
71 -----------------------------------------------------------------------------------------------------------------------------------------------
72 
73 POPULATE_FACTOR_TABLE_DIMS(P_VERSION_NAME,P_FACTOR_TYPE,P_MATCHING_DIM1,P_HIERARCHY1,P_HIER1_VER,P_LEVEL1,P_HIERARCHY_REL1,P_MATCHING_DIM2,
74                            P_HIERARCHY2,P_HIER2_VER,P_LEVEL2,P_HIERARCHY_REL2,P_MATCHING_DIM3,P_HIERARCHY3,P_HIER3_VER,P_LEVEL3,P_HIERARCHY_REL3,P_DISTRIBUTION_DIM,P_FORCE_TO_HUNDRED);
75 
76 ----------------------------------------------------- PART 2 ENDS -----------------------------------------------------------------------------
77 
78 --------------------------------------------------------- PART 3 ------------------------------------------------------------------------------
79 --- Entering dimension members and factor value in the fem_factor_table_fctrs.
80 -----------------------------------------------------------------------------------------------------------------------------------------------
81 
82 --------------- Entering values for the first matching dimension member. The factor_value will go with distribution dimension as that shall be the leaf dimension member.
83 
84 select decode((select 'Y' from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim1_mem and level_num =0),'Y','N','Y') into l_insert_m1 from dual;
85 
86 if(l_insert_m1 = 'Y') then
87 
88    select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
89 
90    l_dimension_member := p_matching_dim1_mem;
91 
92    insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
93    LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
94    values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,0,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
95 
96 else
97    select row_num into l_row_num from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim1_mem and level_num = 0;
98 end if;
99 
100 l_parent_row_num := l_row_num;
101 l_level_num := l_level_num + 1;
102 
103 --------------- Entering values for the second matching dimension member. The factor_value will go with distribution dimension as that shall be the leaf dimension member.
104 
105 if(p_matching_dim2_mem is not NULL AND length(trim(p_matching_dim2_mem)) <> 0) then
106 
107 select decode((select 'Y' from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim2_mem and level_num = 1 and parent_row_num = l_parent_row_num),'Y','N','Y') into l_insert_m2 from dual;
108 
109 if(l_insert_m2 = 'Y') then
110 
111     select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
112 
113     l_dimension_member := p_matching_dim2_mem;
114 
115     insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
116     LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
117     values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,0,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
118 else
119    select row_num into l_row_num from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim2_mem and level_num = 1 and parent_row_num =   l_parent_row_num;
120 end if;
121 
122 l_parent_row_num := l_row_num;
123 l_level_num := l_level_num + 1;
124 end if;
125 
126 --------------- Entering values for the third matching dimension member. The factor_value will go with distribution dimension as that shall be the leaf dimension member.
127 
128 if(p_matching_dim3_mem is not NULL AND length(trim(p_matching_dim3_mem)) <> 0) then
129 
130 select decode((select 'Y' from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim3_mem and level_num =2 and parent_row_num = l_parent_row_num),'Y','N','Y') into l_insert_m3 from dual;
131 
132 if(l_insert_m3 = 'Y') then
133 
134     select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
135 
136     l_dimension_member := p_matching_dim3_mem;
137 
138     insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
139     LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
140     values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,0,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
141 else
142    select row_num into l_row_num from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim3_mem and level_num = 2 and parent_row_num =   l_parent_row_num;
143 end if;
144 
145 l_parent_row_num := l_row_num;
146 l_level_num := l_level_num + 1;
147 end if;
148 
149 --------------- Entering values for the distribution dimension. The factor_value will go with distribution dimension as that shall be the leaf dimension member.
150 
151 select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
152 
153 l_dimension_member := p_distribution_dim_mem;
154 
155 insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
156 LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
157 values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,p_amount,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
158 
159 --------------------------------------------------------- END PART 3 --------------------------------------------------------------------------
160  EXCEPTION
161  --
162   WHEN DUP_VAL_ON_INDEX THEN
163      FND_MESSAGE.SET_NAME('FEM','FEM_ADI_DUPLICATE_ROWS');
164      APP_EXCEPTION.Raise_Exception ;
165   WHEN e_invalid_amount THEN
166      FND_MESSAGE.SET_NAME('FEM','FEM_NO_FACTORS_ENTERED_TXT');
167      APP_EXCEPTION.Raise_Exception ;
168 
169 END UPLOAD_FACTOR_TABLE1_INTERFACE;
170 
171 PROCEDURE UPLOAD_FACTOR_TABLE2_INTERFACE(
172 P_RULE_NAME                        VARCHAR2,
173 P_FOLDER_NAME                      VARCHAR2,
174 P_RULE_DESCRIPTION                 VARCHAR2,
175 P_VERSION_NAME                     VARCHAR2,
176 P_START_DATE                       VARCHAR2,
177 P_END_DATE                         VARCHAR2,
178 P_VERSION_DESCRIPTION              VARCHAR2,
179 P_FACTOR_TYPE                      VARCHAR2,
180 P_MATCHING_DIM1                    VARCHAR2,
181 P_HIERARCHY1                       VARCHAR2,
182 P_HIER1_VER                        VARCHAR2,
183 P_LEVEL1                           VARCHAR2,
184 P_HIERARCHY_REL1                   VARCHAR2,
185 P_MATCHING_DIM2                    VARCHAR2,
186 P_HIERARCHY2                       VARCHAR2,
187 P_HIER2_VER                        VARCHAR2,
188 P_LEVEL2                           VARCHAR2,
189 P_HIERARCHY_REL2                   VARCHAR2,
190 P_MATCHING_DIM3                    VARCHAR2,
191 P_HIERARCHY3                       VARCHAR2,
192 P_HIER3_VER                        VARCHAR2,
193 P_LEVEL3                           VARCHAR2,
194 P_HIERARCHY_REL3                   VARCHAR2,
195 P_FORCE_TO_HUNDRED                 VARCHAR2,
196 P_OBJECT_ACCESS_CODE               VARCHAR2,
197 P_MATCHING_DIM1_MEM                VARCHAR2,
198 P_MATCHING_DIM2_MEM                VARCHAR2,
199 P_MATCHING_DIM3_MEM                VARCHAR2,
200 P_AMOUNT                           VARCHAR2)
201 IS
202 
203 l_user_id               number      := FND_GLOBAL.USER_ID;
204 l_update_login          number      := FND_GLOBAL.LOGIN_ID;
205 l_row_num               number      := NULL;
206 l_parent_row_num        number      := -1;
207 l_level_num             number      := 0;
208 l_dimension_member      varchar2(30);
209 l_amount                number      := null;
210 x_err_code              number;
211 x_num_msg               number;
212 l_vs_combo_id           number      := FEM_DIMENSION_UTIL_PKG.Local_VS_Combo_ID(G_LEDGER_ID,x_err_code,x_num_msg);
213 l_insert_m1             varchar2(1);
214 l_insert_m2             varchar2(1);
215 l_insert_m3             varchar2(1);
216 
217 e_invalid_amount        exception;
218 BEGIN
219 
220 
221 if(P_AMOUNT = 0) THEN
222  raise e_invalid_amount;
223 END IF;
224 --------------------------------------------------------- PART 1 ------------------------------------------------------------------------------
225 --- Entering the rule and rule version details in required tables.This block is executed for only once first time the PLSQL API is invoked.
226 -----------------------------------------------------------------------------------------------------------------------------------------------
227 
228 POPULATE_RULE_DETAILS(P_RULE_NAME,P_FOLDER_NAME,P_RULE_DESCRIPTION,P_VERSION_NAME,P_START_DATE,P_END_DATE,P_VERSION_DESCRIPTION,l_vs_combo_id,P_OBJECT_ACCESS_CODE);
229 
230 ------------------------------------------------------ PART 1 ENDS ----------------------------------------------------------------------------
231 
232 --------------------------------------------------------- PART 2 ------------------------------------------------------------------------------
233 --- Entering data into fem_factor_tables and fem_factor_table_dims. This block is executed for only once first time the PLSQL API is invoked.
234 -----------------------------------------------------------------------------------------------------------------------------------------------
235 
236 POPULATE_FACTOR_TABLE_DIMS(P_VERSION_NAME,P_FACTOR_TYPE,P_MATCHING_DIM1,P_HIERARCHY1,P_HIER1_VER,P_LEVEL1,P_HIERARCHY_REL1,P_MATCHING_DIM2,
237                            P_HIERARCHY2,P_HIER2_VER,P_LEVEL2,P_HIERARCHY_REL2,P_MATCHING_DIM3,P_HIERARCHY3,P_HIER3_VER,P_LEVEL3,P_HIERARCHY_REL3,NULL,P_FORCE_TO_HUNDRED);
238 
239 ----------------------------------------------------- PART 2 ENDS -----------------------------------------------------------------------------
240 
241 --------------------------------------------------------- PART 3 ------------------------------------------------------------------------------
242 --- Entering dimension members and factor value in the fem_factor_table_fctrs.
243 -----------------------------------------------------------------------------------------------------------------------------------------------
244 
245 --------------- Entering values for the first matching dimension member.
246 
247 select decode((select 'Y' from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim1_mem and level_num =0),'Y','N','Y') into l_insert_m1 from dual;
248 
249 if(l_insert_m1 = 'Y') then
250 
251    select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
252 
253    l_dimension_member := p_matching_dim1_mem;
254 
255    if((p_matching_dim2_mem is null OR length(trim(p_matching_dim2_mem)) =  0) AND (p_matching_dim3_mem is null OR length(trim(p_matching_dim3_mem)) =  0)) then
256     l_amount := p_amount;
257    else
258     l_amount := 0;
259    end if;
260 
261    insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
262    LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
263    values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,l_amount,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
264 else
265    select row_num into l_row_num from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim1_mem and level_num = 0;
266 end if;
267 
268    l_parent_row_num := l_row_num;
269    l_level_num := l_level_num + 1;
270 
271 --------------- Entering values for the second matching dimension member. The factor_value will go with distribution dimension as that shall be the leaf dimension member.
272 
273 if(p_matching_dim2_mem is not NULL AND length(trim(p_matching_dim2_mem)) <> 0) then
274 
275 select decode((select 'Y' from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim2_mem and level_num = 1 and parent_row_num = l_parent_row_num),'Y','N','Y') into l_insert_m2 from dual;
276 
277 if(l_insert_m2 = 'Y') then
278 
279    select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
280 
281    l_dimension_member := p_matching_dim2_mem;
282 
283    if(p_matching_dim3_mem is null OR length(trim(p_matching_dim3_mem)) =  0) then
284     l_amount := p_amount;
285    else
286     l_amount := 0;
287    end if;
288 
289    insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
290    LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
291    values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,l_amount,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
292 else
293    select row_num into l_row_num from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim2_mem and level_num = 1 and parent_row_num =   l_parent_row_num;
294 end if;
295 
296    l_parent_row_num := l_row_num;
297    l_level_num := l_level_num + 1;
298 end if;
299 
300 --------------- Entering values for the third matching dimension member. The factor_value will go with distribution dimension as that shall be the leaf dimension member.
301 
302 if(p_matching_dim3_mem is not NULL AND length(trim(p_matching_dim3_mem)) <> 0) then
306 if(l_insert_m3 = 'Y') then
303 
304 select decode((select 'Y' from fem_factor_table_fctrs where object_definition_id = g_object_definition_id and dim_member = p_matching_dim3_mem and level_num =2 and parent_row_num = l_parent_row_num),'Y','N','Y') into l_insert_m3 from dual;
305 
307 
308    select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
309 
310    l_dimension_member := p_matching_dim3_mem;
311 
312    insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
313    LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
314    values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,p_amount,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
315 
316 end if;
317 end if;
318 
319 --------------------------------------------------------- END PART 3 --------------------------------------------------------------------------
320  EXCEPTION
321  --
322   WHEN DUP_VAL_ON_INDEX THEN
323      FND_MESSAGE.SET_NAME('FEM','FEM_ADI_DUPLICATE_ROWS');
324      APP_EXCEPTION.Raise_Exception ;
325   WHEN e_invalid_amount THEN
326      FND_MESSAGE.SET_NAME('FEM','FEM_NO_FACTORS_ENTERED_TXT');
327      APP_EXCEPTION.Raise_Exception ;
328 
329 END UPLOAD_FACTOR_TABLE2_INTERFACE;
330 
331 PROCEDURE UPLOAD_FACTOR_TABLE3_INTERFACE(
332 P_RULE_NAME                        VARCHAR2,
333 P_FOLDER_NAME                      VARCHAR2,
334 P_RULE_DESCRIPTION                 VARCHAR2,
335 P_VERSION_NAME                     VARCHAR2,
336 P_START_DATE                       VARCHAR2,
337 P_END_DATE                         VARCHAR2,
338 P_VERSION_DESCRIPTION              VARCHAR2,
339 P_FACTOR_TYPE                      VARCHAR2,
340 P_DISTRIBUTION_DIM                 VARCHAR2,
341 P_FORCE_TO_HUNDRED                 VARCHAR2,
342 P_OBJECT_ACCESS_CODE               VARCHAR2,
343 P_DISTRIBUTION_DIM_MEM             VARCHAR2,
344 P_AMOUNT                           VARCHAR2)
345 IS
346 
347 l_user_id               number      := FND_GLOBAL.USER_ID;
348 l_update_login          number      := FND_GLOBAL.LOGIN_ID;
349 l_row_num               number      := NULL;
350 l_parent_row_num        number      := -1;
351 l_level_num             number      := 0;
352 l_dimension_member      varchar2(30);
353 x_err_code              number;
354 x_num_msg               number;
355 l_vs_combo_id           number      := FEM_DIMENSION_UTIL_PKG.Local_VS_Combo_ID(G_LEDGER_ID,x_err_code,x_num_msg);
356 e_invalid_amount         exception;
357 
358 BEGIN
359 
360 if(P_AMOUNT = 0) THEN
361 raise e_invalid_amount;
362 end if;
363 --------------------------------------------------------- PART 1 ------------------------------------------------------------------------------
364 --- Entering the rule and rule version details in required tables.This block is executed for only once first time the PLSQL API is invoked.
365 -----------------------------------------------------------------------------------------------------------------------------------------------
366 
367 POPULATE_RULE_DETAILS(P_RULE_NAME,P_FOLDER_NAME,P_RULE_DESCRIPTION,P_VERSION_NAME,P_START_DATE,P_END_DATE,P_VERSION_DESCRIPTION,l_vs_combo_id,P_OBJECT_ACCESS_CODE);
368 
369 ------------------------------------------------------ PART 1 ENDS ----------------------------------------------------------------------------
370 
371 --------------------------------------------------------- PART 2 ------------------------------------------------------------------------------
372 --- Entering data into fem_factor_tables and fem_factor_table_dims. This block is executed for only once first time the PLSQL API is invoked.
373 -----------------------------------------------------------------------------------------------------------------------------------------------
374 
375 POPULATE_FACTOR_TABLE_DIMS(P_VERSION_NAME,P_FACTOR_TYPE,NULL,NULL,NULL,NULL,NULL,NULL,
376                            NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,P_DISTRIBUTION_DIM,P_FORCE_TO_HUNDRED);
377 
378 ----------------------------------------------------- PART 2 ENDS -----------------------------------------------------------------------------
379 
380 --------------------------------------------------------- PART 3 ------------------------------------------------------------------------------
381 --- Entering dimension members and factor value in the fem_factor_table_fctrs.
382 -----------------------------------------------------------------------------------------------------------------------------------------------
383 
384 --------------- Entering values for the distribution dimension member.
385 
386 select FEM_FACTORS_ROW_NUM_SEQ.NEXTVAL into l_row_num from dual;
387 
388 l_dimension_member := p_distribution_dim_mem;
389 
390 insert into FEM_FACTOR_TABLE_FCTRS(OBJECT_DEFINITION_ID,ROW_NUM,PARENT_ROW_NUM,LEVEL_NUM,DIM_MEMBER,FACTOR_VALUE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,
391 LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
392 values(G_OBJECT_DEFINITION_ID,l_row_num,l_parent_row_num,l_level_num,l_dimension_member,P_AMOUNT,sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
393 
394 
395 --------------------------------------------------------- END PART 3 --------------------------------------------------------------------------
396  EXCEPTION
397  --
398   WHEN DUP_VAL_ON_INDEX THEN
399      FND_MESSAGE.SET_NAME('FEM','FEM_ADI_DUPLICATE_ROWS');
400      APP_EXCEPTION.Raise_Exception ;
401   WHEN e_invalid_amount THEN
402      FND_MESSAGE.SET_NAME('FEM','FEM_NO_FACTORS_ENTERED_TXT');
403      APP_EXCEPTION.Raise_Exception ;
404 
405 END UPLOAD_FACTOR_TABLE3_INTERFACE;
409 P_FOLDER_NAME                      VARCHAR2,
406 
407 PROCEDURE POPULATE_RULE_DETAILS(
408 P_RULE_NAME                        VARCHAR2,
410 P_RULE_DESCRIPTION                 VARCHAR2,
411 P_VERSION_NAME                     VARCHAR2,
412 P_START_DATE                       VARCHAR2,
413 P_END_DATE                         VARCHAR2,
414 P_VERSION_DESCRIPTION              VARCHAR2,
415 P_VS_COMBO_ID                      VARCHAR2,
416 P_OBJECT_ACCESS_CODE               VARCHAR2)
417 IS
418 
419 l_old_rule              varchar2(1) := NULL;
420 l_object_type_code      varchar2(30):= 'FACTOR_TABLE';
421 l_folder_id             number;
422 l_local_vs_combo_id     number      := p_vs_combo_id;
423 l_user_id               number      := FND_GLOBAL.USER_ID;
424 l_object_access_code    varchar2(30);
425 l_object_origin_code    varchar2(30):= 'USER';
426 l_update_login          number      := FND_GLOBAL.LOGIN_ID;
427 
428 BEGIN
429   select folder_id into l_folder_id from fem_folders_vl where folder_name = P_FOLDER_NAME;
430 
431   select lookup_code into l_object_access_code from fem_lookups where lookup_type = 'FEM_EDIT_PERMISSION_DSC' and meaning = p_object_access_code;
432 
433   select decode((select 'Y' from fem_object_catalog_vl where object_name = p_rule_name),'Y','Y',NULL) into l_old_rule from dual;
434 
435   IF(l_old_rule is NULL) THEN
436        select FEM_OBJECT_ID_SEQ.NEXTVAL into G_OBJECT_ID from dual;
437 
438        INSERT INTO FEM_OBJECT_CATALOG_B(OBJECT_ID,OBJECT_TYPE_CODE,FOLDER_ID,LOCAL_VS_COMBO_ID,CREATION_DATE,CREATED_BY,OBJECT_ACCESS_CODE,OBJECT_ORIGIN_CODE,LAST_UPDATED_BY,
439                                      LAST_UPDATE_DATE,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
440                                      VALUES(G_OBJECT_ID,l_object_type_code,l_folder_id,l_local_vs_combo_id,sysdate,l_user_id,l_object_access_code,
441                                      l_object_origin_code,l_user_id,sysdate,l_update_login,0);
442 
443        INSERT INTO FEM_OBJECT_CATALOG_TL(OBJECT_ID,OBJECT_NAME,LANGUAGE,SOURCE_LANG,DESCRIPTION,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN)
444                                        SELECT G_OBJECT_ID,P_RULE_NAME,LANGUAGE_CODE,'US',P_RULE_DESCRIPTION,l_user_id,sysdate,l_user_id,sysdate,l_update_login
445                                        FROM FND_LANGUAGES WHERE INSTALLED_FLAG IN ('I','B');
446 
447 
448        select FEM_OBJECT_DEFINITION_ID_SEQ.NEXTVAL into G_OBJECT_DEFINITION_ID from dual;
449 
450        INSERT INTO FEM_OBJECT_DEFINITION_B(OBJECT_DEFINITION_ID,OBJECT_ID,EFFECTIVE_START_DATE,EFFECTIVE_END_DATE,OBJECT_ORIGIN_CODE,CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,
451                                         LAST_UPDATE_DATE,APPROVAL_STATUS_CODE,OLD_APPROVED_COPY_FLAG,OLD_APPROVED_COPY_OBJ_DEF_ID,APPROVED_BY,APPROVAL_DATE,LAST_UPDATE_LOGIN,
452                                         OBJECT_VERSION_NUMBER)
453                                         VALUES(G_OBJECT_DEFINITION_ID,G_OBJECT_ID,to_date(P_START_DATE,'DD-MM-RRRR'),to_date(P_END_DATE,'DD-MM-RRRR'),l_object_origin_code,sysdate,
454                                         l_user_id,l_user_id,sysdate,'NOT_APPLICABLE','N',NULL,NULL,NULL,l_update_login,0);
455 
456        INSERT INTO FEM_OBJECT_DEFINITION_TL(OBJECT_DEFINITION_ID,OBJECT_ID,LANGUAGE,SOURCE_LANG,OLD_APPROVED_COPY_FLAG,DISPLAY_NAME,DESCRIPTION,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,
457                                         LAST_UPDATE_DATE,LAST_UPDATE_LOGIN)
458                                         SELECT G_OBJECT_DEFINITION_ID,G_OBJECT_ID,LANGUAGE_CODE,'US','N',P_VERSION_NAME,P_VERSION_DESCRIPTION,l_user_id,sysdate,l_user_id,sysdate,
459                                         l_update_login FROM FND_LANGUAGES WHERE INSTALLED_FLAG IN ('I','B');
460        G_ENTER_IN_DIMS := 'Y';
461 
462   ELSE
463 
464        select object_id into G_OBJECT_ID from fem_object_catalog_vl where object_name = p_rule_name;
465        select object_definition_id into G_OBJECT_DEFINITION_ID from fem_object_definition_vl where object_id = G_OBJECT_ID and display_name = p_version_name;
466        G_ENTER_IN_DIMS := 'N';
467   END IF;
468 
469 END POPULATE_RULE_DETAILS;
470 
471 PROCEDURE POPULATE_FACTOR_TABLE_DIMS(
472 P_VERSION_NAME                     VARCHAR2,
473 P_FACTOR_TYPE                      VARCHAR2,
474 P_MATCHING_DIM1                    VARCHAR2,
475 P_HIERARCHY1                       VARCHAR2,
476 P_HIER1_VER                        VARCHAR2,
477 P_LEVEL1                           VARCHAR2,
478 P_HIERARCHY_REL1                   VARCHAR2,
479 P_MATCHING_DIM2                    VARCHAR2,
480 P_HIERARCHY2                       VARCHAR2,
481 P_HIER2_VER                        VARCHAR2,
482 P_LEVEL2                           VARCHAR2,
483 P_HIERARCHY_REL2                   VARCHAR2,
484 P_MATCHING_DIM3                    VARCHAR2,
485 P_HIERARCHY3                       VARCHAR2,
486 P_HIER3_VER                        VARCHAR2,
487 P_LEVEL3                           VARCHAR2,
488 P_HIERARCHY_REL3                   VARCHAR2,
489 P_DISTRIBUTION_DIM                 VARCHAR2,
490 P_FORCE_TO_HUNDRED                 VARCHAR2)
491 IS
492 
493 l_user_id               number  := FND_GLOBAL.USER_ID;
494 l_update_login          number  := FND_GLOBAL.LOGIN_ID;
495 l_factor_type_code      varchar2(50);
496 l_dim_id                number  := NULL;
497 l_hier_obj_id           number  := NULL;
498 l_hier_obj_def_id       number  := NULL;
499 l_level_id              number  := NULL;
500 l_level_num             number  := 0;
501 l_hierarchy_rel         varchar2(50);
502 l_force_to_hundred      varchar2(10);
503 
504 BEGIN
505 
509 
506    select lookup_code into l_factor_type_code from fem_lookups where lookup_type = 'FEM_FACTOR_TABLE_TYPES_DSC' and meaning = p_factor_type;
507 
508    if(G_ENTER_IN_DIMS = 'Y') THEN
510    insert into FEM_FACTOR_TABLES(OBJECT_DEFINITION_ID,
511                                  FACTOR_TYPE,
512                                  CREATION_DATE,
513                                  CREATED_BY,
514                                  LAST_UPDATED_BY,
515                                  LAST_UPDATE_DATE,
516                                  LAST_UPDATE_LOGIN,
517                                  OBJECT_VERSION_NUMBER)
518                                  values(
519                                  G_OBJECT_DEFINITION_ID,
520                                  l_factor_type_code,
521                                  sysdate,
522                                  l_user_id,
523                                  l_user_id,
524                                  sysdate,
525                                  l_update_login,
526                                  0);
527 
528    if(l_factor_type_code <> 'DISTRIBUTE') then
529 
530      -- for factor type 'MATCH' and 'MATCH_AND_DISTRIBUTE' p_match_dim1 parameter will never be null/blank/empty
531         select dimension_id into l_dim_id from fem_dimensions_vl where dimension_name = p_matching_dim1;
532 
533          if(p_hierarchy1 is not null AND length(trim(p_hierarchy1)) <> 0) then ---------------------- If p_hierarchy1 is not null then p_hier1_ver and p_level1 will also be not null
534             select object_id into l_hier_obj_id from fem_object_catalog_vl where object_name = p_hierarchy1 and object_type_code = 'HIERARCHY';
535             select object_definition_id into l_hier_obj_def_id from fem_object_definition_vl where display_name = p_hier1_ver and object_id = l_hier_obj_id;
536             select dimension_group_id into l_level_id from fem_dimension_grps_vl where dimension_group_name =  p_level1;
537             select lookup_code into l_hierarchy_rel from fem_lookups where lookup_type = 'FEM_COND_HIER_RELATIONS' and meaning = p_hierarchy_rel1;
538          else
539             l_hier_obj_id := null;
540             l_hier_obj_def_id := null;
541             l_level_id := null;
542             l_hierarchy_rel :=null;
543           end if;
544 
545        insert into fem_factor_table_dims(OBJECT_DEFINITION_ID,LEVEL_NUM,DIMENSION_ID,DIM_USAGE_CODE,FORCE_PERCENT_FLAG,HIER_OBJECT_ID,HIER_OBJ_DEF_ID,HIER_GROUP_ID,HIER_RELATION_CODE,
546                                          CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
547                                   values(G_OBJECT_DEFINITION_ID,l_level_num,l_dim_id,'MATCH',NULL,l_hier_obj_id,l_hier_obj_def_id,l_level_id,l_hierarchy_rel,
548                                          sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
549        l_level_num := l_level_num + 1;
550 
551      if(p_matching_dim2 is not null AND length(trim(p_matching_dim2)) <> 0) then
552        select dimension_id into l_dim_id from fem_dimensions_vl where dimension_name = p_matching_dim2;
553 
554           if(p_hierarchy2 is not null AND length(trim(p_hierarchy2)) <> 0) then
555             select object_id into l_hier_obj_id from fem_object_catalog_vl where object_name = p_hierarchy2 and object_type_code = 'HIERARCHY';
556             select object_definition_id into l_hier_obj_def_id from fem_object_definition_vl where display_name = p_hier2_ver and object_id = l_hier_obj_id;
557             select dimension_group_id into l_level_id from fem_dimension_grps_vl where dimension_group_name =  p_level2;
558             select lookup_code into l_hierarchy_rel from fem_lookups where lookup_type = 'FEM_COND_HIER_RELATIONS' and meaning = p_hierarchy_rel2;
559           else
560             l_hier_obj_id := null;
561             l_hier_obj_def_id := null;
562             l_level_id := null;
563             l_hierarchy_rel :=null;
564           end if;
565 
566        insert into fem_factor_table_dims(OBJECT_DEFINITION_ID,LEVEL_NUM,DIMENSION_ID,DIM_USAGE_CODE,FORCE_PERCENT_FLAG,HIER_OBJECT_ID,HIER_OBJ_DEF_ID,HIER_GROUP_ID,HIER_RELATION_CODE,
567                                          CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
568                                   values(G_OBJECT_DEFINITION_ID,l_level_num,l_dim_id,'MATCH',NULL,l_hier_obj_id,l_hier_obj_def_id,l_level_id,l_hierarchy_rel,
569                                          sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
570        l_level_num := l_level_num + 1;
571      end if;
572 
573      if(p_matching_dim3 is not null AND length(trim(p_matching_dim3)) <> 0) then
574         select dimension_id into l_dim_id from fem_dimensions_vl where dimension_name = p_matching_dim3;
575 
576          if(p_hierarchy3 is not null AND length(trim(p_hierarchy3)) <> 0) then
577             select object_id into l_hier_obj_id from fem_object_catalog_vl where object_name = p_hierarchy3 and object_type_code = 'HIERARCHY';
578             select object_definition_id into l_hier_obj_def_id from fem_object_definition_vl where display_name = p_hier3_ver and object_id = l_hier_obj_id;
579             select dimension_group_id into l_level_id from fem_dimension_grps_vl where dimension_group_name =  p_level3;
580             select lookup_code into l_hierarchy_rel from fem_lookups where lookup_type = 'FEM_COND_HIER_RELATIONS' and meaning = p_hierarchy_rel3;
581          else
582             l_hier_obj_id := null;
583             l_hier_obj_def_id := null;
584             l_level_id := null;
585             l_hierarchy_rel :=null;
586          end if;
587 
588         insert into fem_factor_table_dims(OBJECT_DEFINITION_ID,LEVEL_NUM,DIMENSION_ID,DIM_USAGE_CODE,FORCE_PERCENT_FLAG,HIER_OBJECT_ID,HIER_OBJ_DEF_ID,HIER_GROUP_ID,HIER_RELATION_CODE,
589                                          CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
590                                   values(G_OBJECT_DEFINITION_ID,l_level_num,l_dim_id,'MATCH',NULL,l_hier_obj_id,l_hier_obj_def_id,l_level_id,l_hierarchy_rel,
591                                          sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
592         l_level_num := l_level_num + 1;
593       end if;
594 
595     end if; --- End for factor_type check
596 
597     if(l_factor_type_code <> 'MATCH') then
598 
599        select lookup_code into l_force_to_hundred from fem_lookups where lookup_type = 'FEM_WEBADI_YES_NO' and meaning = p_force_to_hundred;
600 
601        if(p_distribution_dim is not null AND length(trim(p_distribution_dim)) <> 0) then
602           select dimension_id into l_dim_id from fem_dimensions_vl where dimension_name = p_distribution_dim;
603           l_hier_obj_id := null;
604           l_hier_obj_def_id := null;
605           l_level_id := null;
606           insert into fem_factor_table_dims(OBJECT_DEFINITION_ID,LEVEL_NUM,DIMENSION_ID,DIM_USAGE_CODE,FORCE_PERCENT_FLAG,HIER_OBJECT_ID,HIER_OBJ_DEF_ID,HIER_GROUP_ID,HIER_RELATION_CODE,
607                                          CREATION_DATE,CREATED_BY,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER)
608                                   values(G_OBJECT_DEFINITION_ID,l_level_num,l_dim_id,'DISTRIBUTE',l_force_to_hundred,l_hier_obj_id,l_hier_obj_def_id,l_level_id,null,
609                                          sysdate,l_user_id,l_user_id,sysdate,l_update_login,0);
610         end if;
611 
612     end if;  ---- End for factor_type check
613 
614    END IF;
615 
616 END POPULATE_FACTOR_TABLE_DIMS;
617 
618 END FEM_WEBADI_FACT_TAB_UTILS_PVT;