DBA Data[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;