[Home] [Help]
PACKAGE BODY: APPS.RCV_CREATEACCOUNTING_PVT
Source
1 PACKAGE BODY RCV_CreateAccounting_PVT AS
2 /* $Header: RCVVACCB.pls 120.17 2010/10/11 23:32:26 anjha 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 DECODE(p_rcv_ae_line.actual_flag,'E',-1,1) * 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 DECODE(p_rcv_ae_line.actual_flag,'E',-1,1) * 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 DECODE(p_rcv_ae_line.actual_flag,'E',-1,1) * 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 l_primary_qty NUMBER;
1129
1130 BEGIN
1131
1132
1133 -- Standard start of API savepoint
1134 SAVEPOINT RCV_CreateAccounting_PVT;
1135
1136 IF G_DEBUG = 'Y' THEN
1137 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1138 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,G_LOG_HEAD || '.'||l_api_name||'.begin' ,'Create_AccountingEntry <<');
1139 END IF;
1140 END IF;
1141
1142 -- Standard call to check for call compatibility
1143 l_stmt_num := 10;
1144 IF NOT FND_API.Compatible_API_Call (
1145 l_api_version,
1146 p_api_version,
1147 l_api_name,
1148 G_PKG_NAME ) THEN
1149 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1150 END IF;
1151
1152 -- Initialize message list if p_init_msg_list is set to TRUE
1153 l_stmt_num := 20;
1154 IF FND_API.to_Boolean(p_init_msg_list) THEN
1155 FND_MSG_PUB.initialize;
1156 END IF;
1157
1158 -- Initialize API return status to success
1159
1160 x_return_status := FND_API.G_RET_STS_SUCCESS;
1161
1162
1163 -- Get Information from RCV_ACCOUNTING_EVENTS and populate l_rcv_ae_line
1164 BEGIN
1165 l_stmt_num := 30;
1166 SELECT
1167 ACCOUNTING_EVENT_ID,
1168 RCV_TRANSACTION_ID,
1169 DECODE(TRX_FLOW_HEADER_ID, NULL, 'N', 'Y'),
1170 PO_HEADER_ID,
1171 PO_DISTRIBUTION_ID,
1172 ORG_ID,
1173 ORGANIZATION_ID,
1174 SET_OF_BOOKS_ID,
1175 TRANSACTION_DATE,
1176 EVENT_TYPE_ID,
1177 CURRENCY_CODE,
1178 CURRENCY_CONVERSION_RATE,
1179 CURRENCY_CONVERSION_TYPE,
1180 CURRENCY_CONVERSION_DATE,
1181 SOURCE_DOC_QUANTITY, -- Document Quantity is used to create distributions
1182 UNIT_PRICE,
1183 /* Support for Landed Cost Management */
1184 UNIT_LANDED_COST,
1185 PRIOR_UNIT_PRICE,
1186 TRANSACTION_AMOUNT,
1187 NR_TAX,
1188 REC_TAX,
1189 NR_TAX_AMOUNT,
1190 REC_TAX_AMOUNT,
1191 NVL(PRIOR_NR_TAX, 0),
1192 NVL(PRIOR_REC_TAX, 0),
1193 DEBIT_ACCOUNT_ID,
1194 CREDIT_ACCOUNT_ID,
1195 /* Support for Landed Cost Management */
1196 LCM_ACCOUNT_ID,
1197 PROCUREMENT_ORG_FLAG,
1198 INVENTORY_ITEM_ID,
1199 USSGL_TRANSACTION_CODE,
1200 GL_GROUP_ID,
1201 CREATED_BY,
1202 LAST_UPDATED_BY,
1203 LAST_UPDATE_LOGIN,
1204 REQUEST_ID,
1205 PROGRAM_APPLICATION_ID,
1206 PROGRAM_ID,
1207 PRIMARY_QUANTITY
1208 INTO
1209 L_RCV_AE_LINE.ACCOUNTING_EVENT_ID,
1210 L_RCV_AE_LINE.RCV_TRANSACTION_ID,
1211 L_RCV_AE_LINE.GLOBAL_PROC_FLAG,
1212 L_RCV_AE_LINE.DOC_HEADER_ID,
1213 L_RCV_AE_LINE.DOC_DISTRIBUTION_ID,
1214 L_RCV_AE_LINE.ORG_ID,
1215 L_RCV_AE_LINE.ORGANIZATION_ID,
1216 L_RCV_AE_LINE.SET_OF_BOOKS_ID,
1217 L_RCV_AE_LINE.TRANSACTION_DATE,
1218 L_RCV_AE_LINE.EVENT_TYPE_ID,
1219 L_RCV_AE_LINE.CURRENCY_CODE,
1220 L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE,
1221 L_RCV_AE_LINE.CURRENCY_CONVERSION_TYPE,
1222 L_RCV_AE_LINE.CURRENCY_CONVERSION_DATE,
1223 L_RCV_AE_LINE.PRIMARY_QUANTITY,
1224 L_RCV_AE_LINE.UNIT_PRICE,
1225 /* Support for Landed Cost Management */
1226 L_RCV_AE_LINE.UNIT_LANDED_COST,
1227 L_RCV_AE_LINE.PRIOR_UNIT_PRICE,
1228 L_RCV_AE_LINE.TRANSACTION_AMOUNT,
1229 L_RCV_AE_LINE.NR_TAX,
1230 L_RCV_AE_LINE.REC_TAX,
1231 L_NR_TAX_AMOUNT,
1232 L_REC_TAX_AMOUNT,
1233 L_PRIOR_NR_TAX,
1234 L_PRIOR_REC_TAX,
1235 L_RCV_AE_LINE.DEBIT_ACCOUNT,
1236 L_RCV_AE_LINE.CREDIT_ACCOUNT,
1237 /* Support for Landed Cost Management */
1238 L_RCV_AE_LINE.LCM_ACCOUNT_ID,
1239 L_RCV_AE_LINE.PROCUREMENT_ORG_FLAG,
1240 L_RCV_AE_LINE.INVENTORY_ITEM_ID,
1241 L_RCV_AE_LINE.USSGL_TRANSACTION_CODE,
1242 L_RCV_AE_LINE.GL_GROUP_ID,
1243 L_RCV_AE_LINE.CREATED_BY,
1244 L_RCV_AE_LINE.LAST_UPDATED_BY,
1245 L_RCV_AE_LINE.LAST_UPDATE_LOGIN,
1246 L_RCV_AE_LINE.REQUEST_ID,
1247 L_RCV_AE_LINE.PROGRAM_APPLICATION_ID,
1248 L_RCV_AE_LINE.PROGRAM_ID,
1249 l_primary_qty
1250 FROM
1251 RCV_ACCOUNTING_EVENTS
1252 WHERE
1253 ACCOUNTING_EVENT_ID = p_accounting_event_id;
1254 EXCEPTION
1255 WHEN NO_DATA_FOUND THEN
1256 RAISE NO_RAE_DATA;
1257 END;
1258
1259
1260 l_stmt_num := 35;
1261 -- Some true drop shipment cases do not have transaction_flow_header_id
1262 -- The dropship_type_code should also be checked
1263
1264 SELECT
1265 DECODE( DROPSHIP_TYPE_CODE, 1, 'Y', 2, 'Y', 'N' )
1266 INTO
1267 l_drop_ship
1268 FROM
1269 RCV_TRANSACTIONS
1270 WHERE
1271 TRANSACTION_ID = L_RCV_AE_LINE.RCV_TRANSACTION_ID;
1272
1273 l_stmt_num := 37;
1274
1275 IF ( l_drop_ship = 'Y' ) THEN
1276 L_RCV_AE_LINE.GLOBAL_PROC_FLAG := 'Y';
1277 END IF;
1278
1279 -- Get some information from Document tables for Reference cols in Subledger
1280 BEGIN
1281 l_stmt_num := 40;
1282 SELECT
1283 SEGMENT1
1284 INTO
1285 L_RCV_AE_LINE.DOC_NUMBER
1286 FROM
1287 PO_HEADERS
1288 WHERE
1289 PO_HEADER_ID = L_RCV_AE_LINE.DOC_HEADER_ID;
1290 EXCEPTION
1291 WHEN NO_DATA_FOUND THEN
1292 RAISE NO_PO_INFORMATION;
1293 END;
1294 BEGIN
1295 l_stmt_num := 50;
1296 SELECT
1297 substrb(POL.ITEM_DESCRIPTION,1,100)
1298 INTO
1299 L_RCV_AE_LINE.ITEM_DESCRIPTION
1300 FROM
1301 PO_LINES POL,
1302 PO_DISTRIBUTIONS POD
1303 WHERE
1304 POD.PO_DISTRIBUTION_ID = L_RCV_AE_LINE.DOC_DISTRIBUTION_ID
1305 AND POL.PO_LINE_ID = POD.PO_LINE_ID;
1306 EXCEPTION
1307 WHEN NO_DATA_FOUND THEN
1308 RAISE NO_PO_INFORMATION;
1309 END;
1310
1311
1312 -- Timezone --
1313 -- The periods are computed using event_time in the
1314 -- legal entity time zone. Find it using MGD's Inventory API
1315
1316 -- Get the Legal Entity
1317 l_stmt_num := 55;
1318
1319 SELECT LEGAL_ENTITY
1320 INTO l_legal_entity
1321 FROM CST_ACCT_INFO_V
1322 WHERE ORGANIZATION_ID = l_rcv_ae_line.organization_id;
1323
1324 -- Convert the event_date to Legal Entity time zome
1325 l_stmt_num := 57;
1326
1327 l_event_le_date := INV_LE_TIMEZONE_PUB.Get_Le_Day_For_Server (
1328 p_trxn_date => l_rcv_ae_line.transaction_date,
1329 p_le_id => l_legal_entity );
1330
1331
1332 -- Populate GL Information
1333 l_stmt_num := 60;
1334 Get_GLInformation
1335 ( p_api_version => 1.0,
1336 x_return_status => l_return_status,
1337 x_msg_count => x_msg_count,
1338 x_msg_data => x_msg_data,
1339 p_event_date => l_event_le_date,
1340 p_event_doc_num => l_rcv_ae_line.doc_number,
1341 p_event_type_id => l_rcv_ae_line.event_type_id,
1342 p_set_of_books_id => l_rcv_ae_line.set_of_books_id,
1343 x_gl_information => l_glinfo
1344 );
1345
1346
1347 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1348 l_api_message := 'Error in getting GL Information';
1349 IF G_DEBUG = 'Y' THEN
1350 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1351 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1352 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1353 END IF;
1354 END IF;
1355 RAISE FND_API.g_exc_unexpected_error;
1356 END IF;
1357
1358
1359 -- Populate currency information into currency structure
1360 l_stmt_num := 70;
1361
1362 L_CURR_REC.CURRENCY_CONVERSION_RATE := L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1363 L_CURR_REC.CURRENCY_CONVERSION_TYPE := L_RCV_AE_LINE.CURRENCY_CONVERSION_TYPE;
1364 L_CURR_REC.CURRENCY_CONVERSION_DATE := L_RCV_AE_LINE.CURRENCY_CONVERSION_DATE;
1365
1366 -- Document Currency
1367 l_stmt_num := 80;
1368 BEGIN
1369 SELECT
1370 CURRENCY_CODE,
1371 MINIMUM_ACCOUNTABLE_UNIT,
1372 PRECISION
1373 INTO
1374 L_CURR_REC.DOCUMENT_CURRENCY,
1375 L_CURR_REC.MIN_ACCT_UNIT_DOC,
1376 L_CURR_REC.PRECISION_DOC
1377 FROM
1378 FND_CURRENCIES
1379 WHERE
1380 CURRENCY_CODE = L_RCV_AE_LINE.CURRENCY_CODE;
1381 EXCEPTION
1382 WHEN NO_DATA_FOUND THEN
1383 RAISE NO_CURRENCY_INFORMATION;
1384 END;
1385
1386
1387 -- Functional Currency
1388 l_stmt_num := 90;
1389 BEGIN
1390 SELECT
1391 CURRENCY_CODE,
1392 MINIMUM_ACCOUNTABLE_UNIT,
1393 PRECISION
1394 INTO
1395 L_CURR_REC.FUNCTIONAL_CURRENCY,
1396 L_CURR_REC.MIN_ACCT_UNIT_FUNC,
1397 L_CURR_REC.PRECISION_FUNC
1398 FROM
1399 FND_CURRENCIES
1400 WHERE
1401 CURRENCY_CODE = L_GLINFO.CURRENCY_CODE;
1402 EXCEPTION
1403 WHEN NO_DATA_FOUND THEN
1404 RAISE NO_CURRENCY_INFORMATION;
1405 END;
1406
1407
1408
1409 -- Populate the Accounting Structure
1410
1411 -- Entered_Dr
1412 l_stmt_num := 110;
1413 IF (L_RCV_AE_LINE.UNIT_PRICE IS NULL) THEN
1414 L_RCV_AE_LINE.ENTERED_DR := L_RCV_AE_LINE.TRANSACTION_AMOUNT;
1415 L_RCV_AE_LINE.ENTERED_NR_TAX := l_nr_tax_amount;
1416 L_RCV_AE_LINE.ENTERED_REC_TAX := l_rec_tax_amount;
1417 ELSE
1418 L_RCV_AE_LINE.ENTERED_DR := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.UNIT_PRICE;
1419 L_PRIOR_ENTERED_DR := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.PRIOR_UNIT_PRICE;
1420 L_RCV_AE_LINE.ENTERED_NR_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.NR_TAX;
1421 L_RCV_AE_LINE.ENTERED_REC_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_RCV_AE_LINE.REC_TAX;
1422 L_PRIOR_ENTERED_NR_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_PRIOR_NR_TAX;
1423 L_PRIOR_ENTERED_REC_TAX := L_RCV_AE_LINE.PRIMARY_QUANTITY * L_PRIOR_REC_TAX;
1424 END IF;
1425 /*
1426 -- Accounted_Dr, Accounted_Nr_Tax, Accounted_Rec_Tax
1427 -- Use Document Currency Precision/MAU to round before doing currency conversion
1428 l_stmt_num := 120;
1429 IF ( L_CURR_REC.MIN_ACCT_UNIT_DOC IS NOT NULL ) THEN
1430
1431 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;
1432 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;
1433 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;
1434
1435 L_PRIOR_ENTERED_DR := ROUND (L_PRIOR_ENTERED_DR / L_CURR_REC.MIN_ACCT_UNIT_DOC) * L_CURR_REC.MIN_ACCT_UNIT_DOC;
1436 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;
1437 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;
1438
1439 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1440 -- Tax Columns contain the Tax Amount in the case of Service Line Types
1441 -- Accounted_Nr_Tax
1442 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;
1443
1444 -- Accounted_Rec_Tax
1445 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;
1446
1447 -- Accounted_Dr
1448 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;
1449
1450 ELSE
1451 -- Accounted_Nr_Tax
1452 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;
1453
1454 -- Accounted_Rec_Tax
1455 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;
1456
1457 -- Accounted_Dr
1458 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;
1459
1460 -- Prior_Accounted_Nr_Tax
1461 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;
1462
1463 -- Prior_Accounted_Rec_Tax
1464 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;
1465
1466 -- Prior_Accounted_Dr
1467 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;
1468
1469 END IF; -- UNIT_PRICE NULL
1470 ELSE
1471 L_RCV_AE_LINE.ENTERED_DR := ROUND (L_RCV_AE_LINE.ENTERED_DR, L_CURR_REC.PRECISION_DOC);
1472 L_RCV_AE_LINE.ENTERED_NR_TAX := ROUND (L_RCV_AE_LINE.ENTERED_NR_TAX, L_CURR_REC.PRECISION_DOC);
1473 L_RCV_AE_LINE.ENTERED_REC_TAX := ROUND (L_RCV_AE_LINE.ENTERED_REC_TAX, L_CURR_REC.PRECISION_DOC);
1474 L_PRIOR_ENTERED_DR := ROUND (L_PRIOR_ENTERED_DR, L_CURR_REC.PRECISION_DOC);
1475 L_PRIOR_ENTERED_NR_TAX := ROUND (L_PRIOR_ENTERED_NR_TAX, L_CURR_REC.PRECISION_DOC);
1476 L_PRIOR_ENTERED_REC_TAX := ROUND (L_PRIOR_ENTERED_REC_TAX, L_CURR_REC.PRECISION_DOC);
1477 -- Accounted_Dr
1478 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1479 -- Accounted_Nr_Tax
1480 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_NR_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1481
1482 -- Accounted_Rec_Tax
1483 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_REC_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1484
1485 -- Accounted_Dr
1486 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;
1487 ELSE
1488 -- Accounted_Nr_Tax
1489 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;
1490
1491 -- Accounted_Rec_Tax
1492 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;
1493
1494 -- Accounted_Dr
1495 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;
1496
1497 -- Prior_Accounted_Nr_Tax
1498 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;
1499
1500 -- Prior_Accounted_Rec_Tax
1501 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;
1502
1503 -- Prior_Accounted_Dr
1504 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;
1505
1506 END IF;
1507 END IF; -- MIN_ACCT_UNIT_DOC IS NOT NULL
1508
1509 -- Accounted_Dr, Entered_Dr, NR_Tax, Rec_Tax
1510 -- Use Functional Currency to Round the amounts obtained above.
1511 l_stmt_num := 130;
1512 IF ( L_CURR_REC.MIN_ACCT_UNIT_FUNC IS NOT NULL ) THEN
1513 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;
1514 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;
1515 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;
1516
1517 -- Retroactive Pricing --
1518 L_PRIOR_ACCOUNTED_DR := ROUND (L_PRIOR_ACCOUNTED_DR / L_CURR_REC.MIN_ACCT_UNIT_FUNC) * L_CURR_REC.MIN_ACCT_UNIT_FUNC;
1519 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;
1520 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;
1521
1522 ELSE
1523 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.ACCOUNTED_DR, L_CURR_REC.PRECISION_FUNC);
1524 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_NR_TAX, L_CURR_REC.PRECISION_FUNC);
1525 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_REC_TAX, L_CURR_REC.PRECISION_FUNC);
1526
1527 -- Retroactive Pricing --
1528 L_PRIOR_ACCOUNTED_DR := ROUND (L_PRIOR_ACCOUNTED_DR, L_CURR_REC.PRECISION_FUNC);
1529 L_PRIOR_ACCOUNTED_NR_TAX := ROUND (L_PRIOR_ACCOUNTED_NR_TAX, L_CURR_REC.PRECISION_FUNC);
1530 L_PRIOR_ACCOUNTED_REC_TAX := ROUND (L_PRIOR_ACCOUNTED_REC_TAX, L_CURR_REC.PRECISION_FUNC);
1531
1532 END IF;
1533
1534
1535 -- Actual_Flag
1536 l_stmt_num := 140;
1537 IF ( L_RCV_AE_LINE.EVENT_TYPE_ID = RCV_SeedEvents_PVT.ENCUMBRANCE_REVERSAL ) THEN
1538 L_RCV_AE_LINE.ACTUAL_FLAG := 'E';
1539 ELSE
1540 L_RCV_AE_LINE.ACTUAL_FLAG := 'A';
1541 END IF;
1542
1543 l_stmt_num := 145;
1544
1545 -- For Retroactive Pricing
1546 -- Accounted_Dr = New_Accounted_Dr (= Accounted_Dr) - Prior_Accounted_Dr and similar
1547
1548 IF (L_RCV_AE_LINE.EVENT_TYPE_ID IN (RCV_SeedEvents_PVT.ADJUST_RECEIVE, RCV_SeedEvents_PVT.ADJUST_DELIVER)) THEN
1549 L_RCV_AE_LINE.ACCOUNTED_DR := L_RCV_AE_LINE.ACCOUNTED_DR - L_PRIOR_ACCOUNTED_DR;
1550 L_RCV_AE_LINE.ENTERED_DR := L_RCV_AE_LINE.ENTERED_DR - L_PRIOR_ENTERED_DR;
1551 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := L_RCV_AE_LINE.ACCOUNTED_NR_TAX - L_PRIOR_ACCOUNTED_NR_TAX;
1552 L_RCV_AE_LINE.ENTERED_NR_TAX := L_RCV_AE_LINE.ENTERED_NR_TAX - L_PRIOR_ENTERED_NR_TAX;
1553 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := L_RCV_AE_LINE.ACCOUNTED_REC_TAX - L_PRIOR_ACCOUNTED_REC_TAX;
1554 L_RCV_AE_LINE.ENTERED_REC_TAX := L_RCV_AE_LINE.ENTERED_NR_TAX - L_PRIOR_ENTERED_REC_TAX;
1555 END IF;
1556 */
1557
1558 /* changes for Bug 6142658 starts */
1559 -- For Retroactive Pricing
1560 IF (L_RCV_AE_LINE.EVENT_TYPE_ID IN (RCV_SeedEvents_PVT.ADJUST_RECEIVE, RCV_SeedEvents_PVT.ADJUST_DELIVER)) THEN
1561 -- ENTERED Values
1562 L_RCV_AE_LINE.ENTERED_DR :=L_RCV_AE_LINE.ENTERED_DR-NVL(L_PRIOR_ENTERED_DR,0);
1563 L_RCV_AE_LINE.ENTERED_NR_TAX :=L_RCV_AE_LINE.ENTERED_NR_TAX-NVL(L_PRIOR_ENTERED_NR_TAX,0);
1564 L_RCV_AE_LINE.ENTERED_REC_TAX :=L_RCV_AE_LINE.ENTERED_REC_TAX-NVL(L_PRIOR_ENTERED_REC_TAX,0);
1565
1566 L_RCV_AE_LINE.NR_TAX := L_RCV_AE_LINE.NR_TAX-NVL(L_PRIOR_NR_TAX,0);
1567 L_RCV_AE_LINE.REC_TAX := L_RCV_AE_LINE.REC_TAX-NVL(L_PRIOR_REC_TAX,0);
1568 L_RCV_AE_LINE.UNIT_PRICE := L_RCV_AE_LINE.UNIT_PRICE-NVL(L_RCV_AE_LINE.PRIOR_UNIT_PRICE,0);
1569 END IF;
1570
1571 -- Accounted_Dr, Accounted_Nr_Tax, Accounted_Rec_Tax
1572 -- Use Document Currency Precision/MAU to round before doing currency conversion
1573 l_stmt_num := 120;
1574 IF ( L_CURR_REC.MIN_ACCT_UNIT_DOC IS NOT NULL ) THEN
1575
1576 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;
1577 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;
1578 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;
1579
1580 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1581 -- Tax Columns contain the Tax Amount in the case of Service Line Types
1582 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;
1583 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;
1584 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;
1585
1586 ELSE
1587 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;
1588 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;
1589 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;
1590 END IF; -- UNIT_PRICE NULL
1591 ELSE
1592 L_RCV_AE_LINE.ENTERED_DR := ROUND (L_RCV_AE_LINE.ENTERED_DR, L_CURR_REC.PRECISION_DOC);
1593 L_RCV_AE_LINE.ENTERED_NR_TAX := ROUND (L_RCV_AE_LINE.ENTERED_NR_TAX, L_CURR_REC.PRECISION_DOC);
1594 L_RCV_AE_LINE.ENTERED_REC_TAX := ROUND (L_RCV_AE_LINE.ENTERED_REC_TAX, L_CURR_REC.PRECISION_DOC);
1595 -- Accounted_Dr
1596 IF ( L_RCV_AE_LINE.UNIT_PRICE IS NULL ) THEN
1597
1598 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_NR_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1599 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_REC_TAX_AMOUNT, L_CURR_REC.PRECISION_DOC) * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1600 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;
1601 ELSE
1602 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;
1603 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;
1604 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;
1605 END IF;
1606 END IF; -- MIN_ACCT_UNIT_DOC IS NOT NULL
1607
1608 -- Accounted_Dr, Entered_Dr, NR_Tax, Rec_Tax
1609 -- Use Functional Currency to Round the amounts obtained above.
1610 l_stmt_num := 130;
1611 IF ( L_CURR_REC.MIN_ACCT_UNIT_FUNC IS NOT NULL ) THEN
1612 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;
1613 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;
1614 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;
1615 ELSE
1616 L_RCV_AE_LINE.ACCOUNTED_DR := ROUND (L_RCV_AE_LINE.ACCOUNTED_DR, L_CURR_REC.PRECISION_FUNC);
1617 L_RCV_AE_LINE.ACCOUNTED_NR_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_NR_TAX, L_CURR_REC.PRECISION_FUNC);
1618 L_RCV_AE_LINE.ACCOUNTED_REC_TAX := ROUND (L_RCV_AE_LINE.ACCOUNTED_REC_TAX, L_CURR_REC.PRECISION_FUNC);
1619 END IF;
1620 /* changes for Bug 6142658 Ends */
1621
1622 -- Actual_Flag
1623 l_stmt_num := 140;
1624 IF ( L_RCV_AE_LINE.EVENT_TYPE_ID = RCV_SeedEvents_PVT.ENCUMBRANCE_REVERSAL ) THEN
1625 L_RCV_AE_LINE.ACTUAL_FLAG := 'E';
1626 ELSE
1627 L_RCV_AE_LINE.ACTUAL_FLAG := 'A';
1628 END IF;
1629
1630 -- Accounted_Cr
1631 l_stmt_num := 150;
1632 L_RCV_AE_LINE.ACCOUNTED_CR := L_RCV_AE_LINE.ACCOUNTED_DR;
1633
1634 -- Entered_Cr
1635 l_stmt_num := 160;
1636 L_RCV_AE_LINE.ENTERED_CR := L_RCV_AE_LINE.ENTERED_DR;
1637
1638 -- One Time Item?
1639 l_stmt_num := 190;
1640 IF ( L_RCV_AE_LINE.INVENTORY_ITEM_ID IS NULL ) THEN
1641 l_one_time_item := 'Y';
1642 END IF;
1643
1644 -- Get the parent transaction information
1645 -- Needed for determining accounting line type for certain transaction types
1646
1647 l_stmt_num := 200;
1648
1649 SELECT nvl(PARENT_TRANSACTION_ID, -1)
1650 INTO l_parent_rcv_txn_id
1651 FROM RCV_TRANSACTIONS
1652 WHERE transaction_id = L_RCV_AE_LINE.RCV_TRANSACTION_ID;
1653
1654 -- Get DESTINATION_TYPE_CODE from PO_DISTRIBUTIONS
1655 l_stmt_num := 205;
1656
1657 SELECT DESTINATION_TYPE_CODE
1658 INTO l_destination_type_code
1659 FROM PO_DISTRIBUTIONS
1660 WHERE PO_DISTRIBUTION_ID = L_RCV_AE_LINE.DOC_DISTRIBUTION_ID;
1661
1662 -- Get the parent transaction_type
1663 l_stmt_num := 210;
1664 IF (l_parent_rcv_txn_id <> -1) THEN
1665 SELECT TRANSACTION_TYPE
1666 INTO l_parent_txn_type
1667 FROM RCV_TRANSACTIONS
1668 WHERE transaction_id = l_parent_rcv_txn_id;
1669 END IF;
1670
1671
1672 -- Get the accounting line type
1673 l_stmt_num := 220;
1674 Get_AccountingLineType(
1675 p_api_version => 1.0,
1676 x_return_status => l_return_status,
1677 x_msg_count => x_msg_count,
1678 x_msg_data => x_msg_data,
1679 p_event_type_id => L_RCV_AE_LINE.EVENT_TYPE_ID,
1680 p_parent_txn_type => l_parent_txn_type,
1681 p_proc_org_flag => L_RCV_AE_LINE.PROCUREMENT_ORG_FLAG,
1682 p_one_time_item_flag => l_one_time_item,
1683 p_destination_type => l_destination_type_code,
1684 p_global_proc_flag => L_RCV_AE_LINE.GLOBAL_PROC_FLAG,
1685 x_debit_line_type => L_RCV_AE_LINE.DEBIT_LINE_TYPE,
1686 x_credit_line_type => L_RCV_AE_LINE.CREDIT_LINE_TYPE
1687 );
1688
1689 /* Support for Landed Cost Management */
1690 IF P_LCM_FLAG = 'Y' THEN
1691 L_RCV_INSP_ENTERED_VAL := (l_primary_qty * L_RCV_AE_LINE.UNIT_LANDED_COST) / L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1692
1693 IF ( L_CURR_REC.MIN_ACCT_UNIT_DOC IS NOT NULL ) THEN
1694 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;
1695 ELSE
1696 L_RCV_INSP_ENTERED_VAL := ROUND (L_RCV_INSP_ENTERED_VAL, L_CURR_REC.PRECISION_DOC);
1697 END IF;
1698
1699 L_RCV_INSP_ACCOUNTED_VAL := L_RCV_INSP_ENTERED_VAL * L_RCV_AE_LINE.CURRENCY_CONVERSION_RATE;
1700
1701 IF ( L_CURR_REC.MIN_ACCT_UNIT_FUNC IS NOT NULL ) THEN
1702 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;
1703 ELSE
1704 L_RCV_INSP_ACCOUNTED_VAL := ROUND (L_RCV_INSP_ACCOUNTED_VAL, L_CURR_REC.PRECISION_FUNC);
1705 END IF;
1706
1707 /* Reset the Accounted /Entered Dr /Cr with the receiving value
1708 calculated at landed cost */
1709 IF L_RCV_AE_LINE.CREDIT_LINE_TYPE = RECEIVING_INSPECTION THEN
1710 L_RCV_AE_LINE.ACCOUNTED_CR := L_RCV_INSP_ACCOUNTED_VAL;
1711 L_RCV_AE_LINE.ENTERED_CR := L_RCV_INSP_ENTERED_VAL;
1712
1713 ELSE
1714 L_RCV_AE_LINE.ACCOUNTED_DR := L_RCV_INSP_ACCOUNTED_VAL;
1715 L_RCV_AE_LINE.ENTERED_DR := L_RCV_INSP_ENTERED_VAL;
1716
1717 END IF;
1718
1719 /* The landed cost absorption account absorbs the difference between Receiving inspection
1720 and accrual value */
1721 L_RCV_AE_LINE.LDD_COST_ABS_ENTERED := L_RCV_AE_LINE.ENTERED_CR - L_RCV_AE_LINE.ENTERED_DR;
1722 L_RCV_AE_LINE.LDD_COST_ABS_ACCOUNTED := L_RCV_AE_LINE.ACCOUNTED_CR - L_RCV_AE_LINE.ACCOUNTED_DR;
1723
1724 END IF;
1725
1726 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1727 l_api_message := 'Error in getting Accounting Line Type';
1728 IF G_DEBUG = 'Y' THEN
1729 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1730 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1731 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1732 END IF;
1733 END IF;
1734 RAISE FND_API.g_exc_unexpected_error;
1735 END IF;
1736
1737 -- Insert Accounting Lines in the Sub Ledger
1738 l_stmt_num := 240;
1739 Insert_SubLedgerLines(
1740 p_api_version => 1.0,
1741 x_return_status => l_return_status,
1742 x_msg_count => x_msg_count,
1743 x_msg_data => x_msg_data,
1744 p_rcv_ae_line => l_rcv_ae_line,
1745 p_glinfo => l_glinfo
1746 );
1747
1748 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1749 l_api_message := 'Error inserting into RCV_RECEIVING_SUB_LEDGER';
1750 IF G_DEBUG = 'Y' THEN
1751 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1752 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1753 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1754 END IF;
1755 END IF;
1756 RAISE FND_API.g_exc_unexpected_error;
1757 END IF;
1758
1759 -- Raise the SLA event
1760 l_trx_info.TRANSACTION_ID := L_RCV_AE_LINE.RCV_TRANSACTION_ID;
1761 l_trx_info.ACCT_EVENT_ID := L_RCV_AE_LINE.ACCOUNTING_EVENT_ID;
1762 l_trx_info.ACCT_EVENT_TYPE_ID := L_RCV_AE_LINE.EVENT_TYPE_ID;
1763 l_trx_info.TRANSACTION_DATE := L_RCV_AE_LINE.TRANSACTION_DATE;
1764 l_trx_info.INV_ORGANIZATION_ID := L_RCV_AE_LINE.ORGANIZATION_ID;
1765 l_trx_info.OPERATING_UNIT := L_RCV_AE_LINE.ORG_ID;
1766 l_trx_info.LEDGER_ID := L_RCV_AE_LINE.SET_OF_BOOKS_ID;
1767
1768
1769 IF L_RCV_AE_LINE.EVENT_TYPE_ID = 3 THEN
1770 l_trx_info.ATTRIBUTE := l_parent_txn_type;
1771 END IF;
1772
1773 l_stmt_num := 250;
1774
1775
1776 l_trx_info.ENCUMBRANCE_FLAG := 'N';
1777
1778 IF L_RCV_AE_LINE.GLOBAL_PROC_FLAG = 'N' THEN
1779
1780 l_stmt_num := 260;
1781
1782 SELECT nvl(purch_encumbrance_flag, 'N')
1783 INTO l_trx_info.ENCUMBRANCE_FLAG
1784 FROM financials_system_params_all
1785 WHERE set_of_books_id = l_rcv_ae_line.set_of_books_id
1786 AND org_id = l_rcv_ae_line.org_id;
1787
1788 IF G_DEBUG = 'Y' THEN
1789 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1790 l_api_message := 'Encumbrance Flag: '||l_trx_info.ENCUMBRANCE_FLAG;
1791 FND_LOG.string(FND_LOG.LEVEL_STATEMENT,G_LOG_HEAD||'.'||l_api_name||'.'||l_stmt_num ,l_api_message);
1792 END IF;
1793 END IF;
1794 END IF;
1795
1796 l_stmt_num := 260;
1797
1798 CST_XLA_PVT.Create_RCVXLAEvent(
1799 p_api_version => 1.0,
1800 p_init_msg_list => FND_API.G_FALSE,
1801 p_commit => FND_API.G_FALSE,
1802 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1803 x_return_status => l_return_status,
1804 x_msg_count => x_msg_count,
1805 x_msg_data => x_msg_data,
1806 p_trx_info => l_trx_info);
1807
1808 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1809 l_api_message := 'Error raising SLA Event';
1810 IF G_DEBUG = 'Y' THEN
1811 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1812 FND_LOG.string(FND_LOG.LEVEL_UNEXPECTED,G_LOG_HEAD ||
1813 '.'||l_api_name||l_stmt_num ,'Create_AccountingEntry: '||l_stmt_num||' : '||l_api_message);
1814 END IF;
1815 END IF;
1816 RAISE FND_API.g_exc_unexpected_error;
1817 END IF;
1818
1819
1820 IF G_DEBUG = 'Y' THEN
1821 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1822 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,G_LOG_HEAD || '.'||l_api_name||'.end'
1823 ,'Create_AccountingEntry >>');
1824 END IF;
1825 END IF;
1826
1827 EXCEPTION
1828 WHEN FND_API.g_exc_error THEN
1829 ROLLBACK TO RCV_CreateAccounting_PVT;
1830 x_return_status := FND_API.g_ret_sts_error;
1831 FND_MSG_PUB.count_and_get
1832 ( p_count => x_msg_count
1833 , p_data => x_msg_data
1834 );
1835 WHEN FND_API.g_exc_unexpected_error THEN
1836 ROLLBACK TO RCV_CreateAccounting_PVT;
1837 x_return_status := FND_API.g_ret_sts_unexp_error ;
1838 FND_MSG_PUB.count_and_get
1839 ( p_count => x_msg_count
1840 , p_data => x_msg_data
1841 );
1842 WHEN NO_RAE_DATA THEN
1843 ROLLBACK TO RCV_CreateAccounting_PVT;
1844 IF G_DEBUG = 'Y' THEN
1845 l_api_message := 'No Data in RAE for Transaction';
1846 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1847 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));
1848 END IF;
1849 END IF;
1850
1851 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1852 FND_MSG_PUB.Add_Exc_Msg(
1853 p_pkg_name => G_PKG_NAME,
1854 p_procedure_name => l_api_name,
1855 p_error_text => 'Error at: '||
1856 to_char(l_stmt_num) || ' '||
1857 'No Data in RAE for Transaction'||
1858 SQLERRM
1859 );
1860
1861 END IF;
1862 x_return_status := FND_API.G_RET_STS_ERROR;
1863 FND_MSG_PUB.count_and_get
1864 ( p_count => x_msg_count
1865 , p_data => x_msg_data
1866 );
1867 WHEN NO_CURRENCY_INFORMATION THEN
1868 ROLLBACK TO RCV_CreateAccounting_PVT;
1869 IF G_DEBUG = 'Y' THEN
1870 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1871 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));
1872 END IF;
1873 END IF;
1874
1875 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1876 FND_MSG_PUB.Add_Exc_Msg(
1877 p_pkg_name => G_PKG_NAME,
1878 p_procedure_name => l_api_name,
1879 p_error_text => 'Error at: '||
1880 to_char(l_stmt_num) || ' '||
1881 'No Data in FND_CURRENCIES for Currency Specified'||
1882 SQLERRM
1883 );
1884
1885 END IF;
1886 x_return_status := FND_API.G_RET_STS_ERROR;
1887 FND_MSG_PUB.count_and_get
1888 ( p_count => x_msg_count
1889 , p_data => x_msg_data
1890 );
1891
1892 WHEN NO_PO_INFORMATION THEN
1893 ROLLBACK TO RCV_CreateAccounting_PVT;
1894 IF G_DEBUG = 'Y' THEN
1895 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1896 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));
1897 END IF;
1898 END IF;
1899
1900 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1901 FND_MSG_PUB.Add_Exc_Msg(
1902 p_pkg_name => G_PKG_NAME,
1903 p_procedure_name => l_api_name,
1904 p_error_text => 'Error at: '||
1905 to_char(l_stmt_num) || ' '||
1906 'No Data in PO Tables for the Transaction'||
1907 SQLERRM
1908 );
1909
1910 END IF;
1911 x_return_status := FND_API.G_RET_STS_ERROR;
1912 FND_MSG_PUB.count_and_get
1913 ( p_count => x_msg_count
1914 , p_data => x_msg_data
1915 );
1916
1917
1918 WHEN OTHERS THEN
1919 ROLLBACK TO RCV_CreateAccounting_PVT;
1920 IF G_DEBUG = 'Y' THEN
1921 IF (FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1922 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));
1923 END IF;
1924 END IF;
1925
1926 IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
1927 FND_MSG_PUB.Add_Exc_Msg(
1928 p_pkg_name => G_PKG_NAME,
1929 p_procedure_name => l_api_name,
1930 p_error_text => 'Error at: '||
1931 to_char(l_stmt_num) || ' '||
1932 SQLERRM
1933 );
1934
1935 END IF;
1936 x_return_status := FND_API.G_RET_STS_ERROR;
1937 FND_MSG_PUB.count_and_get
1938 ( p_count => x_msg_count
1939 , p_data => x_msg_data
1940 );
1941
1942 END Create_AccountingEntry;
1943 END RCV_CreateAccounting_PVT;