DBA Data[Home] [Help]

PACKAGE BODY: APPS.DPP_XLA_EVENT_PUB

Source


1 PACKAGE BODY DPP_XLA_EVENT_PUB AS
2 /* $Header: dppxlaeb.pls 120.2.12010000.4 2008/08/05 08:12:13 sanagar ship $ */
3 G_PKG_NAME CONSTANT VARCHAR2(30):= 'DPP_XLA_EVENT_PUB';
4 G_FILE_NAME CONSTANT VARCHAR2(14) := 'dppxlaeb.pls';
5 
6 G_DEBUG BOOLEAN := FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_debug_high);
7 
8 
9 PROCEDURE CreateAccounting(	errbuf  OUT NOCOPY VARCHAR2,
10 				retcode OUT NOCOPY NUMBER,
11 				p_org_id IN NUMBER,
12 				p_source_application_id IN NUMBER,
13 				p_application_id IN NUMBER,
14 				p_dummy IN VARCHAR2,
15 				p_ledger_id IN NUMBER,
16 				P_PROCESS_CATEGORY_CODE IN VARCHAR2,
17 				P_END_DATE IN VARCHAR2,
18 				P_CREATE_ACCOUNTING_FLAG IN VARCHAR2,
19 				P_DUMMY_PARAM_1 IN VARCHAR2,
20 				P_ACCOUNTING_MODE IN VARCHAR2,
21 				P_DUMMY_PARAM_2 IN VARCHAR2,
22 				P_ERRORS_ONLY_FLAG IN VARCHAR2,
23 				P_REPORT_STYLE IN VARCHAR2,
24 				P_TRANSFER_TO_GL_FLAG IN VARCHAR2,
25 				P_DUMMY_PARAM_3 IN VARCHAR2,
26 				P_POST_IN_GL_FLAG IN VARCHAR2,
27 				P_GL_BATCH_NAME IN VARCHAR2,
28 				P_MIN_PRECISION IN NUMBER,
29 				P_INCLUDE_ZERO_AMOUNT_LINES IN VARCHAR2,
30 				P_REQUEST_ID IN NUMBER,
31 				P_ENTITY_ID IN NUMBER,
32 				P_SOURCE_APPLICATION_NAME IN VARCHAR2,
33 				P_APPLICATION_NAME IN VARCHAR2,
34 				P_LEDGER_NAME IN VARCHAR2,
35 				P_PROCESS_CATEGORY_NAME IN VARCHAR2,
36 				P_CREATE_ACCOUNTING IN VARCHAR2,
37 				P_ACCOUNTING_MODE_NAME IN VARCHAR2,
38 				P_ERRORS_ONLY IN VARCHAR2,
39 				P_ACCOUNTING_REPORT_LEVEL IN VARCHAR2,
40 				P_TRANSFER_TO_GL IN VARCHAR2,
41 				P_POST_IN_GL IN VARCHAR2,
42 				P_INCLUDE_ZERO_AMT_LINES IN VARCHAR2,
43 				P_VALUATION_METHOD_CODE IN VARCHAR2,
44 				P_SECURITY_INT_1 IN NUMBER,
45 				P_SECURITY_INT_2 IN NUMBER,
46 				P_SECURITY_INT_3 IN NUMBER,
47 				P_SECURITY_CHAR_1 IN VARCHAR2,
48 				P_SECURITY_CHAR_2 IN VARCHAR2,
49 				P_SECURITY_CHAR_3 IN VARCHAR2,
50 				P_CONC_REQUEST_ID IN NUMBER,
51 				P_INCLUDE_USER_TRX_ID_FLAG IN VARCHAR2,
52 				P_INCLUDE_USER_TRX_IDENTIFIERS IN VARCHAR2,
53 				P_DebugFlag   IN VARCHAR2,
54 				P_USER_ID IN NUMBER -- Bug#7280169
55 			       )
56 IS
57 --Cursor to get eligible header records from the DPP extract table
58 CURSOR get_eligible_header_csr IS
59 	SELECT
60 		PSEH.TRANSACTION_HEADER_ID,
61 		PSEH.BASE_TRANSACTION_HEADER_ID,
62 		PSEH.PP_TRANSACTION_TYPE,
63 		DTH.ORG_ID,
64 		DTH.VENDOR_ID,
65 		DTH.VENDOR_SITE_ID,
66 		TO_NUMBER(hou.default_legal_context_id) legal_entity,   --Bug#7280169
67 		TO_NUMBER(hou.set_of_books_id) ledger_id,   --Bug#7280169
68 		DTH.TRANSACTION_NUMBER,
69 		PSEH.CREATION_DATE,
70 		DXE.ENTITY_CODE,
71 		DXE.EVENT_CLASS_CODE,
72 		DXE.EVENT_TYPE_CODE
73 	FROM
74 		DPP_XLA_HEADERS PSEH,
75 		DPP_TRANSACTION_HEADERS_ALL DTH,
76 		hr_operating_units hou,
77 		DPP_XLA_EVENT_MAP DXE
78 	WHERE   NVL(PSEH.PROCESSED_FLAG,'N')	IN ('N','E')
79 	AND	PSEH.TRANSACTION_HEADER_ID=DTH.TRANSACTION_HEADER_ID
80 	AND     DTH.org_id =to_char(hou.organization_id)   --Bug#7280169
81 	AND     hou.organization_id=p_org_id   --Bug#7280169
82 	AND     DXE.PP_TRANSACTION_TYPE=PSEH.PP_TRANSACTION_TYPE;
83 rec_get_eligible_headers	get_eligible_header_csr%ROWTYPE;
84 
85 l_return_status			VARCHAR2(1);
86 l_msg_description		VARCHAR2(500);
87 l_cost_accounted_rec_count	NUMBER;
88 l_reqid				NUMBER;
89 l_prev_ledger_id		NUMBER:=NULL;
90 l_sysdate			VARCHAR2(20);
91 l_api_message			VARCHAR2(500);
92 l_event_source_info   xla_events_pub_pkg.t_event_source_info;
93 l_reference_info        xla_events_pub_pkg.t_event_reference_info;
94 l_security_context      xla_events_pub_pkg.t_security;
95 l_event_id			NUMBER:=0;
96 l_event_date			DATE;
97 l_transactions_not_costed_flag	NUMBER:=0;
98 l_api_name			VARCHAR2(50);
99 l_event_count			NUMBER:=0;
100 BEGIN
101 
102 l_sysdate:=to_char(sysdate,'YYYY/MM/DD HH24:MI:SS');
103 l_api_name:='DPP_XLA_EVENT_PUB.CreateAccounting';
104 SAVEPOINT CREATE_Accounting;
105 FOR rec_get_eligible_headers IN get_eligible_header_csr
106 LOOP
107 
108     BEGIN
109     l_event_id:=0;
110     SAVEPOINT CREATE_EVENT;
111 	l_return_status:=NULL;
112 	--Set variables for getting CCID, to NULL
113 
114 	l_msg_description:=NULL;
115 
116 	IF rec_get_eligible_headers.PP_TRANSACTION_TYPE='COST_UPDATE' THEN
117 		l_transactions_not_costed_flag:=0;
118 
119 		SELECT COUNT(*)
120 		INTO   l_transactions_not_costed_flag
121 		FROM DPP_XLA_LINES DXL
122 		WHERE 	DXL.TRANSACTION_HEADER_ID=rec_get_eligible_headers.transaction_header_id
123 		AND     DXL.BASE_TRANSACTION_HEADER_ID=rec_get_eligible_headers.base_transaction_header_id
124 		AND NOT	 EXISTS
125 			(
126 			SELECT 'X'
127 			 FROM	MTL_TRANSACTION_ACCOUNTS MTA
128 			 WHERE  MTA.TRANSACTION_ID=DXL.BASE_TRANSACTION_LINE_ID
129 			);
130 
131 		IF l_transactions_not_costed_flag>0 THEN
132 			fnd_file.put_line(fnd_file.log, 'One or more items in Price Protection transaction ID= '||rec_get_eligible_headers.transaction_header_id
133 			                  ||'and execution detail ID= '|| rec_get_eligible_headers.base_transaction_header_id||' has not been accounted in Oracle costing');
134 			retcode:=1;
135 
136 			UPDATE DPP_XLA_HEADERS PSEH
137 			SET    PROCESSED_FLAG='E',
138 			       ERROR_DESCRIPTION='One or more items in Price Protection transaction ID= '||rec_get_eligible_headers.transaction_header_id
139 			                       ||'and execution detail ID= '|| rec_get_eligible_headers.base_transaction_header_id||' has not been accounted in Oracle costing'
140 			WHERE  TRANSACTION_HEADER_ID= rec_get_eligible_headers.transaction_header_id
141 			AND    BASE_TRANSACTION_HEADER_ID=rec_get_eligible_headers.base_transaction_header_id
142 			AND    PROCESSED_FLAG IN ('N','E');
143 
144 		END IF;
145 
146 	END IF;
147 
148 	IF (
149 
150 		 (rec_get_eligible_headers.ENTITY_CODE='COST_UPDATE' AND	l_transactions_not_costed_flag=0) OR
151 		 (rec_get_eligible_headers.ENTITY_CODE<>'COST_UPDATE')
152 	    )
153 	THEN
154 	l_event_date:=rec_get_eligible_headers.creation_date;
155 	IF G_DEBUG = TRUE THEN
156 		fnd_file.put_line(fnd_file.log, ' going to create accounting Event');
157 	END IF;
158 
159 		 -- Set source_info
160 			  l_event_source_info.application_id       := 9000;
161 			  l_event_source_info.legal_entity_id      := rec_get_eligible_headers.legal_entity;
162 			  l_event_source_info.ledger_id            := rec_get_eligible_headers.ledger_id;
163 			  l_event_source_info.entity_type_code     := rec_get_eligible_headers.ENTITY_CODE;
164 			  l_event_source_info.transaction_number   := rec_get_eligible_headers.transaction_number;
165 			  l_event_source_info.source_id_int_1      := rec_get_eligible_headers.transaction_header_id;
166 			  l_event_source_info.source_id_int_2      := rec_get_eligible_headers.base_transaction_header_id;
167 
168 		 -- Set security_context
169 		 l_security_context.security_id_int_1     := p_org_id;
170 
171 
172 		 l_event_id := XLA_EVENTS_PUB_PKG.create_event(
173 			      p_event_source_info => l_event_source_info             ,
174 			      p_event_type_code   => rec_get_eligible_headers.event_type_code ,
175 			      p_event_date        => l_event_date        ,
176 			      p_event_status_code => xla_events_pub_pkg.c_event_unprocessed,
177 			      p_event_number      => NULL                            ,
178 			      p_reference_info    => l_reference_info                ,
179 			      p_valuation_method  => ''                              ,
180 			      p_transaction_date  => INV_LE_TIMEZONE_PUB.get_le_day_time_for_ou(trunc(sysdate),p_org_id)  ,
181 			      p_security_context  => l_security_context               );
182 		 fnd_file.put_line(fnd_file.log, ' event ID is: '||l_event_id);
183 
184 
185 
186 
187 		  IF NVL(l_event_id,0) <=0  THEN
188 		       l_api_message := 'Error Accounting for Event in SLA';
189 		       IF G_DEBUG = TRUE THEN
190 		         IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
191 		          FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_PKG_NAME ,'Create_AccountingEntry: '||'txn ID : '||rec_get_eligible_headers.transaction_header_id||' Base txn ID :'||rec_get_eligible_headers.base_transaction_header_id);
192 		         END IF;
193 		       END IF;
194 		       IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
195 		           FND_MESSAGE.set_name('XLA', 'XLA_ONLINE_ACCTG_ERROR');
196 		         END IF;
197 		    FND_MSG_PUB.ADD;
198 		    RAISE FND_API.g_exc_unexpected_error;
199 		   ELSE
200 		   	l_event_count:=l_event_count+1;
201 		   END IF;
202 
203   		 IF NVL(l_event_id,-1)>0 THEN
204 			 UPDATE DPP_XLA_HEADERS PSEH
205 		 	 SET    PROCESSED_FLAG='P',
206 		 	 	ERROR_DESCRIPTION=NULL
207 			 WHERE  TRANSACTION_HEADER_ID= rec_get_eligible_headers.transaction_header_id
208 			 AND    BASE_TRANSACTION_HEADER_ID=rec_get_eligible_headers.base_transaction_header_id
209 			 AND    PROCESSED_FLAG IN ('N','E');
210 		 END IF;
211 
212       END IF;
213       EXCEPTION
214       WHEN FND_API.G_EXC_ERROR THEN
215          retcode:=1;
216          ROLLBACK TO CREATE_EVENT;
217          errbuf:= FND_API.G_RET_STS_ERROR;
218 
219       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
220       retcode:=1;
221          ROLLBACK TO CREATE_EVENT;
222          errbuf:= FND_API.G_RET_STS_UNEXP_ERROR;
223       WHEN OTHERS THEN
224       retcode:=1;
225          ROLLBACK TO CREATE_EVENT;
226    	errbuf:= FND_API.G_RET_STS_UNEXP_ERROR;
227     END;
228 END LOOP;
229 
230 
231 
232 
233 	--submit accounting program only if events have been successfully raised.
234 	 IF l_event_count>0 THEN
235 	 		l_reqid := fnd_request.submit_request('XLA',                  -- Module
236 							       'XLAACCPB',               -- Short Name
237 							       '',   -- Long Name
238 								'',
239 								FALSE,
240 								p_source_application_id,
241 								p_application_id,
242 								p_dummy,--P_dummy
243 								p_ledger_id,
244 							        p_process_category_code,
245 								p_end_date,
246 								p_create_accounting_flag,
247 								p_dummy_param_1,
248 								p_accounting_mode,
249 								p_dummy_param_2,
250 								p_errors_only_flag,
251 								p_report_style,
252 								p_transfer_to_gl_flag,
253 								p_dummy_param_3,
254 								p_post_in_gl_flag,
255 								p_gl_batch_name,
256 								p_min_precision,
257 								p_include_zero_amount_lines,
258 								p_request_id,
259 								p_entity_id,
260 								p_source_application_name,
261 								p_application_name,
262 								p_ledger_name,
263 								p_process_category_name,
264 								p_create_accounting,
265 								p_accounting_mode_name,
266 								p_errors_only,
267 								p_accounting_report_level,
268 								p_transfer_to_gl,
269 								p_post_in_gl,
270 								p_include_zero_amt_lines,
271 								p_valuation_method_code,
272 								p_security_int_1,
273 								p_security_int_2,
274 								p_security_int_3,
275 								p_security_char_1,
276 								p_security_char_2,
277 								p_security_char_3,
278 								p_conc_request_id,
279 								p_include_user_trx_id_flag,
280 								p_include_user_trx_identifiers,
281 								p_debugflag,
282 								p_user_id --Bug#7280169
283 							      );
284 
285 
286 		END IF;
287 		IF l_reqid=0 THEN
288 			fnd_file.put_line(fnd_file.log,'Could not launch Create Accounting Request');
289 			retcode:=1;
290 		END IF;
291 
292 if retcode<>1 then
293 retcode:=0;
294 end if;
295 COMMIT;
296 EXCEPTION
297 WHEN FND_API.G_EXC_ERROR THEN
298    retcode:=2;
299    ROLLBACK TO CREATE_Accounting;
300    errbuf:= FND_API.G_RET_STS_ERROR;
301 
302 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
303 retcode:=2;
304    ROLLBACK TO CREATE_Accounting;
305    errbuf:= FND_API.G_RET_STS_UNEXP_ERROR;
306 WHEN OTHERS THEN
307 retcode:=2;
308    ROLLBACK TO CREATE_Accounting;
309    errbuf:= FND_API.G_RET_STS_UNEXP_ERROR;
310 
311 END;
312 
313 
314 
315 FUNCTION get_pp_accrual_ccid(p_org_id IN NUMBER,
316 			      p_vendor_id IN NUMBER,
317 			      p_vendor_site_id IN NUMBER
318 			      ) RETURN NUMBER IS
319 x_pp_accrual_ccid 	NUMBER;
320 BEGIN
321 	x_pp_accrual_ccid:=NULL;
322 	SELECT gl_pp_accrual_acct
323 	INTO x_pp_accrual_ccid
324 	FROM ozf_sys_parameters_all
325 	where org_id=p_org_id;
326 	RETURN(x_pp_accrual_ccid);
327 
328 
329 EXCEPTION WHEN NO_DATA_FOUND THEN
330 	RETURN(-1);
331 
332 END;
333 
334 FUNCTION get_pp_cost_adjustment_ccid(p_org_id IN NUMBER,
335 			      	      p_vendor_id IN NUMBER,
336 			      	      p_vendor_site_id IN NUMBER
337 			      	      ) RETURN NUMBER IS
338 x_cost_adj_ccid		NUMBER;
339 	--Change to pick from trade profile table..if doesnt exist there, pick
340 	--from sys parameters
341 
342 	BEGIN
343 	x_cost_adj_ccid:=NULL;
344 		SELECT gl_cost_adjustment_acct
345 		INTO x_cost_adj_ccid
346 		FROM ozf_supp_trd_prfls_all
347 		WHERE supplier_id=p_vendor_id
348 		AND   supplier_site_id=p_vendor_site_id
349 		AND   org_id=p_org_id;
350 		RETURN(x_cost_adj_ccid);
351 	EXCEPTION WHEN NO_DATA_FOUND THEN
352 		BEGIN
353 			SELECT gl_cost_adjustment_acct
354 			INTO x_cost_adj_ccid
355 			FROM ozf_sys_parameters_all
356 			where org_id=p_org_id;
357 			RETURN(x_cost_adj_ccid);
358 		EXCEPTION WHEN NO_DATA_FOUND THEN
359 			RETURN(-1);
360 		END;
361 	END;
362 
363 FUNCTION get_pp_ap_clearing_ccid(
364 				      p_claim_id IN NUMBER,
365 				      p_org_id IN NUMBER,
366 			      	      p_vendor_id IN NUMBER,
367 			      	      p_vendor_site_id IN NUMBER
368 			      	) RETURN NUMBER IS
369 
370 x_ap_clearing_ccid	NUMBER;
371 	BEGIN
372 		x_ap_clearing_ccid:=NULL;
373 		SELECT GL_ID_DED_CLEARING
374 			INTO x_ap_clearing_ccid
375 			FROM ozf_claims_all oca,
376 			     ozf_claim_types_all_b oct
377 			where oca.org_id=p_org_id
378 			and   oct.org_id=p_org_id
379 			and   oca.claim_id=p_claim_id
380 			and   oca.claim_type_id=oct.claim_type_id;
381 			RETURN(x_ap_clearing_ccid);
382 	EXCEPTION WHEN NO_DATA_FOUND THEN
383 		BEGIN
384 			SELECT GL_ID_DED_CLEARING
385 			INTO x_ap_clearing_ccid
386 			FROM ozf_sys_parameters_all osp
387 			where osp.org_id=p_org_id;
388 			RETURN(x_ap_clearing_ccid);
389 		EXCEPTION WHEN NO_DATA_FOUND THEN
390 			RETURN(-1);
391 		END;
392 	END;
393 
394 FUNCTION get_pp_ar_clearing_ccid(
395 				      p_claim_id IN NUMBER,
396 				      p_org_id IN NUMBER,
397 			      	      p_vendor_id IN NUMBER,
398 			      	      p_vendor_site_id IN NUMBER
399 			      	    ) RETURN NUMBER IS
400 
401 x_ar_clearing_ccid		NUMBER;
402 	BEGIN
403 		x_ar_clearing_ccid:=NULL;
404 		SELECT GL_ID_DED_ADJ_CLEARING
405 			INTO x_ar_clearing_ccid
406 			FROM ozf_claims_all oca,
407 			     ozf_claim_types_all_b oct
408 			where oca.org_id=p_org_id
409 			and   oct.org_id=p_org_id
410 			and   oca.claim_id=p_claim_id
411 			and   oca.claim_type_id=oct.claim_type_id;
412 			RETURN(x_ar_clearing_ccid);
413 
414 	EXCEPTION WHEN NO_DATA_FOUND THEN
415 		BEGIN
416 			SELECT GL_ID_DED_ADJ_CLEARING
417 			INTO x_ar_clearing_ccid
418 			FROM ozf_sys_parameters_all osp
419 			where osp.org_id=p_org_id;
420 			RETURN(x_ar_clearing_ccid);
421 		EXCEPTION WHEN NO_DATA_FOUND THEN
422 			RETURN(-1);
423 		END;
424 	END get_pp_ar_clearing_ccid;
425 
426 FUNCTION get_pp_contra_liab_ccid(
427 
428 				      p_org_id IN NUMBER,
429 			      	      p_vendor_id IN NUMBER,
430 			      	      p_vendor_site_id IN NUMBER
431 			      	  ) RETURN NUMBER IS
432 
433 
434 x_contra_liab_ccid		NUMBER;
435 		--Change to pick from trade profile table..if doesnt exist there, pick
436 		--from sys parameters
437 
438 		BEGIN
439 			x_contra_liab_ccid:=NULL;
440 			SELECT gl_contra_liability_acct
441 			INTO x_contra_liab_ccid
442 			FROM ozf_supp_trd_prfls_all
443 			WHERE supplier_id=p_vendor_id
444 			AND   supplier_site_id=p_vendor_site_id
445 			AND   org_id=p_org_id;
446 			return(x_contra_liab_ccid);
447 
448 
449 		EXCEPTION WHEN NO_DATA_FOUND THEN
450 			BEGIN
451 				SELECT gl_contra_liability_acct
452 				INTO x_contra_liab_ccid
453 				FROM ozf_sys_parameters_all
454 				where org_id=p_org_id;
455 				return(x_contra_liab_ccid);
456 			EXCEPTION WHEN NO_DATA_FOUND THEN
457 				x_contra_liab_ccid:=-1;
458 				return(x_contra_liab_ccid);
459 			END;
460 		END get_pp_contra_liab_ccid;
461 
462 END DPP_XLA_EVENT_PUB;