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