[Home] [Help]
PACKAGE BODY: APPS.RCV_CREATEACCOUNTING_PVT
Source
1 PACKAGE BODY RCV_CreateAccounting_PVT AS
2 /* $Header: RCVVACCB.pls 120.11.12010000.5 2008/11/26 00:16:52 mpuranik ship $*/
3 G_PKG_NAME CONSTANT VARCHAR2(30) := 'RCV_CreateAccounting_PVT';
4 G_GL_APPLICATION_ID CONSTANT NUMBER := 101;
5 G_PO_APPLICATION_ID CONSTANT NUMBER := 201;
6 G_CST_APPLICATION_ID CONSTANT NUMBER := 707;
7
8 G_DEBUG CONSTANT VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
9 G_LOG_HEAD CONSTANT VARCHAR2(40) := 'po.plsql.'||G_PKG_NAME;
10
11 -- Accounting Line Types
12 ACCRUAL CONSTANT VARCHAR2(30) := 'Accrual';
13 RECEIVING_INSPECTION CONSTANT VARCHAR2(30) := 'Receiving Inspection';
14 CLEARING CONSTANT VARCHAR2(30) := 'Clearing';
15 IC_ACCRUAL CONSTANT VARCHAR2(30) := 'IC Accrual';
16 CHARGE CONSTANT VARCHAR2(30) := 'Charge';
17 IC_COST_OF_SALES CONSTANT VARCHAR2(30) := 'IC Cost of Sales';
18 RETROPRICE_ADJUSTMENT CONSTANT VARCHAR2(30) := 'Retroprice Adjustment';
19 ENCUMBRANCE_REVERSAL CONSTANT VARCHAR2(30) := 'Encumbrance Reversal';
20 /* Support for Landed Cost Management */
21 LC_ABSORPTION CONSTANT VARCHAR2(30) := 'Landed Cost Absorption';
22
23 ----------------------------------------------------------------------------------
24 -- API Name : Get_GLInformation
25 -- Type : Private
26 -- Function : The Function returns information from GL tables
27 -- into a structure of type RCV_AE_GLINFO_REC_TYPE. This
28 -- information is generated for each event since events
29 -- could possibly be in different Operating Units, Sets of Books
30 -- Parameters :
31 -- IN : p_event_date: Event Date
32 -- p_event_doc_num : Document Number for the Event (PO Number)
33 -- p_event_type_id : Event Type ID (RCV_SeedEvents_PVT lists
34 -- all such events
35 -- p_set_of_books_id:Set of Books ID
36 -- OUT :
37 ----------------------------------------------------------------------------------
38 PROCEDURE Get_GLInformation(
39 p_api_version IN NUMBER,
40 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
41 p_commit IN VARCHAR2 := FND_API.G_FALSE,
42 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
43 x_return_status OUT NOCOPY VARCHAR2,
44 x_msg_count OUT NOCOPY NUMBER,
45 x_msg_data OUT NOCOPY VARCHAR2,
46 p_event_date IN DATE,
47 p_event_doc_num IN VARCHAR2,
48 p_event_type_id IN NUMBER,
49 p_set_of_books_id IN NUMBER,
50 x_gl_information OUT NOCOPY RCV_AE_GLINFO_REC_TYPE
51 ) IS
52
53 l_gl_installed BOOLEAN := FALSE;
54
55 /* Get GL Install Status */
56 l_status varchar2(1);
57 l_industry varchar2(1);
58 l_oracle_schema varchar2(30);
59
60 l_api_name varchar2(30) := 'Get_GLInformation';
61 l_api_version number := 1.0;
62
63 l_stmt_num NUMBER;
64 l_api_message VARCHAR2(1000);
65
66
67 l_batch_id NUMBER;
68
69 -- Exceptions
70 NO_GL_PERIOD EXCEPTION;
71 NO_PO_PERIOD EXCEPTION;
72
73 BEGIN
74 IF G_DEBUG = 'Y' THEN
75 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
76 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,G_LOG_HEAD || '.'||l_api_name||'.begin' ,'Get_GLInformation <<');
77 END IF;
78 END IF;
79 -- Standard call to check for call compatibility
80 IF NOT FND_API.Compatible_API_Call (
81 l_api_version,
82 p_api_version,
83 l_api_name,
84 G_PKG_NAME ) THEN
85 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
86 END IF;
87
88 -- Initialize message list
89 l_stmt_num := 10;
90
91 IF FND_API.to_boolean( p_init_msg_list ) THEN
92 FND_MSG_PUB.initialize;
93 END IF;
94
95 -- Initialize API return status to success
96 x_return_status := FND_API.G_RET_STS_SUCCESS;
97
98 -- Find if GL is installed
99 l_stmt_num := 20;
100 l_gl_installed := FND_INSTALLATION.GET_APP_INFO ('SQLGL',
101 l_status,
102 l_industry,
103 l_oracle_schema);
104 -- Set Application_ID and Open Period Name depending on Install Status
105 IF ( l_status = 'I' ) THEN
106 x_gl_information.application_id := G_GL_APPLICATION_ID;
107
108 l_stmt_num := 30;
109
110 BEGIN
111 SELECT GL_PER.period_name
112 INTO x_gl_information.period_name
113 FROM gl_period_statuses GL_PER,
114 gl_period_statuses PO_PER
115 WHERE PO_PER.application_id = G_PO_APPLICATION_ID
116 AND PO_PER.set_of_books_id = p_set_of_books_id
117 AND trunc(PO_PER.start_date) <= trunc(p_event_date)
118 AND trunc(PO_PER.end_date) >= trunc(p_event_date)
119 AND PO_PER.closing_status = 'O'
120 AND PO_PER.period_name = GL_PER.period_name
121 AND GL_PER.set_of_books_id = p_set_of_books_id
122 AND GL_PER.application_id = G_GL_APPLICATION_ID
123 AND trunc(GL_PER.start_date) <= trunc(p_event_date)
124 AND trunc(GL_PER.end_date) >= trunc(p_event_date)
125 AND GL_PER.closing_status in ('O', 'F')
126 AND GL_PER.adjustment_period_flag <> 'Y';
127 EXCEPTION
128 WHEN NO_DATA_FOUND THEN
129 RAISE NO_GL_PERIOD;
130 END;
131
132 ELSE
133 x_gl_information.application_id := G_PO_APPLICATION_ID;
134
135 l_stmt_num := 40;
136 BEGIN
137 SELECT period_name
138 INTO x_gl_information.period_name
139 FROM gl_period_statuses
140 WHERE application_id = G_PO_APPLICATION_ID
141 AND set_of_books_id = p_set_of_books_id
142 AND trunc(start_date) <= trunc(p_event_date)
143 AND trunc(end_date) >= trunc(p_event_date)
144 AND closing_status = 'O'
145 AND adjustment_period_flag <> 'Y';
146 EXCEPTION
147 WHEN NO_DATA_FOUND THEN
148 RAISE NO_PO_PERIOD;
149 END;
150
151 END IF;
152
153 -- Get the currency and account information from GL tables and views
154 l_stmt_num := 50;
155
156 SELECT p_set_of_books_id,
157 nvl(chart_of_accounts_id, 0),
158 currency_code
159 INTO x_gl_information.set_of_books_id,
160 x_gl_information.chart_of_accounts_id,
161 x_gl_information.currency_code
162 FROM GL_SETS_OF_BOOKS
163 WHERE set_of_books_id = p_set_of_books_id;
164
165 -- User GL Source Name and Category
166 l_stmt_num := 60;
167
168 SELECT user_je_category_name
169 INTO x_gl_information.user_je_category_name
170 FROM GL_JE_CATEGORIES
171 WHERE je_category_name = 'Receiving';
172
173 l_stmt_num := 70;
174 SELECT user_je_source_name
175 INTO x_gl_information.user_je_source_name
176 FROM GL_JE_SOURCES
177 WHERE je_source_name = 'Purchasing';
178
179
180 -- Get Message count and if 1, return message data
181 l_stmt_num := 80;
182
183 FND_MSG_PUB.Count_And_Get
184 ( p_count => x_msg_count,
185 p_data => x_msg_data
186 );
187 IF G_DEBUG = 'Y' THEN
188 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
189 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,G_LOG_HEAD || '.'||l_api_name||'.end' ,'Get_GLInformation <<');
190 END IF;
191 END IF;
192
193 EXCEPTION
194 WHEN NO_GL_PERIOD THEN
195 IF G_DEBUG = 'Y' THEN
196 IF (FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
197 l_api_message := 'GL Period is not open';
198 FND_LOG.string(FND_LOG.LEVEL_ERROR,G_LOG_HEAD || '.'||l_api_name||l_stmt_num
199 ,'Get_GLInformation : '||l_stmt_num||' : '||l_api_message);
200 END IF;
201 END IF;
202 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
203 FND_MSG_PUB.Add_Exc_Msg(
204 p_pkg_name => G_PKG_NAME,
205 p_procedure_name => l_api_name,
206 p_error_text => 'Error at: '||
207 to_char(l_stmt_num) || ' '||
208 'No Open GL Period Found '||
209 SQLERRM
210 );
211
212 END IF;
213 FND_MSG_PUB.count_and_get
214 ( p_count => x_msg_count
215 , p_data => x_msg_data
216 );
217 x_return_status := FND_API.G_RET_STS_ERROR;
218
219 WHEN NO_PO_PERIOD THEN
220 IF G_DEBUG = 'Y' THEN
221 IF (FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
222 l_api_message := 'PO Period is not open';
223 FND_LOG.string(FND_LOG.LEVEL_ERROR,G_LOG_HEAD || '.'||l_api_name||l_stmt_num
224 ,'Get_GLInformation : '||l_stmt_num||' : '||l_api_message);
225 END IF;
226 END IF;
227
228 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
229 FND_MSG_PUB.Add_Exc_Msg(
230 p_pkg_name => G_PKG_NAME,
231 p_procedure_name => l_api_name,
232 p_error_text => 'Error at: '||
233 to_char(l_stmt_num) || ' '||
234 'No Open PO Period Found '||
235 SQLERRM
236 );
237
238 END IF;
239 FND_MSG_PUB.count_and_get
240 ( p_count => x_msg_count
241 , p_data => x_msg_data
242 );
243 x_return_status := FND_API.G_RET_STS_ERROR;
244
245 WHEN OTHERS THEN
246 IF G_DEBUG = 'Y' THEN
247 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
248 l_api_message := 'Unexpected Error';
249 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD || '.'||l_api_name||l_stmt_num
250 ,'Get_GLInformation : '||l_stmt_num||' : '||l_api_message);
251 END IF;
252 END IF;
253
254 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
255 FND_MSG_PUB.Add_Exc_Msg(
256 p_pkg_name => G_PKG_NAME,
257 p_procedure_name => l_api_name,
258 p_error_text => 'Error at: '||
259 to_char(l_stmt_num) || ' '||
260 SQLERRM
261 );
262
263 END IF;
264 FND_MSG_PUB.count_and_get
265 ( p_count => x_msg_count
266 , p_data => x_msg_data
267 );
268 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
269
270 END Get_GLInformation;
271
272
273 ----------------------------------------------------------------------------------
274 -- API Name : Insert_SubLedgerLines
275 -- Type : Private
276 -- Function : The API inserts an entry in RCV_RECEIVING_SUB_LEDGER
277 -- depending on information passed in P_RCV_AE_LINE and
278 -- P_GLINFO structures
279 -- Parameters :
280 -- IN : P_RCV_AE_LINE : Structure containing the accounting information
281 -- (Credit/Debit) for an event
282 -- P_GLINFO : Structure containing the GL Information
283 -- for the event
284 -- OUT :
285 ----------------------------------------------------------------------------------
286
287 PROCEDURE Insert_SubLedgerLines(
288 p_api_version IN NUMBER,
289 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
290 p_commit IN VARCHAR2 := FND_API.G_FALSE,
291 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
292 x_return_status OUT NOCOPY VARCHAR2,
293 x_msg_count OUT NOCOPY NUMBER,
294 x_msg_data OUT NOCOPY VARCHAR2,
295 p_rcv_ae_line IN RCV_AE_REC_TYPE,
296 p_glinfo IN RCV_AE_GLINFO_REC_TYPE
297 ) IS
298
299 L_USER_CURR_CONV_TYPE VARCHAR2(30);
300
301 l_stmt_num NUMBER;
302 l_api_message VARCHAR2(1000);
303
304 l_api_name CONSTANT VARCHAR2(30) := 'Insert_SubLedgerLines';
305 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
306 l_msg_count NUMBER := 0;
307 l_msg_data VARCHAR2(8000) := '';
308
309 l_rcv_sub_ledger_id NUMBER;
310
311 /* Support for Landed Cost Management */
312 L_ACT_DR NUMBER;
313 L_ACT_CR NUMBER;
314 L_ENT_DR NUMBER;
315 L_ENT_CR NUMBER;
316
317 -- Timezone
318 l_accounting_date DATE;
319 l_legal_entity NUMBER;
320
321 NO_GL_CONV_TYP_DEFINED EXCEPTION;
322 INSERT_RRSL_ERROR EXCEPTION;
323
324 BEGIN
325 -- Initialize message list
326 l_stmt_num := 10;
327
328 IF FND_API.to_boolean( p_init_msg_list ) THEN
329 FND_MSG_PUB.initialize;
330 END IF;
331
332 -- Initialize API return status to success
333 x_return_status := FND_API.G_RET_STS_SUCCESS;
334
335 -- USER_CURRENCY_CONV_TYPE
336 BEGIN
337 l_stmt_num := 20;
338
339 SELECT user_conversion_type
340 INTO L_USER_CURR_CONV_TYPE
341 FROM RCV_ACCOUNTING_EVENTS RAE,
342 gl_daily_conversion_types GLCT
343 WHERE RAE.CURRENCY_CONVERSION_TYPE = GLCT.conversion_type
344 AND RAE.ACCOUNTING_EVENT_ID = p_rcv_ae_line.accounting_event_id;
345 EXCEPTION
346 WHEN NO_DATA_FOUND THEN
347 L_USER_CURR_CONV_TYPE := NULL;
348 END;
349
350 -- Timezone Changes
351 -- Accounting_Date should be in Legal Entity Zone
352
353 -- Get the Legal Entity
354 l_stmt_num := 25;
355
356 SELECT LEGAL_ENTITY
357 INTO l_legal_entity
358 FROM CST_ACCT_INFO_V
359 WHERE ORGANIZATION_ID = p_rcv_ae_line.organization_id;
360
361 -- Convert the event_date to Legal Entity time zome
362 l_stmt_num := 27;
363
364 l_accounting_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_For_Server (
365 p_trxn_date => p_rcv_ae_line.transaction_date,
366 p_le_id => l_legal_entity );
367
368
369 -- Insert into SubLedger.
370 -- We insert into the table depending on whether the code_combination_id
371 -- is NULL or not
372 -- Notes
373 -- Source_Doc_Quantity is same as Primary Quantity on the Event since
374 -- events are created for every distribution.
375
376 -- REFERENCE1, Doc Type is always "PO"
377
378 IF ( P_RCV_AE_LINE.DEBIT_ACCOUNT IS NOT NULL ) THEN
379 -- Insert Debit Entry
380 BEGIN
381 l_stmt_num := 30;
382
383 INSERT INTO RCV_RECEIVING_SUB_LEDGER (
384 RCV_SUB_LEDGER_ID,
385 ACCOUNTING_EVENT_ID,
386 ACCOUNTING_LINE_TYPE,
387 LAST_UPDATE_DATE,
388 LAST_UPDATED_BY,
389 CREATION_DATE,
390 CREATED_BY,
391 LAST_UPDATE_LOGIN,
392 RCV_TRANSACTION_ID,
393 ACTUAL_FLAG,
394 JE_SOURCE_NAME,
395 JE_CATEGORY_NAME,
396 ACCOUNTING_DATE,
397 CODE_COMBINATION_ID,
398 ACCOUNTED_DR,
399 ACCOUNTED_CR,
400 ENTERED_DR,
401 ENTERED_CR,
402 CURRENCY_CODE,
403 CURRENCY_CONVERSION_DATE,
404 USER_CURRENCY_CONVERSION_TYPE,
405 CURRENCY_CONVERSION_RATE,
406 TRANSACTION_DATE,
407 PERIOD_NAME,
408 CHART_OF_ACCOUNTS_ID,
409 FUNCTIONAL_CURRENCY_CODE,
410 SET_OF_BOOKS_ID,
411 ENCUMBRANCE_TYPE_ID,
412 REFERENCE1,
413 REFERENCE2,
414 REFERENCE3,
415 REFERENCE4,
416 SOURCE_DOC_QUANTITY,
417 ACCRUAL_METHOD_FLAG,
418 ENTERED_REC_TAX,
419 ENTERED_NR_TAX,
420 ACCOUNTED_REC_TAX,
421 ACCOUNTED_NR_TAX,
422 USSGL_TRANSACTION_CODE,
423 REQUEST_ID,
424 PROGRAM_APPLICATION_ID,
425 PROGRAM_ID )
426 VALUES (
427 RCV_RECEIVING_SUB_LEDGER_S.NEXTVAL,
428 P_RCV_AE_LINE.ACCOUNTING_EVENT_ID,
429 P_RCV_AE_LINE.DEBIT_LINE_TYPE,
430 SYSDATE,
431 P_RCV_AE_LINE.LAST_UPDATED_BY,
432 SYSDATE,
433 P_RCV_AE_LINE.CREATED_BY,
434 P_RCV_AE_LINE.LAST_UPDATE_LOGIN,
435 P_RCV_AE_LINE.RCV_TRANSACTION_ID,
436 P_RCV_AE_LINE.ACTUAL_FLAG,
437 'Purchasing',
438 'Accrual',
439 TRUNC(l_accounting_date),
440 P_RCV_AE_LINE.DEBIT_ACCOUNT,
441 P_RCV_AE_LINE.ACCOUNTED_DR,
442 NULL,
443 P_RCV_AE_LINE.ENTERED_DR,
444 NULL,
445 P_RCV_AE_LINE.CURRENCY_CODE,
446 P_RCV_AE_LINE.CURRENCY_CONVERSION_DATE,
447 L_USER_CURR_CONV_TYPE,
448 P_RCV_AE_LINE.CURRENCY_CONVERSION_RATE,
449 P_RCV_AE_LINE.TRANSACTION_DATE,
450 P_GLINFO.PERIOD_NAME,
451 P_GLINFO.CHART_OF_ACCOUNTS_ID,
452 P_GLINFO.CURRENCY_CODE,
453 P_GLINFO.SET_OF_BOOKS_ID,
454 NULL,
455 'PO',
456 P_RCV_AE_LINE.DOC_HEADER_ID,
457 P_RCV_AE_LINE.DOC_DISTRIBUTION_ID,
458 P_RCV_AE_LINE.DOC_NUMBER,
459 P_RCV_AE_LINE.PRIMARY_QUANTITY,
460 'O',
461 P_RCV_AE_LINE.ENTERED_REC_TAX,
462 P_RCV_AE_LINE.ENTERED_NR_TAX,
463 P_RCV_AE_LINE.ACCOUNTED_REC_TAX,
464 P_RCV_AE_LINE.ACCOUNTED_NR_TAX,
465 decode(P_RCV_AE_LINE.DEBIT_LINE_TYPE,
466 RECEIVING_INSPECTION, NULL,
467 P_RCV_AE_LINE.USSGL_TRANSACTION_CODE),
468 P_RCV_AE_LINE.REQUEST_ID,
469 P_RCV_AE_LINE.PROGRAM_APPLICATION_ID,
470 P_RCV_AE_LINE.PROGRAM_ID )
471 RETURNING RCV_SUB_LEDGER_ID INTO L_RCV_SUB_LEDGER_ID;
472 EXCEPTION
473 WHEN OTHERS THEN
474 RAISE INSERT_RRSL_ERROR;
475 END;
476
477 END IF; -- Debit Account is not NULL
478
479 IF ( P_RCV_AE_LINE.CREDIT_ACCOUNT IS NOT NULL ) THEN
480 l_stmt_num := 50;
481
482 BEGIN
483 -- Insert Credit Entry
484 INSERT INTO RCV_RECEIVING_SUB_LEDGER (
485 RCV_SUB_LEDGER_ID,
486 ACCOUNTING_EVENT_ID,
487 ACCOUNTING_LINE_TYPE,
488 LAST_UPDATE_DATE,
489 LAST_UPDATED_BY,
490 CREATION_DATE,
491 CREATED_BY,
492 LAST_UPDATE_LOGIN,
493 RCV_TRANSACTION_ID,
494 ACTUAL_FLAG,
495 JE_SOURCE_NAME,
496 JE_CATEGORY_NAME,
497 ACCOUNTING_DATE,
498 CODE_COMBINATION_ID,
499 ACCOUNTED_DR,
500 ACCOUNTED_CR,
501 ENTERED_DR,
502 ENTERED_CR,
503 CURRENCY_CODE,
504 CURRENCY_CONVERSION_DATE,
505 USER_CURRENCY_CONVERSION_TYPE,
506 CURRENCY_CONVERSION_RATE,
507 TRANSACTION_DATE,
508 PERIOD_NAME,
509 CHART_OF_ACCOUNTS_ID,
510 FUNCTIONAL_CURRENCY_CODE,
511 SET_OF_BOOKS_ID,
512 ENCUMBRANCE_TYPE_ID,
513 REFERENCE1,
514 REFERENCE2,
515 REFERENCE3,
516 REFERENCE4,
517 SOURCE_DOC_QUANTITY,
518 ACCRUAL_METHOD_FLAG,
519 ENTERED_REC_TAX,
520 ENTERED_NR_TAX,
521 ACCOUNTED_REC_TAX,
522 ACCOUNTED_NR_TAX,
523 USSGL_TRANSACTION_CODE,
524 REQUEST_ID,
525 PROGRAM_APPLICATION_ID,
526 PROGRAM_ID )
527 VALUES (
528 RCV_RECEIVING_SUB_LEDGER_S.NEXTVAL,
529 P_RCV_AE_LINE.ACCOUNTING_EVENT_ID,
530 P_RCV_AE_LINE.CREDIT_LINE_TYPE,
531 SYSDATE,
532 P_RCV_AE_LINE.LAST_UPDATED_BY,
533 SYSDATE,
534 P_RCV_AE_LINE.CREATED_BY,
535 P_RCV_AE_LINE.LAST_UPDATE_LOGIN,
536 P_RCV_AE_LINE.RCV_TRANSACTION_ID,
537 P_RCV_AE_LINE.ACTUAL_FLAG,
538 'Purchasing',
539 'Accrual',
540 TRUNC(l_accounting_date),
541 P_RCV_AE_LINE.CREDIT_ACCOUNT,
542 NULL,
543 P_RCV_AE_LINE.ACCOUNTED_CR,
544 NULL,
545 P_RCV_AE_LINE.ENTERED_CR,
546 P_RCV_AE_LINE.CURRENCY_CODE,
547 P_RCV_AE_LINE.CURRENCY_CONVERSION_DATE,
548 L_USER_CURR_CONV_TYPE,
549 P_RCV_AE_LINE.CURRENCY_CONVERSION_RATE,
550 P_RCV_AE_LINE.TRANSACTION_DATE,
551 P_GLINFO.PERIOD_NAME,
552 P_GLINFO.CHART_OF_ACCOUNTS_ID,
553 P_GLINFO.CURRENCY_CODE,
554 P_GLINFO.SET_OF_BOOKS_ID,
555 NULL,
556 'PO',
557 P_RCV_AE_LINE.DOC_HEADER_ID,
558 P_RCV_AE_LINE.DOC_DISTRIBUTION_ID,
559 P_RCV_AE_LINE.DOC_NUMBER,
560 P_RCV_AE_LINE.PRIMARY_QUANTITY,
561 'O',
562 P_RCV_AE_LINE.ENTERED_REC_TAX,
563 P_RCV_AE_LINE.ENTERED_NR_TAX,
564 P_RCV_AE_LINE.ACCOUNTED_REC_TAX,
565 P_RCV_AE_LINE.ACCOUNTED_NR_TAX,
566 decode(P_RCV_AE_LINE.CREDIT_LINE_TYPE,
567 RECEIVING_INSPECTION, NULL,
568 P_RCV_AE_LINE.USSGL_TRANSACTION_CODE),
569 P_RCV_AE_LINE.REQUEST_ID,
570 P_RCV_AE_LINE.PROGRAM_APPLICATION_ID,
571 P_RCV_AE_LINE.PROGRAM_ID )
572 RETURNING RCV_SUB_LEDGER_ID INTO L_RCV_SUB_LEDGER_ID;
573 EXCEPTION
574 WHEN OTHERS THEN
575 RAISE INSERT_RRSL_ERROR;
576 END;
577
578 END IF; -- Credit Account is NOT NULL
579
580 /* Support for Landed Cost Management */
581 IF ( P_RCV_AE_LINE.LCM_ACCOUNT_ID IS NOT NULL ) THEN
582 l_stmt_num := 50;
583
584 IF NVL(p_RCV_AE_LINE.LDD_COST_ABS_ACCOUNTED,0) >= 0 THEN
585 L_ENT_DR := ABS(NVL(P_RCV_AE_LINE.LDD_COST_ABS_ENTERED,0));
586 L_ACT_DR := ABS(NVL(P_RCV_AE_LINE.LDD_COST_ABS_ACCOUNTED,0));
587 L_ENT_CR := NULL;
588 L_ACT_CR := NULL;
589 ELSE
590 L_ENT_DR := NULL;
591 L_ACT_DR := NULL;
592 L_ENT_CR := ABS(NVL(P_RCV_AE_LINE.LDD_COST_ABS_ENTERED,0));
593 L_ACT_CR := ABS(NVL(P_RCV_AE_LINE.LDD_COST_ABS_ACCOUNTED,0));
594 END IF;
595
596 BEGIN
597 INSERT INTO RCV_RECEIVING_SUB_LEDGER (
598 RCV_SUB_LEDGER_ID,
599 ACCOUNTING_EVENT_ID,
600 ACCOUNTING_LINE_TYPE,
601 LAST_UPDATE_DATE,
602 LAST_UPDATED_BY,
603 CREATION_DATE,
604 CREATED_BY,
605 LAST_UPDATE_LOGIN,
606 RCV_TRANSACTION_ID,
607 ACTUAL_FLAG,
608 JE_SOURCE_NAME,
609 JE_CATEGORY_NAME,
610 ACCOUNTING_DATE,
611 CODE_COMBINATION_ID,
612 ACCOUNTED_DR,
613 ACCOUNTED_CR,
614 ENTERED_DR,
615 ENTERED_CR,
616 CURRENCY_CODE,
617 CURRENCY_CONVERSION_DATE,
618 USER_CURRENCY_CONVERSION_TYPE,
619 CURRENCY_CONVERSION_RATE,
620 TRANSACTION_DATE,
621 PERIOD_NAME,
622 CHART_OF_ACCOUNTS_ID,
623 FUNCTIONAL_CURRENCY_CODE,
624 SET_OF_BOOKS_ID,
625 ENCUMBRANCE_TYPE_ID,
626 REFERENCE1,
627 REFERENCE2,
628 REFERENCE3,
629 REFERENCE4,
630 SOURCE_DOC_QUANTITY,
631 ACCRUAL_METHOD_FLAG,
632 ENTERED_REC_TAX,
633 ENTERED_NR_TAX,
634 ACCOUNTED_REC_TAX,
635 ACCOUNTED_NR_TAX,
636 USSGL_TRANSACTION_CODE,
637 REQUEST_ID,
638 PROGRAM_APPLICATION_ID,
639 PROGRAM_ID )
640 VALUES (
641 RCV_RECEIVING_SUB_LEDGER_S.NEXTVAL,
642 P_RCV_AE_LINE.ACCOUNTING_EVENT_ID,
643 LC_ABSORPTION,
644 SYSDATE,
645 P_RCV_AE_LINE.LAST_UPDATED_BY,
646 SYSDATE,
647 P_RCV_AE_LINE.CREATED_BY,
648 P_RCV_AE_LINE.LAST_UPDATE_LOGIN,
649 P_RCV_AE_LINE.RCV_TRANSACTION_ID,
650 P_RCV_AE_LINE.ACTUAL_FLAG,
651 'Purchasing',
652 'Accrual',
653 TRUNC(l_accounting_date),
654 P_RCV_AE_LINE.LCM_ACCOUNT_ID,
655 L_ACT_DR,
656 L_ACT_CR,
657 L_ENT_DR,
658 L_ENT_CR,
659 P_RCV_AE_LINE.CURRENCY_CODE,
660 P_RCV_AE_LINE.CURRENCY_CONVERSION_DATE,
661 L_USER_CURR_CONV_TYPE,
662 P_RCV_AE_LINE.CURRENCY_CONVERSION_RATE,
663 P_RCV_AE_LINE.TRANSACTION_DATE,
664 P_GLINFO.PERIOD_NAME,
665 P_GLINFO.CHART_OF_ACCOUNTS_ID,
666 P_GLINFO.CURRENCY_CODE,
667 P_GLINFO.SET_OF_BOOKS_ID,
668 NULL,
669 'PO',
670 P_RCV_AE_LINE.DOC_HEADER_ID,
671 P_RCV_AE_LINE.DOC_DISTRIBUTION_ID,
672 P_RCV_AE_LINE.DOC_NUMBER,
673 P_RCV_AE_LINE.PRIMARY_QUANTITY,
674 'O',
675 P_RCV_AE_LINE.ENTERED_REC_TAX,
676 P_RCV_AE_LINE.ENTERED_NR_TAX,
677 P_RCV_AE_LINE.ACCOUNTED_REC_TAX,
678 P_RCV_AE_LINE.ACCOUNTED_NR_TAX,
679 decode(P_RCV_AE_LINE.CREDIT_LINE_TYPE,
680 RECEIVING_INSPECTION, NULL,
681 P_RCV_AE_LINE.USSGL_TRANSACTION_CODE),
682 P_RCV_AE_LINE.REQUEST_ID,
683 P_RCV_AE_LINE.PROGRAM_APPLICATION_ID,
684 P_RCV_AE_LINE.PROGRAM_ID )
685 RETURNING RCV_SUB_LEDGER_ID INTO L_RCV_SUB_LEDGER_ID;
686 EXCEPTION
687 WHEN OTHERS THEN
688 RAISE INSERT_RRSL_ERROR;
689 END;
690
691 END IF; -- LCM Account is NOT NULL
692
693
694 -- Get Message count and if 1, return message data
695 l_stmt_num := 70;
696
697 FND_MSG_PUB.Count_And_Get
698 ( p_count => x_msg_count,
699 p_data => x_msg_data
700 );
701
702 EXCEPTION
703 WHEN INSERT_RRSL_ERROR THEN
704 IF G_DEBUG = 'Y' THEN
705 IF (FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
706 l_api_message := 'Error inserting into RCV_RECEIVING_SUB_LEDGER ';
707 FND_LOG.string(FND_LOG.LEVEL_ERROR,G_LOG_HEAD || '.'||l_api_name||l_stmt_num
708 ,'Insert_SubLedgerLines : '||l_stmt_num||' : '||l_api_message);
709 END IF;
710 END IF;
711
712
713 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
714 FND_MSG_PUB.Add_Exc_Msg(
715 p_pkg_name => G_PKG_NAME,
716 p_procedure_name => l_api_name,
717 p_error_text => 'Error at: '||
718 to_char(l_stmt_num) || ' '||
719 'Error inserting into RCV_RECEIVING_SUB_LEDGER '||
720 SQLERRM
721 );
722
723 END IF;
724 x_return_status := FND_API.G_RET_STS_ERROR;
725 FND_MSG_PUB.Count_And_Get
726 ( p_count => x_msg_count,
727 p_data => x_msg_data
728 );
729
730 WHEN OTHERS THEN
731 IF G_DEBUG = 'Y' THEN
732 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
733 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD || '.'||l_api_name||l_stmt_num
734 ,'Insert_SubLedgerLines : '||l_stmt_num||' : '||substr(SQLERRM,1,200));
735 END IF;
736 END IF;
737
738 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
739 FND_MSG_PUB.Add_Exc_Msg(
740 p_pkg_name => G_PKG_NAME,
741 p_procedure_name => l_api_name,
742 p_error_text => 'Error at: '||
743 to_char(l_stmt_num) || ' '||
744 SQLERRM
745 );
746
747 END IF;
748 x_return_status := FND_API.G_RET_STS_ERROR;
749 FND_MSG_PUB.Count_And_Get
750 ( p_count => x_msg_count,
751 p_data => x_msg_data
752 );
753
754 END Insert_SubLedgerLines;
755
756 ----------------------------------------------------------------------------------
757 -- API Name : Get_AccountingLineType
758 -- Type : Private
759 -- Function : The API returns the Accounting Line Type for an accounting
760 -- event. It returns the line types for both Credit and Debit
761 -- lines.
762 -- Parameters :
763 -- IN : p_event_type_id : Event Type (RCV_SeedEvent_PVT)
764 -- p_parent_txn_type : Transaction Type of the Parent of the
765 -- current event
766 -- p_proc_org_flag : Whether the Organization where accounting
767 -- event occured is facing the supplier
768 -- p_one_time_item_flag: Whether the item associated with the
769 -- event is a one-time item
770 -- p_destination_type : Destination_Type_Code for the Event
771 -- ('Inventory', 'Shop Floor', 'Expense')
772 -- p_global_proc_flag : Whether event has been created in a
773 -- global procurement scenario
774 -- OUT : x_debit_line_type : Accounting Line Type for Debit
775 -- x_credit_line_type : Accounting Line Type for Credit
776 ----------------------------------------------------------------------------------
777
778 PROCEDURE Get_AccountingLineType(
779 p_api_version IN NUMBER,
780 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
781 p_commit IN VARCHAR2 := FND_API.G_FALSE,
782 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
783 x_return_status OUT NOCOPY VARCHAR2,
784 x_msg_count OUT NOCOPY NUMBER,
785 x_msg_data OUT NOCOPY VARCHAR2,
786 p_event_type_id IN NUMBER,
787 p_parent_txn_type IN VARCHAR2,
788 p_proc_org_flag IN VARCHAR2,
789 p_one_time_item_flag IN VARCHAR2,
790 p_destination_type IN VARCHAR2,
791 p_global_proc_flag IN VARCHAR2,
792 x_debit_line_type OUT NOCOPY VARCHAR2,
793 x_credit_line_type OUT NOCOPY VARCHAR2
794 ) IS
795 UNKNOWN_EVENT_TYPE_EXCEPTION EXCEPTION;
796
797 l_stmt_num NUMBER;
798 l_api_message VARCHAR2(1000);
799
800 l_api_name CONSTANT VARCHAR2(30) := 'Get_AccountingLineType';
801
802
803
804 BEGIN
805 -- Initialize message list
806 l_stmt_num := 10;
807 IF FND_API.to_boolean( p_init_msg_list ) THEN
808 FND_MSG_PUB.initialize;
809 END IF;
810
811 -- Initialize API return status to success
812 x_return_status := FND_API.G_RET_STS_SUCCESS;
813
814
815 -- Initialize
816 x_debit_line_type := '';
817 x_credit_line_type := '';
818
819 IF ( ( p_event_type_id = RCV_SeedEvents_PVT.RECEIVE OR
820 p_event_type_id = RCV_SeedEvents_PVT.MATCH ) OR
821 ( p_event_type_id = RCV_SeedEvents_PVT.CORRECT AND
822 ( p_parent_txn_type = 'RECEIVE' OR p_parent_txn_type = 'MATCH') ) ) THEN
823 -- RECEIVE/MATCH----------------------------
824 IF p_proc_org_flag = 'Y' THEN
825 l_stmt_num := 20;
826 x_debit_line_type := RECEIVING_INSPECTION;
827 x_credit_line_type:= ACCRUAL;
828 ELSE
829 l_stmt_num := 30;
830 x_debit_line_type := RECEIVING_INSPECTION;
831 x_credit_line_type:= IC_ACCRUAL;
832 END IF;
833 --------------------------------------------
834
835 -- LOGICAL_RECEIVE--------------------------
836 ELSIF p_event_type_id = RCV_SeedEvents_PVT.LOGICAL_RECEIVE THEN
837 IF p_proc_org_flag = 'Y' THEN
838 IF p_one_time_item_flag = 'Y' OR p_destination_type = 'SHOP FLOOR' THEN
839 l_stmt_num := 40;
840 x_debit_line_type := IC_COST_OF_SALES;
841 x_credit_line_type:= ACCRUAL;
842 ELSE
843 l_stmt_num := 50;
844 x_debit_line_type := CLEARING;
845 x_credit_line_type:= ACCRUAL;
846 END IF;
847 ELSE
848 IF p_one_time_item_flag = 'Y' OR p_destination_type = 'SHOP FLOOR' THEN
849 l_stmt_num := 60;
850 x_debit_line_type := IC_COST_OF_SALES;
851 x_credit_line_type:= IC_ACCRUAL;
852 ELSE
853 l_stmt_num := 70;
854 x_debit_line_type := CLEARING;
855 x_credit_line_type:= IC_ACCRUAL;
856 END IF;
857 END IF;
858 --------------------------------------------
859
860 -- DELIVER---------------------------------
861 ELSIF ( p_event_type_id = RCV_SeedEvents_PVT.DELIVER OR
862 ( p_event_type_id = RCV_SeedEvents_PVT.CORRECT AND p_parent_txn_type = 'DELIVER') )THEN
863 l_stmt_num := 80;
864 x_debit_line_type := CHARGE;
865 x_credit_line_type:= RECEIVING_INSPECTION;
866 --------------------------------------------
867
868 -- RETURN_TO_VENDOR----------------------------------
869 ELSIF ( p_event_type_id = RCV_SeedEvents_PVT.RETURN_TO_VENDOR OR
870 ( p_event_type_id = RCV_SeedEvents_PVT.CORRECT AND p_parent_txn_type = 'RETURN TO VENDOR' ))THEN
871 IF p_proc_org_flag = 'Y' THEN
872 l_stmt_num := 90;
873 x_debit_line_type := ACCRUAL;
874 x_credit_line_type:= RECEIVING_INSPECTION;
875 ELSE
876 l_stmt_num := 100;
877 x_debit_line_type := IC_ACCRUAL;
878 x_credit_line_type:= RECEIVING_INSPECTION;
879 END IF;
880 -----------------------------------------------------
881
882 -- LOGICAL_RETURN_TO_VENDOR--------------------------
883 ELSIF p_event_type_id = RCV_SeedEvents_PVT.LOGICAL_RETURN_TO_VENDOR THEN
884 IF p_proc_org_flag = 'Y' THEN
885 IF p_one_time_item_flag = 'Y' OR p_destination_type = 'SHOP FLOOR' THEN
886 l_stmt_num := 110;
887 x_debit_line_type := ACCRUAL;
888 x_credit_line_type:= IC_COST_OF_SALES;
889 ELSE
890 l_stmt_num := 120;
891 x_debit_line_type := ACCRUAL;
892 x_credit_line_type:= CLEARING;
893 END IF;
894 ELSE
895 IF p_one_time_item_flag = 'Y' OR p_destination_type = 'SHOP FLOOR' THEN
896 l_stmt_num := 130;
897 x_debit_line_type := IC_ACCRUAL;
898 x_credit_line_type:= IC_COST_OF_SALES;
899 ELSE
900 l_stmt_num := 140;
901 x_debit_line_type := IC_ACCRUAL;
902 x_credit_line_type:= CLEARING;
903 END IF;
904 END IF;
905 -----------------------------------------------------
906
907 -- RETURN_TO_RECEIVING--------------------------
908 ELSIF ( p_event_type_id = RCV_SeedEvents_PVT.RETURN_TO_RECEIVING OR
909 ( p_event_type_id = RCV_SeedEvents_PVT.CORRECT AND
910 p_parent_txn_type = 'RETURN TO RECEIVING' ) )THEN
911 l_stmt_num := 150;
912 x_debit_line_type := RECEIVING_INSPECTION;
913 x_credit_line_type:= CHARGE;
914 ------------------------------------------------
915
916 -- ADJUST_RECEIVE---------------------------
917 ELSIF p_event_type_id = RCV_SeedEvents_PVT.ADJUST_RECEIVE THEN
918 IF p_global_proc_flag = 'N' THEN
919 l_stmt_num := 160;
920 x_debit_line_type := RECEIVING_INSPECTION;
921 x_credit_line_type:= ACCRUAL;
922 ELSE -- Global Procurement Case
923 l_stmt_num := 165;
924 IF (p_destination_type = 'SHOP FLOOR' OR p_one_time_item_flag = 'N') THEN
925
926 x_debit_line_type := RETROPRICE_ADJUSTMENT;
927 x_credit_line_type:= ACCRUAL;
928 ELSE
929
930 x_debit_line_type := IC_COST_OF_SALES;
931 x_credit_line_type:= ACCRUAL;
932 END IF;
933 END IF;
934 --------------------------------------------
935
936 --ADJUST_DELIVER--------------------------------
937 ELSIF p_event_type_id = RCV_SeedEvents_PVT.ADJUST_DELIVER THEN
938 IF p_destination_type in ('INVENTORY', 'SHOP FLOOR') THEN
939 l_stmt_num := 170;
940 x_debit_line_type := RETROPRICE_ADJUSTMENT;
941 x_credit_line_type:= RECEIVING_INSPECTION;
942 ELSE
943 IF p_destination_type = 'EXPENSE' THEN
944 l_stmt_num := 180;
945 x_debit_line_type := CHARGE;
946 x_credit_line_type:= RECEIVING_INSPECTION;
947 END IF;
948 END IF;
949 -----------------------------------------------
950
951 -- ENCUMBRANCE_REVERSAL-----------------------
952 ELSIF p_event_type_id = RCV_SeedEvents_PVT.ENCUMBRANCE_REVERSAL THEN
953 x_debit_line_type := ENCUMBRANCE_REVERSAL;
954 x_credit_line_type:= ENCUMBRANCE_REVERSAL;
955 ----------------------------------------------
956 ELSE
957 RAISE UNKNOWN_EVENT_TYPE_EXCEPTION;
958 END IF;
959
960 IF G_DEBUG = 'Y' THEN
961 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
962 l_api_message := 'Debit Line Type: '||x_debit_line_type||
963 ' Credit Line Type: '||x_credit_line_type;
964 FND_LOG.string(FND_LOG.LEVEL_STATEMENT,G_LOG_HEAD||'.'||l_api_name||'.'||l_stmt_num
965 ,l_api_message);
966 END IF;
967 END IF;
968
969
970 -- Get Message count and if 1, return message data
971 FND_MSG_PUB.Count_And_Get
972 ( p_count => x_msg_count,
973 p_data => x_msg_data
974 );
975 EXCEPTION
976 WHEN UNKNOWN_EVENT_TYPE_EXCEPTION THEN
977 IF G_DEBUG = 'Y' THEN
978 IF (FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
979 l_api_message := 'Unknown Transaction ';
980 FND_LOG.string(FND_LOG.LEVEL_ERROR,G_LOG_HEAD || '.'||l_api_name||l_stmt_num
981 ,'Get_AccountingLineType : '||l_stmt_num||' : '||l_api_message);
982 END IF;
983 END IF;
984
985 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
986 FND_MSG_PUB.Add_Exc_Msg(
987 p_pkg_name => G_PKG_NAME,
988 p_procedure_name => l_api_name,
989 p_error_text => 'Error at: '||
990 to_char(l_stmt_num) || ' '||
991 'Unknown Transaction '||
992 SQLERRM
993 );
994
995 END IF;
996 x_return_status := FND_API.G_RET_STS_ERROR;
997 FND_MSG_PUB.Count_And_Get
998 ( p_count => x_msg_count,
999 p_data => x_msg_data
1000 );
1001
1002 WHEN OTHERS THEN
1003 IF G_DEBUG = 'Y' THEN
1004 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1005 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD || '.'||l_api_name||l_stmt_num
1006 ,'Get_AccountingLineType : '||l_stmt_num||' : '||SUBSTR(sqlerrm,1,200));
1007 END IF;
1008 END IF;
1009
1010 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1011 FND_MSG_PUB.Add_Exc_Msg(
1012 p_pkg_name => G_PKG_NAME,
1013 p_procedure_name => l_api_name,
1014 p_error_text => 'Error at: '||
1015 to_char(l_stmt_num) || ' '||
1016 SQLERRM
1017 );
1018
1019 END IF;
1020 x_return_status := FND_API.G_RET_STS_ERROR;
1021 FND_MSG_PUB.Count_And_Get
1022 ( p_count => x_msg_count,
1023 p_data => x_msg_data
1024 );
1025
1026
1027 END Get_AccountingLineType;
1028
1029 ----------------------------------------------------------------------------------
1030 -- API Name : Create_AccountingEntry
1031 -- Type : Private
1032 -- Function : This API, called by the API's that seed accounting events, is
1033 -- responsible for creating accounting entries for the event
1034 -- that has been seeded in RCV_ACCOUNTING_EVENTS and passed to
1035 -- it. The API creates entries in the subledger,
1036 -- RCV_RECEIVING_SUB_LEDGER and also creates lines in GL_INTERFACE.
1037 -- Parameters :
1038 -- IN : p_accounting_event_id : Accounting_Event_ID of the Event
1039 -- in RCV_ACCOUNTING_EVENTS for which
1040 -- entries are to be created in RRS and
1041 -- GL_INTERFACE
1042 --
1043 --
1044 --
1045 -- OUT : The x_return_status variable indicates the SUCCESS or
1046 -- FAILURE of this routine
1047 ----------------------------------------------------------------------------------
1048
1049 PROCEDURE Create_AccountingEntry(
1050 p_api_version IN NUMBER,
1051 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1052 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1053 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1054 x_return_status OUT NOCOPY VARCHAR2,
1055 x_msg_count OUT NOCOPY NUMBER,
1056 x_msg_data OUT NOCOPY VARCHAR2,
1057 p_accounting_event_id IN NUMBER,
1058 /* Support for Landed Cost Management */
1059 p_lcm_flag IN VARCHAR2
1060 )
1061 IS
1062 l_api_name CONSTANT VARCHAR2(30) := 'Create_AccountingEntry';
1063 l_api_version CONSTANT NUMBER := 1.0;
1064
1065 /* Return */
1066 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1067 l_msg_count NUMBER := 0;
1068 l_msg_data VARCHAR2(8000) := '';
1069 l_stmt_num NUMBER := 0;
1070 l_api_message VARCHAR2(1000);
1071
1072 /* Local Structures for Event, Currency and GL Information */
1073 l_rcv_ae_line RCV_AE_REC_TYPE;
1074 l_curr_rec RCV_CURR_REC_TYPE;
1075 l_glinfo RCV_AE_GLINFO_REC_TYPE;
1076
1077
1078 l_parent_rcv_txn_id NUMBER;
1079 l_parent_txn_type VARCHAR2(25);
1080 l_one_time_item VARCHAR2(1) := 'N';
1081 l_destination_type_code VARCHAR2(25);
1082 l_debit_line_type NUMBER;
1083 l_credit_line_type NUMBER;
1084
1085 l_drop_ship VARCHAR2(1);
1086
1087
1088 -- Service Line Types
1089 l_nr_tax_amount NUMBER;
1090 l_rec_tax_amount NUMBER;
1091 -- Retroactive Pricing Events
1092
1093 l_prior_accounted_dr NUMBER;
1094 l_prior_entered_dr NUMBER;
1095 l_prior_nr_tax NUMBER;
1096 l_prior_rec_tax NUMBER;
1097 l_prior_accounted_nr_tax NUMBER;
1098 l_prior_entered_nr_tax NUMBER;
1099 l_prior_accounted_rec_tax NUMBER;
1100 l_prior_entered_rec_tax NUMBER;
1101
1102 -- Timezone --
1103 l_legal_entity NUMBER;
1104 l_event_le_date DATE;
1105
1106 -- SLA Uptake --
1107 l_trx_info CST_XLA_PVT.t_xla_rcv_trx_info;
1108 l_encumbrance_flag VARCHAR2(1);
1109 l_bc_status VARCHAR2(2000);
1110 l_packet_id NUMBER;
1111 l_user_id NUMBER;
1112 l_resp_id NUMBER;
1113 l_resp_appl_id NUMBER;
1114 l_source_data XLA_EVENTS_PUB_PKG.t_event_source_info;
1115 l_accounting_option NUMBER;
1116 l_batch NUMBER;
1117 l_errbuf VARCHAR2(1000);
1118 l_retcode NUMBER;
1119 l_request_id NUMBER;
1120
1121 /* Support for Landed Cost Management */
1122 L_RCV_INSP_ENTERED_VAL NUMBER;
1123 L_RCV_INSP_ACCOUNTED_VAL NUMBER;
1124
1125 NO_CURRENCY_INFORMATION EXCEPTION;
1126 NO_PO_INFORMATION EXCEPTION;
1127 NO_RAE_DATA EXCEPTION;
1128
1129 BEGIN
1130
1131
1132 -- Standard start of API savepoint
1133 SAVEPOINT RCV_CreateAccounting_PVT;
1134
1135 IF G_DEBUG = 'Y' THEN
1136 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1137 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,G_LOG_HEAD || '.'||l_api_name||'.begin' ,'Create_AccountingEntry <<');
1138 END IF;
1139 END IF;
1140
1141 -- Standard call to check for call compatibility
1142 l_stmt_num := 10;
1143 IF NOT FND_API.Compatible_API_Call (
1144 l_api_version,
1145 p_api_version,
1146 l_api_name,
1147 G_PKG_NAME ) THEN
1148 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1149 END IF;
1150
1151 -- Initialize message list if p_init_msg_list is set to TRUE
1152 l_stmt_num := 20;
1153 IF FND_API.to_Boolean(p_init_msg_list) THEN
1154 FND_MSG_PUB.initialize;
1155 END IF;
1156
1157 -- Initialize API return status to success
1158
1159 x_return_status := FND_API.G_RET_STS_SUCCESS;
1160
1161
1162 -- Get Information from RCV_ACCOUNTING_EVENTS and populate l_rcv_ae_line
1163 BEGIN
1164 l_stmt_num := 30;
1165 SELECT
1166 ACCOUNTING_EVENT_ID,
1167 RCV_TRANSACTION_ID,
1168 DECODE(TRX_FLOW_HEADER_ID, NULL, 'N', 'Y'),
1169 PO_HEADER_ID,
1170 PO_DISTRIBUTION_ID,
1171 ORG_ID,
1172 ORGANIZATION_ID,
1173 SET_OF_BOOKS_ID,
1174 TRANSACTION_DATE,
1175 EVENT_TYPE_ID,
1176 CURRENCY_CODE,
1177 CURRENCY_CONVERSION_RATE,
1178 CURRENCY_CONVERSION_TYPE,
1179 CURRENCY_CONVERSION_DATE,
1180 SOURCE_DOC_QUANTITY, -- Document Quantity is used to create distributions
1181 UNIT_PRICE,
1182 /* Support for Landed Cost Management */
1183 UNIT_LANDED_COST,
1184 PRIOR_UNIT_PRICE,
1185 TRANSACTION_AMOUNT,
1186 NR_TAX,
1187 REC_TAX,
1188 NR_TAX_AMOUNT,
1189 REC_TAX_AMOUNT,
1190 NVL(PRIOR_NR_TAX, 0),
1191 NVL(PRIOR_REC_TAX, 0),
1192 DEBIT_ACCOUNT_ID,
1193 CREDIT_ACCOUNT_ID,
1194 /* Support for Landed Cost Management */
1195 LCM_ACCOUNT_ID,
1196 PROCUREMENT_ORG_FLAG,
1197 INVENTORY_ITEM_ID,
1198 USSGL_TRANSACTION_CODE,
1199 GL_GROUP_ID,
1200 CREATED_BY,
1201 LAST_UPDATED_BY,
1202 LAST_UPDATE_LOGIN,
1203 REQUEST_ID,
1204 PROGRAM_APPLICATION_ID,
1205 PROGRAM_ID
1206 INTO
1207 L_RCV_AE_LINE.ACCOUNTING_EVENT_ID,
1208 L_RCV_AE_LINE.RCV_TRANSACTION_ID,
1209 L_RCV_AE_LINE.GLOBAL_PROC_FLAG,
1210 L_RCV_AE_LINE.DOC_HEADER_ID,
1211 L_RCV_AE_LINE.DOC_DISTRIBUTION_ID,
1212 L_RCV_AE_LINE.ORG_ID,
1213 L_RCV_AE_LINE.ORGANIZATION_ID,
1214 L_RCV_AE_LINE.SET_OF_BOOKS_ID,
1215 L_RCV_AE_LINE.TRANSACTION_DATE,
1216 L_RCV_AE_LINE.EVENT_TYPE_ID,
1217 L_RCV_AE_LINE.CURRENCY_CODE,
1218 L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE,
1219 L_RCV_AE_LINE.CURRENCY_CONVERSION_TYPE,
1220 L_RCV_AE_LINE.CURRENCY_CONVERSION_DATE,
1221 L_RCV_AE_LINE.PRIMARY_QUANTITY,
1222 L_RCV_AE_LINE.UNIT_PRICE,
1223 /* Support for Landed Cost Management */
1224 L_RCV_AE_LINE.UNIT_LANDED_COST,
1225 L_RCV_AE_LINE.PRIOR_UNIT_PRICE,
1226 L_RCV_AE_LINE.TRANSACTION_AMOUNT,
1227 L_RCV_AE_LINE.NR_TAX,
1228 L_RCV_AE_LINE.REC_TAX,
1229 L_NR_TAX_AMOUNT,
1230 L_REC_TAX_AMOUNT,
1231 L_PRIOR_NR_TAX,
1232 L_PRIOR_REC_TAX,
1233 L_RCV_AE_LINE.DEBIT_ACCOUNT,
1234 L_RCV_AE_LINE.CREDIT_ACCOUNT,
1235 /* Support for Landed Cost Management */
1236 L_RCV_AE_LINE.LCM_ACCOUNT_ID,
1237 L_RCV_AE_LINE.PROCUREMENT_ORG_FLAG,
1238 L_RCV_AE_LINE.INVENTORY_ITEM_ID,
1239 L_RCV_AE_LINE.USSGL_TRANSACTION_CODE,
1240 L_RCV_AE_LINE.GL_GROUP_ID,
1241 L_RCV_AE_LINE.CREATED_BY,
1242 L_RCV_AE_LINE.LAST_UPDATED_BY,
1243 L_RCV_AE_LINE.LAST_UPDATE_LOGIN,
1244 L_RCV_AE_LINE.REQUEST_ID,
1245 L_RCV_AE_LINE.PROGRAM_APPLICATION_ID,
1246 L_RCV_AE_LINE.PROGRAM_ID
1247 FROM
1248 RCV_ACCOUNTING_EVENTS
1249 WHERE
1250 ACCOUNTING_EVENT_ID = p_accounting_event_id;
1251 EXCEPTION
1252 WHEN NO_DATA_FOUND THEN
1253 RAISE NO_RAE_DATA;
1254 END;
1255
1256
1257 l_stmt_num := 35;
1258 -- Some true drop shipment cases do not have transaction_flow_header_id
1259 -- The dropship_type_code should also be checked
1260
1261 SELECT
1262 DECODE( DROPSHIP_TYPE_CODE, 1, 'Y', 2, 'Y', 'N' )
1263 INTO
1264 l_drop_ship
1265 FROM
1266 RCV_TRANSACTIONS
1267 WHERE
1268 TRANSACTION_ID = L_RCV_AE_LINE.RCV_TRANSACTION_ID;
1269
1270 l_stmt_num := 37;
1271
1272 IF ( l_drop_ship = 'Y' ) THEN
1273 L_RCV_AE_LINE.GLOBAL_PROC_FLAG := 'Y';
1274 END IF;
1275
1276 -- Get some information from Document tables for Reference cols in Subledger
1277 BEGIN
1278 l_stmt_num := 40;
1279 SELECT
1280 SEGMENT1
1281 INTO
1282 L_RCV_AE_LINE.DOC_NUMBER
1283 FROM
1284 PO_HEADERS
1285 WHERE
1286 PO_HEADER_ID = L_RCV_AE_LINE.DOC_HEADER_ID;
1287 EXCEPTION
1288 WHEN NO_DATA_FOUND THEN
1289 RAISE NO_PO_INFORMATION;
1290 END;
1291 BEGIN
1292 l_stmt_num := 50;
1293 SELECT
1294 substrb(POL.ITEM_DESCRIPTION,1,100)
1295 INTO
1296 L_RCV_AE_LINE.ITEM_DESCRIPTION
1297 FROM
1298 PO_LINES POL,
1299 PO_DISTRIBUTIONS POD
1300 WHERE
1301 POD.PO_DISTRIBUTION_ID = L_RCV_AE_LINE.DOC_DISTRIBUTION_ID
1302 AND POL.PO_LINE_ID = POD.PO_LINE_ID;
1303 EXCEPTION
1304 WHEN NO_DATA_FOUND THEN
1305 RAISE NO_PO_INFORMATION;
1306 END;
1307
1308
1309 -- Timezone --
1310 -- The periods are computed using event_time in the
1311 -- legal entity time zone. Find it using MGD's Inventory API
1312
1313 -- Get the Legal Entity
1314 l_stmt_num := 55;
1315
1316 SELECT LEGAL_ENTITY
1317 INTO l_legal_entity
1318 FROM CST_ACCT_INFO_V
1319 WHERE ORGANIZATION_ID = l_rcv_ae_line.organization_id;
1320
1321 -- Convert the event_date to Legal Entity time zome
1322 l_stmt_num := 57;
1323
1324 l_event_le_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_For_Server (
1325 p_trxn_date => l_rcv_ae_line.transaction_date,
1326 p_le_id => l_legal_entity );
1327
1328
1329 -- Populate GL Information
1330 l_stmt_num := 60;
1331 Get_GLInformation
1332 ( p_api_version => 1.0,
1333 x_return_status => l_return_status,
1334 x_msg_count => x_msg_count,
1335 x_msg_data => x_msg_data,
1336 p_event_date => l_event_le_date,
1337 p_event_doc_num => l_rcv_ae_line.doc_number,
1338 p_event_type_id => l_rcv_ae_line.event_type_id,
1339 p_set_of_books_id => l_rcv_ae_line.set_of_books_id,
1340 x_gl_information => l_glinfo
1341 );
1342
1343
1344 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1345 l_api_message := 'Error in getting GL Information';
1346 IF G_DEBUG = 'Y' THEN
1347 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1348 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1349 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1350 END IF;
1351 END IF;
1352 RAISE FND_API.g_exc_unexpected_error;
1353 END IF;
1354
1355
1356 -- Populate currency information into currency structure
1357 l_stmt_num := 70;
1358
1359 L_CURR_REC.CURRENCY_CONVERSION_RATE := L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1360 L_CURR_REC.CURRENCY_CONVERSION_TYPE := L_RCV_AE_LINE.CURRENCY_CONVERSION_TYPE;
1361 L_CURR_REC.CURRENCY_CONVERSION_DATE := L_RCV_AE_LINE.CURRENCY_CONVERSION_DATE;
1362
1363 -- Document Currency
1364 l_stmt_num := 80;
1365 BEGIN
1366 SELECT
1367 CURRENCY_CODE,
1368 MINIMUM_ACCOUNTABLE_UNIT,
1369 PRECISION
1370 INTO
1371 L_CURR_REC.DOCUMENT_CURRENCY,
1372 L_CURR_REC.MIN_ACCT_UNIT_DOC,
1373 L_CURR_REC.PRECISION_DOC
1374 FROM
1375 FND_CURRENCIES
1376 WHERE
1377 CURRENCY_CODE = L_RCV_AE_LINE.CURRENCY_CODE;
1378 EXCEPTION
1379 WHEN NO_DATA_FOUND THEN
1380 RAISE NO_CURRENCY_INFORMATION;
1381 END;
1382
1383
1384 -- Functional Currency
1385 l_stmt_num := 90;
1386 BEGIN
1387 SELECT
1388 CURRENCY_CODE,
1389 MINIMUM_ACCOUNTABLE_UNIT,
1390 PRECISION
1391 INTO
1392 L_CURR_REC.FUNCTIONAL_CURRENCY,
1393 L_CURR_REC.MIN_ACCT_UNIT_FUNC,
1394 L_CURR_REC.PRECISION_FUNC
1395 FROM
1396 FND_CURRENCIES
1397 WHERE
1398 CURRENCY_CODE = L_GLINFO.CURRENCY_CODE;
1399 EXCEPTION
1400 WHEN NO_DATA_FOUND THEN
1401 RAISE NO_CURRENCY_INFORMATION;
1402 END;
1403
1404
1405
1406 -- Populate the Accounting Structure
1407
1408 -- Entered_Dr
1409 l_stmt_num := 110;
1410 IF (L_RCV_AE_LINE.UNIT_PRICE IS NULL) THEN
1411 L_RCV_AE_LINE.ENTERED_DR := L_RCV_AE_LINE.TRANSACTION_AMOUNT;
1412 L_RCV_AE_LINE.ENTERED_NR_TAX := l_nr_tax_amount;
1413 L_RCV_AE_LINE.ENTERED_REC_TAX := l_rec_tax_amount;
1414 ELSE
1415 L_RCV_AE_LINE.ENTERED_DR := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.UNIT_PRICE;
1416 L_PRIOR_ENTERED_DR := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.PRIOR_UNIT_PRICE;
1417 L_RCV_AE_LINE.ENTERED_NR_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.NR_TAX;
1418 L_RCV_AE_LINE.ENTERED_REC_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.REC_TAX;
1419 L_PRIOR_ENTERED_NR_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_PRIOR_NR_TAX;
1420 L_PRIOR_ENTERED_REC_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_PRIOR_REC_TAX;
1421 END IF;
1422 /*
1423 -- Accounted_Dr, Accounted_Nr_Tax, Accounted_Rec_Tax
1424 -- Use Document Currency Precision/MAU to round before doing currency conversion
1425 l_stmt_num := 120;
1426 IF ( L_CURR_REC.MIN_ACCT_UNIT_DOC IS NOT NULL ) THEN
1427
1428 L_RCV_AE_LINE.ENTERED_DR := ROUND (L_RCV_AE_LINE.ENTERED_DR / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1429 L_RCV_AE_LINE.ENTERED_NR_TAX := ROUND (L_RCV_AE_LINE.ENTERED_NR_TAX / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1430 L_RCV_AE_LINE.ENTERED_REC_TAX := ROUND (L_RCV_AE_LINE.ENTERED_REC_TAX / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1431
1432 L_PRIOR_ENTERED_DR := ROUND (L_PRIOR_ENTERED_DR / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1433 L_PRIOR_ENTERED_NR_TAX := ROUND (L_PRIOR_ENTERED_NR_TAX / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1434 L_PRIOR_ENTERED_REC_TAX := ROUND (L_PRIOR_ENTERED_REC_TAX / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1435
1436 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1437 -- Tax Columns contain the Tax Amount in the case of Service Line Types
1438 -- Accounted_Nr_Tax
1439 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_NR_TAX_AMOUNT/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1440
1441 -- Accounted_Rec_Tax
1442 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_REC_TAX_AMOUNT/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1443
1444 -- Accounted_Dr
1445 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.TRANSACTION_AMOUNT/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1446
1447 ELSE
1448 -- Accounted_Nr_Tax
1449 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.NR_TAX * L_RCV_AE_LINE.PRIMARY_QUANTITY/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1450
1451 -- Accounted_Rec_Tax
1452 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.REC_TAX * L_RCV_AE_LINE.PRIMARY_QUANTITY/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1453
1454 -- Accounted_Dr
1455 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.UNIT_PRICE/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1456
1457 -- Prior_Accounted_Nr_Tax
1458 L_PRIOR_ACCOUNTED_NR_TAX := ROUND (L_PRIOR_NR_TAX * L_RCV_AE_LINE.PRIMARY_QUANTITY/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1459
1460 -- Prior_Accounted_Rec_Tax
1461 L_PRIOR_ACCOUNTED_REC_TAX := ROUND (L_PRIOR_REC_TAX * L_RCV_AE_LINE.PRIMARY_QUANTITY/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1462
1463 -- Prior_Accounted_Dr
1464 L_PRIOR_ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.PRIOR_UNIT_PRICE/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1465
1466 END IF; -- UNIT_PRICE NULL
1467 ELSE
1468 L_RCV_AE_LINE.ENTERED_DR := ROUND (L_RCV_AE_LINE.ENTERED_DR, L_CURR_REC.PRECISION_DOC);
1469 L_RCV_AE_LINE.ENTERED_NR_TAX := ROUND (L_RCV_AE_LINE.ENTERED_NR_TAX, L_CURR_REC.PRECISION_DOC);
1470 L_RCV_AE_LINE.ENTERED_REC_TAX := ROUND (L_RCV_AE_LINE.ENTERED_REC_TAX, L_CURR_REC.PRECISION_DOC);
1471 L_PRIOR_ENTERED_DR := ROUND (L_PRIOR_ENTERED_DR, L_CURR_REC.PRECISION_DOC);
1472 L_PRIOR_ENTERED_NR_TAX := ROUND (L_PRIOR_ENTERED_NR_TAX, L_CURR_REC.PRECISION_DOC);
1473 L_PRIOR_ENTERED_REC_TAX := ROUND (L_PRIOR_ENTERED_REC_TAX, L_CURR_REC.PRECISION_DOC);
1474 -- Accounted_Dr
1475 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1476 -- Accounted_Nr_Tax
1477 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_NR_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1478
1479 -- Accounted_Rec_Tax
1480 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_REC_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1481
1482 -- Accounted_Dr
1483 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.TRANSACTION_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1484 ELSE
1485 -- Accounted_Nr_Tax
1486 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.NR_TAX, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1487
1488 -- Accounted_Rec_Tax
1489 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.REC_TAX, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1490
1491 -- Accounted_Dr
1492 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.UNIT_PRICE, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1493
1494 -- Prior_Accounted_Nr_Tax
1495 L_PRIOR_ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_PRIOR_NR_TAX, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1496
1497 -- Prior_Accounted_Rec_Tax
1498 L_PRIOR_ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_PRIOR_REC_TAX, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1499
1500 -- Prior_Accounted_Dr
1501 L_PRIOR_ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.PRIOR_UNIT_PRICE, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1502
1503 END IF;
1504 END IF; -- MIN_ACCT_UNIT_DOC IS NOT NULL
1505
1506 -- Accounted_Dr, Entered_Dr, NR_Tax, Rec_Tax
1507 -- Use Functional Currency to Round the amounts obtained above.
1508 l_stmt_num := 130;
1509 IF ( L_CURR_REC.MIN_ACCT_UNIT_FUNC IS NOT NULL ) THEN
1510 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.ACCOUNTED_DR / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1511 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_NR_TAX / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1512 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_REC_TAX / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1513
1514 -- Retroactive Pricing --
1515 L_PRIOR_ACCOUNTED_DR := ROUND (L_PRIOR_ACCOUNTED_DR / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1516 L_PRIOR_ACCOUNTED_NR_TAX := ROUND (L_PRIOR_ACCOUNTED_NR_TAX / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1517 L_PRIOR_ACCOUNTED_REC_TAX := ROUND (L_PRIOR_ACCOUNTED_REC_TAX /L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1518
1519 ELSE
1520 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.ACCOUNTED_DR, L_CURR_REC.PRECISION_FUNC);
1521 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_NR_TAX, L_CURR_REC.PRECISION_FUNC);
1522 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_REC_TAX, L_CURR_REC.PRECISION_FUNC);
1523
1524 -- Retroactive Pricing --
1525 L_PRIOR_ACCOUNTED_DR := ROUND (L_PRIOR_ACCOUNTED_DR, L_CURR_REC.PRECISION_FUNC);
1526 L_PRIOR_ACCOUNTED_NR_TAX := ROUND (L_PRIOR_ACCOUNTED_NR_TAX, L_CURR_REC.PRECISION_FUNC);
1527 L_PRIOR_ACCOUNTED_REC_TAX := ROUND (L_PRIOR_ACCOUNTED_REC_TAX, L_CURR_REC.PRECISION_FUNC);
1528
1529 END IF;
1530
1531
1532 -- Actual_Flag
1533 l_stmt_num := 140;
1534 IF ( L_RCV_AE_LINE.EVENT_TYPE_ID = RCV_SeedEvents_PVT.ENCUMBRANCE_REVERSAL ) THEN
1535 L_RCV_AE_LINE.ACTUAL_FLAG := 'E';
1536 ELSE
1537 L_RCV_AE_LINE.ACTUAL_FLAG := 'A';
1538 END IF;
1539
1540 l_stmt_num := 145;
1541
1542 -- For Retroactive Pricing
1543 -- Accounted_Dr = New_Accounted_Dr (= Accounted_Dr) - Prior_Accounted_Dr and similar
1544
1545 IF (L_RCV_AE_LINE.EVENT_TYPE_ID IN (RCV_SeedEvents_PVT.ADJUST_RECEIVE, RCV_SeedEvents_PVT.ADJUST_DELIVER)) THEN
1546 L_RCV_AE_LINE.ACCOUNTED_DR := L_RCV_AE_LINE.ACCOUNTED_DR - L_PRIOR_ACCOUNTED_DR;
1547 L_RCV_AE_LINE.ENTERED_DR := L_RCV_AE_LINE.ENTERED_DR - L_PRIOR_ENTERED_DR;
1548 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := L_RCV_AE_LINE.ACCOUNTED_NR_TAX - L_PRIOR_ACCOUNTED_NR_TAX;
1549 L_RCV_AE_LINE.ENTERED_NR_TAX := L_RCV_AE_LINE.ENTERED_NR_TAX - L_PRIOR_ENTERED_NR_TAX;
1550 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := L_RCV_AE_LINE.ACCOUNTED_REC_TAX - L_PRIOR_ACCOUNTED_REC_TAX;
1551 L_RCV_AE_LINE.ENTERED_REC_TAX := L_RCV_AE_LINE.ENTERED_NR_TAX - L_PRIOR_ENTERED_REC_TAX;
1552 END IF;
1553 */
1554
1555 /* changes for Bug 6142658 starts */
1556 -- For Retroactive Pricing
1557 IF (L_RCV_AE_LINE.EVENT_TYPE_ID IN (RCV_SeedEvents_PVT.ADJUST_RECEIVE, RCV_SeedEvents_PVT.ADJUST_DELIVER)) THEN
1558 -- ENTERED Values
1559 L_RCV_AE_LINE.ENTERED_DR :=L_RCV_AE_LINE.ENTERED_DR-NVL(L_PRIOR_ENTERED_DR,0);
1560 L_RCV_AE_LINE.ENTERED_NR_TAX :=L_RCV_AE_LINE.ENTERED_NR_TAX-NVL(L_PRIOR_ENTERED_NR_TAX,0);
1561 L_RCV_AE_LINE.ENTERED_REC_TAX :=L_RCV_AE_LINE.ENTERED_REC_TAX-NVL(L_PRIOR_ENTERED_REC_TAX,0);
1562
1563 L_RCV_AE_LINE.NR_TAX := L_RCV_AE_LINE.NR_TAX-NVL(L_PRIOR_NR_TAX,0);
1564 L_RCV_AE_LINE.REC_TAX := L_RCV_AE_LINE.REC_TAX-NVL(L_PRIOR_REC_TAX,0);
1565 L_RCV_AE_LINE.UNIT_PRICE := L_RCV_AE_LINE.UNIT_PRICE-NVL(L_RCV_AE_LINE.PRIOR_UNIT_PRICE,0);
1566 END IF;
1567
1568 -- Accounted_Dr, Accounted_Nr_Tax, Accounted_Rec_Tax
1569 -- Use Document Currency Precision/MAU to round before doing currency conversion
1570 l_stmt_num := 120;
1571 IF ( L_CURR_REC.MIN_ACCT_UNIT_DOC IS NOT NULL ) THEN
1572
1573 L_RCV_AE_LINE.ENTERED_DR := ROUND (L_RCV_AE_LINE.ENTERED_DR / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1574 L_RCV_AE_LINE.ENTERED_NR_TAX := ROUND (L_RCV_AE_LINE.ENTERED_NR_TAX / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1575 L_RCV_AE_LINE.ENTERED_REC_TAX := ROUND (L_RCV_AE_LINE.ENTERED_REC_TAX / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1576
1577 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1578 -- Tax Columns contain the Tax Amount in the case of Service Line Types
1579 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_NR_TAX_AMOUNT/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1580 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_REC_TAX_AMOUNT/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1581 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.TRANSACTION_AMOUNT/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1582
1583 ELSE
1584 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.NR_TAX * L_RCV_AE_LINE.PRIMARY_QUANTITY/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1585 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.REC_TAX * L_RCV_AE_LINE.PRIMARY_QUANTITY/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1586 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.UNIT_PRICE/L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1587 END IF; -- UNIT_PRICE NULL
1588 ELSE
1589 L_RCV_AE_LINE.ENTERED_DR := ROUND (L_RCV_AE_LINE.ENTERED_DR, L_CURR_REC.PRECISION_DOC);
1590 L_RCV_AE_LINE.ENTERED_NR_TAX := ROUND (L_RCV_AE_LINE.ENTERED_NR_TAX, L_CURR_REC.PRECISION_DOC);
1591 L_RCV_AE_LINE.ENTERED_REC_TAX := ROUND (L_RCV_AE_LINE.ENTERED_REC_TAX, L_CURR_REC.PRECISION_DOC);
1592 -- Accounted_Dr
1593 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1594
1595 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_NR_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1596 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_REC_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1597 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.TRANSACTION_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1598 ELSE
1599 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.NR_TAX, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1600 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.REC_TAX, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1601 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.UNIT_PRICE, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1602 END IF;
1603 END IF; -- MIN_ACCT_UNIT_DOC IS NOT NULL
1604
1605 -- Accounted_Dr, Entered_Dr, NR_Tax, Rec_Tax
1606 -- Use Functional Currency to Round the amounts obtained above.
1607 l_stmt_num := 130;
1608 IF ( L_CURR_REC.MIN_ACCT_UNIT_FUNC IS NOT NULL ) THEN
1609 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.ACCOUNTED_DR / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1610 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_NR_TAX / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1611 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_REC_TAX / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1612 ELSE
1613 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.ACCOUNTED_DR, L_CURR_REC.PRECISION_FUNC);
1614 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_NR_TAX, L_CURR_REC.PRECISION_FUNC);
1615 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_REC_TAX, L_CURR_REC.PRECISION_FUNC);
1616 END IF;
1617 /* changes for Bug 6142658 Ends */
1618
1619 -- Actual_Flag
1620 l_stmt_num := 140;
1621 IF ( L_RCV_AE_LINE.EVENT_TYPE_ID = RCV_SeedEvents_PVT.ENCUMBRANCE_REVERSAL ) THEN
1622 L_RCV_AE_LINE.ACTUAL_FLAG := 'E';
1623 ELSE
1624 L_RCV_AE_LINE.ACTUAL_FLAG := 'A';
1625 END IF;
1626
1627 -- Accounted_Cr
1628 l_stmt_num := 150;
1629 L_RCV_AE_LINE.ACCOUNTED_CR := L_RCV_AE_LINE.ACCOUNTED_DR;
1630
1631 -- Entered_Cr
1632 l_stmt_num := 160;
1633 L_RCV_AE_LINE.ENTERED_CR := L_RCV_AE_LINE.ENTERED_DR;
1634
1635 -- One Time Item?
1636 l_stmt_num := 190;
1637 IF ( L_RCV_AE_LINE.INVENTORY_ITEM_ID IS NULL ) THEN
1638 l_one_time_item := 'Y';
1639 END IF;
1640
1641 -- Get the parent transaction information
1642 -- Needed for determining accounting line type for certain transaction types
1643
1644 l_stmt_num := 200;
1645
1646 SELECT nvl(PARENT_TRANSACTION_ID, -1)
1647 INTO l_parent_rcv_txn_id
1648 FROM RCV_TRANSACTIONS
1649 WHERE transaction_id = L_RCV_AE_LINE.RCV_TRANSACTION_ID;
1650
1651 -- Get DESTINATION_TYPE_CODE from PO_DISTRIBUTIONS
1652 l_stmt_num := 205;
1653
1654 SELECT DESTINATION_TYPE_CODE
1655 INTO l_destination_type_code
1656 FROM PO_DISTRIBUTIONS
1657 WHERE PO_DISTRIBUTION_ID = L_RCV_AE_LINE.DOC_DISTRIBUTION_ID;
1658
1659 -- Get the parent transaction_type
1660 l_stmt_num := 210;
1661 IF (l_parent_rcv_txn_id <> -1) THEN
1662 SELECT TRANSACTION_TYPE
1663 INTO l_parent_txn_type
1664 FROM RCV_TRANSACTIONS
1665 WHERE transaction_id = l_parent_rcv_txn_id;
1666 END IF;
1667
1668
1669 -- Get the accounting line type
1670 l_stmt_num := 220;
1671 Get_AccountingLineType(
1672 p_api_version => 1.0,
1673 x_return_status => l_return_status,
1674 x_msg_count => x_msg_count,
1675 x_msg_data => x_msg_data,
1676 p_event_type_id => L_RCV_AE_LINE.EVENT_TYPE_ID,
1677 p_parent_txn_type => l_parent_txn_type,
1678 p_proc_org_flag => L_RCV_AE_LINE.PROCUREMENT_ORG_FLAG,
1679 p_one_time_item_flag => l_one_time_item,
1680 p_destination_type => l_destination_type_code,
1681 p_global_proc_flag => L_RCV_AE_LINE.GLOBAL_PROC_FLAG,
1682 x_debit_line_type => L_RCV_AE_LINE.DEBIT_LINE_TYPE,
1683 x_credit_line_type => L_RCV_AE_LINE.CREDIT_LINE_TYPE
1684 );
1685
1686 /* Support for Landed Cost Management */
1687 IF P_LCM_FLAG = 'Y' THEN
1688 L_RCV_INSP_ENTERED_VAL := (L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.UNIT_LANDED_COST) / L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1689
1690 IF ( L_CURR_REC.MIN_ACCT_UNIT_DOC IS NOT NULL ) THEN
1691 L_RCV_INSP_ENTERED_VAL := ROUND (L_RCV_INSP_ENTERED_VAL / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1692 ELSE
1693 L_RCV_INSP_ENTERED_VAL := ROUND (L_RCV_INSP_ENTERED_VAL, L_CURR_REC.PRECISION_DOC);
1694 END IF;
1695
1696 L_RCV_INSP_ACCOUNTED_VAL := L_RCV_INSP_ENTERED_VAL * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1697
1698 IF ( L_CURR_REC.MIN_ACCT_UNIT_FUNC IS NOT NULL ) THEN
1699 L_RCV_INSP_ACCOUNTED_VAL := ROUND (L_RCV_INSP_ACCOUNTED_VAL / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1700 ELSE
1701 L_RCV_INSP_ACCOUNTED_VAL := ROUND (L_RCV_INSP_ACCOUNTED_VAL, L_CURR_REC.PRECISION_FUNC);
1702 END IF;
1703
1704 /* Reset the Accounted /Entered Dr /Cr with the receiving value
1705 calculated at landed cost */
1706 IF L_RCV_AE_LINE.CREDIT_LINE_TYPE = RECEIVING_INSPECTION THEN
1707 L_RCV_AE_LINE.ACCOUNTED_CR := L_RCV_INSP_ACCOUNTED_VAL;
1708 L_RCV_AE_LINE.ENTERED_CR := L_RCV_INSP_ENTERED_VAL;
1709
1710 ELSE
1711 L_RCV_AE_LINE.ACCOUNTED_DR := L_RCV_INSP_ACCOUNTED_VAL;
1712 L_RCV_AE_LINE.ENTERED_DR := L_RCV_INSP_ENTERED_VAL;
1713
1714 END IF;
1715
1716 /* The landed cost absorption account absorbs the difference between Receiving inspection
1717 and accrual value */
1718 L_RCV_AE_LINE.LDD_COST_ABS_ENTERED := L_RCV_AE_LINE.ENTERED_CR - L_RCV_AE_LINE.ENTERED_DR;
1719 L_RCV_AE_LINE.LDD_COST_ABS_ACCOUNTED := L_RCV_AE_LINE.ACCOUNTED_CR - L_RCV_AE_LINE.ACCOUNTED_DR;
1720
1721 END IF;
1722
1723 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1724 l_api_message := 'Error in getting Accounting Line Type';
1725 IF G_DEBUG = 'Y' THEN
1726 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1727 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1728 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1729 END IF;
1730 END IF;
1731 RAISE FND_API.g_exc_unexpected_error;
1732 END IF;
1733
1734 -- Insert Accounting Lines in the Sub Ledger
1735 l_stmt_num := 240;
1736 Insert_SubLedgerLines(
1737 p_api_version => 1.0,
1738 x_return_status => l_return_status,
1739 x_msg_count => x_msg_count,
1740 x_msg_data => x_msg_data,
1741 p_rcv_ae_line => l_rcv_ae_line,
1742 p_glinfo => l_glinfo
1743 );
1744
1745 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1746 l_api_message := 'Error inserting into RCV_RECEIVING_SUB_LEDGER';
1747 IF G_DEBUG = 'Y' THEN
1748 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1749 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1750 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1751 END IF;
1752 END IF;
1753 RAISE FND_API.g_exc_unexpected_error;
1754 END IF;
1755
1756 -- Raise the SLA event
1757 l_trx_info.TRANSACTION_ID := L_RCV_AE_LINE.RCV_TRANSACTION_ID;
1758 l_trx_info.ACCT_EVENT_ID := L_RCV_AE_LINE.ACCOUNTING_EVENT_ID;
1759 l_trx_info.ACCT_EVENT_TYPE_ID := L_RCV_AE_LINE.EVENT_TYPE_ID;
1760 l_trx_info.TRANSACTION_DATE := L_RCV_AE_LINE.TRANSACTION_DATE;
1761 l_trx_info.INV_ORGANIZATION_ID := L_RCV_AE_LINE.ORGANIZATION_ID;
1762 l_trx_info.OPERATING_UNIT := L_RCV_AE_LINE.ORG_ID;
1763 l_trx_info.LEDGER_ID := L_RCV_AE_LINE.SET_OF_BOOKS_ID;
1764
1765
1766 IF L_RCV_AE_LINE.EVENT_TYPE_ID = 3 THEN
1767 l_trx_info.ATTRIBUTE := l_parent_txn_type;
1768 END IF;
1769
1770 l_stmt_num := 250;
1771
1772
1773 l_trx_info.ENCUMBRANCE_FLAG := 'N';
1774
1775 IF L_RCV_AE_LINE.GLOBAL_PROC_FLAG = 'N' THEN
1776
1777 l_stmt_num := 260;
1778
1779 SELECT nvl(purch_encumbrance_flag, 'N')
1780 INTO l_trx_info.ENCUMBRANCE_FLAG
1781 FROM financials_system_params_all
1782 WHERE set_of_books_id = l_rcv_ae_line.set_of_books_id
1783 AND org_id = l_rcv_ae_line.org_id;
1784
1785 IF G_DEBUG = 'Y' THEN
1786 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1787 l_api_message := 'Encumbrance Flag: '||l_trx_info.ENCUMBRANCE_FLAG;
1788 FND_LOG.string(FND_LOG.LEVEL_STATEMENT,G_LOG_HEAD||'.'||l_api_name||'.'||l_stmt_num ,l_api_message);
1789 END IF;
1790 END IF;
1791 END IF;
1792
1793 l_stmt_num := 260;
1794
1795 CST_XLA_PVT.Create_RCVXLAEvent(
1796 p_api_version => 1.0,
1797 p_init_msg_list => FND_API.G_FALSE,
1798 p_commit => FND_API.G_FALSE,
1799 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1800 x_return_status => l_return_status,
1801 x_msg_count => x_msg_count,
1802 x_msg_data => x_msg_data,
1803 p_trx_info => l_trx_info);
1804
1805 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1806 l_api_message := 'Error raising SLA Event';
1807 IF G_DEBUG = 'Y' THEN
1808 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1809 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1810 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1811 END IF;
1812 END IF;
1813 RAISE FND_API.g_exc_unexpected_error;
1814 END IF;
1815
1816
1817 IF G_DEBUG = 'Y' THEN
1818 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1819 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,G_LOG_HEAD || '.'||l_api_name||'.end'
1820 ,'Create_AccountingEntry >>');
1821 END IF;
1822 END IF;
1823
1824 EXCEPTION
1825 WHEN FND_API.g_exc_error THEN
1826 ROLLBACK TO RCV_CreateAccounting_PVT;
1827 x_return_status := FND_API.g_ret_sts_error;
1828 FND_MSG_PUB.count_and_get
1829 ( p_count => x_msg_count
1830 , p_data => x_msg_data
1831 );
1832 WHEN FND_API.g_exc_unexpected_error THEN
1833 ROLLBACK TO RCV_CreateAccounting_PVT;
1834 x_return_status := FND_API.g_ret_sts_unexp_error ;
1835 FND_MSG_PUB.count_and_get
1836 ( p_count => x_msg_count
1837 , p_data => x_msg_data
1838 );
1839 WHEN NO_RAE_DATA THEN
1840 ROLLBACK TO RCV_CreateAccounting_PVT;
1841 IF G_DEBUG = 'Y' THEN
1842 l_api_message := 'No Data in RAE for Transaction';
1843 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1844 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD || '.'||l_api_name||l_stmt_num, 'Create_AccountingEntry : '||l_stmt_num||' : '||SUBSTR(sqlerrm,1,200));
1845 END IF;
1846 END IF;
1847
1848 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1849 FND_MSG_PUB.Add_Exc_Msg(
1850 p_pkg_name => G_PKG_NAME,
1851 p_procedure_name => l_api_name,
1852 p_error_text => 'Error at: '||
1853 to_char(l_stmt_num) || ' '||
1854 'No Data in RAE for Transaction'||
1855 SQLERRM
1856 );
1857
1858 END IF;
1859 x_return_status := FND_API.G_RET_STS_ERROR;
1860 FND_MSG_PUB.count_and_get
1861 ( p_count => x_msg_count
1862 , p_data => x_msg_data
1863 );
1864 WHEN NO_CURRENCY_INFORMATION THEN
1865 ROLLBACK TO RCV_CreateAccounting_PVT;
1866 IF G_DEBUG = 'Y' THEN
1867 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1868 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD || '.'||l_api_name||l_stmt_num, 'No Data in FND_CURRENCIES for Currency Specified : '||l_stmt_num||' : '||SUBSTR(sqlerrm,1,200));
1869 END IF;
1870 END IF;
1871
1872 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1873 FND_MSG_PUB.Add_Exc_Msg(
1874 p_pkg_name => G_PKG_NAME,
1875 p_procedure_name => l_api_name,
1876 p_error_text => 'Error at: '||
1877 to_char(l_stmt_num) || ' '||
1878 'No Data in FND_CURRENCIES for Currency Specified'||
1879 SQLERRM
1880 );
1881
1882 END IF;
1883 x_return_status := FND_API.G_RET_STS_ERROR;
1884 FND_MSG_PUB.count_and_get
1885 ( p_count => x_msg_count
1886 , p_data => x_msg_data
1887 );
1888
1889 WHEN NO_PO_INFORMATION THEN
1890 ROLLBACK TO RCV_CreateAccounting_PVT;
1891 IF G_DEBUG = 'Y' THEN
1892 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1893 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD || '.'||l_api_name||l_stmt_num, 'No Data in PO Tables for the Transaction : '||l_stmt_num||' : '||SUBSTR(sqlerrm,1,200));
1894 END IF;
1895 END IF;
1896
1897 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1898 FND_MSG_PUB.Add_Exc_Msg(
1899 p_pkg_name => G_PKG_NAME,
1900 p_procedure_name => l_api_name,
1901 p_error_text => 'Error at: '||
1902 to_char(l_stmt_num) || ' '||
1903 'No Data in PO Tables for the Transaction'||
1904 SQLERRM
1905 );
1906
1907 END IF;
1908 x_return_status := FND_API.G_RET_STS_ERROR;
1909 FND_MSG_PUB.count_and_get
1910 ( p_count => x_msg_count
1911 , p_data => x_msg_data
1912 );
1913
1914
1915 WHEN OTHERS THEN
1916 ROLLBACK TO RCV_CreateAccounting_PVT;
1917 IF G_DEBUG = 'Y' THEN
1918 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1919 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD || '.'||l_api_name||l_stmt_num, 'Create_AccountingEntry : '||l_stmt_num||' : '||SUBSTR(sqlerrm,1,200));
1920 END IF;
1921 END IF;
1922
1923 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1924 FND_MSG_PUB.Add_Exc_Msg(
1925 p_pkg_name => G_PKG_NAME,
1926 p_procedure_name => l_api_name,
1927 p_error_text => 'Error at: '||
1928 to_char(l_stmt_num) || ' '||
1929 SQLERRM
1930 );
1931
1932 END IF;
1933 x_return_status := FND_API.G_RET_STS_ERROR;
1934 FND_MSG_PUB.count_and_get
1935 ( p_count => x_msg_count
1936 , p_data => x_msg_data
1937 );
1938
1939 END Create_AccountingEntry;
1940 END RCV_CreateAccounting_PVT;