[Home] [Help]
PACKAGE BODY: APPS.AP_ACCOUNTING_EVENTS_PKG
Source
1 PACKAGE BODY AP_ACCOUNTING_EVENTS_PKG AS
2 /* $Header: apeventb.pls 120.123.12020000.3 2012/09/26 07:11:41 aaalla ship $ */
3
4 G_CURRENT_RUNTIME_LEVEL NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5 G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
6 G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
7 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
8 G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
9 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
10 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
11 G_MODULE_NAME CONSTANT VARCHAR2(50) :='AP.PLSQL.AP_ACCOUNTING_EVENT_PKG.';
12
13 ---------------------------------------------------------------------
14 -- Definition of Accounting Event Entities, Classes and Types.
15 ---------------------------------------------------------------------
16 ---------------------------------------------------------------------
17 --INVOICES_ENTITY
18 ---------------------------------------------------------------------
19 INVOICES_ENTITY CONSTANT VARCHAR2(30) := 'AP_INVOICES';
20
21 INVOICES_CLASS CONSTANT VARCHAR2(30) := 'INVOICES';
22 INVOICE_VALIDATED_TYPE CONSTANT VARCHAR2(30) := 'INVOICE VALIDATED';
23 --INVOICE_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'INVOICE ADJUSTED';
24 INVOICE_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'INVOICE VALIDATED';
25 INVOICE_CANCELLED_TYPE CONSTANT VARCHAR2(30) := 'INVOICE CANCELLED';
26
30 CREDIT_MEMO_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'CREDIT MEMO VALIDATED';
27 CREDIT_MEMOS_CLASS CONSTANT VARCHAR2(30) := 'CREDIT MEMOS';
28 CREDIT_MEMO_VALIDATED_TYPE CONSTANT VARCHAR2(30) := 'CREDIT MEMO VALIDATED';
29 --CREDIT_MEMO_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'CREDIT MEMO ADJUSTED';
31 CREDIT_MEMO_CANCELLED_TYPE CONSTANT VARCHAR2(30) := 'CREDIT MEMO CANCELLED';
32
33 DEBIT_MEMOS_CLASS CONSTANT VARCHAR2(30) := 'DEBIT MEMOS';
34 DEBIT_MEMO_VALIDATED_TYPE CONSTANT VARCHAR2(30) := 'DEBIT MEMO VALIDATED';
35 --DEBIT_MEMO_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'DEBIT MEMO ADJUSTED';
36 DEBIT_MEMO_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'DEBIT MEMO VALIDATED';
37 DEBIT_MEMO_CANCELLED_TYPE CONSTANT VARCHAR2(30) := 'DEBIT MEMO CANCELLED';
38
39 PREPAYMENTS_CLASS CONSTANT VARCHAR2(30) := 'PREPAYMENTS';
40 PREPAYMENT_VALIDATED_TYPE CONSTANT VARCHAR2(30) := 'PREPAYMENT VALIDATED';
41 --PREPAYMENT_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'PREPAYMENT ADJUSTED';
42 PREPAYMENT_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'PREPAYMENT VALIDATED';
43 PREPAYMENT_CANCELLED_TYPE CONSTANT VARCHAR2(30) := 'PREPAYMENT CANCELLED';
44
45 PREPAYMENT_APPLICATIONS_CLASS CONSTANT VARCHAR2(30):=
46 'PREPAYMENT APPLICATIONS';
47 PREPAYMENT_APPLIED_TYPE CONSTANT VARCHAR2(30) := 'PREPAYMENT APPLIED';
48 PREPAYMENT_UNAPPLIED_TYPE CONSTANT VARCHAR2(30) := 'PREPAYMENT UNAPPLIED';
49 PREPAY_APP_ADJUSTED_TYPE CONSTANT VARCHAR2(30) :=
50 -- bug fix 5656160
51 -- 'PREPAY APPLICATION ADJUSTED';
52 'PREPAYMENT APPLICATION ADJ';
53
54 --------------------------------------------------------------------
55 --PAYMENTS_ENTITY
56 ---------------------------------------------------------------------
57
58 PAYMENTS_ENTITY CONSTANT VARCHAR2(30) := 'AP_PAYMENTS';
59
60 PAYMENTS_CLASS CONSTANT VARCHAR2(30) := 'PAYMENTS';
61 PAYMENT_CREATED_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT CREATED';
62 PAYMENT_CANCELLED_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT CANCELLED';
63 MANUAL_PAYMENT_ADJUSTED_TYPE CONSTANT VARCHAR2(30) :=
64 'MANUAL PAYMENT ADJUSTED';
65 PAYMENT_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT ADJUSTED';
66 UPGRADED_MAN_PAY_REV_TYPE CONSTANT VARCHAR2(30) :=
67 'UPGRADED MANUAL PMT REVERSED';
68 UPGRADED_MAN_PAY_ADJ_TYPE CONSTANT VARCHAR2(30) :=
69 'UPGRADED MANUAL PMT ADJUSTED';
70
71 REFUNDS_CLASS CONSTANT VARCHAR2(30) := 'REFUNDS';
72 REFUND_RECORDED_TYPE CONSTANT VARCHAR2(30) := 'REFUND RECORDED';
73 REFUND_CANCELLED_TYPE CONSTANT VARCHAR2(30) := 'REFUND CANCELLED';
74 REFUND_ADJUSTED_TYPE CONSTANT VARCHAR2(30) := 'REFUND ADJUSTED';
75 MANUAL_REFUND_ADJUSTED_TYPE CONSTANT VARCHAR2(30) :=
76 'MANUAL REFUND ADJUSTED'; --bug 10336668
77
78 FUTURE_DATED_PAYMENTS_CLASS CONSTANT VARCHAR2(30) := 'FUTURE DATED PAYMENTS';
79 PAYMENT_MATURED_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT MATURED';
80 PAYMENT_MATURITY_REVERSED_TYPE CONSTANT VARCHAR2(30):=
81 'PAYMENT MATURITY REVERSED';
82
83 PAYMENT_MATURTY_RVRSL_TRX_TYPE CONSTANT VARCHAR2(30):=
84 'PAYMENT MATURITY REVERSAL';
85 PAYMENT_MATURTY_TRX_TYPE CONSTANT VARCHAR2(30):=
86 'PAYMENT MATURITY';
87
88 PAYMENT_MATURITY_ADJUSTED_TYPE CONSTANT VARCHAR2(30):=
89 'PAYMENT MATURITY ADJUSTED';
90
91 RECONCILED_PAYMENTS_CLASS CONSTANT VARCHAR2(30) := 'RECONCILED PAYMENTS';
92 PAYMENT_CLEARED_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT CLEARED';
93 PAYMENT_UNCLEARED_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT UNCLEARED';
94 PAYMENT_CLEARING_ADJUSTED_TYPE CONSTANT VARCHAR2(30) :=
95 'PAYMENT CLEARING ADJUSTED';
96
97 PAYMENT_CLEARED_TRX_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT CLEARING';
98 PAYMENT_UNCLEARED_TRX_TYPE CONSTANT VARCHAR2(30) := 'PAYMENT UNCLEARING';
99
100 ---------------------------------------------------------------------
101 --Definition of derive_invoice_events procedure (private)
102 ---------------------------------------------------------------------
103 PROCEDURE derive_invoice_events
104 ( p_invoice_id IN NUMBER,
105 p_calling_sequence IN VARCHAR2
106 );
107
108 ---------------------------------------------------------------------
109 --Definition of create_invoice_event procedure (private)
110 ---------------------------------------------------------------------
111 FUNCTION create_invoice_event
112 ( p_event_type IN VARCHAR2,
113 p_invoice_id IN NUMBER,
114 p_event_date IN DATE,
115 p_calling_sequence IN VARCHAR2
116 ) RETURN NUMBER;
117
118 ---------------------------------------------------------------------
119 --Definition of create_payment_event procedure (private)
120 ---------------------------------------------------------------------
121 FUNCTION create_payment_event
122 ( p_event_type IN VARCHAR2,
123 p_check_id IN NUMBER,
124 p_event_date IN DATE,
125 p_calling_sequence IN VARCHAR2
126 ) RETURN NUMBER;
127
128 ---------------------------------------------------------------------
129 --Definition of is_event_complete function (private)
130 ---------------------------------------------------------------------
131 FUNCTION is_event_complete
132 ( p_doc_type IN VARCHAR2,
133 p_source_id IN NUMBER,
134 p_calling_sequence IN VARCHAR2
135 ) RETURN VARCHAR2;
136
137 ---------------------------------------------------------------------
141 ( p_check_id IN NUMBER,
138 --Definition of derive_payment_adj_event procedurs (private)
139 ---------------------------------------------------------------------
140 PROCEDURE derive_payment_adj_event
142 p_accounting_date IN DATE,
143 p_event_type IN VARCHAR2,
144 p_accounting_event_id OUT NOCOPY NUMBER,
145 p_calling_sequence IN VARCHAR2
146 );
147
148 ---------------------------------------------------------------------
149 --Definition of derive_cascade_events procedure (private)
150 ---------------------------------------------------------------------
151 -- Bug 6996047. Added accounting date parameter
152 PROCEDURE derive_cascade_events
153 ( p_invoice_id IN NUMBER,
154 p_adj_accounting_event_id IN NUMBER,
155 p_accounting_date IN DATE,
156 p_calling_sequence IN VARCHAR2
157 );
158
159 ---------------------------------------------------------------------
160 --Definition of derive_invoice_cancel_event procedure (private)
161 ---------------------------------------------------------------------
162 PROCEDURE derive_invoice_cancel_events
163 ( p_invoice_id IN NUMBER,
164 p_calling_sequence IN VARCHAR2
165 );
166
167 ---------------------------------------------------------------------
168 --Definition of no_action_pmt_event_update procedure (private)
169 ---------------------------------------------------------------------
170 PROCEDURE no_action_pmt_event_update
171 ( p_check_id IN NUMBER,
172 p_event_type_code IN VARCHAR2,
173 p_accounting_date IN DATE,
174 p_accounting_event_id IN NUMBER,
175 p_calling_sequence IN VARCHAR2
176 );
177
178 ---------------------------------------------------------------------
179 --Definition of get_event_class function (private)
180 ---------------------------------------------------------------------
181 FUNCTION get_event_class
182 ( p_event_type IN VARCHAR2,
183 p_calling_sequence IN VARCHAR2
184 ) RETURN VARCHAR2;
185
186 ---------------------------------------------------------------------
187 --Definition of event_security_context function (private)
188 ---------------------------------------------------------------------
189 FUNCTION get_event_security_context
190 ( p_org_id IN NUMBER,
191 p_calling_sequence IN VARCHAR2
192 ) RETURN XLA_EVENTS_PUB_PKG.T_SECURITY;
193
194 ---------------------------------------------------------------------
195 --Definition of get_invoice_event_source_info function (private)
196 ---------------------------------------------------------------------
197 FUNCTION get_invoice_event_source_info
198 ( p_legal_entity_id IN NUMBER,
199 p_ledger_id IN NUMBER,
200 p_invoice_id IN NUMBER,
201 p_calling_sequence IN VARCHAR2
202 ) RETURN XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
203
204 ---------------------------------------------------------------------
205 --Definition of get_payment_event_source_info function (private)
206 ---------------------------------------------------------------------
207 FUNCTION get_payment_event_source_info
208 ( p_legal_entity_id IN NUMBER,
209 p_ledger_id IN NUMBER,
210 p_check_id IN NUMBER,
211 p_calling_sequence IN VARCHAR2
212 ) RETURN XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
213
214 ---------------------------------------------------------------------
215 --Definition of get_invoice_info procedure (private)
216 ---------------------------------------------------------------------
217 PROCEDURE get_invoice_info
218 ( p_invoice_id IN NUMBER,
219 p_org_id OUT NOCOPY NUMBER,
220 p_legal_entity_id OUT NOCOPY NUMBER,
221 p_ledger_id OUT NOCOPY NUMBER,
222 p_transaction_date OUT NOCOPY DATE,
223 p_calling_sequence IN VARCHAR2
224 );
225
226 ---------------------------------------------------------------------
227 --Definition of get_payment_info procedure (private)
228 ---------------------------------------------------------------------
229 PROCEDURE get_payment_info
230 ( p_check_id IN NUMBER,
231 p_org_id OUT NOCOPY NUMBER,
232 p_legal_entity_id OUT NOCOPY NUMBER,
233 p_ledger_id OUT NOCOPY NUMBER,
234 p_calling_sequence IN VARCHAR2
235 );
236
237 ---------------------------------------------------------------------
238 --Definition of Insert_Prepayment_Header procedure (private)
239 ---------------------------------------------------------------------
240 PROCEDURE Insert_Prepayment_Header
241 ( p_invoice_id IN NUMBER,
242 p_invoice_line_number IN NUMBER,
243 p_accounting_event_id IN NUMBER,
244 p_accounting_date IN DATE,
245 p_invoice_adjustment_id IN NUMBER,
246 p_calling_sequence IN VARCHAR2
247 );
248
249 ---------------------------------------------------------------------
250 --Definition of Update_Prepayment_Header procedure (private)
251 ---------------------------------------------------------------------
252 -- Bug 4996808 Creating procedure to update the event_id on header
253 PROCEDURE Update_Prepayment_Header
254 ( p_invoice_id IN NUMBER,
255 p_invoice_line_number IN NUMBER,
256 p_accounting_event_id IN NUMBER,
257 p_accounting_date IN DATE,
258 p_transaction_type IN VARCHAR2,
259 p_calling_sequence IN VARCHAR2
260 );
261
262 --added procedure for bug 8527163
263 PROCEDURE delete_invoice_event
264 (
265 p_accounting_event_id IN NUMBER,
266 p_Invoice_Id IN NUMBER,
267 p_calling_sequence IN VARCHAR2 DEFAULT NULL
268 )
269 IS
270
271 l_curr_calling_sequence VARCHAR2(2000);
272
273 -- Logging:
274 l_procedure_name CONSTANT VARCHAR2(30) := 'delete_invoice_event';
275 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
276
277 l_event_status VARCHAR2(1);
278 l_legal_entity_id NUMBER(15);
279 l_ledger_id NUMBER(15);
280 l_org_id NUMBER(15);
281 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
282 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
283 l_transaction_date AP_INVOICES_ALL.invoice_date%TYPE;
284
285 BEGIN
286
287 l_curr_calling_sequence :=
288 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.CREATE_EVENTS';
289
290 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
291
292 l_log_msg := 'Begin of procedure '|| l_procedure_name;
293 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
294 FND_LOG.STRING(G_LEVEL_PROCEDURE,
295 G_MODULE_NAME||l_procedure_name||'.begin',
296 l_log_msg);
297 END IF;
298 get_invoice_info
299 ( p_invoice_id => p_Invoice_Id,
300 p_org_id => l_org_id, -- OUT
301 p_legal_entity_id => l_legal_entity_id, -- OUT
302 p_ledger_id => l_ledger_id, -- OUT
303 p_transaction_date => l_transaction_date, -- OUT
304 p_calling_sequence => l_curr_calling_sequence
305 );
306
307 l_event_security_context :=
308 get_event_security_context
309 ( p_org_id => l_org_id,
310 p_calling_sequence => l_curr_calling_sequence
311 );
312
313
314 l_event_source_info :=
315 get_invoice_event_source_info
316 ( p_legal_entity_id => l_legal_entity_id,
317 p_ledger_id => l_ledger_id,
318 p_invoice_id => p_Invoice_Id,
319 p_calling_sequence => l_curr_calling_sequence
320 );
321
322
323 AP_XLA_EVENTS_PKG.delete_event
324 ( p_event_source_info => l_event_source_info,
325 p_event_id => p_accounting_event_id,
326 p_valuation_method => NULL,
327 p_security_context => l_event_security_context,
328 p_calling_sequence => l_curr_calling_sequence
329 );
330
331 EXCEPTION
332 WHEN OTHERS THEN
333 IF (SQLCODE <> -20001) THEN
334 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
335 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
336 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
337 l_curr_calling_sequence);
338 FND_MESSAGE.SET_TOKEN('PARAMETERS',
339 'p_accounting_event_id = '||p_accounting_event_id
340 ||', p_Invoice_Id = '||p_Invoice_Id);
341 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
342 END IF;
343 APP_EXCEPTION.RAISE_EXCEPTION();
344 END;
345
346
347 /*============================================================================
348 | PROCEDURE - CREATE_EVENTS (PUBLIC)
349 |
350 | DESCRIPTION
351 | This procedure is the single point of entry for the creation of all
352 | events resulting from user actions. Events not resulting from user
353 | actions (i.e. Cascade events and Commitment events which are created
354 | automatically as a result of another event being created) will be
355 | created from the procedure which is called by Create_Events.
356 |
357 | PRAMETERS
358 | p_event_type:Possible values:
359 | 'INVOICES', 'INVOICE CANCELLATION', 'PAYMENT',
360 | 'PAYMENT ADJUSTMENT','UPGRADED MANUAL REVERSED PAYMENT',
361 | 'UPGRADED MANUAL ADJUSTED PAYMENT','PAYMENT CANCELLATION',
362 | 'PAYMENT CLEARING', 'PAYMENT MATURITY',
363 | 'PAYMENT MATURITY REVERSAL', 'PAYMENT BATCH'
364 | p_doc_type(IN):This parameter will be necessary to create events
365 | under the classes Credit Memos, Debit Memos, Prpayments,
366 | Refunds, Future Dated payments and Reconciled Payments.
367 | Possible values:
368 | p_event_type 'INVOICES' or 'INVOICE CANCELLATION':
369 | 'AWT', 'CREDIT,DEBIT',' EXPENSE REPORT',
370 | 'MIXED','INTEREST', 'PREPAYMENT','QUICKDEFAULT',
371 | 'QUICKMATCH', 'STANDARD'
372 | p_event_type: 'PAYMENT' or 'PAYMENT CANCELLATION':
373 | 'A' - payment batches
374 | 'M' - manual payments
375 | 'Q' - quick payments
376 | 'R' - refunds
377 | P_doc_id: check_id for payment
378 | invoice_id for invoice
379 | P_accounting_date: Accounting Date
380 | p_accounting_event_id:Accounting event id generated in this
381 | procedure
382 | p_checkrun_name: Payment batch name
383 | p_calling_sequence:Debug information
384 |
385 | KNOWN ISSUES:
386 |
387 | NOTES:
388 |
389 | MODIFICATION HISTORY
390 | Date Author Description of Change
391 |
392 *===========================================================================*/
393
394 PROCEDURE Create_Events(p_event_type IN VARCHAR2,
395 p_doc_type IN VARCHAR2,
396 p_doc_id IN NUMBER DEFAULT NULL,
397 p_accounting_date IN DATE,
398 p_accounting_event_id OUT NOCOPY NUMBER,
399 p_checkrun_name IN VARCHAR2,
400 p_calling_sequence IN VARCHAR2 DEFAULT NULL)
401 IS
402
403 l_event_type VARCHAR2(30);
404 l_curr_calling_sequence VARCHAR2(2000);
405
406 -- Logging:
407 l_procedure_name CONSTANT VARCHAR2(30) := 'Create_Events';
408 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
409
410 BEGIN
411
412 l_curr_calling_sequence :=
413 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.CREATE_EVENTS';
414
415 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
416
417 l_log_msg := 'Begin of procedure '|| l_procedure_name;
418 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
419 FND_LOG.STRING(G_LEVEL_PROCEDURE,
420 G_MODULE_NAME||l_procedure_name||'.begin',
421 l_log_msg);
422 END IF;
423
424 ----------------------------------------------------------------
425 -- Calling private procedure to handle differenct events
426 ----------------------------------------------------------------
427
428 CASE (p_event_type)
429
430 --------------------------------------------------------------
431 -- CASE: 'INVOICES'
432 --------------------------------------------------------------
433 WHEN ('INVOICES') THEN
434
435 l_log_msg := 'Before calling procedure Derive_invoice_events';
436 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
437 FND_LOG.STRING(G_LEVEL_PROCEDURE,
438 G_MODULE_NAME || l_procedure_name,
439 l_log_msg);
440 END IF;
441
442 derive_invoice_events(p_invoice_id => p_doc_id,
443 p_calling_sequence => l_curr_calling_sequence);
444
445 l_log_msg := 'After Calling Derive_invoice_events procedure';
446 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
447 FND_LOG.STRING(G_LEVEL_PROCEDURE,
448 G_MODULE_NAME || l_procedure_name,
449 l_log_msg);
450 END IF;
451
452 -------------------------------------------------------------
453 -- CASE: 'INVOICE CANCELLATION
454 -------------------------------------------------------------
455 WHEN ('INVOICE CANCELLATION') THEN
456
457 l_log_msg := 'Before calling procedure Derive_invoice_cancel_events';
458 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
459 FND_LOG.STRING(G_LEVEL_PROCEDURE,
460 G_MODULE_NAME || l_procedure_name,
461 l_log_msg);
462 END IF;
463
464 derive_invoice_cancel_events
465 (p_invoice_id => p_doc_id,
466 p_calling_sequence => l_curr_calling_sequence);
467
468 l_log_msg := 'After calling procedure Derive_invoice_cancel_event';
469 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
470 FND_LOG.STRING(G_LEVEL_PROCEDURE,
471 G_MODULE_NAME || l_procedure_name,
472 l_log_msg);
473 END IF;
474 ------------------------------------------------------------
475 -- CASE: 'PAYMENT'
476 ------------------------------------------------------------
477 WHEN ('PAYMENT') THEN
478
479 l_log_msg := 'Before calling procedure create_payment_event';
480 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
481 FND_LOG.STRING(G_LEVEL_PROCEDURE,
482 G_MODULE_NAME || l_procedure_name,
483 l_log_msg);
484 END IF;
485
486 IF (p_doc_type = 'R') THEN
487 l_event_type := REFUND_RECORDED_TYPE;
488 ELSE
489 l_event_type := PAYMENT_CREATED_TYPE;
490 END IF;
491
492 p_accounting_event_id :=
493 create_payment_event(p_event_type => l_event_type,
494 p_check_id => p_doc_id,
495 p_event_date => p_accounting_date,
496 p_calling_sequence => l_curr_calling_sequence);
497
498 l_log_msg := 'p_accounting_event_id = '|| p_accounting_event_id;
499 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
500 FND_LOG.STRING(G_LEVEL_STATEMENT,
501 G_MODULE_NAME || l_procedure_name,
502 l_log_msg);
503 END IF;
504
505 l_log_msg := 'After calling procedure create_payment_event';
506 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
507 FND_LOG.STRING(G_LEVEL_PROCEDURE,
508 G_MODULE_NAME || l_procedure_name,
509 l_log_msg);
510 END IF;
511 ------------------------------------------------------------
512 -- CASE: 'REFUND ADJUSTMENT'
513 ------------------------------------------------------------
514 WHEN ('REFUND ADJUSTMENT') THEN --bug 10336668
515
516
517 l_log_msg := 'Before calling procedure derive_payment_adj_event';
518 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
519 FND_LOG.STRING(G_LEVEL_PROCEDURE,
520 G_MODULE_NAME || l_procedure_name,
521 l_log_msg);
522 END IF;
523
524 derive_payment_adj_event
525 (p_check_id => p_doc_id,
526 p_accounting_date => p_accounting_date,
527 p_event_type => MANUAL_REFUND_ADJUSTED_TYPE,
528 p_accounting_event_id => p_accounting_event_id, --OUT
529 p_calling_sequence => l_curr_calling_sequence);
530
531 l_log_msg := 'After calling procedure derive_payment_adj_event';
532 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
533 FND_LOG.STRING(G_LEVEL_PROCEDURE,
534 G_MODULE_NAME || l_procedure_name,
535 l_log_msg);
536 END IF;
537 ------------------------------------------------------------
538 -- CASE: 'PAYMENT ADJUSTMENT'
539 ------------------------------------------------------------
540 WHEN ('PAYMENT ADJUSTMENT') THEN
541
542 l_log_msg := 'Before calling procedure derive_payment_adj_event';
543 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
544 FND_LOG.STRING(G_LEVEL_PROCEDURE,
545 G_MODULE_NAME || l_procedure_name,
546 l_log_msg);
547 END IF;
548
549 derive_payment_adj_event
550 (p_check_id => p_doc_id,
551 p_accounting_date => p_accounting_date,
552 p_event_type => MANUAL_PAYMENT_ADJUSTED_TYPE,
553 p_accounting_event_id => p_accounting_event_id, --OUT
554 p_calling_sequence => l_curr_calling_sequence);
555
556 l_log_msg := 'After calling procedure derive_payment_adj_event';
557 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
558 FND_LOG.STRING(G_LEVEL_PROCEDURE,
559 G_MODULE_NAME || l_procedure_name,
560 l_log_msg);
561 END IF;
562 ------------------------------------------------------------
563 -- CASE: 'UPGRADED MANUAL REVERSED PAYMENT'
564 ------------------------------------------------------------
565 WHEN ('UPGRADED MANUAL REVERSED PAYMENT') THEN
566
567 l_log_msg := 'Before calling procedure derive_payment_adj_event';
568 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
569 FND_LOG.STRING(G_LEVEL_PROCEDURE,
570 G_MODULE_NAME || l_procedure_name,
571 l_log_msg);
572 END IF;
573
574 derive_payment_adj_event
575 (p_check_id => p_doc_id,
576 p_accounting_date => p_accounting_date,
577 p_event_type => UPGRADED_MAN_PAY_REV_TYPE,
578 p_accounting_event_id => p_accounting_event_id, --OUT
579 p_calling_sequence => l_curr_calling_sequence);
580
581 l_log_msg := 'After calling procedure derive_payment_adj_event';
582 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
583 FND_LOG.STRING(G_LEVEL_PROCEDURE,
584 G_MODULE_NAME || l_procedure_name,
585 l_log_msg);
586 END IF;
587
588 ------------------------------------------------------------
589 -- CASE: 'UPGRADED MANUAL ADJUSTED PAYMENT'
590 ------------------------------------------------------------
591 WHEN ('UPGRADED MANUAL ADJUSTED PAYMENT') THEN
592
593 l_log_msg := 'Before calling procedure derive_payment_adj_event';
594 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
595 FND_LOG.STRING(G_LEVEL_PROCEDURE,
596 G_MODULE_NAME || l_procedure_name,
597 l_log_msg);
598 END IF;
599
600 derive_payment_adj_event
601 (p_check_id => p_doc_id,
602 p_accounting_date => p_accounting_date,
603 p_event_type => UPGRADED_MAN_PAY_ADJ_TYPE,
604 p_accounting_event_id => p_accounting_event_id, --OUT
605 p_calling_sequence => l_curr_calling_sequence);
606
607 l_log_msg := 'After calling procedure derive_payment_adj_event';
608 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
609 FND_LOG.STRING(G_LEVEL_PROCEDURE,
610 G_MODULE_NAME || l_procedure_name,
611 l_log_msg);
612 END IF;
613
614 ------------------------------------------------------------
615 -- CASE: 'PAYMENT CANCELLATION'
616 ------------------------------------------------------------
617 WHEN ('PAYMENT CANCELLATION') THEN
618
619 IF (p_doc_type = 'R') THEN
620 l_event_type := REFUND_CANCELLED_TYPE;
621 ELSE
622 l_event_type := PAYMENT_CANCELLED_TYPE;
623 END IF;
624
625 ----------------------------------------------------
626 -- Step 1: Create payment event
627 ----------------------------------------------------
628 l_log_msg := 'Before calling procedure create_payment_event';
629 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
630 FND_LOG.STRING(G_LEVEL_PROCEDURE,
631 G_MODULE_NAME || l_procedure_name,
632 l_log_msg);
633 END IF;
634
635
636 p_accounting_event_id :=
637 create_payment_event(p_event_type => l_event_type,
638 p_check_id => p_doc_id,
639 p_event_date => p_accounting_date,
640 p_calling_sequence => l_curr_calling_sequence);
641
642 l_log_msg := 'p_accounting_event_id = '|| p_accounting_event_id;
643 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
647 END IF;
644 FND_LOG.STRING(G_LEVEL_STATEMENT,
645 G_MODULE_NAME || l_procedure_name,
646 l_log_msg);
648
649 l_log_msg := 'After calling Procedure create_payment_event';
650 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
651 FND_LOG.STRING(G_LEVEL_PROCEDURE,
652 G_MODULE_NAME || l_procedure_name,
653 l_log_msg);
654 END IF;
655
656
657
658 -----------------------------------------------------
659 -- Step 2: calling update payment event to 'No Action'
660 -----------------------------------------------------
661 l_log_msg := 'comment out procedure no_action_pmt_event_update';
662 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
663 FND_LOG.STRING(G_LEVEL_PROCEDURE,
664 G_MODULE_NAME || l_procedure_name,
665 l_log_msg);
666 END IF;
667
668 -- Bug 4927664 comment out the NoAction update
669 /* start to comment out
670 no_action_pmt_event_update(p_check_id => p_doc_id,
671 p_event_type_code => l_event_type,
672 p_accounting_date => p_accounting_date,
673 p_accounting_event_id => p_accounting_event_id,
674 p_calling_sequence => l_curr_calling_sequence);
675
676 l_log_msg := 'After calling procedure no_action_pmt_event_update';
677 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
678 FND_LOG.STRING(G_LEVEL_PROCEDURE,
679 G_MODULE_NAME || l_procedure_name,
680 l_log_msg);
681 END IF; End of comment out */
682
683 ------------------------------------------------------------
684 -- CASE: 'PAYMENT CLEARING'
685 ------------------------------------------------------------
686 WHEN ('PAYMENT CLEARING') THEN
687
688
689 l_log_msg := 'Before calling procedure create_payment_event';
690 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
691 FND_LOG.STRING(G_LEVEL_PROCEDURE,
692 G_MODULE_NAME || l_procedure_name,
693 l_log_msg);
694 END IF;
695
696 p_accounting_event_id :=
697 create_payment_event(p_event_type => PAYMENT_CLEARED_TYPE,
698 p_check_id => p_doc_id,
699 p_event_date => p_accounting_date,
700 p_calling_sequence => l_curr_calling_sequence);
701
702 l_log_msg := 'p_accounting_event_id = '|| p_accounting_event_id;
703 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
704 FND_LOG.STRING(G_LEVEL_STATEMENT,
705 G_MODULE_NAME || l_procedure_name,
706 l_log_msg);
707 END IF;
708
709 l_log_msg := 'After calling procedure create_payment_event';
710 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
711 FND_LOG.STRING(G_LEVEL_PROCEDURE,
712 G_MODULE_NAME || l_procedure_name,
713 l_log_msg);
714 END IF;
715
716 ------------------------------------------------------------
717 -- CASE: 'PAYMENT UNCLEARING'
718 ------------------------------------------------------------
719 WHEN ('PAYMENT UNCLEARING') THEN
720
721 ----------------------------------------------------
722 -- Step 1: Create payment event
723 ----------------------------------------------------
724 l_log_msg := 'Before calling procedure create_payment_event';
725 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
726 FND_LOG.STRING(G_LEVEL_PROCEDURE,
727 G_MODULE_NAME || l_procedure_name,
728 l_log_msg);
729 END IF;
730
731 p_accounting_event_id :=
732 create_payment_event
733 ( p_event_type => PAYMENT_UNCLEARED_TYPE,
734 p_check_id => p_doc_id,
735 p_event_date => p_accounting_date,
736 p_calling_sequence => l_curr_calling_sequence
737 );
738
739 l_log_msg := 'p_accounting_event_id = '|| p_accounting_event_id;
740 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
741 FND_LOG.STRING(G_LEVEL_STATEMENT,
742 G_MODULE_NAME || l_procedure_name,
743 l_log_msg);
744 END IF;
745
746 l_log_msg := 'After calling procedure create_payment_event';
747 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
748 FND_LOG.STRING(G_LEVEL_PROCEDURE,
749 G_MODULE_NAME || l_procedure_name,
750 l_log_msg);
751 END IF;
752
753 ----------------------------------------------------
754 -- Step 2: Update payment event to 'No Action'
755 ----------------------------------------------------
756 l_log_msg := 'comment out calling procedure no_action_pmt_event_update';
757 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
758 FND_LOG.STRING(G_LEVEL_PROCEDURE,
759 G_MODULE_NAME || l_procedure_name,
760 l_log_msg);
761 END IF;
762
763 -- Bug 4927664 comment out the NoAction update
764 /* start to comment out
765 no_action_pmt_event_update
766 ( p_check_id => p_doc_id,
767 p_event_type_code => PAYMENT_UNCLEARED_TYPE,
768 p_accounting_date => p_accounting_date,
769 p_accounting_event_id => p_accounting_event_id,
770 p_calling_sequence => l_curr_calling_sequence
771 );
772
773 l_log_msg := 'After calling procedure no_action_pmt_event_update';
774 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
775 FND_LOG.STRING(G_LEVEL_PROCEDURE,
776 G_MODULE_NAME || l_procedure_name,
777 l_log_msg);
778 END IF; End of comment out */
779
780 ------------------------------------------------------------
781 -- CASE: 'PAYMENT MATURITY'
782 ------------------------------------------------------------
783 WHEN ('PAYMENT MATURITY') THEN
784
785 l_log_msg := 'Before calling procedure create_payment_event';
786 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
787 FND_LOG.STRING(G_LEVEL_PROCEDURE,
788 G_MODULE_NAME || l_procedure_name,
789 l_log_msg);
790 END IF;
791
792 p_accounting_event_id :=
793 create_payment_event
794 ( p_event_type => PAYMENT_MATURED_TYPE,
795 p_check_id => p_doc_id,
796 p_event_date => p_accounting_date,
797 p_calling_sequence => l_curr_calling_sequence
798 );
799
800 l_log_msg := 'p_accounting_event_id = '|| p_accounting_event_id;
801 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
802 FND_LOG.STRING(G_LEVEL_STATEMENT,
803 G_MODULE_NAME || l_procedure_name,
804 l_log_msg);
805 END IF;
806
807 l_log_msg := 'After calling procedure create_payment_event';
808 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
809 FND_LOG.STRING(G_LEVEL_PROCEDURE,
810 G_MODULE_NAME || l_procedure_name,
811 l_log_msg);
812 END IF;
813
814 ------------------------------------------------------------
815 -- CASE: 'PAYMENT MATURITY REVERSAL'
816 ------------------------------------------------------------
817 WHEN ('PAYMENT MATURITY REVERSAL') THEN
818
819 ----------------------------------------------------
820 -- Step 1: Create payment event
821 ----------------------------------------------------
822 l_log_msg := 'Before calling procedure create_payment_event';
823 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
824 FND_LOG.STRING(G_LEVEL_PROCEDURE,
825 G_MODULE_NAME || l_procedure_name,
826 l_log_msg);
827 END IF;
828
829 p_accounting_event_id :=
830 create_payment_event
831 ( p_event_type => PAYMENT_MATURITY_REVERSED_TYPE,
832 p_check_id => p_doc_id,
833 p_event_date => p_accounting_date,
834 p_calling_sequence => l_curr_calling_sequence
835 );
836
837 l_log_msg := 'p_accounting_event_id = '|| p_accounting_event_id;
838 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
839 FND_LOG.STRING(G_LEVEL_STATEMENT,
840 G_MODULE_NAME || l_procedure_name,
841 l_log_msg);
842 END IF;
843
844 l_log_msg := 'After calling procedure create_payment_event';
845 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
846 FND_LOG.STRING(G_LEVEL_PROCEDURE,
847 G_MODULE_NAME || l_procedure_name,
848 l_log_msg);
849 END IF;
850
851 ----------------------------------------------------
852 -- Step 2: Update payment event status to 'No Action'
853 ----------------------------------------------------
854 l_log_msg := 'comment out procedure no_action_pmt_event_update';
855 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
856 FND_LOG.STRING(G_LEVEL_PROCEDURE,
857 G_MODULE_NAME || l_procedure_name,
858 l_log_msg);
859 END IF;
860
861 -- Bug 4927664 comment out the NoAction update
862 /* start to comment out
863 no_action_pmt_event_update
864 ( p_check_id => p_doc_id,
865 p_event_type_code => PAYMENT_MATURITY_REVERSED_TYPE,
866 p_accounting_date => p_accounting_date,
867 p_accounting_event_id => p_accounting_event_id,
868 p_calling_sequence => l_curr_calling_sequence
869 );
870
871 l_log_msg := 'After Calling procedure no_pmt_event_update';
872 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
873 FND_LOG.STRING(G_LEVEL_PROCEDURE,
874 G_MODULE_NAME || l_procedure_name,
875 l_log_msg);
876 END IF; End of comment out */
877
878 ELSE --other p_event_type
879
880 l_log_msg := 'Exception calling sequence '
881 ||l_curr_calling_sequence
882 ||' Error:Wrong p_event_type= '
883 ||p_event_type;
884 IF (G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL ) THEN
885 FND_LOG.STRING(G_LEVEL_EXCEPTION,
886 G_MODULE_NAME || l_procedure_name,
887 l_log_msg);
888 END IF;
889
890 APP_EXCEPTION.RAISE_EXCEPTION();
891
892 END CASE; --p_event_type
893
894 l_log_msg := 'End of procedure '|| l_procedure_name;
895 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
896 FND_LOG.STRING(G_LEVEL_PROCEDURE,
897 G_MODULE_NAME||l_procedure_name||'.end',
898 l_log_msg);
899 END IF;
900
901 EXCEPTION
902 WHEN OTHERS THEN
903 IF (SQLCODE <> -20001) THEN
904 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
905 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
906 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
907 l_curr_calling_sequence);
908 FND_MESSAGE.SET_TOKEN('PARAMETERS',
909 'p_doc_type = '||p_doc_type
910 ||', p_doc_id = '||p_doc_id
911 ||', p_accounting_date = '||p_accounting_date
912 ||', p_checkrun_name = '||p_checkrun_name);
913 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
914 END IF;
915 APP_EXCEPTION.RAISE_EXCEPTION();
916
917 END create_events;
918
919 /*============================================================================
920 | PROCEDURE - DERIVE_INVOICE_EVENTS (PRIVATE)
921 |
922 | DESCRIPTION
923 | This procedure is responsible for creating Invoice Validated, Invoice
924 | Adjusted (and corresponding events for Credit Memos, Debit Memos, and | Prepayments), Prepayment Applied and Unapplied Events.
925 |
926 | PRAMETERS
927 | p_invoice_id: Invoice ID
928 | p_calling_sequence: Debug info
929 |
930 | KNOWN ISSUES:
931 |
932 | NOTES:
933 |
934 | MODIFICATION HISTORY
935 | Date Author Description of Change
936 |
937 *===========================================================================*/
938
939 PROCEDURE Derive_Invoice_Events (p_invoice_id IN NUMBER,
940 p_calling_sequence IN VARCHAR2)
941 IS
942
943 ----------------------------------------------------------------------------
944 -- We will check if the invoice is approved and that an event does not
945 -- already exist for this distribution. If encumbrances are being used, we
946 -- only want to select distributions with a match_status_flag of 'A',
947 -- otherwise we want to choose distributions with a status of 'A' or 'T'.
948 -----------------------------------------------------------------------------
949 --bug 7421528 commented the previous select statement and added a new one.
950
951 CURSOR Inv_event_dists
952 IS
953 SELECT accounting_date accounting_date,
954 SUM(amount) dist_amount,
955 DECODE (line_type_lookup_code, 'PREPAY','PREPAY','OTHER') dist_type,
956 /*decode (line_type_lookup_code, 'PREPAY', invoice_distribution_id, -1)
957 invoice_distribution_id,*/
958 /* Bug 6931461: invoice_line_number invoice_line_number */
959 DECODE(line_type_lookup_code, 'PREPAY', invoice_line_number, 1)
960 invoice_line_number
961 FROM
962 (
963 SELECT accounting_date ,
964 accounting_event_id ,
965 invoice_line_number,
966 invoice_id ,
967 amount ,
968 line_type_lookup_code ,
969 parent_reversal_id ,
970 set_of_books_id ,
971 org_id ,
972 prepay_distribution_id ,
973 charge_applicable_to_dist_id ,
974 cancellation_flag ,
975 match_status_flag ,
976 awt_invoice_payment_id
977 FROM ap_invoice_distributions_all
978 UNION
979 SELECT accounting_date ,
980 accounting_event_id ,
981 invoice_line_number,
982 invoice_id ,
983 amount ,
984 line_type_lookup_code ,
985 parent_reversal_id ,
986 set_of_books_id ,
987 org_id ,
988 prepay_distribution_id ,
989 charge_applicable_to_dist_id ,
990 cancellation_flag ,
991 match_status_flag ,
992 awt_invoice_payment_id
993 FROM ap_self_assessed_tax_dist_all ) AID,
994 financials_system_parameters FSP
995 WHERE AID.invoice_id = P_invoice_id
996 AND AID.awt_invoice_payment_id IS NULL
997 AND AID.org_id = FSP.org_id -- Bug 4516136
998 AND AID.set_of_books_id = FSP.set_of_books_id
999 /*Bug 5608968 Avoid full index scan of fsp */
1000 AND (AID.prepay_distribution_id IS NULL -- prepay_tax_parent_id obsoleted
1001 OR AID.charge_Applicable_to_dist_id IS NULL) --Added for bug 4643339
1002 AND AID.accounting_event_id IS NULL
1003 AND NVL(AID.cancellation_flag, 'N') = 'N' -- replaced cancellation_date
1004 AND ( (NVL(FSP.purch_encumbrance_flag,'N') = 'N'
1005 AND match_Status_flag IN ('T','A') )
1006 OR ((NVL(FSP.purch_encumbrance_flag,'N') = 'Y'
1007 AND match_Status_flag = 'A')))
1008 /*since 'OTHER' comes before 'PREPAY' alphabetically, a prepayment
1009 event will not be created first */
1010 GROUP BY accounting_date,
1011 DECODE (line_type_lookup_code, 'PREPAY','PREPAY','OTHER'),
1012 /* Bug 6718967. Fix to create two events for prepayment applied
1013 and unapplied. */
1014 DECODE (line_type_lookup_code, 'PREPAY', DECODE(NVL(parent_reversal_id,-99)
1015 , -99, 1, 2), 3),
1016 /* decode (line_type_lookup_code, 'PREPAY',
1017 invoice_distribution_id, -1), */
1018 DECODE(line_type_lookup_code, 'PREPAY', invoice_line_number, 1) --Bug6931461
1019 ORDER BY dist_type,
1020 accounting_date;
1021
1022 CURSOR prepay_adj_events(l_prepay_app_event_id NUMBER,
1023 l_accounting_date DATE) is
1024 SELECT APPH.accounting_event_id
1025 FROM AP_PREPAY_HISTORY_ALL APPH, AP_INVOICE_DISTRIBUTIONS AID
1026 WHERE APPH.related_prepay_app_Event_id = l_prepay_app_event_id
1027 AND APPH.invoice_adjustment_event_id = AID.accounting_event_id
1028 AND nvl(APPH.posted_flag,'N') = 'N';
1029 --AND AID.accounting_date = l_accounting_date; Commented for bug 10132577
1030
1031 l_event_num NUMBER;
1032 l_accounting_event_id NUMBER := NULL;
1033
1034 l_event_type VARCHAR2(30);
1035 l_event_class VARCHAR2(30);
1036 l_same_gl_prepay_date DATE;
1037 l_accounting_date DATE;
1038 l_pay_accounting_event_id NUMBER;
1039 l_prepay_event_id NUMBER;
1040 l_event_status VARCHAR2(1);
1041 l_prepay_Adj_count NUMBER;
1042
1043 l_legal_entity_id NUMBER(15);
1044 l_ledger_id NUMBER(15);
1045 l_org_id NUMBER(15);
1046 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
1047 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
1048 l_prepay_app_event_id NUMBER;
1049 l_inv_adj_event_id NUMBER;
1050 l_curr_calling_sequence VARCHAR2(2000);
1051 l_transaction_date AP_INVOICES_ALL.invoice_date%TYPE;
1052
1053 -- Logging:
1054 l_procedure_name CONSTANT VARCHAR2(30) := 'DERIVE_INVOICE_EVENTS';
1055 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
1056
1057 TYPE l_inv_dist_list IS TABLE OF ap_invoice_distributions.invoice_distribution_id%TYPE;
1058 l_inv_dist_tab l_inv_dist_list;
1059
1060 BEGIN
1061
1062 l_curr_calling_sequence :=
1063 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.DERIVE_INVOICE_EVENTS';
1064
1065 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1066
1067 l_log_msg := 'Begin of procedure '|| l_procedure_name;
1068 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1069 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1070 G_MODULE_NAME||l_procedure_name||'.begin',
1071 l_log_msg);
1072 END IF;
1073
1074 --------------------------------------------------------------------
1075 -- Figure out the existing adjustment event id.
1076 --------------------------------------------------------------------
1077 FOR event_dist_rec IN inv_event_dists LOOP
1078
1079 l_accounting_event_id := NULL;
1080 l_pay_accounting_event_id := NULL; --bug9973070
1081 l_prepay_event_id := NULL; --bug9973070
1082
1083 SELECT COUNT(distinct(accounting_event_id))
1084 INTO l_event_num
1085 FROM ap_invoice_distributions
1086 WHERE invoice_id = p_invoice_id;
1087
1088
1089
1090 -- Added for prepayment events
1091 IF (event_dist_rec.dist_type = 'PREPAY') THEN
1092
1093 IF (event_dist_rec.dist_amount < 0) THEN
1094 l_event_type := PREPAYMENT_APPLIED_TYPE;
1095 ELSE
1096 l_event_type := PREPAYMENT_UNAPPLIED_TYPE;
1097 END IF;
1098 l_event_class := PREPAYMENT_APPLICATIONS_CLASS;
1099
1100 -- if an accounting event already exists for the invoice line related
1101 -- to this distribution
1102 -- then stamp this distribution with that the ID of that
1103 BEGIN
1104 --11659317
1105 SELECT distinct(AID.accounting_event_id)
1106 INTO l_accounting_event_id
1107 FROM ap_invoice_distributions AID,
1108 ap_invoice_lines AIL,
1109 xla_events xe
1110 WHERE AID.accounting_date = event_dist_rec.accounting_date
1111 AND AIL.invoice_id = P_invoice_id
1112 AND AIL.line_number = event_dist_rec.invoice_line_number
1113 AND AIL.invoice_id = AID.invoice_id
1114 AND AIL.line_number = AID.invoice_line_number
1115 AND AID.accounting_date = AIL.accounting_date
1116 AND AID.line_type_lookup_code = 'PREPAY'
1117 AND nvl(posted_flag,'N') = 'N'
1118 AND sign(AID.amount) = sign(event_dist_rec.dist_amount)
1119 AND AID.accounting_event_id IS NOT NULL
1120 AND xe.application_id =200
1121 AND xe.event_id =AID.accounting_event_id
1122 AND xe.process_status_code <> 'P';
1123
1124 EXCEPTION
1125 WHEN NO_DATA_FOUND THEN
1126 l_log_msg := 'When no_data_found';
1127 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1128 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1129 G_MODULE_NAME || l_procedure_name,
1130 l_log_msg);
1131 END IF;
1132
1133 l_log_msg := 'Before calling procedure create_invoice_event';
1134 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1135 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1136 G_MODULE_NAME || l_procedure_name,
1137 l_log_msg);
1138 END IF;
1139
1140 l_accounting_event_id :=
1141 create_invoice_event (p_event_type => l_event_type,
1142 p_invoice_id => p_invoice_id,
1143 p_event_date => event_dist_rec.accounting_date,
1144 p_calling_sequence => l_curr_calling_sequence);
1145
1146
1147 l_log_msg := 'After calling procedure create_invoice_event';
1148 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1149 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1150 G_MODULE_NAME || l_procedure_name,
1151 l_log_msg);
1152 END IF;
1153
1154 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1155 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1156 G_MODULE_NAME || l_procedure_name,
1157 l_log_msg);
1158 END IF;
1159
1160 -- Bug 4996808. Calling the update prepay header instead of the
1161 -- insert since the prepay header will be created during validation
1162 -- before the events are created.
1163 Update_Prepayment_Header
1164 (p_invoice_id ,
1165 p_invoice_line_number => event_dist_rec.invoice_line_number,
1166 p_accounting_event_id => l_accounting_event_id,
1167 p_accounting_date => event_dist_rec.accounting_date,
1168 p_transaction_type => l_event_type,
1169 p_calling_sequence => l_curr_calling_sequence);
1170
1171 l_log_msg := 'After calling procedure update_prepayment_header';
1172 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1173 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1174 G_MODULE_NAME || l_procedure_name,
1175 l_log_msg);
1176 END IF;
1177 END;
1178
1179 IF (l_event_type = PREPAYMENT_UNAPPLIED_TYPE) THEN
1180
1181 -- Update event Prepay Application Adjustment events related to this
1182 -- Prepayment Application to 'No Action'
1183 -- Bug 8547225, posted_flag should be 'N' for AID, not AID2
1184
1185 BEGIN
1186 SELECT MAX(AID2.accounting_event_id)
1187 INTO l_prepay_app_event_id
1188 FROM AP_INVOICE_DISTRIBUTIONS AID, AP_INVOICE_DISTRIBUTIONS AID2
1189 WHERE AID.invoice_id = p_invoice_id
1190 AND AID.invoice_line_number = event_dist_rec.invoice_line_number
1191 AND AID.parent_reversal_id = AID2.invoice_distribution_id
1192 --AND AID.accounting_date = AID2.accounting_date Commented for bug 10132577
1193 AND nvl(AID.posted_flag,'N') = 'N';
1194
1195 EXCEPTION
1196 WHEN NO_DATA_FOUND THEN
1197 l_prepay_app_event_id := -1;
1198
1199 END;
1200
1201 IF l_prepay_app_event_id <> -1 THEN
1202
1203 l_log_msg := 'Before calling procedure get_invoice_info';
1204 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1205 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1206 G_MODULE_NAME || l_procedure_name,
1207 l_log_msg);
1208 END IF;
1209
1210 get_invoice_info(p_invoice_id => p_invoice_id,
1211 p_org_id => l_org_id, -- OUT
1212 p_legal_entity_id => l_legal_entity_id, -- OUT
1213 p_ledger_id => l_ledger_id, -- OUT
1214 p_transaction_date => l_transaction_date, -- OUT
1215 p_calling_sequence => l_curr_calling_sequence);
1216
1217 l_log_msg := 'After calling procedure get_insert_info executed';
1218 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1219 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1220 G_MODULE_NAME || l_procedure_name,
1221 l_log_msg);
1222 END IF;
1223
1224 l_log_msg :='Before calling proc get_event_security_context';
1225 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1226 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1227 G_MODULE_NAME || l_procedure_name,
1228 l_log_msg);
1229 END IF;
1230
1231 l_event_security_context :=
1232 get_event_security_context(p_org_id => l_org_id,
1233 p_calling_sequence => l_curr_calling_sequence);
1234
1235 l_log_msg := 'After calling proc get_event_security_context';
1236 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1237 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1238 G_MODULE_NAME || l_procedure_name,
1242 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1239 l_log_msg);
1240 END IF;
1241
1243 l_log_msg := 'Before calling proc get_invoice_event_source_info';
1244 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1245 G_MODULE_NAME || l_procedure_name,
1246 l_log_msg);
1247 END IF;
1248
1249 l_event_source_info :=
1250 get_invoice_event_source_info
1251 (p_legal_entity_id => l_legal_entity_id,
1252 p_ledger_id => l_ledger_id,
1253 p_invoice_id => p_invoice_id,
1254 p_calling_sequence => l_curr_calling_sequence);
1255
1256 l_log_msg := 'After calling proc get_invoice_envent_source_info';
1257 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1258 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1259 G_MODULE_NAME || l_procedure_name,
1260 l_log_msg);
1261 END IF;
1262
1263 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.UPDATE_EVENT';
1264 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1265 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1266 G_MODULE_NAME || l_procedure_name,
1267 l_log_msg);
1268 END IF;
1269
1270 -- Bug 4748373. Modified the event type to PREPAYMENT UNAPPLIED from
1271 -- PREPAYMENT APPLICATION UNAPPLIED
1272 --Update the Prepayment Unapplication event to No Action
1273
1274 -- Bug 4927664. For now comment out the event NOACTION update
1275 /* Start comment out
1276 AP_XLA_EVENTS_PKG.UPDATE_EVENT
1277 (p_event_source_info => l_event_source_info,
1278 p_event_id => l_Accounting_Event_id,
1279 p_event_type_code => 'PREPAYMENT UNAPPLIED',
1280 p_event_date => NULL,
1281 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
1282 p_valuation_method => NULL,
1283 p_security_context => l_event_security_context,
1284 p_calling_sequence => l_curr_calling_sequence);
1285
1286 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.UPDATE_EVENT';
1287 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1288 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1289 G_MODULE_NAME || l_procedure_name,
1290 l_log_msg);
1291 END IF; End comment out */
1292
1293 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.UPDATE_EVENT';
1294 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1295 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1296 G_MODULE_NAME || l_procedure_name,
1297 l_log_msg);
1298 END IF;
1299
1300 -- Bug 4748373. Modified the event type to PREPAYMENT APPLIED from
1301 -- PREPAYMENT APPLICATION APPLIED
1302 --Update the Prepayment Application Event to No Action
1303 -- Bug 4927664. For now comment out the event NOACTION update
1304 /* Start comment out
1305 AP_XLA_EVENTS_PKG.UPDATE_EVENT
1306 (p_event_source_info => l_event_source_info,
1307 p_event_id => l_prepay_app_event_id,
1308 p_event_type_code => 'PREPAYMENT APPLIED',
1309 p_event_date => NULL,
1310 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
1311 p_valuation_method => NULL,
1312 p_security_context => l_event_security_context,
1313 p_calling_sequence => l_curr_calling_sequence);
1314
1315 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.UPDATE_EVENT';
1316 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1317 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1318 G_MODULE_NAME || l_procedure_name,
1319 l_log_msg);
1320 END IF; End of comment out */
1321
1322
1323 l_Accounting_date:= event_dist_rec.accounting_date;
1324
1325 l_log_msg := 'prepay_adj_event loop begin.';
1326 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1327 FND_LOG.STRING(G_LEVEL_STATEMENT,
1328 G_MODULE_NAME || l_procedure_name,
1329 l_log_msg);
1330 END IF;
1331
1332 FOR l_prepay_adj_event_id IN
1333 prepay_adj_events
1334 (l_prepay_app_event_id,
1335 l_Accounting_date) LOOP
1336
1337 l_log_msg := 'Inside the prepay_adj_events cursor loop';
1338 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1339 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1340 G_MODULE_NAME || l_procedure_name,
1341 l_log_msg);
1342 END IF;
1343
1344 -- Bug 4748373. Modified the event type to PREPAYMENT APPLIED from
1345 -- PREPAYMENT APPLICATION UNAPPLIED
1346 --Update the Prepayment Application Adjusted Event to No Action
1347 -- Bug 4927664. For now comment out the event NOACTION update
1348 -- Bug 8547225 Uncomment the event NOACTION update for PREPAYMENT
1349 -- APPL ADJUSTMENT event type, and pass appropriate adj event_id
1350
1351 AP_XLA_EVENTS_PKG.UPDATE_EVENT
1352 (p_event_source_info => l_event_source_info,
1356 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
1353 p_event_id => l_prepay_adj_event_id.accounting_event_id,
1354 p_event_type_code => NULL,
1355 p_event_date => NULL,
1357 p_valuation_method => NULL,
1358 p_security_context => l_event_security_context,
1359 p_calling_sequence => l_curr_calling_sequence);
1360
1361 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.UPDATE_EVENT';
1362 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1363 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1364 G_MODULE_NAME || l_procedure_name,
1365 l_log_msg);
1366 END IF; --bug 8547225, uncommented the call to update_event
1367
1368 END LOOP; --prepay_adj_events
1369
1370 l_log_msg := 'prepay_adj_event loop end.';
1371 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
1372 FND_LOG.STRING(G_LEVEL_STATEMENT,
1373 G_MODULE_NAME || l_procedure_name,
1374 l_log_msg);
1375 END IF;
1376 END IF;
1377
1378 END IF;
1379
1380 ELSIF NVL(l_event_num,0)= 0 THEN
1381
1382 SELECT DECODE ( AI.invoice_type_lookup_code,
1383 'CREDIT', CREDIT_MEMO_VALIDATED_TYPE,
1384 'DEBIT', DEBIT_MEMO_VALIDATED_TYPE,
1385 'PREPAYMENT', PREPAYMENT_VALIDATED_TYPE,
1386 INVOICE_VALIDATED_TYPE) event_type,
1387 DECODE ( AI.invoice_type_lookup_code,
1388 'CREDIT', CREDIT_MEMOS_CLASS,
1389 'DEBIT', DEBIT_MEMOS_CLASS,
1390 'PREPAYMENT', PREPAYMENTS_CLASS,
1391 INVOICES_CLASS) event_class
1392 INTO l_event_type, l_event_class
1393 FROM ap_invoices_all AI
1394 WHERE AI.invoice_id = p_invoice_id;
1395
1396 l_log_msg := 'Before calling procedure create_invoice_event';
1397 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1398 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1399 G_MODULE_NAME || l_procedure_name,
1400 l_log_msg);
1401 END IF;
1402
1403 l_accounting_event_id :=
1404 create_invoice_event
1405 ( p_event_type => l_event_type,
1406 p_invoice_id => p_invoice_id,
1407 p_event_date => event_dist_rec.accounting_date,
1408 p_calling_sequence => l_curr_calling_sequence
1409 );
1410
1411 l_log_msg := 'After calling procedure create_invoice_event executed';
1412 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1413 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1414 G_MODULE_NAME || l_procedure_name,
1415 l_log_msg);
1416 END IF;
1417
1418 ELSE
1419
1420 SELECT DECODE ( AI.invoice_type_lookup_code,
1421 'CREDIT', CREDIT_MEMO_ADJUSTED_TYPE,
1422 'DEBIT', DEBIT_MEMO_ADJUSTED_TYPE,
1423 'PREPAYMENT', PREPAYMENT_ADJUSTED_TYPE,
1424 INVOICE_ADJUSTED_TYPE) event_type,
1425 DECODE ( AI.invoice_type_lookup_code,
1426 'CREDIT', CREDIT_MEMOS_CLASS,
1427 'DEBIT', DEBIT_MEMOS_CLASS,
1428 'PREPAYMENT', PREPAYMENTS_CLASS,
1429 INVOICES_CLASS) event_class
1430 INTO l_event_type, l_event_class
1431 FROM ap_invoices_all AI
1432 WHERE AI.invoice_id = p_invoice_id;
1433 --11659317
1434 BEGIN
1435 SELECT MAX(accounting_event_id)
1436 INTO l_accounting_event_id
1437 FROM ap_invoice_distributions,
1438 xla_events xe,
1439 xla_transaction_entities_upg xte --bug 13508211
1440 WHERE invoice_id = p_invoice_id
1441 AND NVL(posted_flag, 'N') <> 'Y'
1442 AND line_type_lookup_code <> 'PREPAY'
1443 AND prepay_distribution_id is NULL --for prepay tax
1444 AND accounting_date = event_dist_rec.accounting_date
1445 AND nvl(cancellation_flag, 'N') = 'N' /* Bug 11663644 */
1446 AND awt_invoice_payment_id is null -- Bug 7410001
1447 AND xe.application_id =200
1448 AND xe.event_id = accounting_event_id
1449 --bug 13508211
1450 AND xe.application_id = xte.application_id
1451 AND xe.entity_id = xte.entity_id
1452 AND xte.entity_code <> 'AP_PAYMENTS'
1453 AND xe.process_status_code <> 'P';
1454
1455 EXCEPTION
1456 WHEN NO_DATA_FOUND THEN
1457 l_accounting_event_id := NULL;
1458 END;
1459
1460 BEGIN
1461 -- bug9973070, considering the Encumbered prepay distribution
1462 -- as well.
1463 --
1464 SELECT MAX(accounting_event_id)
1465 INTO l_prepay_event_id
1466 FROM ap_invoice_distributions AID
1467 WHERE AID.invoice_id = p_invoice_id
1468 AND AID.line_type_lookup_code = 'PREPAY'
1469 AND AID.amount < 0
1470 AND (AID.posted_flag = 'Y' OR
1471 AID.encumbered_flag = 'Y');
1472
1473 EXCEPTION
1474 WHEN NO_DATA_FOUND THEN
1475 l_prepay_event_id := NULL;
1476 END;
1477
1478 BEGIN
1479 SELECT MAX(accounting_event_id)
1480 INTO l_pay_accounting_event_id
1481 FROM ap_invoice_payments AIP
1482 WHERE AIP.invoice_id = p_invoice_id
1483 AND AIP.posted_flag = 'Y';
1484 EXCEPTION
1485 WHEN NO_DATA_FOUND THEN
1486 l_pay_accounting_event_id := NULL;
1487 END;
1488
1492
1489 -- If an unaccounted Invoice Validates or Invoice Adjustment
1490 -- event does not already exist for that date, we will create
1491 -- a new event.
1493 -- bug fix 5694577: fixed the following condition to raise invoice
1494 -- validate events properly.
1495 -- IF ( (l_accounting_event_id IS NULL)
1496 -- OR
1497 -- (l_pay_accounting_event_id IS NOT NULL)
1498 -- OR
1499 -- (l_prepay_event_id IS NOT NULL)
1500 -- ) THEN
1501
1502 IF (l_accounting_event_id IS NULL) THEN
1503
1504 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1505 l_log_msg := 'Before calling procedure create_invoice_event';
1506 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1507 G_MODULE_NAME || l_procedure_name,
1508 l_log_msg);
1509 END IF;
1510
1511 l_accounting_event_id :=
1512 create_invoice_event
1513 ( p_event_type => l_event_type,
1514 p_invoice_id => p_invoice_id,
1515 p_event_date => event_dist_rec.accounting_date,
1516 p_calling_sequence => l_curr_calling_sequence
1517 );
1518
1519 l_log_msg := 'After calling procedure create_invoice_event executed';
1520 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1521 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1522 G_MODULE_NAME || l_procedure_name,
1523 l_log_msg);
1524 END IF;
1525
1526 /* start commented by abhsaxen for bug 9159069
1527 * Moving this code because cascade event will work only
1528 * if invoice_distribution is populated earlier
1529 * This code is added below (after ap_invoice_distributions update statements).
1530
1531 -- raise payment/prepayment cascade event only when there is payment
1532 -- or prepayment application existed for the invoice.
1533
1534 IF ((l_pay_accounting_event_id IS NOT NULL)
1535 OR
1536 (l_prepay_event_id IS NOT NULL))
1537 THEN
1538
1539 l_log_msg := 'Before calling procedure derive_cascade_events';
1540 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1541 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1542 G_MODULE_NAME || l_procedure_name,
1543 l_log_msg);
1544 END IF;
1545
1546 -- Bug 6996047. Passing accounting date so that the adjustment
1547 -- events are created in the same gl date as the invoice event.
1548 derive_cascade_events
1549 ( p_invoice_id => p_invoice_id,
1550 p_adj_accounting_event_id => l_accounting_event_id,
1551 p_accounting_date => event_dist_rec.accounting_date,
1552 p_calling_sequence => l_curr_calling_sequence
1553 );
1554
1555 l_log_msg := 'After calling proc derive_cascade_events executed';
1556 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1557 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1558 G_MODULE_NAME || l_procedure_name,
1559 l_log_msg);
1560 END IF;
1561 END IF;
1562 end commented by abhsaxen for bug 9159069*/
1563 ELSE
1564
1565 -- For cases where we are not creating the event (since it already
1566 -- exists), we want to check for new status of those existing events.
1567
1568 IF
1569 ( is_event_complete ( p_doc_type => INVOICES_ENTITY,
1570 p_source_id => p_invoice_id,
1571 p_calling_sequence => l_curr_calling_sequence
1572 ) = 'CREATED') THEN
1573 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
1574 ELSE
1575 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
1576 END IF;
1577
1578 get_invoice_info
1579 ( p_invoice_id => p_invoice_id,
1580 p_org_id => l_org_id, -- OUT
1581 p_legal_entity_id => l_legal_entity_id, -- OUT
1582 p_ledger_id => l_ledger_id, -- OUT
1583 p_transaction_date => l_transaction_date, -- OUT
1584 p_calling_sequence => l_curr_calling_sequence
1585 );
1586
1587 l_event_security_context :=
1588 get_event_security_context
1589 ( p_org_id => l_org_id,
1590 p_calling_sequence => l_curr_calling_sequence
1591 );
1592
1593 l_event_source_info :=
1594 get_invoice_event_source_info
1595 ( p_legal_entity_id => l_legal_entity_id,
1596 p_ledger_id => l_ledger_id,
1597 p_invoice_id => p_invoice_id,
1598 p_calling_sequence => l_curr_calling_sequence
1599 );
1600
1601 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
1602 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1603 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1604 G_MODULE_NAME || l_procedure_name,
1605 l_log_msg);
1606 END IF;
1607
1608 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
1609 ( p_event_source_info => l_event_source_info,
1610 p_event_class_code => l_event_class,
1611 p_event_type_code => l_event_type,
1612 p_event_date => event_dist_rec.accounting_date,
1613 p_event_status_code => l_event_status,
1614 p_valuation_method => NULL,
1615 p_security_context => l_event_security_context,
1616 p_calling_sequence => l_curr_calling_sequence
1617 );
1618
1619 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
1620 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1621 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1622 G_MODULE_NAME || l_procedure_name,
1623 l_log_msg);
1624 END IF;
1625
1626 END IF;
1627
1628 END IF;
1629
1630 --Added IF to ensure that only non prepay lines are updated
1631
1632 -- These updates are being done in the context of the loop as each
1633 -- cycle of the loop could be related to a different event
1634 IF ( l_event_type NOT IN ( PREPAYMENT_APPLIED_TYPE,
1635 PREPAY_APP_ADJUSTED_TYPE,
1636 PREPAYMENT_UNAPPLIED_TYPE)) THEN
1637
1638 UPDATE ap_invoice_distributions
1639 SET accounting_event_id = l_accounting_event_id
1640 WHERE invoice_id = p_invoice_id
1641 AND accounting_date = event_dist_rec.accounting_date
1642 AND awt_invoice_payment_id IS NULL
1643 AND line_type_lookup_code <> 'PREPAY'
1644 AND prepay_distribution_id IS NULL --prepay_tax_parent_id obsoleted
1645 AND accounting_event_id IS NULL
1646 AND nvl(cancellation_flag, 'N') = 'N'; -- Bug 5455054: Added the cancellation_flag check.
1647
1648 -------------------------------------------------
1649 -- bug 5525657
1650 -- We need to stamp the same accounting event id
1651 -- for self assessed tax distributions.
1652 -------------------------------------------------
1653
1654 UPDATE ap_self_assessed_tax_dist_all
1655 SET accounting_event_id = l_accounting_event_id
1656 WHERE invoice_id = p_invoice_id
1657 AND accounting_date = event_dist_rec.accounting_date
1658 AND awt_invoice_payment_id IS NULL
1659 AND line_type_lookup_code <> 'PREPAY'
1663
1660 AND prepay_distribution_id IS NULL
1661 AND accounting_event_id IS NULL
1662 AND nvl(cancellation_flag, 'N') = 'N';
1664 ELSE -- for prepay distribution lines
1665
1666 -- Modified the sqls below for updating the Accounting
1667 -- Event_IDs on the Invoice distributions, to consider
1668 -- Prepayment Application and Unapplication distributions
1669 -- for amount 0
1670 --
1671 IF l_event_type = PREPAYMENT_APPLIED_TYPE THEN
1672
1673 UPDATE ap_invoice_distributions
1674 SET accounting_event_id = l_accounting_event_id
1675 WHERE accounting_event_id IS NULL
1676 AND invoice_id = p_invoice_id
1677 AND invoice_line_number = event_dist_rec.invoice_line_number
1678 AND accounting_date = event_dist_rec.accounting_date
1679 AND line_type_lookup_code = 'PREPAY' -- Bug 6718967
1680 AND (sign(amount) = sign(event_dist_rec.dist_amount) OR
1681 (parent_reversal_id IS NULL AND amount = 0))
1682 RETURNING invoice_distribution_id BULK COLLECT INTO l_inv_dist_tab;
1683
1684 ELSE
1685
1686 UPDATE ap_invoice_distributions
1687 SET accounting_event_id = l_accounting_event_id
1688 WHERE accounting_event_id IS NULL
1689 AND invoice_id = p_invoice_id
1690 AND invoice_line_number = event_dist_rec.invoice_line_number
1691 AND accounting_date = event_dist_rec.accounting_date
1692 AND line_type_lookup_code = 'PREPAY' -- Bug 6718967
1693 AND (sign(amount) = sign(event_dist_rec.dist_amount) OR
1694 (parent_reversal_id IS NOT NULL AND amount = 0))
1695 RETURNING invoice_distribution_id BULK COLLECT INTO l_inv_dist_tab;
1696
1697 END IF;
1698
1699
1700 FORALL i IN l_inv_dist_tab.FIRST..l_inv_dist_tab.LAST
1701 UPDATE ap_invoice_distributions_all
1702 SET accounting_event_id = l_accounting_event_id
1703 WHERE line_type_lookup_code in ('REC_TAX','NONREC_TAX',
1704 'TRV','TIPV','TERV') --Bug5455985
1705 AND accounting_event_id IS NULL
1706 AND charge_applicable_to_dist_id = l_inv_dist_tab(i);
1707
1708 END IF; -- prepay distribution lines
1709
1710
1711 /* start moved by abhsaxen for bug 9159069
1712 * Moving this code because cascade event will work only
1713 * if invoice_distribution is populated earlier
1714 */
1715
1716 -- raise payment/prepayment cascade event only when there is payment
1717 -- or prepayment application existed for the invoice.
1718
1719 IF ((l_pay_accounting_event_id IS NOT NULL)
1720 OR
1721 (l_prepay_event_id IS NOT NULL))
1722 THEN
1723
1724 l_log_msg := 'Before calling procedure derive_cascade_events';
1725 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1726 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1727 G_MODULE_NAME || l_procedure_name,
1728 l_log_msg);
1729 END IF;
1730
1731 -- Bug 6996047. Passing accounting date so that the adjustment
1732 -- events are created in the same gl date as the invoice event.
1733 derive_cascade_events
1734 ( p_invoice_id => p_invoice_id,
1735 p_adj_accounting_event_id => l_accounting_event_id,
1736 p_accounting_date => event_dist_rec.accounting_date,
1737 p_calling_sequence => l_curr_calling_sequence
1738 );
1739
1740 l_log_msg := 'After calling proc derive_cascade_events executed';
1741 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1742 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1743 G_MODULE_NAME || l_procedure_name,
1744 l_log_msg);
1745 END IF;
1746 END IF;
1747
1748 /* end moved by abhsaxen for bug 9159069*/
1749
1750 END LOOP; /*inv_event_dists loop*/
1751
1752 -- bug9441420
1753 l_log_msg := 'before calling the procedure Set_Prepay_Event_Noaction '||
1754 'for invoice_id :'||P_Invoice_ID;
1755 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1756 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1757 G_MODULE_NAME || l_procedure_name,
1758 l_log_msg);
1759 END IF;
1760
1761 AP_ACCOUNTING_EVENTS_PKG.Set_Prepay_Event_Noaction
1762 (p_invoice_id,
1763 l_curr_calling_sequence);
1764
1765 l_log_msg := 'After calling the procedure Set_Prepay_Event_Noaction '||
1766 'for invoice_id :'||P_Invoice_ID;
1767 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1768 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1769 G_MODULE_NAME || l_procedure_name,
1770 l_log_msg);
1771 END IF;
1772
1773 l_log_msg := 'End of procedure '|| l_procedure_name;
1774 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1775 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1776 G_MODULE_NAME||l_procedure_name||'.begin',
1777 l_log_msg);
1778 END IF;
1779
1780 EXCEPTION
1781 WHEN OTHERS THEN
1782 IF (inv_event_dists%ISOPEN) THEN
1783 CLOSE inv_event_dists;
1784 END IF;
1785
1786 IF (SQLCODE <> -20001) THEN
1787 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1788 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
1789 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
1790 l_curr_calling_sequence);
1791 FND_MESSAGE.SET_TOKEN('PARAMETERS',
1792 'p_invoice_id = '||p_invoice_id);
1793 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
1794 END IF;
1795
1796 APP_EXCEPTION.RAISE_EXCEPTION();
1797 END derive_invoice_events;
1798
1799
1800 /*============================================================================
1801 | PUNCTION - CREATE_INVOICE_EVENT (PRIVATE)
1802 |
1803 | DESCRIPTION
1804 | Create accounting events for 'INVOICES' type
1805 |
1806 | PRAMETERS
1807 | p_event_type: Event type
1808 | p_invoice_id: Invoice Unique Identifier
1809 | P_event_date: Event date
1810 | p_calling_sequence: Debug information
1811 |
1812 | RETURN TYPE: NUMBER
1813 |
1814 | KNOWN ISSUES:
1815 |
1816 | NOTES:
1817 |
1818 | MODIFICATION HISTORY
1819 | Date Author Description of Change
1820 |
1821 *===========================================================================*/
1822 FUNCTION create_invoice_event(p_event_type IN VARCHAR2,
1823 p_invoice_id IN NUMBER,
1824 p_event_date IN DATE,
1825 p_calling_sequence IN VARCHAR2)
1826 RETURN NUMBER
1827 IS
1828
1829 l_event_status VARCHAR2(1);
1830 l_legal_entity_id NUMBER(15);
1831 l_ledger_id NUMBER(15);
1832 l_org_id NUMBER(15);
1833 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
1834 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
1835 l_transaction_date AP_INVOICES_ALL.invoice_date%TYPE;
1836
1837 l_curr_calling_sequence VARCHAR2(2000);
1838
1839 -- Logging:
1840 l_procedure_name CONSTANT VARCHAR2(30) := 'CREATE_INVOICE_EVENT';
1841 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
1842
1843 BEGIN
1844
1845 l_curr_calling_sequence :=
1846 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.CREATE_INVOICE_EVENT';
1847
1848 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1849
1850 l_log_msg := 'Begin of procedure '|| l_procedure_name;
1851 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1852 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1853 G_MODULE_NAME || l_procedure_name,
1854 l_log_msg);
1855 END IF;
1856
1857 IF
1858 ( is_event_complete
1859 ( p_doc_type => INVOICES_ENTITY,
1860 p_source_id => p_invoice_id,
1861 p_calling_sequence => l_curr_calling_sequence) = 'CREATED') THEN
1862 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
1863 ELSE
1864 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
1865 END IF;
1866
1867 get_invoice_info
1868 ( p_invoice_id => p_invoice_id,
1869 p_org_id => l_org_id, -- OUT
1870 p_legal_entity_id => l_legal_entity_id, -- OUT
1871 p_ledger_id => l_ledger_id, -- OUT
1872 p_transaction_date => l_transaction_date, -- OUT
1873 p_calling_sequence => l_curr_calling_sequence
1874 );
1875
1876 l_event_security_context :=
1877 get_event_security_context
1878 ( p_org_id => l_org_id,
1879 p_calling_sequence => l_curr_calling_sequence
1880 );
1881
1882 l_event_source_info :=
1883 get_invoice_event_source_info
1884 ( p_legal_entity_id => l_legal_entity_id,
1885 p_ledger_id => l_ledger_id,
1886 p_invoice_id => p_invoice_id,
1887 p_calling_sequence => l_curr_calling_sequence
1888 );
1889
1890 l_log_msg := 'End of procedure '|| l_procedure_name;
1891 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1892 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1893 G_MODULE_NAME || l_procedure_name,
1894 l_log_msg);
1895 END IF;
1896
1897 l_log_msg := 'Calling proc AP_XLA_EVENTS_PKG.CREATE_EVENT and return';
1898 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
1899 FND_LOG.STRING(G_LEVEL_PROCEDURE,
1900 G_MODULE_NAME || l_procedure_name,
1901 l_log_msg);
1902 END IF;
1903
1904 RETURN
1905 AP_XLA_EVENTS_PKG.CREATE_EVENT
1906 ( p_event_source_info => l_event_source_info,
1907 p_event_type_code => p_event_type,
1908 p_event_date => p_event_date,
1909 p_event_status_code => l_event_status,
1910 p_event_number => NULL,
1911 p_transaction_date => l_transaction_date,
1912 p_reference_info => NULL,
1913 p_valuation_method => NULL,
1914 p_security_context => l_event_security_context,
1915 p_calling_sequence => l_curr_calling_sequence
1916 );
1917
1918
1919 EXCEPTION
1920 WHEN OTHERS THEN
1921 IF (SQLCODE <> -20001) THEN
1922 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
1923 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
1924 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
1925 l_curr_calling_sequence);
1926 FND_MESSAGE.SET_TOKEN('PARAMETERS',
1927 'p_event_type = '||p_event_type
1928 ||', p_invoice_id = '||p_invoice_id
1929 ||', p_event_date = '||p_event_date);
1930 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
1931 END IF;
1932
1933 APP_EXCEPTION.RAISE_EXCEPTION();
1934 END create_invoice_event;
1935
1936
1937
1938 /*============================================================================
1939 | PUNCTION - CREATE_PAYMENT_EVENT (PRIVATE)
1940 |
1941 | DESCRIPTION
1942 | Create accounting events for 'PAYMENT' type
1943 |
1944 | PRAMETERS
1945 | p_event_type: Event type
1946 | p_check_id: Check ID
1947 | p_event_date: Event date
1948 | p_calling_sequence: Debug information
1949 |
1950 | RETURN TYPE: NUMBER
1951 |
1952 | KNOWN ISSUES:
1953 |
1954 | NOTES:
1955 |
1956 | MODIFICATION HISTORY
1957 | Date Author Description of Change
1958 |
1959 *===========================================================================*/
1960 FUNCTION create_payment_event( p_event_type IN VARCHAR2,
1961 p_check_id IN NUMBER,
1962 p_event_date IN DATE,
1963 p_calling_sequence IN VARCHAR2)
1964 RETURN NUMBER
1965 IS
1966
1967 l_event_status VARCHAR2(1);
1968 l_legal_entity_id NUMBER(15);
1969 l_ledger_id NUMBER(15);
1970 l_org_id NUMBER(15);
1971 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
1972 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
1973 l_matured_events_count NUMBER;
1974 l_unmatured_events_count NUMBER;
1975 l_amount NUMBER;
1976 l_currency_code VARCHAR2(15);
1977 l_maturity_exchange_rate_type VARCHAR2(30);
1978 l_maturity_exchange_date DATE;
1979 l_maturity_exchange_rate NUMBER;
1980 l_ret NUMBER;
1981 l_curr_calling_sequence VARCHAR2(2000);
1982
1983 -- Logging:
1984 l_procedure_name CONSTANT VARCHAR2(30) := 'CREATE_PAYMENT_EVENT';
1985 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
1986 l_when_to_acct ap_system_parameters.when_to_account_pmt%TYPE; --bug 8771563
1987
1988 -- Bug 7374984.
1989 -- Cursor to get all the unaccounted maturity and clearing transactions
1990 -- Cursor to get all the unaccounted maturity and clearing transactions
1991 -- bug9051619, added NOT EXISTS clause
1992 CURSOR c_unacct_pmt_events IS
1993 SELECT accounting_date,
1994 accounting_event_id,
1995 transaction_type
1996 FROM ap_payment_history aph
1997 WHERE check_id = p_check_id
1998 AND posted_flag <> 'Y'
1999 AND transaction_type IN (PAYMENT_MATURTY_RVRSL_TRX_TYPE, PAYMENT_MATURTY_TRX_TYPE,
2000 PAYMENT_MATURITY_ADJUSTED_TYPE, PAYMENT_CLEARED_TRX_TYPE,
2001 PAYMENT_UNCLEARED_TRX_TYPE, PAYMENT_CLEARING_ADJUSTED_TYPE)
2002 AND NOT EXISTS
2003 (SELECT 1
2004 FROM ap_payment_history_all aphp,
2005 xla_events xe,
2006 ap_system_parameters_all asp
2007 WHERE aph.check_id = aphp.check_id
2008 AND aphp.payment_history_id = aph.rev_pmt_hist_id
2012 AND aph.org_id = asp.org_id
2009 AND aphp.transaction_type = PAYMENT_CLEARED_TRX_TYPE
2010 AND aphp.posted_flag = 'Y'
2011 AND aph.transaction_type = PAYMENT_UNCLEARED_TRX_TYPE
2013 AND asp.when_to_account_pmt = 'CLEARING ONLY'
2014 AND aphp.accounting_event_id = xe.event_id
2015 AND xe.application_id = 200
2016 AND xe.event_status_code = 'P')
2017 AND NVL(fnd_profile.value('FV_ENABLED'), 'N') <> 'Y' --bug11681786 start
2018 UNION
2019 SELECT accounting_date,
2020 accounting_event_id,
2021 transaction_type
2022 FROM ap_payment_history aph
2023 WHERE check_id = p_check_id
2024 AND posted_flag <> 'Y'
2025 AND transaction_type IN (PAYMENT_MATURTY_RVRSL_TRX_TYPE, PAYMENT_MATURTY_TRX_TYPE,
2026 PAYMENT_CLEARED_TRX_TYPE, PAYMENT_UNCLEARED_TRX_TYPE)
2027 AND NOT EXISTS
2028 (SELECT 1
2029 FROM ap_payment_history_all aphp,
2030 xla_events xe
2031 WHERE aph.check_id = aphp.check_id
2032 AND aphp.payment_history_id = aph.rev_pmt_hist_id
2033 AND aphp.posted_flag = 'Y'
2034 AND aphp.accounting_event_id = xe.event_id
2035 AND xe.application_id = 200
2036 AND xe.event_status_code = 'P')
2037 AND NVL(fnd_profile.value('FV_ENABLED'), 'N') = 'Y'; --bug11681786 end
2038
2039 --added cursor for bug 7594938, 10336668 added Manual Ref Adj
2040 CURSOR c_pmt_acct_clearing_only IS
2041 SELECT aph.accounting_date,
2042 aph.accounting_event_id,
2043 aph.transaction_type
2044 FROM ap_payment_history aph, ap_system_parameters asp
2045 WHERE aph.check_id = p_check_id
2046 AND aph.org_id = asp.org_id
2047 AND asp.when_to_account_pmt = 'CLEARING ONLY'
2048 AND aph.posted_flag <> 'Y'
2049 AND aph.transaction_type IN (PAYMENT_CREATED_TYPE, REFUND_RECORDED_TYPE,
2050 PAYMENT_MATURTY_TRX_TYPE, PAYMENT_MATURTY_RVRSL_TRX_TYPE,
2051 MANUAL_PAYMENT_ADJUSTED_TYPE, MANUAL_REFUND_ADJUSTED_TYPE);
2052
2053 l_accounting_date DATE;
2054 l_accounting_event_id NUMBER;
2055 l_transaction_type VARCHAR2(30);
2056
2057 --bug 8358552 starts
2058 l_dummy NUMBER;
2059 --bug 8358552 ends
2060
2061 BEGIN
2062
2063 l_curr_calling_sequence :=
2064 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.CREATE_PAYMENT_EVENT';
2065
2066 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2067
2068 l_log_msg := 'Begin of procedure '|| l_procedure_name;
2069 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2070 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2071 G_MODULE_NAME || l_procedure_name,
2072 l_log_msg);
2073 END IF;
2074
2075 --bug 8771563
2076 SELECT asp.when_to_account_pmt
2077 INTO l_when_to_acct
2078 FROM ap_checks ac, ap_system_parameters asp
2079 WHERE ac.check_id = p_check_id
2080 AND ac.org_id = asp.org_id;
2081
2082 IF (p_event_type IN (PAYMENT_CANCELLED_TYPE, REFUND_CANCELLED_TYPE,PAYMENT_CREATED_TYPE, REFUND_RECORDED_TYPE,
2083 PAYMENT_MATURED_TYPE, PAYMENT_MATURITY_REVERSED_TYPE,MANUAL_PAYMENT_ADJUSTED_TYPE,--14544093
2084 MANUAL_REFUND_ADJUSTED_TYPE)
2085 AND l_when_to_acct = 'CLEARING ONLY') THEN --bug 8771563 and 12603516
2086 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION;
2087 ELSIF (is_event_complete
2088 (p_doc_type => PAYMENTS_ENTITY,
2089 p_source_id => p_check_id,
2090 p_calling_sequence => l_curr_calling_sequence) = 'CREATED') THEN
2091 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
2092 ELSE
2093 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
2094 END IF;
2095
2096 get_payment_info
2097 ( p_check_id => p_check_id,
2098 p_org_id => l_org_id, -- OUT
2099 p_legal_entity_id => l_legal_entity_id, -- OUT
2100 p_ledger_id => l_ledger_id, -- OUT
2101 p_calling_sequence => l_curr_calling_sequence
2102 );
2103
2104 l_event_security_context :=
2105 get_event_security_context
2106 ( p_org_id => l_org_id,
2107 p_calling_sequence => l_curr_calling_sequence
2108 );
2109
2110 l_event_source_info :=
2111 get_payment_event_source_info
2112 ( p_legal_entity_id => l_legal_entity_id,
2113 p_ledger_id => l_ledger_id,
2114 p_check_id => p_check_id,
2115 p_calling_sequence => l_curr_calling_sequence
2116 );
2117
2118 l_log_msg := 'Before calling procedure AP_XLA_EVENTS_PKG.CREATE_EVENT';
2119 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2120 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2121 G_MODULE_NAME || l_procedure_name,
2122 l_log_msg);
2123 END IF;
2124
2125 --bug 8358552 starts
2126 --bug 9069767 starts
2127 --bug 12555714 Starts : Added the if-else and have the l_event_status accordingly to I when NO_DATA_FOUND
2128 IF (p_event_type IN (PAYMENT_MATURTY_TRX_TYPE, PAYMENT_MATURTY_RVRSL_TRX_TYPE)) THEN
2129 BEGIN
2130 SELECT 1
2131 INTO l_dummy
2132 FROM ap_checks_all ac,
2133 ap_system_parameters_all asp
2134 WHERE ac.check_id =l_event_source_info.source_id_int_1
2135 AND ac.org_id = asp.org_id
2136 AND exists (
2137 SELECT 1
2138 FROM ap_payment_history_all aph
2139 WHERE ac.check_id = aph.check_id
2140 AND aph.transaction_type = PAYMENT_MATURTY_TRX_TYPE
2141 )
2142 AND(
2143 (
2144 ac.currency_code <> asp.base_currency_code
2145 AND ac.exchange_rate is not null
2146 AND ac.exchange_rate_type is not null
2147 AND ac.exchange_date is not null
2148 AND ac.maturity_exchange_rate is not null
2149 AND ac.maturity_exchange_date is not null
2150 AND ac.maturity_exchange_rate_type is not null
2151 )
2152 OR (ac.currency_code = asp.base_currency_code));
2153 EXCEPTION
2154 WHEN NO_DATA_FOUND THEN
2155 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
2156 END;
2157 ELSE
2158 BEGIN
2159 SELECT 1
2160 INTO l_dummy
2161 FROM ap_checks_all ac,
2162 ap_system_parameters_all asp
2163 WHERE ac.check_id =l_event_source_info.source_id_int_1
2164 AND ac.org_id = asp.org_id
2165 /*AND not exists (
2166 SELECT 1
2167 FROM ap_payment_history_all aph
2168 WHERE ac.check_id = aph.check_id
2169 AND aph.transaction_type = PAYMENT_MATURTY_TRX_TYPE
2170 )*/ /* bug 13616704 */
2171 AND(
2172 (
2173 ac.currency_code <> asp.base_currency_code
2174 AND ac.exchange_rate is not null
2175 AND ac.exchange_rate_type is not null
2176 AND ac.exchange_date is not null
2177 )
2178 OR (ac.currency_code = asp.base_currency_code));
2179
2180 EXCEPTION
2181 WHEN NO_DATA_FOUND THEN
2182 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
2183 END;
2184 END IF;
2185 /*
2186 BEGIN
2187 SELECT 1
2188 INTO l_dummy
2189 FROM ap_checks_all ac,
2193 AND exists (
2190 ap_system_parameters_all asp
2191 WHERE ac.check_id =l_event_source_info.source_id_int_1
2192 AND ac.org_id = asp.org_id
2194 SELECT 1
2195 FROM ap_payment_history_all aph
2196 WHERE ac.check_id = aph.check_id
2197 AND aph.transaction_type = PAYMENT_MATURTY_TRX_TYPE
2198 )
2199 AND(
2200 (
2201 ac.currency_code <> asp.base_currency_code
2202 AND ac.exchange_rate is not null
2203 AND ac.exchange_rate_type is not null
2204 AND ac.exchange_date is not null
2205 AND ac.maturity_exchange_rate is not null
2206 AND ac.maturity_exchange_date is not null
2207 AND ac.maturity_exchange_rate_type is not null
2208 )
2209 OR (ac.currency_code = asp.base_currency_code));
2210 EXCEPTION
2211 WHEN NO_DATA_FOUND THEN
2212 BEGIN
2213 SELECT 1
2214 INTO l_dummy
2215 FROM ap_checks_all ac,
2216 ap_system_parameters_all asp
2217 WHERE ac.check_id =l_event_source_info.source_id_int_1
2218 AND ac.org_id = asp.org_id
2219 AND not exists (
2220 SELECT 1
2221 FROM ap_payment_history_all aph
2222 WHERE ac.check_id = aph.check_id
2223 AND aph.transaction_type = PAYMENT_MATURTY_TRX_TYPE
2224 )
2225 AND(
2226 (
2227 ac.currency_code <> asp.base_currency_code
2228 AND ac.exchange_rate is not null
2229 AND ac.exchange_rate_type is not null
2230 AND ac.exchange_date is not null
2231 )
2232 OR (ac.currency_code = asp.base_currency_code));
2233
2234 EXCEPTION
2235 WHEN NO_DATA_FOUND THEN
2236 l_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
2237 END;
2238 END;
2239 --bug 9069767 starts
2240 --bug 8358552 ends
2241 */
2242 --bug 12555714 Ends
2243
2244 l_ret:=
2245 AP_XLA_EVENTS_PKG.CREATE_EVENT
2246 ( p_event_source_info => l_event_source_info,
2247 p_event_type_code => p_event_type,
2248 p_event_date => p_event_date,
2249 p_event_status_code => l_event_status,
2250 p_event_number => NULL,
2251 p_transaction_date => NULL,
2252 p_reference_info => NULL,
2253 p_valuation_method => NULL,
2254 p_security_context => l_event_security_context,
2255 p_calling_sequence => l_curr_calling_sequence
2256 );
2257
2258 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.CREATE_EVENT';
2259 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2260 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2261 G_MODULE_NAME || l_procedure_name,
2262 l_log_msg);
2263 END IF;
2264
2265 -- bug fix 5659451
2266 -- change hard coded constant to global constant variables
2267 --bug fix 9136971
2268 -- added condition for Refund Cancellation event
2269 IF (p_event_type IN (PAYMENT_CANCELLED_TYPE, REFUND_CANCELLED_TYPE)) THEN
2270
2271 select count(*)
2272 into l_matured_events_count
2273 from AP_PAYMENT_HISTORY APH
2274 where check_id = P_check_id
2275 and transaction_type = PAYMENT_MATURTY_TRX_TYPE;
2276
2277
2278 l_log_msg := 'l_matured_events_count = '
2279 ||to_char(l_matured_events_count);
2280 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
2281 FND_LOG.STRING(G_LEVEL_STATEMENT,
2282 G_MODULE_NAME || l_procedure_name,
2283 l_log_msg);
2284 END IF;
2285
2286 select count(*)
2287 into l_unmatured_events_count
2288 from ap_payment_history APH
2289 where check_id = p_check_id
2290 and transaction_type = PAYMENT_MATURTY_RVRSL_TRX_TYPE;
2291
2292 l_log_msg := 'l_unmatured_events_count = '
2293 ||to_char(l_unmatured_events_count);
2294 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
2295 FND_LOG.STRING(G_LEVEL_STATEMENT,
2296 G_MODULE_NAME || l_procedure_name,
2297 l_log_msg);
2298 END IF;
2299
2300 IF (l_matured_events_count > 0 and
2301 l_matured_events_count > l_unmatured_events_count) THEN
2302
2303
2304 select amount,
2305 currency_code,
2306 maturity_exchange_rate_type,
2307 maturity_exchange_date,
2308 maturity_exchange_Rate
2309 into l_amount,
2310 l_currency_code,
2311 l_maturity_exchange_rate_type,
2312 l_maturity_exchange_date,
2313 l_maturity_exchange_Rate
2314 from ap_Checks
2315 where check_id = P_check_id;
2316
2317 l_log_msg := 'Before ap_reconciliation_pkg.recon_payment_history';
2318 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2319 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2320 G_MODULE_NAME || l_procedure_name,
2321 l_log_msg);
2325 (X_CHECKRUN_ID => NULL,
2322 END IF;
2323
2324 ap_reconciliation_pkg.recon_payment_history
2326 X_CHECK_ID => P_check_id,
2327 X_TRANSACTION_TYPE => PAYMENT_MATURTY_RVRSL_TRX_TYPE,
2328 X_ACCOUNTING_DATE => p_event_date,
2329 X_CLEARED_DATE => NULL,
2330 X_TRANSACTION_AMOUNT => l_amount,
2331 X_ERROR_AMOUNT => NULL,
2332 X_CHARGE_AMOUNT => NULL,
2333 X_CURRENCY_CODE => l_currency_code,
2334 X_EXCHANGE_RATE_TYPE => l_maturity_exchange_rate_type,
2335 X_EXCHANGE_RATE_DATE => l_maturity_exchange_date,
2336 X_EXCHANGE_RATE => l_maturity_exchange_rate,
2337 X_MATCHED_FLAG => NULL,
2338 X_ACTUAL_VALUE_DATE => NULL,
2339 X_CREATION_DATE => sysdate,
2340 X_CREATED_BY => FND_GLOBAL.user_id,
2341 X_LAST_UPDATE_DATE => sysdate,
2342 X_LAST_UPDATED_BY => FND_GLOBAL.user_id,
2343 X_LAST_UPDATE_LOGIN => FND_GLOBAL.login_id,
2344 X_PROGRAM_UPDATE_DATE => NULL,
2345 X_PROGRAM_APPLICATION_ID => NULL,
2346 X_PROGRAM_ID => NULL,
2347 X_REQUEST_ID => NULL,
2348 X_CALLING_SEQUENCE => l_curr_calling_sequence);
2349
2350 l_log_msg := 'After ap_reconciliation_pkg.recon_payment_history';
2351 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2352 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2353 G_MODULE_NAME || l_procedure_name,
2354 l_log_msg);
2355 END IF;
2356 END IF;
2357
2358 l_log_msg := 'Open Cursor c_unacct_pmt_events';
2359 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2360 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2361 G_MODULE_NAME || l_procedure_name,
2362 l_log_msg);
2363 END IF;
2364
2365 -- 7374984
2366 -- Setting the event status to no action for all the unacctd
2367 -- events of this voided payment.
2368 OPEN c_unacct_pmt_events;
2369 LOOP
2370 FETCH c_unacct_pmt_events INTO
2371 l_accounting_date,
2372 l_accounting_event_id,
2373 l_transaction_type;
2374 EXIT WHEN c_unacct_pmt_events%NOTFOUND;
2375
2376 l_log_msg := 'Event id that needs to be set to no action ' ||
2377 l_accounting_event_id;
2378 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2379 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2380 G_MODULE_NAME || l_procedure_name,
2381 l_log_msg);
2382 END IF;
2383
2384 AP_XLA_EVENTS_PKG.UPDATE_EVENT
2385 ( p_event_source_info => l_event_source_info,
2386 p_event_id => l_accounting_event_id,
2387 p_event_type_code => NULL,
2388 p_event_date => NULL,
2389 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
2390 p_valuation_method => NULL,
2391 p_security_context => l_event_security_context,
2392 p_calling_sequence => l_curr_calling_sequence
2393 );
2394
2395 l_log_msg := 'End of call to AP_XLA_EVENTS_PKG.UPDATE_EVENT';
2396 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2397 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2398 G_MODULE_NAME || l_procedure_name,
2399 l_log_msg);
2400 END IF;
2401
2402 END LOOP;
2403 CLOSE c_unacct_pmt_events;
2404 -- End of bug 7374984
2405
2406 END IF;
2407
2408
2409 --added for bug 7594938
2410 --bug 8771563, if only creation and cancellation events exist then for "clearing only" accounting
2411 --event_status_code for creation event should be marked as 'N' during payment cancellation
2412 IF p_event_type IN (PAYMENT_CLEARED_TYPE, PAYMENT_CANCELLED_TYPE,
2413 REFUND_CANCELLED_TYPE) THEN
2414 OPEN c_pmt_acct_clearing_only;
2415 LOOP
2416
2417 FETCH c_pmt_acct_clearing_only
2418 INTO l_accounting_date,
2419 l_accounting_event_id,
2420 l_transaction_type;
2421
2422 EXIT WHEN c_pmt_acct_clearing_only%NOTFOUND;
2423
2424 l_log_msg := 'Event id that needs to be set to no action ' ||
2425 l_accounting_event_id;
2426 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2427 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2428 G_MODULE_NAME || l_procedure_name,
2429 l_log_msg);
2430 END IF;
2431
2432 AP_XLA_EVENTS_PKG.UPDATE_EVENT
2433 ( p_event_source_info => l_event_source_info,
2434 p_event_id => l_accounting_event_id,
2435 p_event_type_code => NULL,
2436 p_event_date => NULL,
2437 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
2438 p_valuation_method => NULL,
2439 p_security_context => l_event_security_context,
2440 p_calling_sequence => l_curr_calling_sequence
2441 );
2442
2443 l_log_msg := 'End of call to AP_XLA_EVENTS_PKG.UPDATE_EVENT';
2444 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2445 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2446 G_MODULE_NAME || l_procedure_name,
2447 l_log_msg);
2448 END IF;
2449
2450 END LOOP;
2454 END IF;
2451
2452 CLOSE c_pmt_acct_clearing_only;
2453
2455 --changes for bug 7594938 ends
2456
2457 l_log_msg := 'End of procedure'||l_procedure_name;
2458 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2459 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2460 G_MODULE_NAME || l_procedure_name,
2461 l_log_msg);
2462 END IF;
2463
2464 return l_ret;
2465
2466 EXCEPTION
2467 WHEN OTHERS THEN
2468 IF (SQLCODE <> -20001) THEN
2469 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
2470 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
2471 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
2472 l_curr_calling_sequence);
2473 FND_MESSAGE.SET_TOKEN('PARAMETERS',
2474 'p_event_type = '||p_event_type
2475 ||', p_check_id = '||p_check_id
2476 ||', p_event_date = '||p_event_date);
2477 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
2478 END IF;
2479 APP_EXCEPTION.RAISE_EXCEPTION();
2480 END create_payment_event;
2481
2482 /*============================================================================
2483 | PROCEDURE - UPDATE_INVOICE_EVENT_STATUS (PUBLIC)
2484 |
2485 | DESCRIPTION
2486 | Update invoice event's status
2487 |
2488 | PRAMETERS
2489 | p_invoice_id: Invoice ID
2490 | p_calling_sequence: Debug information
2491 |
2492 | KNOWN ISSUES:
2493 |
2494 | NOTES:
2495 |
2496 | MODIFICATION HISTORY
2497 | Date Author Description of Change
2498 |
2499 *===========================================================================*/
2500 PROCEDURE update_invoice_events_status(
2501 p_invoice_id IN NUMBER,
2502 p_calling_sequence IN VARCHAR2)
2503 IS
2504
2505 TYPE t_check_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
2506 TYPE t_accounting_event_ids IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
2507
2508 l_legal_entity_id NUMBER(15);
2509 l_ledger_id NUMBER(15);
2510 l_org_id NUMBER(15);
2511 l_Event_count NUMBER;
2512 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
2513 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
2514 l_event_info XLA_EVENTS_PUB_PKG.T_EVENT_INFO;
2515 l_transaction_date AP_INVOICES_ALL.invoice_date%TYPE;
2516
2517 l_curr_calling_sequence VARCHAR2(2000);
2518
2519 -- Logging:
2520 l_procedure_name CONSTANT VARCHAR2(30) := 'update_invoice_events_status';
2521 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
2522 --7011943
2523 l_count NUMBER;
2524 l_check_id NUMBER;
2525 l_pmt_awt_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
2526 l_event_source_info_temp XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
2527
2528 --bug 8358552 starts
2529 l_dummy number;
2530 --bug 8358552 ends
2531
2532 BEGIN
2533
2534 l_curr_calling_sequence := p_calling_sequence ||
2535 ' -> AP_ACCOUNTING_EVENTS_PKG.UPDATE_INVOICE_EVENTS_STATUS';
2536
2537 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2538
2539 l_log_msg := 'Begin of procedure '||l_procedure_name;
2540 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2541 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2542 G_MODULE_NAME || l_procedure_name,
2543 l_log_msg);
2544 END IF;
2545
2546 SELECT count(accounting_Event_id)
2547 INTO l_event_count
2548 FROM AP_INVOICE_DISTRIBUTIONS AID
2549 WHERE AID.accounting_Event_id is not null
2550 AND AID.invoice_id = P_Invoice_id;
2551
2552 IF l_Event_count <> 0 THEN
2553
2554 get_invoice_info
2555 ( p_invoice_id => p_invoice_id,
2556 p_org_id => l_org_id, -- OUT
2557 p_legal_entity_id => l_legal_entity_id, -- OUT
2558 p_ledger_id => l_ledger_id, -- OUT
2559 p_transaction_date => l_transaction_date, -- OUT
2560 p_calling_sequence => l_curr_calling_sequence
2561 );
2562
2563 l_event_security_context :=
2564 get_event_security_context
2565 ( p_org_id => l_org_id,
2566 p_calling_sequence => l_curr_calling_sequence
2567 );
2568
2569 DECLARE
2570
2571 CURSOR l_invoice_distributions_cur IS
2572 SELECT distinct(AID.accounting_event_id)
2573 FROM ap_invoice_distributions AID
2574 WHERE AID.invoice_id = p_invoice_id
2575 AND AID.accounting_event_id IS NOT NULL;
2576
2577 l_invoice_event_status VARCHAR2(1);
2578 l_do_updates_flag BOOLEAN;
2579 l_accounting_event_ids t_accounting_event_ids;
2580
2581 BEGIN
2582
2583 l_event_source_info :=
2584 get_invoice_event_source_info
2585 ( p_legal_entity_id => l_legal_entity_id,
2586 p_ledger_id => l_ledger_id,
2587 p_invoice_id => p_invoice_id,
2588 p_calling_sequence => l_curr_calling_sequence
2589 );
2590 l_event_source_info_temp := l_event_source_info ; --7011943
2591 IF
2592 ( is_event_complete
2593 ( p_doc_type => INVOICES_ENTITY,
2594 p_source_id => p_invoice_id,
2595 p_calling_sequence => l_curr_calling_sequence
2596 ) = 'CREATED') THEN
2597
2598 l_invoice_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
2599
2600 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
2601 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2602 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2603 G_MODULE_NAME || l_procedure_name,
2607 l_do_updates_flag :=
2604 l_log_msg);
2605 END IF;
2606
2608 AP_XLA_EVENTS_PKG.EVENT_EXISTS
2609 ( p_event_source_info => l_event_source_info,
2610 p_event_class_code => NULL,
2611 p_event_type_code => NULL,
2612 p_event_date => NULL,
2613 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
2614 p_event_number => NULL,
2615 p_valuation_method => NULL,
2616 p_security_context => l_event_security_context,
2617 p_calling_sequence => l_curr_calling_sequence
2618 );
2619
2620 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
2621 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2622 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2623 G_MODULE_NAME || l_procedure_name,
2624 l_log_msg);
2625 END IF;
2626
2627 ELSE
2628
2629 l_invoice_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
2630
2631 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
2632
2633 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2634 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2635 G_MODULE_NAME || l_procedure_name,
2636 l_log_msg);
2637 END IF;
2638
2639 l_do_updates_flag :=
2640 AP_XLA_EVENTS_PKG.EVENT_EXISTS
2641 ( p_event_source_info => l_event_source_info,
2642 p_event_class_code => NULL,
2643 p_event_type_code => NULL,
2644 p_event_date => NULL,
2645 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
2646 p_event_number => NULL,
2647 p_valuation_method => NULL,
2648 p_security_context => l_event_security_context,
2649 p_calling_sequence => l_curr_calling_sequence
2650 );
2651
2652 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
2653 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2654 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2655 G_MODULE_NAME || l_procedure_name,
2656 l_log_msg);
2657 END IF;
2658
2659 END IF;
2660
2661 IF (l_do_updates_flag) THEN
2662
2663 OPEN l_invoice_distributions_cur;
2664 LOOP
2665
2666 l_log_msg := 'Open cursor l_invoice_distributions_cur';
2667 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
2668 FND_LOG.STRING(G_LEVEL_STATEMENT,
2669 G_MODULE_NAME || l_procedure_name,
2670 l_log_msg);
2671 END IF;
2672
2673 FETCH l_invoice_distributions_cur
2674 BULK COLLECT INTO
2675 l_accounting_event_ids
2676 LIMIT 1000;
2677
2678 FOR i IN 1 ..l_accounting_event_ids.count LOOP
2679
2680 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
2681 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2682 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2683 G_MODULE_NAME || l_procedure_name,
2684 l_log_msg);
2685 END IF;
2686
2687 --bug 7011943 There are payment time AWT dists.
2688 select count(*)
2689 into l_count
2690 from ap_invoice_distributions_all
2691 where accounting_event_id = l_accounting_event_ids(i)
2692 and invoice_id = l_event_source_info.source_id_int_1
2693 and awt_invoice_payment_id is not null;
2694
2695 if (l_count > 0) then
2696 BEGIN
2697 select DISTINCT ac.check_id --bug10024752
2698 into l_check_id
2699 from ap_invoice_payments_all aip,
2700 ap_checks_all ac
2701 where aip.check_id=ac.check_id
2702 and aip.accounting_event_id = l_accounting_event_ids(i)
2703 and aip.invoice_id=l_event_source_info.source_id_int_1;
2704
2705
2706 l_pmt_awt_event_source_info:=get_payment_event_source_info(p_legal_entity_id => l_legal_entity_id,
2707 p_ledger_id => l_ledger_id,
2708 p_check_id => l_check_id,
2709 p_calling_sequence => l_curr_calling_sequence);
2710 l_event_source_info := l_pmt_awt_event_source_info;
2711
2712 --bug 8358552 starts
2713 BEGIN
2714 SELECT 1
2715 INTO l_dummy
2716 FROM ap_checks_all ac,
2717 ap_system_parameters_all asp
2718 WHERE ac.check_id =l_event_source_info.source_id_int_1
2719 AND ac.org_id = asp.org_id
2720 AND( (ac.currency_code <> asp.base_currency_code
2721 AND ac.exchange_rate is not null
2722 AND ac.exchange_rate_type is not null
2723 AND ac.exchange_date is not null)
2724 OR (ac.currency_code = asp.base_currency_code));
2725 EXCEPTION
2726 WHEN NO_DATA_FOUND THEN
2727 l_invoice_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
2728 END;
2729 --bug 8358552 ends
2730
2731 EXCEPTION
2732 WHEN OTHERS THEN
2733 NULL;
2734 END;
2735 ELSE
2736 l_event_source_info := l_event_source_info_temp;
2737 end if;
2738 --bug 7011943 ends
2739 l_event_info :=
2740 AP_XLA_EVENTS_PKG.GET_EVENT_INFO
2741 ( p_event_source_info => l_event_source_info,
2745 p_calling_sequence => l_curr_calling_sequence
2742 p_event_id => l_accounting_event_ids(i),
2743 p_valuation_method => NULL,
2744 p_security_context => l_event_security_context,
2746 );
2747
2748 --bug 7011943
2749 l_event_source_info := l_event_source_info_temp;
2750 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
2751 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2752 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2753 G_MODULE_NAME || l_procedure_name,
2754 l_log_msg);
2755 END IF;
2756
2757 IF ( l_event_info.event_status_code IN
2758 ( XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
2759 XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE
2760 ) AND
2761 l_event_info.event_status_code <> l_invoice_event_status) THEN
2762
2763 l_log_msg := 'Before AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
2764 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2765 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2766 G_MODULE_NAME || l_procedure_name,
2767 l_log_msg);
2768 END IF;
2769
2770 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
2771 ( p_event_source_info => l_event_source_info,
2772 p_event_class_code => null,
2773 p_event_type_code => null,
2774 p_event_date => null,
2775 p_event_status_code => l_invoice_event_status,
2776 p_valuation_method => NULL,
2777 p_security_context => l_event_security_context,
2778 p_calling_sequence => l_curr_calling_sequence
2779 );
2780
2781 l_log_msg := 'After AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
2782 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2783 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2784 G_MODULE_NAME || l_procedure_name,
2785 l_log_msg);
2786 END IF;
2787 END IF;
2788
2789 END LOOP;
2790
2791 EXIT WHEN l_invoice_distributions_cur%NOTFOUND;
2792
2793 END LOOP;
2794 CLOSE l_invoice_distributions_cur;
2795
2796 END IF; -- l_do_updates_flag
2797
2798 EXCEPTION
2799 WHEN OTHERS THEN
2800 IF (l_invoice_distributions_cur%ISOPEN) THEN
2801 CLOSE l_invoice_distributions_cur;
2802 END IF;
2803
2804 l_log_msg := 'Exception calling sequence '
2805 ||l_curr_calling_sequence
2806 ||' Error: '
2807 ||SQLERRM;
2808 IF (G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL ) THEN
2809
2810 FND_LOG.STRING(G_LEVEL_EXCEPTION,
2811 G_MODULE_NAME || l_procedure_name,
2812 l_log_msg);
2813 END IF;
2814
2815 RAISE;
2816 END;
2817
2818 DECLARE
2819
2820 -- Bug 7042296 Modified the cursor to pick the
2821 -- Payment Adjustment Events.
2822 CURSOR l_invoice_payments_cur IS --bug 7042296
2823 SELECT distinct(AIP.check_id),
2824 APH.accounting_event_id
2825 FROM ap_invoice_payments AIP, ap_payment_history_all APH
2826 WHERE AIP.invoice_id = p_invoice_id
2827 AND AIP.accounting_event_id IS NOT NULL
2828 and AIP.check_id = APH.check_id
2829 and APH.accounting_event_id is not null
2830 ORDER BY AIP.check_id;
2831
2832
2833 l_check_ids t_check_ids;
2834 l_accounting_event_ids t_accounting_event_ids;
2835 l_last_check_id NUMBER(15) := NULL;
2836 l_curr_check_id NUMBER(15);
2837 l_payment_event_status VARCHAR2(1);
2838 l_do_updates_flag BOOLEAN;
2839
2840 BEGIN
2841
2842 OPEN l_invoice_payments_cur;
2843 LOOP
2844
2845 l_log_msg := 'Cursor l_invoice_payment_cur ';
2846 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
2847 FND_LOG.STRING(G_LEVEL_STATEMENT,
2848 G_MODULE_NAME || l_procedure_name,
2849 l_log_msg);
2850 END IF;
2851
2852 FETCH l_invoice_payments_cur
2853 BULK COLLECT INTO
2854 l_check_ids,
2855 l_accounting_event_ids
2856 LIMIT 1000;
2857
2858 FOR i IN 1 .. l_accounting_event_ids.count LOOP
2859
2860 l_curr_check_id := l_check_ids(i);
2861
2862 IF ( l_last_check_id IS NULL OR
2863 l_curr_check_id <> l_last_check_id) THEN
2864
2865 l_last_check_id := l_curr_check_id;
2866
2867 l_log_msg := 'Before calling proc get_payment_event_source_info';
2868 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2869 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2870 G_MODULE_NAME || l_procedure_name,
2871 l_log_msg);
2872 END IF;
2873
2874 l_event_source_info :=
2875 get_payment_event_source_info
2876 ( p_legal_entity_id => l_legal_entity_id,
2877 p_ledger_id => l_ledger_id,
2878 p_check_id => l_curr_check_id,
2879 p_calling_sequence => l_curr_calling_sequence
2880 );
2881
2882 l_log_msg := 'After calling get_payment_event_source_info';
2883 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2884 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2885 G_MODULE_NAME || l_procedure_name,
2886 l_log_msg);
2890 ( p_doc_type => PAYMENTS_ENTITY,
2887 END IF;
2888
2889 IF ( is_event_complete
2891 p_source_id => l_curr_check_id,
2892 p_calling_sequence => l_curr_calling_sequence) = 'CREATED')
2893 THEN
2894
2895 l_payment_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
2896
2897 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.EVENT_EIXSTS';
2898 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2899 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2900 G_MODULE_NAME || l_procedure_name,
2901 l_log_msg);
2902 END IF;
2903
2904 l_do_updates_flag :=
2905 AP_XLA_EVENTS_PKG.EVENT_EXISTS
2906 ( p_event_source_info => l_event_source_info,
2907 p_event_class_code => NULL,
2908 p_event_type_code => NULL,
2909 p_event_date => NULL,
2910 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
2911 p_event_number => NULL,
2912 p_valuation_method => NULL,
2913 p_security_context => l_event_security_context,
2914 p_calling_sequence => l_curr_calling_sequence
2915 );
2916
2917 l_log_msg := 'After AP_ACCOUNTING_EVENT_PKG.'
2918 ||'get_payment_event_source_info';
2919 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2920 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2921 G_MODULE_NAME || l_procedure_name,
2922 l_log_msg);
2923 END IF;
2924
2925 ELSE
2926
2927 l_payment_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
2928
2929 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
2930 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2931 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2932 G_MODULE_NAME || l_procedure_name,
2933 l_log_msg);
2934 END IF;
2935
2936 l_do_updates_flag :=
2937 AP_XLA_EVENTS_PKG.EVENT_EXISTS
2938 ( p_event_source_info => l_event_source_info,
2939 p_event_class_code => NULL,
2940 p_event_type_code => NULL,
2941 p_event_date => NULL,
2942 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
2943 p_event_number => NULL,
2944 p_valuation_method => NULL,
2945 p_security_context => l_event_security_context,
2946 p_calling_sequence => l_curr_calling_sequence
2947 );
2948
2949 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
2950 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2951 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2952 G_MODULE_NAME || l_procedure_name,
2953 l_log_msg);
2954 END IF;
2955 END IF;
2956
2957 END IF;
2958
2959 IF (l_do_updates_flag) THEN
2960
2961 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
2962 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2963 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2964 G_MODULE_NAME || l_procedure_name,
2965 l_log_msg);
2966 END IF;
2967
2971 p_event_id => l_accounting_event_ids(i),
2968 l_event_info :=
2969 AP_XLA_EVENTS_PKG.GET_EVENT_INFO
2970 ( p_event_source_info => l_event_source_info,
2972 p_valuation_method => NULL,
2973 p_security_context => l_event_security_context,
2974 p_calling_sequence => l_curr_calling_sequence
2975 );
2976
2977 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
2978 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2979 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2980 G_MODULE_NAME || l_procedure_name,
2981 l_log_msg);
2982 END IF;
2983
2984 IF (l_event_info.event_status_code IN
2985 ( XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
2986 XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE) AND
2987 l_event_info.event_status_code <> l_payment_event_status) THEN
2988
2989 l_log_msg := 'Before AP_XLA_EVENTS_PKG.UPDATE_EVENT_INFO';
2990 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
2991 FND_LOG.STRING(G_LEVEL_PROCEDURE,
2992 G_MODULE_NAME || l_procedure_name,
2993 l_log_msg);
2994 END IF;
2995
2996 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
2997 ( p_event_source_info => l_event_source_info,
2998 p_event_class_code => null,
2999 p_event_type_code => null,
3000 p_event_date => null,
3001 p_event_status_code => l_payment_event_status,
3002 p_valuation_method => NULL,
3003 p_security_context => l_event_security_context,
3004 p_calling_sequence => l_curr_calling_sequence
3005 );
3006
3007 l_log_msg := 'After AP_XLA_EVENTS_PKG.UPDATE_EVENT_INFO';
3008 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3009 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3010 G_MODULE_NAME || l_procedure_name,
3011 l_log_msg);
3012 END IF;
3013 END IF;
3014 END IF; -- l_do_updates_flag
3015 END LOOP;
3016
3017 EXIT WHEN l_invoice_payments_cur%NOTFOUND;
3018 END LOOP;
3019 CLOSE l_invoice_payments_cur;
3020
3021 EXCEPTION
3022 WHEN OTHERS THEN
3023 IF (l_invoice_payments_cur%ISOPEN) THEN
3024 CLOSE l_invoice_payments_cur;
3025 END IF;
3026
3027 l_log_msg := 'Exception calling sequence '
3028 ||l_curr_calling_sequence
3029 ||' Error: '
3030 ||SQLERRM;
3031 IF (G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL ) THEN
3032 FND_LOG.STRING(G_LEVEL_EXCEPTION,
3033 G_MODULE_NAME || l_procedure_name,
3034 l_log_msg);
3035 END IF;
3036 RAISE;
3037 END;
3038
3039 l_log_msg := 'End of procedure '||l_procedure_name;
3040 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3041 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3042 G_MODULE_NAME || l_procedure_name,
3043 l_log_msg);
3044 END IF;
3045
3046 END IF; --l_event_count<>0
3047
3048 EXCEPTION
3049 WHEN OTHERS THEN
3050 IF (SQLCODE <> -20001) THEN
3051 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
3052 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
3053 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
3054 l_curr_calling_sequence);
3055 FND_MESSAGE.SET_TOKEN('PARAMETERS',
3056 'p_invoice_id = '||p_invoice_id);
3057 END IF;
3058 APP_EXCEPTION.RAISE_EXCEPTION();
3059 END update_invoice_events_status;
3060
3061
3062 /*============================================================================
3063 | PROCEDURE - UPDATE_PAYMENT_EVENTS_STATUS (PUBLIC)
3064 |
3065 | DESCRIPTION
3066 | Update payment event's status
3067 |
3068 | PRAMETERS
3069 | p_check_id: Check ID
3070 | p_calling_sequence: Debug information
3071 |
3072 | KNOWN ISSUES:
3073 |
3074 | NOTES:
3075 |
3076 | MODIFICATION HISTORY
3077 | Date Author Description of Change
3078 |
3079 *===========================================================================*/
3080 PROCEDURE update_payment_events_status (
3081 p_check_id IN NUMBER,
3082 p_calling_sequence IN VARCHAR2)
3083 IS
3084
3085 TYPE t_invoice_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
3086 TYPE t_accounting_event_ids IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
3087
3088 l_legal_entity_id NUMBER(15);
3089 l_ledger_id NUMBER(15);
3090 l_org_id NUMBER(15);
3091 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
3092 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
3093 l_event_info XLA_EVENTS_PUB_PKG.T_EVENT_INFO;
3094 l_transaction_date AP_INVOICES_ALL.invoice_date%TYPE;
3095
3096 l_curr_calling_sequence VARCHAR2(2000);
3097
3098 -- Logging:
3099 l_procedure_name CONSTANT VARCHAR2(30) := 'UPDATE_PAYMENT_EVENTS_STATUS';
3100 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
3101 --7011943
3102 l_count NUMBER;
3103 l_check_id NUMBER;
3104 l_pmt_awt_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
3105 l_event_source_info_temp XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
3106
3107
3108 BEGIN
3109
3110 l_curr_calling_sequence := p_calling_sequence ||
3111 ' -> AP_ACCOUNTING_EVENTS_PKG.UPDATE_PAYMENT_EVENTS_STATUS';
3112
3116 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3113 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3114
3115 l_log_msg := 'Begin of procedure '|| l_procedure_name;
3117 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3118 G_MODULE_NAME || l_procedure_name,
3119 l_log_msg);
3120 END IF;
3121
3122 DECLARE
3123
3124 CURSOR l_invoice_distributions_cur IS
3125 SELECT distinct(AID.invoice_id),
3126 AID.accounting_event_id
3127 FROM ap_invoice_payments AIP,
3128 ap_invoice_distributions AID
3129 WHERE AIP.invoice_id = AID.invoice_id
3130 AND AIP.check_id = p_check_id
3131 AND AID.accounting_event_id IS NOT NULL
3132 ORDER BY AID.invoice_id;
3133
3134 l_invoice_ids t_invoice_ids;
3135 l_accounting_event_ids t_accounting_event_ids;
3136 l_last_invoice_id NUMBER(15) := NULL;
3137 l_curr_invoice_id NUMBER(15);
3138 l_invoice_event_status VARCHAR2(1);
3139 l_do_updates_flag BOOLEAN;
3140
3141 BEGIN
3142
3143 l_log_msg := 'Open cursor l_invoice_distributions_cur';
3144 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3145 FND_LOG.STRING(G_LEVEL_STATEMENT,
3146 G_MODULE_NAME || l_procedure_name,
3147 l_log_msg);
3148 END IF;
3149
3150 OPEN l_invoice_distributions_cur;
3151 LOOP
3152
3153 FETCH l_invoice_distributions_cur
3154 BULK COLLECT INTO
3155 l_invoice_ids,
3156 l_accounting_event_ids
3157 LIMIT 1000;
3158
3159
3160 FOR i IN 1 .. l_accounting_event_ids.count LOOP
3161
3162 l_curr_invoice_id := l_invoice_ids(i);
3163
3164 IF ( l_last_invoice_id IS NULL OR
3165 l_curr_invoice_id <> l_last_invoice_id) THEN
3166
3167 l_last_invoice_id := l_curr_invoice_id;
3168
3169 l_log_msg := 'Before calling procedure get_invoice_info';
3170 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3171 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3172 G_MODULE_NAME || l_procedure_name,
3173 l_log_msg);
3174 END IF;
3175
3176 get_invoice_info
3177 ( p_invoice_id => l_curr_invoice_id,
3178 p_org_id => l_org_id, -- OUT
3179 p_legal_entity_id => l_legal_entity_id, -- OUT
3180 p_ledger_id => l_ledger_id, -- OUT
3181 p_transaction_date => l_transaction_date, -- OUT
3182 p_calling_sequence => l_curr_calling_sequence
3183 );
3184
3185 l_log_msg := 'After calling procedure get_invoice_info';
3186 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3187 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3188 G_MODULE_NAME || l_procedure_name,
3189 l_log_msg);
3190 END IF;
3191
3192 l_log_msg := 'Before calling procedure get_event_security_context';
3193 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3194 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3195 G_MODULE_NAME || l_procedure_name,
3196 l_log_msg);
3197 END IF;
3198
3199 l_event_security_context :=
3200 get_event_security_context
3201 ( p_org_id => l_org_id,
3202 p_calling_sequence => l_curr_calling_sequence
3203 );
3204
3205 l_log_msg := 'After calling procedure get_event_security_context';
3206 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3207 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3208 G_MODULE_NAME || l_procedure_name,
3209 l_log_msg);
3210 END IF;
3211
3212 l_log_msg := 'Before calling get_invoice_event_source_info';
3213 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3214 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3215 G_MODULE_NAME || l_procedure_name,
3216 l_log_msg);
3217 END IF;
3218
3219 l_event_source_info :=
3220 get_invoice_event_source_info
3221 ( p_legal_entity_id => l_legal_entity_id,
3222 p_ledger_id => l_ledger_id,
3223 p_invoice_id => l_curr_invoice_id,
3224 p_calling_sequence => l_curr_calling_sequence
3225 );
3226 l_event_source_info_temp := l_event_source_info; --7011943
3227 l_log_msg := 'After calling procedure get_invoice_info';
3228 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3229 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3230 G_MODULE_NAME || l_procedure_name,
3231 l_log_msg);
3232 END IF;
3233
3234 IF (is_event_complete
3235 (p_doc_type => INVOICES_ENTITY,
3236 p_source_id => l_curr_invoice_id,
3237 p_calling_sequence => l_curr_calling_sequence) = 'CREATED') THEN
3238
3239 l_invoice_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
3240
3241 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3242 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3243 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3244 G_MODULE_NAME || l_procedure_name,
3245 l_log_msg);
3246 END IF;
3247
3248 l_do_updates_flag :=
3249 AP_XLA_EVENTS_PKG.EVENT_EXISTS
3250 ( p_event_source_info => l_event_source_info,
3251 p_event_class_code => NULL,
3255 p_event_number => NULL,
3252 p_event_type_code => NULL,
3253 p_event_date => NULL,
3254 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
3256 p_valuation_method => NULL,
3257 p_security_context => l_event_security_context,
3258 p_calling_sequence => l_curr_calling_sequence
3259 );
3260
3261 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3262 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3263 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3264 G_MODULE_NAME || l_procedure_name,
3265 l_log_msg);
3266 END IF;
3267 ELSE
3268
3269 l_invoice_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
3270
3271 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3272 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3273 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3274 G_MODULE_NAME || l_procedure_name,
3275 l_log_msg);
3276 END IF;
3277
3278 l_do_updates_flag :=
3279 AP_XLA_EVENTS_PKG.EVENT_EXISTS
3280 ( p_event_source_info => l_event_source_info,
3281 p_event_class_code => NULL,
3282 p_event_type_code => NULL,
3283 p_event_date => NULL,
3284 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
3285 p_event_number => NULL,
3286 p_valuation_method => NULL,
3287 p_security_context => l_event_security_context,
3288 p_calling_sequence => l_curr_calling_sequence);
3289
3290 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3291 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3292 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3293 G_MODULE_NAME || l_procedure_name,
3294 l_log_msg);
3295 END IF;
3296
3297 END IF;
3298
3299 END IF;
3300
3301 IF (l_do_updates_flag) THEN
3302
3303 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
3304 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3305 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3306 G_MODULE_NAME || l_procedure_name,
3307 l_log_msg);
3308 END IF;
3309 --bug 7011943
3310 select count(*)
3311 into l_count
3312 from ap_invoice_distributions_all
3313 where accounting_event_id = l_accounting_event_ids(i)
3314 and invoice_id = l_event_source_info.source_id_int_1
3315 and awt_invoice_payment_id is not null;
3316
3317 if (l_count > 0) then
3318 BEGIN
3319 select ac.check_id
3320 into l_check_id
3321 from ap_invoice_payments_all aip,
3322 ap_checks_all ac
3323 where aip.check_id=ac.check_id
3324 and aip.accounting_event_id = l_accounting_event_ids(i)
3325 and aip.invoice_id=l_event_source_info.source_id_int_1;
3326
3327
3328 l_pmt_awt_event_source_info:=get_payment_event_source_info(p_legal_entity_id => l_legal_entity_id,
3329 p_ledger_id => l_ledger_id,
3330 p_check_id => l_check_id,
3331 p_calling_sequence => l_curr_calling_sequence);
3332 l_event_source_info := l_pmt_awt_event_source_info;
3333
3334 EXCEPTION
3335 WHEN OTHERS THEN
3336 NULL;
3337 END;
3338 ELSE
3339 l_event_source_info := l_event_source_info_temp;
3340 end if;
3341 --bug 7011943 ends
3342
3343 l_event_info :=
3344 AP_XLA_EVENTS_PKG.GET_EVENT_INFO
3345 ( p_event_source_info => l_event_source_info,
3346 p_event_id => l_accounting_event_ids(i),
3347 p_valuation_method => NULL,
3348 p_security_context => l_event_security_context,
3349 p_calling_sequence => l_curr_calling_sequence);
3350 --bug 7011943
3351 l_event_source_info := l_event_source_info_temp;
3352
3353 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
3354 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3355 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3356 G_MODULE_NAME || l_procedure_name,
3357 l_log_msg);
3358 END IF;
3359
3360 IF ( l_event_info.event_status_code IN
3361 ( XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
3362 XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE) AND
3363 l_event_info.event_status_code <> l_invoice_event_status) THEN
3364
3365 l_log_msg := 'Before AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
3366 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3367 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3368 G_MODULE_NAME || l_procedure_name,
3369 l_log_msg);
3370 END IF;
3371
3372 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
3373 ( p_event_source_info => l_event_source_info,
3374 p_event_class_code => null,
3375 p_event_type_code => null,
3376 p_event_date => null,
3377 p_event_status_code => l_invoice_event_status,
3378 p_valuation_method => NULL,
3382 l_log_msg := 'After AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
3379 p_security_context => l_event_security_context,
3380 p_calling_sequence => l_curr_calling_sequence);
3381
3383 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3384 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3385 G_MODULE_NAME || l_procedure_name,
3386 l_log_msg);
3387 END IF;
3388 END IF;
3389
3390
3391 END IF; -- l_do_updates_flag
3392
3393 END LOOP;
3394
3395 EXIT WHEN l_invoice_distributions_cur%NOTFOUND;
3396 END LOOP;
3397 CLOSE l_invoice_distributions_cur;
3398
3399 EXCEPTION
3400 WHEN OTHERS THEN
3401 IF (l_invoice_distributions_cur%ISOPEN) THEN
3402 CLOSE l_invoice_distributions_cur;
3403 END IF;
3404
3405 l_log_msg := 'Exception calling sequence '
3406 ||l_curr_calling_sequence
3407 ||' Error: '
3408 ||SQLERRM;
3409 IF (G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL ) THEN
3410 FND_LOG.STRING(G_LEVEL_EXCEPTION,
3411 G_MODULE_NAME || l_procedure_name,
3412 l_log_msg);
3413 END IF;
3414 RAISE;
3415 END;
3416
3417 DECLARE
3418
3419 CURSOR l_invoice_payments_cur IS
3420 SELECT distinct(AIP.accounting_event_id)
3421 FROM ap_invoice_payments AIP
3422 WHERE AIP.check_id = p_check_id
3423 AND AIP.accounting_event_id IS NOT NULL;
3424
3425 l_payment_event_status VARCHAR2(1);
3426 l_do_updates_flag BOOLEAN;
3427 l_accounting_event_ids t_accounting_event_ids;
3428
3429 BEGIN
3430
3431 l_log_msg := 'Before calling procedure get_payment_info';
3432 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3433 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3434 G_MODULE_NAME || l_procedure_name,
3435 l_log_msg);
3436 END IF;
3437
3438 get_payment_info
3439 ( p_check_id => p_check_id,
3440 p_org_id => l_org_id, -- OUT
3441 p_legal_entity_id => l_legal_entity_id, -- OUT
3442 p_ledger_id => l_ledger_id, -- OUT
3443 p_calling_sequence => l_curr_calling_sequence
3444 );
3445
3446 l_log_msg := 'After calling procedure get_payment_info';
3447 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3448 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3449 G_MODULE_NAME || l_procedure_name,
3450 l_log_msg);
3451 END IF;
3452
3453 l_log_msg := 'Before calling procedure get_event_security_context';
3454 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3455 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3456 G_MODULE_NAME || l_procedure_name,
3457 l_log_msg);
3458 END IF;
3459
3460 l_event_security_context :=
3461 get_event_security_context
3462 ( p_org_id => l_org_id,
3463 p_calling_sequence => l_curr_calling_sequence
3464 );
3465
3466 l_log_msg := 'After calling procedure get_event_security_context';
3467 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3468 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3469 G_MODULE_NAME || l_procedure_name,
3470 l_log_msg);
3471 END IF;
3472
3473 l_log_msg := 'Before calling procedure get_payment_event_source_info';
3474 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3475 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3476 G_MODULE_NAME || l_procedure_name,
3477 l_log_msg);
3478 END IF;
3479
3480 l_event_source_info :=
3481 get_payment_event_source_info
3482 ( p_legal_entity_id => l_legal_entity_id,
3483 p_ledger_id => l_ledger_id,
3484 p_check_id => p_check_id,
3485 p_calling_sequence => l_curr_calling_sequence
3486 );
3487
3488 l_log_msg := 'After calling procedure get_payment_event_source_info';
3489 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3490 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3491 G_MODULE_NAME || l_procedure_name,
3492 l_log_msg);
3493 END IF;
3494
3495 IF (is_event_complete
3496 (p_doc_type => PAYMENTS_ENTITY,
3497 p_source_id => p_check_id,
3498 p_calling_sequence => l_curr_calling_sequence) = 'CREATED') THEN
3499
3500 l_payment_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
3501
3502 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3503 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3504 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3505 G_MODULE_NAME || l_procedure_name,
3506 l_log_msg);
3507 END IF;
3508
3509 l_do_updates_flag :=
3510 AP_XLA_EVENTS_PKG.EVENT_EXISTS
3511 ( p_event_source_info => l_event_source_info,
3512 p_event_class_code => NULL,
3513 p_event_type_code => NULL,
3514 p_event_date => NULL,
3515 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
3516 p_event_number => NULL,
3517 p_valuation_method => NULL,
3518 p_security_context => l_event_security_context,
3519 p_calling_sequence => l_curr_calling_sequence
3520 );
3521
3522 l_log_msg := 'After calling procedure AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3523 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3524 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3525 G_MODULE_NAME || l_procedure_name,
3526 l_log_msg);
3527 END IF;
3528
3529 ELSE
3530
3531 l_payment_event_status := XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE;
3532
3533 l_log_msg := 'Before calling procedure AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3534 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3535 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3536 G_MODULE_NAME || l_procedure_name,
3537 l_log_msg);
3538 END IF;
3539
3540 l_do_updates_flag :=
3541 AP_XLA_EVENTS_PKG.EVENT_EXISTS
3542 ( p_event_source_info => l_event_source_info,
3543 p_event_class_code => NULL,
3544 p_event_type_code => NULL,
3545 p_event_date => NULL,
3546 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
3547 p_event_number => NULL,
3548 p_valuation_method => NULL,
3549 p_security_context => l_event_security_context,
3550 p_calling_sequence => l_curr_calling_sequence
3551 );
3552
3553 l_log_msg := 'After calling procedure AP_XLA_EVENTS_PKG.EVENT_EXISTS';
3554 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3555 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3556 G_MODULE_NAME || l_procedure_name,
3557 l_log_msg);
3558 END IF;
3559
3560 END IF;
3561
3562 IF (l_do_updates_flag) THEN
3563
3564 OPEN l_invoice_payments_cur;
3565 LOOP
3566
3567 l_log_msg := 'Fetch data from cursor l_invoice_payments_cur';
3568 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3569 FND_LOG.STRING(G_LEVEL_STATEMENT,
3570 G_MODULE_NAME || l_procedure_name,
3571 l_log_msg);
3572 END IF;
3573
3574 FETCH l_invoice_payments_cur
3575 BULK COLLECT INTO
3576 l_accounting_event_ids
3577 LIMIT 1000;
3578
3579 l_log_msg := 'Begin loop for l_accounting_event_ids';
3580 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3581 FND_LOG.STRING(G_LEVEL_STATEMENT,
3582 G_MODULE_NAME || l_procedure_name,
3583 l_log_msg);
3584 END IF;
3585
3586 FOR i IN 1 ..l_accounting_event_ids.count LOOP
3587
3588 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
3589 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3590 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3591 G_MODULE_NAME || l_procedure_name,
3592 l_log_msg);
3593 END IF;
3594
3595 l_event_info :=
3596 AP_XLA_EVENTS_PKG.GET_EVENT_INFO
3597 ( p_event_source_info => l_event_source_info,
3598 p_event_id => l_accounting_event_ids(i),
3599 p_valuation_method => NULL,
3600 p_security_context => l_event_security_context,
3601 p_calling_sequence => l_curr_calling_sequence
3602 );
3603
3604 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
3605 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3606 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3607 G_MODULE_NAME || l_procedure_name,
3608 l_log_msg);
3609 END IF;
3610
3611 IF ( l_event_info.event_status_code IN
3612 ( XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
3613 XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE) AND
3614 l_event_info.event_status_code <> l_payment_event_status) THEN
3615
3616 l_log_msg := 'Before AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
3617 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3618 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3619 G_MODULE_NAME || l_procedure_name,
3620 l_log_msg);
3621 END IF;
3622
3623 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
3624 ( p_event_source_info => l_event_source_info,
3625 p_event_class_code =>
3626 get_event_class
3627 (
3628 p_event_type => l_event_info.event_type_code,
3632 p_event_date => l_event_info.event_date,
3629 p_calling_sequence => l_curr_calling_sequence
3630 ),
3631 p_event_type_code => l_event_info.event_type_code,
3633 p_event_status_code => l_payment_event_status,
3634 p_valuation_method => NULL,
3635 p_security_context => l_event_security_context,
3636 p_calling_sequence => l_curr_calling_sequence
3637 );
3638
3639 l_log_msg := 'After AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
3640 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3641 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3642 G_MODULE_NAME || l_procedure_name,
3643 l_log_msg);
3644 END IF;
3645
3646 END IF;
3647
3648 END LOOP;
3649 EXIT WHEN l_invoice_payments_cur%NOTFOUND;
3650 END LOOP;
3651
3652 CLOSE l_invoice_payments_cur;
3653
3654 l_log_msg := 'End loop for l_accounting_event_ids';
3655 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3656 FND_LOG.STRING(G_LEVEL_STATEMENT,
3657 G_MODULE_NAME || l_procedure_name,
3658 l_log_msg);
3659 END IF;
3660 END IF; -- l_do_updates_flag
3661
3662 EXCEPTION
3663 WHEN OTHERS THEN
3664 IF (l_invoice_payments_cur%ISOPEN) THEN
3665 CLOSE l_invoice_payments_cur;
3666 END IF;
3667 l_log_msg := 'Exception calling sequence '
3668 ||l_curr_calling_sequence
3669 ||' Error: '
3670 ||SQLERRM;
3671 IF (G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL ) THEN
3672 FND_LOG.STRING(G_LEVEL_EXCEPTION,
3673 G_MODULE_NAME || l_procedure_name,
3674 l_log_msg);
3675 END IF;
3676 RAISE;
3677 END;
3678
3679 l_log_msg := 'End of procedure '||l_procedure_name;
3680 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3681 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3682 G_MODULE_NAME || l_procedure_name,
3683 l_log_msg);
3684 END IF;
3685
3686 EXCEPTION
3687 WHEN OTHERS THEN
3688 IF (SQLCODE <> -20001) THEN
3689 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
3690 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
3691 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
3692 l_curr_calling_sequence);
3693 FND_MESSAGE.SET_TOKEN('PARAMETERS',
3694 'p_check_id = '||p_check_id);
3695 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
3696 END IF;
3697 APP_EXCEPTION.RAISE_EXCEPTION();
3698 END update_payment_events_status;
3699
3700 /*============================================================================
3701 | PROCEDURE - update_pmt_batch_event_status
3702 |
3703 | DESCRIPTION
3704 | Update accounting events for 'PAYMENT BATCH' type
3705 |
3706 | PRAMETERS
3707 | p_completed_pmts_group_id: payment request name
3708 | p_accounting_date:Event Date
3709 | p_org_id : org id for each small batch inside the payment request
3710 | p_set_of_books_id: the ledger id for this ou
3711 | p_calling_sequence: Debug information
3712 |
3713 | KNOWN ISSUES:
3714 |
3715 | NOTES:
3716 |
3717 | MODIFICATION HISTORY
3718 | Date Author Description of Change
3719 |
3720 *===========================================================================*/
3721 PROCEDURE update_pmt_batch_event_status(
3722 p_checkrun_name IN VARCHAR2,
3723 p_completed_pmts_group_id IN NUMBER,
3724 p_org_id IN NUMBER,
3725 p_calling_sequence IN VARCHAR2)
3726 IS
3727
3728 l_record_count NUMBER;
3729 l_curr_calling_sequence VARCHAR2(2000);
3730
3731 -- Logging:
3732 --4700081
3733 l_procedure_name CONSTANT VARCHAR2(40) := 'update_payment_batch_event_status';
3734 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
3735
3736 BEGIN
3737
3738 l_curr_calling_sequence := p_calling_sequence ||
3739 ' -> AP_ACCOUNTING_EVENTS_PKG.update_payment_batch_event_status';
3740
3741 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3742
3743 l_log_msg := 'Begin of procedure'||l_procedure_name;
3744 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3745 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3746 G_MODULE_NAME || l_procedure_name,
3747 l_log_msg);
3748 END IF;
3749
3750 -- Bug 5512197. Changed the reference of XL_EVENTS_GT to XLA_EVENTS_INT_GT
3751 SELECT COUNT(*)
3752 INTO l_record_count
3753 FROM XLA_EVENTS_INT_GT XEG
3754 WHERE XEG.application_id = 200
3755 AND XEG.entity_code = PAYMENTS_ENTITY
3756 AND XEG.event_type_code = PAYMENT_CREATED_TYPE;
3757
3758 IF ( l_record_count <> 0 ) THEN
3759
3760 l_log_msg := 'update the gt table set event status = no action';
3761 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3762 FND_LOG.STRING(G_LEVEL_STATEMENT,
3763 G_MODULE_NAME || l_procedure_name,
3764 l_log_msg);
3765 END IF;
3766
3767 UPDATE XLA_EVENTS_INT_GT XEG
3768 SET event_status_code = XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION
3769 WHERE XEG.application_id = 200
3770 AND XEG.source_id_int_1 IN
3774 and AC.completed_pmts_group_id = p_completed_pmts_group_id
3771 ( SELECT AC.check_id
3772 FROM AP_CHECKS_ALL AC
3773 WHERE AC.checkrun_name = p_checkrun_name
3775 and AC.org_id = p_org_id );
3776
3777 l_log_msg := 'update the gt table in success and call the api';
3778 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3779 FND_LOG.STRING(G_LEVEL_STATEMENT,
3780 G_MODULE_NAME || l_procedure_name,
3781 l_log_msg);
3782 END IF;
3783
3784 XLA_EVENTS_PUB_PKG.update_bulk_event_statuses(p_application_id => '200');
3785
3786 l_log_msg := 'after calling xla update status api';
3787 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3788 FND_LOG.STRING(G_LEVEL_STATEMENT,
3789 G_MODULE_NAME || l_procedure_name,
3790 l_log_msg);
3791 END IF;
3792
3793 ELSE
3794
3795 l_log_msg := 'XLA_EVENTS_INT_GT TABLE Has no records';
3796 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3797 FND_LOG.STRING(G_LEVEL_STATEMENT,
3798 G_MODULE_NAME || l_procedure_name,
3799 l_log_msg);
3800 END IF;
3801 APP_EXCEPTION.RAISE_EXCEPTION();
3802 END IF;
3803
3804 l_log_msg := 'End of the procedure';
3805 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3806 FND_LOG.STRING(G_LEVEL_STATEMENT,
3807 G_MODULE_NAME || l_procedure_name,
3808 l_log_msg);
3809 END IF;
3810
3811 EXCEPTION
3812 WHEN OTHERS THEN
3813
3814 IF (SQLCODE <> -20001) THEN
3815 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
3816 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
3817 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
3818 l_curr_calling_sequence);
3819 FND_MESSAGE.SET_TOKEN('PARAMETERS',
3820 'p_checkrun_name = '||p_checkrun_name
3821 ||', p_completed_pmts_group_id = '||p_completed_pmts_group_id
3822 ||', p_org_id = '||p_org_id
3823 ||', p_checkrun_name = '||p_checkrun_name);
3824 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
3825 END IF;
3826 fnd_file.put_line(FND_FILE.LOG,l_log_msg||'|'||SQLERRM||' - '||systimestamp); --Bug 14279929
3827 APP_EXCEPTION.RAISE_EXCEPTION();
3828 END update_pmt_batch_event_status;
3829
3830
3831 /*============================================================================
3832 | PROCEDURE - CREATE_PAYMENT_BATCH_EVENTS (PRIVATE)
3833 |
3834 | DESCRIPTION
3835 | Create accounting events for 'PAYMENT BATCH' type
3836 |
3837 | PRAMETERS
3838 | p_checkrun_name: payment request name
3839 | p_accounting_date:Event Date
3840 | p_org_id : org id for each small batch inside the payment request
3841 | p_set_of_books_id: the ledger id for this ou
3842 | p_calling_sequence: Debug information
3843 |
3844 | KNOWN ISSUES:
3845 |
3846 | NOTES:
3847 |
3848 | MODIFICATION HISTORY
3849 | Date Author Description of Change
3850 |
3851 *===========================================================================*/
3852 PROCEDURE create_payment_batch_events(
3853 p_checkrun_name IN VARCHAR2,
3854 p_completed_pmts_group_id IN NUMBER,
3855 p_accounting_date IN DATE,
3856 p_org_id IN NUMBER,
3857 p_set_of_books_id IN NUMBER,
3858 p_calling_sequence IN VARCHAR2)
3859 IS
3860
3861 l_event_type VARCHAR2(30) := PAYMENT_CREATED_TYPE;
3862 l_event_status VARCHAR2(1) := XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED;
3863 l_curr_calling_sequence VARCHAR2(2000);
3864 l_count NUMBER := 0;
3865
3866 -- Logging:
3867 l_procedure_name CONSTANT VARCHAR2(30) := 'CREATE_PAYMENT_BATCH_EVENTS';
3868 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
3869
3870 --bug 8358552 starts
3871 l_dummy number;
3872 --bug 8358552 ends
3873
3874 BEGIN
3875
3876 l_curr_calling_sequence := p_calling_sequence ||
3877 ' -> AP_ACCOUNTING_EVENTS_PKG.CREATE_PAYMENT_BATCH_EVENTS';
3878
3879 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3880
3881 l_log_msg := 'Begin of procedure'||l_procedure_name;
3882 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3883 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3884 G_MODULE_NAME || l_procedure_name,
3885 l_log_msg);
3886
3887 END IF;
3888
3889 l_log_msg := 'p_set_of_books_id = '|| p_set_of_books_id ||
3890 'p_org_id = '|| p_org_id ||
3891 'p_completed_pmts_group_id = '|| p_completed_pmts_group_id ||
3892 'p_checkrun_name = '|| p_checkrun_name;
3893 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3894 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3895 G_MODULE_NAME || l_procedure_name,
3896 l_log_msg);
3897
3898 END IF;
3899
3900 BEGIN
3901
3902 l_log_msg := 'Begin to clean up the xla_event_gt_table';
3903 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3904 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3905 G_MODULE_NAME || l_procedure_name,
3906 l_log_msg);
3907 END IF;
3908
3909 DELETE XLA_EVENTS_INT_GT XEG
3910 WHERE application_id = 200;
3911
3912 l_log_msg := 'After clean up the xla_event_gt_table';
3916 l_log_msg);
3913 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3914 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3915 G_MODULE_NAME || l_procedure_name,
3917 END IF;
3918
3919 END;
3920
3921 BEGIN
3922
3923 l_log_msg := 'create event for group_id = ' || p_completed_pmts_group_id ;
3924 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
3925 FND_LOG.STRING(G_LEVEL_PROCEDURE,
3926 G_MODULE_NAME || l_procedure_name,
3927 l_log_msg);
3928 END IF;
3929
3930 INSERT INTO XLA_EVENTS_INT_GT (
3931 application_id,
3932 ledger_id,
3933 legal_entity_id,
3934 entity_code,
3935 transaction_number,
3936 source_id_int_1,
3937 transaction_date,
3938 security_id_int_1,
3939 event_type_code,
3940 event_date,
3941 event_status_code )
3942 (SELECT
3943 '200',
3944 p_set_of_books_id,
3945 ac.legal_entity_id,
3946 PAYMENTS_ENTITY,
3947 ac.check_number,
3948 ac.check_id,
3949 ac.check_date,
3950 ac.org_id,
3951 l_event_type,
3952 p_accounting_date,
3953 --bug 8358552 starts
3954 --l_event_status
3955 --Bug 9359625 Only check for null xrate fields on foreign curr.
3956 decode(ac.currency_code, asp.base_currency_code, XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED,
3957 decode(ac.exchange_date, NULL, XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
3958 decode(ac.exchange_rate_type, NULL, XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
3959 decode(ac.exchange_rate, NULL, XLA_EVENTS_PUB_PKG.C_EVENT_INCOMPLETE,
3960 XLA_EVENTS_PUB_PKG.C_EVENT_UNPROCESSED))))
3961 --bug 8358552 ends
3962 FROM ap_checks_all ac
3963 , ap_system_parameters_all asp
3964 WHERE ac.checkrun_name = p_checkrun_name
3965 AND ac.completed_pmts_group_id = p_completed_pmts_group_id
3966 AND ac.org_id = p_org_id
3967 AND ac.org_id = asp.org_id);
3968
3969
3970 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3971
3972 SELECT COUNT(*)
3973 INTO l_count
3974 FROM XLA_EVENTS_INT_GT;
3975
3976 l_log_msg := 'event gt table has record number = '|| l_count;
3977 FND_LOG.STRING(G_LEVEL_STATEMENT,
3978 G_MODULE_NAME || l_procedure_name,
3979 l_log_msg);
3980 END IF;
3981
3982 EXCEPTION
3983 WHEN OTHERS THEN
3984 l_log_msg := 'unknown exception '||SQLERRM||' when try to insert into xla gt table';
3985 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3986 FND_LOG.STRING(G_LEVEL_STATEMENT,
3987 G_MODULE_NAME || l_procedure_name,
3988 l_log_msg);
3989 END IF;
3990 fnd_file.put_line(FND_FILE.LOG,l_log_msg||'|'||SQLERRM||' - '||systimestamp); --Bug 14279929
3991 APP_EXCEPTION.RAISE_EXCEPTION(); --Bug 14279929
3992 END;
3993
3994 l_log_msg := 'after insert into xla_event_gt table';
3995 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
3996 FND_LOG.STRING(G_LEVEL_STATEMENT,
3997 G_MODULE_NAME || l_procedure_name,
3998 l_log_msg);
3999 END IF;
4000
4001 BEGIN
4002 XLA_EVENTS_PUB_PKG.create_bulk_events
4003 (p_source_application_id => NULL
4004 ,p_application_id => '200'
4005 ,p_legal_entity_id => NULL
4006 ,p_ledger_id => p_set_of_books_id
4007 ,p_entity_type_code => PAYMENTS_ENTITY );
4008 END;
4009
4010 l_log_msg := 'After calling the sla create_bulk_events';
4011 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4012 FND_LOG.STRING(G_LEVEL_STATEMENT,
4013 G_MODULE_NAME || l_procedure_name,
4014 l_log_msg);
4015 END IF;
4016
4017 l_log_msg := 'Right before insert into ap_payment_history table';
4018 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4019 FND_LOG.STRING(G_LEVEL_STATEMENT,
4020 G_MODULE_NAME || l_procedure_name,
4021 l_log_msg);
4022 END IF;
4023
4024 BEGIN
4025
4026 INSERT INTO ap_payment_history_all
4027 ( payment_history_id,
4028 check_id,
4029 accounting_date,
4030 transaction_type,
4031 posted_flag,
4032 trx_bank_amount,
4033 errors_bank_amount,
4034 charges_bank_amount,
4035 bank_currency_code,
4036 bank_to_base_xrate_type,
4037 bank_to_base_xrate_date,
4038 bank_to_base_xrate,
4039 trx_pmt_amount,
4040 errors_pmt_amount,
4041 charges_pmt_amount,
4042 pmt_currency_code,
4043 pmt_to_base_xrate_type,
4044 pmt_to_base_xrate_date,
4045 pmt_to_base_xrate,
4046 trx_base_amount,
4047 errors_base_amount,
4048 charges_base_amount,
4049 matched_flag,
4050 rev_pmt_hist_id,
4051 creation_date,
4052 created_by,
4053 last_update_date,
4054 last_updated_by,
4055 last_update_login,
4056 program_update_date,
4057 program_application_id,
4058 program_id,
4059 accounting_event_id,
4060 request_id,
4064 ap_payment_history_s.NEXTVAL, -- payment_history_id
4061 org_id,
4062 related_event_id ) -- Bug 5015973 -- Bug 5658623: Adding hint
4063 ( select /*+ Leading(xeg) index(ac ap_checks_u1) */
4065 ac.check_id, -- check_id
4066 trunc(p_accounting_date), -- accounting_date bug6602676
4067 l_event_type, -- transaction_type
4068 'N', -- posted_flag
4069 NULL, -- trx_bank_amount
4070 NULL, -- errors_bank_amount
4071 NULL, -- charges_bank_amount
4072 NULL, -- bank_currency_code
4073 NULL, -- bank_to_base_xrate_type
4074 NULL, -- bank_to_base_xrate_date
4075 NULL, -- bank_to_base_xrate
4076 ac.amount, -- trx_pmt_amount
4077 NULL, -- errors_pmt_amount
4078 NULL, -- charges_pmt_amount
4079 ac.currency_code, -- pmt_currency_code
4080 ac.exchange_rate_type, -- pmt_to_base_xrate_type
4081 ac.exchange_date, -- pmt_to_base_xrate_date
4082 ac.exchange_rate, -- pmt_to_base_xrate
4083 NVL(ac.base_amount, ac.amount), -- trx_base_amount
4084 NULL, -- errors_base_amount
4085 NULL, -- charges_base_amount
4086 NULL, -- matched_flag
4087 NULL, -- rev_pmt_hist_id
4088 SYSDATE, -- creation_date
4089 FND_GLOBAL.user_id, -- created_by
4090 SYSDATE, -- last_update_date
4091 FND_GLOBAL.user_id, -- last_updated_by
4092 FND_GLOBAL.login_id, -- last_update_login
4093 SYSDATE, -- program_update_date
4094 NULL, -- program_application_id
4095 NULL, -- program_id
4096 XEG.event_id, -- accounting_event_id
4097 NULL, -- request_id
4098 ac.org_id, -- org_id
4099 XEG.event_id -- related_event_id
4100 from ap_checks_all ac,
4101 xla_events_int_gt xeg
4102 where ac.completed_pmts_group_id = p_completed_pmts_group_id
4103 and ac.org_id = p_org_id
4104 and xeg.source_id_int_1 = ac.check_id);
4105
4106 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4107
4108 SELECT COUNT(*)
4109 INTO l_count
4110 FROM ap_payment_history_all aph,
4111 ap_checks_all ac
4112 WHERE aph.check_id = ac.check_id
4113 AND ac.completed_pmts_group_id = p_completed_pmts_group_id
4114 AND ac.org_id = p_org_id;
4115
4116 l_log_msg := 'payment history has record number = '|| l_count;
4117 FND_LOG.STRING(G_LEVEL_STATEMENT,
4118 G_MODULE_NAME || l_procedure_name,
4119 l_log_msg);
4120 END IF;
4121
4122 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4123
4124 SELECT accounting_event_id
4125 INTO l_count
4126 FROM ap_payment_history_all aph,
4127 ap_checks_all ac
4128 WHERE aph.check_id = ac.check_id
4129 AND ac.completed_pmts_group_id = p_completed_pmts_group_id
4130 AND ac.org_id = p_org_id
4131 AND rownum = 1;
4132
4133 l_log_msg := ' one account event_id created = '|| l_count;
4134 FND_LOG.STRING(G_LEVEL_STATEMENT,
4135 G_MODULE_NAME || l_procedure_name,
4136 l_log_msg);
4137 END IF;
4138
4139 EXCEPTION
4140 WHEN OTHERS THEN
4141 l_log_msg := 'unknown exception '||SQLERRM||' when try to insert ap_payment_history table';
4142 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4143 FND_LOG.STRING(G_LEVEL_STATEMENT,
4144 G_MODULE_NAME || l_procedure_name,
4145 l_log_msg);
4146 END IF;
4147 fnd_file.put_line(FND_FILE.LOG,l_log_msg||'|'||SQLERRM||' - '||systimestamp); --Bug 14279929
4148 APP_EXCEPTION.RAISE_EXCEPTION(); --14279929
4149
4150 END;
4151
4152 l_log_msg := 'After insert ap_payment_history_table and end the procedure';
4153 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4154 FND_LOG.STRING(G_LEVEL_STATEMENT,
4155 G_MODULE_NAME || l_procedure_name,
4156 l_log_msg);
4157 END IF;
4158
4159
4160 EXCEPTION
4161 WHEN OTHERS THEN
4162
4163 IF (SQLCODE <> -20001) THEN
4164 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
4165 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
4166 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
4167 l_curr_calling_sequence);
4168 FND_MESSAGE.SET_TOKEN('PARAMETERS',
4169 'p_completed_pmts_group_id = '||p_completed_pmts_group_id
4170 ||', p_set_of_books_id = '||p_set_of_books_id
4171 ||', p_org_id = '||p_set_of_books_id
4172 ||', p_accounting_date = '||p_accounting_date);
4173 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
4174 END IF;
4175 fnd_file.put_line(FND_FILE.LOG,l_log_msg||'|'||SQLERRM||' - '||systimestamp); --Bug 14279929
4176 APP_EXCEPTION.RAISE_EXCEPTION();
4177 END create_payment_batch_events;
4178
4179
4180 /*============================================================================
4181 | PROCEDURE - UPDATE_AWT_INT_DISTS (PUBLIC)
4182 |
4183 | DESCRIPTION
4184 | This procedure is called by the payment event creation procs (EXCEPT for
4185 | pmt batches). Stamp the event_id on all awt invoice distributions and
4186 | on interest invoice distributions that were created by the payment for
4187 | which this event is being created.It will also stamp the Payment
4188 | Clearing Accounting event_id on the records in AIP when
4189 | when_to_acct_pmt = clrg only
4190 |
4191 | PRAMETERS
4192 | p_event_type: Event type
4193 | p_check_id: Check ID
4194 | p_event_id: Event ID
4198 |
4195 | p_calling_sequence: Debug information
4196 |
4197 | KNOWN ISSUES:
4199 | NOTES:
4200 |
4201 | MODIFICATION HISTORY
4202 | Date Author Description of Change
4203 |
4204 *===========================================================================*/
4205
4206 PROCEDURE update_awt_int_dists (
4207 p_event_type IN VARCHAR2,
4208 p_check_id IN NUMBER,
4209 p_event_id IN NUMBER,
4210 p_calling_sequence IN VARCHAR2)
4211 IS
4212
4213 l_curr_calling_sequence VARCHAR2(2000);
4214
4215 -- Logging:
4216 l_procedure_name CONSTANT VARCHAR2(30) := 'UPDATE_AWT_INT_DISTS';
4217 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4218
4219 BEGIN
4220
4221 l_curr_calling_sequence :=
4222 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.UPDATE_AWT_INT_DISTS';
4223
4224 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4225
4226 l_log_msg := 'Begin of procedure '||l_procedure_name;
4227 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4228 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4229 G_MODULE_NAME || l_procedure_name,
4230 l_log_msg);
4231 END IF;
4232
4233 IF ( p_event_type IN (PAYMENT_CREATED_TYPE,
4234 PAYMENT_ADJUSTED_TYPE,
4235 PAYMENT_CANCELLED_TYPE )) THEN
4236
4237 --Stamp the event_id on all awt invoice distributions that were
4238 --created by the payment for which this event is being created.
4239
4240 l_log_msg := 'Update ap_invoice_distribution, set accounting_event_id ='
4241 ||to_char(p_event_id);
4242 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4243 FND_LOG.STRING(G_LEVEL_STATEMENT,
4244 G_MODULE_NAME || l_procedure_name,
4245 l_log_msg);
4246 END IF;
4247
4248 UPDATE ap_invoice_distributions D
4249 SET D.accounting_event_id = p_event_id
4250 WHERE D.accounting_event_id IS NULL
4251 AND D.awt_invoice_payment_id IN
4252 (SELECT AIP1.invoice_payment_id
4253 FROM ap_invoice_payments AIP1
4254 WHERE AIP1.accounting_event_id = p_event_id
4255 AND AIP1.check_id = p_check_id);
4256
4257 --Stamp the event_id on all invoice dists that belong to interest
4258 --invoices created by the payment for which this event is created.
4259
4260 l_log_msg := 'Update ap_invoice_distribution, set accounting_event_id =
4261 '||to_char(p_event_id);
4262 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4263 FND_LOG.STRING(G_LEVEL_STATEMENT,
4264 G_MODULE_NAME || l_procedure_name,
4265 l_log_msg);
4266 END IF;
4267
4268 UPDATE ap_invoice_distributions_all D
4269 SET D.accounting_event_id = p_event_id
4270 WHERE D.accounting_event_id IS NULL
4271 AND D.invoice_id IN
4272 (SELECT AI.invoice_id
4273 FROM ap_invoice_payments_all AIP2,
4274 ap_invoices_all AI
4275 WHERE AI.invoice_id = AIP2.invoice_id
4276 AND AIP2.check_id = p_check_id
4277 AND AIP2.accounting_event_id = p_event_id
4278 AND AI.invoice_type_lookup_code = 'INTEREST');
4279
4280 END IF; --event is Payment, Payment Adjustment or Payment Cancellation
4281
4282 l_log_msg := 'End of procedure '||l_procedure_name;
4283 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4284 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4285 G_MODULE_NAME || l_procedure_name,
4286 l_log_msg);
4287 END IF;
4288
4289 EXCEPTION
4290 WHEN OTHERS THEN
4291 IF (SQLCODE <> -20001) THEN
4292 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
4293 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
4294 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
4295 l_curr_calling_sequence);
4296 FND_MESSAGE.SET_TOKEN('PARAMETERS',
4297 'p_event_type = '||p_event_type
4298 ||', p_check_id = '||p_check_id
4299 ||', p_event_id = '||p_event_id);
4300 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
4301 END IF;
4302 APP_EXCEPTION.RAISE_EXCEPTION();
4303 END update_awt_int_dists;
4304
4305
4306 /*============================================================================
4307 | PROCEDURE - BATCH_UPDATE_PAYMENT_INFO (PUBLIC)
4308 |
4309 | DESCRIPTION
4310 | This procedure is called from appbip.lpc only when when_to_acct_pmt=
4311 | ALWAYS. It is used to update awt and int inv dists with accoutning
4312 | event id.
4313 |
4314 | PRAMETERS
4315 | p_checkrun_name: Payment batch's name
4316 | p_calling_sequence: Debug information
4317 |
4318 | KNOWN ISSUES:
4319 |
4320 | NOTES:
4321 |
4322 | MODIFICATION HISTORY
4323 | Date Author Description of Change
4324 |
4325 *===========================================================================*/
4326 PROCEDURE batch_update_payment_info(
4327 p_checkrun_name IN VARCHAR2,
4328 p_completed_pmts_group_id IN NUMBER,
4329 p_org_id IN NUMBER,
4330 p_calling_sequence IN VARCHAR2 DEFAULT NULL)
4331 IS
4332
4333 CURSOR get_payment_info IS
4334 SELECT DISTINCT AC.check_id, /* Added the distinct for bug#8368922 */
4335 AIP.accounting_event_id -- Bug3343314
4336 , AIP.invoice_id /* Added the distinct for bug#8438184 */
4337 FROM ap_checks AC,
4341 AND AC.status_lookup_code NOT IN ('OVERFLOW', 'SET UP')
4338 ap_invoice_payments AIP -- Bug3343314
4339 WHERE AC.check_id = AIP.check_id -- Bug3343314
4340 AND AC.checkrun_name = p_checkrun_name
4342 AND AC.completed_pmts_group_id = p_completed_pmts_group_id
4343 AND AC.org_id = p_org_id
4344 AND AIP.posted_flag <> 'Y'; -- Bug3343314
4345
4346 TYPE t_check_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
4347 l_check_ids t_check_ids;
4348
4349 TYPE t_accounting_event_ids IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
4350 l_accounting_event_ids t_accounting_event_ids;
4351
4352 /* Added for bug#8438184 Start */
4353 TYPE t_invoice_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
4354 l_invoice_ids t_invoice_ids;
4355
4356 l_auto_calculate_interest_flag ap_system_parameters_all.auto_calculate_interest_flag%TYPE;
4357 /* Added for bug#8438184 End */
4358
4359 l_curr_calling_sequence VARCHAR2(2000);
4360
4361 -- Logging:
4362 l_procedure_name CONSTANT VARCHAR2(30) := 'BATCH_UPDATE_PAYMENT_INFO';
4363 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4364
4365 BEGIN
4366
4367 l_curr_calling_sequence := p_calling_sequence ||
4368 ' -> AP_ACCOUNTING_EVENTS_PKG.BATCH_UPDATE_PAYMENT_INFO';
4369
4370 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4371
4372 l_log_msg := 'Begin of procedure '||l_procedure_name;
4373 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4374 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4375 G_MODULE_NAME || l_procedure_name,
4376 l_log_msg);
4377 END IF;
4378
4379 OPEN get_payment_info;
4380 LOOP
4381
4382 l_log_msg := 'Get data from cursor get_payment_info';
4383 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
4384 FND_LOG.STRING(G_LEVEL_STATEMENT,
4385 G_MODULE_NAME || l_procedure_name,
4386 l_log_msg);
4387 END IF;
4388
4389 FETCH get_payment_info
4390 BULK COLLECT INTO
4391 l_check_ids,
4392 l_accounting_event_ids,
4393 l_invoice_ids /* Added for bug#8438184 */
4394 LIMIT 1000;
4395
4396 /*
4397 || -------------------------------------------------------------------
4398 || Step: 1 We will stamp the Accounting_Event_ID on
4399 || for AWT Invoice Distributions table that were created by the
4400 || payment for which this event is being created
4401 || -------------------------------------------------------------------
4402 */
4403
4404 FORALL i IN 1 .. l_check_ids.count
4405
4406 UPDATE ap_invoice_distributions AID
4407 SET AID.accounting_event_id = l_accounting_event_ids(i)
4408 WHERE AID.accounting_event_id IS NULL
4409 AND AID.awt_invoice_payment_id IN
4410 (SELECT AIP.invoice_payment_id
4411 FROM ap_invoice_payments AIP
4412 WHERE AIP.check_id = l_check_ids(i) AND
4413 AIP.accounting_event_id = l_accounting_event_ids(i)
4414 AND AIP.invoice_id = l_invoice_ids(i)); /* Added for bug#8438184 */
4415
4416 /*
4417 || -------------------------------------------------------------------
4418 || Step: 2 We will stamp the Accounting_Event_ID (of the Payment Event)
4419 || on all Invoice Distributions that belong to interest invoices
4420 || created by the payment
4421 || -------------------------------------------------------------------
4422 */
4423
4424 /* Added for bug#8438184 Start */
4425 BEGIN
4426 SELECT auto_calculate_interest_flag
4427 INTO l_auto_calculate_interest_flag
4428 FROM ap_system_parameters_all
4429 WHERE org_id = p_org_id;
4430 EXCEPTION
4431 WHEN OTHERS THEN
4432 l_auto_calculate_interest_flag := 'Y' ;
4433 END;
4434
4435 IF l_auto_calculate_interest_flag = 'Y'
4436 THEN
4437 /* Added for bug#8438184 Start */
4438
4439 FORALL i IN 1 .. l_check_ids.count
4440
4441 UPDATE ap_invoice_distributions_all AID
4442 SET AID.accounting_event_id = l_accounting_event_ids(i)
4443 WHERE AID.accounting_event_id IS NULL
4444 AND AID.invoice_id IN
4445 ( SELECT AI.invoice_id
4446 FROM ap_invoice_payments_all AIP,
4447 ap_invoices_all AI
4448 WHERE AIP.invoice_id = AI.invoice_id
4449 AND AIP.accounting_event_id = l_accounting_event_ids(i)
4450 AND AIP.check_id = l_check_ids(i)
4451 AND AI.invoice_id= l_invoice_ids(i) /* Added for bug#8438184 */
4452 AND AI.invoice_type_lookup_code = 'INTEREST');
4453
4454 END IF; /* Added for bug#8438184 */
4455
4456 EXIT WHEN get_payment_info%NOTFOUND;
4457 END LOOP;
4458 CLOSE get_payment_info;
4459
4460 l_log_msg := 'End of procedure '||l_procedure_name;
4461 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4462 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4463 G_MODULE_NAME || l_procedure_name,
4464 l_log_msg);
4465 END IF;
4466
4467 EXCEPTION
4468 WHEN OTHERS THEN
4469 IF (get_payment_info%ISOPEN) THEN
4470 CLOSE get_payment_info;
4471 END IF;
4472
4473 IF (SQLCODE <> -20001) THEN
4474 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
4475 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
4476 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
4477 l_curr_calling_sequence);
4478 FND_MESSAGE.SET_TOKEN('PARAMETERS',
4479 ' p_checkrun_name = '|| p_checkrun_name);
4480 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
4481 END IF;
4485
4482 fnd_file.put_line(FND_FILE.LOG,l_log_msg||'|'||SQLERRM||' - '||systimestamp); --Bug 14279929
4483 APP_EXCEPTION.RAISE_EXCEPTION();
4484 END batch_update_payment_info;
4486 /*============================================================================
4487 | FUNCTION - IS_EVENT_COMPLETE (PRIVATE)
4488 |
4489 | DESCRIPTION
4490 |
4491 |
4492 | PRAMETERS
4493 | p_doc_type:INVOICES_ENTITY or PAYMENT_ENTITY
4494 | p_source_id: Invoice ID or Check ID
4495 | p_calling_sequence: Debug information
4496 |
4497 | RETURN: VARCHAR2
4498 |
4499 | KNOWN ISSUES:
4500 |
4501 | NOTES:
4502 |
4503 | MODIFICATION HISTORY
4504 | Date Author Description of Change
4505 |
4506 *===========================================================================*/
4507 FUNCTION is_event_complete (p_doc_type IN VARCHAR2,
4508 p_source_id IN NUMBER,
4509 p_calling_sequence IN VARCHAR2)
4510 RETURN VARCHAR2
4511 IS
4512
4513 l_count NUMBER := 0;
4514 l_purch_enc_flag financials_system_parameters.purch_encumbrance_flag%TYPE;
4515
4516 l_curr_calling_sequence VARCHAR2(2000);
4517
4518 -- Logging:
4519 l_procedure_name CONSTANT VARCHAR2(30) := 'BATCH_UPDATE_PAYMENT_INFO';
4520 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4521
4522 BEGIN
4523
4524 l_curr_calling_sequence :=
4525 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.IS_EVENT_COMPLETE';
4526
4527 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4528
4529 l_log_msg := 'Begin of procedure '||l_procedure_name;
4530 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4531 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4532 G_MODULE_NAME || l_procedure_name,
4533 l_log_msg);
4534 END IF;
4535
4536 IF p_doc_type = INVOICES_ENTITY THEN -- Bug3343314
4537
4538 BEGIN
4539
4540 SELECT nvl(purch_encumbrance_flag,'N')
4541 INTO l_purch_enc_flag
4542 FROM financials_system_parameters FSP,
4543 AP_INVOICES INV
4544 WHERE INV.org_id = FSP.org_id
4545 AND INV.set_of_books_id = FSP.set_of_books_id -- Bug 5608968 Avoid full index scan of fsp
4546 AND INV.invoice_id = p_source_id;
4547 EXCEPTION
4548 WHEN NO_DATA_FOUND THEN
4549 l_purch_enc_flag := 'N';
4550 END;
4551
4552 IF l_purch_enc_flag = 'N' THEN
4553
4554 BEGIN
4555 SELECT count(*)
4556 INTO l_count
4557 FROM ap_invoice_distributions AID1
4558 WHERE AID1.invoice_id = p_source_id
4559 AND nvl(AID1.match_status_flag,'N') NOT IN ('T','A');
4560 EXCEPTION
4561 WHEN NO_DATA_FOUND THEN
4562 l_count:= 0;
4563 END;
4564
4565 ELSE
4566
4567 BEGIN
4568 SELECT count(*)
4569 INTO l_count
4570 FROM ap_invoice_distributions AID
4571 WHERE AID.invoice_id = p_source_id
4572 AND nvl(AID.match_status_flag,'N') <> 'A';
4573 EXCEPTION
4574 WHEN NO_DATA_FOUND THEN
4575 l_count:= 0;
4576 END;
4577 END IF;
4578
4579 ELSIF p_doc_type = PAYMENTS_ENTITY THEN -- Bug3343314
4580
4581 BEGIN
4582
4583 SELECT nvl(purch_encumbrance_flag,'N')
4584 INTO l_purch_enc_flag
4585 FROM financials_system_parameters FSP,
4586 AP_CHECKS AC
4587 WHERE AC.org_id = FSP.org_id
4588 AND AC.check_id = p_source_id;
4589 EXCEPTION
4590 WHEN NO_DATA_FOUND THEN
4591 l_purch_enc_flag := 'N';
4592 END;
4593
4594 IF l_purch_enc_flag = 'N' THEN
4595
4596 BEGIN
4597 SELECT count(*)
4598 INTO l_count
4599 FROM ap_invoice_distributions AID1
4600 WHERE AID1.invoice_id in (SELECT invoice_id
4601 FROM ap_invoice_payments
4602 WHERE check_id = p_source_id)
4603 AND nvl(AID1.match_status_flag,'N') NOT IN ('T','A');
4604 EXCEPTION
4605 WHEN NO_DATA_FOUND THEN
4606 l_count:= 0;
4607 END;
4608 ELSE
4609
4610 BEGIN
4611 SELECT count(*)
4612 INTO l_count
4613 FROM ap_invoice_distributions AID
4614 WHERE AID.invoice_id in (SELECT invoice_id
4615 FROM ap_invoice_payments
4616 WHERE check_id = p_source_id)
4617 AND nvl(AID.match_status_flag,'N') <> 'A' ;
4618 EXCEPTION
4619 WHEN NO_DATA_FOUND THEN
4620 l_count:= 0;
4621 END;
4622
4623 END IF; -- l_purch_enc_flag
4624
4625 END IF ; -- p_doc_type
4626
4627 IF l_count = 0 THEN
4628 IF p_doc_type = INVOICES_ENTITY THEN -- Bug3343314
4629 BEGIN
4630 SELECT count(*)
4631 INTO l_count
4632 FROM ap_holds H, ap_hold_codes C
4633 WHERE H.invoice_id = p_source_id
4634 AND H.hold_lookup_code = C.hold_lookup_code
4635 AND ((H.release_lookup_code IS NULL)
4636 AND (C.postable_flag = 'N'
4637 OR C.postable_flag = 'X'));
4638 EXCEPTION
4639 WHEN NO_DATA_FOUND THEN
4640 l_count:= 0;
4641 END;
4642
4643 ELSIF p_doc_type = PAYMENTS_ENTITY THEN -- Bug3343314
4644
4645 BEGIN
4646
4647 SELECT count(*)
4648 INTO l_count
4652 WHERE check_id = p_source_id)
4649 FROM ap_holds H, ap_hold_codes C
4650 WHERE H.invoice_id in (SELECT invoice_id
4651 FROM ap_invoice_payments
4653 AND H.hold_lookup_code = C.hold_lookup_code
4654 AND ((H.release_lookup_code IS NULL)
4655 AND (C.postable_flag ='N'
4656 OR C.postable_flag = 'X'));
4657 EXCEPTION
4658 WHEN NO_DATA_FOUND THEN
4659 l_count:= 0;
4660 END;
4661
4662 END IF; -- p_doc_type
4663
4664 END IF; -- l_count = 0
4665
4666 l_log_msg := 'End of procedure '||l_procedure_name;
4667 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4668 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4669 G_MODULE_NAME || l_procedure_name,
4670 l_log_msg);
4671 END IF;
4672
4673 IF l_count = 0 THEN
4674 Return('CREATED');
4675 ELSE
4676 Return('INCOMPLETE');
4677 END IF; -- l_count = 0
4678
4679 EXCEPTION
4680 WHEN OTHERS THEN
4681 IF (SQLCODE <> -20001) THEN
4682 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
4683 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
4684 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
4685 l_curr_calling_sequence);
4686 FND_MESSAGE.SET_TOKEN('PARAMETERS',
4687 'p_doc_type = '||p_doc_type
4688 ||', p_source_id = '||p_source_id);
4689 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
4690 END IF;
4691 APP_EXCEPTION.RAISE_EXCEPTION();
4692 END is_event_complete;
4693
4694 /*============================================================================
4695 | FUNCTION - DERIVE_PAYMENT_ADJ_EVENT (PRIVATE)
4696 |
4697 | DESCRIPTION
4698 | This procedure is used to derive payment adjustment event.
4699 |
4700 | PRAMETERS
4701 | p_check_id: Check ID
4702 | p_accounting_date: Accounting Date
4703 | p_event_type:Event Type
4704 | p_accounting_event_id: Derived Accounting Event ID
4705 | p_calling_sequence:Debug Information
4706 |
4707 | KNOWN ISSUES:
4708 |
4709 | NOTES:
4710 |
4711 | MODIFICATION HISTORY
4712 | Date Author Description of Change
4713 |
4714 *===========================================================================*/
4715 PROCEDURE derive_payment_adj_event (
4716 p_check_id IN NUMBER,
4717 p_accounting_date IN DATE,
4718 p_event_type IN VARCHAR2,
4719 p_accounting_event_id OUT NOCOPY NUMBER,
4720 p_calling_sequence IN VARCHAR2)
4721 IS
4722
4723 l_legal_entity_id NUMBER(15);
4724 l_ledger_id NUMBER(15);
4725 l_org_id NUMBER(15);
4726 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
4727 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
4728 l_accounting_event_id NUMBER := NULL;
4729 l_event_info XLA_EVENTS_PUB_PKG.T_EVENT_INFO;
4730
4731 l_exchange_rate_type VARCHAR2(30);
4732 l_exchange_rate_date DATE;
4733 l_exchange_rate NUMBER;
4734 l_currency_code VARCHAR2(15);
4735 l_creation_date DATE;
4736 l_last_updated_by NUMBER(15);
4737
4738 CURSOR l_event_cur IS
4739 SELECT distinct(AIP.accounting_event_id)
4740 FROM ap_invoice_payments AIP,
4741 ap_checks AC
4742 WHERE AIP.check_id = p_check_id
4743 AND AIP.check_id = AC.check_id
4744 AND nvl(AIP.posted_flag, 'N') = 'N'
4745 AND AC.void_date IS NULL;
4746
4747 l_curr_calling_sequence VARCHAR2(2000);
4748
4749 -- Logging:
4750 l_procedure_name CONSTANT VARCHAR2(30) := 'BATCH_UPDATE_PAYMENT_INFO';
4751 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
4752
4753
4754 BEGIN
4755
4756 l_curr_calling_sequence := p_calling_sequence ||
4757 ' -> AP_ACCOUNTING_EVENTS_PKG.DERIVE_PAYMENT_ADJ_EVENT';
4758
4759 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4760
4761 l_log_msg := 'Begin of procedure '||l_procedure_name;
4762 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4763 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4764 G_MODULE_NAME || l_procedure_name,
4765 l_log_msg);
4766 END IF;
4767
4768 l_log_msg := 'Before calling procedure get_payment_info';
4769 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4770 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4771 G_MODULE_NAME || l_procedure_name,
4772 l_log_msg);
4773 END IF;
4774
4775 get_payment_info
4776 ( p_check_id => p_check_id,
4777 p_org_id => l_org_id, -- OUT
4778 p_legal_entity_id => l_legal_entity_id, -- OUT
4779 p_ledger_id => l_ledger_id, -- OUT
4780 p_calling_sequence => l_curr_calling_sequence
4781 );
4782
4783 l_log_msg := 'After calling procedure get_payment_info';
4784 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4785 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4786 G_MODULE_NAME || l_procedure_name,
4787 l_log_msg);
4788 END IF;
4789
4790 l_log_msg := 'Before calling procedure get_event_security_context';
4791 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4792 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4793 G_MODULE_NAME || l_procedure_name,
4794 l_log_msg);
4795 END IF;
4796
4797 l_event_security_context :=
4798 get_event_security_context
4799 ( p_org_id => l_org_id,
4800 p_calling_sequence => l_curr_calling_sequence
4801 );
4802
4803
4807 G_MODULE_NAME || l_procedure_name,
4804 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4805 l_log_msg := 'After calling procedure get_event_security_context';
4806 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4808 l_log_msg);
4809 END IF;
4810
4811 l_log_msg := 'Before calling procedure get_payment_event_source_info';
4812 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4813 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4814 G_MODULE_NAME || l_procedure_name,
4815 l_log_msg);
4816 END IF;
4817
4818 l_event_source_info :=
4819 get_payment_event_source_info
4820 ( p_legal_entity_id => l_legal_entity_id,
4821 p_ledger_id => l_ledger_id,
4822 p_check_id => p_check_id,
4823 p_calling_sequence => l_curr_calling_sequence
4824 );
4825
4826 l_log_msg := 'After calling procedure get_payment_event_source_info';
4827 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4828 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4829 G_MODULE_NAME || l_procedure_name,
4830 l_log_msg);
4831 END IF;
4832
4833 OPEN l_event_cur;
4834 LOOP
4835
4836 FETCH l_event_cur INTO
4837 l_accounting_event_id;
4838 EXIT WHEN l_event_cur%NOTFOUND;
4839
4840 l_log_msg := 'Before calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
4841 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4842 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4843 G_MODULE_NAME || l_procedure_name,
4844 l_log_msg);
4845 END IF;
4846
4847 l_event_info :=
4848 AP_XLA_EVENTS_PKG.GET_EVENT_INFO
4849 ( p_event_source_info => l_event_source_info,
4850 p_event_id => l_accounting_event_id,
4851 p_valuation_method => NULL,
4852 p_security_context => l_event_security_context,
4853 p_calling_sequence => l_curr_calling_sequence
4854 );
4855
4856 l_log_msg := 'After calling AP_XLA_EVENTS_PKG.GET_EVENT_INFO';
4857 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4858 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4859 G_MODULE_NAME || l_procedure_name,
4860 l_log_msg);
4861 END IF;
4862
4863 --bug 10336668
4864 IF ((P_event_type = MANUAL_PAYMENT_ADJUSTED_TYPE AND
4865 l_event_info.event_type_code = MANUAL_PAYMENT_ADJUSTED_TYPE)
4866 OR
4867 (P_event_type = UPGRADED_MAN_PAY_REV_TYPE AND
4868 l_event_info.event_type_code = UPGRADED_MAN_PAY_REV_TYPE )
4869 OR
4870 (P_event_type = UPGRADED_MAN_PAY_ADJ_TYPE AND
4871 l_event_info.event_type_code = UPGRADED_MAN_PAY_ADJ_TYPE)
4872 OR
4873 (P_event_type = MANUAL_REFUND_ADJUSTED_TYPE AND
4874 l_event_info.event_type_code = MANUAL_REFUND_ADJUSTED_TYPE)) THEN
4875 EXIT;
4876 ELSE
4877 l_accounting_event_id := NULL;
4878 END IF;
4879
4880 END LOOP;
4881 CLOSE l_event_cur;
4882
4883 -- If an unaccounted Payment Adjustment event does not already
4884 -- exist for that date, we will create a new event
4885
4886 IF (l_accounting_event_id IS NULL) THEN
4887 l_accounting_event_id := create_payment_event
4888 (p_event_type => p_event_type,
4889 p_check_id => p_check_id,
4890 p_event_date => p_accounting_date,
4891 p_calling_sequence => l_curr_calling_sequence);
4892
4893 SELECT exchange_rate_type,
4894 exchange_date,
4895 exchange_rate,
4896 currency_code,
4897 creation_date,
4898 last_updated_by
4899 INTO l_exchange_rate_type,
4900 l_exchange_rate_date,
4901 l_exchange_rate,
4902 l_currency_code,
4903 l_creation_date,
4904 l_last_updated_by
4905 FROM AP_CHECKS AC
4906 WHERE AC.check_id = P_check_id;
4907
4908 l_log_msg := 'Before AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY';
4909 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4910 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4911 G_MODULE_NAME || l_procedure_name,
4912 l_log_msg);
4913 END IF;
4914
4915 AP_RECONCILIATION_PKG.insert_payment_history
4916 (
4917 x_check_id => p_check_id,
4918 x_transaction_type => p_event_type,
4919 x_accounting_date => p_accounting_date,
4920 x_trx_bank_amount => NULL,
4921 x_errors_bank_amount => NULL,
4922 x_charges_bank_amount => NULL,
4923 x_bank_currency_code => NULL,
4924 x_bank_to_base_xrate_type => NULL,
4925 x_bank_to_base_xrate_date => NULL,
4926 x_bank_to_base_xrate => NULL,
4927 x_trx_pmt_amount => 0,
4928 x_errors_pmt_amount => NULL,
4929 x_charges_pmt_amount => NULL,
4930 x_pmt_currency_code => l_currency_code,
4931 x_pmt_to_base_xrate_type => l_exchange_rate_type,
4932 x_pmt_to_base_xrate_date => l_exchange_rate_date,
4933 x_pmt_to_base_xrate => l_exchange_rate,
4934 x_trx_base_amount => 0,
4935 x_errors_base_amount => NULL,
4936 x_charges_base_amount => NULL,
4937 x_matched_flag => NULL,
4938 x_rev_pmt_hist_id => NULL,
4939 x_org_id => l_org_id, -- bug 4578865
4940 x_creation_date => SYSDATE,
4941 x_created_by => l_last_updated_by,
4945 x_program_update_date => NULL,
4942 x_last_update_date => SYSDATE,
4943 x_last_updated_by => l_last_updated_by,
4944 x_last_update_login => l_last_updated_by,
4946 x_program_application_id => NULL,
4947 x_program_id => NULL,
4948 x_request_id => NULL,
4949 x_calling_sequence => l_curr_calling_sequence,
4950 x_accounting_event_id => l_accounting_event_id
4951 );
4952
4953 l_log_msg := 'After AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY';
4954 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4955 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4956 G_MODULE_NAME || l_procedure_name,
4957 l_log_msg);
4958 END IF;
4959 END IF;
4960
4961 p_accounting_event_id := l_accounting_event_id;
4962
4963 l_log_msg := 'End of procedure '||l_procedure_name;
4964 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
4965 FND_LOG.STRING(G_LEVEL_PROCEDURE,
4966 G_MODULE_NAME || l_procedure_name,
4967 l_log_msg);
4968 END IF;
4969
4970 EXCEPTION
4971 WHEN OTHERS THEN
4972 IF (l_event_cur%ISOPEN) THEN
4973 CLOSE l_event_cur;
4974 END IF;
4975 IF (SQLCODE <> -20001) THEN
4976 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
4977 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
4978 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
4979 l_curr_calling_sequence);
4980 FND_MESSAGE.SET_TOKEN('PARAMETERS',
4981 'p_check_id = '||p_check_id
4982 ||', p_accounting_date = '||p_accounting_date
4983 ||', p_event_type = ' ||p_event_type);
4984 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
4985 END IF;
4986 APP_EXCEPTION.RAISE_EXCEPTION();
4987 END derive_payment_adj_event;
4988
4989
4990 /*============================================================================
4991 | FUNCTION - DERIVE_CASCADE_EVENT (PRIVATE)
4992 |
4993 | DESCRIPTION
4994 | This procedure creates the cascade events for an invoice adjusted
4995 | event. A cascade event is created when there is a corresponding normal
4996 | event that has already been accounted. This procedure creates
4997 | prepayment application adjusted, payment adjusted, payment maturity
4998 | adjusted, and payment clearing adjusted events.
4999 |
5000 | PRAMETERS
5001 | p_invoice_id: Invoice Id of the adjusted invoice
5002 | p_adj_accounting_event_id: Event ID of the invoice adjustment
5003 | p_calling_sequence: Debug information
5004 |
5005 | KNOWN ISSUES:
5006 |
5007 | NOTES:
5008 |
5009 | MODIFICATION HISTORY
5010 | Date Author Description of Change
5011 |
5012 *===========================================================================*/
5013 -- Bug 6996047. Added accounting date parameter
5014 PROCEDURE Derive_Cascade_Events(p_invoice_id IN NUMBER,
5015 p_adj_accounting_event_id IN NUMBER,
5016 p_accounting_date IN DATE,
5017 p_calling_sequence IN VARCHAR2)
5018 IS
5019
5020 -- Bug 6890810. Added historical flag condition to all the cursors
5021 -- so that there will not be any adjustment event created for the
5022 -- adjustments made to the upgraded invoices or payments.
5023
5024 -- bug9321985, changed all the cursors below to ensure that
5025 -- cascade events do not get generated for related events in
5026 -- NO ACTION status
5027 --
5028 -- Bug 9257065, added the not exists clause so as to not generate
5029 -- extra Prepayment Application Adj events for the same Invoice
5030 -- adjustment event and related prepay app event
5031 --
5032 -- bug9038462, PREPAYMENT APPLICATION ADJ cascade event
5033 -- would be generated if the Prepayment Application Dist
5034 -- (Invoice Dist) is either Accounted or Encumbered
5035 --
5036 -- bug9650381, addded the distinct Keyword in the cursor
5037 -- sql to avoid multiple prepayment application adjustment
5038 -- events from getting created in case the Prepayment Appl
5039 -- event is stamped on Multiple Invoice distributions
5040 --
5041 -- bug9973070, added the condition AID.Accounting_Event_id
5042 -- IS NOT NULL, removed outer join with XLA_EVENTS
5043 --
5044 /* Bug 9682862 added exists condition for ap_invoice_distributions table*/
5045
5046 CURSOR l_prepayment_applications_cur IS
5047 SELECT DISTINCT
5048 AID.invoice_id,
5049 AID.accounting_date,
5050 AID.invoice_line_number
5051 FROM ap_invoice_distributions AID,
5052 xla_events XE
5053 WHERE AID.invoice_id = p_invoice_id
5054 AND AID.line_type_lookup_code = 'PREPAY'
5055 AND AID.Accounting_Event_ID IS NOT NULL
5056 AND AID.Accounting_event_id = XE.event_id
5057 AND XE.application_id = 200
5058 AND ((XE.event_status_code <> 'N' AND
5059 AID.posted_flag = 'Y') OR
5060 AID.encumbered_flag = 'Y')
5061 AND AID.amount < 0
5062 AND NVL(AID.reversal_flag, 'N') <> 'Y'
5063 AND AID.parent_reversal_id IS NULL
5064 AND NVL(AID.Historical_Flag, 'N') <> 'Y'
5065 AND NOT EXISTS
5066 (SELECT 1
5067 FROM ap_prepay_history_all APPH
5068 WHERE APPH.invoice_id = AID.invoice_id
5069 AND APPH.Invoice_Adjustment_Event_Id = P_Adj_Accounting_Event_Id
5070 AND APPH.Related_Prepay_App_Event_Id = AID.Accounting_Event_Id
5071 AND APPH.transaction_type = 'PREPAYMENT APPLICATION ADJ'
5072 AND nvl(APPH.posted_flag, 'N') <> 'Y')
5076 AND aid2.invoice_id = p_invoice_id
5073 AND EXISTS (SELECT 'INVOICE DIST WITH INV ADJ EVENT ID'
5074 FROM ap_invoice_distributions aid2
5075 WHERE aid2.accounting_event_id=p_adj_accounting_event_id
5077 AND aid2.line_type_lookup_code <> 'AWT'); --bug 9682862
5078
5079 /* BUG # 7560346 added DISTINCT keyword */
5080 /* Bug 9103993 added exists condition for ap_invoice_distributions table*/
5081 /* Bug 9582285 extended the changes done in bug 9103993 to cursors
5082 l_payment_clearings_cur and l_payment_maturities_cur and added
5083 AWT decode on top of the Exists clause added by bug 9103993 for all
5084 cursors*/
5085
5086 CURSOR l_payments_cur IS
5087 SELECT DISTINCT AIP.check_id,
5088 AIP.accounting_date
5089 FROM ap_invoice_payments AIP,
5090 xla_events XE
5091 WHERE AIP.invoice_id = p_invoice_id
5092 AND AIP.posted_flag = 'Y'
5093 AND NVL(AIP.reversal_flag, 'N') <> 'Y'
5094 AND AIP.reversal_inv_pmt_id IS NULL
5095 AND AIP.Accounting_event_id = XE.event_id
5096 AND XE.application_id = 200
5097 AND XE.event_status_code <> 'N'
5098 -- Bug 6890810. Added the subquery
5099 AND NOT EXISTS (SELECT 'Either Upgraded Payment OR Unaccounted Pay Adj Exists'
5100 FROM AP_Payment_History APH
5101 WHERE APH.Check_ID = AIP.Check_ID
5102 AND (NVL(APH.Historical_Flag, 'N') = 'Y'
5103 OR (APH.invoice_adjustment_event_id = p_adj_accounting_event_id
5104 AND APH.transaction_type in ( PAYMENT_ADJUSTED_TYPE,REFUND_ADJUSTED_TYPE) --bug9726978,13963864
5105 AND NVL(APH.posted_flag, 'N') <> 'Y'))) --bug 9226273
5106 AND NOT EXISTS (SELECT 'Voided but not yet insterted into AIP' --bug8214188
5107 FROM AP_Payment_History APH
5108 WHERE APH.Check_ID = AIP.Check_ID
5109 AND APH.transaction_type='PAYMENT CANCELLED')
5110 AND EXISTS (SELECT 'INVOICE DIST WITH INV ADJ EVENT ID'
5111 FROM ap_invoice_distributions aid
5112 where aid.accounting_event_id=p_adj_accounting_event_id
5113 and aid.invoice_id = p_invoice_id
5114 and decode(aid.line_type_lookup_code, 'AWT',
5115 decode(aid.awt_invoice_payment_id,
5116 NULL, 'N', 'Y'), 'Y') = 'Y'); --bug 9582285
5117
5118 /* BUG # 7560346 added DISTINCT keyword */
5119 CURSOR l_payment_clearings_cur IS
5120 SELECT DISTINCT APH.check_id,
5121 APH.accounting_date
5122 FROM ap_payment_history APH,
5123 ap_invoice_payments AIP,
5124 xla_events XE
5125 WHERE AIP.invoice_id = p_invoice_id
5126 AND AIP.check_id = APH.check_id
5127 AND APH.transaction_type = 'PAYMENT CLEARING'
5128 AND AIP.posted_flag = 'Y'
5129 AND APH.Accounting_event_id = XE.event_id
5130 AND XE.application_id = 200
5131 AND XE.event_status_code <> 'N'
5132 /* bug # 7604906. If the payment clearing is not
5133 accounted, payment clearing adjustment should not
5134 create */
5135 AND APH.posted_flag = 'Y'
5136 /* bug # 7604906 End */
5137 /* bug 8325874 commented the line below and added subquery */
5138 --AND NVL(APH.Historical_Flag, 'N') <> 'Y' -- Bug 6890810
5139 AND NOT EXISTS (SELECT 'Either Upgraded Payment OR Unaccounted Pay Adj Exists'
5140 FROM AP_Payment_History APH
5141 WHERE APH.Check_ID = AIP.Check_ID
5142 AND (NVL(APH.Historical_Flag, 'N') = 'Y'
5143 OR (APH.invoice_adjustment_event_id = p_adj_accounting_event_id
5144 AND APH.transaction_type = PAYMENT_CLEARING_ADJUSTED_TYPE
5145 AND NVL(APH.posted_flag, 'N') <> 'Y'))) --bug 9726978
5146 /* bug # 8325874 End */
5147 AND NOT EXISTS (SELECT 'PAYMENT UNCLEARING/CANCELLATION EXISTS'
5148 FROM ap_payment_history APH1
5149 WHERE APH1.check_id = AIP.check_id
5150 AND ((APH1.rev_pmt_hist_id = APH.payment_history_id
5151 AND APH1.transaction_type = 'PAYMENT UNCLEARING')
5152 OR APH1.transaction_type = 'PAYMENT CANCELLED'))
5153 /*bug 8882614, added the OR condition above to prevent clearing adjustment
5154 events from being created if cancellation event exists*/
5155 AND EXISTS (SELECT 'INVOICE DIST WITH INV ADJ EVENT ID'
5156 FROM ap_invoice_distributions aid
5157 where aid.accounting_event_id=p_adj_accounting_event_id
5158 and aid.invoice_id = p_invoice_id
5159 and decode(aid.line_type_lookup_code, 'AWT',
5160 decode(aid.awt_invoice_payment_id,
5161 NULL, 'N', 'Y'), 'Y') = 'Y'); --bug 9582285
5162
5163 /* BUG # 7560346 added DISTINCT keyword */
5164 CURSOR l_payment_maturities_cur IS
5165 SELECT DISTINCT APH.check_id,
5166 APH.accounting_date
5167 FROM ap_payment_history APH,
5168 ap_invoice_payments AIP,
5169 xla_events XE
5170 WHERE AIP.invoice_id = p_invoice_id
5171 AND AIP.check_id = APH.check_id
5172 AND APH.transaction_type = 'PAYMENT MATURITY'
5173 AND AIP.posted_flag = 'Y'
5174 AND APH.posted_flag = 'Y' --bug 9030890
5175 AND APH.Accounting_event_id = XE.event_id
5176 AND XE.application_id = 200
5177 AND XE.event_status_code <> 'N'
5178 /* bug 8325874 commented the line below and added subquery */
5179 --AND NVL(APH.Historical_Flag, 'N') <> 'Y' -- Bug 6890810
5180 AND NOT EXISTS (SELECT 'Either Upgraded Payment OR Unaccounted Pay Adj Exists'
5181 FROM AP_Payment_History APH
5182 WHERE APH.Check_ID = AIP.Check_ID
5186 AND NVL(APH.posted_flag, 'N') <> 'Y'))) --bug 9726978
5183 AND (NVL(APH.Historical_Flag, 'N') = 'Y'
5184 OR (APH.invoice_adjustment_event_id = p_adj_accounting_event_id
5185 AND APH.transaction_type = PAYMENT_MATURITY_ADJUSTED_TYPE
5187 /* bug # 8325874 End */
5188 AND NOT EXISTS (SELECT 'PAYMENT MATURITY-REVERSAL/CANCELLATION EXISTS'
5189 FROM ap_payment_history APH1
5190 WHERE APH1.check_id = AIP.check_id
5191 AND ((APH1.rev_pmt_hist_id = APH.payment_history_id
5192 AND APH1.transaction_type = 'PAYMENT MATURITY REVERSAL')
5193 OR APH1.transaction_type = 'PAYMENT CANCELLED'))
5194 /*bug 8882614, added the OR condition above to prevent maturity adjustment
5195 events from being created if cancellation event exists*/
5196 AND EXISTS (SELECT 'INVOICE DIST WITH INV ADJ EVENT ID'
5197 FROM ap_invoice_distributions aid
5198 where aid.accounting_event_id=p_adj_accounting_event_id
5199 and aid.invoice_id = p_invoice_id
5200 and decode(aid.line_type_lookup_code, 'AWT',
5201 decode(aid.awt_invoice_payment_id,
5202 NULL, 'N', 'Y'), 'Y') = 'Y'); --bug 9582285
5203
5204
5205 -- add cursor for bug fix 5694577
5206 CURSOR c_get_payment_info (p_check_id NUMBER) IS
5207 SELECT ac.exchange_rate_type,
5208 ac.exchange_date,
5209 ac.exchange_rate,
5210 ac.currency_code,
5211 ac.creation_date,
5212 ac.last_updated_by,
5213 ac.org_id,
5214 ac.payment_type_flag,
5215 asp.automatic_offsets_flag
5216 FROM ap_checks_all ac,
5217 ap_system_parameters_all asp ---7209263 added automatic offsets flag
5218 WHERE ac.check_id = p_check_id
5219 AND ac.org_id=asp.org_id;
5220
5221 l_accounting_event_id NUMBER;
5222
5223 TYPE t_invoice_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
5224 TYPE t_accounting_dates IS TABLE OF DATE INDEX BY PLS_INTEGER;
5225 TYPE t_invoice_line_numbers IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
5226 TYPE t_check_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
5227
5228 l_prepay_app_invoice_ids t_invoice_ids;
5229 l_prepay_app_accounting_dates t_accounting_dates;
5230 l_prepay_app_invoice_line_num t_invoice_line_numbers;
5231 l_pay_check_ids t_check_ids;
5232 l_pay_accounting_dates t_accounting_dates;
5233 l_pay_clear_check_ids t_check_ids;
5234 l_pay_clear_accounting_dates t_accounting_dates;
5235 l_pay_mat_check_ids t_check_ids;
5236 l_pay_mat_accounting_dates t_accounting_dates;
5237
5238 l_exchange_rate_type VARCHAR2(30);
5239 l_exchange_rate_date DATE;
5240 l_exchange_rate NUMBER;
5241 l_currency_code VARCHAR2(15);
5242 l_creation_date DATE;
5243 l_last_updated_by NUMBER(15);
5244 l_adj_accounting_event_id NUMBER := p_adj_accounting_event_id;
5245 l_debug_info VARCHAR2(240);
5246 l_curr_calling_sequence VARCHAR2(2000);
5247 l_org_id NUMBER;
5248
5249 -- Logging:
5250 l_procedure_name CONSTANT VARCHAR2(30) := 'DERIVE_CASCADE_EVENTS';
5251 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
5252
5253 l_event_type xla_events.event_type_code%TYPE;
5254 l_pay_type ap_checks_all.payment_type_flag%TYPE;
5255 l_automatic_offsets_flag ap_system_parameters_all.automatic_offsets_flag%TYPE; ---7209263
5256 l_bank_curr_code ap_payment_history_all.bank_currency_code%TYPE; ---7337949
5257
5258 -- Bug 8276852 Start
5259 l_bank_to_base_xrate_type ap_payment_history_all.bank_to_base_xrate_type%TYPE;
5260 l_bank_to_base_xrate_date ap_payment_history_all.bank_to_base_xrate_date%TYPE;
5261 l_bank_to_base_xrate ap_payment_history_all.bank_to_base_xrate%TYPE;
5262 l_charges_bank_amount ap_payment_history_all.charges_bank_amount%TYPE; /*Bug13385106 */
5263 -- Bug 8276852 End
5264
5265 /* bug12363669 start */
5266 l_pmt_to_base_xrate_type ap_payment_history_all.pmt_to_base_xrate_type%type;
5267 l_pmt_to_base_xrate_date ap_payment_history_all.pmt_to_base_xrate_date%type;
5268 l_pmt_to_base_xrate ap_payment_history_all.pmt_to_base_xrate%type;
5269 /* bug12363669 end*/
5270
5271 l_accounting_date DATE := p_accounting_date; -- bug 10126192
5272 l_count NUMBER; --bug12569594
5273
5274 BEGIN
5275
5276 l_curr_calling_sequence :=
5277 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.DERIVE_CASCADE_EVENTS';
5278
5279 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5280
5281 l_log_msg := 'Begin of procedure '||l_procedure_name;
5282 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5283 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5284 G_MODULE_NAME || l_procedure_name,
5285 l_log_msg);
5286 END IF;
5287
5288 l_log_msg := 'Cascade the prepayment application events';
5289 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
5290 l_log_msg := 'Cascade the prepayment application events';
5291 FND_LOG.STRING(G_LEVEL_STATEMENT,
5292 G_MODULE_NAME || l_procedure_name,
5293 l_log_msg);
5294 END IF;
5295
5296 OPEN l_prepayment_applications_cur;
5297 LOOP
5298
5299 FETCH l_prepayment_applications_cur
5300 BULK COLLECT INTO
5301 l_prepay_app_invoice_ids,
5302 l_prepay_app_accounting_dates,
5303 l_prepay_app_invoice_line_num
5304 LIMIT 1000;
5305
5306 FOR i IN 1 ..l_prepay_app_invoice_ids.count LOOP
5307
5308 /* added below query for bug12569594 to see if proration already
5312 BEGIN
5309 exists for the adj distributions */
5310
5311 l_count := 0;
5313 SELECT count(1)
5314 INTO l_count
5315 FROM ap_invoice_distributions_all aid
5316 WHERE aid.invoice_id = l_prepay_app_invoice_ids(i)
5317 AND aid.accounting_event_id = p_adj_accounting_event_id
5318 AND NOT EXISTS
5319 (SELECT 1
5320 FROM ap_prepay_app_dists apad,
5321 ap_prepay_history_all apph
5322 WHERE apad.prepay_history_id = apph.prepay_history_id
5323 AND apph.transaction_type = 'PREPAYMENT APPLIED'
5324 AND apph.invoice_id = l_prepay_app_invoice_ids(i)
5325 AND apph.invoice_line_number = l_prepay_app_invoice_line_num(i)
5326 AND apad.invoice_distribution_id = aid.invoice_distribution_id)
5327 AND rownum < 2;
5328
5329 EXCEPTION
5330 WHEN OTHERS THEN
5331 l_count := 0;
5332
5333 END;
5334
5335 IF l_count > 0 THEN
5336
5337 l_log_msg := 'Before calling procedure create_invoice_event';
5338 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5339 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5340 G_MODULE_NAME || l_procedure_name,
5341 l_log_msg);
5342 END IF;
5343
5344 l_log_msg := 'Before calling procedure create_invoice_event';
5345 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5346 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5347 G_MODULE_NAME || l_procedure_name,
5348 l_log_msg);
5349 END IF;
5350
5351 l_accounting_event_id := create_invoice_event
5352 (p_event_type => PREPAY_APP_ADJUSTED_TYPE,
5353 p_invoice_id => l_prepay_app_invoice_ids(i),
5354 p_event_date => p_accounting_date, -- Bug 6996047
5355 p_calling_sequence => l_curr_calling_sequence);
5356
5357 l_log_msg := 'After calling procedure create_invoice_event';
5358 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5359 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5360 G_MODULE_NAME || l_procedure_name,
5361 l_log_msg);
5362 END IF;
5363
5364 l_log_msg := 'Before calling procedure Insert_Prepayment_Header';
5365 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5366 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5367 G_MODULE_NAME || l_procedure_name,
5368 l_log_msg);
5369 END IF;
5370
5371 Insert_Prepayment_Header
5372 (p_invoice_id => l_prepay_app_invoice_ids(i),
5373 p_invoice_line_number => l_prepay_app_invoice_line_num(i),
5374 p_accounting_event_id => l_accounting_event_id,
5375 p_accounting_date => p_accounting_date, -- Bug 6996047
5376 p_invoice_adjustment_id => l_adj_accounting_event_id,
5377 p_calling_sequence => l_curr_calling_sequence);
5378
5379 l_log_msg := 'After calling procedure Insert_prepayment_Header';
5380 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5381 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5382 G_MODULE_NAME || l_procedure_name,
5383 l_log_msg);
5384 END IF;
5385
5386 END IF;
5387 END LOOP;
5388
5389 EXIT WHEN l_prepayment_applications_cur%NOTFOUND;
5390 END LOOP;
5391 CLOSE l_prepayment_applications_cur;
5392
5393
5394 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
5395 l_log_msg := 'cascade the payment events';
5396 FND_LOG.STRING(G_LEVEL_STATEMENT,
5397 G_MODULE_NAME || l_procedure_name,
5398 l_log_msg);
5399 END IF;
5400
5401
5402 OPEN l_payments_cur;
5403 LOOP
5404
5405 FETCH l_payments_cur
5406 BULK COLLECT INTO
5407 l_pay_check_ids,
5408 l_pay_accounting_dates
5409 LIMIT 1000;
5410
5411 FOR i IN 1 .. l_pay_check_ids.count LOOP
5412
5413 l_log_msg := 'Before calling procedure create_payment_event';
5414 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5415 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5416 G_MODULE_NAME || l_procedure_name,
5417 l_log_msg);
5418 END IF;
5419
5420 -- bug fix 5694577
5421 OPEN c_get_payment_info(l_pay_check_ids(i));
5422 FETCH c_get_payment_info
5423 INTO l_exchange_rate_type,
5424 l_exchange_rate_date,
5425 l_exchange_rate,
5426 l_currency_code,
5427 l_creation_date,
5428 l_last_updated_by,
5429 l_org_id,
5430 l_pay_type,
5431 l_automatic_offsets_flag; ---7209263
5432 CLOSE c_get_payment_info;
5433
5434 IF (l_pay_type = 'R') THEN
5435 l_event_type := REFUND_ADJUSTED_TYPE;
5436 ELSE
5437 l_event_type := PAYMENT_ADJUSTED_TYPE;
5438 END IF;
5439
5440 --bug 10126192 start
5441 IF l_accounting_date < l_pay_accounting_dates(i) THEN
5442 l_accounting_date := l_pay_accounting_dates(i);
5443 END IF;
5444 --bug 10126192 end
5445
5446 l_accounting_event_id :=
5447 create_payment_event
5448 ( p_event_type => l_event_type,
5449 p_check_id => l_pay_check_ids(i),
5450 p_event_date => l_accounting_date, -- Bug 10126192,6996047
5451 p_calling_sequence => l_curr_calling_sequence
5452 );
5453
5457 G_MODULE_NAME || l_procedure_name,
5454 l_log_msg := 'After calling procedure create_payment_event';
5455 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5456 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5458 l_log_msg);
5459 END IF;
5460
5461 l_log_msg := 'Before AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY';
5462 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5463 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5464 G_MODULE_NAME || l_procedure_name,
5465 l_log_msg);
5466 END IF;
5467
5468 AP_RECONCILIATION_PKG.insert_payment_history
5469 (
5470 x_check_id => l_pay_check_ids(i),
5471 x_transaction_type => l_event_type ,
5472 x_accounting_date => l_accounting_date, -- Bug10126192,6996047
5473 x_trx_bank_amount => NULL,
5474 x_errors_bank_amount => NULL,
5475 x_charges_bank_amount => NULL,
5476 x_bank_currency_code => NULL,
5477 x_bank_to_base_xrate_type => NULL,
5478 x_bank_to_base_xrate_date => NULL,
5479 x_bank_to_base_xrate => NULL,
5480 x_trx_pmt_amount => 0,
5481 x_errors_pmt_amount => NULL,
5482 x_charges_pmt_amount => NULL,
5483 x_pmt_currency_code => l_currency_code,
5484 x_pmt_to_base_xrate_type => l_exchange_rate_type,
5485 x_pmt_to_base_xrate_date => l_exchange_rate_date,
5486 x_pmt_to_base_xrate => l_exchange_rate,
5487 x_trx_base_amount => 0,
5488 x_errors_base_amount => NULL,
5489 x_charges_base_amount => NULL,
5490 x_matched_flag => NULL,
5491 x_rev_pmt_hist_id => NULL,
5492 x_org_id => l_org_id, -- bug 4578865
5493 x_creation_date => SYSDATE,
5494 x_created_by => l_last_updated_by,
5495 x_last_update_date => SYSDATE,
5496 x_last_updated_by => l_last_updated_by,
5497 x_last_update_login => l_last_updated_by,
5498 x_program_update_date => NULL,
5499 x_program_application_id => NULL,
5500 x_program_id => NULL,
5501 x_request_id => NULL,
5502 x_calling_sequence => l_curr_calling_sequence,
5503 x_accounting_event_id => l_accounting_event_id,
5504 x_invoice_adjustment_event_id => l_adj_accounting_event_id -- bug fix 5694577
5505 );
5506
5507 l_log_msg := 'After AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY';
5508 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5509 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5510 G_MODULE_NAME || l_procedure_name,
5511 l_log_msg);
5512 END IF;
5513
5514
5515 END LOOP;
5516 EXIT WHEN l_payments_cur%NOTFOUND;
5517 END LOOP;
5518 CLOSE l_payments_cur;
5519
5520 l_log_msg := 'Cascade the payment clearing events';
5521 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
5522 FND_LOG.STRING(G_LEVEL_STATEMENT,
5523 G_MODULE_NAME || l_procedure_name,
5524 l_log_msg);
5525 END IF;
5526
5527 OPEN l_payment_clearings_cur;
5528 LOOP
5529
5530 FETCH l_payment_clearings_cur
5531 BULK COLLECT INTO
5532 l_pay_clear_check_ids,
5533 l_pay_clear_accounting_dates
5534 LIMIT 1000;
5535
5536 FOR i IN 1 .. l_pay_clear_check_ids.count LOOP
5537
5538 l_log_msg := 'Before calling procedure create_payment_event';
5539 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5540 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5541 G_MODULE_NAME || l_procedure_name,
5542 l_log_msg);
5543 END IF;
5544 /* commented here for bug 7607184
5545 ---placed here due to 7209263
5546 SELECT AC.exchange_rate_type,
5547 AC.exchange_date,
5548 AC.exchange_rate,
5549 AC.creation_date,
5550 AC.last_updated_by,
5551 AC.org_id,
5552 asp.automatic_offsets_flag
5553 INTO l_exchange_rate_type,
5554 l_exchange_rate_date,
5555 l_exchange_rate,
5556 l_creation_date,
5557 l_last_updated_by,
5558 l_org_id,
5559 l_automatic_offsets_flag --7209263
5560 FROM AP_CHECKS AC, ap_system_parameters_all asp
5561 WHERE AC.check_id = l_pay_clear_check_ids(i) --bug 7278341 l_pay_check_ids(i)
5562 AND AC.org_id=asp.org_id;
5563 */
5564 --bug 7607184
5565 OPEN c_get_payment_info(l_pay_clear_check_ids(i));
5566 FETCH c_get_payment_info
5567 INTO l_exchange_rate_type,
5568 l_exchange_rate_date,
5569 l_exchange_rate,
5570 l_currency_code,
5571 l_creation_date,
5572 l_last_updated_by,
5573 l_org_id,
5574 l_pay_type,
5575 l_automatic_offsets_flag;
5576 CLOSE c_get_payment_info;
5577
5578 --added to pick bank_currency_code from payment clearing for bug 7337949
5579 -- Bug 8276852 Added XRate Details type, Date, Rate
5580 SELECT aph.bank_currency_code
5581 ,aph.bank_to_base_xrate_type
5582 ,aph.bank_to_base_xrate_date
5583 ,aph.bank_to_base_xrate
5584 ,aph.charges_bank_amount /*Bug13385106 */
5585 /* bug12363669 start */
5586 ,aph.pmt_to_base_xrate_type
5587 ,aph.pmt_to_base_xrate_date
5588 ,aph.pmt_to_base_xrate
5589 /* bug12363669 end */
5593 ,l_bank_to_base_xrate
5590 INTO l_bank_curr_code
5591 ,l_bank_to_base_xrate_type
5592 ,l_bank_to_base_xrate_date
5594 ,l_charges_bank_amount /*Bug13385106 */
5595 /* bug12363669 start */
5596 ,l_pmt_to_base_xrate_type
5597 ,l_pmt_to_base_xrate_date
5598 ,l_pmt_to_base_xrate
5599 /* bug12363669 end*/
5600 FROM ap_payment_history_all APH
5601 WHERE APH.check_id = l_pay_clear_check_ids(i)
5602 AND APH.transaction_type = 'PAYMENT CLEARING'
5603 --added for bug 7614505
5604 AND NOT EXISTS( SELECT 'PAYMENT UNCLEARING EXISTS'
5605 FROM ap_payment_history_all APH1
5606 WHERE APH1.rev_pmt_hist_id = APH.payment_history_id
5607 AND APH1.transaction_type = 'PAYMENT UNCLEARING'
5608 AND APH1.check_id = APH.check_id);
5609
5610 ------7337949 ends
5611 -- Bug 8276852 End
5612
5613 --bug 10126192 start
5614 IF l_accounting_date < l_pay_clear_accounting_dates(i) THEN
5615 l_accounting_date := l_pay_clear_accounting_dates(i);
5616 END IF;
5617 --bug 10126192 end
5618
5619 l_accounting_event_id :=
5620 create_payment_event
5621 ( p_event_type => PAYMENT_CLEARING_ADJUSTED_TYPE,
5622 p_check_id => l_pay_clear_check_ids(i),
5623 p_event_date => l_accounting_date, --Bug 10126192,6996047
5624 p_calling_sequence => l_curr_calling_sequence);
5625
5626 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5627 l_log_msg := 'After calling procedure create_payment_event';
5628 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5629 G_MODULE_NAME || l_procedure_name,
5630 l_log_msg);
5631 END IF;
5632
5633 ----commented as placed above due to 7209263
5634 /* SELECT exchange_rate_type,
5635 exchange_date,
5636 exchange_rate,
5637 creation_date,
5638 last_updated_by,
5639 org_id
5640 INTO l_exchange_rate_type,
5641 l_exchange_rate_date,
5642 l_exchange_rate,
5643 l_creation_date,
5644 l_last_updated_by,
5645 l_org_id
5646 FROM AP_CHECKS AC
5647 WHERE AC.check_id = l_pay_check_ids(i);
5648 */
5649
5650
5651 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5652 l_log_msg := 'Before AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY';
5653 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5654 G_MODULE_NAME || l_procedure_name,
5655 l_log_msg);
5656 END IF;
5657
5658
5659 AP_RECONCILIATION_PKG.insert_payment_history
5660 (
5661 x_check_id => l_pay_clear_check_ids(i),
5662 x_transaction_type => 'PAYMENT CLEARING ADJUSTED',
5663 x_accounting_date => l_accounting_date, --Bug 10126192,6996047
5664 x_trx_bank_amount => NULL,
5665 x_errors_bank_amount => NULL,
5666 x_charges_bank_amount =>l_charges_bank_amount, /*Bug13385106 */
5667 x_bank_currency_code => l_bank_curr_code,
5668 x_bank_to_base_xrate_type => l_bank_to_base_xrate_type, --Bug 8276852
5669 x_bank_to_base_xrate_date => l_bank_to_base_xrate_date, --Bug 8276852
5670 x_bank_to_base_xrate => l_bank_to_base_xrate, --Bug 8276852
5671 x_trx_pmt_amount => 0,
5672 x_errors_pmt_amount => NULL,
5673 x_charges_pmt_amount => NULL,
5674 x_pmt_currency_code => l_currency_code,
5675 x_pmt_to_base_xrate_type => l_pmt_to_base_xrate_type, --bug12363669
5676 x_pmt_to_base_xrate_date => l_pmt_to_base_xrate_date, --bug12363669
5677 x_pmt_to_base_xrate => l_pmt_to_base_xrate, --bug12363669
5678 x_trx_base_amount => 0,
5679 x_errors_base_amount => NULL,
5680 x_charges_base_amount => NULL,
5681 x_matched_flag => NULL,
5682 x_rev_pmt_hist_id => NULL,
5683 x_org_id => l_org_id, -- bug 4578865
5684 x_creation_date => SYSDATE,
5685 x_created_by => l_last_updated_by,
5686 x_last_update_date => SYSDATE,
5687 x_last_updated_by => l_last_updated_by,
5688 x_last_update_login => l_last_updated_by,
5689 x_program_update_date => NULL,
5690 x_program_application_id => NULL,
5691 x_program_id => NULL,
5692 x_request_id => NULL,
5693 x_calling_sequence => l_curr_calling_sequence,
5694 x_accounting_event_id => l_accounting_event_id,
5695 x_invoice_adjustment_event_id => l_adj_accounting_event_id --bug6710016
5696 );
5697
5698 l_log_msg := 'After AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY ';
5699 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5700 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5701 G_MODULE_NAME || l_procedure_name,
5702 l_log_msg);
5703 END IF;
5704
5705
5706 END LOOP;
5707 EXIT WHEN l_payment_clearings_cur%NOTFOUND;
5708 END LOOP;
5709 CLOSE l_payment_clearings_cur;
5710
5711
5712 l_log_msg := 'Cascade the payment maturity events';
5713 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL ) THEN
5714 FND_LOG.STRING(G_LEVEL_STATEMENT,
5715 G_MODULE_NAME || l_procedure_name,
5716 l_log_msg);
5717 END IF;
5718
5719 OPEN l_payment_maturities_cur;
5720 LOOP
5721
5722 FETCH l_payment_maturities_cur
5723 BULK COLLECT INTO
5724 l_pay_mat_check_ids,
5728 FOR i IN 1 .. l_pay_mat_check_ids.count LOOP
5725 l_pay_mat_accounting_dates
5726 LIMIT 1000;
5727
5729
5730
5731
5732
5733 --bug 10114700 added call to c_get_payment_info
5734 OPEN c_get_payment_info(l_pay_mat_check_ids(i));
5735 FETCH c_get_payment_info
5736 INTO l_exchange_rate_type,
5737 l_exchange_rate_date,
5738 l_exchange_rate,
5739 l_currency_code,
5740 l_creation_date,
5741 l_last_updated_by,
5742 l_org_id,
5743 l_pay_type,
5744 l_automatic_offsets_flag;
5745 CLOSE c_get_payment_info;
5746
5747 l_log_msg := 'Before calling procedure create_payment_event';
5748 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5749 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5750 G_MODULE_NAME || l_procedure_name,
5751 l_log_msg);
5752 END IF;
5753
5754 --bug 10126192 start
5755 IF l_accounting_date < l_pay_mat_accounting_dates(i) THEN
5756 l_accounting_date := l_pay_mat_accounting_dates(i);
5757 END IF;
5758 --bug 10126192 end
5759
5760 l_accounting_event_id :=
5761 create_payment_event
5762 ( p_event_type => PAYMENT_MATURITY_ADJUSTED_TYPE,
5763 p_check_id => l_pay_mat_check_ids(i),
5764 p_event_date => l_accounting_date, --Bug 10126192,6996047
5765 p_calling_sequence => l_curr_calling_sequence);
5766
5767 l_log_msg := 'After calling procedure create_payment_event';
5768 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5769 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5770 G_MODULE_NAME || l_procedure_name,
5771 l_log_msg);
5772 END IF;
5773
5774 ----Commented due to 7209263
5775 /* SELECT exchange_rate_type,
5776 exchange_date,
5777 exchange_rate,
5778 creation_date,
5779 last_updated_by,
5780 org_id
5781 INTO l_exchange_rate_type,
5782 l_exchange_rate_date,
5783 l_exchange_rate,
5784 l_creation_date,
5785 l_last_updated_by,
5786 l_org_id
5787 FROM AP_CHECKS AC
5788 WHERE AC.check_id = l_pay_check_ids(i);
5789 */
5790
5791 l_log_msg := 'Before AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY';
5792 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5793 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5794 G_MODULE_NAME || l_procedure_name,
5795 l_log_msg);
5796 END IF;
5797
5798 AP_RECONCILIATION_PKG.insert_payment_history
5799 (
5800 x_check_id => l_pay_mat_check_ids(i),
5801 x_transaction_type => 'PAYMENT MATURITY ADJUSTED',
5802 x_accounting_date => l_accounting_date, --Bug 10126192,6996047
5803 x_trx_bank_amount => NULL,
5804 x_errors_bank_amount => NULL,
5805 x_charges_bank_amount => NULL,
5806 x_bank_currency_code => NULL,
5807 x_bank_to_base_xrate_type => NULL,
5808 x_bank_to_base_xrate_date => NULL,
5809 x_bank_to_base_xrate => NULL,
5810 x_trx_pmt_amount => 0,
5811 x_errors_pmt_amount => NULL,
5812 x_charges_pmt_amount => NULL,
5813 x_pmt_currency_code => l_currency_code,
5814 x_pmt_to_base_xrate_type => l_exchange_rate_type,
5815 x_pmt_to_base_xrate_date => l_exchange_rate_date,
5816 x_pmt_to_base_xrate => l_exchange_rate,
5817 x_trx_base_amount => 0,
5818 x_errors_base_amount => NULL,
5819 x_charges_base_amount => NULL,
5820 x_matched_flag => NULL,
5821 x_rev_pmt_hist_id => NULL,
5822 x_org_id => l_org_id, -- bug 4578865
5823 x_creation_date => SYSDATE,
5824 x_created_by => l_last_updated_by,
5825 x_last_update_date => SYSDATE,
5826 x_last_updated_by => l_last_updated_by,
5827 x_last_update_login => l_last_updated_by,
5828 x_program_update_date => NULL,
5829 x_program_application_id => NULL,
5830 x_program_id => NULL,
5831 x_request_id => NULL,
5832 x_calling_sequence => l_curr_calling_sequence,
5833 x_accounting_event_id => l_accounting_event_id,
5834 x_invoice_adjustment_event_id => l_adj_accounting_event_id --bug6710016
5835 );
5836
5837 l_log_msg := 'After AP_RECONCILIATION_PKG.INSERT_PAYMENT_HISTORY';
5838 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5839 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5840 G_MODULE_NAME || l_procedure_name,
5841 l_log_msg);
5842 END IF;
5843
5844 END LOOP;
5845
5846 EXIT WHEN l_payment_maturities_cur%NOTFOUND;
5847 END LOOP;
5848 CLOSE l_payment_maturities_cur;
5849
5850 l_log_msg := 'End of procedure '||l_procedure_name;
5851 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5852 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5853 G_MODULE_NAME || l_procedure_name,
5854 l_log_msg);
5855 END IF;
5856
5857 EXCEPTION
5858 WHEN OTHERS THEN
5862 IF (l_payments_cur%ISOPEN) THEN
5859 IF (l_prepayment_applications_cur%ISOPEN) THEN
5860 CLOSE l_prepayment_applications_cur;
5861 END IF;
5863 CLOSE l_payments_cur;
5864 END IF;
5865 IF (l_payment_clearings_cur%ISOPEN) THEN
5866 CLOSE l_payment_clearings_cur;
5867 END IF;
5868 IF (l_payment_maturities_cur%ISOPEN) THEN
5869 CLOSE l_payment_maturities_cur;
5870 END IF;
5871 IF (SQLCODE <> -20001) THEN
5872 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
5873 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
5874 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
5875 l_curr_calling_sequence);
5876 FND_MESSAGE.SET_TOKEN('PARAMETERS',
5877 'p_invoice_id = '||p_invoice_id
5878 ||', p_adj_accounting_event_id = '||p_adj_accounting_event_id);
5879 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
5880 END IF;
5881 APP_EXCEPTION.RAISE_EXCEPTION();
5882 END derive_cascade_events;
5883
5884
5885
5886 /*============================================================================
5887 | PROCEDURE - DERIVE_INVOICE_CANCEL_EVENTs(PRIVATE)
5888 |
5889 | DESCRIPTION
5890 | This procedure creates invoice cancellation events using the GL date
5891 | of the invoice distributions. If there are multiple invoice
5892 | distributions with different GL dates, multiple Invoice Cancellation
5893 | events will be created.
5894 |
5895 | PRAMETERS
5896 | p_invoice_id IN: Invoice Id of the cancelled invoice
5897 | p_calling_sequence IN: Debug information
5898 |
5899 | KNOWN ISSUES:
5900 |
5901 | NOTES:
5902 |
5903 | MODIFICATION HISTORY
5904 | Date Author Description of Change
5905 |
5906 *===========================================================================*/
5907 PROCEDURE derive_invoice_cancel_events (
5908 p_invoice_id IN NUMBER,
5909 p_calling_sequence IN VARCHAR2)
5910 IS
5911
5912 /* bug 11663644 added ap_self_assessed_tax_dist_all */
5913 CURSOR inv_cancel_event_dists IS
5914 SELECT accounting_date
5915 FROM ap_invoice_distributions
5916 WHERE invoice_id = p_invoice_id
5917 AND awt_invoice_payment_id IS NULL
5918 AND prepay_distribution_id IS NULL --prepay_tax_parent_id obsoleted
5919 AND accounting_event_id IS NULL
5920 AND cancellation_flag = 'Y'
5921 GROUP BY accounting_date
5922 UNION
5923 SELECT accounting_date
5924 FROM ap_self_assessed_tax_dist_all
5925 WHERE invoice_id = p_invoice_id
5926 AND awt_invoice_payment_id IS NULL
5927 AND prepay_distribution_id IS NULL --prepay_tax_parent_id obsoleted
5928 AND accounting_event_id IS NULL
5929 AND cancellation_flag = 'Y'
5930 GROUP BY accounting_date
5931 ORDER BY accounting_date;
5932
5933 /* Bug 11663644 removed cursors no_action_prepay_dists,
5934 non_prepay_dist_grp_count and all_unaccounted_dists_cur
5935 as they are not referred anywhere*/
5936
5937 TYPE t_accounting_event_dates IS TABLE OF DATE INDEX BY PLS_INTEGER;
5938 l_accounting_event_dates t_accounting_event_dates;
5939 l_dist_gl_date_list t_accounting_event_dates;
5940
5941 TYPE t_accounting_event_ids IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
5942 l_accounting_event_ids t_accounting_event_ids;
5943 l_unaccounted_event_id_list t_accounting_event_ids;
5944
5945
5946 l_event_type VARCHAR2(30);
5947 l_event_class VARCHAR2(30);
5948 l_accounting_event_id NUMBER; --bug 4352723
5949 l_processed_dists NUMBER;
5950 l_dist_dates NUMBER;
5951
5952 l_legal_entity_id NUMBER(15);
5953 l_ledger_id NUMBER(15);
5954 l_org_id NUMBER(15);
5955 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
5956 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
5957 l_diff_gl_date_dists NUMBER := 0;
5958 l_transaction_date AP_INVOICES_ALL.invoice_date%TYPE;
5959
5960 l_curr_calling_sequence VARCHAR2(2000);
5961
5962 -- Logging:
5963 l_procedure_name CONSTANT VARCHAR2(30) := 'DERIVE_INVOICE_CANCEL_EVENT';
5964 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
5965
5966 BEGIN
5967
5968 l_curr_calling_sequence := p_calling_sequence ||
5969 ' -> AP_ACCOUNTING_EVENTS_PKG.DERIVE_INVOICE_CANCEL_EVENT';
5970
5971 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5972
5973 l_log_msg := 'Begin of procedure '||l_procedure_name;
5974 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
5975 FND_LOG.STRING(G_LEVEL_PROCEDURE,
5976 G_MODULE_NAME || l_procedure_name,
5977 l_log_msg);
5978 END IF;
5979
5980 SELECT DECODE
5981 ( AI.invoice_type_lookup_code,
5982 'CREDIT', CREDIT_MEMO_CANCELLED_TYPE,
5983 'DEBIT', DEBIT_MEMO_CANCELLED_TYPE,
5984 'PREPAYMENT', PREPAYMENT_CANCELLED_TYPE,
5985 INVOICE_CANCELLED_TYPE
5986 ) event_type,
5987 DECODE
5988 ( AI.invoice_type_lookup_code,
5989 'CREDIT', CREDIT_MEMOS_CLASS,
5990 'DEBIT', DEBIT_MEMOS_CLASS,
5991 'PREPAYMENT', PREPAYMENTS_CLASS,
5992 INVOICES_CLASS
5993 ) event_class
5994 INTO l_event_type,
5995 l_event_class
5996 FROM ap_invoices_all AI
5997 WHERE AI.invoice_id = p_invoice_id;
5998
5999 l_log_msg := 'Before calling procedure create_invoice_event';
6000 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6001 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6002 G_MODULE_NAME || l_procedure_name,
6003 l_log_msg);
6004 END IF;
6005
6009 FETCH inv_cancel_event_dists
6006 OPEN inv_cancel_event_dists;
6007 LOOP
6008
6010 BULK COLLECT INTO
6011 l_accounting_event_dates
6012 LIMIT 1000;
6013
6014 FOR i IN 1 ..l_accounting_event_dates.count LOOP
6015 l_log_msg := 'Before calling procedure create_invoice_event';
6016 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6017 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6018 G_MODULE_NAME || l_procedure_name,
6019 l_log_msg);
6020 END IF;
6021
6022 l_accounting_event_ids(i) :=
6023 create_invoice_event
6024 ( p_event_type => l_event_type,
6025 p_invoice_id => p_invoice_id,
6026 p_event_date => l_accounting_event_dates(i),
6027 p_calling_sequence => l_curr_calling_sequence
6028 );
6029
6030 l_log_msg := 'After calling procedure create_invoice_event';
6031 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6032 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6033 G_MODULE_NAME || l_procedure_name,
6034 l_log_msg);
6035 END IF;
6036
6037 END LOOP;
6038
6039 FORALL i IN 1 .. l_accounting_event_dates.count
6040 UPDATE ap_invoice_distributions
6041 SET accounting_event_id = l_accounting_event_ids(i)
6042 WHERE invoice_id = p_invoice_id
6043 AND accounting_date = l_accounting_event_dates(i)
6044 AND awt_invoice_payment_id IS NULL
6045 AND line_type_lookup_code <> 'PREPAY'
6046 AND prepay_distribution_id IS NULL --prepay_tax_parent_id obsoleted
6047 AND accounting_event_id IS NULL
6048 AND cancellation_flag = 'Y';
6049
6050 --------------------------------------------------
6051 -- bug 5525657
6052 -- We need to stamp the accounting event id for
6053 -- self assessed tax distributions
6054 --------------------------------------------------
6055
6056 FORALL i IN 1 .. l_accounting_event_dates.count
6057 UPDATE ap_self_assessed_tax_dist_all
6058 SET accounting_event_id = l_accounting_event_ids(i)
6059 WHERE invoice_id = p_invoice_id
6060 AND accounting_date = l_accounting_event_dates(i)
6061 AND awt_invoice_payment_id IS NULL
6062 AND line_type_lookup_code <> 'PREPAY'
6063 AND prepay_distribution_id IS NULL --prepay_tax_parent_id obsoleted
6064 AND accounting_event_id IS NULL
6065 AND cancellation_flag = 'Y';
6066
6067 EXIT WHEN inv_cancel_event_dists%NOTFOUND;
6068 END LOOP;
6069 CLOSE inv_cancel_event_dists;
6070
6071 -- Bug 4927664 Remove the complete logic trying to figure out
6072 -- if we need to update events to No Action.
6073
6074 l_log_msg :='End of procedure '||l_procedure_name;
6075 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6076 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6077 G_MODULE_NAME || l_procedure_name,
6078 l_log_msg);
6079 END IF;
6080
6081 EXCEPTION
6082 WHEN OTHERS THEN
6083 IF (inv_cancel_event_dists%ISOPEN) THEN
6084 CLOSE inv_cancel_event_dists;
6085 END IF;
6086 IF (SQLCODE <> -20001) THEN
6087 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6088 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6089 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
6090 l_curr_calling_sequence);
6091 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6092 'p_invoice_id = '||p_invoice_id);
6093 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
6094 END IF;
6095 APP_EXCEPTION.RAISE_EXCEPTION();
6096 END derive_invoice_cancel_events;
6097
6098 /*============================================================================
6099 | PROCEDURE - NO_ACTION_PMT_EVENT_UPDATE (PRIVATE)
6100 |
6101 | DESCRIPTION
6102 | This procedure is used to create 'No Action' event in SLA.'No Action'
6103 | status indicate that it is not necessary to create any accounting for a
6104 | given event. 'No Action' event will be picked up by the SLA accounting
6105 | process, but no accounting lines will be created.
6106 |
6107 | PRAMETERS
6108 | p_check_id: Check ID
6109 | p_event_type_code: Event Type
6110 | p_accounting_date: Accounting date
6111 | p_accounting_event_id: Accounting event whose status will be
6112 | stamped as 'No Action'
6113 | p_calling_sequence: Debug information
6114 |
6115 | KNOWN ISSUES:
6116 |
6117 | NOTES:
6118 |
6119 | MODIFICATION HISTORY
6120 | Date Author Description of Change
6121 |
6122 *===========================================================================*/
6123 PROCEDURE no_action_pmt_event_update(
6124 p_check_id IN NUMBER,
6125 p_event_type_code IN VARCHAR2,
6126 p_accounting_date IN DATE,
6127 p_accounting_event_id IN NUMBER,
6128 p_calling_sequence IN VARCHAR2)
6129 IS
6130
6131 -- Bug 4748638
6132 CURSOR aip_event_id_count IS
6133 SELECT accounting_event_id
6134 FROM ap_invoice_payments
6135 WHERE check_id = p_check_id
6136 GROUP BY accounting_event_id;
6137
6138 TYPE event_id_tab_Type IS TABLE OF
6139 ap_invoice_payments.accounting_event_id%TYPE;
6140 l_event_id_list event_id_tab_Type;
6141
6142 l_legal_entity_id NUMBER(15);
6143 l_ledger_id NUMBER(15);
6144 l_org_id NUMBER(15);
6145 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
6146 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
6147
6148 l_processed_events NUMBER;
6149 l_event_count NUMBER;
6153 l_curr_calling_sequence VARCHAR2(2000);
6150 l_accounting_date DATE;
6151 l_event_class VARCHAR2(30);
6152
6154
6155 -- Logging:
6156 l_procedure_name CONSTANT VARCHAR2(30) := 'NO_ACTION_PMT_EVENT_UPDATE';
6157 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
6158
6159 BEGIN
6160
6161 l_curr_calling_sequence := p_calling_sequence ||
6162 ' -> AP_ACCOUNTING_EVENTS_PKG.NO_ACTION_PMT_EVENT_UPDATE';
6163
6164 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
6165
6166 l_log_msg :='Begin of procedure '||l_procedure_name;
6167 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6168 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6169 G_MODULE_NAME || l_procedure_name,
6170 l_log_msg);
6171 END IF;
6172
6173 l_log_msg :='Before calling procedure get_payment_info';
6174 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6175 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6176 G_MODULE_NAME || l_procedure_name,
6177 l_log_msg);
6178 END IF;
6179
6180 get_payment_info
6181 ( p_check_id => p_check_id,
6182 p_org_id => l_org_id, -- OUT
6183 p_legal_entity_id => l_legal_entity_id, -- OUT
6184 p_ledger_id => l_ledger_id, -- OUT
6185 p_calling_sequence => l_curr_calling_sequence
6186 );
6187
6188 l_log_msg :='Procedure get_payment_info executed';
6189 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6190 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6191 G_MODULE_NAME || l_procedure_name,
6192 l_log_msg);
6193 END IF;
6194
6195 l_log_msg :='Before calling procedure get_event_security_context';
6196 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6197 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6198 G_MODULE_NAME || l_procedure_name,
6199 l_log_msg);
6200 END IF;
6201
6202 l_event_security_context :=
6203 get_event_security_context
6204 ( p_org_id => l_org_id,
6205 p_calling_sequence => l_curr_calling_sequence
6206 );
6207
6208 l_log_msg :='After calling procedure get_event_security_context';
6209 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6210 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6211 G_MODULE_NAME || l_procedure_name,
6212 l_log_msg);
6213 END IF;
6214
6215 l_log_msg :='Before calling procedure get_payment_event_source_info';
6216 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6217 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6218 G_MODULE_NAME || l_procedure_name,
6219 l_log_msg);
6220 END IF;
6221
6222 l_event_source_info :=
6223 get_payment_event_source_info
6224 ( p_legal_entity_id => l_legal_entity_id,
6225 p_ledger_id => l_ledger_id,
6226 p_check_id => p_check_id,
6227 p_calling_sequence => l_curr_calling_sequence
6228 );
6229
6230 l_log_msg :='After calling procedure get_payment_event_source_info';
6231 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6232 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6233 G_MODULE_NAME || l_procedure_name,
6234 l_log_msg);
6235 END IF;
6236
6237 IF (p_event_type_code IN (PAYMENT_CANCELLED_TYPE, REFUND_CANCELLED_TYPE)) THEN
6238 IF (p_event_type_code = PAYMENT_CANCELLED_TYPE) THEN
6239 l_event_class := PAYMENTS_CLASS;
6240 ELSE
6241 l_event_class := REFUNDS_CLASS;
6242 END IF;
6243
6244 SELECT COUNT(*)
6245 INTO l_processed_events
6246 FROM ap_invoice_payments
6247 WHERE posted_flag = 'Y'
6248 AND check_id = p_check_id;
6249
6250 IF (l_processed_events = 0) THEN
6251
6252 -- If there is more that one event for the payment, it implies that the
6253 -- payment has been adjusted, and we do not want to update events to
6254 -- No Action
6255
6256 OPEN aip_event_id_count;
6257 FETCH aip_event_id_count
6258 BULK COLLECT INTO l_event_id_list;
6259 CLOSE aip_event_id_count;
6260
6261 IF (l_event_id_list.count <= 1) THEN
6262
6263 SELECT check_date
6264 INTO l_accounting_date
6265 FROM ap_checks
6266 WHERE check_id = p_check_id;
6267
6268 IF (l_accounting_date = p_accounting_date) THEN
6269 -- p_event_type_code is left NULL so that 'PAYMENT CREATED' and
6270 -- 'PAYMENT CANCELLED' events or 'REFUND CREATED' and
6271 -- 'REFUND CANCELLED' events will be updated.
6272
6273 l_log_msg :='Before calling P_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
6274 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6275 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6276 G_MODULE_NAME || l_procedure_name,
6277 l_log_msg);
6278 END IF;
6279
6280 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
6281 ( p_event_source_info => l_event_source_info,
6282 p_event_class_code => l_event_class,
6283 p_event_type_code => p_event_type_code,
6284 p_event_date => l_accounting_date,
6285 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
6286 p_valuation_method => NULL,
6287 p_security_context => l_event_security_context,
6288 p_calling_sequence => l_curr_calling_sequence
6289 );
6290
6291 l_log_msg :='After calling AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
6292 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6293 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6294 G_MODULE_NAME || l_procedure_name,
6298
6295 l_log_msg);
6296 END IF;
6297 END IF;
6299 END IF;
6300
6301 END IF;
6302
6303 ELSIF (p_event_type_code = PAYMENT_UNCLEARED_TYPE) THEN
6304
6305 /* Get the accounting date of 'clearing' payment history */
6306 SELECT APH.accounting_date
6307 INTO l_accounting_date
6308 FROM ap_payment_history APH
6309 WHERE APH.payment_history_id =
6310 (SELECT max(payment_history_id)
6311 FROM ap_payment_history APH2
6312 WHERE APH2.check_id = p_check_id
6313 AND APH2.posted_flag = 'N'
6314 AND APH2.transaction_type = 'PAYMENT CLEARING');
6315
6316 IF (l_accounting_date = p_accounting_date) THEN
6317 -- p_event_type_code is left NULL so that 'PAYMENT CLEARED' and
6318 -- 'PAYMENT UNCLEARED' events will be updated.
6319
6320 l_log_msg :='Before calling AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
6321 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6322 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6323 G_MODULE_NAME || l_procedure_name,
6324 l_log_msg);
6325 END IF;
6326
6327 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
6328 ( p_event_source_info => l_event_source_info,
6329 p_event_class_code => RECONCILED_PAYMENTS_CLASS,
6330 p_event_type_code => p_event_type_code,
6331 p_event_date => l_accounting_date,
6332 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
6333 p_valuation_method => NULL,
6334 p_security_context => l_event_security_context,
6335 p_calling_sequence => l_curr_calling_sequence
6336 );
6337
6338 l_log_msg :='After calling AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
6339 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6340 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6341 G_MODULE_NAME || l_procedure_name,
6342 l_log_msg);
6343 END IF;
6344 END IF;
6345
6346 ELSIF (p_event_type_code = PAYMENT_MATURITY_REVERSED_TYPE) THEN
6347
6348 SELECT APH.accounting_date
6349 INTO l_accounting_date
6350 FROM ap_payment_history APH
6351 WHERE payment_history_id =
6352 (SELECT max(payment_history_id)
6353 FROM ap_payment_history APH2
6354 WHERE APH2.check_id = p_check_id
6355 AND APH2.posted_flag = 'N'
6356 AND APH2.transaction_type = 'PAYMENT MATURITY');
6357
6358
6359 IF (l_accounting_date = p_accounting_date) THEN
6360
6361 l_log_msg :='Before calling AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
6362 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6363 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6364 G_MODULE_NAME || l_procedure_name,
6365 l_log_msg);
6366 END IF;
6367
6368 AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS
6369 ( p_event_source_info => l_event_source_info,
6370 p_event_class_code => FUTURE_DATED_PAYMENTS_CLASS,
6371 p_event_type_code => p_event_type_code,
6372 p_event_date => l_accounting_date,
6373 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
6374 p_valuation_method => NULL,
6375 p_security_context => l_event_security_context,
6376 p_calling_sequence => l_curr_calling_sequence
6377 );
6378
6379 l_log_msg :='After calling AP_XLA_EVENTS_PKG.UPDATE_EVENT_STATUS';
6380 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6381 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6382 G_MODULE_NAME || l_procedure_name,
6383 l_log_msg);
6384 END IF;
6385 END IF;
6386
6387 END IF;
6388
6389 l_log_msg :='End of procedure '||l_procedure_name;
6390 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6391 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6392 G_MODULE_NAME || l_procedure_name,
6393 l_log_msg);
6394 END IF;
6395
6396 EXCEPTION
6397 WHEN OTHERS THEN
6398 IF (SQLCODE <> -20001) THEN
6399 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6400 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6401 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
6402 l_curr_calling_sequence);
6403 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6404 'p_check_id = '||p_check_id
6405 ||', p_event_type_code = '||p_event_type_code
6406 ||', p_accounting_date = '||p_accounting_date
6407 ||', p_accounting_event_id = '||p_accounting_event_id);
6408 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
6409 END IF;
6410 APP_EXCEPTION.RAISE_EXCEPTION();
6411 END no_action_pmt_event_update;
6412
6413
6414 /*============================================================================
6415 | PROCEDURE - MULTI_ORG_EVENTS_SWEEP(PUBLIC)
6416 |
6417 | DESCRIPTION
6418 | This procedure is called by APXTRSWP.rdf (UPDATE_ACCTG_DATES).This
6419 | procedure is used to sweep accounting events from one accounting period
6420 | to another.
6421 |
6422 | PRAMETERS
6423 | p_ledger_id: Current ledger ID
6424 | p_period_name: Old accounting period
6425 | p_from_date: The start date of sweeping
6426 | p_to_date: The end date of the sweeping
6427 | p_sweep_to_date: The new event date
6428 | p_calling_sequence: Debug information
6429 |
6430 | KNOWN ISSUES:
6431 |
6432 | NOTES:
6433 |
6437 *===========================================================================*/
6434 | MODIFICATION HISTORY
6435 | Date Author Description of Change
6436 |
6438 PROCEDURE multi_org_events_sweep (
6439 p_ledger_id IN NUMBER,
6440 p_period_name IN VARCHAR2,
6441 p_from_date IN DATE,
6442 p_to_date IN DATE,
6443 p_sweep_to_date IN DATE,
6444 p_calling_sequence IN VARCHAR2 )
6445 IS
6446
6447 TYPE t_event_ids IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
6448 TYPE t_invoice_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6449 TYPE t_check_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6450 TYPE t_org_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6451 TYPE t_legal_entity_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6452 TYPE t_ledger_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6453
6454 l_event_ids t_event_ids;
6455 l_invoice_ids t_invoice_ids;
6456 l_check_ids t_check_ids;
6457 l_org_ids t_org_ids;
6458 l_legal_entity_ids t_legal_entity_ids;
6459 l_ledger_ids t_ledger_ids;
6460 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
6461 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
6462
6463 CURSOR l_aid_events_mo_cur_period IS
6464 SELECT AID.accounting_event_id,
6465 AID.invoice_id,
6466 AID.org_id,
6467 AI.legal_entity_id,
6468 AID.set_of_books_id ledger_id
6469 FROM ap_invoice_distributions_all AID,
6470 ap_invoices_all AI
6471 WHERE AP_UTILITIES_PKG.GET_CURRENT_GL_DATE(TRUNC(AID.accounting_date), aid.org_id) --bug5956469
6472 = p_period_name
6473 AND aid.posted_flag IN ('N', 'S') -- Bug 6869699
6474 AND aid.org_id = ai.org_id
6475 AND AID.org_id IN
6476 ( SELECT ASP.org_id
6477 FROM hr_organization_information OI,
6478 --hr_all_organization_units_tl LE, --bug6392886
6479 hr_all_organization_units_tl OU,
6480 ap_system_parameters_all ASP
6481 WHERE ASP.org_id = OI.organization_id
6482 AND OU.organization_id = OI.organization_id
6483 AND OI.org_information_context = 'Operating Unit Information'
6484 AND DECODE(LTRIM(OI.org_information3, '0123456789'), NULL,
6485 TO_NUMBER(OI.org_information3), NULL) = p_ledger_id
6486 --bug6392886
6487 /*AND DECODE(LTRIM(OI.org_information2, '0123456789'), NULL,
6488 TO_NUMBER(OI.org_information2), NULL) = LE.organization_id*/
6489 AND OU.organization_id = OI.organization_id
6490 AND OU.language = USERENV('LANG')
6491 --AND LE.language = USERENV('LANG')
6492 ) AND AID.invoice_id = AI.invoice_id
6493 AND AID.accounting_event_id is not NULL;--Bug6320053
6494
6495 CURSOR l_aid_events_mo_cur_no_period IS
6496 SELECT AID.accounting_event_id,
6497 AID.invoice_id,
6498 AID.org_id,
6499 AI.legal_entity_id,
6500 AID.set_of_books_id ledger_id
6501 FROM ap_invoice_distributions_all AID,
6502 ap_invoices_all AI
6503 WHERE AID.accounting_date BETWEEN p_from_date AND p_to_date
6504 AND aid.posted_flag IN ('N', 'S') -- Bug 6869699
6505 AND aid.org_id = ai.org_id
6506 AND AID.org_id IN
6507 ( SELECT ASP.org_id
6508 FROM hr_organization_information OI,
6509 --hr_all_organization_units_tl LE, --bug6392886
6510 hr_all_organization_units_tl OU,
6511 ap_system_parameters_all ASP
6512 WHERE ASP.org_id = OI.organization_id
6513 AND OU.organization_id = OI.organization_id
6514 AND OI.org_information_context = 'Operating Unit Information'
6515 AND DECODE(LTRIM(OI.org_information3, '0123456789'), NULL,
6516 TO_NUMBER(OI.org_information3), NULL) = p_ledger_id
6517 --bug6392886
6518 /*AND DECODE(LTRIM(OI.org_information2, '0123456789'), NULL,
6519 TO_NUMBER(OI.org_information2), NULL) = LE.organization_id*/
6520 AND OU.organization_id = OI.organization_id
6521 AND OU.language = USERENV('LANG')
6522 --AND LE.language = USERENV('LANG')
6523 ) AND AID.invoice_id = AI.invoice_id
6524 AND AID.accounting_event_id is not NULL ;--Bug6320053
6525
6526 CURSOR l_aph_events_mo_cur_period IS
6527 SELECT APH.accounting_event_id,
6528 APH.check_id check_id,
6529 APH.org_id,
6530 AC.legal_entity_id,
6531 ( SELECT AIP.set_of_books_id
6532 FROM ap_invoice_payments_all AIP
6533 WHERE AIP.check_id = APH.check_id
6534 AND ROWNUM = 1
6535 ) ledger_id
6536 FROM
6537 ap_payment_history_all APH,
6538 ap_checks_all AC
6539 WHERE
6540 APH.check_id = AC.check_id
6541 AND AP_UTILITIES_PKG.GET_CURRENT_GL_DATE(TRUNC(APH.accounting_date), aph.org_id) --bug5956469
6542 = p_period_name
6543 AND aph.posted_flag IN ('N', 'S') -- Bug 6869699
6544 and ac.org_id = aph.org_id
6545 AND APH.org_id IN
6546 ( SELECT ASP.org_id
6547 FROM hr_organization_information OI,
6548 --hr_all_organization_units_tl LE, --bug6392886
6549 hr_all_organization_units_tl OU,
6550 ap_system_parameters_all ASP
6551 WHERE ASP.org_id = OI.organization_id
6552 AND OU.organization_id = OI.organization_id
6553 AND OI.org_information_context = 'Operating Unit Information'
6554 AND DECODE(LTRIM(OI.org_information3,'0123456789'), NULL,
6555 TO_NUMBER(OI.org_information3), NULL) = p_ledger_id
6556 --bug6392886
6557 /*AND DECODE(LTRIM(OI.org_information2,'0123456789'), NULL,
6558 TO_NUMBER(OI.org_information2), NULL) = LE.organization_id */
6559 AND OU.organization_id = OI.organization_id
6560 AND OU.language = USERENV('LANG')
6561 --AND LE.language = USERENV('LANG')
6562 )
6563 AND APH.accounting_event_id is not NULL ;--Bug6320053
6564
6565 CURSOR l_aph_events_mo_cur_no_period IS
6566 SELECT APH.accounting_event_id,
6567 APH.check_id check_id,
6568 APH.org_id,
6569 AC.legal_entity_id,
6570 ( SELECT AIP.set_of_books_id
6571 FROM ap_invoice_payments_all AIP
6572 WHERE AIP.check_id = APH.check_id
6573 AND ROWNUM = 1
6574 ) ledger_id
6575 FROM
6576 ap_payment_history_all APH,
6577 ap_checks_all AC
6578 WHERE
6579 APH.check_id = AC.check_id
6580 AND APH.accounting_date BETWEEN p_from_date AND p_to_date
6581 AND aph.posted_flag IN ('N', 'S') -- Bug 6869699
6582 and ac.org_id = aph.org_id
6583 AND APH.org_id IN
6584 ( SELECT ASP.org_id
6585 FROM hr_organization_information OI,
6586 --hr_all_organization_units_tl LE, bug6392886
6587 hr_all_organization_units_tl OU,
6588 ap_system_parameters_all ASP
6589 WHERE ASP.org_id = OI.organization_id
6590 AND OU.organization_id = OI.organization_id
6591 AND OI.org_information_context = 'Operating Unit Information'
6592 AND DECODE(LTRIM(OI.org_information3,'0123456789'), NULL,
6593 TO_NUMBER(OI.org_information3), NULL) = p_ledger_id
6594 --bug6392886
6595 /*AND DECODE(LTRIM(OI.org_information2,'0123456789'), NULL,
6596 TO_NUMBER(OI.org_information2), NULL) = LE.organization_id*/
6597 AND OU.organization_id = OI.organization_id
6598 AND OU.language = USERENV('LANG')
6599 --AND LE.language = USERENV('LANG')
6600 )
6601 AND APH.accounting_event_id is not NULL ;--Bug6320053
6602
6603 l_curr_calling_sequence VARCHAR2(2000);
6604
6605 -- Logging:
6606 l_procedure_name CONSTANT VARCHAR2(30) := 'MULTI_ORG_EVENTS_SWEEP';
6607 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
6608
6609 BEGIN
6610
6611 l_curr_calling_sequence :=
6612 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.MULTI_ORG_EVENTS_SWEEP';
6613
6614 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
6615
6616 l_log_msg :='Begin of procedure '||l_procedure_name;
6617 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6618 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6619 G_MODULE_NAME || l_procedure_name,
6620 l_log_msg);
6621 END IF;
6622
6623 if (p_period_name is null) then
6624 OPEN l_aid_events_mo_cur_no_period;
6625 else
6626 OPEN l_aid_events_mo_cur_period;
6627 end if;
6628
6629 LOOP
6630
6631 if (p_period_name is null) then
6632 FETCH l_aid_events_mo_cur_no_period
6633 BULK COLLECT INTO
6634 l_event_ids,
6635 l_invoice_ids,
6636 l_org_ids,
6637 l_legal_entity_ids,
6638 l_ledger_ids
6639 LIMIT 1000;
6640 else
6641 FETCH l_aid_events_mo_cur_period
6642 BULK COLLECT INTO
6643 l_event_ids,
6644 l_invoice_ids,
6645 l_org_ids,
6646 l_legal_entity_ids,
6647 l_ledger_ids
6648 LIMIT 1000;
6649 end if;
6650
6651 FOR i IN 1 .. l_event_ids.count LOOP
6652 l_log_msg :='Before calling procedure get_event_security_context';
6653 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6654 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6655 G_MODULE_NAME || l_procedure_name,
6656 l_log_msg);
6657 END IF;
6658
6659 l_event_security_context :=
6660 get_event_security_context
6661 ( p_org_id => l_org_ids(i),
6662 p_calling_sequence => l_curr_calling_sequence
6663 );
6664
6665 l_log_msg :='After calling procedure get_event_security_context';
6666 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6667 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6668 G_MODULE_NAME || l_procedure_name,
6669 l_log_msg);
6670 END IF;
6671
6672 l_log_msg :='Before calling procedure get_invoice_event_source_info';
6673 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6674 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6675 G_MODULE_NAME || l_procedure_name,
6676 l_log_msg);
6677 END IF;
6678
6679 l_event_source_info :=
6680 get_invoice_event_source_info
6681 ( p_legal_entity_id => l_legal_entity_ids(i),
6682 p_ledger_id => l_ledger_ids(i),
6683 p_invoice_id => l_invoice_ids(i),
6684 p_calling_sequence => l_curr_calling_sequence
6685 );
6686
6687 l_log_msg :='After calling procedure get_invoice_event_source_info';
6688 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6689 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6690 G_MODULE_NAME || l_procedure_name,
6691 l_log_msg);
6692 END IF;
6693
6694 l_log_msg :='Before calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
6695 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6696 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6697 G_MODULE_NAME || l_procedure_name,
6698 l_log_msg);
6699 END IF;
6700
6701 AP_XLA_EVENTS_PKG.UPDATE_EVENT
6702 ( p_event_source_info => l_event_source_info,
6703 p_event_id => l_event_ids(i),
6704 p_event_type_code => NULL,
6705 p_event_date => p_sweep_to_date,
6706 p_event_status_code => NULL,
6707 p_valuation_method => NULL,
6708 p_security_context => l_event_security_context,
6709 p_calling_sequence => l_curr_calling_sequence
6710 );
6711
6712 --Bug 6874970
6713 UPDATE xla_ae_headers aeh
6714 SET aeh.accounting_date = p_sweep_to_date,
6715 aeh.period_name = AP_UTILITIES_PKG.get_gl_period_name(
6716 p_sweep_to_date,
6717 l_org_ids(i)),
6718 last_update_date = SYSDATE,
6719 last_updated_by = FND_GLOBAL.user_id
6720 WHERE aeh.event_id = l_event_ids(i)
6721 AND application_id = 200
6722 AND gl_transfer_status_code <> 'Y';
6723
6724 UPDATE xla_ae_lines ael
6725 SET ael.accounting_date = p_sweep_to_date,
6726 last_update_date = sysdate,
6727 last_updated_by = FND_GLOBAL.user_id
6728 WHERE ael.ae_header_id in (
6729 SELECT aeh.ae_header_id
6730 FROM xla_ae_headers aeh
6731 WHERE aeh.event_id = l_event_ids(i)
6732 AND aeh.application_id = 200
6733 AND aeh.gl_transfer_status_code <> 'Y');
6734
6735 l_log_msg :='After calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
6736 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6737 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6738 G_MODULE_NAME || l_procedure_name,
6739 l_log_msg);
6740 END IF;
6741
6742 END LOOP;
6743
6744 if (p_period_name is null) then
6745 EXIT WHEN l_aid_events_mo_cur_no_period%NOTFOUND;
6746 else
6747 EXIT WHEN l_aid_events_mo_cur_period%NOTFOUND;
6748 end if;
6749
6750 END LOOP;
6751
6752 if (p_period_name is null) then
6753 CLOSE l_aid_events_mo_cur_no_period;
6754
6755 OPEN l_aph_events_mo_cur_no_period;
6756 else
6757 CLOSE l_aid_events_mo_cur_period;
6758
6759 OPEN l_aph_events_mo_cur_period;
6760 end if;
6761
6762 LOOP
6763
6764 if (p_period_name is null) then
6765 FETCH l_aph_events_mo_cur_no_period
6766 BULK COLLECT INTO
6767 l_event_ids,
6768 l_check_ids,
6769 l_org_ids,
6770 l_legal_entity_ids,
6771 l_ledger_ids
6772 LIMIT 1000;
6773 else
6774 FETCH l_aph_events_mo_cur_period
6775 BULK COLLECT INTO
6776 l_event_ids,
6777 l_check_ids,
6778 l_org_ids,
6779 l_legal_entity_ids,
6780 l_ledger_ids
6781 LIMIT 1000;
6782 end if;
6783
6784 FOR i IN 1 .. l_event_ids.count LOOP
6785
6786
6787 l_event_security_context :=
6788 get_event_security_context
6789 ( p_org_id => l_org_ids(i),
6790 p_calling_sequence => l_curr_calling_sequence
6791 );
6792
6793 l_event_source_info :=
6794 get_payment_event_source_info
6795 ( p_legal_entity_id => l_legal_entity_ids(i),
6796 p_ledger_id => l_ledger_ids(i),
6797 p_check_id => l_check_ids(i),
6798 p_calling_sequence => l_curr_calling_sequence
6799 );
6800
6801 l_log_msg :='Before calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
6802 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6803 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6804 G_MODULE_NAME || l_procedure_name,
6805 l_log_msg);
6806 END IF;
6807
6808 AP_XLA_EVENTS_PKG.UPDATE_EVENT
6809 ( p_event_source_info => l_event_source_info,
6810 p_event_id => l_event_ids(i),
6811 p_event_type_code => NULL,
6812 p_event_date => p_sweep_to_date,
6813 p_event_status_code => NULL,
6814 p_valuation_method => NULL,
6815 p_security_context => l_event_security_context,
6816 p_calling_sequence => l_curr_calling_sequence
6817 );
6818
6819 --Bug 6874970
6820 UPDATE xla_ae_headers aeh
6821 SET aeh.accounting_date = p_sweep_to_date,
6822 aeh.period_name = AP_UTILITIES_PKG.get_gl_period_name(
6823 p_sweep_to_date,
6824 l_org_ids(i)),
6825 last_update_date = SYSDATE,
6826 last_updated_by = FND_GLOBAL.user_id
6827 WHERE aeh.event_id = l_event_ids(i)
6828 AND application_id = 200
6829 AND gl_transfer_status_code <> 'Y';
6830
6831 UPDATE xla_ae_lines ael
6832 SET ael.accounting_date = p_sweep_to_date,
6833 last_update_date = sysdate,
6834 last_updated_by = FND_GLOBAL.user_id
6835 WHERE ael.ae_header_id in (
6836 SELECT aeh.ae_header_id
6837 FROM xla_ae_headers aeh
6838 WHERE aeh.event_id = l_event_ids(i)
6839 AND aeh.application_id = 200
6840 AND aeh.gl_transfer_status_code <> 'Y');
6841
6842
6843 l_log_msg :='After calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
6844 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6845 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6846 G_MODULE_NAME || l_procedure_name,
6847 l_log_msg);
6848 END IF;
6849 END LOOP;
6850
6851 if (p_period_name is null) then
6852 EXIT WHEN l_aph_events_mo_cur_no_period%NOTFOUND;
6853 else
6854 EXIT WHEN l_aph_events_mo_cur_period%NOTFOUND;
6855 end if;
6856
6857 END LOOP;
6858
6859 if (p_period_name is null) then
6860 CLOSE l_aph_events_mo_cur_no_period;
6861 else
6862 CLOSE l_aph_events_mo_cur_period;
6863 end if;
6864
6865 l_log_msg :='End of procedure '||l_procedure_name;
6866 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
6867 FND_LOG.STRING(G_LEVEL_PROCEDURE,
6868 G_MODULE_NAME || l_procedure_name,
6869 l_log_msg);
6870 END IF;
6871
6872 EXCEPTION
6873 WHEN OTHERS THEN
6874
6875 if (p_period_name is null) then
6876 IF (l_aid_events_mo_cur_no_period%ISOPEN) THEN
6877 CLOSE l_aid_events_mo_cur_no_period;
6878 END IF;
6879
6880 IF (l_aph_events_mo_cur_no_period%ISOPEN) THEN
6881 CLOSE l_aph_events_mo_cur_no_period;
6882 END IF;
6883 else
6884 IF (l_aid_events_mo_cur_period%ISOPEN) THEN
6885 CLOSE l_aid_events_mo_cur_period;
6886 END IF;
6887
6888 IF (l_aph_events_mo_cur_period%ISOPEN) THEN
6889 CLOSE l_aph_events_mo_cur_period;
6890 END IF;
6891 end if;
6892
6893 IF (SQLCODE <> -20001) THEN
6894 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
6895 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
6896 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
6897 l_curr_calling_sequence);
6898 FND_MESSAGE.SET_TOKEN('PARAMETERS',
6899 'p_ledger_id = '||p_ledger_id
6900 ||', p_period_name = '||p_period_name
6901 ||', p_from_date = '||p_from_date
6902 ||', p_to_date = '||p_to_date
6903 ||', p_sweep_to_date = '||p_sweep_to_date);
6904 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
6905 END IF;
6906 APP_EXCEPTION.RAISE_EXCEPTION();
6907 END multi_org_events_sweep;
6908
6909 /*============================================================================
6910 | PROCEDURE - SINGLE_ORG_EVENTS_SWEEP(PUBLIC)
6911 |
6912 | DESCRIPTION
6913 | This procedure is called by APXTRSWP.rdf (UPDATE_ACCTG_DATES).This
6914 | procedure is used to sweep accounting events from one accounting period
6915 | to another.
6916 |
6917 | PRAMETERS:
6918 | p_period_name: Old period's name
6919 | p_from_date: The start date to sweep
6920 | p_to_date: The end date to sweep
6921 | p_sweep_to_date: New event date
6922 | p_calling_sequence: Debug information
6923 |
6924 | KNOWN ISSUES:
6925 |
6926 | NOTES:
6927 |
6928 | MODIFICATION HISTORY
6929 | Date Author Description of Change
6930 |
6931 *===========================================================================*/
6932 PROCEDURE single_org_events_sweep(
6933 p_period_name IN VARCHAR2,
6934 p_from_date IN DATE,
6935 p_to_date IN DATE,
6936 p_sweep_to_date IN DATE,
6937 p_calling_sequence IN VARCHAR2)
6938 IS
6939
6940 TYPE t_event_ids IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
6941 TYPE t_invoice_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6942 TYPE t_check_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6943 TYPE t_org_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6944 TYPE t_legal_entity_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6945 TYPE t_ledger_ids IS TABLE OF NUMBER(15) INDEX BY PLS_INTEGER;
6946
6947 l_event_ids t_event_ids;
6948 l_invoice_ids t_invoice_ids;
6949 l_check_ids t_check_ids;
6950 l_org_ids t_org_ids;
6951 l_legal_entity_ids t_legal_entity_ids;
6952 l_ledger_ids t_ledger_ids;
6953 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
6954 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
6955
6956 CURSOR l_aid_events_cur IS
6957 SELECT AID.accounting_event_id,
6958 AID.invoice_id,
6959 AID.org_id,
6960 AI.legal_entity_id,
6961 AID.set_of_books_id ledger_id
6962 FROM ap_invoice_distributions AID,
6963 ap_invoices AI
6964 WHERE ( ( p_period_name IS NULL AND
6965 AID.accounting_date BETWEEN p_from_date AND p_to_date)
6966 OR
6967 ( p_period_name IS NOT NULL AND
6968 AP_UTILITIES_PKG.GET_CURRENT_GL_DATE(TRUNC(AID.accounting_date), aid.org_id) --bug5956469
6969 = p_period_name
6970 )
6971 )
6972 AND AID.posted_flag <> 'Y'
6973 AND AID.invoice_id = AI.invoice_id
6974 AND AID.accounting_event_id is not NULL;--Bug6320053
6975
6976 CURSOR l_aph_events_cur_period IS
6977 SELECT APH.accounting_event_id,
6978 APH.check_id,
6979 APH.org_id,
6980 AC.legal_entity_id,
6981 ( SELECT AIP.set_of_books_id
6982 FROM ap_invoice_payments_all AIP
6983 WHERE AIP.check_id = APH.check_id
6984 AND ROWNUM = 1
6985 ) ledger_id
6986 FROM ap_payment_history_all APH,
6987 ap_checks_all AC
6988 WHERE APH.check_id = AC.check_id
6989 AND APH.org_id = AC.org_id
6990 AND AP_UTILITIES_PKG.GET_CURRENT_GL_DATE(TRUNC(APH.accounting_date), aph.org_id) --bug5956469
6991 = p_period_name
6992 AND aph.posted_flag IN ('N', 'S') -- Bug 6869699
6993 AND APH.accounting_event_id is not NULL;--Bug6320053
6994
6995 CURSOR l_aph_events_cur_no_period IS
6996 SELECT APH.accounting_event_id,
6997 APH.check_id,
6998 APH.org_id,
6999 AC.legal_entity_id,
7000 ( SELECT AIP.set_of_books_id
7001 FROM ap_invoice_payments_all AIP
7002 WHERE AIP.check_id = APH.check_id
7003 AND ROWNUM = 1
7004 ) ledger_id
7005 FROM ap_payment_history_all APH,
7006 ap_checks_all AC
7007 WHERE APH.check_id = AC.check_id
7008 AND APH.org_id = AC.org_id
7009 AND APH.accounting_date BETWEEN p_from_date AND p_to_date
7010 AND aph.posted_flag IN ('N', 'S') -- Bug 6869699
7011 AND APH.accounting_event_id is not NULL;--Bug6320053
7012
7013 l_curr_calling_sequence VARCHAR2(2000);
7014
7015 -- Logging:
7016 l_procedure_name CONSTANT VARCHAR2(30) := 'SINGLE_ORG_EVENTS_SWEEP';
7017 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7018
7019 BEGIN
7020
7021 l_curr_calling_sequence := p_calling_sequence
7022 || ' -> AP_ACCOUNTING_EVENTS_PKG.SINGLE_ORG_EVENTS_SWEEP';
7023
7024 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7025
7026 l_log_msg :='Begin of procedure '||l_procedure_name;
7027 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7028 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7029 G_MODULE_NAME || l_procedure_name,
7030 l_log_msg);
7031 END IF;
7032
7033 OPEN l_aid_events_cur;
7034 LOOP
7035
7036 FETCH l_aid_events_cur
7037 BULK COLLECT INTO
7038 l_event_ids,
7039 l_invoice_ids,
7040 l_org_ids,
7041 l_legal_entity_ids,
7042 l_ledger_ids
7043 LIMIT 1000;
7044
7045 FOR i IN 1 .. l_event_ids.count LOOP
7046
7047 l_event_security_context :=
7048 get_event_security_context
7049 ( p_org_id => l_org_ids(i),
7050 p_calling_sequence => l_curr_calling_sequence
7051 );
7052
7053 l_event_source_info :=
7054 get_invoice_event_source_info
7055 ( p_legal_entity_id => l_legal_entity_ids(i),
7056 p_ledger_id => l_ledger_ids(i),
7057 p_invoice_id => l_invoice_ids(i),
7058 p_calling_sequence => l_curr_calling_sequence
7059 );
7060
7061 l_log_msg :='Before calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
7062 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7063 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7064 G_MODULE_NAME || l_procedure_name,
7065 l_log_msg);
7066 END IF;
7067
7068 AP_XLA_EVENTS_PKG.UPDATE_EVENT
7069 ( p_event_source_info => l_event_source_info,
7070 p_event_id => l_event_ids(i),
7071 p_event_type_code => NULL,
7072 p_event_date => p_sweep_to_date,
7073 p_event_status_code => NULL,
7074 p_valuation_method => NULL,
7075 p_security_context => l_event_security_context,
7076 p_calling_sequence => l_curr_calling_sequence
7077 );
7078
7079 --Bug 6874970
7080 UPDATE xla_ae_headers aeh
7081 SET aeh.accounting_date = p_sweep_to_date,
7082 aeh.period_name = AP_UTILITIES_PKG.get_gl_period_name(
7083 p_sweep_to_date,
7084 l_org_ids(i)),
7085 last_update_date = SYSDATE,
7086 last_updated_by = FND_GLOBAL.user_id
7087 WHERE aeh.event_id = l_event_ids(i)
7088 AND application_id = 200
7089 AND gl_transfer_status_code <> 'Y';
7090
7091 UPDATE xla_ae_lines ael
7092 SET ael.accounting_date = p_sweep_to_date,
7093 last_update_date = sysdate,
7094 last_updated_by = FND_GLOBAL.user_id
7095 WHERE ael.ae_header_id in (
7096 SELECT aeh.ae_header_id
7097 FROM xla_ae_headers aeh
7098 WHERE aeh.event_id = l_event_ids(i)
7099 AND aeh.application_id = 200
7100 AND aeh.gl_transfer_status_code <> 'Y');
7101
7102 l_log_msg :='After calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
7103 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7104 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7105 G_MODULE_NAME || l_procedure_name,
7106 l_log_msg);
7107 END IF;
7108
7109 END LOOP;
7110
7111 EXIT WHEN l_aid_events_cur%NOTFOUND;
7112 END LOOP;
7113 CLOSE l_aid_events_cur;
7114
7115 if (p_period_name is null) then
7116 OPEN l_aph_events_cur_no_period;
7117 else
7118 OPEN l_aph_events_cur_period;
7119 end if;
7120
7121 LOOP
7122
7123 if (p_period_name is null) then
7124
7125 FETCH l_aph_events_cur_no_period
7126 BULK COLLECT INTO
7127 l_event_ids,
7128 l_check_ids,
7129 l_org_ids,
7130 l_legal_entity_ids,
7131 l_ledger_ids
7132 LIMIT 1000;
7133
7134 else
7135
7136 FETCH l_aph_events_cur_period
7137 BULK COLLECT INTO
7138 l_event_ids,
7139 l_check_ids,
7140 l_org_ids,
7141 l_legal_entity_ids,
7142 l_ledger_ids
7143 LIMIT 1000;
7144
7145 end if;
7146
7147 FOR i IN 1 .. l_event_ids.count LOOP
7148
7149 l_event_security_context :=
7150 get_event_security_context
7151 ( p_org_id => l_org_ids(i),
7152 p_calling_sequence => l_curr_calling_sequence
7153 );
7154
7155 l_event_source_info :=
7156 get_payment_event_source_info
7157 ( p_legal_entity_id => l_legal_entity_ids(i),
7158 p_ledger_id => l_ledger_ids(i),
7159 p_check_id => l_check_ids(i),
7160 p_calling_sequence => l_curr_calling_sequence
7161 );
7162
7163 l_log_msg :='After calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
7164 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7165 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7166 G_MODULE_NAME || l_procedure_name,
7167 l_log_msg);
7168 END IF;
7169
7170 AP_XLA_EVENTS_PKG.UPDATE_EVENT
7171 ( p_event_source_info => l_event_source_info,
7172 p_event_id => l_event_ids(i),
7173 p_event_type_code => NULL,
7174 p_event_date => p_sweep_to_date,
7175 p_event_status_code => NULL,
7176 p_valuation_method => NULL,
7177 p_security_context => l_event_security_context,
7178 p_calling_sequence => l_curr_calling_sequence
7179 );
7180
7181 --Bug 6874970
7182 UPDATE xla_ae_headers aeh
7183 SET aeh.accounting_date = p_sweep_to_date,
7184 aeh.period_name = AP_UTILITIES_PKG.get_gl_period_name(
7185 p_sweep_to_date,
7186 l_org_ids(i)),
7187 last_update_date = SYSDATE,
7188 last_updated_by = FND_GLOBAL.user_id
7189 WHERE aeh.event_id = l_event_ids(i)
7190 AND application_id = 200
7191 AND gl_transfer_status_code <> 'Y';
7192
7193 UPDATE xla_ae_lines ael
7194 SET ael.accounting_date = p_sweep_to_date,
7195 last_update_date = sysdate,
7196 last_updated_by = FND_GLOBAL.user_id
7197 WHERE ael.ae_header_id in (
7198 SELECT aeh.ae_header_id
7199 FROM xla_ae_headers aeh
7200 WHERE aeh.event_id = l_event_ids(i)
7201 AND aeh.application_id = 200
7202 AND aeh.gl_transfer_status_code <> 'Y');
7203
7204 l_log_msg :='After calling procedure AP_XLA_EVENTS_PKG.UPDATE_EVENT';
7205 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7206 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7207 G_MODULE_NAME || l_procedure_name,
7208 l_log_msg);
7209 END IF;
7210
7211 END LOOP;
7212
7213 if (p_period_name is null) then
7214 EXIT WHEN l_aph_events_cur_no_period%NOTFOUND;
7215 else
7216 EXIT WHEN l_aph_events_cur_period%NOTFOUND;
7217 end if;
7218
7219 END LOOP;
7220
7221 if (p_period_name is null) then
7222 CLOSE l_aph_events_cur_no_period;
7223 else
7224 CLOSE l_aph_events_cur_period;
7225 end if;
7226
7227 l_log_msg :='End of procedure '||l_procedure_name;
7228 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7229 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7230 G_MODULE_NAME || l_procedure_name,
7231 l_log_msg);
7232 END IF;
7233
7234 EXCEPTION
7235 WHEN OTHERS THEN
7236 IF (l_aid_events_cur%ISOPEN) THEN
7237 CLOSE l_aid_events_cur;
7238 END IF;
7239
7240 if (p_period_name is null) then
7241 IF (l_aph_events_cur_no_period%ISOPEN) THEN
7242 CLOSE l_aph_events_cur_no_period;
7243 END IF;
7244 else
7245 IF (l_aph_events_cur_period%ISOPEN) THEN
7246 CLOSE l_aph_events_cur_period;
7247 END IF;
7248 end if;
7249
7250 IF (SQLCODE <> -20001) THEN
7251 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
7252 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7253 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
7254 l_curr_calling_sequence);
7255 FND_MESSAGE.SET_TOKEN('PARAMETERS',
7256 'p_period_name = '||p_period_name
7257 ||', p_from_date = '||p_from_date
7258 ||', p_to_date = '||p_to_date
7259 ||', p_sweep_to_date = '||p_sweep_to_date);
7260 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
7261 END IF;
7262 APP_EXCEPTION.RAISE_EXCEPTION();
7263 END single_org_events_sweep;
7264
7265
7266 /*============================================================================
7267 | FUNCTION - GET_EVENT_CLASS(PRIVATE)
7268 |
7269 | DESCRIPTION
7270 | This procedure is used to get the event class of a particula event
7271 | type.
7272 |
7273 | PRAMETERS:
7274 | p_event_type: Event Type
7275 | p_calling_sequence: Debug information
7276 |
7277 | RETURN: VARCHAR2
7278 |
7279 | KNOWN ISSUES:
7280 |
7281 | NOTES:
7282 |
7283 | MODIFICATION HISTORY
7284 | Date Author Description of Change
7285 |
7286 *===========================================================================*/
7287 FUNCTION get_event_class(
7288 p_event_type IN VARCHAR2,
7289 p_calling_sequence IN VARCHAR2)
7290 RETURN VARCHAR2
7291 IS
7292
7293 l_curr_calling_sequence VARCHAR2(2000);
7294
7295 -- Logging:
7296 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_CLASS_CODE';
7297 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7298
7299 BEGIN
7300
7301 l_curr_calling_sequence :=
7302 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.GET_CLASS_CODE';
7303
7304 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7305
7306 l_log_msg :='Begin of procedure '||l_procedure_name;
7307 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7308 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7309 G_MODULE_NAME || l_procedure_name,
7310 l_log_msg);
7311 END IF;
7312
7313 IF ( p_event_type IN ( INVOICE_VALIDATED_TYPE,
7314 INVOICE_ADJUSTED_TYPE,
7315 INVOICE_CANCELLED_TYPE)) THEN
7316 RETURN INVOICES_CLASS;
7317 END IF;
7318
7319 IF ( p_event_type IN ( CREDIT_MEMO_VALIDATED_TYPE,
7320 CREDIT_MEMO_ADJUSTED_TYPE,
7321 CREDIT_MEMO_CANCELLED_TYPE)) THEN
7322 RETURN CREDIT_MEMOS_CLASS;
7323 END IF;
7324
7325 IF ( p_event_type IN ( DEBIT_MEMO_VALIDATED_TYPE,
7326 DEBIT_MEMO_ADJUSTED_TYPE,
7327 DEBIT_MEMO_CANCELLED_TYPE)) THEN
7328 RETURN DEBIT_MEMOS_CLASS;
7329 END IF;
7330
7331 IF ( p_event_type IN ( PREPAYMENT_VALIDATED_TYPE,
7332 PREPAYMENT_ADJUSTED_TYPE,
7333 PREPAYMENT_CANCELLED_TYPE)) THEN
7334 RETURN PREPAYMENTS_CLASS;
7335 END IF;
7336
7337 IF ( p_event_type IN ( PREPAYMENT_APPLIED_TYPE,
7338 PREPAYMENT_UNAPPLIED_TYPE,
7339 PREPAY_APP_ADJUSTED_TYPE)) THEN
7340 RETURN PREPAYMENT_APPLICATIONS_CLASS;
7341 END IF;
7342
7343 IF ( p_event_type IN ( PAYMENT_CREATED_TYPE,
7344 PAYMENT_CANCELLED_TYPE,
7345 MANUAL_PAYMENT_ADJUSTED_TYPE,
7346 PAYMENT_ADJUSTED_TYPE)) THEN
7347 RETURN PAYMENTS_CLASS;
7348 END IF;
7349 --bug 10336668
7350 IF ( p_event_type IN ( REFUND_RECORDED_TYPE,
7351 REFUND_CANCELLED_TYPE,
7352 REFUND_ADJUSTED_TYPE,
7353 MANUAL_REFUND_ADJUSTED_TYPE)) THEN
7354 RETURN REFUNDS_CLASS;
7355 END IF;
7356
7357 IF
7358 (
7359 p_event_type IN
7360 (
7361 PAYMENT_MATURED_TYPE,
7362 PAYMENT_MATURITY_REVERSED_TYPE,
7363 PAYMENT_MATURITY_ADJUSTED_TYPE
7364 )
7365 )
7366 THEN
7367 RETURN FUTURE_DATED_PAYMENTS_CLASS;
7368 END IF;
7369
7370 IF
7371 (
7372 p_event_type IN
7373 (
7374 PAYMENT_CLEARED_TYPE,
7375 PAYMENT_UNCLEARED_TYPE,
7376 PAYMENT_CLEARING_ADJUSTED_TYPE
7377 )
7378 )
7379 THEN
7380 RETURN RECONCILED_PAYMENTS_CLASS;
7381 END IF;
7382
7383
7384 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7385 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
7386 l_curr_calling_sequence);
7387 FND_MESSAGE.SET_TOKEN('PARAMETERS',
7388 'p_event_type = '||p_event_type );
7389 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
7390
7391 APP_EXCEPTION.RAISE_EXCEPTION();
7392 RETURN NULL; -- unreachable
7393
7394 END get_event_class;
7395
7396
7397 /*============================================================================
7398 | FUNCTION - GET_EVENT_SECURITY_CONTEXT(PRIVATE)
7399 |
7400 | DESCRIPTION
7401 | This function is used to get the event security context.
7402 |
7403 | PRAMETERS:
7404 | p_org_id: Organization ID
7405 | p_calling_sequence: Debug information
7406 |
7407 | RETURN: XLA_EVENTS_PUB_PKG.T_SECURITY
7408 |
7409 | KNOWN ISSUES:
7410 |
7411 | NOTES:
7412 |
7413 | MODIFICATION HISTORY
7414 | Date Author Description of Change
7415 |
7416 *===========================================================================*/
7417 FUNCTION get_event_security_context(
7418 p_org_id IN NUMBER,
7419 p_calling_sequence IN VARCHAR2)
7420 RETURN XLA_EVENTS_PUB_PKG.T_SECURITY
7421 IS
7422
7423 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
7424
7425 -- Logging:
7426 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_EVENT_SECURITY_CONTEXT';
7427 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7428
7429 BEGIN
7430
7431 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7432
7433 l_log_msg :='Begin of procedure '||l_procedure_name;
7434 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7435 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7436 G_MODULE_NAME || l_procedure_name,
7437 l_log_msg);
7438 END IF;
7439
7440 l_event_security_context.security_id_int_1 := p_org_id;
7441
7442 l_log_msg :='End of procedure '||l_procedure_name;
7443 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7444 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7445 G_MODULE_NAME || l_procedure_name,
7446 l_log_msg);
7447 END IF;
7448
7449 RETURN l_event_security_context;
7450
7451 END get_event_security_context;
7452
7453 /*============================================================================
7454 | FUNCTION - GET_INVOICE_EVENT_SOURCE_INFO(PRIVATE)
7455 |
7456 | DESCRIPTION
7457 | This function is used to get invoice event source information
7458 |
7459 | PRAMETERS:
7460 | p_legal_entity_id: Legal entity ID
7461 | p_ledger_id: Ledger ID
7462 | p_invoice_id: Invoice ID
7463 | p_calling_sequence: Debug information
7464 |
7465 | RETURN: XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO
7466 |
7467 | KNOWN ISSUES:
7468 |
7469 | NOTES:
7470 |
7471 | MODIFICATION HISTORY
7472 | Date Author Description of Change
7473 |
7474 *===========================================================================*/
7475 FUNCTION get_invoice_event_source_info(
7476 p_legal_entity_id IN NUMBER,
7477 p_ledger_id IN NUMBER,
7478 p_invoice_id IN NUMBER,
7479 p_calling_sequence IN VARCHAR2)
7480 RETURN XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO
7481 IS
7482
7483 l_invoice_num VARCHAR2(50);
7484 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
7485
7486 -- Logging:
7487 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_EVENT_SOURCE_INFO';
7488 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7489
7490 BEGIN
7491
7492 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7493
7494 l_log_msg :='Begin of procedure '||l_procedure_name;
7495 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7496 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7497 G_MODULE_NAME || l_procedure_name,
7498 l_log_msg);
7499 END IF;
7500
7501 select invoice_num
7502 into l_invoice_num
7503 from ap_invoices_all --bug6705052
7504 where invoice_id = p_invoice_id;
7505
7506 l_event_source_info.application_id := 200;
7507 l_event_source_info.legal_entity_id := p_legal_entity_id;
7508 l_event_source_info.ledger_id := p_ledger_id;
7509 l_event_source_info.entity_type_code := INVOICES_ENTITY;
7510 l_event_source_info.transaction_number := l_invoice_num;
7511 l_event_source_info.source_id_int_1 := p_invoice_id;
7512
7513 l_log_msg :='End of procedure '||l_procedure_name;
7514 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7515 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7516 G_MODULE_NAME || l_procedure_name,
7517 l_log_msg);
7518 END IF;
7519
7520 RETURN l_event_source_info;
7521
7522 END get_invoice_event_source_info;
7523
7524
7525 /*============================================================================
7526 | FUNCTION - GET_PAYMENT_EVENT_SOURCE_INFO(PRIVATE)
7527 |
7528 | DESCRIPTION
7529 | This procedure is used to get payment event source information.
7530 |
7531 | PRAMETERS:
7532 | p_legal_entity_id: Legal Entity ID
7533 | p_ledger_id: Ledger ID
7534 | p_invoice_id: Invoice ID
7535 | p_calling_sequence: Debug information
7536 |
7537 | RETURN: XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO
7538 |
7539 | KNOWN ISSUES:
7540 |
7541 | NOTES:
7542 |
7543 | MODIFICATION HISTORY
7544 | Date Author Description of Change
7545 |
7546 *===========================================================================*/
7547 FUNCTION get_payment_event_source_info(
7548 p_legal_entity_id IN NUMBER,
7549 p_ledger_id IN NUMBER,
7550 p_check_id IN NUMBER,
7551 p_calling_sequence IN VARCHAR2)
7552 RETURN XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO
7553 IS
7554
7555 l_check_number NUMBER(15);
7556 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
7557
7558 -- Logging:
7559 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_PAYMENT_EVENT_SOURCE_INFO';
7560 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7561
7562 BEGIN
7563
7564 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7565
7566 l_log_msg :='Begin of procedure '||l_procedure_name;
7567 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7568 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7569 G_MODULE_NAME || l_procedure_name,
7570 l_log_msg);
7571 END IF;
7572
7573 select check_number
7574 into l_check_number
7575 from ap_checks_all --bug6705052
7576 where check_id = p_check_id;
7577
7578 l_event_source_info.application_id := 200;
7579 l_event_source_info.legal_entity_id := p_legal_entity_id;
7580 l_event_source_info.ledger_id := p_ledger_id;
7581 l_event_source_info.entity_type_code := PAYMENTS_ENTITY;
7582 l_event_source_info.transaction_number := l_check_number;
7583 l_event_source_info.source_id_int_1 := p_check_id;
7584
7585 l_log_msg :='End of procedure '||l_procedure_name;
7586 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7587 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7588 G_MODULE_NAME || l_procedure_name,
7589 l_log_msg);
7590 END IF;
7591
7592 RETURN l_event_source_info;
7593
7594 END get_payment_event_source_info;
7595
7596
7597 /*============================================================================
7598 | PROCEDURE - GET_INVOICE_INFO(PRIVATE)
7599 |
7600 | DESCRIPTION
7601 | This procedure is used to get invoice information.
7602 |
7603 | PRAMETERS:
7604 | p_invoice_id: Invoice ID
7605 | p_org_id: Organization ID
7606 | p_legal_entity_id: Legal Entity ID
7607 | p_ledger_id: Ledger ID
7608 | p_transaction_date: Invoice date
7609 | p_calling_sequence: Debug information
7610 |
7611 | KNOWN ISSUES:
7612 |
7613 | NOTES:
7614 |
7615 | MODIFICATION HISTORY
7616 | Date Author Description of Change
7617 |
7618 *===========================================================================*/
7619 PROCEDURE get_invoice_info(
7620 p_invoice_id IN NUMBER,
7621 p_org_id OUT NOCOPY NUMBER,
7622 p_legal_entity_id OUT NOCOPY NUMBER,
7623 p_ledger_id OUT NOCOPY NUMBER,
7624 p_transaction_date OUT NOCOPY DATE,
7625 p_calling_sequence IN VARCHAR2)
7626 IS
7627
7628 l_curr_calling_sequence VARCHAR2(2000);
7629
7630 -- Logging:
7631 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_EVENT_SOURCE_INFO';
7632 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7633
7634 BEGIN
7635
7636 l_curr_calling_sequence :=
7637 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.GET_INVOICE_INFO';
7638
7639 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7640
7641 l_log_msg :='Begin of procedure '||l_procedure_name;
7642 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7643 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7644 G_MODULE_NAME || l_procedure_name,
7645 l_log_msg);
7646 END IF;
7647
7648 SELECT
7649 AI.org_id,
7650 AI.legal_entity_id,
7651 AI.set_of_books_id,
7652 AI.invoice_date
7653 INTO
7654 p_org_id,
7655 p_legal_entity_id,
7656 p_ledger_id,
7657 p_transaction_date
7658 FROM
7659 ap_invoices_all AI --bug6705052
7660 WHERE
7661 AI.invoice_id = p_invoice_id;
7662
7663 l_log_msg :='End of procedure '||l_procedure_name;
7664 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7665 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7666 G_MODULE_NAME || l_procedure_name,
7667 l_log_msg);
7668 END IF;
7669
7670 EXCEPTION
7671 WHEN OTHERS THEN
7672 IF (SQLCODE <> -20001) THEN
7673 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7674 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
7675 l_curr_calling_sequence);
7676 FND_MESSAGE.SET_TOKEN('PARAMETERS',
7677 'p_org_id = '||p_org_id);
7678 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
7679 END IF;
7680 APP_EXCEPTION.RAISE_EXCEPTION();
7681 END get_invoice_info;
7682
7683
7684 /*===========================================================================
7685 | PROCEDURE - GET_PAYMENT_INFO(PRIVATE)
7686 |
7687 | DESCRIPTION
7688 | This procedure is used to get payment information.
7689 |
7690 | PRAMETERS:
7691 | p_check_id: Check ID
7692 | p_org_id: Organization ID
7693 | p_legal_entity_id: Legal entity ID
7694 | p_ledger_id: Ledger ID
7695 | p_calling_sequence: Debug information
7696 |
7697 | KNOWN ISSUES:
7698 |
7699 | NOTES:
7700 |
7701 | MODIFICATION HISTORY
7702 | Date Author Description of Change
7703 |
7704 *==========================================================================*/
7705 PROCEDURE get_payment_info(
7706 p_check_id IN NUMBER,
7710 p_calling_sequence IN VARCHAR2)
7707 p_org_id OUT NOCOPY NUMBER,
7708 p_legal_entity_id OUT NOCOPY NUMBER,
7709 p_ledger_id OUT NOCOPY NUMBER,
7711 IS
7712
7713 l_curr_calling_sequence VARCHAR2(2000);
7714
7715 -- Logging:
7716 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_PAYMENT_INFO';
7717 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7718
7719 BEGIN
7720
7721 l_curr_calling_sequence :=
7722 p_calling_sequence || ' -> AP_ACCOUNTING_EVENTS_PKG.GET_PAYMENT_INFO';
7723
7724 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7725
7726 l_log_msg :='Begin of procedure '||l_procedure_name;
7727 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7728 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7729 G_MODULE_NAME || l_procedure_name,
7730 l_log_msg);
7731 END IF;
7732
7733 SELECT AC.org_id,
7734 AC.legal_entity_id,
7735 ASP.set_of_books_id
7736 INTO p_org_id,
7737 p_legal_entity_id,
7738 p_ledger_id
7739 FROM ap_checks_all AC, --bug6705052
7740 ap_system_parameters_all ASP --bug6705052
7741 WHERE AC.check_id = p_check_id
7742 AND nvl(AC.org_id,-99) = nvl(ASP.org_id,-99);
7743
7744 l_log_msg :='End of procedure '||l_procedure_name;
7745 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7746 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7747 G_MODULE_NAME || l_procedure_name,
7748 l_log_msg);
7749 END IF;
7750
7751 EXCEPTION
7752 WHEN OTHERS THEN
7753 IF (SQLCODE <> -20001) THEN
7754 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7755 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
7756 l_curr_calling_sequence);
7757 FND_MESSAGE.SET_TOKEN('PARAMETERS',
7758 'p_check_id = '||p_check_id);
7759 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
7760 END IF;
7761 APP_EXCEPTION.RAISE_EXCEPTION();
7762 END get_payment_info;
7763
7764
7765 -- Bug 4996808. Created this procedure to update the accounting_event_id on
7766 -- the prepay header and the prepayment appl dists since the header and dists
7767 -- are created during validation before the events are created.
7768 /*===========================================================================
7769 | PROCEDURE - UPDATE_PREPAYMENT_HEADER(PRIVATE)
7770 |
7771 | DESCRIPTION
7772 | This procedure is used to update prepayment header information
7773 |
7774 | PRAMETERS:
7775 | p_invoice_id: Invoice ID
7776 | p_invoice_line_number: Invoice Line Number
7777 | p_accounting_event_id: Accounting Event ID
7778 | p_calling_sequence: Debug information
7779 |
7780 *==========================================================================*/
7781 PROCEDURE Update_Prepayment_Header(
7782 p_invoice_id IN NUMBER,
7783 p_invoice_line_number IN NUMBER,
7784 p_accounting_event_id IN NUMBER,
7785 p_accounting_date IN DATE,
7786 p_transaction_type IN VARCHAR2,
7787 p_calling_sequence IN VARCHAR2)
7788 IS
7789
7790 l_curr_calling_sequence VARCHAR2(2000);
7791 TYPE l_prepay_hist_list IS TABLE OF ap_prepay_history.prepay_history_id%TYPE;
7792 l_prepay_hist_tab l_prepay_hist_list;
7793 l_related_prepay_app_event_id AP_PREPAY_HISTORY_ALL.related_prepay_app_event_id%TYPE;
7794
7795 -- Logging:
7796 l_procedure_name CONSTANT VARCHAR2(30) := 'Update_Prepayment_Header';
7797 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7798
7799 BEGIN
7800
7801 l_curr_calling_sequence := p_calling_sequence ||
7802 ' -> AP_ACCOUNTING_EVENTS_PKG.UPDATE_PREPAYMENT_HEADER';
7803
7804 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7805
7806 l_log_msg :='Begin of procedure '||l_procedure_name;
7807 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7808 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7809 G_MODULE_NAME || l_procedure_name,
7810 l_log_msg);
7811 END IF;
7812
7813 -- Bug 9553684, we are updating the Related_Prepay_App_Event_ID
7814 -- on the Prepayment Unapplication Distributions, when updating
7815 -- the Accounting Event ID
7816 --
7817 SELECT min(accounting_Event_id)
7818 INTO l_related_prepay_app_event_id
7819 FROM AP_Invoice_Distributions_All AID
7820 WHERE AID.line_type_lookup_code = 'PREPAY'
7821 AND nvl(AID.amount,0) < 0
7822 AND AID.invoice_id = P_invoice_id
7823 AND AID.invoice_line_number = P_invoice_line_number;
7824
7825
7826 UPDATE AP_Prepay_History APH
7827 SET Accounting_Event_ID = p_accounting_event_id,
7828 APH.Related_Prepay_App_Event_ID =
7829 CASE
7830 WHEN APH.transaction_type = 'PREPAYMENT UNAPPLIED' AND
7831 APH.related_prepay_app_event_id IS NULL THEN
7832 l_related_prepay_app_event_id
7833 ELSE
7834 APH.Related_Prepay_App_Event_ID
7835 END
7836 WHERE Invoice_ID = p_invoice_id
7837 AND Invoice_Line_Number = p_invoice_line_number
7838 AND Accounting_Date = p_accounting_date
7839 AND Transaction_Type = p_transaction_type
7840 AND Accounting_Event_ID IS NULL
7841 RETURNING Prepay_History_ID
7842 BULK COLLECT INTO l_prepay_hist_tab;
7843
7844
7845 IF l_prepay_hist_tab.count >0 THEN
7846
7847 FORALL i IN l_prepay_hist_tab.FIRST..l_prepay_hist_tab.LAST
7848 UPDATE AP_Prepay_App_Dists APAD
7849 SET Accounting_Event_ID = p_accounting_event_id
7850 WHERE Prepay_History_ID = l_prepay_hist_tab(i);
7851
7852 END IF;
7853
7854 l_log_msg :='End of procedure '||l_procedure_name;
7855
7856 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7857 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7858 G_MODULE_NAME || l_procedure_name,
7859 l_log_msg);
7860 END IF;
7861
7862 EXCEPTION
7863 WHEN OTHERS THEN
7864
7865 IF (SQLCODE <> -20001) THEN
7866 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
7867 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
7868 l_curr_calling_sequence);
7869 FND_MESSAGE.SET_TOKEN('PARAMETERS',
7870 'p_invoice_id = '||p_invoice_id);
7871 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
7872 END IF;
7873 APP_EXCEPTION.RAISE_EXCEPTION();
7874
7875 END Update_Prepayment_Header;
7876
7877
7878 /*===========================================================================
7879 | PROCEDURE - INSERT_PREPAYMENT_HEADER(PRIVATE)
7880 |
7881 | DESCRIPTION
7882 | This procedure is used to insert prepayment header information
7883 |
7884 | PRAMETERS:
7885 | p_invoice_id: Invoice ID
7886 | p_invoice_line_number: Invoice Line Number
7887 | p_accounting_event_id: Accounting Event ID
7888 | p_invoice_adjustment_id: Invoice Adjustment ID
7889 | p_calling_sequence: Debug information
7890 |
7891 | KNOWN ISSUES:
7892 |
7893 | NOTES:
7894 |
7895 | MODIFICATION HISTORY
7896 | Date Author Description of Change
7897 |
7898 *==========================================================================*/
7899 PROCEDURE Insert_Prepayment_Header(
7900 p_invoice_id IN NUMBER,
7901 p_invoice_line_number IN NUMBER,
7902 p_accounting_event_id IN NUMBER,
7903 p_accounting_date IN DATE,
7904 p_invoice_adjustment_id IN NUMBER,
7905 p_calling_sequence IN VARCHAR2)
7906 IS
7907
7908 l_curr_calling_sequence VARCHAR2(2000);
7909 l_sum_amount NUMBER;
7910 l_transaction_type VARCHAR2(30);
7911 l_prepay_invoice_id NUMBER;
7912 l_prepay_line_number NUMBER;
7913 l_org_id NUMBER;
7914 l_related_prepay_app_event_id NUMBER;
7915
7916 -- Logging:
7917 l_procedure_name CONSTANT VARCHAR2(30) := 'Insert_Prepayment_Header';
7918 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
7919
7920 --bugfix:4936043
7921 CURSOR prepayment_invoices IS
7922 SELECT AIL.amount,
7923 AIL.invoice_id,
7924 AIL.line_number,
7925 AIL.org_id
7926 FROM ap_invoice_lines AIL,
7927 ap_invoice_distributions AID,
7928 ap_invoice_distributions AID1
7929 WHERE AID.invoice_id = p_invoice_id
7930 AND AID.invoice_line_number = p_invoice_line_number
7931 AND AID.line_type_lookup_code = 'PREPAY'
7932 AND AID.prepay_distribution_id = AID1.invoice_distribution_id
7933 AND AIL.invoice_id = AID1.invoice_id
7934 AND AIL.line_number = AID1.invoice_line_number
7935 GROUP BY ail.invoice_id,ail.line_number,ail.org_id,ail.amount;
7936
7937
7938 BEGIN
7939
7940 l_curr_calling_sequence := p_calling_sequence ||
7941 ' -> AP_ACCOUNTING_EVENTS_PKG.INSERT_PREPAYMENT_HEADER';
7942
7943 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7944
7945 l_log_msg :='Begin of procedure '||l_procedure_name;
7946 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
7947 FND_LOG.STRING(G_LEVEL_PROCEDURE,
7948 G_MODULE_NAME || l_procedure_name,
7949 l_log_msg);
7950 END IF;
7951
7952 BEGIN
7953
7954 SELECT AIL.amount,
7955 AIL.prepay_invoice_id,
7956 AIL.prepay_line_number,
7957 AIL.org_id
7958 INTO l_sum_amount,
7959 l_prepay_invoice_id,
7960 l_prepay_line_number,
7961 l_org_id
7962 FROM ap_invoice_lines AIL
7963 WHERE AIL.invoice_id = P_invoice_id
7964 AND AIL.line_type_lookup_code = 'PREPAY'
7965 AND AIL.line_number = P_invoice_line_number;
7966
7967 --Bugfix:4936043
7968 --Complex Work: Recoupment
7969 --Added the following SQL for recoupment logic, as we do not have a parent 'PREPAY' line for the
7970 --'PREPAY' distributions. For recoupment we create the 'PREPAY' distributions tied to the ITEM line
7971 --itself.
7972 EXCEPTION WHEN NO_DATA_FOUND THEN
7973
7974 OPEN prepayment_invoices;
7975 LOOP
7976 FETCH prepayment_invoices into l_sum_amount,
7977 l_prepay_invoice_id,
7978 l_prepay_line_number,
7979 l_org_id;
7980
7981 EXIT WHEN prepayment_invoices%NOTFOUND;
7982
7983 BEGIN
7984
7985 SELECT min(accounting_Event_id)
7986 INTO l_related_prepay_app_event_id
7987 FROM AP_INVOICE_DISTRIBUTIONS AID
7988 WHERE AID.line_type_lookup_code = 'PREPAY'
7989 AND (nvl(posted_flag,'N') = 'Y' OR
7990 nvl(encumbered_flag, 'N') = 'Y') --bug9973070
7991 AND nvl(AID.amount,0) < 0
7992 AND AID.invoice_id = P_invoice_id
7993 AND AID.invoice_line_number = P_invoice_line_number;
7994
7995
7996 EXCEPTION
7997 WHEN NO_DATA_FOUND THEN
7998 l_related_prepay_app_event_id:= null;
7999 END;
8000
8001 IF P_invoice_adjustment_id is NOT NULL THEN
8002 l_transaction_type := PREPAY_APP_ADJUSTED_TYPE;
8003 ELSIF l_sum_Amount <= 0 THEN
8004 l_transaction_type := PREPAYMENT_APPLIED_TYPE;
8005 ELSE
8006 l_transaction_type := PREPAYMENT_UNAPPLIED_TYPE;
8007 END IF;
8008
8009 INSERT INTO AP_PREPAY_HISTORY_ALL
8010 ( PREPAY_HISTORY_ID
8011 ,PREPAY_INVOICE_ID
8012 ,PREPAY_LINE_NUM
8013 ,ACCOUNTING_EVENT_ID
8014 ,HISTORICAL_FLAG
8015 ,INVOICE_ID
8016 ,INVOICE_LINE_NUMBER
8017 ,ACCOUNTING_DATE
8018 ,INVOICE_ADJUSTMENT_EVENT_ID
8019 ,ORG_ID
8020 ,POSTED_FLAG
8021 ,RELATED_PREPAY_APP_EVENT_ID
8022 ,TRANSACTION_TYPE
8023 ,LAST_UPDATED_BY
8024 ,LAST_UPDATE_DATE
8025 ,LAST_UPDATE_LOGIN
8026 ,CREATED_BY
8027 ,CREATION_DATE
8028 ,PROGRAM_APPLICATION_ID
8029 ,PROGRAM_ID
8030 ,PROGRAM_UPDATE_DATE
8031 ,REQUEST_ID)
8032 VALUES
8033 (AP_PREPAY_HISTORY_S.nextval
8034 ,l_prepay_invoice_id
8035 ,l_prepay_line_number
8036 ,p_Accounting_event_id
8037 ,'N'
8038 ,P_INVOICE_ID
8039 ,p_invoice_line_number
8040 ,p_accounting_date
8041 ,p_invoice_adjustment_id
8042 ,l_org_id
8043 ,'N'
8044 ,l_related_prepay_app_event_id
8045 ,L_TRANSACTION_TYPE
8046 ,FND_GLOBAL.user_id
8047 ,sysdate
8048 ,FND_GLOBAL.login_id
8049 ,FND_GLOBAL.user_id
8050 ,sysdate
8051 ,null
8052 ,null
8053 ,null
8054 ,null);
8055
8056 END LOOP;
8057
8058 CLOSE prepayment_invoices;
8059
8060 l_log_msg :='End of procedure '||l_procedure_name;
8061
8062 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8063 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8064 G_MODULE_NAME || l_procedure_name,
8065 l_log_msg);
8066 END IF;
8067
8068 RETURN;
8069
8070 END;
8071
8072
8073 BEGIN
8074
8075 SELECT min(accounting_Event_id)
8076 INTO l_related_prepay_app_event_id
8077 FROM AP_INVOICE_DISTRIBUTIONS AID
8078 WHERE AID.line_type_lookup_code = 'PREPAY'
8079 AND (nvl(posted_flag,'N') = 'Y' OR
8080 nvl(encumbered_flag, 'N') = 'Y') --bug9973070
8081 AND nvl(AID.amount,0) < 0
8082 AND AID.invoice_id = P_invoice_id
8083 AND AID.invoice_line_number = P_invoice_line_number;
8084
8085
8086 EXCEPTION
8087 WHEN NO_DATA_FOUND THEN
8088 l_related_prepay_app_event_id:= null;
8089
8090 END;
8091
8092 IF P_invoice_adjustment_id is NOT NULL THEN
8093 l_transaction_type := PREPAY_APP_ADJUSTED_TYPE;
8094
8095 ELSIF l_sum_Amount <= 0 THEN
8096 l_transaction_type := PREPAYMENT_APPLIED_TYPE;
8097 ELSE
8098 l_transaction_type := PREPAYMENT_UNAPPLIED_TYPE;
8099 END IF;
8100
8101 INSERT INTO AP_PREPAY_HISTORY_ALL
8102 ( PREPAY_HISTORY_ID
8103 ,PREPAY_INVOICE_ID
8104 ,PREPAY_LINE_NUM
8105 ,ACCOUNTING_EVENT_ID
8106 ,ACCOUNTING_DATE
8107 ,HISTORICAL_FLAG
8108 ,INVOICE_ID
8109 ,INVOICE_ADJUSTMENT_EVENT_ID
8110 ,ORG_ID
8111 ,POSTED_FLAG
8112 ,RELATED_PREPAY_APP_EVENT_ID
8113 ,TRANSACTION_TYPE
8114 ,LAST_UPDATED_BY
8115 ,LAST_UPDATE_DATE
8116 ,LAST_UPDATE_LOGIN
8117 ,CREATED_BY
8118 ,CREATION_DATE
8119 ,PROGRAM_APPLICATION_ID
8120 ,PROGRAM_ID
8121 ,PROGRAM_UPDATE_DATE
8122 ,REQUEST_ID)
8123 VALUES
8124 (AP_PREPAY_HISTORY_S.nextval
8125 ,l_prepay_invoice_id
8126 ,l_prepay_line_number
8127 ,p_Accounting_event_id
8128 ,p_accounting_date
8129 ,'N'
8130 ,P_INVOICE_ID
8131 ,p_invoice_adjustment_id
8132 ,l_org_id
8133 ,'N'
8134 ,l_related_prepay_app_event_id
8135 ,L_TRANSACTION_TYPE
8136 ,FND_GLOBAL.user_id
8137 ,sysdate
8138 ,FND_GLOBAL.login_id
8139 ,FND_GLOBAL.user_id
8140 ,sysdate
8141 ,null
8142 ,null
8143 ,null
8144 ,null);
8145
8146 l_log_msg :='End of procedure '||l_procedure_name;
8147
8148 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8149 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8150 G_MODULE_NAME || l_procedure_name,
8151 l_log_msg);
8152 END IF;
8153
8154 EXCEPTION
8155 WHEN OTHERS THEN
8156
8157 IF (SQLCODE <> -20001) THEN
8158 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
8159 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
8160 l_curr_calling_sequence);
8161 FND_MESSAGE.SET_TOKEN('PARAMETERS',
8162 'p_invoice_id = '||p_invoice_id);
8163 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
8164 END IF;
8165 APP_EXCEPTION.RAISE_EXCEPTION();
8166
8167 END Insert_Prepayment_Header;
8168
8169 -- PROCEDURE added for the bug9322013
8170 --
8171 PROCEDURE Set_Prepay_Event_Noaction
8172 (p_invoice_id IN NUMBER,
8173 p_calling_sequence IN VARCHAR2) IS
8174
8175 CURSOR reversed_prepay_events IS
8176 SELECT DISTINCT aid.invoice_id,
8177 aid.accounting_event_id
8178 FROM ap_invoice_distributions_all aid,
8179 ap_invoices_all ai
8180 WHERE ai.invoice_id = p_invoice_id
8181 AND aid.invoice_id = ai.invoice_id
8182 --AND ai.cancelled_date IS NOT NULL --bug9441420
8183 AND aid.line_type_lookup_code IN ('PREPAY','REC_TAX','NONREC_TAX')
8184 AND aid.prepay_distribution_id IS NOT NULL
8185 AND aid.accounting_event_id IS NOT NULL
8186 AND NVL(aid.posted_flag, 'N') <> 'Y'
8187 AND NVL(aid.reversal_flag, 'N') = 'Y'
8188 AND EXISTS
8189 (SELECT 1
8190 FROM ap_invoice_distributions_all aid1
8191 WHERE aid1.invoice_id = aid.invoice_id
8192 AND aid1.line_type_lookup_code IN ('PREPAY','REC_TAX','NONREC_TAX')
8193 AND aid1.prepay_distribution_id IS NOT NULL
8194 AND aid1.accounting_event_id IS NOT NULL
8195 AND NVL(aid1.posted_flag, 'N') <> 'Y'
8196 AND NVL(aid1.reversal_flag, 'N') = 'Y'
8197 AND aid.invoice_distribution_id <> aid1.invoice_distribution_id /* Bug 10196007 */
8198 AND NVL(aid1.parent_reversal_id, aid1.invoice_distribution_id) =
8199 NVL(aid.parent_reversal_id, aid.invoice_distribution_id))
8200 AND ((ai.cancelled_date IS NOT NULL AND
8201 NOT EXISTS
8202 (SELECT 1
8203 FROM ap_invoice_distributions_all aid1
8204 WHERE aid1.invoice_id = ai.invoice_id
8205 AND aid1.prepay_distribution_id IS NULL
8206 )
8207 ) OR --bug9441420 added OR clause
8208 (NOT EXISTS
8209 (SELECT 1
8210 FROM ap_invoice_payments_all aip,
8211 ap_invoice_distributions_all aid_prepay
8212 WHERE aip.invoice_id = aid_prepay.invoice_id
8213 AND aid_prepay.invoice_distribution_id = aid.prepay_distribution_id
8214 AND nvl(aip.reversal_flag, 'N') = 'N'
8215 ))
8216 )
8217 /* RCA bug 14120800*/
8218 UNION
8219 SELECT app_aid.invoice_id,
8220 unapp_aid.accounting_Event_id unapp_event_id
8221 FROM ap_invoice_distributions_all app_aid,
8222 xla_events xe_app,
8223 ap_invoices_all ai,
8224 ap_invoice_distributions_all unapp_aid,
8225 xla_events xe_unapp
8226 WHERE ai.invoice_id = p_invoice_id
8227 AND app_aid.prepay_distribution_id IS NOT NULL
8228 AND app_aid.accounting_event_id = xe_app.event_id
8229 AND xe_app.application_id = 200
8230 AND xe_app.event_type_code = 'PREPAYMENT APPLIED'
8231 AND xe_app.event_status_code = 'N'
8232 AND unapp_aid.invoice_id = app_aid.invoice_id
8233 AND unapp_aid.prepay_distribution_id IS NOT NULL
8234 AND unapp_aid.parent_reversal_id IS NOT NULL
8235 AND app_aid.invoice_distribution_id = unapp_aid.parent_reversal_id
8236 AND unapp_aid.accounting_event_id = xe_unapp.event_id
8237 AND xe_unapp.event_type_code = 'PREPAYMENT UNAPPLIED'
8238 AND xe_unapp.application_id = 200
8239 AND xe_unapp.event_status_code = 'U'
8240 AND app_aid.invoice_id = ai.invoice_id;
8241
8242 l_org_id AP_INVOICES_ALL.org_id%TYPE;
8243 l_legal_entity_id AP_INVOICES_ALL.legal_entity_id%TYPE;
8244 l_ledger_id AP_INVOICES_ALL.set_of_books_id%TYPE;
8245 l_transaction_date DATE;
8246 l_curr_calling_sequence VARCHAR2(4000);
8247 l_event_source_info XLA_EVENTS_PUB_PKG.T_EVENT_SOURCE_INFO;
8248 l_invoice_id AP_INVOICES_ALL.invoice_id%TYPE;
8249 l_accounting_event_id XLA_EVENTS.event_id%TYPE;
8250 l_event_security_context XLA_EVENTS_PUB_PKG.T_SECURITY;
8251 l_log_msg FND_LOG_MESSAGES.MESSAGE_TEXT%TYPE;
8252
8253 l_procedure_name CONSTANT VARCHAR2(30) := 'Set_Prepay_Event_Noaction';
8254
8255 BEGIN
8256
8257 l_curr_calling_sequence :=
8258 'Set_Prepay_Event_Noaction <- '||p_calling_sequence;
8259
8260 G_CURRENT_RUNTIME_LEVEL := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
8261
8262 l_log_msg := 'Begin of procedure '|| l_procedure_name;
8263 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8264 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8265 G_MODULE_NAME||l_procedure_name||'.begin',
8266 l_log_msg);
8267 END IF;
8268
8269 l_log_msg := 'Before calling procedure get_invoice_info';
8270 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8271 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8272 G_MODULE_NAME || l_procedure_name,
8273 l_log_msg);
8274 END IF;
8275
8276 AP_ACCOUNTING_EVENTS_PKG.get_invoice_info
8277 (p_invoice_id => p_invoice_id,
8278 p_org_id => l_org_id, -- OUT
8279 p_legal_entity_id => l_legal_entity_id, -- OUT
8280 p_ledger_id => l_ledger_id, -- OUT
8281 p_transaction_date => l_transaction_date, -- OUT
8282 p_calling_sequence => l_curr_calling_sequence);
8283
8284 l_log_msg := 'After calling procedure get_insert_info executed';
8285 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8286 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8287 G_MODULE_NAME || l_procedure_name,
8288 l_log_msg);
8289 END IF;
8290
8291 l_log_msg :='Before calling proc get_event_security_context';
8292 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8293 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8294 G_MODULE_NAME || l_procedure_name,
8295 l_log_msg);
8296 END IF;
8297
8298 l_event_security_context :=
8299 AP_ACCOUNTING_EVENTS_PKG.get_event_security_context
8300 (p_org_id => l_org_id,
8301 p_calling_sequence => l_curr_calling_sequence);
8302
8303 l_log_msg := 'After calling proc get_event_security_context';
8304 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8305 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8306 G_MODULE_NAME || l_procedure_name,
8307 l_log_msg);
8308 END IF;
8309
8310 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8311 l_log_msg := 'Before calling proc get_invoice_event_source_info';
8312 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8313 G_MODULE_NAME || l_procedure_name,
8314 l_log_msg);
8315 END IF;
8316
8317 l_event_source_info :=
8318 AP_ACCOUNTING_EVENTS_PKG.get_invoice_event_source_info
8319 (p_legal_entity_id => l_legal_entity_id,
8320 p_ledger_id => l_ledger_id,
8321 p_invoice_id => p_invoice_id,
8322 p_calling_sequence => l_curr_calling_sequence);
8323
8324 l_log_msg := 'After calling proc get_invoice_envent_source_info';
8325 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8326 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8327 G_MODULE_NAME || l_procedure_name,
8328 l_log_msg);
8329 END IF;
8330
8331 OPEN reversed_prepay_events;
8332 LOOP
8333 FETCH reversed_prepay_events
8334 INTO l_invoice_id, l_accounting_event_id;
8335
8336 EXIT WHEN reversed_prepay_events%NOTFOUND;
8337
8338
8339 l_log_msg := 'Calling the Update event api for accounting event'||
8340 l_accounting_event_id;
8341 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8342 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8343 G_MODULE_NAME || l_procedure_name,
8344 l_log_msg);
8345 END IF;
8346
8347 AP_XLA_EVENTS_PKG.UPDATE_EVENT
8348 (p_event_source_info => l_event_source_info,
8349 p_event_id => l_accounting_event_id,
8350 p_event_type_code => NULL,
8351 p_event_date => NULL,
8352 p_event_status_code => XLA_EVENTS_PUB_PKG.C_EVENT_NOACTION,
8353 p_valuation_method => NULL,
8354 p_security_context => l_event_security_context,
8355 p_calling_sequence => l_curr_calling_sequence);
8356
8357 l_log_msg := 'After Calling the Update event api for accounting event'||
8358 l_accounting_event_id;
8359 IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL ) THEN
8360 FND_LOG.STRING(G_LEVEL_PROCEDURE,
8361 G_MODULE_NAME || l_procedure_name,
8362 l_log_msg);
8363 END IF;
8364
8365
8366 END LOOP;
8367 CLOSE reversed_prepay_events;
8368
8369 EXCEPTION
8370 WHEN OTHERS THEN
8371
8372 --bug11655195 start
8373 IF (reversed_prepay_events%ISOPEN) THEN
8374 CLOSE reversed_prepay_events ;
8375 END IF;
8376 --bug11655195 end
8377
8378 IF (SQLCODE <> -20001) THEN
8379 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
8380 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE',
8381 l_curr_calling_sequence);
8382 FND_MESSAGE.SET_TOKEN('PARAMETERS',
8383 'p_invoice_id = '||p_invoice_id);
8384 FND_MESSAGE.SET_TOKEN('DEBUG_INFO',l_log_msg);
8385 END IF;
8386 APP_EXCEPTION.RAISE_EXCEPTION();
8387
8388 END;
8389
8390 END AP_ACCOUNTING_EVENTS_PKG;