DBA Data[Home] [Help]

PACKAGE BODY: APPS.GCS_CONS_ENG_UTILITY_PKG

Source


1 PACKAGE BODY GCS_CONS_ENG_UTILITY_PKG as
2 /* $Header: gcs_eng_utilb.pls 120.15 2007/09/27 21:47:06 rguerrer noship $ */
3 
4    g_api	VARCHAR2(80)	:=	'gcs.plsql.GCS_CONS_ENG_UTILITY_PKG';
5 
6    PROCEDURE get_cons_entity_wf_info (itemtype			IN VARCHAR2,
7    				      itemkey			IN VARCHAR2,
8    				      cons_entity_wf_info	IN OUT NOCOPY r_cons_entity_wf_info)
9 
10    IS
11 
12    BEGIN
13 
14      cons_entity_wf_info.consolidation_hierarchy	:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CONS_HIERARCHY', FALSE);
15      cons_entity_wf_info.consolidation_entity		:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CONS_ENTITY', FALSE);
16      cons_entity_wf_info.run_identifier			:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'RUN_IDENTIFIER', FALSE);
17      cons_entity_wf_info.cal_period_id			:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'CAL_PERIOD', FALSE);
18      cons_entity_wf_info.cal_period_end_date		:=	TO_DATE(WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'CAL_PERIOD_END_DATE', FALSE), 'DD-MM-RR');
19      cons_entity_wf_info.balance_type_code		:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'BALANCE_TYPE_CODE', FALSE);
20      cons_entity_wf_info.run_detail_id			:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'RUN_DETAIL_ID', FALSE);
21      cons_entity_wf_info.process_method			:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'PROCESS_METHOD', FALSE);
22      cons_entity_wf_info.num_of_categories		:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'NUM_OF_CATEGORIES', FALSE);
23      cons_entity_wf_info.curr_category_num		:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
24      cons_entity_wf_info.prior_run_identifier		:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'PRIOR_RUN_NAME', FALSE);
25      cons_entity_wf_info.xlate_entry_id			:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'XLATE_ENTRY_ID', FALSE);
26      cons_entity_wf_info.request_id			:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CONC_REQUEST_ID', FALSE);
27      --Bugfix 5017120: Added support for additional data types
28      cons_entity_wf_info.source_dataset_code            :=      WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'SOURCE_DATASET_CODE', FALSE);
29      cons_entity_wf_info.hierarchy_dataset_code         :=      WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'HIERARCHY_DATASET_CODE', FALSE);
30      -- Bugfix 5569522: Added for business process kick-off support
31      cons_entity_wf_info.analysis_cycle_id       := WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'ANALYSIS_CYCLE_ID', FALSE);
32    END get_cons_entity_wf_info;
33 
34    PROCEDURE get_oper_entity_wf_info (itemtype			IN VARCHAR2,
35    				      itemkey			IN VARCHAR2,
36    				      cons_entity_wf_info	IN OUT NOCOPY r_cons_entity_wf_info,
37    				      oper_entity_wf_info	IN OUT NOCOPY r_oper_entity_wf_info)
38 
39    IS
40 
41    BEGIN
42       oper_entity_wf_info.parent_workflow_key		:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'PARENT_WORKFLOW_KEY', FALSE);
43       oper_entity_wf_info.operating_entity		:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'OPER_ENTITY', FALSE);
44       oper_entity_wf_info.cons_relationship_id		:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CONS_RELATIONSHIP_ID', FALSE);
45       oper_entity_wf_info.run_detail_id			:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'RUN_DETAIL_ID', FALSE);
46       oper_entity_wf_info.translation_required		:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'TRANSLATION_REQUIRED', FALSE);
47       oper_entity_wf_info.xlate_entry_id		:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'XLATE_ENTRY_ID', FALSE);
48 
49       get_cons_entity_wf_info('GCSENGNE', oper_entity_wf_info.parent_workflow_key, cons_entity_wf_info);
50    END get_oper_entity_wf_info;
51 
52    PROCEDURE update_entry_headers(p_run_name			IN VARCHAR2,
53    				  p_entry_id			IN NUMBER)
54 
55    IS PRAGMA AUTONOMOUS_TRANSACTION;
56 
57    BEGIN
58     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
59       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.UPDATE_ENTRY_HEADERS.begin', '<<Enter>>');
60     END IF;
61 
62      UPDATE gcs_entry_headers
63      SET    processed_run_name		=	p_run_name,
64      	    disabled_flag		=	'Y',
65 	    last_update_date		=	sysdate,
66 	    last_updated_by		=	FND_GLOBAL.USER_ID,
67 	    last_update_login		=	FND_GLOBAL.LOGIN_ID
68      WHERE  entry_id			=	p_entry_id;
69 
70      COMMIT;
71 
72     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
73       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.UPDATE_ENTRY_HEADERS.end', '<<Exit>>');
74     END IF;
75    END update_entry_headers;
76 
77    PROCEDURE submit_xml_ntf_program(p_run_name                    IN VARCHAR2,
78                                     p_cons_entity_id		  IN NUMBER,
79 				    p_category_code		  IN VARCHAR2,
80 				    p_child_entity_id		  IN NUMBER	DEFAULT NULL,
81 				    p_run_detail_id		  IN NUMBER 	DEFAULT NULL)
82    IS PRAGMA AUTONOMOUS_TRANSACTION;
83 
84      l_request_id NUMBER(15);
85 
86    BEGIN
87     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL         <=      FND_LOG.LEVEL_PROCEDURE) THEN
88       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.SUBMIT_XML_NTF_PROGRAM.begin', '<<Enter>>');
89     END IF;
90 
91     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL		<=	FND_LOG.LEVEL_STATEMENT) THEN
92       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.SUBMIT_XML_NTF_PROGRAM', 'Run Name		: 	' || p_run_name);
93       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.SUBMIT_XML_NTF_PROGRAM', 'Consoliation Entity 	:	' || p_cons_entity_id);
94       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.SUBMIT_XML_NTF_PROGRAM', 'Category		:	' || p_category_code);
95       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.SUBMIT_XML_NTF_PROGRAM', 'Child Entity		:	' || p_child_entity_id);
96       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.SUBMIT_XML_NTF_PROGRAM', 'Run Detail ID	:	' || p_run_detail_id);
97     END IF;
98 
99     fnd_file.put_line(fnd_file.log, 'Within submit_xml_ntf_program');
100 
101     l_request_id :=     fnd_request.submit_request(
102                                         application     => 'GCS',
103                                         program         => 'FCH_XML_NTF_UTILITY',
104                                         sub_request     => FALSE,
105 					argument1	=> 'CONS_PROCESS',
106                                         argument2       => p_run_name,
107                                         argument3       => p_cons_entity_id,
108                                         argument4       => p_category_code,
109                                         argument5       => p_child_entity_id,
110                                         argument6       => p_run_detail_id);
111 
112     fnd_file.put_line(fnd_file.log, 'Submitted request id : ' || l_request_id);
113 
114 
115     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL         <=      FND_LOG.LEVEL_PROCEDURE) THEN
116       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.SUBMIT_XML_NTF_PROGRAM.end', '<<Exit>>');
117     END IF;
118 
119     COMMIT;
120 
121    END submit_xml_ntf_program;
122 
123    PROCEDURE execute_module (module_code			IN VARCHAR2,
124    			     p_parameter_list			IN OUT NOCOPY gcs_cons_eng_utility_pkg.r_module_parameters,
125    			     p_item_key				IN VARCHAR2)
126 
127    IS PRAGMA AUTONOMOUS_TRANSACTION;
128 
129      l_entry_id		NUMBER(15);
130      l_stat_entry_id	NUMBER(15);
131 
132    BEGIN
133 
134     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
135       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.EXECUTE_MODULE.begin', '<<Enter for item key : ' || p_item_key || '>>');
136     END IF;
137     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
138       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Module Code		: ' || module_code);
139     END IF;
140 
141     IF (module_code = 'TRANSLATION') THEN
142        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
143         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Entry ID	       : ' || p_parameter_list.entry_id);
144         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Relationship      : ' || p_parameter_list.cons_relationship_id);
145         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Xlate Mode	       : ' || p_parameter_list.xlate_mode);
146         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Balance Type Code : ' || p_parameter_list.balance_type_code);
147         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Xlate Entry ID    : ' || p_parameter_list.xlate_entry_id);
148        END IF;
149 
150         BEGIN
151   	  gcs_translation_pkg.translate(p_parameter_list.errbuf,
152     				        p_parameter_list.retcode,
153     				        p_parameter_list.cal_period_id,
154     				        p_parameter_list.cons_relationship_id,
155     				        p_parameter_list.balance_type_code,
156                                         p_parameter_list.hierarchy_dataset_code,
157     				        p_parameter_list.xlate_entry_id);
158          EXCEPTION
159            WHEN OTHERS THEN
160              p_parameter_list.errbuf	:= 	SQLERRM;
161          END;
162 
163         --Bugfix 4205986 : Set the Entry ID to Null if an error occurred during translation
164         IF (p_parameter_list.errbuf IS NOT NULL) THEN
165           p_parameter_list.xlate_entry_id := NULL;
166         END IF;
167 
168   	gcs_cons_eng_run_dtls_pkg.update_entry_headers(
169   					p_run_detail_id			=>	p_parameter_list.run_detail_id,
170   					p_entry_id			=>	p_parameter_list.xlate_entry_id,
171   					p_request_error_code		=>	NVL(p_parameter_list.errbuf, 'COMPLETED'),
172   					p_bp_request_error_code		=>	NVL(p_parameter_list.errbuf, 'COMPLETED'));
173 
174      ELSIF (module_code = 'DATAPREPARATION') THEN
175 
176        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
177         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Hierarchy 	       : ' || p_parameter_list.hierarchy_id);
178         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Entity 	       : ' || p_parameter_list.child_entity_id);
179         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Cal Period        : ' || p_parameter_list.cal_period_id);
180         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Run Detail        : ' || p_parameter_list.run_detail_id);
181         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Cons Relationship : ' || p_parameter_list.cons_relationship_id);
182         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Balance Type Code : ' || p_parameter_list.balance_type_code);
183        END IF;
184 
185       	gcs_data_prep_pkg.gcs_main_data_prep (
186        				x_errbuf                  => p_parameter_list.errbuf,
187        				x_retcode                 => p_parameter_list.retcode,
188        				p_hierarchy_id            => p_parameter_list.hierarchy_id,
189        				p_entity_id               => p_parameter_list.child_entity_id,
190       	 			p_target_cal_period_id    => p_parameter_list.cal_period_id,
191        				p_run_detail_id		  => p_parameter_list.run_detail_id,
192        				p_cons_rel_id             => p_parameter_list.cons_relationship_id,
193        				p_balance_type_code       => p_parameter_list.balance_type_code,
194                                 p_source_dataset_code     => p_parameter_list.source_dataset_code);
195 
196        --Bugfix 3666700: Removed call to insert intercompany transactions into temp table
197        --Bugfix 4307627: Removed call to update status for data preparation
198 
199      ELSIF (module_code 	=	'BALANCES_PROCESSOR') THEN
200        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
201     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Run Name		:	' ||	p_parameter_list.run_name);
202     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Cal Period ID 	:	' || 	p_parameter_list.cal_period_id);
203     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Category Code 	:	' || 	p_parameter_list.category_code);
204     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Hierarchy Id	:	' ||	p_parameter_list.hierarchy_id);
205     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Balance Type Code	:	' || 	p_parameter_list.balance_type_code);
206     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Consolidation Entity ID :	' ||	p_parameter_list.cons_entity_id);
207     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Child Entity ID	:	' ||	p_parameter_list.child_entity_id);
208     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'BP Undo Prior	:	' ||	p_parameter_list.bp_undo_prior);
209     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Run Detail ID	:	' ||	p_parameter_list.run_detail_id);
210     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'BP Post Xlate	:	' ||	p_parameter_list.bp_post_xlate);
211     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Entry ID		:	' ||	p_parameter_list.entry_id);
212     	 FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'BP Mode		:	' ||	p_parameter_list.bp_mode);
213        END IF;
214 
215       gcs_dyn_fem_posting_pkg.gcs_fem_post(
216     					errbuf			=>	p_parameter_list.errbuf,
217     					retcode			=>	p_parameter_list.retcode,
218     					p_run_name		=>	p_parameter_list.run_name,
219     					p_cal_period_id		=>	p_parameter_list.cal_period_id,
220     					p_category_code		=>	p_parameter_list.category_code,
221     					p_hierarchy_id		=>	p_parameter_list.hierarchy_id,
222     					p_balance_type_code	=>	p_parameter_list.balance_type_code,
223     					p_cons_entity_id	=>	p_parameter_list.cons_entity_id,
224     					p_child_entity_id	=>	p_parameter_list.child_entity_id,
225     					p_undo			=>	p_parameter_list.bp_undo_prior,
226     					p_run_detail_id		=>	p_parameter_list.run_detail_id,
227     					p_xlate			=>	p_parameter_list.bp_post_xlate,
228     					p_entry_id		=>	p_parameter_list.entry_id,
229     					p_mode			=>	p_parameter_list.bp_mode,
230                                         p_hier_dataset_code     =>      p_parameter_list.hierarchy_dataset_code);
231      ELSIF (module_code		=	'AGGREGATION') THEN
232 
233        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
234         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Hierarchy 	       : ' || p_parameter_list.hierarchy_id);
235         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Entity 	       : ' || p_parameter_list.cons_entity_id);
236         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Cal Period        : ' || p_parameter_list.cal_period_id);
237         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Run Detail        : ' || p_parameter_list.run_detail_id);
238         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Cons Relationship : ' || p_parameter_list.cons_relationship_id);
239         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Balance Type Code : ' || p_parameter_list.balance_type_code);
240         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'End Date	       : ' || p_parameter_list.period_end_date);
241         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Stat Required     : ' || p_parameter_list.stat_required);
242        END IF;
243 
244        gcs_aggregation_pkg.aggregate(	p_run_detail_id		=>	p_parameter_list.run_detail_id,
245     					p_hierarchy_id		=>	p_parameter_list.hierarchy_id,
246     				  	p_relationship_id	=>	p_parameter_list.cons_relationship_id,
247     				  	p_cons_entity_id	=>	p_parameter_list.cons_entity_id,
248     				  	p_cal_period_id		=>	p_parameter_list.cal_period_id,
249     				  	p_period_end_date	=>	p_parameter_list.period_end_date,
250     				  	p_balance_type_code	=>	p_parameter_list.balance_type_code,
251     				  	p_stat_required		=>	p_parameter_list.stat_required,
252     				  	p_errbuf		=>	p_parameter_list.errbuf,
253     				  	p_retcode		=>	p_parameter_list.retcode,
254                                         p_hier_dataset_code     =>      p_parameter_list.hierarchy_dataset_code);
255 
256 	gcs_cons_eng_run_dtls_pkg.update_entry_headers(
257 					p_run_detail_id			=>	p_parameter_list.run_detail_id,
258 					p_request_error_code		=>	NVL(p_parameter_list.errbuf, 'COMPLETED'),
259 					p_bp_request_error_code		=>	NVL(p_parameter_list.errbuf, 'COMPLETED'));
260 
261      ELSIF (module_code		=	'INTERCOMPANY') THEN
262 
263        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
264         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Hierarchy 		: ' || p_parameter_list.hierarchy_id);
265         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Entity		: ' || p_parameter_list.child_entity_id);
266         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Cal Period  	: ' || p_parameter_list.cal_period_id);
267         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Intercompany Mode	: ' || p_parameter_list.intercompany_mode);
268         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Currency Code	: ' || p_parameter_list.currency_code);
269         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Run Identifier	: ' || p_parameter_list.run_name);
270        END IF;
271 
272 
273        gcs_interco_processing_pkg.interco_process_main
274      	(
275        	 p_hierarchy_id		=>	p_parameter_list.hierarchy_id,
276        	 p_cal_period_id	=>	p_parameter_list.cal_period_id,
277          p_balance_type		=>	p_parameter_list.balance_type_code,
278        	 p_entity_id		=>	p_parameter_list.child_entity_id,
279          p_elim_mode		=>	p_parameter_list.intercompany_mode,
280        	 p_currency_code	=>	p_parameter_list.currency_code,
281        	 p_run_name		=>	p_parameter_list.run_name,
282          p_translation_required =>      p_parameter_list.bp_post_xlate,
283        	 x_errbuf		=>	p_parameter_list.errbuf,
284          x_retcode		=>	p_parameter_list.retcode);
285 
286      ELSIF (module_code		=	'RULES_PROCESSOR') THEN
287 
288        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
289         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Event Category  : ' || p_parameter_list.rp_parameters.eventCategory);
290         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Data Set Code   : ' || p_parameter_list.rp_parameters.datasetCode);
291         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Parent Entity   : ' || p_parameter_list.rp_parameters.parentEntity);
292         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Child Entity    : ' || p_parameter_list.rp_parameters.childEntity);
293         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Elim Entity     : ' || p_parameter_list.rp_parameters.elimsEntity);
294         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Currency  	     : ' || p_parameter_list.rp_parameters.currencyCode);
295         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Event Type	     : ' || p_parameter_list.rp_parameters.eventType);
296         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Rule Id 	     : ' || p_parameter_list.elim_rule_id);
297         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Relationship    : ' || p_parameter_list.rp_parameters.relationship);
298         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'To Percent	     : ' || p_parameter_list.rp_rule_data.toPercent);
299        END IF;
300 
301        p_parameter_list.retcode := gcs_rules_processor.process_rule(
302        					p_rule_id	=>	p_parameter_list.elim_rule_id,
303        					p_stat_flag	=>	'N',
304        					p_context	=>	p_parameter_list.rp_parameters,
305        					p_rule_data	=>	p_parameter_list.rp_rule_data);
306 
307        --Bugfix 3920448 : Remove update of run details for fules processor
308 
309      ELSIF (module_code		=	'PERIOD_INITIALIZATION') THEN
310 
311        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
312         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Run Name	       : ' || p_parameter_list.run_name);
313         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Hierarchy	       : ' || p_parameter_list.hierarchy_id);
314         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Child Entity      : ' || p_parameter_list.child_entity_id);
315         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Calendar Period   : ' || p_parameter_list.cal_period_id);
316         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Balance Type Code : ' || p_parameter_list.balance_type_code);
317         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Relationship Id   : ' || p_parameter_list.cons_relationship_id);
318        END IF;
319 
320         gcs_period_init_pkg.create_period_init_entries(
321      	  p_errbuf			=>	p_parameter_list.errbuf,
322      	  p_retcode			=>	p_parameter_list.retcode,
323      	  p_run_name			=>	p_parameter_list.run_name,
324      	  p_hierarchy_id		=>	p_parameter_list.hierarchy_id,
325 	  p_entity_id			=>	p_parameter_list.child_entity_id,
326 	  p_cal_period_id		=>	p_parameter_list.cal_period_id,
327   	  p_balance_type_code		=>	p_parameter_list.balance_type_code,
328   	  p_relationship_id		=>	p_parameter_list.cons_relationship_id,
329 	  p_cons_entity_id		=>	p_parameter_list.cons_entity_id,
330 	  p_translation_required	=>	p_parameter_list.bp_post_xlate
331   	  );
332      ELSIF (module_code		=	'UNDO_ELIMINATIONS') THEN
333        IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL      <=      FND_LOG.LEVEL_STATEMENT) THEN
334         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Run Name           : ' || p_parameter_list.run_name);
335         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Hierarchy 		: ' || p_parameter_list.hierarchy_id);
336         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Calendar Period    : ' || p_parameter_list.cal_period_id);
337         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Balance Type Code  : ' || p_parameter_list.balance_type_code);
338         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Undo Entity Type   : ' || p_parameter_list.undo_entity_type);
339         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXECUTE_MODULE', 'Undo Entity ID	: ' || p_parameter_list.undo_entity_id);
340 
341        END IF;
342  	gcs_dyn_fem_posting_pkg.gcs_fem_delete(
343                                         errbuf                  =>      p_parameter_list.errbuf,
344                                         retcode                 =>      p_parameter_list.retcode,
345                                         p_cal_period_id         =>      p_parameter_list.cal_period_id,
346                                         p_hierarchy_id          =>      p_parameter_list.hierarchy_id,
347                                         p_balance_type_code     =>      p_parameter_list.balance_type_code,
348 					p_entity_type		=>	p_parameter_list.undo_entity_type,
349 					p_entity_id		=>	p_parameter_list.undo_entity_id,
350                                         p_hier_dataset_code     =>      p_parameter_list.hierarchy_dataset_code);
351 
352      END IF;
353 
354      COMMIT;
355 
356     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
357       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.EXECUTE_MODULE.end', '<<Exit for itemkey : ' || p_item_key || '>>');
358     END IF;
359 
360   END execute_module;
361 
362   PROCEDURE balances_processor	(		itemtype		IN VARCHAR2,
363   						itemkey			IN VARCHAR2,
364   						actid			IN NUMBER,
365   						funcmode		IN varchar2,
366   						result			IN OUT NOCOPY varchar2)	IS
367 
368       cons_entity_wf_info	r_cons_entity_wf_info;
369       oper_entity_wf_info	r_oper_entity_wf_info;
370       l_category_code		VARCHAR2(30);
371       x_errbuf			VARCHAR2(2000);
372       x_retcode			VARCHAR2(30);
373       l_child_entity_id		NUMBER(15);
374       l_undo_flag		VARCHAR2(1)	:= 'N';
375       l_run_detail_id		NUMBER(15);
376       l_mode			VARCHAR2(30)	:= 'I';
377       l_curr_category_num	NUMBER(15);
378       l_rows_to_process		VARCHAR2(1)	:= 'Y';
379       l_xlate_flag		VARCHAR2(1)	:= 'N';
380       l_entry_id		NUMBER(15);
381       l_parameter_list		gcs_cons_eng_utility_pkg.r_module_parameters;
382 
383   BEGIN
384     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
385       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.BALANCES_PROCESSOR.begin', '<<Enter for itemkey : ' || itemkey || '>>');
386     END IF;
387 
388     l_parameter_list.category_code	:=	WF_ENGINE.GetActivityAttrText(itemtype, itemkey, actid, 'CATEGORY_CODE', FALSE);
389     l_parameter_list.bp_post_xlate	:=	'N';
390     l_parameter_list.bp_mode		:=	'I';
391 
392     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
393       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.BALANCES_PROCESSOR', 'Category Code	:	'	|| l_parameter_list.category_code);
394       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.BALANCES_PROCESSOR', 'Post Xlate	:	'	|| l_parameter_list.bp_post_xlate);
395     END IF;
396 
397     IF (itemtype 	=	'GCSOPRWF') THEN
398 
399      gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
400                                                        itemkey,
401                                                        cons_entity_wf_info,
402                                                        oper_entity_wf_info);
403 
404        IF (cons_entity_wf_info.prior_run_identifier <> 'NO_PRIOR_RUN') THEN
405          l_parameter_list.bp_undo_prior            :=      'Y';
406        END IF;
407 
408        IF (l_parameter_list.category_code = 'DATAPREPARATION') THEN
409          l_parameter_list.run_detail_id	:=	oper_entity_wf_info.run_detail_id;
410        ELSIF (l_parameter_list.category_code = 'INCREMENTAL_DATAPREPARATION') THEN
411          l_parameter_list.run_detail_id :=  	oper_entity_wf_info.run_detail_id;
412 	 l_parameter_list.bp_mode	:=	'D';
413          l_parameter_list.bp_undo_prior	:=	'N';
414 	 l_parameter_list.category_code :=	'DATAPREPARATION';
415        ELSIF (l_parameter_list.category_code = 'XLATE_DATAPREPARATION') THEN
416          l_parameter_list.category_code		:=	'TRANSLATION';
417          l_parameter_list.entry_id 		:=      oper_entity_wf_info.xlate_entry_id;
418        ELSIF (l_parameter_list.category_code = 'ADJUSTMENT') THEN
419          l_curr_category_num			:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
420          l_parameter_list.child_entity_id	:=	oper_entity_wf_info.operating_entity;
421          l_parameter_list.category_code		:=	gcs_categories_pkg.g_oper_category_info(l_curr_category_num).category_code;
422          l_parameter_list.bp_undo_prior         :=      'N';
423 
424          SELECT DECODE(COUNT(*), 0, 'N', 'Y')
425          INTO   l_rows_to_process
426          FROM   gcs_cons_eng_run_dtls
427          WHERE  consolidation_entity_id	= cons_entity_wf_info.consolidation_entity
428          AND    run_name		= cons_entity_wf_info.run_identifier
429          AND    child_entity_id		= oper_entity_wf_info.operating_entity
430          AND    category_code		= l_parameter_list.category_code;
431        END IF;
432 
433     ELSIF (itemtype	=	'GCSENGNE') THEN
434 
435      gcs_cons_eng_utility_pkg.get_cons_entity_wf_info (itemtype,
436                                                        itemkey,
437                                                        cons_entity_wf_info);
438 
439        IF (cons_entity_wf_info.prior_run_identifier <> 'NO_PRIOR_RUN') THEN
440          l_parameter_list.bp_undo_prior            :=      'Y';
441        END IF;
442 
443        IF (l_parameter_list.category_code = 'AGGREGATION') THEN
444 
445 	   l_parameter_list.run_detail_id	:=	cons_entity_wf_info.run_detail_id;
446 
447        ELSIF (l_parameter_list.category_code = 'XLATE_AGGREGATE') THEN
448 
449            l_parameter_list.category_code	:=	'TRANSLATION';
450 	   l_parameter_list.entry_id		:=	cons_entity_wf_info.xlate_entry_id;
451 
452        ELSIF (l_parameter_list.category_code = 'ADJUSTMENT') THEN
453 
454          l_curr_category_num	:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
455 	 l_parameter_list.category_code	:=	gcs_categories_pkg.g_cons_category_info(l_curr_category_num).category_code;
456          l_parameter_list.bp_undo_prior :=      'N';
457 
458          SELECT DECODE(COUNT(*), 0, 'N', 'Y')
459          INTO   l_rows_to_process
460          FROM   gcs_cons_eng_run_dtls
461          WHERE  consolidation_entity_id	= cons_entity_wf_info.consolidation_entity
462          AND    run_name		= cons_entity_wf_info.run_identifier
463          AND    child_entity_id		IS NOT NULL
464          AND    category_code		= l_parameter_list.category_code;
465 
466          IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
467            FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.BALANCES_PROCESSOR', 'Consolidation Rows to Process 		:	'	|| l_rows_to_process);
468          END IF;
469 
470        END IF;
471 
472     END IF;
473 
474     l_parameter_list.run_name		    :=	cons_entity_wf_info.run_identifier;
475     l_parameter_list.cal_period_id	    :=	cons_entity_wf_info.cal_period_id;
476     l_parameter_list.hierarchy_id	    :=	cons_entity_wf_info.consolidation_hierarchy;
477     l_parameter_list.balance_type_code	    :=	cons_entity_wf_info.balance_type_code;
478     l_parameter_list.cons_entity_id	    :=	cons_entity_wf_info.consolidation_entity;
479     --Bugfix 5039565: Passing hierarchy dataset code
480     l_parameter_list.hierarchy_dataset_code :=  cons_entity_wf_info.hierarchy_dataset_code;
481 
482     IF (l_rows_to_process = 'Y') THEN
483       execute_module('BALANCES_PROCESSOR', l_parameter_list, itemkey);
484     END IF;
485 
486   result := 'COMPLETE';
487 
488     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
489       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.BALANCES_PROCESSOR.end', '<<Exit for itemkey : ' || itemkey || '>>');
490     END IF;
491 
492   END balances_processor;
493 
494   PROCEDURE check_adj_required	(	itemtype		IN VARCHAR2,
495   					itemkey			IN VARCHAR2,
496   					actid			IN NUMBER,
497   					funcmode		IN varchar2,
498   					result			IN OUT NOCOPY varchar2) IS
499 
500 
501 
502     l_categories_exist		VARCHAR2(1)		:=	'N';
503     l_category_type		VARCHAR2(30)		:=	NULL;
504     cons_entity_wf_info       	r_cons_entity_wf_info;
505     oper_entity_wf_info       	r_oper_entity_wf_info;
506     l_category_count		NUMBER(15);
507     l_change_in_data		VARCHAR2(1);
508     l_child_entity_id		NUMBER(15);
509     l_parameter_list 	        gcs_cons_eng_utility_pkg.r_module_parameters;
510   BEGIN
511 
512     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
513       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CHECK_ADJ_REQUIRED.begin', '<<Enter for itemkey : ' || itemkey || ' >>');
514     END IF;
515 
516 
517    IF (itemtype = 'GCSOPRWF') THEN
518      gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
519                                                        itemkey,
520                                                        cons_entity_wf_info,
521                                                        oper_entity_wf_info);
522      l_category_count			:=	gcs_categories_pkg.g_oper_category_info.COUNT;
523      l_child_entity_id			:=	oper_entity_wf_info.operating_entity;
524      l_parameter_list.undo_entity_id	:=	l_child_entity_id;
525      l_parameter_list.undo_entity_type	:=	'O';
526 
527    ELSE
528      gcs_cons_eng_utility_pkg.get_cons_entity_wf_info(itemtype,
529                                                       itemkey,
530                                                       cons_entity_wf_info);
531      l_category_count			:=	gcs_categories_pkg.g_cons_category_info.COUNT;
532      l_child_entity_id			:=	cons_entity_wf_info.consolidation_entity;
533      l_parameter_list.undo_entity_id	:=	cons_entity_wf_info.consolidation_entity;
534      l_parameter_list.undo_entity_type	:=	'E';
535    END IF;
536 
537    result			:=	'COMPLETE:F';
538 
539    WF_ENGINE.SetItemAttrNumber(itemtype, itemkey, 'NUM_OF_CATEGORIES', l_category_count);
540    WF_ENGINE.SetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', 0);
541 
542    --Initialize Workflow Attributes
543    IF (l_category_count		>	0)		THEN
544     IF ((cons_entity_wf_info.prior_run_identifier <> 'NO_PRIOR_RUN') AND (cons_entity_wf_info.process_method = 'INCREMENTAL')) THEN
545       BEGIN
546 	  -- Check if any impact occurred
547         IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL         <=      FND_LOG.LEVEL_PROCEDURE) THEN
548           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CHECK_ADJ_REQUIRED', '<<Checking if any impact occurred>');
549         END IF;
550 
551 	IF (itemtype = 'GCSOPRWF') THEN
552           SELECT 	'N'
553 	  INTO    l_change_in_data
554           FROM    gcs_cons_impact_analyses
555           WHERE   run_name			=	cons_entity_wf_info.prior_run_identifier
556 	  AND     consolidation_entity_id 	=	cons_entity_wf_info.consolidation_entity
557 	  AND     child_entity_id		=	oper_entity_wf_info.operating_entity
558 	  AND	  rownum			<	2;
559 	ELSE
560 	  SELECT 	'N'
561 	  INTO        l_change_in_data
562 	  FROM        gcs_cons_eng_runs
563           WHERE       run_name		=	cons_entity_wf_info.prior_run_identifier
564 	  AND 	      run_entity_id	=	cons_entity_wf_info.consolidation_entity
565 	  AND	      impacted_flag	=	'Y';
566 	END IF;
567 
568         IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL         <=      FND_LOG.LEVEL_PROCEDURE) THEN
569          FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CHECK_ADJ_REQUIRED', 'Found an Impact');
570         END IF;
571 
572 	result   := 'COMPLETE:T';
573 	--Bugfix 3818829 : Must undo all prior eliminations
574 	l_parameter_list.hierarchy_id		:=	cons_entity_wf_info.consolidation_hierarchy;
575 	l_parameter_list.balance_type_code	:=	cons_entity_wf_info.balance_type_code;
576 	l_parameter_list.cal_period_id		:=	cons_entity_wf_info.cal_period_id;
577 
578         -- Bugfix 5065553 : Added hierarchy dataset code parameter
579         l_parameter_list.hierarchy_dataset_code :=  cons_entity_wf_info.hierarchy_dataset_code;
580 
581    	execute_module (module_code                 =>	'UNDO_ELIMINATIONS',
582                         p_parameter_list            =>  l_parameter_list,
583                         p_item_key                  =>  itemkey);
584 	EXCEPTION
585 	  WHEN NO_DATA_FOUND THEN
586 	    -- Need to copy run details for the prior run
587 	    result := 'COMPLETE:F';
588 	    gcs_cons_eng_run_dtls_pkg.copy_prior_run_dtls(
589 			p_prior_run_name	=>	cons_entity_wf_info.prior_run_identifier,
590 			p_current_run_name	=>	cons_entity_wf_info.run_identifier,
591 			p_itemtype		=>	itemtype,
592 			p_entity_id		=>      l_child_entity_id);
593         END;
594       ELSIF (cons_entity_wf_info.prior_run_identifier	<>	'NO_PRIOR_RUN') THEN
595 	--Bugfix 3818829 : Must undo all prior eliminations
596 	result		:=	'COMPLETE:T';
597         l_parameter_list.hierarchy_id           :=      cons_entity_wf_info.consolidation_hierarchy;
598         l_parameter_list.balance_type_code      :=      cons_entity_wf_info.balance_type_code;
599         l_parameter_list.cal_period_id          :=      cons_entity_wf_info.cal_period_id;
600 
601         -- Bugfix 5065553 : Added hierarchy dataset code parameter
602         l_parameter_list.hierarchy_dataset_code :=  cons_entity_wf_info.hierarchy_dataset_code;
603 
604         execute_module (module_code                 =>  'UNDO_ELIMINATIONS',
605                         p_parameter_list            =>  l_parameter_list,
606                         p_item_key                  =>  itemkey);
607       ELSE
608         result	 	:=	'COMPLETE:T';
609       END IF;
610    END IF;
611 
612    IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
613      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CHECK_ADJ_REQUIRED.end', '<<Exit for itemkey : ' || itemkey || ' >>');
614    END IF;
615 
616   END check_adj_required;
617 
618   PROCEDURE category_exists(		itemtype		IN VARCHAR2,
619   					itemkey			IN VARCHAR2,
620   					actid			IN NUMBER,
621   					funcmode		IN varchar2,
622   					result			IN OUT NOCOPY varchar2)
623 
624   IS
625 
626     l_curr_category_number	NUMBER(15)	:=	    NULL;
627     l_max_category_number	NUMBER(15)	:=	    NULL;
628 
629   BEGIN
630 
631     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
632       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CATEGORY_EXISTS.begin', '<<Enter for itemkey : ' || itemkey || ' >>');
633     END IF;
634 
635     l_curr_category_number	:=	    WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
636     l_max_category_number	:=	    WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'NUM_OF_CATEGORIES', FALSE);
637     l_curr_category_number	:=	    l_curr_category_number + 1;
638 
639     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
640       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.CATEGORY_EXISTS', 'Current Category Number 	: ' || l_curr_category_number);
641       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.CATEGORY_EXISTS', 'Max Category Number 	: ' || l_max_category_number);
642     END IF;
643 
644     IF (l_curr_category_number > l_max_category_number) THEN
645        result 	:=  'COMPLETE:F';
646     ELSE
647       WF_ENGINE.SetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', l_curr_category_number);
648       result	:=  'COMPLETE:T';
649     END IF;
650 
651     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
652       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CATEGORY_EXISTS.end', '<<Exit for itemkey : ' || itemkey || ' >>');
653     END IF;
654   END category_exists;
655 
656   PROCEDURE check_max_category(		itemtype		IN VARCHAR2,
657   					itemkey			IN VARCHAR2,
658   					actid			IN NUMBER,
659   					funcmode		IN varchar2,
660   					result			IN OUT NOCOPY varchar2)
661 
662   IS
663     l_curr_category_number	NUMBER(15)	:=	    NULL;
664     l_max_category_number	NUMBER(15)	:=	    NULL;
665 
666   BEGIN
667 
668     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
669       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CHECK_MAX_CATEGORY.begin', '<<Enter for itemkey : ' || itemkey || ' >>');
670     END IF;
671 
672     l_curr_category_number	:=	    WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
673     l_max_category_number	:=	    WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'NUM_OF_CATEGORIES', FALSE);
674 
675     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
676       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.CHECK_MAX_CATEGORY', 'Current Category Number	:	' || l_curr_category_number);
677       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.CHECK_MAX_CATEGORY', 'Max Category Number	:	' || l_max_category_number);
678     END IF;
679 
680     IF (l_curr_category_number = l_max_category_number) THEN
681        result 	:=  'COMPLETE:F';
682     ELSE
683       result	:=  'COMPLETE:T';
684     END IF;
685 
686     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
687       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CHECK_MAX_CATEGORY.end', '<<Exit for itemkey : ' || itemkey || ' >>');
688     END IF;
689 
690   END check_max_category;
691 
692   PROCEDURE extract_manual_adj(		itemtype		IN VARCHAR2,
693   					itemkey			IN VARCHAR2,
694   					actid			IN NUMBER,
695   					funcmode		IN varchar2,
696   					result			IN OUT NOCOPY varchar2)
697 
698   IS
699 
700     l_category_code		VARCHAR2(30);
701     l_curr_category_number	NUMBER(15);
702     l_entity_id			NUMBER(15);
703     cons_entity_wf_info		gcs_cons_eng_utility_pkg.r_cons_entity_wf_info;
704     oper_entity_wf_info		gcs_cons_eng_utility_pkg.r_oper_entity_wf_info;
705     l_entry_id			NUMBER(15);
706     l_stat_entry_id		NUMBER(15);
707     x_errbuf			VARCHAR2(200);
708     x_retcode			VARCHAR2(200);
709     l_run_detail_id		NUMBER(15);
710 
711     -- Bugfix 4272275: Added fix to put correct child_entity_id in gcs_cons_eng_run_dtls
712     -- Bugfix 5763719: Modified to fetch even entries with disbled_flag 'Y' (for entries
713     -- which are disabled as of a period.
714 
715     CURSOR	c_acqdisp_headers	( p_cal_period_id	IN	NUMBER,
716 					  p_hierarchy_id	IN 	NUMBER,
717 					  p_entity_id		IN	NUMBER,
718 					  p_balance_type_code	IN	VARCHAR2)
719 
720     IS
721   	SELECT	geh.entry_id,
722 		geh.currency_code,
723 		geh.process_code,
724 		geh.period_init_entry_flag,
725 		gcr.child_entity_id,
726 		DECODE(geh.suspense_exceeded_flag, 	'Y',
727 							'WARNING',
728 							'COMPLETED') request_status
729 	FROM	gcs_entry_headers	geh,
730 		gcs_ad_transactions	gad,
731 		gcs_cons_relationships	gcr
732 	WHERE	geh.entry_id			=	gad.assoc_entry_id
733 	AND	gcr.cons_relationship_id	=	NVL(gad.post_cons_relationship_id, gad.pre_cons_relationship_id)
734 	AND	geh.category_code		=	'ACQ_DISP'
735 	AND	geh.hierarchy_id		=	p_hierarchy_id
736 	AND	geh.entity_id			=	p_entity_id
737    	AND ( geh.approval_status_code = 'APPROVED' or geh.approval_status_code is NULL)
738         AND     geh.balance_type_code           =       p_balance_type_code
739         AND     p_cal_period_id  BETWEEN  geh.start_cal_period_id
740                                  AND      nvl(disabled_cal_period_id, NVL(geh.end_cal_period_id, p_cal_period_id))
741         AND     'N' = DECODE(geh.start_cal_period_id, geh.end_cal_period_id, geh.disabled_flag, 'N');
742 
743 
744     -- Bugfix 5763719: Modified to fetch even entries with disbled_flag 'Y' (for entries
745     -- which are disabled as of a period.
746 
747     -- Bugfix 5974244: Modified condition to insure adjustment is not picked up on disabled period
748     -- Modifed nvl(disabled_cal_period_id, to be disabled_cal_period_id - 1
749 
750     CURSOR	c_adjustment_headers	( p_cal_period_id	IN	NUMBER,
751     					  p_hierarchy_id	IN	NUMBER,
752     					  p_entity_id		IN	NUMBER,
753     					  p_category_code	IN	VARCHAR2,
754 					  p_balance_type_code	IN	VARCHAR2)
755     IS
756     	SELECT	geh.entry_id,
757     		geh.currency_code,
758     		geh.process_code,
759 		geh.period_init_entry_flag
760     	FROM 	gcs_entry_headers geh
761     	WHERE 'MANUAL'	=	DECODE(geh.period_init_entry_flag, 'Y', 'MANUAL', geh.entry_type_code)
762 --      Bugfix 3718501 : Modified the Join Condition to Extract Automatically Generated A&D Entries
763 --    	AND     geh.entry_type_code		=  	'MANUAL'		-- Bugfix 3704972 : Extract Only Manual Adjustments
764 --      Bugfix 3827087 : Modifed the Join Condition to Extract Period Initialization Entries as well
765     	AND	geh.category_code		=	p_category_code
766     	AND	geh.hierarchy_id		=	p_hierarchy_id
767     	AND	geh.entity_id			=	p_entity_id
768         AND	geh.balance_type_code		=	p_balance_type_code
769     	AND	geh.processed_run_name	IS NULL
770     	AND ( geh.approval_status_code = 'APPROVED' or geh.approval_status_code is NULL)
771         AND     p_cal_period_id   BETWEEN  geh.start_cal_period_id
772                                   AND 	   NVL(disabled_cal_period_id - 1, NVL(geh.end_cal_period_id, p_cal_period_id))
773         AND     'N' = DECODE(geh.start_cal_period_id, geh.end_cal_period_id, geh.disabled_flag, 'N');
774 
775   BEGIN
776     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
777       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.EXTRACT_MANUAL_ADJ.begin', '<<Enter for itemkey : ' || itemkey || ' >>');
778     END IF;
779 
780    l_curr_category_number	:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
781 
782    IF (itemtype = 'GCSOPRWF') THEN
783      gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
784      						       itemkey,
785    						       cons_entity_wf_info,
786    						       oper_entity_wf_info);
787      l_entity_id		:=	oper_entity_wf_info.operating_entity;
788      l_category_code		:=	gcs_categories_pkg.g_oper_category_info(l_curr_category_number).category_code;
789    ELSE
790      gcs_cons_eng_utility_pkg.get_cons_entity_wf_info(itemtype,
791      						      itemkey,
792      						      cons_entity_wf_info);
793      l_category_code		:=	gcs_categories_pkg.g_cons_category_info(l_curr_category_number).category_code;
794      l_entity_id		:=	cons_entity_wf_info.consolidation_entity;
795 
796      -- Bugfix 3870959 : Extract Appropriate Entity based off of Target Entity Code
797      IF (gcs_categories_pkg.g_cons_category_info(l_curr_category_number).target_entity_code = 'ELIMINATION') THEN
798        SELECT	fea.dim_attribute_numeric_member
799        INTO	l_entity_id
800        FROM     fem_entities_attr fea
801        WHERE	fea.entity_id		=	cons_entity_wf_info.consolidation_entity
802        AND	fea.attribute_id	=	gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-ELIMINATION_ENTITY').attribute_id
803        AND	fea.version_id		=	gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-ELIMINATION_ENTITY').version_id;
804      ELSE
805        BEGIN
806          SELECT   fea.dim_attribute_numeric_member
807          INTO     l_entity_id
808          FROM     fem_entities_attr fea
809          WHERE    fea.entity_id           =       cons_entity_wf_info.consolidation_entity
810          AND      fea.attribute_id        =       gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-OPERATING_ENTITY').attribute_id
811 	 AND	  fea.version_id	  =	  gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-OPERATING_ENTITY').version_id;
812        EXCEPTION
813 	 WHEN OTHERS THEN
814 	   l_entity_id := -1;
815        END;
816      END IF;
817     END IF;
818 
819     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
820       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.EXTRACT_MANUAL_ADJ', 'Category Code	: '	|| l_category_code);
821     END IF;
822 
823     IF (l_category_code		=	'ACQ_DISP') THEN
824 
825       FOR 	v_acqdisp_headers	IN	c_acqdisp_headers(	cons_entity_wf_info.cal_period_id,
826 									cons_entity_wf_info.consolidation_hierarchy,
827 									l_entity_id,
828 									cons_entity_wf_info.balance_type_code)	LOOP
829 
830         GCS_CONS_ENG_RUN_DTLS_PKG.insert_row(p_run_name                 =>      cons_entity_wf_info.run_identifier,
831                                              p_consolidation_entity_id  =>      cons_entity_wf_info.consolidation_entity,
832                                              p_category_code            =>      'ACQ_DISP',
833                                              p_child_entity_id          =>      v_acqdisp_headers.child_entity_id,
834                                              p_entry_id                 =>      v_acqdisp_headers.entry_id,
835                                              p_stat_entry_id            =>      NULL,
836                                              p_cons_relationship_id     =>      -1,
837                                              p_request_error_code       =>      v_acqdisp_headers.request_status,
838                                              p_bp_request_error_code    =>      v_acqdisp_headers.request_status,
839                                              p_run_detail_id            =>      l_run_detail_id);
840 
841       END LOOP;
842 
843     ELSE
844 
845       FOR  	v_adjustment_headers	IN	c_adjustment_headers(	cons_entity_wf_info.cal_period_id,
846      									cons_entity_wf_info.consolidation_hierarchy,
847     								  	l_entity_id,
848     									l_category_code,
849 									cons_entity_wf_info.balance_type_code)	LOOP
850      	l_entry_id		:=	null;
851      	l_stat_entry_id		:=	null;
852 
853      	IF (v_adjustment_headers.currency_code <> 'STAT') THEN
854      	   l_entry_id		:=	v_adjustment_headers.entry_id;
855      	ELSE
856      	   l_stat_entry_id	:=	v_adjustment_headers.entry_id;
857      	END IF;
858 
859     	GCS_CONS_ENG_RUN_DTLS_PKG.insert_row(p_run_name			=>	cons_entity_wf_info.run_identifier,
860     					     p_consolidation_entity_id	=>	cons_entity_wf_info.consolidation_entity,
861     					     p_category_code		=>	l_category_code,
862     					     p_child_entity_id		=>	l_entity_id,
863     					     p_entry_id			=>	l_entry_id,
864     					     p_stat_entry_id		=>	l_stat_entry_id,
865     					     p_cons_relationship_id	=>	-1,
866 					     p_request_error_code	=>	'COMPLETED',
867 					     p_bp_request_error_code	=>	'COMPLETED',
868     					     p_run_detail_id		=>	l_run_detail_id);
869 
870 	IF 	(v_adjustment_headers.period_init_entry_flag	=	'N') THEN
871   	  GCS_INTERCO_DYNAMIC_PKG.Insert_Interco_Trx(p_entry_id		=>	NVL(l_entry_id, -1),
872 	 			               	     p_stat_entry_id	=>	NVL(l_stat_entry_id, -1),
873 						     p_hierarchy_id	=>	cons_entity_wf_info.consolidation_hierarchy,
874 	   -- Bugfix 3800083 : Added Period End Date as a parameter
875 						     p_period_end_date	=>	cons_entity_wf_info.cal_period_end_date,
876 						     x_errbuf		=>	x_errbuf,
877 						     x_retcode		=>	x_retcode);
878 	END IF;
879 
880     	IF	(v_adjustment_headers.process_code		=	'SINGLE_RUN_FOR_PERIOD') THEN
881     	   update_entry_headers(cons_entity_wf_info.run_identifier,
882     	   			v_adjustment_headers.entry_id);
883     	END IF;
884       END LOOP;
885     END IF;
886 
887     result	:=	'COMPLETE';
888     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
889       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.EXTRACT_MANUAL_ADJ.end', '<<Enter for itemkey : ' || itemkey || ' >>');
890     END IF;
891 
892   END extract_manual_adj;
893 
894   PROCEDURE check_translation_required(	itemtype		IN VARCHAR2,
895   					itemkey			IN VARCHAR2,
896   					actid			IN NUMBER,
897   					funcmode		IN varchar2,
898   					result			IN OUT NOCOPY varchar2)
899 
900   IS
901 
902      cons_entity_wf_info		gcs_cons_eng_utility_pkg.r_cons_entity_wf_info;
903      oper_entity_wf_info		gcs_cons_eng_utility_pkg.r_oper_entity_wf_info;
904      l_translation_required		VARCHAR2(1);
905      l_xlate_mode			VARCHAR2(30);
906      l_rate_change_occurred		VARCHAR2(1);
907 
908   BEGIN
909 
910    l_translation_required	:=	WF_ENGINE.GetItemAttrText(itemtype, itemkey, 'TRANSLATION_REQUIRED', FALSE);
911    l_xlate_mode			:=	WF_ENGINE.GetActivityAttrText(itemtype, itemkey, actid, 'TRANSLATION_MODE', FALSE);
912 
913    IF (itemtype = 'GCSOPRWF') THEN
914      gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
915                                                        itemkey,
916                                                        cons_entity_wf_info,
917                                                        oper_entity_wf_info);
918    ELSE
919      gcs_cons_eng_utility_pkg.get_cons_entity_wf_info(itemtype,
920                                                       itemkey,
921                                                       cons_entity_wf_info);
922    END IF;
923 
924    IF (l_translation_required	= 'Y') THEN
925      result := 'COMPLETE:T';
926    ELSE
927      result := 'COMPLETE:F';
928    END IF;
929   END check_translation_required;
930 
931 
932   PROCEDURE execute_translation(	itemtype		IN VARCHAR2,
933 					itemkey			IN VARCHAR2,
934   					actid			IN NUMBER,
935   					funcmode		IN varchar2,
936   					result			IN OUT NOCOPY varchar2)
937   IS
938 
939      --STK: Bugfix 5/5/2004 Resolved Issue with Accessing Balance Type Info for Operating Entities
940      cons_entity_wf_info	r_cons_entity_wf_info;
941      oper_entity_wf_info	r_oper_entity_wf_info;
942 
943      l_entry_id			NUMBER(15);
944      l_xlate_entry_id		NUMBER(15);
945      l_cons_relationship_id	NUMBER(15);
946      l_run_detail_id		NUMBER(15);
947      l_child_entity_id		NUMBER;
948      x_errbuf			VARCHAR2(2000);
949      x_retcode			VARCHAR2(2000);
950      l_execution_mode		VARCHAR2(30);
951      l_balance_type_code	VARCHAR2(30);
952      l_parameter_list		gcs_cons_eng_utility_pkg.r_module_parameters;
953      l_curr_category_number	NUMBER(15);
954      l_category_code		VARCHAR2(30);
955 
956      -- Bugfix 3972840 : Remove code to translate adjustment entries
957 
958      --Bugfix 5287762: Check if there is data to translate prior to running translation
959      l_translation_req_flag     VARCHAR2(1) := 'Y';
960 
961   BEGIN
962     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
963       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.EXECUTE_TRANSLATION.begin', '<<Enter for itemkey : ' || itemkey || ' >>');
964     END IF;
965 
966     IF (itemtype = 'GCSOPRWF') THEN
967       gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
968        						         itemkey,
969    						         cons_entity_wf_info,
970    						         oper_entity_wf_info);
971 
972       l_child_entity_id			:=	oper_entity_wf_info.operating_entity;
973 
974     ELSE
975       gcs_cons_eng_utility_pkg.get_cons_entity_wf_info(itemtype,
976      	 					        itemkey,
977      						        cons_entity_wf_info);
978 
979       l_child_entity_id			:=	cons_entity_wf_info.consolidation_entity;
980     END IF;
981 
982     l_execution_mode			    :=	WF_ENGINE.GetActivityAttrText(itemtype, itemkey, actid, 'EXECUTION_MODE', FALSE);
983     l_parameter_list.balance_type_code	    :=	cons_entity_wf_info.balance_type_code;
984     l_parameter_list.cal_period_id	    :=	cons_entity_wf_info.cal_period_id;
985     -- Bugfix 5017120: Added support for translating additional data types
986     l_parameter_list.hierarchy_dataset_code :=  cons_entity_wf_info.hierarchy_dataset_code;
987     -- Remove Code to Translate Adjustments
988     l_parameter_list.run_detail_id	    :=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'RUN_DETAIL_ID', FALSE);
989 
990     IF (itemtype 		=	'GCSOPRWF') THEN
991        l_parameter_list.cons_relationship_id	:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CONS_RELATIONSHIP_ID', FALSE);
992        l_parameter_list.xlate_mode		:=      cons_entity_wf_info.process_method;
993 
994        --Bugfix 5287762: Check to see if any data has been posted for the operational entity
995        SELECT   DECODE(count(run_detail_id), 0, 'N', 'Y')
996        INTO     l_translation_req_flag
997        FROM     gcs_cons_eng_run_dtls
998        WHERE    run_name                =        cons_entity_wf_info.run_identifier
999        AND      child_entity_id         =        oper_entity_wf_info.operating_entity
1000        AND      consolidation_entity_id =        cons_entity_wf_info.consolidation_entity
1001        AND      entry_id                IS NOT   NULL;
1002 
1003     ELSE
1004        SELECT	cons_relationship_id
1005        INTO     l_parameter_list.cons_relationship_id
1006        FROM     gcs_cons_eng_run_dtls
1007        WHERE    run_detail_id	=	l_parameter_list.run_detail_id;
1008     END IF;
1009 
1010     SELECT      gcerd.run_detail_id,
1011 		gcs_entry_headers_s.nextval
1012     INTO        l_parameter_list.run_detail_id,
1013 		l_parameter_list.xlate_entry_id
1014     FROM        gcs_cons_eng_run_dtls gcerd
1015     WHERE       gcerd.run_name                  =       cons_entity_wf_info.run_identifier
1016     AND         gcerd.category_code             =       'TRANSLATION'
1017     AND         gcerd.child_entity_id           =       l_child_entity_id;
1018 
1019     WF_ENGINE.SetItemAttrNumber(itemtype, itemkey, 'XLATE_ENTRY_ID', l_parameter_list.xlate_entry_id);
1020 
1021     --Bugfix 5287762: Execute translation only if the translation required flag is set to 'Y'
1022 
1023     IF (l_translation_req_flag = 'Y') THEN
1024       execute_module (	     module_code			=> 'TRANSLATION',
1025    			     p_parameter_list			=> l_parameter_list,
1026    			     p_item_key				=> itemkey);
1027     ELSE
1028       gcs_cons_eng_run_dtls_pkg.update_entry_headers_async
1029                      (       p_run_detail_id                => l_parameter_list.run_detail_id,
1030                              p_request_error_code           => 'NOT_APPLICABLE',
1031                              p_bp_request_error_code        => 'NOT_APPLICABLE');
1032     END IF;
1033 
1034 
1035     --Bugfix 4874306: Eliminate calls to XML Generation in order to leverage data templates
1036     --submit_xml_ntf_program(  p_run_name                    	=> cons_entity_wf_info.run_identifier,
1037     --                         p_cons_entity_id              	=> cons_entity_wf_info.consolidation_entity,
1038     --                         p_category_code               	=> 'TRANSLATION',
1039     --                         p_run_detail_id               	=> l_parameter_list.run_detail_id);
1040 
1041     result := 'COMPLETE';
1042 
1043     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1044       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.EXECUTE_TRANSLATION.end', '<<Exit for itemkey : ' || itemkey || ' >>');
1045     END IF;
1046 
1047   END execute_translation;
1048 
1049   PROCEDURE update_process_status(		itemtype		IN VARCHAR2,
1050   					        itemkey			IN VARCHAR2,
1051   					        actid			IN NUMBER,
1052 						funcmode		IN varchar2,
1053   					        result			IN OUT NOCOPY varchar2)
1054 
1055   IS
1056      l_category_code			VARCHAR2(30);
1057      l_curr_category_num		NUMBER(15);
1058      l_status_code			VARCHAR2(30);
1059      cons_entity_wf_info		gcs_cons_eng_utility_pkg.r_cons_entity_wf_info;
1060      oper_entity_wf_info		gcs_cons_eng_utility_pkg.r_oper_entity_wf_info;
1061 
1062   BEGIN
1063     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1064       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.UPDATE_PROCESS_STATUS.begin', '<<Enter for itemkey : ' || itemkey || ' >>');
1065     END IF;
1066 
1067      IF (itemtype = 'GCSOPRWF') THEN
1068        gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
1069        						         itemkey,
1070    						         cons_entity_wf_info,
1071    						         oper_entity_wf_info);
1072      ELSE
1073        gcs_cons_eng_utility_pkg.get_cons_entity_wf_info(itemtype,
1074      	 					        itemkey,
1075      						        cons_entity_wf_info);
1076      END IF;
1077 
1078      l_category_code		:=	WF_ENGINE.GetActivityAttrText(itemtype, itemkey, actid, 'CATEGORY_CODE', FALSE);
1079      l_status_code		:=	WF_ENGINE.GetActivityAttrText(itemtype, itemkey, actid, 'STATUS_CODE', FALSE);
1080 
1081     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
1082       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.UPDATE_PROCESS_STATUS', 'Category Code		: ' || l_category_code);
1083       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.UPDATE_PROCESS_STATUS', 'Item Type		: ' || itemtype);
1084     END IF;
1085 
1086      IF (l_category_code	=	'DATAPREPARATION') THEN
1087 
1088        gcs_cons_eng_run_dtls_pkg.update_category_status(
1089        					p_run_name			=>	cons_entity_wf_info.run_identifier,
1090        					p_consolidation_entity_id	=>	cons_entity_wf_info.consolidation_entity,
1091        					p_category_code			=>	l_category_code,
1092        					p_status			=>	l_status_code);
1093 
1094 
1095      ELSIF ((l_category_code	=	'CONS_ADJUSTMENT' AND itemtype	=	'GCSENGNE') OR
1096 	   (itemtype		=	'GCSOPRWF'	  AND l_status_code =   'IN_PROGRESS')) THEN
1097 
1098        l_curr_category_num	:=	WF_Engine.GetItemAttrText(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
1099        IF (itemtype		=	'GCSENGNE') THEN
1100          l_category_code	:=	gcs_categories_pkg.g_cons_category_info(l_curr_category_num).category_code;
1101        ELSE
1102 	 l_category_code	:=	gcs_categories_pkg.g_oper_category_info(l_curr_category_num).category_code;
1103        END IF;
1104     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL         <=      FND_LOG.LEVEL_STATEMENT) THEN
1105       FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.UPDATE_PROCESS_STATUS', 'Actual Category Code         : ' || l_category_code);
1106     END IF;
1107        gcs_cons_eng_run_dtls_pkg.update_category_status(
1108        					p_run_name			=>	cons_entity_wf_info.run_identifier,
1109        					p_consolidation_entity_id	=>	cons_entity_wf_info.consolidation_entity,
1110        					p_category_code			=>	l_category_code,
1111        					p_status			=>	l_status_code);
1112 
1113      END IF;
1114 
1115      result	:=	'COMPLETE';
1116     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1117       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.UPDATE_PROCESS_STATUS', '<<Exit for itemkey : ' || itemkey || ' >>');
1118     END IF;
1119   END update_process_status;
1120 
1121   PROCEDURE eliminations_processor(		itemtype		IN VARCHAR2,
1122   					        itemkey			IN VARCHAR2,
1123   					        actid			IN NUMBER,
1124 						funcmode		IN varchar2,
1125   					        result			IN OUT NOCOPY varchar2)
1126 
1127   IS
1128 
1129      cons_entity_wf_info		gcs_cons_eng_utility_pkg.r_cons_entity_wf_info;
1130      oper_entity_wf_info		gcs_cons_eng_utility_pkg.r_oper_entity_wf_info;
1131      x_retcode				VARCHAR2(2000);
1132      x_errbuf				VARCHAR2(200);
1133      l_curr_category_num		NUMBER(15);
1134      l_category_code			VARCHAR2(30);
1135      l_currency_code			VARCHAR2(30);
1136      l_entity_id			NUMBER;
1137      l_elim_mode			VARCHAR2(2);
1138      l_parameter_list			gcs_cons_eng_utility_pkg.r_module_parameters;
1139      l_run_detail_id			NUMBER(15);
1140      l_tgt_entity_id			NUMBER(15);
1141      l_elim_entity_attr			NUMBER(15)	:=
1142 					gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-ELIMINATION_ENTITY').attribute_id;
1143      l_elim_entity_version		NUMBER(15)	:=
1144 					gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-ELIMINATION_ENTITY').version_id;
1145      l_oper_entity_attr			NUMBER(15)	:=
1146 					gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-OPERATING_ENTITY').attribute_id;
1147      l_oper_entity_version		NUMBER(15)	:=
1148                                         gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-OPERATING_ENTITY').version_id;
1149 
1150 
1151      --Bugfix 5017120: Support for additional data types
1152      l_apply_elim_rules_flag            VARCHAR2(1);
1153      l_apply_cons_rules_flag            VARCHAR2(1);
1154 
1155      --Bugfix 3873087 : Added cursor to hit operating level adjustments
1156 
1157      CURSOR	c_oper_entity_rules	(p_hierarchy_id		IN NUMBER,
1158 					 p_child_entity_id	IN NUMBER,
1159 					 p_cal_period_end_date	IN DATE,
1160 					 p_category_code	IN VARCHAR2,
1161 					 p_balance_type_code	IN VARCHAR2)
1162      IS
1163         SELECT  gcr.parent_entity_id,
1164                 gcr.child_entity_id,
1165                 gcr.cons_relationship_id,
1166                 gerr.rule_id,
1167                 --Bugfix 5017120: Removing gdc.dataset_code from this query to support additional data types
1168                 -1				        elimination_entity_id,
1169                 geca.currency_code,
1170                 gcr.ownership_percent / 100             ownership_percent,
1171                 gcatb.target_entity_code
1172         FROM    gcs_cons_relationships gcr,
1173                 gcs_entity_cons_attrs  geca,
1174                 gcs_elim_rule_rels     gerr,
1175                 gcs_dataset_codes      gdc,
1176                 gcs_elim_rules_b       grb,
1177                 gcs_categories_b       gcatb
1178         WHERE   gcr.hierarchy_id                =       p_hierarchy_id
1179  	AND	gcr.dominant_parent_flag	=	'Y'
1180         AND     gcr.child_entity_id            =        p_child_entity_id
1181         AND     gcatb.category_code             =       p_category_code
1182         AND     grb.transaction_type_code       =       gcatb.category_code
1183         AND     p_cal_period_end_date           BETWEEN gcr.start_date AND NVL(gcr.end_date, p_cal_period_end_date)
1184         AND     gcr.child_entity_id             =       geca.entity_id
1185         AND     gcr.hierarchy_id                =       geca.hierarchy_id
1186         AND     gcr.treatment_id                =       gerr.treatment_id
1187         AND     gcr.hierarchy_id                =       gdc.hierarchy_id
1188         AND     gdc.balance_type_code           =       p_balance_type_code
1189         AND     gerr.rule_id                    =       grb.rule_id
1190         AND     grb.enabled_flag                =       'Y';
1191 
1192      CURSOR	c_cons_entity_rules	(p_hierarchy_id		IN NUMBER,
1193      					 p_cons_entity_id	IN NUMBER,
1194      					 p_cal_period_end_date	IN DATE,
1195      					 p_category_code	IN VARCHAR2,
1196      					 p_balance_type_code	IN VARCHAR2)
1197 
1198      IS
1199      	SELECT	gcr.parent_entity_id,
1200      		gcr.child_entity_id,
1201      		gcr.cons_relationship_id,
1202      		gerr.rule_id,
1203                 --Bugfix 5017120: Removing gcs.dataset_code from this query to support additional data types
1204 		fea.dim_attribute_numeric_member	elimination_entity_id,
1205 		geca.currency_code,
1206 		gcr.ownership_percent / 100 		ownership_percent,
1207 		gcatb.target_entity_code
1208      	FROM    gcs_cons_relationships gcr,
1209      		gcs_entity_cons_attrs  geca,
1210      		gcs_elim_rule_rels     gerr,
1211      		gcs_dataset_codes      gdc,
1212      		fem_entities_attr      fea,
1213      		gcs_elim_rules_b       grb,
1214      		gcs_categories_b       gcatb
1215         WHERE	gcr.hierarchy_id		=	p_hierarchy_id
1216      	AND	gcr.parent_entity_id		=	p_cons_entity_id
1217 	AND	gcr.dominant_parent_flag	=	'Y'
1218      	AND     gcatb.category_code		=	p_category_code
1219      	AND 	grb.transaction_type_code	=	gcatb.category_code
1220      	AND	p_cal_period_end_date		BETWEEN gcr.start_date AND NVL(gcr.end_date, p_cal_period_end_date)
1221      	AND	gcr.parent_entity_id		=	geca.entity_id
1222      	AND	gcr.hierarchy_id		=	geca.hierarchy_id
1223      	AND	gcr.treatment_id		=	gerr.treatment_id
1224      	AND	gcr.hierarchy_id		=	gdc.hierarchy_id
1225      	AND	gdc.balance_type_code		=	p_balance_type_code
1226      	AND	fea.entity_id			=	gcr.parent_entity_id
1227      	AND	gerr.rule_id			=	grb.rule_id
1228      	AND     grb.enabled_flag		=	'Y'
1229      	AND	fea.attribute_id		=	l_elim_entity_attr
1230         AND     fea.version_id			=       l_elim_entity_version;
1231 
1232      -- Bugfix 5450725: Modified c_pm_entity_entries for multiple parents filtering
1233 
1234      CURSOR     c_mp_entity_entries     (p_hierarchy_id         IN NUMBER,
1235                                          p_category_code        IN VARCHAR2,
1236                                          p_balance_type_code    IN VARCHAR2,
1237 					 p_cal_period_id	IN NUMBER,
1238 					 p_target_entity_id	IN NUMBER)
1239      IS
1240 
1241         SELECT  gcerd.child_entity_id,
1242                 gcerd.rule_id,
1243                 geh.entry_id
1244         FROM    gcs_cons_eng_run_dtls   gcerd,
1245                 gcs_entry_headers       geh,
1246                 gcs_cons_eng_runs       gcer
1247         WHERE   geh.hierarchy_id                       =       p_hierarchy_id
1248         AND     geh.entity_id                          =       p_target_entity_id
1249         AND     geh.category_code                      =       p_category_code
1250         AND     geh.entry_type_code                    =       'MULTIPLE_PARENTS'
1251         AND     geh.start_cal_period_id                =       p_cal_period_id
1252         AND     geh.end_cal_period_id                  =       p_cal_period_id
1253         AND     geh.balance_type_code                  =       p_balance_type_code
1254         AND     geh.assoc_entry_id                     =       gcerd.entry_id
1255         AND     gcerd.category_code                    =       p_category_code
1256         AND     gcerd.consolidation_entity_id          =       gcer.run_entity_id
1257         AND     gcerd.run_name                         =       gcer.run_name
1258         AND     gcer.hierarchy_id                      =       p_hierarchy_id
1259         AND     gcer.cal_period_id                     =       p_cal_period_id
1260         AND     gcer.most_recent_flag                  =       'Y';
1261 
1262   BEGIN
1263     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1264       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.ELIMINATIONS_PROCESSOR.begin', '<<Enter Module for item key : ' || itemkey || '>>');
1265     END IF;
1266      l_curr_category_num := WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CURR_CATEGORY_NUM', FALSE);
1267 
1268      IF (itemtype = 'GCSOPRWF') THEN
1269        gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
1270        						         itemkey,
1271    						         cons_entity_wf_info,
1272    						         oper_entity_wf_info);
1273 
1274        l_category_code		:=	gcs_categories_pkg.g_oper_category_info(l_curr_category_num).category_code;
1275        l_entity_id		:=	oper_entity_wf_info.operating_entity;
1276 
1277      ELSE
1278        gcs_cons_eng_utility_pkg.get_cons_entity_wf_info(itemtype,
1279      	 					        itemkey,
1280      						        cons_entity_wf_info);
1281        l_category_code		:=	gcs_categories_pkg.g_cons_category_info(l_curr_category_num).category_code;
1282        l_entity_id		:=	cons_entity_wf_info.consolidation_entity;
1283 
1284      END IF;
1285 
1286      IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
1287        FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Processing Category Code : ' || l_category_code);
1288      END IF;
1289 
1290      --Bugfix 5017120: Retrieve the eliminiation rules flag and consolidation rules flag
1291      SELECT apply_elim_rules_flag,
1292             apply_cons_rules_flag
1293      INTO   l_apply_elim_rules_flag,
1294             l_apply_cons_rules_flag
1295      FROM   gcs_data_type_codes_b
1296      WHERE  data_type_code      =       cons_entity_wf_info.balance_type_code;
1297 
1298      IF ((l_apply_elim_rules_flag = 'Y') AND
1299         ((l_category_code = 'INTERCOMPANY') OR
1300         (l_category_code = 'INTRACOMPANY'))) THEN
1301 
1302        IF (l_category_code = 'INTERCOMPANY') THEN
1303          l_elim_mode					:= 'IE';
1304 	 l_parameter_list.bp_post_xlate			:= 'N';
1305        ELSE
1306          l_elim_mode					:= 'IA';
1307          l_parameter_list.bp_post_xlate			:= oper_entity_wf_info.translation_required;
1308        END IF;
1309 
1310        SELECT 	currency_code
1311        INTO	l_currency_code
1312        FROM     gcs_entity_cons_attrs
1313        WHERE    hierarchy_id		=	cons_entity_wf_info.consolidation_hierarchy
1314        AND	entity_id		=	l_entity_id;
1315 
1316       IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_STATEMENT) THEN
1317         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Parameters for Intercompany Engine');
1318         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Consolidation Hierarchy : ' || cons_entity_wf_info.consolidation_hierarchy );
1319         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Calendar Period : ' || cons_entity_wf_info.consolidation_hierarchy );
1320         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Balance Type : ' || cons_entity_wf_info.balance_type_code );
1321         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Entity  Identifier : ' || l_entity_id );
1322         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Elimination Mode : ' || l_elim_mode);
1323         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Currency Code : ' || l_currency_code);
1324         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, g_api || '.ELIMINATIONS_PROCESSOR', 'Run Name : ' || cons_entity_wf_info.run_identifier);
1325       END IF;
1326 
1327        l_parameter_list.hierarchy_id		:=	cons_entity_wf_info.consolidation_hierarchy;
1328        l_parameter_list.cal_period_id		:=	cons_entity_wf_info.cal_period_id;
1329        l_parameter_list.balance_type_code	:=	cons_entity_wf_info.balance_type_code;
1330        l_parameter_list.child_entity_id		:=	l_entity_id;
1331        l_parameter_list.run_name		:=	cons_entity_wf_info.run_identifier;
1332        l_parameter_list.currency_code		:=	l_currency_code;
1333        l_parameter_list.intercompany_mode	:=	l_elim_mode;
1334 
1335        execute_module('INTERCOMPANY', l_parameter_list,itemkey);
1336 
1337        --Bugfix 4874306: Eliminate calls to XML Generation in order to leverage data templates
1338        --IF (l_elim_mode		=	'IA') THEN
1339        --Bugfix 4874306: Eliminate calls to XML Generation in order to leverage data templates
1340        --submit_xml_ntf_program(p_run_name                         => cons_entity_wf_info.run_identifier,
1341        --                       p_cons_entity_id                   => cons_entity_wf_info.consolidation_entity,
1342        --                       p_category_code                    => 'INTRACOMPANY',
1343        --                       p_child_entity_id                  => l_parameter_list.child_entity_id);
1344        --ELSE
1345        --Bugfix 4874306: Eliminate calls to XML Generation in order to leverage data templates
1346        --submit_xml_ntf_program(p_run_name                         => cons_entity_wf_info.run_identifier,
1347        --                       p_cons_entity_id                   => cons_entity_wf_info.consolidation_entity,
1348        --                       p_category_code                    => 'INTERCOMPANY');
1349        --END IF;
1350 
1351 --  Bugfix 3873087 : Added code to support operating entity levle rules
1352      ELSIF (itemtype = 'GCSOPRWF') AND
1353            (l_apply_cons_rules_flag = 'Y') THEN -- Process Operating Entity Level Rules
1354 
1355        FOR v_oper_entity_rules IN      c_oper_entity_rules     ( cons_entity_wf_info.consolidation_hierarchy,
1356                                                                  oper_entity_wf_info.operating_entity,
1357                                                                  cons_entity_wf_info.cal_period_end_date,
1358                                                                  l_category_code,
1359                                                                  cons_entity_wf_info.balance_type_code)
1360         LOOP
1361           l_parameter_list.rp_parameters.parentEntity     := v_oper_entity_rules.parent_entity_id;
1362 
1363           GCS_CONS_ENG_RUN_DTLS_PKG.insert_row(p_run_name                       =>      cons_entity_wf_info.run_identifier,
1364                                                p_consolidation_entity_id        =>      cons_entity_wf_info.consolidation_entity,
1365                                                p_category_code                  =>      l_category_code,
1366                                                p_child_entity_id                =>      v_oper_entity_rules.child_entity_id,
1367                                                p_rule_id                        =>      v_oper_entity_rules.rule_id,
1368                                                p_cons_relationship_id           =>      v_oper_entity_rules.cons_relationship_id,
1369                                                p_run_detail_id                  =>      l_run_detail_id);
1370 
1371 
1372           l_parameter_list.rp_parameters.eventCategory    := l_category_code;
1373           l_parameter_list.rp_parameters.hierarchy        := cons_entity_wf_info.consolidation_hierarchy;
1374           --Bugfix 5017120: Modified dataset code assignments
1375           l_parameter_list.rp_parameters.datasetCode      := cons_entity_wf_info.hierarchy_dataset_code;
1376           l_parameter_list.rp_parameters.calPeriodId      := cons_entity_wf_info.cal_period_id;
1377           l_parameter_list.rp_parameters.calPeriodEndDate := cons_entity_wf_info.cal_period_end_date;
1378           l_parameter_list.rp_parameters.childEntity      := v_oper_entity_rules.child_entity_id;
1379           l_parameter_list.rp_parameters.elimsEntity      := v_oper_entity_rules.elimination_entity_id;
1380           l_parameter_list.rp_parameters.currencyCode     := v_oper_entity_rules.currency_code;
1381           l_parameter_list.rp_parameters.eventType        := 'C';
1382           l_parameter_list.rp_parameters.relationship     := v_oper_entity_rules.cons_relationship_id;
1383 	  l_parameter_list.rp_parameters.runName	  := cons_entity_wf_info.run_identifier;
1384           l_parameter_list.elim_rule_id                   := v_oper_entity_rules.rule_id;
1385           l_parameter_list.rp_parameters.eventKey         := l_run_detail_id;
1386           l_parameter_list.rp_rule_data.toPercent         := v_oper_entity_rules.ownership_percent;
1387           --Bugfix 5103251: Added balance type parameter
1388           l_parameter_list.rp_parameters.balanceTypeCode  := cons_entity_wf_info.balance_type_code;
1389 
1390           execute_module('RULES_PROCESSOR', l_parameter_list, itemkey);
1391         END LOOP;
1392 
1393         --Bugfix 4874306: Eliminate calls to XML Generation in order to leverage data templates
1394         --submit_xml_ntf_program(p_run_name                         => cons_entity_wf_info.run_identifier,
1395         --                       p_cons_entity_id                   => cons_entity_wf_info.consolidation_entity,
1396         --                       p_category_code                    => l_category_code,
1397         --                       p_child_entity_id                  => oper_entity_wf_info.operating_entity);
1398 
1399      ELSIF (itemtype = 'GCSENGNE' AND
1400             l_category_code <> 'ACQ_DISP' AND
1401             l_apply_cons_rules_flag = 'Y') THEN -- Process Consolidation Level Rules
1402 
1403      	FOR v_cons_entity_rules IN	c_cons_entity_rules	(cons_entity_wf_info.consolidation_hierarchy,
1404      					 			 cons_entity_wf_info.consolidation_entity,
1405      					 			 cons_entity_wf_info.cal_period_end_date,
1406      					 			 l_category_code,
1407      					 			 cons_entity_wf_info.balance_type_code)
1408         LOOP
1409           BEGIN
1410 
1411 	  IF (v_cons_entity_rules.target_entity_code = 'ELIMINATION') THEN
1412 	    BEGIN
1413               SELECT dim_attribute_numeric_member
1414               INTO   l_parameter_list.rp_parameters.parentEntity
1415               FROM   fem_entities_attr
1416               WHERE  entity_id            =       v_cons_entity_rules.parent_entity_id
1417               AND    attribute_id         =       l_oper_entity_attr
1418 	      AND    version_id		  = 	  l_oper_entity_version;
1419  	    EXCEPTION
1420 	      WHEN OTHERS THEN
1421 		l_parameter_list.rp_parameters.parentEntity	:= v_cons_entity_rules.parent_entity_id;
1422 	    END;
1423 	  ELSIF (v_cons_entity_rules.target_entity_code = 'PARENT') THEN
1424 	    SELECT dim_attribute_numeric_member
1425 	    INTO   l_parameter_list.rp_parameters.parentEntity
1426 	    FROM   fem_entities_attr
1427 	    WHERE  entity_id		=	v_cons_entity_rules.parent_entity_id
1428 	    AND    attribute_id		=	l_oper_entity_attr
1429 	    AND	   version_id		=	l_oper_entity_version;
1430 	  END IF;
1431 
1432        	  GCS_CONS_ENG_RUN_DTLS_PKG.insert_row(p_run_name			=>	cons_entity_wf_info.run_identifier,
1433     					       p_consolidation_entity_id	=>	cons_entity_wf_info.consolidation_entity,
1434     					       p_category_code			=>	l_category_code,
1435     					       p_child_entity_id		=>	v_cons_entity_rules.child_entity_id,
1436     					       p_rule_id			=>	v_cons_entity_rules.rule_id,
1437     					       p_cons_relationship_id		=>	v_cons_entity_rules.cons_relationship_id,
1438     					       p_run_detail_id			=>	l_run_detail_id);
1439 
1440 
1441           l_parameter_list.rp_parameters.eventCategory 	  := l_category_code;
1442           l_parameter_list.rp_parameters.hierarchy     	  := cons_entity_wf_info.consolidation_hierarchy;
1443           --Bugfix 5017120: Changing assignment of dataset code to support multiple data types
1444           l_parameter_list.rp_parameters.datasetCode   	  := cons_entity_wf_info.hierarchy_dataset_code;
1445           l_parameter_list.rp_parameters.calPeriodId   	  := cons_entity_wf_info.cal_period_id;
1446           l_parameter_list.rp_parameters.calPeriodEndDate := cons_entity_wf_info.cal_period_end_date;
1447           l_parameter_list.rp_parameters.childEntity	  := v_cons_entity_rules.child_entity_id;
1448           l_parameter_list.rp_parameters.elimsEntity	  := v_cons_entity_rules.elimination_entity_id;
1449           l_parameter_list.rp_parameters.currencyCode	  := v_cons_entity_rules.currency_code;
1450           l_parameter_list.rp_parameters.eventType	  := 'C';
1451           l_parameter_list.rp_parameters.relationship	  := v_cons_entity_rules.cons_relationship_id;
1452           l_parameter_list.elim_rule_id			  := v_cons_entity_rules.rule_id;
1453 	  l_parameter_list.rp_parameters.eventKey	  := l_run_detail_id;
1454        	  l_parameter_list.rp_rule_data.toPercent	  := v_cons_entity_rules.ownership_percent;
1455           l_parameter_list.rp_parameters.runName          := cons_entity_wf_info.run_identifier;
1456           --Bugfix 5103251: Added balance type parameter
1457           l_parameter_list.rp_parameters.balanceTypeCode  := cons_entity_wf_info.balance_type_code;
1458 
1459           execute_module('RULES_PROCESSOR', l_parameter_list, itemkey);
1460 
1461          EXCEPTION
1462            WHEN NO_DATA_FOUND THEN
1463              -- no operating entity was found, therefore, equity pick-up rule is just skipped
1464 	     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1465 	       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.ELIMINATIONS_PROCESSOR', SQLERRM);
1466              END IF;
1467              null;
1468          END;
1469         END LOOP;
1470 
1471 	--Bugfix 4122843: Special Code to Handle Multiple Parent Entries
1472 	IF (gcs_categories_pkg.g_cons_category_info(l_curr_category_num).support_multi_parents_flag	=	'Y'	) THEN
1473 	  BEGIN
1474 	    IF (gcs_categories_pkg.g_cons_category_info(l_curr_category_num).target_entity_code		=	'ELIMINATION') THEN
1475 	      SELECT 	dim_attribute_numeric_member
1476 	      INTO	l_tgt_entity_id
1477               FROM	fem_entities_attr
1478 	      WHERE	entity_id		=	cons_entity_wf_info.consolidation_entity
1479 	      AND	attribute_id		=	l_elim_entity_attr
1480 	      AND	version_id		=	l_elim_entity_version;
1481 	    ELSE
1482 	      SELECT	dim_attribute_numeric_member
1483               INTO      l_tgt_entity_id
1484               FROM      fem_entities_attr
1485               WHERE     entity_id               =       cons_entity_wf_info.consolidation_entity
1486               AND       attribute_id            =       l_oper_entity_attr
1487               AND       version_id              =       l_oper_entity_version;
1488 	    END IF;
1489 
1490             --Bugfix 5450725: Modified parameters passes to v_mp_entries
1491 
1492 	    FOR v_mp_entries	IN	c_mp_entity_entries(
1493 							cons_entity_wf_info.consolidation_hierarchy,
1494 							l_category_code,
1495 							cons_entity_wf_info.balance_type_code,
1496 							cons_entity_wf_info.cal_period_id,
1497 							l_tgt_entity_id)
1498    	    LOOP
1499 
1500               GCS_CONS_ENG_RUN_DTLS_PKG.insert_row(	p_run_name                       =>      cons_entity_wf_info.run_identifier,
1501                                                		p_consolidation_entity_id        =>      cons_entity_wf_info.consolidation_entity,
1502                                                		p_category_code                  =>      l_category_code,
1503                                                		p_child_entity_id                =>      v_mp_entries.child_entity_id,
1504                                                		p_rule_id                        =>      v_mp_entries.rule_id,
1505 							p_request_error_code		 =>	'COMPLETED',
1506 							p_bp_request_error_code		 => 	'COMPLETED',
1507 							p_entry_id			 =>	v_mp_entries.entry_id,
1508 							p_run_detail_id			 =>	l_run_detail_id);
1509 	    END LOOP;
1510 	  EXCEPTION
1511 	    WHEN OTHERS THEN
1512 	      NULL;
1513           END;
1514         END IF;
1515 
1516 	--Bugfix 4874306: Eliminate calls to XML Generation in order to leverage data templates
1517         --submit_xml_ntf_program(p_run_name                         => cons_entity_wf_info.run_identifier,
1518         --                       p_cons_entity_id                   => cons_entity_wf_info.consolidation_entity,
1519         --                       p_category_code                    => l_category_code);
1520 
1521      END IF;
1522 
1523      result	:=	'COMPLETE';
1524     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1525       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.ELIMINATIONS_PROCESSOR.end', '<<End Module>>');
1526     END IF;
1527 
1528   END eliminations_processor;
1529 
1530   PROCEDURE create_initializing_journal(	itemtype		IN VARCHAR2,
1531   						itemkey			IN VARCHAR2,
1532   						actid			IN NUMBER,
1533   						funcmode		IN varchar2,
1534   						result			IN OUT NOCOPY varchar2)
1535 
1536 
1537   IS
1538      cons_entity_wf_info		gcs_cons_eng_utility_pkg.r_cons_entity_wf_info;
1539      oper_entity_wf_info		gcs_cons_eng_utility_pkg.r_oper_entity_wf_info;
1540      x_retcode				VARCHAR2(2000);
1541      x_errbuf				VARCHAR2(200);
1542      l_entity_id			NUMBER;
1543      l_init_required			VARCHAR2(1);
1544      l_parameter_list			gcs_cons_eng_utility_pkg.r_module_parameters;
1545 
1546   BEGIN
1547 
1548     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1549       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CREATE_INITIALIZING_JOURNAL.begin', '<<Enter for item key : ' || itemkey || '>>');
1550     END IF;
1551 
1552      IF (itemtype = 'GCSOPRWF') THEN
1553        gcs_cons_eng_utility_pkg.get_oper_entity_wf_info (itemtype,
1554        						         itemkey,
1555    						         cons_entity_wf_info,
1556    						         oper_entity_wf_info);
1557 
1558        l_entity_id				:=	oper_entity_wf_info.operating_entity;
1559        l_parameter_list.cons_relationship_id	:=	WF_ENGINE.GetItemAttrNumber(itemtype, itemkey, 'CONS_RELATIONSHIP_ID', FALSE);
1560        --Bugfix 3922840 : We no longer need to create period initialization entries for Translated Results
1561        l_parameter_list.bp_post_xlate		:=	'N';
1562 
1563        SELECT 'Y'
1564        INTO   l_init_required
1565        FROM   gcs_cons_eng_run_dtls
1566        WHERE  run_name 			= 	cons_entity_wf_info.run_identifier
1567        AND    consolidation_entity_id	=	cons_entity_wf_info.consolidation_entity
1568        AND    child_entity_id		=	l_entity_id
1569        AND    category_code		NOT IN ('DATAPREPARATION')
1570        AND    ROWNUM 			< 	2;
1571 
1572 
1573      ELSE
1574        gcs_cons_eng_utility_pkg.get_cons_entity_wf_info(itemtype,
1575      	 					        itemkey,
1576      						        cons_entity_wf_info);
1577        l_parameter_list.bp_post_xlate		:=	'N';
1578 
1579        SELECT dim_attribute_numeric_member
1580        INTO   l_entity_id
1581        FROM   fem_entities_attr
1582        WHERE  entity_id		=	cons_entity_wf_info.consolidation_entity
1583        AND    attribute_id	=	gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-ELIMINATION_ENTITY').attribute_id
1584        AND    version_id	=       gcs_utility_pkg.g_dimension_attr_info('ENTITY_ID-ELIMINATION_ENTITY').version_id;
1585 
1586        SELECT 'Y'
1587        INTO   l_init_required
1588        FROM   gcs_cons_eng_run_dtls
1589        WHERE  run_name 			= 	cons_entity_wf_info.run_identifier
1590        AND    consolidation_entity_id	=	cons_entity_wf_info.consolidation_entity
1591        AND    child_entity_id		IS NOT NULL
1592        AND    category_code		NOT IN ('AGGREGATION')
1593        AND    ROWNUM 			< 	2;
1594 
1595        SELECT cons_relationship_id
1596        INTO   l_parameter_list.cons_relationship_id
1597        FROM   gcs_cons_relationships
1598        WHERE  hierarchy_id				=	cons_entity_wf_info.consolidation_hierarchy
1599        AND    dominant_parent_flag			=	'Y'
1600        AND    child_entity_id				=	l_entity_id
1601        AND    cons_entity_wf_info.cal_period_end_date	BETWEEN	start_date AND NVL(end_date, cons_entity_wf_info.cal_period_end_date);
1602 
1603      END IF;
1604 
1605      IF (l_init_required = 'Y') THEN
1606 
1607           l_parameter_list.run_name		:=	cons_entity_wf_info.run_identifier;
1608           l_parameter_list.hierarchy_id		:=	cons_entity_wf_info.consolidation_hierarchy;
1609 	  l_parameter_list.cons_entity_id	:=	cons_entity_wf_info.consolidation_entity;
1610           l_parameter_list.child_entity_id	:=	l_entity_id;
1611           l_parameter_list.cal_period_id	:=	cons_entity_wf_info.cal_period_id;
1612           l_parameter_list.balance_type_code	:=	cons_entity_wf_info.balance_type_code;
1613 
1614           execute_module('PERIOD_INITIALIZATION', l_parameter_list,itemkey);
1615 
1616     END IF;
1617 
1618     IF (FND_LOG.G_CURRENT_RUNTIME_LEVEL 	<=	FND_LOG.LEVEL_PROCEDURE) THEN
1619       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, g_api || '.CREATE_INITIALIZING_JOURNAL.end', '<<Exit for item key : ' || itemkey || '>>');
1620     END IF;
1621 
1622     result := 'COMPLETE';
1623   EXCEPTION
1624     WHEN OTHERS THEN
1625       result := 'COMPLETE';
1626   END create_initializing_journal;
1627 
1628 END GCS_CONS_ENG_UTILITY_PKG;
1629