DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_ORDER_IMPORT_SPECIFIC_PVT

Source


1 PACKAGE BODY OE_ORDER_IMPORT_SPECIFIC_PVT AS
2 /* $Header: OEXVIMSB.pls 120.17.12020000.2 2012/07/03 10:23:55 amallik ship $ */
3 
4 /*
5 ---------------------------------------------------------------
6 --  Start of Comments
7 --  API name    OE_ORDER_IMPORT_SPECIFIC_PVT
8 --  Type        Private
9 --  Purpose  	Order Import Pre- and Post- Process_Order Processing
10 --  Function
11 --  Pre-reqs
12 --  Parameters
13 --  Version     Current version = 1.0
14 --              Initial version = 1.0
15 --  Notes
16 --
17 --  End of Comments
18 ------------------------------------------------------------------
19 */
20 
21 
22 --  Fix for the bug# 1220921
23 --  List_Line_id
24 --  Code for PROMOTION/COUPONS/DISCOUNTS/PROMOTION LINES
25 PROCEDURE List_Line_Id
26 (   p_modifier_name                 IN  VARCHAR2
27  ,  p_list_line_no                  IN  VARCHAR2
28  ,  p_version_no                    IN  VARCHAR2
29  ,  p_list_line_type_code           IN  VARCHAR2
30 , p_return_status OUT NOCOPY VARCHAR2
31 
32 , x_list_header_id OUT NOCOPY NUMBER
33 
34 , x_list_line_id OUT NOCOPY NUMBER
35 
36 , x_list_line_no OUT NOCOPY VARCHAR2
37 
38 , x_type OUT NOCOPY VARCHAR2
39 
40 )
41 IS
42      l_list_header_id               NUMBER;
43      l_list_line_id                 NUMBER;
44 /* modified the following two lines to fix the bug 2716743 */
45      l_type                         VARCHAR2(100);
46      --
47      l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
48      --
49 BEGIN
50     IF l_debug_level  > 0 THEN
51         oe_debug_pub.add(  'ENTERING LIST_LINE_ID OF ORDER IMPORT SPECIFIC' , 1 ) ;
52     END IF;
53     IF l_debug_level  > 0 THEN
54         oe_debug_pub.add(  'NAME = '||P_MODIFIER_NAME ) ;
55     END IF;
56     IF l_debug_level  > 0 THEN
57         oe_debug_pub.add(  'TYPE = '||P_LIST_LINE_TYPE_CODE ) ;
58     END IF;
59 /* modified the following if condition to fix the bug 2716743 */
60 IF ( (p_list_line_type_code = 'DIS' OR
61       p_list_line_type_code = 'FREIGHT_CHARGE' OR
62       p_list_line_type_code = 'SUR') and
63       p_list_line_no is NOT NULL) THEN
64 
65    IF l_debug_level  > 0 THEN
66        oe_debug_pub.add(  'OEXVIMSB->BEFORE SELECT QP_LIST_HEADERS_TL FOR DIS' ) ;
67    END IF;
68    SELECT  LIST_HEADER_ID
69     INTO    l_list_header_id
70     FROM    qp_list_headers_tl
71     WHERE   NAME = p_modifier_name
72       AND   LANGUAGE = userenv('LANG')
73       AND   nvl(VERSION_NO, FND_API.G_MISS_CHAR)= nvl(p_version_no, FND_API.G_MISS_CHAR);
74 
75     IF l_debug_level  > 0 THEN
76         oe_debug_pub.add(  'OEXVIMSB->BEFORE SELECT QP_LIST_LINE FOR DIS' ) ;
77     END IF;
78     SELECT  LIST_LINE_ID
79     INTO    l_list_line_id
80     FROM    qp_list_lines
81     WHERE   LIST_HEADER_ID = l_list_header_id
82       AND   LIST_LINE_NO   = p_list_line_no
83       AND   LIST_LINE_TYPE_CODE = p_list_line_type_code ;
84 
85     l_type := p_list_line_type_code ;
86     x_type :=l_type;
87     x_list_header_id := l_list_header_id;
88     x_list_line_id   := l_list_line_id;
89 
90 ELSIF (p_list_line_type_code = 'PROMOLINE' and p_list_line_no is NOT NULL) THEN
91 
92     IF l_debug_level  > 0 THEN
93         oe_debug_pub.add(  'OEXVIMSB->BEFORE SELECT QP_LIST_HEADER_TL FOR PROMOLINE' ) ;
94     END IF;
95     SELECT LIST_HEADER_ID
96     INTO l_list_header_id
97     FROM qp_list_headers_tl
98     WHERE NAME = p_modifier_name
99     AND  LANGUAGE = userenv('LANG')
100     AND nvl(VERSION_NO,FND_API.G_MISS_CHAR) = nvl(p_version_no,FND_API.G_MISS_CHAR);
101 
102     IF l_debug_level  > 0 THEN
103         oe_debug_pub.add(  'OEXVIMSB->BEFORE SELECT QP_LIST_LINE FOR PROMOLINE' ) ;
104     END IF;
105     SELECT LIST_LINE_ID
106     INTO l_list_line_id
107     FROM qp_list_lines
108     WHERE LIST_HEADER_ID = l_list_header_id
109     AND LIST_LINE_NO = p_list_line_no
110     AND LIST_LINE_TYPE_CODE ='PROMOLINE';
111 
112     l_type :='PROMOLINE';
113     x_type :=l_type;
114     x_list_header_id :=l_list_header_id;
115     x_list_line_id   :=l_list_line_id;
116 
117 ELSE
118 
119   --Check if Ct is atleast on Patchset Level H
120   If OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL < '110508' Then
121     Return;
122   End If;
123 
124      IF l_debug_level  > 0 THEN
125          oe_debug_pub.add(  'OEXVIMSB-> IN ELSE , SEARCH FOR PROMO/COUPONS' ) ;
126      END IF;
127 
128      -- { Start of <> 'PROMO'
129      --  This condition will be executed when user send list_line_type_code
130      --  as 'PROMO' or NULL
131      --  If it is PROMO and it does not found error will be raised and
132      --  processing will stop
133      --  If it is NULL and it does not found, the processing will continue and
134      --  will search coupon table
135       IF (p_list_line_type_code = 'PROMO' or
136          p_list_line_type_code = FND_API.G_MISS_CHAR) Then
137 
138        BEGIN
139        IF l_debug_level  > 0 THEN
140            oe_debug_pub.add(  'OEXVIMSB-> PROMO OR MISS_CHAR' ) ;
141        END IF;
142        SELECT LIST_HEADER_ID
143          INTO l_list_header_id
144          FROM qp_list_headers_vl
145         WHERE name =p_modifier_name
146           AND ask_for_flag = 'Y';
147 
148         l_type :='PROMO';
149         x_type :=l_type;
150         x_list_header_id := l_list_header_id;
151 
152         IF l_debug_level  > 0 THEN
153             oe_debug_pub.add(  'OEXVIMSB-> LIST_HEADER_ID ' || L_LIST_HEADER_ID ) ;
154         END IF;
155 
156        EXCEPTION
157         WHEN NO_DATA_FOUND THEN
158         l_type :='NODATA';
159        END;
160 
161      -- This code to exit out of  processing if 'PROMO' was send and
162      -- it failed to find any data in previous select
163      IF (p_list_line_type_code = 'PROMO' And
164         l_type = 'NODATA') THEN
165         IF l_debug_level  > 0 THEN
166             oe_debug_pub.add(  'NOT VALID PROMOTION NAME =' ||P_MODIFIER_NAME ) ;
167         END IF;
168         FND_MESSAGE.SET_NAME('ONT','OE_INVALID_LIST_NAME');
169         FND_MESSAGE.SET_TOKEN('LIST_NAME',p_modifier_name);
170         OE_MSG_PUB.Add;
171         p_return_status := FND_API.G_RET_STS_ERROR;
172         return;
173      END IF;
174 
175      END IF;
176      -- } Start of <> 'PROMO'
177 
178      IF (l_type = 'NODATA'  or p_list_line_type_code = 'COUPON' ) THEN
179       IF l_debug_level  > 0 THEN
180           oe_debug_pub.add(  'SEARCH FOR COUPON' ) ;
181       END IF;
182       BEGIN
183        SELECT coupon_id
184         INTO l_list_line_id
185         FROM qp_coupons
186         WHERE coupon_number =p_modifier_name;
187 
188         l_type :='COUPON';
189         x_type :=l_type;
190         x_list_line_id   := l_list_line_id;
191 
192         IF l_debug_level  > 0 THEN
193             oe_debug_pub.add(  'OEXVIMSB-> LIST_LINE_ID ' || L_LIST_LINE_ID ) ;
194         END IF;
195 
196       EXCEPTION
197        WHEN NO_DATA_FOUND THEN
198         IF l_debug_level  > 0 THEN
199             oe_debug_pub.add(  'NOT VALID PROMOTION/COUPON LIST_NAME =' ||P_MODIFIER_NAME ) ;
200         END IF;
201         FND_MESSAGE.SET_NAME('ONT','OE_INVALID_LIST_NAME');
202         FND_MESSAGE.SET_TOKEN('LIST_NAME',p_modifier_name);
203         OE_MSG_PUB.Add;
204         p_return_status := FND_API.G_RET_STS_ERROR;
205       END;
206     END IF;
207 END IF;
208 
209 EXCEPTION
210 
211     WHEN NO_DATA_FOUND THEN
212 
213         IF l_debug_level  > 0 THEN
214             oe_debug_pub.add(  'EXP NO_DATA LIST_LINE_ID OF ORDER IMPORT SPECIFIC' , 1 ) ;
215         END IF;
216         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
217         THEN
218 
219           IF l_debug_level  > 0 THEN
220               oe_debug_pub.add(  'NOT VALID PROMOTION NAME =' ||P_MODIFIER_NAME ) ;
221           END IF;
222           FND_MESSAGE.SET_NAME('ONT','OE_INVALID_LIST_NAME');
223           FND_MESSAGE.SET_TOKEN('LIST_NAME',p_modifier_name);
224           OE_MSG_PUB.Add;
225 	  p_return_status := FND_API.G_RET_STS_ERROR;
226 
227         END IF;
228 
229     WHEN OTHERS THEN
230 
231         IF l_debug_level  > 0 THEN
232             oe_debug_pub.add(  'EXP OTHERS LIST_LINE_ID OF ORDER IMPORT SPECIFIC AND SQLERR = ' || SQLERRM , 1 ) ;
233         END IF;
234         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
235         THEN
236             OE_MSG_PUB.Add_Exc_Msg
237             (   G_PKG_NAME
238             ,   'List_Line_Id'
239             ,   sqlerrm
240             );
241         END IF;
242 
243         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
244         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
245 
246 END List_Line_Id;
247 
248 
249 --  { Start Create New Cust Info Procedure
250 --  New Customer ref related record will be passed to this api
251 --  It will check the not null values and call the OE_INLINE_CUSTOMER_PUB
252 --  package api to create the required record
253 
254 PROCEDURE Create_New_Cust_Info
255 (  p_customer_rec  IN            Customer_Rec_Type,
256    p_x_header_rec  IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type,
257    p_x_line_rec    IN OUT NOCOPY OE_Order_Pub.Line_Rec_Type,
258    p_record_type   IN            Varchar2 Default 'HEADER',
259 x_return_status OUT NOCOPY Varchar2
260 
261 )
262 IS
263    l_customer_info_id              Number;
264    l_customer_info_number          Varchar2(30);
265    l_return_status                 Varchar2(1);
266    l_tca_bus_events                varchar2(240);
267    --
268    l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
269    --
270 BEGIN
271 
272     IF l_debug_level  > 0 THEN
273         oe_debug_pub.add(  'ENTERING CREATE NEW CUST INFO ' , 1 ) ;
274     END IF;
275 
276     l_tca_bus_events := fnd_profile.value('HZ_EXECUTE_API_CALLOUTS');
277 
278     IF l_tca_bus_events <> 'N' THEN
279 
280        fnd_profile.put('HZ_EXECUTE_API_CALLOUTS','N');
281        IF l_debug_level  > 0 THEN
282           oe_debug_pub.add(' Turned off TCA Business Events. Previous value: '||l_tca_bus_events||
283                    'New Value: '|| fnd_profile.value('HZ_EXECUTE_API_CALLOUTS'));
284        END IF;
285     END IF;
286 
287     x_return_status := FND_API.G_RET_STS_SUCCESS;
288     -- { Start Check for each column of the record and
289     --   For the Not Null value call the Create_Customer_Info
290     --   api with relavant parameter.
291     If p_customer_rec.orig_sys_customer_ref is Not Null Then
292      --{ Start of If for Add customer privilege check
293      If  G_ONT_ADD_CUSTOMER = 'Y' Then
294        -- This Means New Customer Need to be Added Call The
295        -- api with this information and Type should be
296        -- 'ACCOUNT' for this call
297        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
298               p_customer_info_ref    => p_customer_rec.orig_sys_customer_ref,
299               p_customer_info_type_code => 'ACCOUNT',
300               p_usage                => NULL,
301               p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
302               p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
303               p_order_source_id      => p_x_header_rec.order_source_id,
304               p_org_id               => p_x_header_rec.org_id,
305               x_customer_info_id     => l_customer_info_id,
306               x_customer_info_number => l_customer_info_number,
307               x_return_status        => l_return_status);
308 
309        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
310           IF l_debug_level  > 0 THEN
311               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR ACCOUNT' ) ;
312           END IF;
313           x_return_status  := l_return_status;
314        Else
315           p_x_header_rec.sold_to_org_id     :=  l_customer_info_id;
316           OE_INLINE_CUSTOMER_PUB.G_SOLD_TO_CUST := l_customer_info_id;
317           OE_MSG_PUB.set_msg_context(
318             p_entity_code                => 'OI_INL_CUSTSUCC'
319            ,p_entity_ref                 => null
320            ,p_entity_id                  => null
321            ,p_header_id                  => null
322            ,p_line_id                    => null
323            --,p_batch_request_id           => p_x_header_rec.request_id
324            ,p_order_source_id            => p_x_header_rec.order_source_id
325            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
326            ,p_change_sequence            => null
327            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
328            ,p_orig_sys_shipment_ref      => p_customer_rec.orig_sys_customer_ref
329            ,p_source_document_type_id    => null
330            ,p_source_document_id         => null
331            ,p_source_document_line_id    => null
332            ,p_attribute_code             => null
333            ,p_constraint_id              => null
334           );
335 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
336           FND_MESSAGE.SET_TOKEN('TYPE', 'Customer');
337           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.orig_sys_customer_ref);
338           Oe_Msg_Pub.Add;
339           IF l_debug_level  > 0 THEN
340               oe_debug_pub.add(  'NEW CUST ACC. ID => ' || L_CUSTOMER_INFO_ID ) ;
341           END IF;
342           IF l_debug_level  > 0 THEN
343               oe_debug_pub.add(  'NEW CUST ACC. NUM => ' || L_CUSTOMER_INFO_NUMBER ) ;
344           END IF;
345        End if;
346      Else
347       IF l_debug_level  > 0 THEN
348           oe_debug_pub.add(  'CUST DATA PASSED BUT PARAMETER NOT SET' ) ;
349       END IF;
350       fnd_message.set_name('ONT','ONT_OI_INL_SET_PARAMETER');
351       fnd_message.set_token('TYPE', 'Customers');
352       oe_msg_pub.add;
353       x_return_status := FND_API.G_RET_STS_ERROR;
354       Return;
355      End If;
356      -- End for Add customer privilege check}
357     End If;
358     -- End }
359 
360     -- { Start
361     If p_customer_rec.orig_ship_address_ref is Not Null Then
362        -- This Means New Address Need to be Added Call The
363        -- api with this information and Type should be
364        -- 'ADDRESS' for this call
365        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
366               p_customer_info_ref    => p_customer_rec.orig_ship_address_ref,
367               p_customer_info_type_code => 'ADDRESS',
368               p_usage                => 'SHIP_TO',
369               p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
370               p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
371               p_order_source_id      => p_x_header_rec.order_source_id,
372               p_org_id               => p_x_header_rec.org_id,
373               x_customer_info_id     => l_customer_info_id,
374               x_customer_info_number => l_customer_info_number,
375               x_return_status        => l_return_status);
376 
377        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
378           IF l_debug_level  > 0 THEN
379               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR ADDRESS' ) ;
380           END IF;
381           x_return_status  := l_return_status;
382        Else
383           If p_record_type = 'HEADER' Then
384              p_x_header_rec.ship_to_org_id   :=  l_customer_info_id;
385           Else
386              p_x_line_rec.ship_to_org_id     :=  l_customer_info_id;
387           End If;
388           IF l_debug_level  > 0 THEN
389               oe_debug_pub.add(  'NEW SHIP ADDRESS ID => ' || L_CUSTOMER_INFO_ID ) ;
390           END IF;
391           OE_MSG_PUB.set_msg_context(
392             p_entity_code                => 'OI_INL_CUSTSUCC'
393            ,p_entity_ref                 => null
394            ,p_entity_id                  => null
395            ,p_header_id                  => null
396            ,p_line_id                    => null
397            --,p_batch_request_id           => p_x_header_rec.request_id
398            ,p_order_source_id            => p_x_header_rec.order_source_id
399            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
400            ,p_change_sequence            => null
401            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
402            ,p_orig_sys_shipment_ref      => p_customer_rec.orig_ship_address_ref
403            ,p_source_document_type_id    => null
404            ,p_source_document_id         => null
405            ,p_source_document_line_id    => null
406            ,p_attribute_code             => null
407            ,p_constraint_id              => null
408           );
409 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
410           FND_MESSAGE.SET_TOKEN('TYPE', 'Address');
411           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.orig_ship_address_ref);
412           Oe_Msg_Pub.Add;
413        End if;
414     End If;
415     -- End }
416     -- { Start
417     If p_customer_rec.orig_bill_address_ref is Not Null Then
418        -- This Means New Address Need to be Added Call The
419        -- api with this information and Type should be
420        -- 'ADDRESS' for this call
421        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
422               p_customer_info_ref    => p_customer_rec.orig_bill_address_ref,
423               p_customer_info_type_code => 'ADDRESS',
424               p_usage                => 'BILL_TO',
425               p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
426               p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
427               p_order_source_id      => p_x_header_rec.order_source_id,
428               p_org_id               => p_x_header_rec.org_id,
429               x_customer_info_id     => l_customer_info_id,
430               x_customer_info_number => l_customer_info_number,
431               x_return_status        => l_return_status);
432 
433        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
434           IF l_debug_level  > 0 THEN
435               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR ADDRESS' ) ;
436           END IF;
437           x_return_status  := l_return_status;
438        Else
439           If p_record_type = 'HEADER' Then
440              p_x_header_rec.invoice_to_org_id   :=  l_customer_info_id;
441           Else
442              p_x_line_rec.invoice_to_org_id     :=  l_customer_info_id;
443           End If;
444           IF l_debug_level  > 0 THEN
445               oe_debug_pub.add(  'NEW INVOICE ADDRESS ID => ' || L_CUSTOMER_INFO_ID ) ;
446           END IF;
447           OE_MSG_PUB.set_msg_context(
448             p_entity_code                => 'OI_INL_CUSTSUCC'
449            ,p_entity_ref                 => null
450            ,p_entity_id                  => null
451            ,p_header_id                  => null
452            ,p_line_id                    => null
453            --,p_batch_request_id           => p_x_header_rec.request_id
454            ,p_order_source_id            => p_x_header_rec.order_source_id
455            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
456            ,p_change_sequence            => null
457            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
458            ,p_orig_sys_shipment_ref      => p_customer_rec.orig_bill_address_ref
459            ,p_source_document_type_id    => null
460            ,p_source_document_id         => null
461            ,p_source_document_line_id    => null
462            ,p_attribute_code             => null
463            ,p_constraint_id              => null
464           );
465 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
466           FND_MESSAGE.SET_TOKEN('TYPE', 'Address');
467           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.orig_bill_address_ref);
468           Oe_Msg_Pub.Add;
469        End if;
470     End If;
471     -- End }
472     -- { Start
473     If p_customer_rec.orig_deliver_address_ref is Not Null Then
474        -- This Means New Address Need to be Added Call The
475        -- api with this information and Type should be
476        -- 'ADDRESS' for this call
477        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
478               p_customer_info_ref    => p_customer_rec.orig_deliver_address_ref,
479               p_customer_info_type_code => 'ADDRESS',
480               p_usage                => 'DELIVER_TO',
481               p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
482               p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
483               p_order_source_id      => p_x_header_rec.order_source_id,
484               p_org_id               => p_x_header_rec.org_id,
485               x_customer_info_id     => l_customer_info_id,
486               x_customer_info_number => l_customer_info_number,
487               x_return_status        => l_return_status);
488 
489        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
490           IF l_debug_level  > 0 THEN
491               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR ADDRESS' ) ;
492           END IF;
493           x_return_status  := l_return_status;
494        Else
495           If p_record_type = 'HEADER' Then
496              p_x_header_rec.deliver_to_org_id   :=  l_customer_info_id;
497           Else
498              p_x_line_rec.deliver_to_org_id     :=  l_customer_info_id;
499           End If;
500           IF l_debug_level  > 0 THEN
501               oe_debug_pub.add(  'NEW DELIVER ADDRESS ID => ' || L_CUSTOMER_INFO_ID ) ;
502           END IF;
503           OE_MSG_PUB.set_msg_context(
504             p_entity_code                => 'OI_INL_CUSTSUCC'
505            ,p_entity_ref                 => null
506            ,p_entity_id                  => null
507            ,p_header_id                  => null
508            ,p_line_id                    => null
509            --,p_batch_request_id           => p_x_header_rec.request_id
510            ,p_order_source_id            => p_x_header_rec.order_source_id
511            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
512            ,p_change_sequence            => null
513            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
514            ,p_orig_sys_shipment_ref      => p_customer_rec.orig_deliver_address_ref
515            ,p_source_document_type_id    => null
516            ,p_source_document_id         => null
517            ,p_source_document_line_id    => null
518            ,p_attribute_code             => null
519            ,p_constraint_id              => null
520           );
521 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
522           FND_MESSAGE.SET_TOKEN('TYPE', 'Address');
523           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.orig_deliver_address_ref);
524           Oe_Msg_Pub.Add;
525        End if;
526     End If;
527     -- End }
528     -- { Start
529     If p_customer_rec.sold_to_contact_ref is Not Null Then
530        -- This Means New Address Need to be Added Call The
531        -- api with this information and Type should be
532        -- 'CONTACT' for this call
533        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
534                  p_customer_info_ref    => p_customer_rec.sold_to_contact_ref,
535                  p_customer_info_type_code => 'CONTACT',
536                  p_usage                => 'SOLD_TO',
537                  p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
538                  p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
539                  p_order_source_id      => p_x_header_rec.order_source_id,
540                  p_org_id               => p_x_header_rec.org_id,
541                  x_customer_info_id     => l_customer_info_id,
542                  x_customer_info_number => l_customer_info_number,
543                  x_return_status        => l_return_status);
544 
545        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
546           IF l_debug_level  > 0 THEN
547               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR CONTACT' ) ;
548           END IF;
549           x_return_status  := l_return_status;
550        Else
551           If p_record_type = 'HEADER' Then
552             p_x_header_rec.sold_to_contact_id   :=  l_customer_info_id;
553           End If;
554           IF l_debug_level  > 0 THEN
555               oe_debug_pub.add(  'NEW CONTACT ID => ' || L_CUSTOMER_INFO_ID ) ;
556           END IF;
557           OE_MSG_PUB.set_msg_context(
558             p_entity_code                => 'OI_INL_CUSTSUCC'
559            ,p_entity_ref                 => null
560            ,p_entity_id                  => null
561            ,p_header_id                  => null
562            ,p_line_id                    => null
563            --,p_batch_request_id           => p_x_header_rec.request_id
564            ,p_order_source_id            => p_x_header_rec.order_source_id
565            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
566            ,p_change_sequence            => null
567            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
568            ,p_orig_sys_shipment_ref      => p_customer_rec.sold_to_contact_ref
569            ,p_source_document_type_id    => null
570            ,p_source_document_id         => null
571            ,p_source_document_line_id    => null
572            ,p_attribute_code             => null
573            ,p_constraint_id              => null
574           );
575 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
576           FND_MESSAGE.SET_TOKEN('TYPE', 'Contact');
577           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.sold_to_contact_ref);
578           Oe_Msg_Pub.Add;
579        End if;
580     End If;
581     -- End }
582     -- { Start
583     If p_customer_rec.ship_to_contact_ref is Not Null Then
584        -- This Means New Address Need to be Added Call The
585        -- api with this information and Type should be
586        -- 'CONTACT' for this call
587        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
588                  p_customer_info_ref    => p_customer_rec.ship_to_contact_ref,
589                  p_customer_info_type_code => 'CONTACT',
590                  p_usage                => 'SHIP_TO',
591                  p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
592                  p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
593                  p_order_source_id      => p_x_header_rec.order_source_id,
594                  p_org_id               => p_x_header_rec.org_id,
595                  x_customer_info_id     => l_customer_info_id,
596                  x_customer_info_number => l_customer_info_number,
597                  x_return_status        => l_return_status);
598 
599        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
600           IF l_debug_level  > 0 THEN
601               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR CONTACT' ) ;
602           END IF;
603           x_return_status  := l_return_status;
604        Else
605           If p_record_type = 'HEADER' Then
606             p_x_header_rec.ship_to_contact_id   :=  l_customer_info_id;
607           Else
608             p_x_line_rec.ship_to_contact_id     :=  l_customer_info_id;
609           End If;
610           IF l_debug_level  > 0 THEN
611               oe_debug_pub.add(  'NEW CONTACT ID => ' || L_CUSTOMER_INFO_ID ) ;
612           END IF;
613           OE_MSG_PUB.set_msg_context(
614             p_entity_code                => 'OI_INL_CUSTSUCC'
615            ,p_entity_ref                 => null
616            ,p_entity_id                  => null
617            ,p_header_id                  => null
618            ,p_line_id                    => null
619            --,p_batch_request_id           => p_x_header_rec.request_id
620            ,p_order_source_id            => p_x_header_rec.order_source_id
621            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
622            ,p_change_sequence            => null
623            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
624            ,p_orig_sys_shipment_ref      => p_customer_rec.ship_to_contact_ref
625            ,p_source_document_type_id    => null
626            ,p_source_document_id         => null
627            ,p_source_document_line_id    => null
628            ,p_attribute_code             => null
629            ,p_constraint_id              => null
630           );
631 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
632           FND_MESSAGE.SET_TOKEN('TYPE', 'Contact');
633           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.ship_to_contact_ref);
634           Oe_Msg_Pub.Add;
635        End if;
636     End If;
637     -- End }
638     -- { Start
639     If p_customer_rec.bill_to_contact_ref is Not Null Then
640        -- This Means New Address Need to be Added Call The
641        -- api with this information and Type should be
642        -- 'CONTACT' for this call
643        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
644                  p_customer_info_ref    => p_customer_rec.bill_to_contact_ref,
645                  p_customer_info_type_code => 'CONTACT',
646                  p_usage                => 'BILL_TO',
647                  p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
648                  p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
649                  p_order_source_id      => p_x_header_rec.order_source_id,
650                  p_org_id               => p_x_header_rec.org_id,
651                  x_customer_info_id     => l_customer_info_id,
652                  x_customer_info_number => l_customer_info_number,
653                  x_return_status        => l_return_status);
654 
655        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
656           IF l_debug_level  > 0 THEN
657               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR CONTACT' ) ;
658           END IF;
659           x_return_status  := l_return_status;
660        Else
661           If p_record_type = 'HEADER' Then
662             p_x_header_rec.invoice_to_contact_id   :=  l_customer_info_id;
663           Else
664             p_x_line_rec.invoice_to_contact_id     :=  l_customer_info_id;
665           End If;
666           IF l_debug_level  > 0 THEN
667               oe_debug_pub.add(  'NEW CONTACT ID => ' || L_CUSTOMER_INFO_ID ) ;
668           END IF;
669           OE_MSG_PUB.set_msg_context(
670             p_entity_code                => 'OI_INL_CUSTSUCC'
671            ,p_entity_ref                 => null
672            ,p_entity_id                  => null
673            ,p_header_id                  => null
674            ,p_line_id                    => null
675            --,p_batch_request_id           => p_x_header_rec.request_id
676            ,p_order_source_id            => p_x_header_rec.order_source_id
677            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
678            ,p_change_sequence            => null
679            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
680            ,p_orig_sys_shipment_ref      => p_customer_rec.bill_to_contact_ref
681            ,p_source_document_type_id    => null
682            ,p_source_document_id         => null
683            ,p_source_document_line_id    => null
684            ,p_attribute_code             => null
685            ,p_constraint_id              => null
686           );
687 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
688           FND_MESSAGE.SET_TOKEN('TYPE', 'Contact');
689           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.bill_to_contact_ref);
690           Oe_Msg_Pub.Add;
691        End if;
692     End If;
693     -- End }
694     -- { Start
695     If p_customer_rec.deliver_to_contact_ref is Not Null Then
696        -- This Means New Address Need to be Added Call The
697        -- api with this information and Type should be
698        -- 'CONTACT' for this call
699        OE_INLINE_CUSTOMER_PUB.Create_Customer_Info(
700                  p_customer_info_ref   => p_customer_rec.deliver_to_contact_ref,
701                  p_customer_info_type_code => 'CONTACT',
702                  p_usage                => 'DELVER_TO',
703                  p_orig_sys_document_ref=> p_x_header_rec.orig_sys_document_ref,
704                  p_orig_sys_line_ref    => p_x_line_rec.orig_sys_line_ref,
705                  p_order_source_id      => p_x_header_rec.order_source_id,
706                  p_org_id               => p_x_header_rec.org_id,
707                  x_customer_info_id     => l_customer_info_id,
708                  x_customer_info_number => l_customer_info_number,
709                  x_return_status        => l_return_status);
710 
711        If l_return_status <> FND_API.G_RET_STS_SUCCESS Then
712           IF l_debug_level  > 0 THEN
713               oe_debug_pub.add(  'RETURN ERROR IN CREATE CUSTOMER INFO FOR CONTACT' ) ;
714           END IF;
715           x_return_status  := l_return_status;
716        Else
717           If p_record_type = 'HEADER' Then
718             p_x_header_rec.deliver_to_contact_id   :=  l_customer_info_id;
719           Else
720             p_x_line_rec.deliver_to_contact_id     :=  l_customer_info_id;
721           End If;
722           IF l_debug_level  > 0 THEN
723               oe_debug_pub.add(  'NEW CONTACT ID => ' || L_CUSTOMER_INFO_ID ) ;
724           END IF;
725           OE_MSG_PUB.set_msg_context(
726             p_entity_code                => 'OI_INL_CUSTSUCC'
727            ,p_entity_ref                 => null
728            ,p_entity_id                  => null
729            ,p_header_id                  => null
730            ,p_line_id                    => null
731            --,p_batch_request_id           => p_x_header_rec.request_id
732            ,p_order_source_id            => p_x_header_rec.order_source_id
733            ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
734            ,p_change_sequence            => null
735            ,p_orig_sys_document_line_ref => p_x_line_rec.orig_sys_line_ref
736            ,p_orig_sys_shipment_ref      => p_customer_rec.deliver_to_contact_ref
737            ,p_source_document_type_id    => null
738            ,p_source_document_id         => null
739            ,p_source_document_line_id    => null
740            ,p_attribute_code             => null
741            ,p_constraint_id              => null
742           );
743 	  FND_MESSAGE.SET_NAME('ONT','ONT_OI_INL_REF_ADDED');
744           FND_MESSAGE.SET_TOKEN('TYPE', 'Contact');
745           FND_MESSAGE.SET_TOKEN('REF',p_customer_rec.deliver_to_contact_ref);
746           Oe_Msg_Pub.Add;
747        End if;
748     End If;
749     -- End }
750 
751 
752     IF l_tca_bus_events <> 'N' THEN --bug 6052896
753 	 fnd_profile.put('HZ_EXECUTE_API_CALLOUTS',l_tca_bus_events);
754     End if;
755 
756     IF l_debug_level  > 0 THEN
757         oe_debug_pub.add(  'EXITING PROCEDURE CREATE NEW CUST INFO' ) ;
758     END IF;
759     -- End Check for each column of the record and }
760 
761 END Create_New_Cust_Info;
762 --  End Create New Cust Info Procedure}
763 
764 
765 
766 PROCEDURE CHECK_DERIVED_FLAGS(
767    p_x_header_rec              IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type
768   ,p_x_header_adj_tbl          IN OUT NOCOPY OE_Order_Pub.Header_Adj_Tbl_Type
769   ,p_x_header_price_att_tbl    IN OUT NOCOPY OE_Order_Pub.Header_Price_Att_Tbl_Type
770   ,p_x_header_adj_att_tbl      IN OUT NOCOPY OE_Order_Pub.Header_Adj_Att_Tbl_Type
771   ,p_x_header_adj_assoc_tbl    IN OUT NOCOPY OE_Order_Pub.Header_Adj_Assoc_Tbl_Type
772   ,p_x_header_scredit_tbl      IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Tbl_Type
773   ,p_x_header_payment_tbl      IN OUT NOCOPY OE_Order_Pub.Header_Payment_Tbl_Type
774   ,p_x_line_tbl                IN OUT NOCOPY OE_Order_Pub.Line_Tbl_Type
775   ,p_x_line_adj_tbl            IN OUT NOCOPY OE_Order_Pub.Line_Adj_Tbl_Type
776   ,p_x_line_price_att_tbl      IN OUT NOCOPY OE_Order_Pub.Line_Price_Att_Tbl_Type
777   ,p_x_line_adj_att_tbl        IN OUT NOCOPY OE_Order_Pub.Line_Adj_Att_Tbl_Type
778   ,p_x_line_adj_assoc_tbl      IN OUT NOCOPY OE_Order_Pub.Line_Adj_Assoc_Tbl_Type
779   ,p_x_line_scredit_tbl        IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Tbl_Type
780   ,p_x_line_payment_tbl        IN OUT NOCOPY OE_Order_Pub.Line_Payment_Tbl_Type
781   ,p_x_lot_serial_tbl          IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Tbl_Type
782   ,p_x_reservation_tbl         IN OUT NOCOPY OE_Order_Pub.Reservation_Tbl_Type
783   ,p_x_header_val_rec          IN OUT NOCOPY OE_Order_Pub.Header_Val_Rec_Type
784   ,p_x_header_adj_val_tbl      IN OUT NOCOPY OE_Order_Pub.Header_Adj_Val_Tbl_Type
785   ,p_x_header_scredit_val_tbl  IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Val_Tbl_Type
786   ,p_x_header_payment_val_tbl  IN OUT NOCOPY OE_Order_Pub.Header_Payment_Val_Tbl_Type
787   ,p_x_line_val_tbl            IN OUT NOCOPY OE_Order_Pub.Line_Val_Tbl_Type
788   ,p_x_line_adj_val_tbl        IN OUT NOCOPY OE_Order_Pub.Line_Adj_Val_Tbl_Type
789   ,p_x_line_scredit_val_tbl    IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Val_Tbl_Type
790   ,p_x_line_payment_val_tbl    IN OUT NOCOPY OE_Order_Pub.Line_Payment_Val_Tbl_Type
791   ,p_x_lot_serial_val_tbl      IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Val_Tbl_Type
792   ,p_x_reservation_val_tbl     IN OUT NOCOPY OE_Order_Pub.Reservation_Val_Tbl_Type
793 ,p_x_return_status OUT NOCOPY VARCHAR2
794 
795  ) IS
796 --
797 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
798 --
799 BEGIN
800   IF l_debug_level  > 0 THEN
801       oe_debug_pub.add(  'INSIDE CHECK_DERIVED_FLAGS' ) ;
802   END IF;
803 
804 /*
805  -----------------------------------------------------------
806    Set message context
807  -----------------------------------------------------------
808 */
809 
810    IF l_debug_level  > 0 THEN
811        oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT' ) ;
812    END IF;
813    OE_MSG_PUB.set_msg_context(
814          p_entity_code                => 'HEADER'
815         ,p_entity_ref                 => null
816         ,p_entity_id                  => null
817         ,p_header_id                  => p_x_header_rec.header_id
818         ,p_line_id                    => null
819 --      ,p_batch_request_id           => p_x_header_rec.request_id
820         ,p_order_source_id            => p_x_header_rec.order_source_id
821         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
822         ,p_change_sequence            => p_x_header_rec.change_sequence
823         ,p_orig_sys_document_line_ref => null
824         ,p_orig_sys_shipment_ref      => null
825         ,p_source_document_type_id    => null
826         ,p_source_document_id         => null
827         ,p_source_document_line_id    => null
828         ,p_attribute_code             => null
829         ,p_constraint_id              => null
830         );
831 
832 /*
833   ----------------------------------------------------------------------
834   Check for Header Record
835   ----------------------------------------------------------------------
836 */
837 
838    IF l_debug_level  > 0 THEN
839        oe_debug_pub.add(  'VERSION_NUMBER = '||P_X_HEADER_REC.VERSION_NUMBER ) ;
840    END IF;
841    IF  p_x_header_rec.version_number <> FND_API.G_MISS_NUM
842    THEN
843 	IF l_debug_level  > 0 THEN
844 	    oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN VERSION_NUMBER... ' ) ;
845 	END IF;
846 	FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
847      FND_MESSAGE.SET_TOKEN('DERIVED_COL','VERSION_NUMBER');
848      OE_MSG_PUB.Add;
849 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
850 --	p_x_header_rec.version_number := FND_API.G_MISS_NUM;
851    END IF;
852 
853    IF  p_x_header_rec.EARLIEST_SCHEDULE_LIMIT <> FND_API.G_MISS_NUM
854    THEN
855      IF l_debug_level  > 0 THEN
856          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN EARLIEST_SCHEDULE_LIMIT... ' ) ;
857      END IF;
858 	FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
859      FND_MESSAGE.SET_TOKEN('DERIVED_COL','EARLIEST_SCHEDULE_LIMIT');
860      OE_MSG_PUB.Add;
861 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
862 --	p_x_header_rec.EARLIEST_SCHEDULE_LIMIT := FND_API.G_MISS_NUM;
863    END IF;
864 
865    IF  p_x_header_rec.FREIGHT_CARRIER_CODE <> FND_API.G_MISS_CHAR
866    THEN
867      IF l_debug_level  > 0 THEN
868          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN FREIGHT_CARRIER_CODE... ' ) ;
869      END IF;
870 	FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
871      FND_MESSAGE.SET_TOKEN('DERIVED_COL','FREIGHT_CARRIER_CODE');
872      OE_MSG_PUB.Add;
873 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
874 --	p_x_header_rec.FREIGHT_CARRIER_CODE := FND_API.G_MISS_CHAR;
875    END IF;
876 
877    IF  p_x_header_rec.ORG_ID <> FND_API.G_MISS_NUM
878    AND p_x_header_rec.order_source_id <> OE_GLOBALS.G_ORDER_SOURCE_INTERNAL
879    THEN
880      IF l_debug_level  > 0 THEN
881          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN ORG_ID... ' ) ;
882      END IF;
883 --	FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
884 --   FND_MESSAGE.SET_TOKEN('DERIVED_COL','ORG_ID');
885 --   OE_MSG_PUB.Add;
886 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
887 --	p_x_header_rec.ORG_ID := FND_API.G_MISS_NUM;
888    END IF;
889 
890    IF  p_x_header_rec.PARTIAL_SHIPMENTS_ALLOWED <> FND_API.G_MISS_CHAR
891    THEN
892      IF l_debug_level  > 0 THEN
893          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN PARTIAL_SHIPMENTS_ALLOWED... ' ) ;
894      END IF;
895 	FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
896      FND_MESSAGE.SET_TOKEN('DERIVED_COL','PARTIAL_SHIPMENTS_ALLOWED');
897      OE_MSG_PUB.Add;
898 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
899 --	p_x_header_rec.ORG_ID := FND_API.G_MISS_CHAR;
900    END IF;
901 
902    IF  p_x_header_rec.CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
903    THEN
904      IF l_debug_level  > 0 THEN
905          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
906      END IF;
907 --   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
908 --   FND_MESSAGE.SET_TOKEN('DERIVED_COL','CHANGE_REQUEST_CODE');
909 --   OE_MSG_PUB.Add;
910 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
911 --	p_x_header_rec.CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
912    END IF;
913 
914    IF  p_x_header_rec.DROP_SHIP_FLAG <> FND_API.G_MISS_CHAR
915    THEN
916      IF l_debug_level  > 0 THEN
917          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN DROP_SHIP_FLAG... ' ) ;
918      END IF;
919 --	FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
920 --   FND_MESSAGE.SET_TOKEN('DERIVED_COL','DROP_SHIP_FLAG');
921 --   OE_MSG_PUB.Add;
922 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
923 --	p_x_header_rec.CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
924    END IF;
925 
926    IF  p_x_header_rec.CREDIT_CARD_APPROVAL_CODE <> FND_API.G_MISS_CHAR
927    THEN
928      IF l_debug_level  > 0 THEN
929          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CREDIT_CARD_APPROVAL_CODE... ' ) ;
930      END IF;
931 --   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
932 --   FND_MESSAGE.SET_TOKEN('DERIVED_COL','CREDIT_CARD_APPROVAL_CODE');
933 --   OE_MSG_PUB.Add;
934 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
935 --	p_x_header_rec.CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
936    END IF;
937 
938    IF  p_x_header_rec.CREDIT_CARD_APPROVAL_DATE <> FND_API.G_MISS_DATE
939    THEN
940      IF l_debug_level  > 0 THEN
941          oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CREDIT_CARD_APPROVAL_DATE... ' ) ;
942      END IF;
943 --   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
944 --   FND_MESSAGE.SET_TOKEN('DERIVED_COL','CREDIT_CARD_APPROVAL_DATE');
945 --   OE_MSG_PUB.Add;
946 --	p_x_return_status := FND_API.G_RET_STS_ERROR;
947 --	p_x_header_rec.CHANGE_REQUEST_CODE := FND_API.G_MISS_DATE;
948    END IF;
949 
950 --added for bug3645778
951     oe_debug_pub.add(' in CHECK_DERIVED_FLAGS , operation : '||p_x_header_rec.OPERATION);
952     oe_debug_pub.add(' cancelled flag :'||p_x_header_rec.cancelled_flag||'**');
953     IF  ( p_x_header_rec.CANCELLED_FLAG='Y'
954  		and
955          (p_x_header_rec.OPERATION<>OE_GLOBALS.G_OPR_UPDATE))
956    THEN
957      IF l_debug_level  > 0 THEN
958          oe_debug_pub.add(  'CANCELLATION IS NOT ALLOWED WHILE CREATING AN ORDER... ' ) ;
959      END IF;
960      FND_MESSAGE.SET_NAME('ONT','OE_CANCEL_NO_CREATE');
961      OE_MSG_PUB.Add;
962      p_x_return_status := FND_API.G_RET_STS_ERROR;
963      p_x_header_rec.CANCELLED_FLAG := FND_API.G_MISS_CHAR;
964    END IF;
965 
966 --end bug3645778
967 
968 
969 /*
970   ----------------------------------------------------------------------
971   Check for Line Record
972   ----------------------------------------------------------------------
973 */
974 
975    FOR I in 1..p_x_line_tbl.count
976    LOOP
977 /* -----------------------------------------------------------
978       Set message context for the line
979    -----------------------------------------------------------
980 */
981       IF l_debug_level  > 0 THEN
982           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR THE LINE' ) ;
983       END IF;
984 
985       OE_MSG_PUB.set_msg_context(
986          p_entity_code                => 'LINE'
987         ,p_entity_ref                 => null
988         ,p_entity_id                  => null
989         ,p_header_id                  => p_x_header_rec.header_id
990         ,p_line_id                    => p_x_line_tbl(I).line_id
991 --      ,p_batch_request_id           => p_x_header_rec.request_id
992         ,p_order_source_id            => p_x_header_rec.order_source_id
993         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
994         ,p_change_sequence            => p_x_header_rec.change_sequence
995         ,p_orig_sys_document_line_ref => p_x_line_tbl(I).orig_sys_line_ref
996         ,p_orig_sys_shipment_ref      => p_x_line_tbl(I).orig_sys_shipment_ref
997         ,p_source_document_type_id    => null
998         ,p_source_document_id         => null
999         ,p_source_document_line_id    => null
1000         ,p_attribute_code             => null
1001         ,p_constraint_id              => null
1002         );
1003 
1004       IF p_x_line_tbl(I).ACTUAL_ARRIVAL_DATE <> FND_API.G_MISS_DATE
1005       THEN
1006         IF l_debug_level  > 0 THEN
1007             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN ACTUAL_ARRIVAL_DATE... ' ) ;
1008         END IF;
1009 --      FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1010 --      FND_MESSAGE.SET_TOKEN('DERIVED_COL','ACTUAL_ARRIVAL_DATE');
1011 --      OE_MSG_PUB.Add;
1012 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1013 --	   p_x_line_tbl(I).ACTUAL_ARRIVAL_DATE := FND_API.G_MISS_DATE;
1014       END IF;
1015 
1016       IF p_x_line_tbl(I).ATO_LINE_ID <> FND_API.G_MISS_NUM
1017       THEN
1018         IF l_debug_level  > 0 THEN
1019             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN ATO_LINE_ID... ' ) ;
1020         END IF;
1021 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1022 --      FND_MESSAGE.SET_TOKEN('DERIVED_COL','ATO_LINE_ID');
1023 --      OE_MSG_PUB.Add;
1024 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1025 --	   p_x_line_tbl(I).ATO_LINE_ID := FND_API.G_MISS_NUM;
1026       END IF;
1027 --for bug 3415653 uncommented the statements which set status to error for cancelled_flag and cancelled_quantity
1028       IF p_x_line_tbl(I).CANCELLED_FLAG <> FND_API.G_MISS_CHAR
1029       THEN
1030         IF l_debug_level  > 0 THEN
1031             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CANCELLED_FLAG... ' ) ;
1032         END IF;
1033 	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1034         FND_MESSAGE.SET_TOKEN('DERIVED_COL','CANCELLED_FLAG');
1035         OE_MSG_PUB.Add;
1036 	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1037 	   p_x_line_tbl(I).CANCELLED_FLAG := FND_API.G_MISS_CHAR;
1038       END IF;
1039 
1040       IF p_x_line_tbl(I).CANCELLED_QUANTITY <> FND_API.G_MISS_NUM
1041       THEN
1042         IF l_debug_level  > 0 THEN
1043             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CANCELLED_QUANTITY... ' ) ;
1044         END IF;
1045 	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1046         FND_MESSAGE.SET_TOKEN('DERIVED_COL','CANCELLED_QUANTITY');
1047         OE_MSG_PUB.Add;
1048 	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1049 	   p_x_line_tbl(I).CANCELLED_QUANTITY := FND_API.G_MISS_NUM;
1050       END IF;
1051 
1052 	 IF p_x_line_tbl(I).COMPONENT_SEQUENCE_ID <> FND_API.G_MISS_NUM
1053       THEN
1054         IF l_debug_level  > 0 THEN
1055             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN COMPONENT_SEQUENCE_ID... ' ) ;
1056         END IF;
1057 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1058 --      FND_MESSAGE.SET_TOKEN('DERIVED_COL','COMPONENT_SEQUENCE_ID');
1059 --      OE_MSG_PUB.Add;
1060 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1061 --	   p_x_line_tbl(I).COMPONENT_SEQUENCE_ID := FND_API.G_MISS_NUM;
1062       END IF;
1063 
1064 	 IF p_x_line_tbl(I).CREDIT_INVOICE_LINE_ID <> FND_API.G_MISS_NUM
1065       THEN
1066         IF l_debug_level  > 0 THEN
1067             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CREDIT_INVOICE_LINE_ID... ' ) ;
1068         END IF;
1069 	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1070         FND_MESSAGE.SET_TOKEN('DERIVED_COL','CREDIT_INVOICE_LINE_ID');
1071         OE_MSG_PUB.Add;
1072 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1073 --	   p_x_line_tbl(I).CREDIT_INVOICE_LINE_ID := FND_API.G_MISS_NUM;
1074       END IF;
1075 
1076 	 IF p_x_line_tbl(I).EXPLOSION_DATE <> FND_API.G_MISS_DATE
1077       THEN
1078         IF l_debug_level  > 0 THEN
1079             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN EXPLOSION_DATE... ' ) ;
1080         END IF;
1081 	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1082         FND_MESSAGE.SET_TOKEN('DERIVED_COL','EXPLOSION_DATE');
1083         OE_MSG_PUB.Add;
1084 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1085 --	   p_x_line_tbl(I).EXPLOSION_DATE := FND_API.G_MISS_DATE;
1086       END IF;
1087 
1088 	 IF p_x_line_tbl(I).FULFILLED_QUANTITY <> FND_API.G_MISS_NUM
1089       THEN
1090         IF l_debug_level  > 0 THEN
1091             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN FULFILLED_QUANTITY... ' ) ;
1092         END IF;
1093 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1094 --      FND_MESSAGE.SET_TOKEN('DERIVED_COL','FULFILLED_QUANTITY');
1095 --      OE_MSG_PUB.Add;
1096 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1097 --	   p_x_line_tbl(I).FULFILLED_QUANTITY := FND_API.G_MISS_NUM;
1098       END IF;
1099 /*
1100 	 IF  p_x_line_tbl(I).ITEM_TYPE_CODE <> FND_API.G_MISS_CHAR
1101       AND p_x_header_rec.order_source_id <> OE_GLOBALS.G_ORDER_SOURCE_INTERNAL
1102       THEN
1103         oe_debug_pub.add('Cannot populate derived column ITEM_TYPE_CODE... ');
1104 	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1105         FND_MESSAGE.SET_TOKEN('DERIVED_COL','ITEM_TYPE_CODE');
1106         OE_MSG_PUB.Add;
1107 	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1108 	   p_x_line_tbl(I).ITEM_TYPE_CODE := FND_API.G_MISS_CHAR;
1109       END IF;
1110 */
1111 
1112 	 IF p_x_line_tbl(I).MODEL_GROUP_NUMBER <> FND_API.G_MISS_NUM
1113       THEN
1114         IF l_debug_level  > 0 THEN
1115             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN MODEL_GROUP_NUMBER... ' ) ;
1116         END IF;
1117 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1118 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','MODEL_GROUP_NUMBER');
1119 --        OE_MSG_PUB.Add;
1120 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1121 --	   p_x_line_tbl(I).MODEL_GROUP_NUMBER := FND_API.G_MISS_NUM;
1122       END IF;
1123 
1124 	 IF p_x_line_tbl(I).OPTION_NUMBER <> FND_API.G_MISS_NUM
1125       THEN
1126         IF l_debug_level  > 0 THEN
1127             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN OPTION_NUMBER... ' ) ;
1128         END IF;
1129 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1130 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','OPTION_NUMBER');
1131 --        OE_MSG_PUB.Add;
1132 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1133 --	   p_x_line_tbl(I).OPTION_NUMBER := FND_API.G_MISS_NUM;
1134       END IF;
1135 
1136 	 IF  p_x_line_tbl(I).ORG_ID <> FND_API.G_MISS_NUM
1137       AND p_x_header_rec.order_source_id <> OE_GLOBALS.G_ORDER_SOURCE_INTERNAL
1138       THEN
1139         IF l_debug_level  > 0 THEN
1140             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN ORG_ID... ' ) ;
1141         END IF;
1142 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1143 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','ORG_ID');
1144 --        OE_MSG_PUB.Add;
1145 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1146 --	   p_x_line_tbl(I).ORG_ID := FND_API.G_MISS_NUM;
1147       END IF;
1148 
1149 	 IF p_x_line_tbl(I).PRICING_CONTEXT <> FND_API.G_MISS_CHAR
1150       THEN
1151         IF l_debug_level  > 0 THEN
1152             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN PRICING_CONTEXT... ' ) ;
1153         END IF;
1154 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1155 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','PRICING_CONTEXT');
1156 --        OE_MSG_PUB.Add;
1157 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1158 --	   p_x_line_tbl(I).PRICING_CONTEXT := FND_API.G_MISS_CHAR;
1159       END IF;
1160 
1161 	 IF p_x_line_tbl(I).PRICING_QUANTITY <> FND_API.G_MISS_NUM
1162       THEN
1163         IF l_debug_level  > 0 THEN
1164             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN PRICING_QUANTITY... ' ) ;
1165         END IF;
1166 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1167 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','PRICING_QUANTITY');
1168 --        OE_MSG_PUB.Add;
1169 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1170 --	   p_x_line_tbl(I).PRICING_QUANTITY := FND_API.G_MISS_NUM;
1171       END IF;
1172 
1173 	 IF p_x_line_tbl(I).PRICING_QUANTITY_UOM <> FND_API.G_MISS_CHAR
1174       THEN
1175         IF l_debug_level  > 0 THEN
1176             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN PRICING_QUANTITY_UOM... ' ) ;
1177         END IF;
1178 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1179 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','PRICING_QUANTITY_UOM');
1180 --        OE_MSG_PUB.Add;
1181 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1182 --	   p_x_line_tbl(I).PRICING_QUANTITY_UOM := FND_API.G_MISS_CHAR;
1183       END IF;
1184 
1185 	 IF p_x_line_tbl(I).REFERENCE_TYPE <> FND_API.G_MISS_CHAR
1186       THEN
1187         IF l_debug_level  > 0 THEN
1188             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN REFERENCE_TYPE... ' ) ;
1189         END IF;
1190 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1191 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','REFERENCE_TYPE');
1192 --        OE_MSG_PUB.Add;
1193 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1194 --	   p_x_line_tbl(I).REFERENCE_TYPE := FND_API.G_MISS_CHAR;
1195       END IF;
1196 
1197 	 IF p_x_line_tbl(I).REFERENCE_HEADER_ID <> FND_API.G_MISS_NUM
1198       THEN
1199         IF l_debug_level  > 0 THEN
1200             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN REFERENCE_HEADER_ID... ' ) ;
1201         END IF;
1202 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1203 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','REFERENCE_HEADER_ID');
1204 --        OE_MSG_PUB.Add;
1205 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1206 --	   p_x_line_tbl(I).REFERENCE_HEADER_ID := FND_API.G_MISS_NUM;
1207       END IF;
1208 
1209 	 IF p_x_line_tbl(I).REFERENCE_LINE_ID <> FND_API.G_MISS_NUM
1210       THEN
1211         IF l_debug_level  > 0 THEN
1212             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN REFERENCE_LINE_ID... ' ) ;
1213         END IF;
1214 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1215 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','REFERENCE_LINE_ID');
1216 --        OE_MSG_PUB.Add;
1217 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1218 --	   p_x_line_tbl(I).REFERENCE_LINE_ID := FND_API.G_MISS_NUM;
1219       END IF;
1220 
1221 	 IF p_x_line_tbl(I).SCHEDULE_STATUS_CODE <> FND_API.G_MISS_CHAR
1222       THEN
1223         IF l_debug_level  > 0 THEN
1224             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SCHEDULE_STATUS_CODE... ' ) ;
1225         END IF;
1226 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1227 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SCHEDULE_STATUS_CODE');
1228 --        OE_MSG_PUB.Add;
1229 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1230 --	   p_x_line_tbl(I).SCHEDULE_STATUS_CODE := FND_API.G_MISS_CHAR;
1231       END IF;
1232 
1233 	 IF p_x_line_tbl(I).SHIPMENT_NUMBER <> FND_API.G_MISS_NUM
1234       THEN
1235         IF l_debug_level  > 0 THEN
1236             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SHIPMENT_NUMBER... ' ) ;
1237         END IF;
1238 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1239 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SHIPMENT_NUMBER');
1240 --        OE_MSG_PUB.Add;
1241 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1242 --	   p_x_line_tbl(I).SHIPMENT_NUMBER := FND_API.G_MISS_NUM;
1243       END IF;
1244 
1245 	 IF p_x_line_tbl(I).SHIPPED_QUANTITY <> FND_API.G_MISS_NUM
1246       THEN
1247         IF l_debug_level  > 0 THEN
1248             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SHIPPED_QUANTITY... ' ) ;
1249         END IF;
1250 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1251 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SHIPPED_QUANTITY');
1252 --        OE_MSG_PUB.Add;
1253 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1254 --	   p_x_line_tbl(I).SHIPPED_QUANTITY := FND_API.G_MISS_NUM;
1255       END IF;
1256 
1257 	 IF p_x_line_tbl(I).SHIPPING_QUANTITY <> FND_API.G_MISS_NUM
1258       THEN
1259         IF l_debug_level  > 0 THEN
1260             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SHIPPING_QUANTITY... ' ) ;
1261         END IF;
1262 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1263 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SHIPPING_QUANTITY');
1264 --        OE_MSG_PUB.Add;
1265 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1266 --	   p_x_line_tbl(I).SHIPPING_QUANTITY := FND_API.G_MISS_NUM;
1267       END IF;
1268 
1269 	 IF p_x_line_tbl(I).SHIPPING_QUANTITY_UOM <> FND_API.G_MISS_CHAR
1270       THEN
1271         IF l_debug_level  > 0 THEN
1272             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SHIPPING_QUANTITY_UOM... ' ) ;
1273         END IF;
1274 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1275 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SHIPPING_QUANTITY_UOM');
1276 --        OE_MSG_PUB.Add;
1277 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1278 --	   p_x_line_tbl(I).SHIPPING_QUANTITY_UOM := FND_API.G_MISS_CHAR;
1279       END IF;
1280 
1281 	 IF p_x_line_tbl(I).SHIP_MODEL_COMPLETE_FLAG <> FND_API.G_MISS_CHAR
1282       THEN
1283         IF l_debug_level  > 0 THEN
1284             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SHIP_MODEL_COMPLETE_FLAG... ' ) ;
1285         END IF;
1286 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1287 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SHIP_MODEL_COMPLETE_FLAG');
1288 --        OE_MSG_PUB.Add;
1289 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1290 --	   p_x_line_tbl(I).SHIP_MODEL_COMPLETE_FLAG := FND_API.G_MISS_CHAR;
1291       END IF;
1292 
1293 	 IF p_x_line_tbl(I).SORT_ORDER <> FND_API.G_MISS_CHAR
1294       THEN
1295         IF l_debug_level  > 0 THEN
1296             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SORT_ORDER... ' ) ;
1297         END IF;
1298 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1299 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SORT_ORDER');
1300 --        OE_MSG_PUB.Add;
1301 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1302 --	   p_x_line_tbl(I).SORT_ORDER := FND_API.G_MISS_CHAR;
1303       END IF;
1304 
1305 	 IF p_x_line_tbl(I).TAX_VALUE <> FND_API.G_MISS_NUM
1306       THEN
1307         IF l_debug_level  > 0 THEN
1308             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN TAX_VALUE... ' ) ;
1309         END IF;
1310 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1311 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','TAX_VALUE');
1312 --        OE_MSG_PUB.Add;
1313 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1314 --	   p_x_line_tbl(I).TAX_VALUE := FND_API.G_MISS_NUM;
1315       END IF;
1316 
1317 	 IF p_x_line_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1318       THEN
1319         IF l_debug_level  > 0 THEN
1320             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1321         END IF;
1322 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1323 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','CHANGE_REQUEST_CODE');
1324 --        OE_MSG_PUB.Add;
1325 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1326 --	   p_x_line_tbl(I).CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
1327       END IF;
1328 
1329 	 IF p_x_line_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1330       THEN
1331         IF l_debug_level  > 0 THEN
1332             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN STATUS_FLAG... ' ) ;
1333         END IF;
1334 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1335 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','STATUS_FLAG');
1336 --        OE_MSG_PUB.Add;
1337 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1338 --	   p_x_line_tbl(I).STATUS_FLAG := FND_API.G_MISS_CHAR;
1339       END IF;
1340 
1341 	 IF p_x_line_tbl(I).DROP_SHIP_FLAG <> FND_API.G_MISS_CHAR
1342       THEN
1343         IF l_debug_level  > 0 THEN
1344             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN DROP_SHIP_FLAG... ' ) ;
1345         END IF;
1346 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1347 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','DROP_SHIP_FLAG');
1348 --        OE_MSG_PUB.Add;
1349 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1350 --	   p_x_line_tbl(I).DROP_SHIP_FLAG := FND_API.G_MISS_CHAR;
1351       END IF;
1352 
1353 	 IF p_x_line_tbl(I).UNIT_PERCENT_BASE_PRICE <> FND_API.G_MISS_NUM
1354       THEN
1355         IF l_debug_level  > 0 THEN
1356             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN UNIT_PERCENT_BASE_PRICE... ' ) ;
1357         END IF;
1358 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1359 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','UNIT_PERCENT_BASE_PRICE');
1360 --        OE_MSG_PUB.Add;
1361 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1362 --	   p_x_line_tbl(I).UNIT_PERCENT_BASE_PRICE := FND_API.G_MISS_NUM;
1363       END IF;
1364 
1365 	 IF p_x_line_tbl(I).SERVICE_NUMBER <> FND_API.G_MISS_NUM
1366       THEN
1367         IF l_debug_level  > 0 THEN
1368             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN SERVICE_NUMBER... ' ) ;
1369         END IF;
1370 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1371 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','SERVICE_NUMBER');
1372 --        OE_MSG_PUB.Add;
1373 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1374 --	   p_x_line_tbl(I).SERVICE_NUMBER := FND_API.G_MISS_NUM;
1375       END IF;
1376 
1377    END LOOP;
1378 
1379 /*
1380   ----------------------------------------------------------------------
1381   Check for Header Adjustments Record
1382   ----------------------------------------------------------------------
1383 */
1384 
1385    FOR I in 1..p_x_header_adj_tbl.count
1386    LOOP
1387 /* -----------------------------------------------------------
1388       Set message context for header adjustments
1389    -----------------------------------------------------------
1390 */
1391       IF l_debug_level  > 0 THEN
1392           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER ADJUSTMENTS' ) ;
1393       END IF;
1394 
1395       OE_MSG_PUB.set_msg_context(
1396          p_entity_code                => 'HEADER_ADJ'
1397         ,p_entity_ref                 => p_x_header_adj_tbl(I).orig_sys_discount_ref
1398         ,p_entity_id                  => null
1399         ,p_header_id                  => p_x_header_rec.header_id
1400         ,p_line_id                    => null
1401 --      ,p_batch_request_id           => p_x_header_rec.request_id
1402         ,p_order_source_id            => p_x_header_rec.order_source_id
1403         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1404         ,p_change_sequence            => p_x_header_rec.change_sequence
1405         ,p_orig_sys_document_line_ref => null
1406         ,p_orig_sys_shipment_ref      => null
1407         ,p_source_document_type_id    => null
1408         ,p_source_document_id         => null
1409         ,p_source_document_line_id    => null
1410         ,p_attribute_code             => null
1411         ,p_constraint_id              => null
1412         );
1413 
1414       IF l_debug_level  > 0 THEN
1415           oe_debug_pub.add(  'BEFORE VALIDATING HEADER ADJ DERIVED COLUMNS' ) ;
1416       END IF;
1417 
1418       IF p_x_header_adj_tbl(I).discount_id <> FND_API.G_MISS_NUM
1419       THEN
1420         IF l_debug_level  > 0 THEN
1421             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN DISCOUNT_ID... ' ) ;
1422         END IF;
1423 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1424 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','DISCOUNT_ID');
1425 --        OE_MSG_PUB.Add;
1426 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1427 --	   p_x_header_adj_tbl(I).discount_id := FND_API.G_MISS_NUM;
1428       END IF;
1429 
1430       IF p_x_header_adj_tbl(I).DISCOUNT_LINE_ID <> FND_API.G_MISS_NUM
1431       THEN
1432         IF l_debug_level  > 0 THEN
1433             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN DISCOUNT_LINE_ID... ' ) ;
1434         END IF;
1435 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1436 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','DISCOUNT_LINE_ID');
1437 --        OE_MSG_PUB.Add;
1438 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1439 --	   p_x_header_adj_tbl(I).DISCOUNT_LINE_ID := FND_API.G_MISS_NUM;
1440       END IF;
1441 
1442       IF p_x_header_adj_tbl(I).PERCENT <> FND_API.G_MISS_NUM
1443       THEN
1444         IF l_debug_level  > 0 THEN
1445             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN PERCENT... ' ) ;
1446         END IF;
1447 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1448 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','PERCENT');
1449 --        OE_MSG_PUB.Add;
1450 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1451 --	   p_x_header_adj_tbl(I).PERCENT := FND_API.G_MISS_NUM;
1452       END IF;
1453 
1454       IF p_x_header_adj_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1455       THEN
1456         IF l_debug_level  > 0 THEN
1457             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1458         END IF;
1459 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1460 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','CHANGE_REQUEST_CODE');
1461 --        OE_MSG_PUB.Add;
1462 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1463 --	   p_x_header_adj_tbl(I).CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
1464       END IF;
1465 
1466       IF p_x_header_adj_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1467       THEN
1468         IF l_debug_level  > 0 THEN
1469             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN STATUS_FLAG... ' ) ;
1470         END IF;
1471 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1472 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','STATUS_FLAG');
1473 --        OE_MSG_PUB.Add;
1474 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1475 --	   p_x_header_adj_tbl(I).STATUS_FLAG := FND_API.G_MISS_CHAR;
1476       END IF;
1477 
1478    END LOOP;
1479 
1480 
1481 
1482 /*
1483   ----------------------------------------------------------------------
1484   Check for Header Price Att  Record
1485   ----------------------------------------------------------------------
1486 */
1487 
1488    FOR I in 1..p_x_header_price_att_tbl.count
1489    LOOP
1490 /* -----------------------------------------------------------
1491       Set message context for header attribute
1492    -----------------------------------------------------------
1493 */
1494       IF l_debug_level  > 0 THEN
1495           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER ATTRIBUTE' ) ;
1496       END IF;
1497 
1498       OE_MSG_PUB.set_msg_context(
1499          p_entity_code                => 'HEADER_PATTS'
1500         ,p_entity_ref                 => p_x_header_price_att_tbl(I).orig_sys_atts_ref
1501 
1502         ,p_entity_id                  => null
1503         ,p_header_id                  => p_x_header_rec.header_id
1504         ,p_line_id                    => null
1505 --      ,p_batch_request_id           => p_x_header_rec.request_id
1506         ,p_order_source_id            => p_x_header_rec.order_source_id
1507         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1508         ,p_change_sequence            => p_x_header_rec.change_sequence
1509         ,p_orig_sys_document_line_ref => null
1510         ,p_orig_sys_shipment_ref      => null
1511         ,p_source_document_type_id    => null
1512         ,p_source_document_id         => null
1513         ,p_source_document_line_id    => null
1514         ,p_attribute_code             => null
1515         ,p_constraint_id              => null
1516         );
1517 ----  Derived columns to be found
1518       IF l_debug_level  > 0 THEN
1519           oe_debug_pub.add(  'BEFORE VALIDATING HEADER ATT DERIVED COLUMNS' ) ;
1520       END IF;
1521 
1522       IF p_x_header_price_att_tbl(I).order_price_attrib_id <> FND_API.G_MISS_NUM
1523       THEN
1524         IF l_debug_level  > 0 THEN
1525             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN DISCOUNT_ID... ' ) ;
1526         END IF;
1527       END IF;
1528 /*
1529       IF p_x_header_price_att_tbl(I).ORG_ID <> FND_API.G_MISS_NUM
1530       THEN
1531         oe_debug_pub.add('Cannot populate derived column ORG_ID... ');
1532       END IF;
1533 
1534       IF p_x_header_price_att_tbl(I).PRICING_CONTEXT <> FND_API.G_MISS_CHAR
1535       THEN
1536         oe_debug_pub.add('Cannot populate derived column PRICING_CONTEXT ');
1537       END IF;
1538 */
1539       IF p_x_header_price_att_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1540       THEN
1541         IF l_debug_level  > 0 THEN
1542             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1543         END IF;
1544       END IF;
1545 /*
1546       IF p_x_header_price_att_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1547       THEN
1548         oe_debug_pub.add('Cannot populate derived column STATUS_FLAG... ');
1549       END IF;
1550 */
1551    END LOOP;
1552 
1553 /*
1554   ----------------------------------------------------------------------
1555   Check for Header Sales Credits Record
1556   ----------------------------------------------------------------------
1557 */
1558 
1559 
1560    FOR I in 1..p_x_header_scredit_tbl.count
1561    LOOP
1562 /* -----------------------------------------------------------
1563       Set message context for header sales credits
1564    -----------------------------------------------------------
1565 */
1566       IF l_debug_level  > 0 THEN
1567           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER SALES CREDITS' ) ;
1568       END IF;
1569 
1570       OE_MSG_PUB.set_msg_context(
1571          p_entity_code                => 'HEADER_SCREDIT'
1572         ,p_entity_ref                 => p_x_header_scredit_tbl(I).orig_sys_credit_ref
1573         ,p_entity_id                  => null
1574         ,p_header_id                  => p_x_header_rec.header_id
1575         ,p_line_id                    => null
1576 --      ,p_batch_request_id           => p_x_header_rec.request_id
1577         ,p_order_source_id            => p_x_header_rec.order_source_id
1578         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1579         ,p_change_sequence            => p_x_header_rec.change_sequence
1580         ,p_orig_sys_document_line_ref => null
1581         ,p_orig_sys_shipment_ref      => null
1582         ,p_source_document_type_id    => null
1583         ,p_source_document_id         => null
1584         ,p_source_document_line_id    => null
1585         ,p_attribute_code             => null
1586         ,p_constraint_id              => null
1587         );
1588 
1589       IF l_debug_level  > 0 THEN
1590           oe_debug_pub.add(  'BEFORE VALIDATING HEADER SALES CREDIT DERIVED COLS' ) ;
1591       END IF;
1592 
1593       IF p_x_header_scredit_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1594       THEN
1595         IF l_debug_level  > 0 THEN
1596             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1597         END IF;
1598 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1599 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','CHANGE_REQUEST_CODE');
1600 --        OE_MSG_PUB.Add;
1601 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1602 --	   p_x_header_scredit_tbl(I).CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
1603       END IF;
1604 
1605       IF p_x_header_scredit_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1606       THEN
1607         IF l_debug_level  > 0 THEN
1608             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN STATUS_FLAG... ' ) ;
1609         END IF;
1610 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1611 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','STATUS_FLAG');
1612 --        OE_MSG_PUB.Add;
1613 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1614 --	   p_x_header_scredit_tbl(I).STATUS_FLAG := FND_API.G_MISS_CHAR;
1615       END IF;
1616 
1617    END LOOP;
1618 
1619 
1620 /*
1621   ----------------------------------------------------------------------
1622   Check for Header Payment Record -- multiple payments project
1623   ----------------------------------------------------------------------
1624 */
1625 
1626 
1627    FOR I in 1..p_x_header_payment_tbl.count
1628    LOOP
1629 /* -----------------------------------------------------------
1630       Set message context for header payment
1631    -----------------------------------------------------------
1632 */
1633       IF l_debug_level  > 0 THEN
1634           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER PAYMENTS' ) ;
1635       END IF;
1636 
1637       OE_MSG_PUB.set_msg_context(
1638          p_entity_code                => 'HEADER_PAYMENT'
1639         ,p_entity_ref                 => p_x_header_payment_tbl(I).orig_sys_payment_ref
1640         ,p_entity_id                  => null
1641         ,p_header_id                  => p_x_header_rec.header_id
1642         ,p_line_id                    => null
1643 --      ,p_batch_request_id           => p_x_header_rec.request_id
1644         ,p_order_source_id            => p_x_header_rec.order_source_id
1645         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1646         ,p_change_sequence            => p_x_header_rec.change_sequence
1647         ,p_orig_sys_document_line_ref => null
1648         ,p_orig_sys_shipment_ref      => null
1649         ,p_source_document_type_id    => null
1650         ,p_source_document_id         => null
1651         ,p_source_document_line_id    => null
1652         ,p_attribute_code             => null
1653         ,p_constraint_id              => null
1654         );
1655 
1656       IF l_debug_level  > 0 THEN
1657           oe_debug_pub.add(  'BEFORE VALIDATING HEADER PAYMENT DERIVED COLS' ) ;
1658       END IF;
1659 
1660       IF p_x_header_payment_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1661       THEN
1662         IF l_debug_level  > 0 THEN
1663             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1664         END IF;
1665       END IF;
1666 
1667       IF p_x_header_payment_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1668       THEN
1669         IF l_debug_level  > 0 THEN
1670             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN STATUS_FLAG... ' ) ;
1671         END IF;
1672       END IF;
1673 
1674    END LOOP;
1675 -- end of multiple payments: header payment
1676 
1677 /*
1678   ----------------------------------------------------------------------
1679   Check for Lines Discounts/Price Adjustments Record
1680   ----------------------------------------------------------------------
1681 */
1682 
1683    FOR I in 1..p_x_line_adj_tbl.count
1684    LOOP
1685 /* -----------------------------------------------------------
1686       Set message context for line price adjustments
1687    -----------------------------------------------------------
1688 */
1689 
1690       OE_MSG_PUB.set_msg_context(
1691          p_entity_code                => 'LINE_ADJ'
1692         ,p_entity_ref                 => p_x_line_adj_tbl(I).orig_sys_discount_ref
1693         ,p_entity_id                  => null
1694         ,p_header_id                  => p_x_header_rec.header_id
1695         ,p_line_id                    => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).line_id
1696 --      ,p_batch_request_id           => p_x_header_rec.request_id
1697         ,p_order_source_id            => p_x_header_rec.order_source_id
1698         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1699         ,p_change_sequence            => p_x_header_rec.change_sequence
1700         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).orig_sys_line_ref
1701         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).orig_sys_shipment_ref
1702         ,p_source_document_type_id    => null
1703         ,p_source_document_id         => null
1704         ,p_source_document_line_id    => null
1705         ,p_attribute_code             => null
1706         ,p_constraint_id              => null
1707         );
1708 
1709       IF p_x_line_adj_tbl(I).DISCOUNT_ID <> FND_API.G_MISS_NUM
1710       THEN
1711         IF l_debug_level  > 0 THEN
1712             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN DISCOUNT_ID... ' ) ;
1713         END IF;
1714 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1715 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','DISCOUNT_ID');
1716 --        OE_MSG_PUB.Add;
1717 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1718 --	   p_x_line_adj_tbl(I).DISCOUNT_ID := FND_API.G_MISS_NUM;
1719       END IF;
1720 
1721       IF p_x_line_adj_tbl(I).DISCOUNT_LINE_ID <> FND_API.G_MISS_NUM
1722       THEN
1723         IF l_debug_level  > 0 THEN
1724             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN DISCOUNT_LINE_ID... ' ) ;
1725         END IF;
1726 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1727 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','DISCOUNT_LINE_ID');
1728 --        OE_MSG_PUB.Add;
1729 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1730 --	   p_x_line_adj_tbl(I).DISCOUNT_LINE_ID := FND_API.G_MISS_NUM;
1731       END IF;
1732 
1733       IF p_x_line_adj_tbl(I).PERCENT <> FND_API.G_MISS_NUM
1734       THEN
1735         IF l_debug_level  > 0 THEN
1736             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN PERCENT... ' ) ;
1737         END IF;
1738 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1739 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','PERCENT');
1740 --        OE_MSG_PUB.Add;
1741 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1742 --	   p_x_line_adj_tbl(I).PERCENT := FND_API.G_MISS_NUM;
1743       END IF;
1744 
1745       IF p_x_line_adj_tbl(I).APPLIED_FLAG <> FND_API.G_MISS_CHAR
1746       THEN
1747         IF l_debug_level  > 0 THEN
1748             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN APPLIED_FLAG... ' ) ;
1749         END IF;
1750 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1751  --       FND_MESSAGE.SET_TOKEN('DERIVED_COL','APPLIED_FLAG');
1752 --        OE_MSG_PUB.Add;
1753 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1754 --	   p_x_line_adj_tbl(I).APPLIED_FLAG := FND_API.G_MISS_CHAR;
1755       END IF;
1756 
1757       IF p_x_line_adj_tbl(I).ARITHMETIC_OPERATOR <> FND_API.G_MISS_CHAR
1758       THEN
1759         IF l_debug_level  > 0 THEN
1760             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN ARITHMETIC_OPERATOR... ' ) ;
1761         END IF;
1762 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1763 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','ARITHMETIC_OPERATOR');
1764 --        OE_MSG_PUB.Add;
1765 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1766 --	   p_x_line_adj_tbl(I).ARITHMETIC_OPERATOR := FND_API.G_MISS_CHAR;
1767       END IF;
1768 
1769    END LOOP;
1770 
1771 
1772 /*
1773   ----------------------------------------------------------------------
1774   Check for Line Price Att  Record
1775   ----------------------------------------------------------------------
1776 */
1777 
1778    FOR I in 1..p_x_Line_price_att_tbl.count
1779    LOOP
1780 /* -----------------------------------------------------------
1781       Set message context for line attributes
1782    -----------------------------------------------------------
1783 */
1784       IF l_debug_level  > 0 THEN
1785           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE ATTRIBUTE' ) ;
1786       END IF;
1787 
1788       OE_MSG_PUB.set_msg_context(
1789          p_entity_code                => 'LINE_PATTS'
1790 --        ,p_entity_ref                 => p_x_line_price_att_tbl(I).orig_sys_atts_ref
1791 
1792         ,p_entity_id                  => p_x_line_price_att_tbl(I).order_price_attrib_id
1793         ,p_header_id                  => p_x_header_rec.header_id
1794         ,p_line_id                    => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).line_id
1795 --      ,p_batch_request_id           => p_x_header_rec.request_id
1796         ,p_order_source_id            => p_x_header_rec.order_source_id
1797         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1798         ,p_change_sequence            => p_x_header_rec.change_sequence
1799         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).orig_sys_line_ref
1800         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).orig_sys_shipment_ref
1801         ,p_source_document_type_id    => null
1802         ,p_source_document_id         => null
1803         ,p_source_document_line_id    => null
1804         ,p_attribute_code             => null
1805         ,p_constraint_id              => null
1806         );
1807 ----  Derived columns to be found
1808       IF l_debug_level  > 0 THEN
1809           oe_debug_pub.add(  'BEFORE VALIDATING LINE ATT DERIVED COLUMNS' ) ;
1810       END IF;
1811 
1812       IF p_x_line_price_att_tbl(I).order_price_attrib_id <> FND_API.G_MISS_NUM
1813       THEN
1814         IF l_debug_level  > 0 THEN
1815             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN ATTRIBUTE_ID... ' ) ;
1816         END IF;
1817       END IF;
1818 /*
1819       IF p_x_line_price_att_tbl(I).ORG_ID <> FND_API.G_MISS_NUM
1820       THEN
1821         oe_debug_pub.add('Cannot populate derived column ORG_ID ');
1822       END IF;
1823 
1824       IF p_x_line_price_att_tbl(I).PRICING_CONTEXT <> FND_API.G_MISS_CHAR
1825       THEN
1826         oe_debug_pub.add('Cannot populate derived column PERCENT... ');
1827       END IF;
1828 */
1829       IF p_x_line_price_att_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1830       THEN
1831         IF l_debug_level  > 0 THEN
1832             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1833         END IF;
1834       END IF;
1835 /*
1836       IF p_x_line_price_att_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1837       THEN
1838         oe_debug_pub.add('Cannot populate derived column STATUS_FLAG... ');
1839       END IF;
1840 */
1841    END LOOP;
1842 
1843 /*
1844   ----------------------------------------------------------------------
1845   Check for Lines Sales Credits Record
1846   ----------------------------------------------------------------------
1847 */
1848 
1849    FOR I in 1..p_x_line_scredit_tbl.count
1850    LOOP
1851 /* -----------------------------------------------------------
1852       Set message context for line sales credits
1853    -----------------------------------------------------------
1854 */
1855       OE_MSG_PUB.set_msg_context(
1856          p_entity_code                => 'LINE_SCREDIT'
1857         ,p_entity_ref                 => p_x_line_scredit_tbl(I).orig_sys_credit_ref
1858         ,p_entity_id                  => null
1859         ,p_header_id                  => p_x_header_rec.header_id
1860         ,p_line_id                    => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).line_id
1861 --      ,p_batch_request_id           => p_x_header_rec.request_id
1862         ,p_order_source_id            => p_x_header_rec.order_source_id
1863         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1864         ,p_change_sequence            => p_x_header_rec.change_sequence
1865         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).orig_sys_line_ref
1866         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).orig_sys_shipment_ref
1867         ,p_source_document_type_id    => null
1868         ,p_source_document_id         => null
1869         ,p_source_document_line_id    => null
1870         ,p_attribute_code             => null
1871         ,p_constraint_id              => null
1872         );
1873 
1874       IF p_x_line_scredit_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1875       THEN
1876         IF l_debug_level  > 0 THEN
1877             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1878         END IF;
1879 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1880 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','CHANGE_REQUEST_CODE');
1881 --        OE_MSG_PUB.Add;
1882 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1883 --	   p_x_line_scredit_tbl(I).CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
1884       END IF;
1885 
1886       IF p_x_line_scredit_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1887       THEN
1888         IF l_debug_level  > 0 THEN
1889             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN STATUS_FLAG... ' ) ;
1890         END IF;
1891 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1892 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','STATUS_FLAG');
1893 --        OE_MSG_PUB.Add;
1894 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1895 --	   p_x_line_scredit_tbl(I).STATUS_FLAG := FND_API.G_MISS_CHAR;
1896       END IF;
1897 
1898    END LOOP;
1899 
1900 /*
1901   ----------------------------------------------------------------------
1902   Check for Lines Payment Record -- multiple payments
1903   ----------------------------------------------------------------------
1904 */
1905 
1906    FOR I in 1..p_x_line_payment_tbl.count
1907    LOOP
1908 /* -----------------------------------------------------------
1909       Set message context for line payments
1910    -----------------------------------------------------------
1911 */
1912       OE_MSG_PUB.set_msg_context(
1913          p_entity_code                => 'LINE_PAYMENT'
1914         ,p_entity_ref                 => p_x_line_payment_tbl(I).orig_sys_payment_ref
1915         ,p_entity_id                  => null
1916         ,p_header_id                  => p_x_header_rec.header_id
1917         ,p_line_id                    => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).line_id
1918 --      ,p_batch_request_id           => p_x_header_rec.request_id
1919         ,p_order_source_id            => p_x_header_rec.order_source_id
1920         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1921         ,p_change_sequence            => p_x_header_rec.change_sequence
1922         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).orig_sys_line_ref
1923         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).orig_sys_shipment_ref
1924         ,p_source_document_type_id    => null
1925         ,p_source_document_id         => null
1926         ,p_source_document_line_id    => null
1927         ,p_attribute_code             => null
1928         ,p_constraint_id              => null
1929         );
1930 
1931       IF p_x_line_payment_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1932       THEN
1933         IF l_debug_level  > 0 THEN
1934             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1935         END IF;
1936       END IF;
1937 
1938       IF p_x_line_payment_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1939       THEN
1940         IF l_debug_level  > 0 THEN
1941             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN STATUS_FLAG... ' ) ;
1942         END IF;
1943       END IF;
1944 
1945    END LOOP;
1946 -- end of multiple payments
1947 
1948 /*
1949   ----------------------------------------------------------------------
1950   Check for Lot Serial Record
1951   ----------------------------------------------------------------------
1952 */
1953 
1954    FOR I in 1..p_x_lot_serial_tbl.count
1955    LOOP
1956 /* -----------------------------------------------------------
1957       Set message context for line lot serials
1958    -----------------------------------------------------------
1959 */
1960       OE_MSG_PUB.set_msg_context(
1961          p_entity_code                => 'LOT_SERIAL'
1962         ,p_entity_ref                 => p_x_lot_serial_tbl(I).orig_sys_lotserial_ref
1963         ,p_entity_id                  => null
1964         ,p_header_id                  => p_x_header_rec.header_id
1965         ,p_line_id                    => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).line_id
1966 --      ,p_batch_request_id           => p_x_header_rec.request_id
1967         ,p_order_source_id            => p_x_header_rec.order_source_id
1968         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
1969         ,p_change_sequence            => p_x_header_rec.change_sequence
1970         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).orig_sys_line_ref
1971         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).orig_sys_shipment_ref
1972         ,p_source_document_type_id    => null
1973         ,p_source_document_id         => null
1974         ,p_source_document_line_id    => null
1975         ,p_attribute_code             => null
1976         ,p_constraint_id              => null
1977         );
1978 
1979       IF p_x_lot_serial_tbl(I).CHANGE_REQUEST_CODE <> FND_API.G_MISS_CHAR
1980       THEN
1981         IF l_debug_level  > 0 THEN
1982             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN CHANGE_REQUEST_CODE... ' ) ;
1983         END IF;
1984 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1985 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','CHANGE_REQUEST_CODE');
1986 --        OE_MSG_PUB.Add;
1987 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
1988 --	   p_x_lot_serial_tbl(I).CHANGE_REQUEST_CODE := FND_API.G_MISS_CHAR;
1989       END IF;
1990 
1991       IF p_x_lot_serial_tbl(I).STATUS_FLAG <> FND_API.G_MISS_CHAR
1992       THEN
1993         IF l_debug_level  > 0 THEN
1994             oe_debug_pub.add(  'CANNOT POPULATE DERIVED COLUMN STATUS_FLAG... ' ) ;
1995         END IF;
1996 --	   FND_MESSAGE.SET_NAME('ONT','OE_OIM_DERIVED_COLUMNS');
1997 --        FND_MESSAGE.SET_TOKEN('DERIVED_COL','STATUS_FLAG');
1998 --        OE_MSG_PUB.Add;
1999 --	   p_x_return_status := FND_API.G_RET_STS_ERROR;
2000 --	   p_x_lot_serial_tbl(I).STATUS_FLAG := FND_API.G_MISS_CHAR;
2001       END IF;
2002 
2003    END LOOP;
2004 
2005 EXCEPTION
2006    WHEN OTHERS THEN
2007       IF l_debug_level  > 0 THEN
2008           oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
2009       END IF;
2010       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2011 	   p_x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2012         OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Check_Derived_Flags');
2013       END IF;
2014 
2015 END CHECK_DERIVED_FLAGS;
2016 
2017 
2018 /* -----------------------------------------------------------
2019    Procedure: Pre_Process
2020    -----------------------------------------------------------
2021 */
2022 PROCEDURE Pre_Process(
2023    p_x_header_rec                 IN OUT NOCOPY	OE_Order_Pub.Header_Rec_Type
2024   ,p_x_header_adj_tbl             IN OUT NOCOPY	OE_Order_Pub.Header_Adj_Tbl_Type
2025   ,p_x_header_price_att_tbl       IN OUT NOCOPY OE_Order_Pub.Header_Price_Att_Tbl_Type
2026   ,p_x_header_adj_att_tbl         IN OUT NOCOPY OE_Order_Pub.Header_Adj_Att_Tbl_Type
2027   ,p_x_header_adj_assoc_tbl      IN OUT NOCOPY OE_Order_Pub.Header_Adj_Assoc_Tbl_Type
2028   ,p_x_header_scredit_tbl         IN OUT NOCOPY	OE_Order_Pub.Header_Scredit_Tbl_Type
2029   ,p_x_header_payment_tbl         IN OUT NOCOPY	OE_Order_Pub.Header_Payment_Tbl_Type
2030   ,p_x_line_tbl                   IN OUT NOCOPY	OE_Order_Pub.Line_Tbl_Type
2031   ,p_x_line_adj_tbl               IN OUT NOCOPY	OE_Order_Pub.Line_Adj_Tbl_Type
2032   ,p_x_line_price_att_tbl         IN OUT NOCOPY OE_Order_Pub.Line_Price_Att_Tbl_Type
2033   ,p_x_line_adj_att_tbl           IN OUT NOCOPY OE_Order_Pub.Line_Adj_Att_Tbl_Type
2034   ,p_x_line_adj_assoc_tbl         IN OUT NOCOPY OE_Order_Pub.Line_Adj_Assoc_Tbl_Type
2035   ,p_x_line_scredit_tbl           IN OUT NOCOPY	OE_Order_Pub.Line_Scredit_Tbl_Type
2036   ,p_x_line_payment_tbl           IN OUT NOCOPY	OE_Order_Pub.Line_Payment_Tbl_Type
2037   ,p_x_lot_serial_tbl             IN OUT NOCOPY	OE_Order_Pub.Lot_Serial_Tbl_Type
2038   ,p_x_reservation_tbl            IN OUT NOCOPY	OE_Order_Pub.Reservation_Tbl_Type
2039   ,p_x_action_request_tbl         IN OUT NOCOPY	OE_Order_Pub.Request_Tbl_Type
2040 
2041   ,p_x_header_val_rec             IN OUT NOCOPY	OE_Order_Pub.Header_Val_Rec_Type
2042   ,p_x_header_adj_val_tbl         IN OUT NOCOPY	OE_Order_Pub.Header_Adj_Val_Tbl_Type
2043   ,p_x_header_scredit_val_tbl     IN OUT NOCOPY	OE_Order_Pub.Header_Scredit_Val_Tbl_Type
2044   ,p_x_header_payment_val_tbl     IN OUT NOCOPY	OE_Order_Pub.Header_Payment_Val_Tbl_Type
2045   ,p_x_line_val_tbl               IN OUT NOCOPY	OE_Order_Pub.Line_Val_Tbl_Type
2046   ,p_x_line_adj_val_tbl           IN OUT NOCOPY	OE_Order_Pub.Line_Adj_Val_Tbl_Type
2047   ,p_x_line_scredit_val_tbl       IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Val_Tbl_Type
2048   ,p_x_line_payment_val_tbl       IN OUT NOCOPY OE_Order_Pub.Line_Payment_Val_Tbl_Type
2049   ,p_x_lot_serial_val_tbl         IN OUT NOCOPY	OE_Order_Pub.Lot_Serial_Val_Tbl_Type
2050   ,p_x_reservation_val_tbl        IN OUT NOCOPY OE_Order_Pub.Reservation_Val_Tbl_Type
2051   ,p_header_customer_rec          IN            Customer_Rec_Type
2052   ,p_line_customer_tbl            IN            Customer_Tbl_Type
2053 ,p_return_status OUT NOCOPY VARCHAR2
2054 
2055 ) IS
2056    l_return_status		        VARCHAR2(1);
2057    l_d_return_status          VARCHAR2(1);
2058    l_header_id				NUMBER;
2059    l_line_id				NUMBER;
2060    l_order_number			NUMBER;
2061    l_line_number			NUMBER;
2062    l_price_adjustment_id      NUMBER;
2063    l_sales_credit_id          NUMBER;
2064    l_lot_serial_id            NUMBER;
2065    l_shipment_number	     NUMBER;
2066    l_option_number			NUMBER;
2067    l_payment_number                     NUMBER;
2068    l_count				NUMBER;
2069    l_po_dest_org_id           NUMBER;
2070    l_intransit_time           NUMBER;
2071    l_new_schedule_ship_date   DATE;
2072    l_inventory_item_id_int    NUMBER;
2073    l_inventory_item_id_ord    NUMBER;
2074    l_inventory_item_id_cust   NUMBER;
2075    l_inventory_item_id_gen    NUMBER;
2076    l_price_attrib_id          NUMBER;
2077    l_c_operation_code         VARCHAR2(30);
2078 
2079 
2080    l_c_change_sequence        VARCHAR2(50);
2081    l_error_code               VARCHAR2(9);
2082    l_error_flag               VARCHAR2(1);
2083    l_error_message            VARCHAR2(2000);
2084    l_ordered_item_id          NUMBER;
2085    l_ship_from_org_id         NUMBER;
2086    l_line_count               NUMBER;
2087    l_counter_memory           NUMBER;
2088    l_counter                  NUMBER;
2089    l_rec_found                BOOLEAN;
2090    e_break                    EXCEPTION;
2091 
2092    l_customer_info_id         Number;
2093    l_line_customer_rec        Customer_Rec_Type;
2094    l_line_rec                 OE_Order_Pub.Line_Rec_Type;
2095 l_type                    VARCHAR2(100);
2096     l_list_header_id          NUMBER;
2097     l_list_line_id            NUMBER;
2098     l_list_line_no            VARCHAR2(240);
2099     l_last_index             BINARY_INTEGER;
2100 
2101     l_header_price_att_tbl   OE_Order_Pub.Header_Price_Att_Tbl_Type;
2102     l_line_price_att_tbl     OE_Order_Pub.Line_Price_Att_Tbl_Type;
2103 
2104     G_IMPORT_SHIPMENTS        VARCHAR2(3);
2105     l_address_id              VARCHAR2(2000):= NULL;
2106     l_cust_id                 NUMBER;
2107     l_existing_qty            Number;
2108     l_inventory_id            NUMBER;
2109     l_customer_key_profile    VARCHAR2(1)   :=  'N';
2110     l_cso_response_profile    VARCHAR2(1)   :=  'N';
2111     l_cho_unit_selling_price  NUMBER;
2112 
2113 --     l_item_rec             OE_ORDER_CACHE.item_rec_type;   -- OPM bug 3457463 -- INVCONV
2114 
2115 
2116 l_tracking_quantity_ind       VARCHAR2(30); -- INVCONV
2117 l_secondary_default_ind       VARCHAR2(30); -- INVCONV
2118 l_secondary_uom_code varchar2(3) := NULL; -- INVCONV
2119 l_buffer   VARCHAR2(2000); -- INVCONV
2120 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2121 l_org_id NUMBER;
2122 
2123 CURSOR c_item ( discrete_org_id  IN NUMBER -- INVCONV
2124               , discrete_item_id IN NUMBER) IS
2125        SELECT tracking_quantity_ind,
2126               secondary_uom_code,
2127               secondary_default_ind
2128               FROM mtl_system_items
2129      		        WHERE organization_id   = discrete_org_id
2130          		AND   inventory_item_id = discrete_item_id;
2131 
2132 
2133 --
2134 
2135 --
2136 BEGIN
2137 
2138 /* -----------------------------------------------------------
2139    Initialize
2140    -----------------------------------------------------------
2141 */
2142    IF l_debug_level  > 0 THEN
2143        oe_debug_pub.add(  'BEFORE INITIALIZING RETURN_STATUS' ) ;
2144    END IF;
2145 
2146    p_return_status := FND_API.G_RET_STS_SUCCESS; /* Init to Success */
2147 
2148 
2149    If OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110510' Then
2150       fnd_profile.get('ONT_INCLUDE_CUST_IN_OI_KEY', l_customer_key_profile);
2151       l_customer_key_profile := nvl(l_customer_key_profile, 'N');
2152 
2153       fnd_profile.get('ONT_3A7_RESPONSE_REQUIRED', l_cso_response_profile);
2154       l_cso_response_profile := nvl(l_cso_response_profile, 'N');
2155 
2156       IF l_debug_level  > 0 THEN
2157         oe_debug_pub.add(  'CUSTOMER KEY PROFILE SETTING = '||l_customer_key_profile ) ;
2158         oe_debug_pub.add(  'CHANGE SO RESPONSE REQUIRED PROFILE SETTING = '||l_cso_response_profile ) ;
2159       END IF;
2160    End If;
2161 
2162    -- {Select parameter for add customers functionality
2163    fnd_profile.get('ONT_ADD_CUSTOMER_OI',G_ONT_ADD_CUSTOMER);
2164    IF l_debug_level  > 0 THEN
2165        oe_debug_pub.add(  'ONT_ADD_CUSTOMER PROFILE = '||G_ONT_ADD_CUSTOMER ) ;
2166    END IF;
2167 
2168    fnd_profile.get('ONT_TRANSACTION_PROCESSING',G_ONT_TRANSACTION_PROCESSING);
2169    G_ONT_TRANSACTION_PROCESSING := nvl(G_ONT_TRANSACTION_PROCESSING,'SYNCHRONOUS');
2170 
2171    fnd_profile.get('ONT_IMP_MULTIPLE_SHIPMENTS', G_IMPORT_SHIPMENTS);
2172    G_IMPORT_SHIPMENTS := nvl(G_IMPORT_SHIPMENTS, 'NO');
2173 
2174 /* -----------------------------------------------------------
2175    Set message context
2176    -----------------------------------------------------------
2177 */
2178    IF l_debug_level  > 0 THEN
2179        oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT' ) ;
2180    END IF;
2181 
2182    OE_MSG_PUB.set_msg_context(
2183          p_entity_code                => 'HEADER'
2184         ,p_entity_ref                 => null
2185         ,p_entity_id                  => null
2186         ,p_header_id                  => p_x_header_rec.header_id
2187         ,p_line_id                    => null
2188 --      ,p_batch_request_id           => p_x_header_rec.request_id
2189         ,p_order_source_id            => p_x_header_rec.order_source_id
2190         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
2191         ,p_change_sequence            => p_x_header_rec.change_sequence
2192         ,p_orig_sys_document_line_ref => null
2193         ,p_orig_sys_shipment_ref      => null
2194         ,p_source_document_type_id    => null
2195         ,p_source_document_id         => null
2196         ,p_source_document_line_id    => null
2197         ,p_attribute_code             => null
2198         ,p_constraint_id              => null
2199         );
2200 
2201 /* -----------------------------------------------------------
2202       Validate order source
2203    -----------------------------------------------------------
2204 */
2205       IF l_debug_level  > 0 THEN
2206           oe_debug_pub.add(  'BEFORE VALIDATING ORDER SOURCE' ) ;
2207       END IF;
2208 
2209    IF  p_x_header_rec.order_source_id = FND_API.G_MISS_NUM AND
2210        p_x_header_val_rec.order_source    = FND_API.G_MISS_CHAR
2211    THEN
2212 	IF l_debug_level  > 0 THEN
2213 	    oe_debug_pub.add(  'ORDER SOURCE MISSING... ' ) ;
2214 	END IF;
2215 	FND_MESSAGE.SET_NAME('ONT','OE_OI_ORDER_SOURCE');
2216      OE_MSG_PUB.Add;
2217 	p_return_status := FND_API.G_RET_STS_ERROR;
2218    END IF;
2219 
2220 /* -----------------------------------------------------------
2221       Validate orig sys document ref
2222    -----------------------------------------------------------
2223 */
2224       IF l_debug_level  > 0 THEN
2225           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_DOCUMENT_REF' ) ;
2226       END IF;
2227 
2228       IF p_x_header_rec.orig_sys_document_ref = FND_API.G_MISS_CHAR
2229       THEN
2230 	 IF l_debug_level  > 0 THEN
2231 	     oe_debug_pub.add(  'INVALID ORIG_SYS_DOCUMENT_REF... ' ) ;
2232 	 END IF;
2233 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_DOCUMENT_REF');
2234          OE_MSG_PUB.Add;
2235 	 p_return_status := FND_API.G_RET_STS_ERROR;
2236       END IF;
2237 
2238 
2239 
2240 /* -----------------------------------------------------------
2241    Before Validating change sequence
2242    -----------------------------------------------------------
2243 */
2244 
2245  If OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110510' Then
2246 
2247    IF l_debug_level  > 0 THEN
2248        oe_debug_pub.add(  'BEFORE VALIDATING CHANGE SEQUENCE' ) ;
2249    END IF;
2250 
2251    IF  p_x_header_rec.operation = OE_Globals.G_OPR_UPDATE THEN
2252 
2253      -----------------------------------------------------------
2254 --	Validate change sequence
2255 
2256        -----------------------------------------------------------
2257     IF p_x_header_rec.force_apply_flag <> 'Y' THEN
2258 
2259        IF l_debug_level  > 0 THEN
2260 oe_debug_pub.add( 'VALIDATING CHANGE SEQUENCE' ) ;
2261 
2262        END IF;
2263 
2264        BEGIN
2265 
2266 
2267         SELECT change_sequence
2268           INTO l_c_change_sequence
2269           FROM oe_order_headers
2270          WHERE order_source_id       = p_x_header_rec.order_source_id
2271            AND orig_sys_document_ref = p_x_header_rec.orig_sys_document_ref
2272            AND decode(l_customer_key_profile, 'Y',
2273 	       nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
2274              = decode(l_customer_key_profile, 'Y',
2275 	       nvl(p_x_header_rec.sold_to_org_id, FND_API.G_MISS_NUM), 1)
2276            FOR UPDATE;   --added so that changes cannot be commited out of sequence when run in multiple sessions
2277 
2278 IF l_debug_level  > 0 THEN
2279 oe_debug_pub.add('old change_seq:' || l_c_change_sequence) ;
2280 oe_debug_pub.add('new change_seq:' || p_x_header_rec.change_sequence) ;
2281 END IF;
2282 
2283 
2284 --CODE TO ACTUALLY Validate that incoming change_sequence is higher
2285 --than currently stored change sequence (change_sequence is a varchar field => open issue)
2286 
2287 --only do this validation if a change_sequence had been previously stored
2288 
2289 if l_c_change_sequence is not null then
2290 
2291   if  (p_x_header_rec.change_sequence > l_c_change_sequence) then
2292 
2293      IF l_debug_level  > 0 THEN
2294      oe_debug_pub.add('NEW CHANGE SEQ GREATER THAN OLD') ;
2295      END IF;
2296   else
2297             IF l_debug_level  > 0 THEN
2298             oe_debug_pub.add(  'ERROR: NEW CHANGE SEQ LESS THAN OR EQUAL TO OLD') ;
2299         END IF;
2300         FND_MESSAGE.SET_NAME('ONT','OE_OI_CHANGE_OUT_OF_SEQUENCE');
2301         OE_MSG_PUB.Add;
2302         p_return_status := FND_API.G_RET_STS_ERROR;
2303  end if;
2304 
2305 end if;
2306         EXCEPTION
2307         WHEN NO_DATA_FOUND THEN
2308          IF l_debug_level  > 0 THEN
2309              oe_debug_pub.add(  'IN NO_DATA_FOUND WHEN VALIDATING CHANGE_SEQUENCE' ) ;
2310          END IF;
2311         WHEN OTHERS THEN
2312          IF l_debug_level  > 0 THEN
2313              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
2314          END IF;
2315 
2316          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2317 	    p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2318             OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.header_change_sequence_validation');
2319          END IF;
2320        END;	  -- header change sequence is not null
2321     ELSE
2322      IF l_debug_level  > 0 THEN
2323        oe_debug_pub.add(  'FORCE APPLY FLAG IS SET, NOT VALIDATING CHANGE_SEQUENCE' ) ;
2324      END IF;
2325     END IF;      -- force apply flag not set
2326    END IF;	-- If header operation code is update
2327 
2328 END IF;  --code release >= 110510
2329  ----added for internal req check so that  correct message context is set later .bug# 11854440,9937537
2330    IF (p_x_header_rec.order_source_id = OE_GLOBALS.G_ORDER_SOURCE_INTERNAL)
2331     AND p_x_header_rec.operation IN ('INSERT','CREATE','UPDATE','DELETE')
2332    THEN
2333      BEGIN
2334        IF l_debug_level  > 0 THEN
2335            oe_debug_pub.add(  'BEFORE DERIVING REQ HEADER ID FOR INTERNAL ORDERS' ) ;
2336        END IF;
2337 
2338        p_x_header_rec.source_document_type_id :=
2339 				OE_GLOBALS.G_ORDER_SOURCE_INTERNAL;
2340 
2341 	  -- Following select is removed because of the po tables are
2342        -- changing to multi-org, and it has been decided that PO
2343        -- will pass ids columns instead of reference as they are unique
2344        -- in _all tables and reference column can be derived uniquely
2345        -- but not the vice-versa
2346 
2347        --  SELECT requisition_header_id
2348        --	 INTO p_header_rec.source_document_id
2349        --	 FROM po_requisition_headers
2350        --  WHERE segment1 = p_header_rec.orig_sys_document_ref;
2351 
2352        --  Re-Assigning the ID to OM ID column
2353        p_x_header_rec.source_document_id := p_x_header_rec.orig_sys_document_ref;
2354 
2355        --  New Select for Multi-Org to get the reference columns
2356        SELECT segment1
2357        INTO   p_x_header_rec.orig_sys_document_ref
2358        FROM   po_requisition_headers_all
2359        WHERE  requisition_header_id = p_x_header_rec.source_document_id;
2360 
2361        EXCEPTION
2362         WHEN OTHERS THEN
2363           IF l_debug_level  > 0 THEN
2364               oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
2365           END IF;
2366 
2367           IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
2368 	     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2369              OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Req_Header_Id_derivation');
2370           END IF;
2371      END;
2372    END IF;
2373 
2374 /* ---------------------------------------------------------------
2375 	Validate flags which are derived in Process Order Api
2376    ---------------------------------------------------------------
2377 */
2378 
2379       --call check_derived_flags
2380      IF l_debug_level  > 0 THEN
2381          oe_debug_pub.add(  'CALLING CHECK_DERIVED_FLAGS' ) ;
2382      END IF;
2383      CHECK_DERIVED_FLAGS(
2384    	 p_x_header_rec		=> p_x_header_rec
2385   	,p_x_header_adj_tbl		=> p_x_header_adj_tbl
2386         ,p_x_header_price_att_tbl =>  p_x_header_price_att_tbl
2387         ,p_x_header_adj_att_tbl   => p_x_header_adj_att_tbl
2388         ,p_x_header_adj_assoc_tbl => p_x_header_adj_assoc_tbl
2389   	,p_x_header_scredit_tbl	=> p_x_header_scredit_tbl
2390         ,p_x_header_payment_tbl => p_x_header_payment_tbl
2391   	,p_x_line_tbl			=> p_x_line_tbl
2392   	,p_x_line_adj_tbl		=> p_x_line_adj_tbl
2393         ,p_x_line_price_att_tbl        =>p_x_line_price_att_tbl
2394         ,p_x_line_adj_att_tbl         => p_x_line_adj_att_tbl
2395         ,p_x_line_adj_assoc_tbl       => p_x_line_adj_assoc_tbl
2396   	,p_x_line_scredit_tbl	=> p_x_line_scredit_tbl
2397         ,p_x_line_payment_tbl   => p_x_line_payment_tbl
2398   	,p_x_lot_serial_tbl		=> p_x_lot_serial_tbl
2399   	,p_x_reservation_tbl	=> p_x_reservation_tbl
2400   	,p_x_header_val_rec		=> p_x_header_val_rec
2401   	,p_x_header_adj_val_tbl	=> p_x_header_adj_val_tbl
2402   	,p_x_header_scredit_val_tbl	=> p_x_header_scredit_val_tbl
2403         ,p_x_header_payment_val_tbl     => p_x_header_payment_val_tbl
2404   	,p_x_line_val_tbl		=> p_x_line_val_tbl
2405   	,p_x_line_adj_val_tbl		=> p_x_line_adj_val_tbl
2406   	,p_x_line_scredit_val_tbl	=> p_x_line_scredit_val_tbl
2407         ,p_x_line_payment_val_tbl       => p_x_line_payment_val_tbl
2408   	,p_x_lot_serial_val_tbl		=> p_x_lot_serial_val_tbl
2409   	,p_x_reservation_val_tbl	=> p_x_reservation_val_tbl
2410   	,p_x_return_status		=> l_d_return_status
2411 	);
2412 
2413 	IF l_d_return_status IN (FND_API.G_RET_STS_ERROR,
2414 						FND_API.G_RET_STS_UNEXP_ERROR)
2415      THEN
2416 	  p_return_status := l_d_return_status;
2417      END IF;
2418 
2419      -- {Start As at this point we should have the sold_to_org_id
2420      --  available, either by above call or If Customer_Number or
2421      --  sold_to_org is passed, that means we should call value_to_id
2422      --  api here and populate our Glabal variable which will be used
2423      --  later for creating the relationship.
2424      If p_x_header_rec.sold_to_org_id Is Null Then
2425         If p_x_header_val_rec.sold_to_org <> FND_API.G_MISS_CHAR Or
2426            p_x_header_val_rec.customer_number <> FND_API.G_MISS_CHAR Then
2427            p_x_header_rec.sold_to_org_id     :=
2428              oe_value_to_id.sold_to_org(
2429              p_sold_to_org     => p_x_header_val_rec.sold_to_org,
2430              p_customer_number => p_x_header_val_rec.customer_number);
2431              OE_INLINE_CUSTOMER_PUB.G_SOLD_TO_CUST :=
2432                                   p_x_header_rec.sold_to_org_id;
2433         End If;
2434      Else
2435         OE_INLINE_CUSTOMER_PUB.G_SOLD_TO_CUST :=
2436                                   p_x_header_rec.sold_to_org_id;
2437      End If;
2438      -- End of the value to id call If}
2439 
2440      -- { Start of the Code for the Add Customer Functionality
2441 
2442      -- {Check for order_import_add_customers system parameter
2443      -- if any ref data is passed and the parameter is set
2444      -- then call add customers functionality.
2445      --{Start of If for calling add customers
2446      If p_header_customer_rec.Orig_Sys_Customer_Ref IS NOT NULL Or
2447         p_header_customer_rec.Orig_Ship_Address_Ref IS NOT NULL Or
2448         p_header_customer_rec.Orig_Bill_Address_Ref IS NOT NULL Or
2449         p_header_customer_rec.Orig_Deliver_Address_Ref IS NOT NULL Or
2450         p_header_customer_rec.Sold_to_Contact_Ref IS NOT NULL Or
2451         p_header_customer_rec.Ship_to_Contact_Ref IS NOT NULL Or
2452         p_header_customer_rec.Bill_to_Contact_Ref IS NOT NULL Or
2453         p_header_customer_rec.Deliver_to_Contact_Ref IS NOT NULL
2454      Then
2455        --{Start of If for checking add customers parameter
2456        If G_ONT_ADD_CUSTOMER In ('Y','P') Then
2457 
2458        -- What we need to do here is to check for the add customer
2459        -- related coulmns and if they are null then call the Add Customer
2460        -- For this New procedure is added into this api which will accept
2461        -- the customer record structure and read that record and create
2462        -- data
2463          l_line_rec      :=    OE_ORDER_PUB.G_MISS_LINE_REC;
2464          Create_New_Cust_Info(
2465                  p_customer_rec   => p_header_customer_rec,
2466                  p_x_header_rec   => p_x_header_rec,
2467                  p_x_line_rec     => l_line_rec,
2468                  p_record_type    => 'HEADER',
2469                  x_return_status  => l_return_status);
2470 
2471          IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
2472          AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
2473 			          FND_API.G_RET_STS_UNEXP_ERROR)
2474          THEN
2475            p_return_status := l_return_status;
2476          END IF;
2477        Else
2478          IF l_debug_level  > 0 THEN
2479              oe_debug_pub.add(  'REF DATA PASSED BUT PARAMETER NOT SET' ) ;
2480          END IF;
2481          fnd_message.set_name('ONT','ONT_OI_INL_SET_PARAMETER');
2482          fnd_message.set_token('TYPE', 'Customers, Addresses or Contacts');
2483          oe_msg_pub.add;
2484          p_return_status := FND_API.G_RET_STS_ERROR;
2485        End If;
2486        -- End of If for checking add customers parameter}
2487      End If;
2488      -- End of If for calling add customers}
2489      -- End of the Code for the Add Customer Functionality }
2490 
2491 
2492 /* -----------------------------------------------------------------------
2493 	If BOOKED_FLAG is set then create a record in  the OE_ACTIONS_INTERFACE
2494 	table. (for compatibility with previous releases)
2495 
2496         bsadri : since the actions cursor is already fetched at this time
2497         the booked action should not be populated into interface tables, but
2498         into the plsql table
2499    -----------------------------------------------------------------------
2500 */
2501 
2502    IF UPPER(p_x_header_rec.booked_flag) = 'Y'
2503    THEN
2504 	IF l_debug_level  > 0 THEN
2505 	    oe_debug_pub.add(  'BOOKED FLAG IS SET' ) ;
2506 	END IF;
2507 	IF l_debug_level  > 0 THEN
2508 	    oe_debug_pub.add(  'INSERTING RECORD IN ACTIONS TABLE' ) ;
2509 	END IF;
2510 	l_c_operation_code := 'BOOK_ORDER';
2511 
2512      p_x_action_request_tbl(p_x_action_request_tbl.COUNT +1).request_type
2513                := l_c_operation_code;
2514      p_x_action_request_tbl(p_x_action_request_tbl.COUNT).entity_code
2515                := OE_Globals.G_ENTITY_HEADER;
2516      p_x_header_rec.booked_flag := FND_API.G_MISS_CHAR;
2517 
2518    END IF;
2519 
2520 /* -----------------------------------------------------------
2521    Derive Requisition Header Id for Internal Orders  moving these code to top.bug# 11854440,9937537
2522 p
2523    -----------------------------------------------------------
2524 */
2525 
2526 
2527 /* -----------------------------------------------------------
2528       Validate header operation code
2529    -----------------------------------------------------------
2530 */
2531 					IF l_debug_level  > 0 THEN
2532 					    oe_debug_pub.add(  'BEFORE VALIDATING HEADER OPERATION CODE: '|| P_X_HEADER_REC.OPERATION ) ;
2533 					END IF;
2534 
2535 
2536 
2537    BEGIN
2538    IF p_x_header_rec.operation IN ('INSERT','CREATE')
2539    THEN --{
2540       Begin
2541        -- Start for the fix of bug  1794206
2542        IF (p_x_header_rec.order_source_id = OE_GLOBALS.G_ORDER_SOURCE_INTERNAL)
2543        THEN
2544          IF l_debug_level  > 0 THEN
2545              oe_debug_pub.add(  'BEFORE VALIDATING INTERNAL ORDER FOR INSERT OPR' ) ;
2546          END IF;
2547 
2548 
2549          SELECT 1 into l_count
2550            FROM oe_order_headers
2551           WHERE order_source_id       = p_x_header_rec.order_source_id
2552             AND orig_sys_document_ref = p_x_header_rec.orig_sys_document_ref
2553             AND decode(l_customer_key_profile, 'Y',
2554 	        nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
2555               = decode(l_customer_key_profile, 'Y',
2556 	        nvl(p_x_header_rec.sold_to_org_id, FND_API.G_MISS_NUM), 1)
2557             AND source_document_id    = p_x_header_rec.source_document_id
2558             AND rownum                < 2;
2559 
2560          IF l_debug_level  > 0 THEN
2561              oe_debug_pub.add(  'AFTER VALIDATING INTERNAL ORDER FOR INSERT OPR' ) ;
2562          END IF;
2563        ELSE
2564        -- End for the fix of bug  1794206
2565          IF l_debug_level  > 0 THEN
2566              oe_debug_pub.add(  'BEFORE VALIDATING EXTERNAL ORDER FOR INSERT OPR' ) ;
2567          END IF;
2568 
2569          SELECT 1 into l_count
2570            FROM oe_order_headers
2571           WHERE order_source_id       = p_x_header_rec.order_source_id
2572             AND orig_sys_document_ref = p_x_header_rec.orig_sys_document_ref
2573 	    AND decode(l_customer_key_profile, 'Y',
2574 	        nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
2575               = decode(l_customer_key_profile, 'Y',
2576 	        nvl(p_x_header_rec.sold_to_org_id, FND_API.G_MISS_NUM), 1)
2577             AND rownum                < 2;
2578 
2579          IF l_debug_level  > 0 THEN
2580              oe_debug_pub.add(  'AFTER VALIDATING EXTERNAL ORDER FOR INSERT OPR' ) ;
2581          END IF;
2582        END IF;
2583 
2584          IF l_debug_level  > 0 THEN
2585              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW ORDER WITH THE SAME ORDER SOURCE ID AND ORIG_SYS_DOCUMENT_REF... ' ) ;
2586          END IF;
2587          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2588          OE_MSG_PUB.Add;
2589          p_return_status := FND_API.G_RET_STS_ERROR;
2590       Exception
2591         When no_data_found then
2592           IF l_debug_level  > 0 THEN
2593               oe_debug_pub.add(  'VALID ORDER FOR INSERT' ) ;
2594           END IF;
2595         When others then
2596          IF l_debug_level  > 0 THEN
2597              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT NEW ORDER... ' ) ;
2598          END IF;
2599          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2600          OE_MSG_PUB.Add;
2601          p_return_status := FND_API.G_RET_STS_ERROR;
2602       End;
2603    --}{
2604    ELSIF p_x_header_rec.operation IN ('UPDATE','DELETE')
2605    THEN
2606       Begin
2607 
2608 --change sequence is not used in the WHERE-clause  here because we don't want
2609 --to restrict new order to have the same change sequence as old order
2610 
2611          SELECT header_id, order_number, change_sequence
2612            INTO l_header_id, l_order_number, l_c_change_sequence
2613            FROM oe_order_headers
2614           WHERE order_source_id       = p_x_header_rec.order_source_id
2615             AND orig_sys_document_ref = p_x_header_rec.orig_sys_document_ref
2616             AND (sold_to_org_id is NULL OR
2617 		decode(l_customer_key_profile, 'Y',
2618 	 	nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
2619               = decode(l_customer_key_profile, 'Y',
2620 		nvl(p_x_header_rec.sold_to_org_id, FND_API.G_MISS_NUM), 1));
2621 
2622          p_x_header_rec.header_id    := l_header_id;
2623          p_x_header_rec.order_number := l_order_number;
2624 
2625          IF l_debug_level  > 0 THEN
2626              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
2627          END IF;
2628          IF l_debug_level  > 0 THEN
2629              oe_debug_pub.add(  'ORDER NUMBER: '||TO_CHAR ( P_X_HEADER_REC.ORDER_NUMBER ) ) ;
2630          END IF;
2631       Exception
2632         When no_data_found then
2633           IF l_debug_level  > 0 THEN
2634               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING ORDER BUT THAT ORDER DOES NOT EXIST... ' ) ;
2635           END IF;
2636           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2637           OE_MSG_PUB.Add;
2638           p_return_status := FND_API.G_RET_STS_ERROR;
2639         When others then
2640          IF l_debug_level  > 0 THEN
2641              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING ORDER ... ' ) ;
2642          END IF;
2643          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2644          OE_MSG_PUB.Add;
2645          p_return_status := FND_API.G_RET_STS_ERROR;
2646       End;
2647    --}{
2648    ELSE --IF p_x_header_rec.operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')
2649       IF l_debug_level  > 0 THEN
2650           oe_debug_pub.add(  'INVALID OPERATION CODE. NOT ONE OF INSERT , CREATE , UPDATE OR DELETE... ' ) ;
2651       END IF;
2652       FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2653       OE_MSG_PUB.Add;
2654       p_return_status := FND_API.G_RET_STS_ERROR;
2655 
2656    END IF;  --}
2657 
2658    EXCEPTION
2659    WHEN OTHERS THEN
2660       IF l_debug_level  > 0 THEN
2661           oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
2662       END IF;
2663 
2664       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2665 	 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2666          OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.header_operation_validation');
2667       END IF;
2668    END;
2669 
2670    /* bsadri fill in the IDs for actions if this is an update */
2671    BEGIN
2672    IF p_x_header_rec.operation IN ('UPDATE','DELETE') THEN
2673      FOR b in 1..p_x_action_request_tbl.COUNT
2674      LOOP--{
2675         IF p_x_action_request_tbl(b).entity_code = OE_Globals.G_ENTITY_HEADER
2676         THEN
2677            p_x_action_request_tbl(b).entity_id := p_x_header_rec.header_id;
2678 
2679 /*myerrams, Customer Acceptance, Populating the Action_request table with Header id if Customer Acceptance is enabled.*/
2680            IF  p_x_action_request_tbl(b).request_type = OE_Globals.G_ACCEPT_FULFILLMENT  OR  p_x_action_request_tbl(b).request_type = OE_Globals.G_REJECT_FULFILLMENT THEN
2681 		  l_org_id := mo_global.get_current_org_id;
2682 	          IF (OE_SYS_PARAMETERS.VALUE('ENABLE_FULFILLMENT_ACCEPTANCE',l_org_id) = 'Y') THEN
2683 			p_x_action_request_tbl(b).param5 := p_x_header_rec.header_id;
2684 		  END IF;
2685            END IF;
2686 /*myerrams, Customer Acceptance, end*/
2687         ELSE
2688            --adjustments for line exit the loop
2689            raise e_break;
2690         END IF;
2691      END LOOP;--}
2692    END IF;
2693    EXCEPTION
2694      WHEN  e_break THEN
2695        NULL;
2696    END;
2697    FOR I in 1..p_x_header_adj_tbl.count
2698    LOOP
2699 /* -----------------------------------------------------------
2700       Set message context for header adjustments
2701    -----------------------------------------------------------
2702 */
2703       l_price_adjustment_id := NULL;
2704       IF l_debug_level  > 0 THEN
2705           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER ADJUSTMENTS' ) ;
2706       END IF;
2707 
2708       OE_MSG_PUB.set_msg_context(
2709          p_entity_code                => 'HEADER_ADJ'
2710         ,p_entity_ref                 => p_x_header_adj_tbl(I).orig_sys_discount_ref
2711         ,p_entity_id                  => null
2712         ,p_header_id                  => p_x_header_rec.header_id
2713         ,p_line_id                    => null
2714 --      ,p_batch_request_id           => p_x_header_rec.request_id
2715         ,p_order_source_id            => p_x_header_rec.order_source_id
2716         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
2717         ,p_change_sequence            => p_x_header_rec.change_sequence
2718         ,p_orig_sys_document_line_ref => null
2719         ,p_orig_sys_shipment_ref      => null
2720         ,p_source_document_type_id    => null
2721         ,p_source_document_id         => null
2722         ,p_source_document_line_id    => null
2723         ,p_attribute_code             => null
2724         ,p_constraint_id              => null
2725         );
2726 
2727 /* -----------------------------------------------------------
2728       Validate orig sys discount ref for header
2729    -----------------------------------------------------------
2730 */
2731       IF l_debug_level  > 0 THEN
2732           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_DISCOUNT_REF' ) ;
2733       END IF;
2734 
2735       IF p_x_header_adj_tbl(I).orig_sys_discount_ref = FND_API.G_MISS_CHAR
2736       THEN
2737 	 IF l_debug_level  > 0 THEN
2738 	     oe_debug_pub.add(  'INVALID ORIG_SYS_DISCOUNT_REF... ' ) ;
2739 	 END IF;
2740 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_DISCOUNT_REF');
2741          OE_MSG_PUB.Add;
2742 	 p_return_status := FND_API.G_RET_STS_ERROR;
2743       END IF;
2744 
2745 /* -----------------------------------------------------------
2746       Validate header adjustments operation code
2747    -----------------------------------------------------------
2748 */
2749       IF l_debug_level  > 0 THEN
2750           oe_debug_pub.add(  'BEFORE VALIDATING HEADER ADJUSTMENTS OPERATION CODE' ) ;
2751       END IF;
2752 
2753       IF p_x_header_adj_tbl(I).operation NOT IN ('INSERT','CREATE',
2754 					       'UPDATE','DELETE') OR
2755         (p_x_header_rec.operation            IN ('INSERT','CREATE') AND
2756          p_x_header_adj_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
2757         (p_x_header_rec.operation                IN ('UPDATE') AND
2758          p_x_header_adj_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
2759         (p_x_header_rec.operation                IN ('DELETE') AND
2760          p_x_header_adj_tbl(I).operation NOT IN ('DELETE'))
2761       THEN
2762 	   IF l_debug_level  > 0 THEN
2763 	       oe_debug_pub.add(  'INVALID HEADER ADJUSTMENTS OPERATION CODE...' ) ;
2764 	   END IF;
2765 	   FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2766         OE_MSG_PUB.Add;
2767 	   p_return_status := FND_API.G_RET_STS_ERROR;
2768       END IF;
2769 
2770 -- aksingh(10/11/2000) this is in process of being coded
2771       IF  p_x_header_adj_tbl(I).operation IN ('INSERT', 'CREATE')
2772       AND p_x_header_rec.operation = 'UPDATE'
2773       THEN
2774          IF l_debug_level  > 0 THEN
2775              oe_debug_pub.add(  'NEW ADJUSTMENT FOR THE EXISITNG HEARDER_ID:' || P_X_HEADER_REC.HEADER_ID ) ;
2776          END IF;
2777          IF l_debug_level  > 0 THEN
2778              oe_debug_pub.add(  'NEW ADJUSTMENT FOR THE EXISITNG HEARDER_ID:' || L_HEADER_ID ) ;
2779          END IF;
2780          p_x_header_adj_tbl(I).header_id    := l_header_id;
2781       Begin
2782 
2783          SELECT 1 into l_count
2784            FROM oe_price_adjustments
2785           WHERE header_id              = p_x_header_rec.header_id
2786             AND line_id                IS NULL
2787             AND orig_sys_discount_ref  =
2788                        p_x_header_adj_tbl(I).orig_sys_discount_ref
2789             AND rownum                < 2;
2790 
2791          IF l_debug_level  > 0 THEN
2792              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRADJ WITH THE SAME HEADER_ID AND ORIG_SYS_DISCOUNT_REF... ' ) ;
2793          END IF;
2794          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2795          OE_MSG_PUB.Add;
2796          p_return_status := FND_API.G_RET_STS_ERROR;
2797       Exception
2798         When no_data_found then
2799           IF l_debug_level  > 0 THEN
2800               oe_debug_pub.add(  'VALID HEADER LEVEL PRICE ADJ FOR INSERT' ) ;
2801           END IF;
2802         When others then
2803          IF l_debug_level  > 0 THEN
2804              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PRICE ADJ... ' ) ;
2805          END IF;
2806          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2807          OE_MSG_PUB.Add;
2808          p_return_status := FND_API.G_RET_STS_ERROR;
2809       End;
2810       End If; -- Insert, Create operation
2811 
2812       IF  p_x_header_adj_tbl(I).operation IN ('UPDATE','DELETE')
2813       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
2814       THEN
2815       Begin
2816          IF l_debug_level  > 0 THEN
2817              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
2818          END IF;
2819          IF l_debug_level  > 0 THEN
2820              oe_debug_pub.add(  'DISCOUNT REF: '||P_X_HEADER_ADJ_TBL ( I ) .ORIG_SYS_DISCOUNT_REF ) ;
2821          END IF;
2822          SELECT price_adjustment_id
2823            INTO l_price_adjustment_id
2824            FROM oe_price_adjustments
2825           WHERE header_id             = p_x_header_rec.header_id
2826             AND line_id               IS NULL
2827             AND orig_sys_discount_ref =
2828                 p_x_header_adj_tbl(I).orig_sys_discount_ref;
2829 
2830          p_x_header_adj_tbl(I).header_id    := l_header_id;
2831          p_x_header_adj_tbl(I).price_adjustment_id := l_price_adjustment_id;
2832          IF l_debug_level  > 0 THEN
2833              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_ADJ_TBL ( I ) .HEADER_ID ) ) ;
2834          END IF;
2835          IF l_debug_level  > 0 THEN
2836              oe_debug_pub.add(  'ADJUST ID: '||TO_CHAR ( P_X_HEADER_ADJ_TBL ( I ) .PRICE_ADJUSTMENT_ID ) ) ;
2837          END IF;
2838 
2839       Exception
2840         When no_data_found then
2841           IF l_debug_level  > 0 THEN
2842               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING HDR ADJ BUT THAT DOES NOT EXIST... ' ) ;
2843           END IF;
2844           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2845           OE_MSG_PUB.Add;
2846           p_return_status := FND_API.G_RET_STS_ERROR;
2847         When others then
2848          IF l_debug_level  > 0 THEN
2849              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HDRADJ ... ' ) ;
2850          END IF;
2851          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2852          OE_MSG_PUB.Add;
2853          p_return_status := FND_API.G_RET_STS_ERROR;
2854       End;
2855       End IF; -- Update and Delete operation
2856 
2857 -- aksingh(10/11/2000) this is in process of being coded upto this point
2858 
2859 -- Following changes are made to fix the bug# 1220921, It will call the
2860 -- api to get the id(header and line) also the list_line_type code to
2861 -- pass it to process_order as right now it is not possible to call
2862 -- process order to import order without passing the these ids.
2863 -- {
2864    If   (p_x_header_adj_tbl(I).list_header_id is null
2865 	 or   p_x_header_adj_tbl(I).list_header_id = FND_API.G_MISS_NUM)
2866       and (p_x_header_adj_tbl(I).list_line_id is null
2867 	 or   p_x_header_adj_tbl(I).list_line_id = FND_API.G_MISS_NUM)
2868 	 then
2869       list_line_id( p_modifier_name  => p_x_header_adj_val_tbl(I).list_name,
2870                     p_list_line_no   => p_x_header_adj_tbl(I).list_line_no,
2871                     p_version_no     => p_x_header_adj_val_tbl(I).version_no,
2872                  p_list_line_type_code => p_x_header_adj_tbl(I).list_line_type_code,
2873                     p_return_status  => l_return_status,
2874                     x_list_header_id => l_list_header_id,
2875                     x_list_line_id   => l_list_line_id,
2876                     x_list_line_no   => l_list_line_no,
2877                     x_type           =>l_type);
2878 
2879        IF l_type NOT IN ('DIS','FREIGHT_CHARGE','PROMOLINE','COUPON','PROMO','SUR') THEN
2880          IF l_debug_level  > 0 THEN
2881              oe_debug_pub.add(  'OEXVIMSB.PLS -> NOT A VALID DISCOUNT/COUPON TYPE' ) ;
2882          END IF;
2883          IF l_debug_level  > 0 THEN
2884              oe_debug_pub.add(  'NOT VALID PROMOTION NAME =' ||P_X_HEADER_ADJ_VAL_TBL ( I ) .LIST_NAME ) ;
2885          END IF;
2886          FND_MESSAGE.SET_NAME('ONT','OE_INVALID_LIST_NAME');
2887          FND_MESSAGE.SET_TOKEN('LIST_NAME',p_x_header_adj_val_tbl(I).list_name);
2888          OE_MSG_PUB.Add;
2889 	 p_return_status := FND_API.G_RET_STS_ERROR;
2890        END IF;
2891 
2892        IF  (p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
2893          AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
2894                                   FND_API.G_RET_STS_UNEXP_ERROR))
2895       THEN
2896           p_return_status := l_return_status;
2897           return;
2898       END IF;
2899        IF l_debug_level  > 0 THEN
2900            oe_debug_pub.add(  'LIST_LINE_TYPE_CODE = '||L_TYPE ) ;
2901        END IF;
2902        IF l_debug_level  > 0 THEN
2903            oe_debug_pub.add(  'LIST HEADER ID = '||L_LIST_HEADER_ID ) ;
2904        END IF;
2905        IF l_debug_level  > 0 THEN
2906            oe_debug_pub.add(  'LIST LINE ID = '||L_LIST_LINE_ID ) ;
2907        END IF;
2908       IF l_type In ('DIS','SUR') THEN
2909         p_x_header_adj_tbl(I).list_header_id :=l_list_header_id;
2910         p_x_header_adj_tbl(I).list_line_id :=l_list_line_id;
2911       END IF;
2912 
2913       IF l_type='FREIGHT_CHARGE' THEN
2914         p_x_header_adj_tbl(I).list_header_id :=l_list_header_id;
2915         p_x_header_adj_tbl(I).list_line_id :=l_list_line_id;
2916       END IF;
2917 
2918       IF l_type='PROMOLINE' THEN
2919          l_header_price_att_tbl(I).pricing_context :='MODLIST';
2920          l_header_price_att_tbl(I).flex_title :='QP_ATTR_DEFNS_QUALIFIER';
2921          l_header_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
2922          l_header_price_att_tbl(I).pricing_attribute2 :=l_list_line_id;
2923          l_header_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_header_adj_tbl(I).Orig_Sys_Discount_Ref;
2924          l_header_price_att_tbl(I).operation := p_x_header_adj_tbl(I).Operation;
2925          p_x_header_adj_tbl.delete (I);
2926          p_x_header_adj_val_tbl.DELETE (I);
2927       END IF;
2928       IF l_type = 'COUPON' THEN
2929         IF l_debug_level  > 0 THEN
2930             oe_debug_pub.add(  'SETTING PRICING_REC FOR COUPON' ) ;
2931         END IF;
2932         l_header_price_att_tbl(I).pricing_context :='MODLIST';
2933         l_header_price_att_tbl(I).flex_title      :='QP_ATTR_DEFNS_QUALIFIER';
2934         l_header_price_att_tbl(I).pricing_attribute3 :=l_list_line_id;
2935         l_header_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_header_adj_tbl(I).Orig_Sys_Discount_Ref;
2936         l_header_price_att_tbl(I).operation := p_x_header_adj_tbl(I).Operation;
2937         p_x_header_adj_tbl.delete (I);
2938         p_x_header_adj_val_tbl.DELETE (I);
2939       END IF;
2940 
2941        IF l_type='PROMO' THEN
2942          IF l_debug_level  > 0 THEN
2943              oe_debug_pub.add(  'SETTING PRICING_REC FOR PROMO' ) ;
2944          END IF;
2945          l_header_price_att_tbl(I).pricing_context :='MODLIST';
2946          l_header_price_att_tbl(I).flex_title    :='QP_ATTR_DEFNS_QUALIFIER';
2947          l_header_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
2948          l_header_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_header_adj_tbl(I).Orig_Sys_Discount_Ref;
2949          l_header_price_att_tbl(I).operation := p_x_header_adj_tbl(I).Operation;
2950          p_x_header_adj_tbl.delete (I);
2951          p_x_header_adj_val_tbl.DELETE (I);
2952        END IF;
2953    end if;
2954 -- } end if
2955 
2956    END LOOP;
2957 
2958 IF l_debug_level  > 0 THEN
2959     oe_debug_pub.add(  'P_X_HEADER_ATT_TBL.COUNT: '||TO_CHAR ( P_X_HEADER_PRICE_ATT_TBL.COUNT ) , 1 ) ;
2960 END IF;
2961 
2962    FOR I in 1..p_x_header_price_att_tbl.count
2963    LOOP
2964 /* -----------------------------------------------------------
2965       Set message context for header atts
2966    -----------------------------------------------------------
2967 */
2968       IF l_debug_level  > 0 THEN
2969           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER ATTS' ) ;
2970       END IF;
2971 
2972       OE_MSG_PUB.set_msg_context(
2973          p_entity_code                => 'HEADER_PATTS'
2974         ,p_entity_ref                 => p_x_header_price_att_tbl(I).orig_sys_atts_ref
2975         ,p_entity_id                  => null
2976         ,p_header_id                  => p_x_header_rec.header_id
2977         ,p_line_id                    => null
2978 --      ,p_batch_request_id           => p_x_header_rec.request_id
2979         ,p_order_source_id            => p_x_header_rec.order_source_id
2980         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
2981         ,p_change_sequence            => p_x_header_rec.change_sequence
2982         ,p_orig_sys_document_line_ref => null
2983         ,p_orig_sys_shipment_ref      => null
2984         ,p_source_document_type_id    => null
2985         ,p_source_document_id         => null
2986         ,p_source_document_line_id    => null
2987         ,p_attribute_code             => null
2988         ,p_constraint_id              => null
2989         );
2990 
2991 /* -----------------------------------------------------------
2992       Validate orig sys documentt ref for header
2993    -----------------------------------------------------------
2994 */
2995       IF l_debug_level  > 0 THEN
2996           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_ATTS_REF' ) ;
2997       END IF;
2998 
2999       IF p_x_header_price_att_tbl(I).orig_sys_atts_ref = FND_API.G_MISS_CHAR
3000       THEN
3001 	 IF l_debug_level  > 0 THEN
3002 	     oe_debug_pub.add(  'INVALID ORIG_SYS_ATTRIBUTE_REF... ' ) ;
3003 	 END IF;
3004 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_ATTS_REF');
3005          OE_MSG_PUB.Add;
3006 	 p_return_status := FND_API.G_RET_STS_ERROR;
3007       END IF;
3008 
3009 /* -----------------------------------------------------------
3010       Validate header atts operation code
3011    -----------------------------------------------------------
3012 */
3013       IF l_debug_level  > 0 THEN
3014           oe_debug_pub.add(  'BEFORE VALIDATING HEADER ATTS OPERATION CODE' ) ;
3015       END IF;
3016 
3017       IF p_x_header_price_att_tbl(I).operation NOT IN ('INSERT','CREATE',
3018 					       'UPDATE','DELETE') OR
3019         (p_x_header_rec.operation            IN ('INSERT','CREATE') AND
3020          p_x_header_price_att_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3021         (p_x_header_rec.operation                IN ('UPDATE') AND
3022          p_x_header_price_att_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
3023         (p_x_header_rec.operation                IN ('DELETE') AND
3024          p_x_header_price_att_tbl(I).operation NOT IN ('DELETE'))
3025       THEN
3026 	   IF l_debug_level  > 0 THEN
3027 	       oe_debug_pub.add(  'INVALID HEADER ATTRIBUTE OPERATION CODE...' ) ;
3028 	   END IF;
3029 	   FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3030         OE_MSG_PUB.Add;
3031 	   p_return_status := FND_API.G_RET_STS_ERROR;
3032       END IF;
3033 
3034       IF  p_x_header_price_att_tbl(I).operation IN ('INSERT', 'CREATE')
3035       AND p_x_header_rec.operation = 'UPDATE'
3036       THEN
3037          IF l_debug_level  > 0 THEN
3038              oe_debug_pub.add(  'NEW ATT FOR THE EXISITNG HEARDER_ID:' || P_X_HEADER_REC.HEADER_ID ) ;
3039          END IF;
3040          IF l_debug_level  > 0 THEN
3041              oe_debug_pub.add(  'NEW ATT FOR THE EXISITNG HEARDER_ID:' || L_HEADER_ID ) ;
3042          END IF;
3043          p_x_header_price_att_tbl(I).header_id    := l_header_id;
3044       Begin
3045 
3046          SELECT 1 into l_count
3047            FROM oe_order_price_attribs
3048           WHERE header_id              = p_x_header_rec.header_id
3049             AND line_id                IS NULL
3050             AND orig_sys_atts_ref  =
3051                        p_x_header_price_att_tbl(I).orig_sys_atts_ref
3052             AND rownum                < 2;
3053 
3054          IF l_debug_level  > 0 THEN
3055              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRATT WITH THE SAME HEADER_ID AND ATTRIBUTE ID....' ) ;
3056          END IF;
3057          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3058          OE_MSG_PUB.Add;
3059          p_return_status := FND_API.G_RET_STS_ERROR;
3060       Exception
3061         When no_data_found then
3062           IF l_debug_level  > 0 THEN
3063               oe_debug_pub.add(  'VALID HEADER LEVEL PRICE ATT FOR INSERT' ) ;
3064           END IF;
3065         When others then
3066          IF l_debug_level  > 0 THEN
3067              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PRICE ATT... ' ) ;
3068          END IF;
3069          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3070          OE_MSG_PUB.Add;
3071          p_return_status := FND_API.G_RET_STS_ERROR;
3072       End;
3073       End If; -- Insert, Create operation
3074 
3075       IF  p_x_header_price_att_tbl(I).operation IN ('UPDATE','DELETE')
3076       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
3077       THEN
3078       Begin
3079          IF l_debug_level  > 0 THEN
3080              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
3081          END IF;
3082          IF l_debug_level  > 0 THEN
3083              oe_debug_pub.add(  'ATTRIBUTE REF: '||P_X_HEADER_PRICE_ATT_TBL ( I ) .ORIG_SYS_ATTS_REF ) ;
3084          END IF;
3085          SELECT order_price_attrib_id
3086            INTO l_price_attrib_id
3087            FROM oe_order_price_attribs
3088           WHERE header_id             = p_x_header_rec.header_id
3089             AND line_id               IS NULL
3090             AND orig_sys_atts_ref =
3091                 p_x_header_price_att_tbl(I).orig_sys_atts_ref;
3092 
3093          p_x_header_price_att_tbl(I).header_id    := l_header_id;
3094          p_x_header_price_att_tbl(I).order_price_attrib_id := l_price_attrib_id;
3095          IF l_debug_level  > 0 THEN
3096              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_PRICE_ATT_TBL ( I ) .HEADER_ID ) ) ;
3097          END IF;
3098 --         oe_debug_pub.add('Atttribute id: '||to_char(p_x_header_att_tbl(I).order_price_attrib_id));
3099 
3100       Exception
3101         When no_data_found then
3102           IF l_debug_level  > 0 THEN
3103               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING HDR ATT BUT THAT DOES NOT EXIST... ' ) ;
3104           END IF;
3105           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3106           OE_MSG_PUB.Add;
3107           p_return_status := FND_API.G_RET_STS_ERROR;
3108         When others then
3109          IF l_debug_level  > 0 THEN
3110              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HDRATT ... ' ) ;
3111          END IF;
3112          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3113          OE_MSG_PUB.Add;
3114          p_return_status := FND_API.G_RET_STS_ERROR;
3115       End;
3116       End IF; -- Update and Delete operation
3117 
3118    END LOOP;
3119 
3120 
3121  l_last_index :=p_x_header_price_att_tbl.LAST;
3122  IF l_last_index IS NULL THEN
3123    IF l_debug_level  > 0 THEN
3124        oe_debug_pub.add(  'SETTING L_LAST_INDEX TO ZERO' ) ;
3125    END IF;
3126    l_last_index := 0;
3127  END IF;
3128  IF l_debug_level  > 0 THEN
3129      oe_debug_pub.add(  'L_LAST_INDEX1 = '||L_LAST_INDEX ) ;
3130  END IF;
3131 
3132  FOR I IN 1..l_header_price_att_tbl.COUNT
3133 LOOP
3134    IF l_debug_level  > 0 THEN
3135        oe_debug_pub.add(  'CREATING REC IN PRICING_REC' ) ;
3136    END IF;
3137    l_last_index := l_last_index+1;
3138  IF l_debug_level  > 0 THEN
3139      oe_debug_pub.add(  'L_LAST_INDEX2 = '||L_LAST_INDEX ) ;
3140  END IF;
3141    p_x_header_price_att_tbl(l_last_index).pricing_attribute1 := l_header_price_att_tbl(I).pricing_attribute1;
3142    p_x_header_price_att_tbl(l_last_index).pricing_attribute2 := l_header_price_att_tbl(I).pricing_attribute2;
3143    p_x_header_price_att_tbl(l_last_index).pricing_attribute3 :=l_header_price_att_tbl(I).pricing_attribute3;
3144    p_x_header_price_att_tbl(l_last_index).flex_title := l_header_price_att_tbl(I).flex_title;
3145    p_x_header_price_att_tbl(l_last_index).pricing_context :=l_header_price_att_tbl(I).pricing_context;
3146    p_x_header_price_att_tbl(l_last_index).Orig_Sys_Atts_Ref :=l_header_price_att_tbl(I).Orig_Sys_Atts_Ref;
3147    p_x_header_price_att_tbl(l_last_index).Operation :=l_header_price_att_tbl(I).Operation;
3148 END LOOP;
3149 
3150 
3151 
3152    FOR I in 1..p_x_header_scredit_tbl.count
3153    LOOP
3154  /* --------------------------------------------------------
3155       Set message context for header sales credits
3156    -----------------------------------------------------------
3157 */
3158       l_sales_credit_id := NULL;
3159       IF l_debug_level  > 0 THEN
3160           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER SALES CREDITS' ) ;
3161       END IF;
3162 
3163       OE_MSG_PUB.set_msg_context(
3164          p_entity_code                => 'HEADER_SCREDIT'
3165         ,p_entity_ref                 => p_x_header_scredit_tbl(I).orig_sys_credit_ref
3166         ,p_entity_id                  => null
3167         ,p_header_id                  => p_x_header_rec.header_id
3168         ,p_line_id                    => null
3169 --      ,p_batch_request_id           => p_x_header_rec.request_id
3170         ,p_order_source_id            => p_x_header_rec.order_source_id
3171         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
3172         ,p_change_sequence            => p_x_header_rec.change_sequence
3173         ,p_orig_sys_document_line_ref => null
3174         ,p_orig_sys_shipment_ref      => null
3175         ,p_source_document_type_id    => null
3176         ,p_source_document_id         => null
3177         ,p_source_document_line_id    => null
3178         ,p_attribute_code             => null
3179         ,p_constraint_id              => null
3180         );
3181 
3182 /* -----------------------------------------------------------
3183       Validate orig sys credit ref for header
3184    -----------------------------------------------------------
3185 */
3186       IF l_debug_level  > 0 THEN
3187           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_CREDIT_REF' ) ;
3188       END IF;
3189 
3190       IF p_x_header_scredit_tbl(I).orig_sys_credit_ref = FND_API.G_MISS_CHAR
3191       THEN
3192 	 IF l_debug_level  > 0 THEN
3193 	     oe_debug_pub.add(  'INVALID ORIG_SYS_CREDIT_REF... ' ) ;
3194 	 END IF;
3195 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_CREDIT_REF');
3196          OE_MSG_PUB.Add;
3197 	 p_return_status := FND_API.G_RET_STS_ERROR;
3198       END IF;
3199 
3200 /* -----------------------------------------------------------
3201       Validate header sales credits operation code
3202    -----------------------------------------------------------
3203 */
3204       IF l_debug_level  > 0 THEN
3205           oe_debug_pub.add(  'BEFORE VALIDATING HEADER SALES CREDITS OPERATION CODE' ) ;
3206       END IF;
3207 
3208       IF p_x_header_scredit_tbl(I).operation NOT IN ('INSERT','CREATE',
3209 					           'UPDATE','DELETE') OR
3210         (p_x_header_rec.operation                IN ('INSERT','CREATE') AND
3211          p_x_header_scredit_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3212         (p_x_header_rec.operation                IN ('UPDATE') AND
3213          p_x_header_scredit_tbl(I).operation NOT IN ('INSERT','CREATE',
3214                                     'UPDATE','DELETE')) OR
3215         (p_x_header_rec.operation                IN ('DELETE') AND
3216          p_x_header_scredit_tbl(I).operation NOT IN ('DELETE'))
3217       THEN
3218 	 IF l_debug_level  > 0 THEN
3219 	     oe_debug_pub.add(  'INVALID HEADER SALES CREDITS OPERATION CODE...' ) ;
3220 	 END IF;
3221 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3222          OE_MSG_PUB.Add;
3223 	 p_return_status := FND_API.G_RET_STS_ERROR;
3224       END IF;
3225 
3226 -- aksingh(10/11/2000) this is in process of being coded
3227       IF  p_x_header_scredit_tbl(I).operation IN ('INSERT', 'CREATE')
3228       AND p_x_header_rec.operation = 'UPDATE'
3229       THEN
3230       Begin
3231          p_x_header_scredit_tbl(I).header_id    := l_header_id;
3232          IF l_debug_level  > 0 THEN
3233              oe_debug_pub.add(  'NEW SCREDITS FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
3234          END IF;
3235 
3236          SELECT 1 into l_count
3237            FROM oe_sales_credits
3238           WHERE header_id           = p_x_header_rec.header_id
3239             AND line_id             IS NULL
3240             AND orig_sys_credit_ref =
3241                    p_x_header_scredit_tbl(I).orig_sys_credit_ref
3242             AND rownum                < 2;
3243 
3244          IF l_debug_level  > 0 THEN
3245              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRCREDIT WITH THE SAME HEADER_ID AND ORIG_SYS_CREDIT_REF... ' ) ;
3246          END IF;
3247          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3248          OE_MSG_PUB.Add;
3249          p_return_status := FND_API.G_RET_STS_ERROR;
3250       Exception
3251         When no_data_found then
3252           IF l_debug_level  > 0 THEN
3253               oe_debug_pub.add(  'VALID HEADER LEVEL SALES CREDIT FOR INSERT' ) ;
3254           END IF;
3255         When others then
3256          IF l_debug_level  > 0 THEN
3257              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR SALES CREDIT... ' ) ;
3258          END IF;
3259          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3260          OE_MSG_PUB.Add;
3261          p_return_status := FND_API.G_RET_STS_ERROR;
3262 
3263       End;
3264       END IF; -- Insert, Create Operation
3265 
3266       IF  p_x_header_scredit_tbl(I).operation IN ('UPDATE','DELETE')
3267       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
3268       THEN
3269       Begin
3270          p_x_header_scredit_tbl(I).header_id    := l_header_id;
3271          IF l_debug_level  > 0 THEN
3272              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
3273          END IF;
3274          IF l_debug_level  > 0 THEN
3275              oe_debug_pub.add(  'SCREDIT REF: '||P_X_HEADER_SCREDIT_TBL ( I ) .ORIG_SYS_CREDIT_REF ) ;
3276          END IF;
3277          SELECT sales_credit_id
3278            INTO l_sales_credit_id
3279            FROM oe_sales_credits
3280           WHERE header_id             = l_header_id
3281             AND line_id             IS NULL
3282             AND orig_sys_credit_ref =
3283                 p_x_header_scredit_tbl(I).orig_sys_credit_ref;
3284 
3285          p_x_header_scredit_tbl(I).sales_credit_id := l_sales_credit_id;
3286          IF l_debug_level  > 0 THEN
3287              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
3288          END IF;
3289          IF l_debug_level  > 0 THEN
3290              oe_debug_pub.add(  'SCREDIT ID: '||TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .SALES_CREDIT_ID ) ) ;
3291          END IF;
3292 
3293       Exception
3294         When no_data_found then
3295           IF l_debug_level  > 0 THEN
3296               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING ORDER BUT THAT ORDER DOES NOT EXIST... ' ) ;
3297           END IF;
3298           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3299           OE_MSG_PUB.Add;
3300           p_return_status := FND_API.G_RET_STS_ERROR;
3301         When others then
3302          IF l_debug_level  > 0 THEN
3303              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HEADER LEVEL SCREDIT ... ' ) ;
3304          END IF;
3305          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3306          OE_MSG_PUB.Add;
3307          p_return_status := FND_API.G_RET_STS_ERROR;
3308       End;
3309       End IF; -- Update and Delete operation
3310 
3311    END LOOP;
3312 
3313 -- multiple payments start
3314 
3315    FOR I in 1..p_x_header_payment_tbl.count
3316    LOOP
3317  /* --------------------------------------------------------
3318       Set message context for header payment
3319    -----------------------------------------------------------
3320 */
3321    --   l_sales_credit_id := NULL;
3322       IF l_debug_level  > 0 THEN
3323           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER PAYMENTS' ) ;
3324       END IF;
3325 
3326       OE_MSG_PUB.set_msg_context(
3327          p_entity_code                => 'HEADER_PAYMENT'
3328         ,p_entity_ref                 => p_x_header_payment_tbl(I).orig_sys_payment_ref
3329         ,p_entity_id                  => null
3330         ,p_header_id                  => p_x_header_rec.header_id
3331         ,p_line_id                    => null
3332 --      ,p_batch_request_id           => p_x_header_rec.request_id
3333         ,p_order_source_id            => p_x_header_rec.order_source_id
3334         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
3335         ,p_change_sequence            => p_x_header_rec.change_sequence
3336         ,p_orig_sys_document_line_ref => null
3337         ,p_orig_sys_shipment_ref      => null
3338         ,p_source_document_type_id    => null
3339         ,p_source_document_id         => null
3340         ,p_source_document_line_id    => null
3341         ,p_attribute_code             => null
3342         ,p_constraint_id              => null
3343         );
3344 
3345 /* -----------------------------------------------------------
3346       Validate orig sys payment ref for header
3347    -----------------------------------------------------------
3348 */
3349       IF l_debug_level  > 0 THEN
3350           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_PAYMENT_REF' ) ;
3351       END IF;
3352 
3353       IF p_x_header_payment_tbl(I).orig_sys_payment_ref = FND_API.G_MISS_CHAR
3354       THEN
3355 	 IF l_debug_level  > 0 THEN
3356 	     oe_debug_pub.add(  'INVALID ORIG_SYS_PAYMENT_REF... ' ) ;
3357 	 END IF;
3358          /* multiple payment: new message */
3359 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_PAYMENT_REF');
3360          OE_MSG_PUB.Add;
3361 	 p_return_status := FND_API.G_RET_STS_ERROR;
3362       END IF;
3363 
3364 /* -----------------------------------------------------------
3365       Validate header payment operation code
3366    -----------------------------------------------------------
3367 */
3368       IF l_debug_level  > 0 THEN
3369           oe_debug_pub.add(  'BEFORE VALIDATING HEADER PAYMENT OPERATION CODE' ) ;
3370       END IF;
3371 
3372       IF p_x_header_payment_tbl(I).operation NOT IN ('INSERT','CREATE',
3373 					           'UPDATE','DELETE') OR
3374         (p_x_header_rec.operation                IN ('INSERT','CREATE') AND
3375          p_x_header_payment_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3376         (p_x_header_rec.operation                IN ('UPDATE') AND
3377          p_x_header_payment_tbl(I).operation NOT IN ('INSERT','CREATE',
3378                                     'UPDATE','DELETE')) OR
3379         (p_x_header_rec.operation                IN ('DELETE') AND
3380          p_x_header_payment_tbl(I).operation NOT IN ('DELETE'))
3381       THEN
3382 	 IF l_debug_level  > 0 THEN
3383 	     oe_debug_pub.add(  'INVALID HEADER PAYMENT OPERATION CODE...' ) ;
3384 	 END IF;
3385 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3386          OE_MSG_PUB.Add;
3387 	 p_return_status := FND_API.G_RET_STS_ERROR;
3388       END IF;
3389 
3390       IF  p_x_header_payment_tbl(I).operation IN ('INSERT', 'CREATE')
3391       AND p_x_header_rec.operation = 'UPDATE'
3392       THEN
3393       Begin
3394          p_x_header_payment_tbl(I).header_id    := l_header_id;
3395          IF l_debug_level  > 0 THEN
3396              oe_debug_pub.add(  'NEW PAYMENT FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_payment_TBL ( I ) .HEADER_ID ) ) ;
3397          END IF;
3398 
3399          SELECT 1 into l_count
3400            FROM oe_payments
3401           WHERE header_id           = p_x_header_rec.header_id
3402             AND line_id             IS NULL
3403             AND orig_sys_payment_ref =
3404                    p_x_header_payment_tbl(I).orig_sys_payment_ref
3405             AND rownum                < 2;
3406 
3407          IF l_debug_level  > 0 THEN
3408              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDR PAYMENT WITH THE SAME HEADER_ID AND ORIG_SYS_PAYMENT_REF... ' ) ;
3409          END IF;
3410          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3411          OE_MSG_PUB.Add;
3412          p_return_status := FND_API.G_RET_STS_ERROR;
3413       Exception
3414         When no_data_found then
3415           IF l_debug_level  > 0 THEN
3416               oe_debug_pub.add(  'VALID HEADER LEVEL PAYMENT FOR INSERT' ) ;
3417           END IF;
3418         When others then
3419          IF l_debug_level  > 0 THEN
3420              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PAYMENT... ' ) ;
3421          END IF;
3422          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3423          OE_MSG_PUB.Add;
3424          p_return_status := FND_API.G_RET_STS_ERROR;
3425 
3426       End;
3427       END IF; -- Insert, Create Operation
3428 
3429       IF  p_x_header_payment_tbl(I).operation IN ('UPDATE','DELETE')
3430       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
3431       THEN
3432       Begin
3433          p_x_header_payment_tbl(I).header_id    := l_header_id;
3434          IF l_debug_level  > 0 THEN
3435              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_payment_TBL ( I ) .HEADER_ID ) ) ;
3436          END IF;
3437          IF l_debug_level  > 0 THEN
3438              oe_debug_pub.add(  'payment REF: '||P_X_HEADER_payment_TBL ( I ) .ORIG_SYS_PAYMENT_REF ) ;
3439          END IF;
3440          SELECT header_id
3441            INTO l_header_id
3442            FROM oe_payments
3443           WHERE header_id             = l_header_id
3444             AND line_id             IS NULL
3445             AND orig_sys_payment_ref =
3446                 p_x_header_payment_tbl(I).orig_sys_payment_ref;
3447 
3448 /* can take these 2 out, making sure the correct values */
3449          p_x_header_payment_tbl(I).header_id := l_header_id;
3450          p_x_header_payment_tbl(I).line_id := NULL;
3451 
3452          IF l_debug_level  > 0 THEN
3453              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_payment_TBL ( I ) .HEADER_ID ) ) ;
3454          END IF;
3455          IF l_debug_level  > 0 THEN
3456              oe_debug_pub.add(  'header payment ref: '||P_X_HEADER_payment_TBL ( I ) .orig_sys_payment_ref ) ;
3457          END IF;
3458 
3459       Exception
3460         When no_data_found then
3461           IF l_debug_level  > 0 THEN
3462               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING ORDER BUT THAT ORDER DOES NOT EXIST... ' ) ;
3463           END IF;
3464           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3465           OE_MSG_PUB.Add;
3466           p_return_status := FND_API.G_RET_STS_ERROR;
3467         When others then
3468          IF l_debug_level  > 0 THEN
3469              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HEADER LEVEL payment ... ' ) ;
3470          END IF;
3471          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3472          OE_MSG_PUB.Add;
3473          p_return_status := FND_API.G_RET_STS_ERROR;
3474       End;
3475       End IF; -- Update and Delete operation
3476    END LOOP; -- header payment
3477 -- aksingh(10/11/2000) this is in process of being coded upto this point
3478 
3479 -- end of multiple payments: header payment.
3480 
3481    l_line_count := 0;
3482    l_counter := 1;
3483    l_counter_memory := 1;
3484 
3485    FOR I in 1..p_x_line_tbl.count
3486    LOOP --{
3487 /* -----------------------------------------------------------
3488       Set message context for the line
3489    -----------------------------------------------------------
3490 */
3491       l_line_id         := NULL;
3492       l_line_number     := NULL;
3493       l_shipment_number := NULL;
3494       l_option_number   := NULL;
3495       l_price_adjustment_id := NULL;
3496       l_sales_credit_id := NULL;
3497       l_error_code      := NULL;
3498       l_error_flag      := NULL;
3499       l_error_message   := NULL;
3500       l_cho_unit_selling_price := NULL;
3501 
3502       IF p_x_line_tbl(I).org_id <> FND_API.G_MISS_NUM then
3503          l_org_id := p_x_line_tbl(I).org_id;
3504       ELSIF p_x_header_rec.ORG_ID <> FND_API.G_MISS_NUM then
3505             l_org_id := p_x_header_rec.org_id;
3506       ELSE
3507             l_org_id := mo_global.get_current_org_id;
3508       END IF;
3509 
3510       l_line_count := l_line_count + 1;
3511 
3512       IF l_debug_level  > 0 THEN
3513           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR THE LINE' ) ;
3514       END IF;
3515 
3516       OE_MSG_PUB.set_msg_context(
3517          p_entity_code                => 'LINE'
3518         ,p_entity_ref                 => null
3519         ,p_entity_id                  => null
3520         ,p_header_id                  => p_x_header_rec.header_id
3521         ,p_line_id                    => p_x_line_tbl(I).line_id
3522 --      ,p_batch_request_id           => p_x_header_rec.request_id
3523         ,p_order_source_id            => p_x_header_rec.order_source_id
3524         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
3525         ,p_change_sequence            => p_x_header_rec.change_sequence
3526         ,p_orig_sys_document_line_ref => p_x_line_tbl(I).orig_sys_line_ref
3527         ,p_orig_sys_shipment_ref      => p_x_line_tbl(I).orig_sys_shipment_ref
3528         ,p_source_document_type_id    => null
3529         ,p_source_document_id         => null
3530         ,p_source_document_line_id    => null
3531         ,p_attribute_code             => null
3532         ,p_constraint_id              => null
3533         );
3534 
3535 /* -----------------------------------------------------------
3536       Validate orig sys line ref
3537    -----------------------------------------------------------
3538 */
3539       IF l_debug_level  > 0 THEN
3540           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_LINE_REF' ) ;
3541       END IF;
3542 
3543       IF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3544          G_IMPORT_SHIPMENTS = 'YES' THEN
3545         IF p_x_line_tbl(I).orig_sys_line_ref     = FND_API.G_MISS_CHAR AND
3546            p_x_line_tbl(I).orig_sys_shipment_ref = FND_API.G_MISS_CHAR
3547         THEN
3548           IF l_debug_level  > 0 THEN
3549               oe_debug_pub.add(  'INVALID ORIG_SYS_LINE_REF... ' ) ;
3550           END IF;
3551           FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LINE_REF');
3552           OE_MSG_PUB.Add;
3553           p_return_status := FND_API.G_RET_STS_ERROR;
3554         END IF;
3555       ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3556             G_IMPORT_SHIPMENTS = 'NO' THEN
3557         IF p_x_line_tbl(I).orig_sys_line_ref     = FND_API.G_MISS_CHAR THEN
3558           IF l_debug_level  > 0 THEN
3559               oe_debug_pub.add(  'INVALID ORIG_SYS_LINE_REF... ' ) ;
3560           END IF;
3561           FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LINE_REF');
3562           OE_MSG_PUB.Add;
3563           p_return_status := FND_API.G_RET_STS_ERROR;
3564         END IF;
3565       ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL < '110508' THEN
3566         IF p_x_line_tbl(I).orig_sys_line_ref     = FND_API.G_MISS_CHAR THEN
3567           IF l_debug_level  > 0 THEN
3568               oe_debug_pub.add(  'INVALID ORIG_SYS_LINE_REF... ' ) ;
3569           END IF;
3570           FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LINE_REF');
3571           OE_MSG_PUB.Add;
3572           p_return_status := FND_API.G_RET_STS_ERROR;
3573         END IF;
3574       END IF;
3575 
3576 /* -----------------------------------------------------------
3577       Validate Ordered quantity uom2 (OPM bug 3457463)
3578    -----------------------------------------------------------
3579       If this is a process line, load the item details from cache and validate
3580   -----------------------------------------------------------
3581 */
3582 
3583    OPEN c_item(   	   p_x_line_tbl(I).ship_from_org_id,
3584                    p_x_line_tbl(I).inventory_item_id
3585                     );
3586                FETCH c_item
3587                 INTO   l_tracking_quantity_ind,
3588                        l_secondary_uom_code ,
3589                        l_secondary_default_ind
3590 	               ;
3591 
3592 
3593                IF c_item%NOTFOUND THEN
3594 		    l_tracking_quantity_ind := 'P';
3595 	            l_secondary_uom_code := NULL;
3596 	            l_secondary_default_ind := null;
3597 
3598 	       END IF;
3599 
3600     Close c_item;
3601 
3602 
3603 
3604 --IF oe_line_util.Process_Characteristics INVCONV
3605 --  (p_x_line_tbl(I).inventory_item_id,p_x_line_tbl(I).ship_from_org_id,l_item_rec) THEN
3606 
3607    IF l_debug_level  > 0 THEN
3608          oe_debug_pub.add(  'BEFORE VALIDATING ORDERED_QUANTITY_UOM2' ) ;
3609    END IF;
3610    /*oe_debug_pub.add('PROCESS ' ) ;
3611    oe_debug_pub.ADD(' dual ind : '|| l_item_rec.dualum_ind,1);
3612    oe_debug_pub.ADD(' l_item_rec.opm_item_um2 : '|| l_item_rec.opm_item_um2,1);
3613    oe_debug_pub.ADD(' ordered_quantity_uom2 : '|| p_x_line_tbl(I).ordered_quantity_uom2,1); */
3614 
3615 
3616   --IF l_item_rec.dualum_ind not in (1,2,3) THEN
3617   IF l_tracking_quantity_ind <> 'PS' then --  INVCONV
3618 
3619     oe_debug_pub.add('Primary and Secondary -  tracking_quantity_ind <> PS', 2);
3620 
3621     IF ( p_x_line_tbl(I).ordered_quantity_uom2 IS NOT NULL
3622      AND p_x_line_tbl(I).ordered_quantity_uom2 <> FND_API.G_MISS_CHAR ) THEN
3623       	  --oe_debug_pub.add(  'OPM INVALID ordered_quantity_uom2 - should not be provided... ' ) ;
3624           FND_MESSAGE.SET_NAME('INV','INV_SECONDARY_UOM_NOT_REQUIRED'); -- INVCONV
3625           OE_MSG_PUB.Add;
3626           p_return_status := FND_API.G_RET_STS_ERROR;
3627           IF l_debug_level  > 0 THEN
3628                oe_debug_pub.add(  'INVALID ORDERED_QUANTITY_UOM2... should not be provided' ) ;
3629           END IF;
3630 
3631     END IF; --  IF ( p_x_line_tbl(I).ordered_quantity_uom2 <> NULL
3632 
3633   ELSIF l_tracking_quantity_ind = 'PS' then --  INVCONV
3634 	   IF ( (  p_x_line_tbl(I).ordered_quantity_uom2 IS NOT NULL
3635 	   AND p_x_line_tbl(I).ordered_quantity_uom2 <> FND_API.G_MISS_CHAR )
3636            AND p_x_line_tbl(I).ordered_quantity_uom2 <> l_secondary_uom_code ) THEN -- INVCONV
3637       	     FND_MESSAGE.SET_NAME('PO','PO_INCORRECT_SECONDARY_UOM');  -- INVCONV
3638              OE_MSG_PUB.Add;
3639              p_return_status := FND_API.G_RET_STS_ERROR;
3640              IF l_debug_level  > 0 THEN
3641                oe_debug_pub.add(  'INVALID ORDERED_QUANTITY_UOM2... does not match mtl_system_items' ) ;
3642              END IF;
3643 
3644            END IF;   --  IF ( p_x_line_tbl(I).ordered_quantity_uom2 <> NULL
3645     END IF;  --IF l_tracking_quantity_ind <> 'PS' then --  INVCONV
3646 -- END IF; -- IF oe_line_util.Process_Characteristics invconv
3647 
3648 
3649 -- OPM END
3650 
3651 
3652 
3653 
3654 
3655 
3656 
3657       -- Validate the quantity sent on the 3a9
3658      If p_x_line_tbl(I).order_source_id = OE_Acknowledgment_Pub.G_XML_ORDER_SOURCE_ID And
3659          p_x_line_tbl(I).xml_transaction_type_code = OE_Acknowledgment_Pub.G_TRANSACTION_CPO Then
3660 	If  p_x_line_tbl(I).ordered_quantity < 0 Then
3661              IF l_debug_level  > 0 THEN
3662                  oe_debug_pub.add(  'INVALID QUANTITY ON 3A9' ) ;
3663              END IF;
3664              FND_MESSAGE.SET_NAME('ONT','OE_OI_INVALID_QTY_3A9');
3665              OE_MSG_PUB.Add;
3666              p_return_status := FND_API.G_RET_STS_ERROR;
3667         Else
3668 
3669            Begin
3670              Select ordered_quantity
3671              Into l_existing_qty
3672              From Oe_Order_Lines
3673              Where orig_sys_document_ref = p_x_line_tbl(I).orig_sys_document_ref
3674              And order_source_id       = p_x_line_tbl(I).order_source_id
3675              And orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref
3676              And orig_sys_shipment_ref = p_x_line_tbl(I).orig_sys_shipment_ref
3677              And decode(l_customer_key_profile, 'Y',
3678 		 nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
3679                = decode(l_customer_key_profile, 'Y',
3680 		 nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
3681 
3682           If l_existing_qty < p_x_line_tbl(I).ordered_quantity Then
3683              IF l_debug_level  > 0 THEN
3684                  oe_debug_pub.add(  'INVALID QUANTITY ON 3A9' ) ;
3685              END IF;
3686              FND_MESSAGE.SET_NAME('ONT','OE_OI_INVALID_QTY_3A9');
3687              OE_MSG_PUB.Add;
3688              p_return_status := FND_API.G_RET_STS_ERROR;
3689           End If;
3690           Exception
3691              When Others Then
3692            p_return_status := FND_API.G_RET_STS_ERROR;
3693           End;
3694         End If;
3695     End If;
3696 
3697 /* -----------------------------------------------------------
3698       Validate line operation code
3699    -----------------------------------------------------------
3700 */
3701 				IF l_debug_level  > 0 THEN
3702 				    oe_debug_pub.add(  'BEFORE VALIDATING LINE OPERATION CODE: '|| P_X_LINE_TBL ( I ) .OPERATION ) ;
3703 				END IF;
3704 
3705       IF (p_x_header_rec.operation      IN ('INSERT','CREATE') AND
3706           p_x_line_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3707          (p_x_header_rec.operation      IN ('UPDATE') AND
3708           p_x_line_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE'))OR
3709          (p_x_header_rec.operation      IN ('DELETE') AND
3710           p_x_line_tbl(I).operation NOT IN ('DELETE'))
3711       THEN
3712 	 IF l_debug_level  > 0 THEN
3713 	     oe_debug_pub.add(  'INVALID OPERATION CODE. YOU ARE TRYING TO INSERT THE ORDER HEADER BUT NOT THE LINES. IF THE OPERATION ON THE HEADER IS INSERT , IT SHOULD BE INSERT AT THE LINE LEVEL ALSO , NOT UPDATE OR DELETE...' ) ;
3714 	 END IF;
3715 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3716          OE_MSG_PUB.Add;
3717 	 p_return_status := FND_API.G_RET_STS_ERROR;
3718       END IF;
3719 
3720 /* -----------------------------------------------------------
3721       Derive Requisition Line Id for Internal Orders
3722    -----------------------------------------------------------
3723 */
3724       IF p_x_header_rec.order_source_id = OE_GLOBALS.G_ORDER_SOURCE_INTERNAL
3725         AND p_x_line_tbl(I).operation IN ('INSERT','CREATE','UPDATE','DELETE')
3726       THEN
3727         BEGIN
3728          IF l_debug_level  > 0 THEN
3729              oe_debug_pub.add(  'BEFORE DERIVING REQ LINE ID FOR INTERNAL ORDERS' ) ;
3730          END IF;
3731 
3732 	    p_x_line_tbl(I).source_document_type_id :=
3733 				OE_GLOBALS.G_ORDER_SOURCE_INTERNAL;
3734 	    p_x_line_tbl(I).source_document_id := p_x_header_rec.source_document_id;
3735 	    p_x_line_tbl(I).orig_sys_document_ref := p_x_header_rec.orig_sys_document_ref;
3736 	    p_x_line_tbl(I).sold_to_org_id := p_x_header_rec.sold_to_org_id;
3737 
3738 	  --  SELECT requisition_line_id
3739 	  --  INTO p_line_tbl(I).source_document_line_id
3740 	  --  FROM po_requisition_lines
3741 	  --  WHERE requisition_header_id = p_header_rec.source_document_id
3742        --  AND line_num = p_line_tbl(I).orig_sys_line_ref;
3743 
3744        --  Re-Assigning the ID to OM ID column
3745        p_x_line_tbl(I).source_document_line_id := p_x_line_tbl(I).orig_sys_line_ref;
3746 
3747        --  New Select for Multi-Org to get the reference columns
3748 
3749            l_po_dest_org_id := NULL;
3750 
3751            SELECT line_num, destination_organization_id
3752            INTO   p_x_line_tbl(I).orig_sys_line_ref, l_po_dest_org_id
3753            FROM   po_requisition_lines_all
3754            WHERE  requisition_header_id = p_x_header_rec.source_document_id
3755            AND    requisition_line_id = p_x_line_tbl(I).source_document_line_id;
3756 
3757            l_intransit_time := 0;
3758            IF l_po_dest_org_id is not null THEN
3759            BEGIN
3760               SELECT intransit_time * -1
3761               INTO   l_intransit_time
3762               FROM   mtl_interorg_ship_methods
3763               WHERE  from_organization_id = p_x_line_tbl(I).ship_from_org_id
3764               AND    to_organization_id = l_po_dest_org_id
3765               AND    nvl(default_flag,1) = 1;
3766               IF l_debug_level  > 0 THEN
3767                   oe_debug_pub.add(  'IN TRANSIT ' || L_INTRANSIT_TIME ) ;
3768               END IF;
3769            EXCEPTION
3770               WHEN OTHERS THEN
3771                IF l_debug_level  > 0 THEN
3772                    oe_debug_pub.add(  'IN TRANSIT IS SET TO 0' ) ;
3773                END IF;
3774                l_intransit_time := 0;
3775            END;
3776            END IF;
3777 
3778            -- Call to MRP package api Date_Offset for getting new
3779            -- schedule ship date
3780            IF l_debug_level  > 0 THEN
3781                oe_debug_pub.add(  'BEFORE CHECKING THE REQUEST_DATE VALUE' ) ;
3782            END IF;
3783            -- bug 1727334, do not call if request_date is MISS
3784 
3785            -- This code is going to be here, but it should be removed
3786            -- later when family pack H or I become mandatory
3787            -- I am leaving it here so, it will work as it, if customer
3788            -- does not have PO's patch for not passing the
3789            -- schedule ship date.
3790            -- Bug 1606316, fix (see later what fix), this is redundant
3791            -- as explained above
3792 
3793            IF p_x_line_tbl(I).request_date <> FND_API.G_MISS_DATE
3794            THEN
3795              IF l_debug_level  > 0 THEN
3796                  oe_debug_pub.add(  'BEFORE CALL TO DATE OFFSET API' ) ;
3797              END IF;
3798 
3799            -- bug 1675148, call changed, now passing request_date
3800            -- previously it was schedule_ship_date(!)
3801              l_new_schedule_ship_date := mrp_calendar.date_offset
3802                (arg_org_id => l_po_dest_org_id,
3803                 arg_bucket => 1,
3804                 arg_date   => p_x_line_tbl(I).request_date,
3805                 arg_offset => l_intransit_time
3806                 );
3807            END IF;
3808 
3809               IF l_debug_level  > 0 THEN
3810                   oe_debug_pub.add(  'OLD SCHEDULE_SHIP_DATE ' || P_X_LINE_TBL ( I ) .SCHEDULE_SHIP_DATE ) ;
3811               END IF;
3812            -- { Start of bug fix 1606316, If condition to check if
3813            -- schedule_ship_date is not passed by PO means it is
3814            -- MISS_DATE, do not assign the new found value of
3815            -- l_new_schedule_ship_date in above call. Which will
3816            -- be removed once family pack H/I become mandatory
3817            If p_x_line_tbl(I).schedule_ship_date <> FND_API.G_MISS_DATE Then
3818               p_x_line_tbl(I).schedule_ship_date :=
3819               nvl(l_new_schedule_ship_date, p_x_line_tbl(I).schedule_ship_date);
3820               IF l_debug_level  > 0 THEN
3821                   oe_debug_pub.add(  'NEW SCHEDULE_SHIP_DATE ' || P_X_LINE_TBL ( I ) .SCHEDULE_SHIP_DATE ) ;
3822               END IF;
3823            End If;
3824            -- End of bug fix 1606316, the change is adding of IF, that is it}
3825 
3826         EXCEPTION
3827         WHEN OTHERS THEN
3828 	     IF l_debug_level  > 0 THEN
3829 	         oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
3830 	     END IF;
3831 
3832           IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3833 	     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3834              OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Req_Line_Id_derivation');
3835           END IF;
3836         END;
3837       END IF;
3838 
3839      -- { Start of the Code for the Add Customer Functionality
3840 
3841      -- {Check for order_import_add_customers system parameter
3842      -- if any ref data is passed and the parameter is set
3843      -- then call add customers functionality.
3844      --{Start of If for calling add customers
3845      If p_line_customer_tbl(I).Orig_Ship_Address_Ref IS NOT NULL Or
3846         p_line_customer_tbl(I).Orig_Bill_Address_Ref IS NOT NULL Or
3847         p_line_customer_tbl(I).Orig_Deliver_Address_Ref IS NOT NULL Or
3848         p_line_customer_tbl(I).Ship_to_Contact_Ref IS NOT NULL Or
3849         p_line_customer_tbl(I).Bill_to_Contact_Ref IS NOT NULL Or
3850         p_line_customer_tbl(I).Deliver_to_Contact_Ref IS NOT NULL
3851      Then
3852        --{Start of If for checking add customers parameter
3853        If G_ONT_ADD_CUSTOMER In ('Y','P') Then
3854           l_line_rec := p_x_line_tbl(I);
3855           l_line_customer_rec := p_line_customer_tbl(I);
3856           Create_New_Cust_Info(
3857                  p_customer_rec   => l_line_customer_rec,
3858                  p_x_header_rec   => p_x_header_rec,
3859                  p_x_line_rec     => l_line_rec,
3860                  p_record_type    => 'LINE',
3861                  x_return_status  => l_return_status);
3862 
3863           IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
3864           AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
3865 			          FND_API.G_RET_STS_UNEXP_ERROR)
3866           THEN
3867             p_return_status := l_return_status;
3868           END IF;
3869           p_x_line_tbl(I)  := l_line_rec;
3870        Else
3871          IF l_debug_level  > 0 THEN
3872              oe_debug_pub.add(  'REF DATA PASSED BUT PARAMETER NOT SET' ) ;
3873          END IF;
3874          fnd_message.set_name('ONT','ONT_OI_INL_SET_PARAMETER');
3875          fnd_message.set_token('TYPE', 'Customers, Addresses or Contacts');
3876          oe_msg_pub.add;
3877          p_return_status := FND_API.G_RET_STS_ERROR;
3878        End If;
3879        -- End of If for checking add customers parameter}
3880      End If;
3881      -- End of If for calling add customers}
3882 
3883      -- End of the Code for the Add Customer Functionality }
3884 
3885       BEGIN
3886       IF p_x_line_tbl(I).operation IN ('INSERT','CREATE')
3887 -- aksingh(10/11/2000) this is in process of being coded
3888       AND p_x_header_rec.operation = 'UPDATE'
3889       THEN
3890             p_x_line_tbl(I).header_id    := l_header_id;
3891 
3892          IF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3893             G_IMPORT_SHIPMENTS = 'YES' THEN
3894 
3895             IF (p_x_line_tbl(I).split_from_line_ref IS NOT NULL) AND
3896                (p_x_line_tbl(I).split_from_line_ref <> FND_API.G_MISS_CHAR) AND
3897                (p_x_line_tbl(I).split_from_shipment_ref IS NOT NULL) AND
3898                (p_x_line_tbl(I).split_from_shipment_ref <> FND_API.G_MISS_CHAR)
3899             THEN
3900                 IF l_debug_level  > 0 THEN
3901                     oe_debug_pub.add(  'SPLIT LINE FOR LINE REFERENCE: '|| P_X_LINE_TBL ( I ) .SPLIT_FROM_LINE_REF ) ;
3902                 END IF;
3903               l_rec_found := FALSE;
3904               BEGIN
3905               FOR Z in 1..p_x_line_tbl.count
3906                LOOP
3907                  IF (p_x_line_tbl(Z).orig_sys_line_ref = p_x_line_tbl(I).split_from_line_ref) AND
3908                     (p_x_line_tbl(Z).orig_sys_shipment_ref = p_x_line_tbl(I).split_from_shipment_ref)
3909                  THEN
3910                    l_rec_found := TRUE;
3911                    p_x_line_tbl(Z).split_action_code := 'SPLIT';
3912                    p_x_line_tbl(Z).split_by := 'USER';
3913                    p_x_line_tbl(I).split_from_line_id :=
3914                        p_x_line_tbl(Z).line_id;
3915                  END IF;
3916                  IF l_rec_found THEN
3917                     raise e_break;
3918                  END IF;
3919                END LOOP;
3920               EXCEPTION
3921                 WHEN e_break THEN
3922                   NULL;
3923               END;
3924               IF NOT l_rec_found THEN
3925                 IF l_debug_level  > 0 THEN
3926                     oe_debug_pub.add(  'BSADRI NO SPLIT FROM FOUND' ) ;
3927                 END IF;
3928                 FND_MESSAGE.SET_NAME('ONT','OE_PC_SPLIT_VIOLATION');
3929                 FND_MESSAGE.SET_TOKEN('OBJECT',
3930                      p_x_line_tbl(I).split_from_line_ref);
3931                 FND_MESSAGE.SET_TOKEN('REASON',
3932                      'Could not find the reference line');
3933                 OE_MSG_PUB.Add;
3934                 p_return_status := FND_API.G_RET_STS_ERROR;
3935               END IF;
3936             END IF;
3937            BEGIN
3938             IF l_debug_level  > 0 THEN
3939                 oe_debug_pub.add(  'NEW LINE FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
3940             END IF;
3941             SELECT 1 into l_count
3942             FROM oe_order_lines
3943             WHERE header_id             = l_header_id
3944             AND orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref
3945             AND orig_sys_shipment_ref = p_x_line_tbl(I).orig_sys_shipment_ref
3946             AND decode(l_customer_key_profile, 'Y',
3947                 nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
3948               = decode(l_customer_key_profile, 'Y',
3949 		nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
3950 
3951 -- aksingh(10/11/2000) this is in process of being coded upto here
3952                IF l_debug_level  > 0 THEN
3953                    oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LINE WITH THE SAME ORDER SOURCE ID , ORIG_SYS_DOCUMENT_REF AND ORIG_SYS_LINE_REF... ' ) ;
3954                END IF;
3955              FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3956              OE_MSG_PUB.Add;
3957              p_return_status := FND_API.G_RET_STS_ERROR;
3958            Exception
3959            When no_data_found then
3960              IF l_debug_level  > 0 THEN
3961                  oe_debug_pub.add(  'VALID ORDER LINE FOR INSERT' ) ;
3962              END IF;
3963            When others then
3964              IF l_debug_level  > 0 THEN
3965                  oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT A NEW LINE... ' ) ;
3966              END IF;
3967             FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3968             OE_MSG_PUB.Add;
3969             p_return_status := FND_API.G_RET_STS_ERROR;
3970           End;
3971         ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3972               G_IMPORT_SHIPMENTS = 'NO' THEN
3973           IF (p_x_line_tbl(I).split_from_line_ref IS NOT NULL) AND
3974                (p_x_line_tbl(I).split_from_line_ref <> FND_API.G_MISS_CHAR)
3975             THEN
3976                 IF l_debug_level  > 0 THEN
3977                     oe_debug_pub.add(  'SPLIT LINE FOR LINE REFERENCE: '|| P_X_LINE_TBL ( I ) .SPLIT_FROM_LINE_REF ) ;
3978                 END IF;
3979               l_rec_found := FALSE;
3980               BEGIN
3981               FOR Z in 1..p_x_line_tbl.count
3982                LOOP
3983                  IF (p_x_line_tbl(Z).orig_sys_line_ref = p_x_line_tbl(I).split_from_line_ref) THEN
3984                    l_rec_found := TRUE;
3985                    p_x_line_tbl(Z).split_action_code := 'SPLIT';
3986                    p_x_line_tbl(Z).split_by := 'USER';
3987                    p_x_line_tbl(I).split_from_line_id :=
3988                        p_x_line_tbl(Z).line_id;
3989                  END IF;
3990                  IF l_rec_found THEN
3991                     raise e_break;
3992                  END IF;
3993                END LOOP;
3994               EXCEPTION
3995                 WHEN e_break THEN
3996                   NULL;
3997               END;
3998               IF NOT l_rec_found THEN
3999                 IF l_debug_level  > 0 THEN
4000                     oe_debug_pub.add(  'BSADRI NO SPLIT FROM FOUND' ) ;
4001                 END IF;
4002                 FND_MESSAGE.SET_NAME('ONT','OE_PC_SPLIT_VIOLATION');
4003                 FND_MESSAGE.SET_TOKEN('OBJECT',
4004                      p_x_line_tbl(I).split_from_line_ref);
4005                 FND_MESSAGE.SET_TOKEN('REASON',
4006                      'Could not find the reference line');
4007                 OE_MSG_PUB.Add;
4008                 p_return_status := FND_API.G_RET_STS_ERROR;
4009               END IF;
4010             END IF;
4011             BEGIN
4012             IF l_debug_level  > 0 THEN
4013                 oe_debug_pub.add(  'NEW LINE FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
4014             END IF;
4015             SELECT 1 into l_count
4016             FROM oe_order_lines
4017             WHERE header_id             = l_header_id
4018             AND orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref
4019             AND decode(l_customer_key_profile, 'Y',
4020 		nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
4021 	      = decode(l_customer_key_profile, 'Y',
4022 		nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
4023 
4024 -- aksingh(10/11/2000) this is in process of being coded upto here
4025                IF l_debug_level  > 0 THEN
4026                    oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LINE WITH THE SAME ORDER SOURCE ID , ORIG_SYS_DOCUMENT_REF AND ORIG_SYS_LINE_REF. .. ' ) ;
4027                END IF;
4028              FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4029              OE_MSG_PUB.Add;
4030              p_return_status := FND_API.G_RET_STS_ERROR;
4031            Exception
4032            When no_data_found then
4033              IF l_debug_level  > 0 THEN
4034                  oe_debug_pub.add(  'VALID ORDER LINE FOR INSERT' ) ;
4035              END IF;
4036            When others then
4037              IF l_debug_level  > 0 THEN
4038                  oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT A NEW LINE... ' ) ;
4039              END IF;
4040             FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4041             OE_MSG_PUB.Add;
4042             p_return_status := FND_API.G_RET_STS_ERROR;
4043           End;
4044          ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL < '110508' THEN
4045           IF (p_x_line_tbl(I).split_from_line_ref IS NOT NULL) AND
4046                (p_x_line_tbl(I).split_from_line_ref <> FND_API.G_MISS_CHAR)
4047             THEN
4048                 IF l_debug_level  > 0 THEN
4049                     oe_debug_pub.add(  'SPLIT LINE FOR LINE REFERENCE: '|| P_X_LINE_TBL ( I ) .SPLIT_FROM_LINE_REF ) ;
4050                 END IF;
4051               l_rec_found := FALSE;
4052               BEGIN
4053               FOR Z in 1..p_x_line_tbl.count
4054                LOOP
4055                  IF (p_x_line_tbl(Z).orig_sys_line_ref = p_x_line_tbl(I).split_from_line_ref) THEN
4056                    l_rec_found := TRUE;
4057                    p_x_line_tbl(Z).split_action_code := 'SPLIT';
4058                    p_x_line_tbl(Z).split_by := 'USER';
4059                    p_x_line_tbl(I).split_from_line_id :=
4060                        p_x_line_tbl(Z).line_id;
4061                  END IF;
4062                  IF l_rec_found THEN
4063                     raise e_break;
4064                  END IF;
4065                END LOOP;
4066               EXCEPTION
4067                 WHEN e_break THEN
4068                   NULL;
4069               END;
4070               IF NOT l_rec_found THEN
4071                 IF l_debug_level  > 0 THEN
4072                     oe_debug_pub.add(  'BSADRI NO SPLIT FROM FOUND' ) ;
4073                 END IF;
4074                 FND_MESSAGE.SET_NAME('ONT','OE_PC_SPLIT_VIOLATION');
4075                 FND_MESSAGE.SET_TOKEN('OBJECT',
4076                      p_x_line_tbl(I).split_from_line_ref);
4077                 FND_MESSAGE.SET_TOKEN('REASON',
4078                      'Could not find the reference line');
4079                 OE_MSG_PUB.Add;
4080                 p_return_status := FND_API.G_RET_STS_ERROR;
4081               END IF;
4082             END IF;
4083             BEGIN
4084             IF l_debug_level  > 0 THEN
4085                 oe_debug_pub.add(  'NEW LINE FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
4086             END IF;
4087             SELECT 1 into l_count
4088             FROM oe_order_lines
4089             WHERE header_id             = l_header_id
4090             AND orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref;
4091 
4092 -- aksingh(10/11/2000) this is in process of being coded upto here
4093                IF l_debug_level  > 0 THEN
4094                    oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LINE WITH THE SAME ORDER SOURCE ID , ORIG_SYS_DOCUMENT_REF AND ORIG_SYS_LINE_REF. .. ' ) ;
4095                END IF;
4096              FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4097              OE_MSG_PUB.Add;
4098              p_return_status := FND_API.G_RET_STS_ERROR;
4099            Exception
4100            When no_data_found then
4101              IF l_debug_level  > 0 THEN
4102                  oe_debug_pub.add(  'VALID ORDER LINE FOR INSERT' ) ;
4103              END IF;
4104            When others then
4105              IF l_debug_level  > 0 THEN
4106                  oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT A NEW LINE... ' ) ;
4107              END IF;
4108             FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4109             OE_MSG_PUB.Add;
4110             p_return_status := FND_API.G_RET_STS_ERROR;
4111           End;
4112 
4113          END IF;
4114 
4115       ELSIF p_x_line_tbl(I).operation IN ('UPDATE','DELETE')
4116       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
4117       THEN
4118 
4119 
4120                 IF l_debug_level  > 0 THEN
4121               oe_debug_pub.add(  'L_HEADER_ID: ' || l_header_id) ;
4122               oe_debug_pub.add(  'P_X_LINE_TBL(I).ORIG_SYS_LINE_REF' || p_x_line_tbl(I).orig_sys_line_ref) ;
4123               oe_debug_pub.add(  'P_X_LINE_TBL(I).ORIG_SYS_SHIPMENT_REF' || p_x_line_tbl(I).orig_sys_shipment_ref);
4124               oe_debug_pub.add(  'P_X_LINE_TBL(I).SOLD_TO_ORG_ID' || p_x_line_tbl(I).sold_to_org_id);
4125 
4126               END IF;
4127 
4128 
4129         IF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
4130            G_IMPORT_SHIPMENTS = 'YES' THEN
4131 
4132                 IF l_debug_level  > 0 THEN
4133               oe_debug_pub.add(  'G_IMPORT_SHIPMENTS WAS YES ' ) ;
4134               END IF;
4135 
4136 	Begin
4137               l_c_change_sequence := NULL;
4138 
4139           SELECT line_id, line_number, shipment_number,
4140                    option_number, change_sequence, unit_selling_price
4141               INTO l_line_id, l_line_number, l_shipment_number,
4142                    l_option_number, l_c_change_sequence, l_cho_unit_selling_price
4143               FROM oe_order_lines
4144              WHERE header_id          = l_header_id
4145                AND orig_sys_line_ref  = p_x_line_tbl(I).orig_sys_line_ref
4146                AND orig_sys_shipment_ref = p_x_line_tbl(I).orig_sys_shipment_ref
4147                AND (sold_to_org_id is NULL OR
4148 		   decode(l_customer_key_profile, 'Y',
4149 		   nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
4150                  = decode(l_customer_key_profile, 'Y',
4151 		   nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1));
4152 
4153             p_x_line_tbl(I).header_id       := l_header_id;
4154             p_x_line_tbl(I).line_id         := l_line_id;
4155             p_x_line_tbl(I).line_number     := l_line_number;
4156             p_x_line_tbl(I).shipment_number := l_shipment_number;
4157             p_x_line_tbl(I).option_number   := l_option_number;
4158 
4159          Exception
4160             When no_data_found then
4161               IF l_debug_level  > 0 THEN
4162                   oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE BUT THAT LINE DOES NOT EXIST... ' ) ;
4163               END IF;
4164               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4165               OE_MSG_PUB.Add;
4166               p_return_status := FND_API.G_RET_STS_ERROR;
4167             When others then
4168               IF l_debug_level  > 0 THEN
4169                   oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINE ... ' ) ;
4170               END IF;
4171               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4172               OE_MSG_PUB.Add;
4173               p_return_status := FND_API.G_RET_STS_ERROR;
4174          End;
4175        ELSE
4176           Begin
4177             l_c_change_sequence := NULL;
4178             SELECT line_id, line_number, shipment_number,
4179                    option_number, change_sequence, unit_selling_price
4180               INTO l_line_id, l_line_number, l_shipment_number,
4181                    l_option_number, l_c_change_sequence, l_cho_unit_selling_price
4182               FROM oe_order_lines
4183              WHERE header_id          = l_header_id
4184                AND orig_sys_line_ref  = p_x_line_tbl(I).orig_sys_line_ref;
4185 
4186             p_x_line_tbl(I).header_id       := l_header_id;
4187             p_x_line_tbl(I).line_id         := l_line_id;
4188             p_x_line_tbl(I).line_number     := l_line_number;
4189             p_x_line_tbl(I).shipment_number := l_shipment_number;
4190             p_x_line_tbl(I).option_number   := l_option_number;
4191 
4192          Exception
4193             When no_data_found then
4194               IF l_debug_level  > 0 THEN
4195                   oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE BUT THAT LINE DOES NOT EXIST... ' ) ;
4196               END IF;
4197               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4198               OE_MSG_PUB.Add;
4199               p_return_status := FND_API.G_RET_STS_ERROR;
4200             When others then
4201               IF l_debug_level  > 0 THEN
4202                   oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINE ... ' ) ;
4203               END IF;
4204               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4205               OE_MSG_PUB.Add;
4206               p_return_status := FND_API.G_RET_STS_ERROR;
4207          End;
4208        END IF;
4209 
4210         IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' THEN
4211            IF p_x_line_tbl(I).order_source_id = OE_Acknowledgment_Pub.G_XML_ORDER_SOURCE_ID AND
4212               p_x_line_tbl(I).xml_transaction_type_code = OE_Acknowledgment_Pub.G_TRANSACTION_CHO AND
4213               l_cso_response_profile = 'Y' AND
4214               p_x_line_tbl(I).cso_response_flag = 'Y' AND
4215               p_x_line_tbl(I).customer_item_net_price = FND_API.G_MISS_NUM  THEN
4216 
4217                  p_x_line_tbl(I).customer_item_net_price := l_cho_unit_selling_price;
4218                  IF l_debug_level > 0 THEN
4219                     oe_debug_pub.add('3A8 Response Customer_item_net_price ' || p_x_line_tbl(I).customer_item_net_price
4220                                    || ' Unit Selling Price ' || p_x_line_tbl(I).unit_selling_price);
4221                  END IF;
4222            END IF;
4223         END IF;
4224 
4225 
4226       ELSIF p_x_line_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')
4227       THEN
4228          IF l_debug_level  > 0 THEN
4229              oe_debug_pub.add(  'INVALID OPERATION CODE. NOT ONE OF INSERT , CREATE , UPDATE OR DELETE... ' ) ;
4230          END IF;
4231          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4232          OE_MSG_PUB.Add;
4233          p_return_status := FND_API.G_RET_STS_ERROR;
4234 
4235       END IF;
4236 
4237       EXCEPTION
4238       WHEN OTHERS THEN
4239          IF l_debug_level  > 0 THEN
4240              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4241          END IF;
4242 
4243          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4244 	    p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4245             OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.header_operation_validation');
4246          END IF;
4247       END;
4248 
4249 /* -----------------------------------------------------------
4250       Validate item type code
4251    -----------------------------------------------------------
4252 */
4253       IF l_debug_level  > 0 THEN
4254           oe_debug_pub.add(  'BEFORE VALIDATING ITEM TYPE CODE' ) ;
4255       END IF;
4256 
4257       IF p_x_line_tbl(I).item_type_code <> FND_API.G_MISS_CHAR AND
4258          p_x_line_tbl(I).item_type_code NOT IN
4259        ('STANDARD','MODEL','CLASS','KIT','SERVICE','OPTION','INCLUDED','CONFIG')
4260       THEN
4261 	 IF l_debug_level  > 0 THEN
4262 	     oe_debug_pub.add(  'INVALID ITEM TYPE CODE... ' ) ;
4263 	 END IF;
4264 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ITEM_TYPE');
4265          OE_MSG_PUB.Add;
4266   	 p_return_status := FND_API.G_RET_STS_ERROR;
4267       END IF;
4268    -- { Start of derivation of the sold_to_org_id for Header/Line
4269    If p_x_header_rec.sold_to_org_id IS NOT NULL AND
4270       p_x_header_rec.sold_to_org_id <> FND_API.G_MISS_NUM
4271    Then
4272       If p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4273          p_x_line_tbl(I).sold_to_org_id IS NULL
4274       Then
4275          p_x_line_tbl(I).sold_to_org_id := p_x_header_rec.sold_to_org_id;
4276       End If;
4277    Else
4278     -- { Start Begin
4279     Begin
4280       IF (p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4281          p_x_line_tbl(I).sold_to_org_id IS NULL) AND
4282          ((p_x_line_val_tbl(I).sold_to_org <> FND_API.G_MISS_CHAR AND
4283          p_x_line_val_tbl(I).sold_to_org IS NOT NULL) OR
4284          (p_x_header_val_rec.customer_number <> FND_API.G_MISS_CHAR AND
4285          p_x_header_val_rec.customer_number IS NOT NULL) OR
4286          (p_x_header_val_rec.sold_to_org <> FND_API.G_MISS_CHAR AND
4287          p_x_header_val_rec.sold_to_org IS NOT NULL))
4288       THEN
4289         IF l_debug_level  > 0 THEN
4290             oe_debug_pub.add(  'BEFORE CALLING SOLD TO ORG ID' ) ;
4291         END IF;
4292         p_x_line_tbl(I).sold_to_org_id := oe_value_to_id.sold_to_org(
4293                         p_sold_to_org => nvl(p_x_header_val_rec.sold_to_org,
4294                                          p_x_line_val_tbl(I).sold_to_org),
4295                     p_customer_number => p_x_header_val_rec.customer_number);
4296         If p_x_header_rec.sold_to_org_id is NULL OR
4297            p_x_header_rec.sold_to_org_id = FND_API.G_MISS_NUM Then
4298            p_x_header_rec.sold_to_org_id := p_x_line_tbl(I).sold_to_org_id;
4299         End If;
4300 
4301         IF l_debug_level  > 0 THEN
4302             oe_debug_pub.add(  'AFTER SOLDTOORGID '|| P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ;
4303         END IF;
4304 
4305         IF (p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4306            p_x_line_tbl(I).sold_to_org_id IS NULL)
4307         THEN
4308         IF l_debug_level  > 0 THEN
4309             oe_debug_pub.add(  'SOLD TO ORG ID IS MISSING , AFTER CALL TO VALUE TO ID' ) ;
4310         END IF;
4311           FND_MESSAGE.SET_NAME('ONT','OE_INVALID_CUSTOMER_ID');
4312           OE_MSG_PUB.Add;
4313           p_return_status := FND_API.G_RET_STS_ERROR;
4314         END IF;
4315       END IF;
4316     Exception
4317       When others then
4318        IF l_debug_level  > 0 THEN
4319            oe_debug_pub.add(  'OTHERS EXCEPTION WHEN GETTING SOLD TO ORG ID IN OEXVIMSB... ' ) ;
4320        END IF;
4321        FND_MESSAGE.SET_NAME('ONT','OE_INVALID_CUSTOMER_ID');
4322        OE_MSG_PUB.Add;
4323        p_return_status := FND_API.G_RET_STS_ERROR;
4324     End;
4325     -- End Begin}
4326    End If;
4327    -- End of derivation of the sold_to_org_id for Header/Line }
4328 
4329    -- This initialization is done to avoid use of the old value for next
4330    -- loop
4331    l_inventory_item_id_int  := NULL;
4332    l_inventory_item_id_ord  := NULL;
4333    l_inventory_item_id_cust := NULL;
4334    l_inventory_item_id_gen  := NULL;
4335    --bug#4174961
4336    IF (p_x_line_tbl(I).inventory_item_id <>  FND_API.G_MISS_NUM AND
4337       p_x_line_tbl(I).inventory_item_id IS NOT NULL)
4338    THEN
4339     l_inventory_item_id_int  := p_x_line_tbl(I).inventory_item_id;
4340    END IF;
4341 
4342 -- Aksingh Adding code for the Item Derivation and Cross Referencing
4343 -- { Adding 11/14/2000 Start
4344    IF (p_x_line_val_tbl(I).inventory_item <> FND_API.G_MISS_CHAR AND
4345       p_x_line_val_tbl(I).inventory_item IS NOT NULL) AND
4346       (p_x_line_tbl(I).inventory_item_id =  FND_API.G_MISS_NUM OR
4347       p_x_line_tbl(I).inventory_item_id IS NULL)
4348    THEN
4349       BEGIN
4350          IF l_debug_level  > 0 THEN
4351              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT' ) ;
4352          END IF;
4353          SELECT inventory_item_id
4354          INTO  l_inventory_item_id_int
4355          FROM  mtl_system_items_vl
4356          WHERE concatenated_segments = p_x_line_val_tbl(I).inventory_item
4357          AND   customer_order_enabled_flag = 'Y'
4358          AND   bom_item_type in (1,2,4)
4359          AND   organization_id =
4360                oe_sys_parameters.Value('MASTER_ORGANIZATION_ID',l_org_id);
4361 
4362          p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_int;
4363 
4364       EXCEPTION
4365         WHEN NO_DATA_FOUND THEN
4366          IF l_debug_level  > 0 THEN
4367              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - NO_DATA' ) ;
4368          END IF;
4369         When too_many_rows then
4370          IF l_debug_level  > 0 THEN
4371              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - TOO_MANY' ) ;
4372          END IF;
4373          IF l_debug_level  > 0 THEN
4374              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4375          END IF;
4376          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4377 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4378            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4379          END IF;
4380 	   When others then
4381          IF l_debug_level  > 0 THEN
4382              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - OTHERS' ) ;
4383          END IF;
4384          IF l_debug_level  > 0 THEN
4385              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4386          END IF;
4387          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4388 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4389            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4390          END IF;
4391       END;
4392     END IF;
4393 --  Adding 11/14/2000 End }
4394 
4395  -- { Get inventory item id for the ordered_item or ordered_item_id
4396  IF (NVL(p_x_line_tbl(I).item_identifier_type,'INT') IN ('INT','CUST') OR
4397         p_x_line_tbl(I).item_identifier_type = FND_API.G_MISS_CHAR)
4398  THEN
4399    IF (p_x_line_tbl(I).ordered_item <> FND_API.G_MISS_CHAR AND
4400       p_x_line_tbl(I).ordered_item IS NOT NULL)
4401    THEN
4402       BEGIN
4403          IF l_debug_level  > 0 THEN
4404              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT WITH ORDERED_ITEM' ) ;
4405          END IF;
4406          SELECT inventory_item_id
4407          INTO  l_inventory_item_id_ord
4408          FROM  mtl_system_items_vl
4409          WHERE concatenated_segments = p_x_line_tbl(I).ordered_item
4410          AND   customer_order_enabled_flag = 'Y'
4411          AND   bom_item_type in (1,2,4)
4412          AND   organization_id =
4413                oe_sys_parameters.Value('MASTER_ORGANIZATION_ID',l_org_id);
4414 
4415       EXCEPTION
4416         WHEN NO_DATA_FOUND THEN
4417          IF l_debug_level  > 0 THEN
4418              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - NO_DATA' ) ;
4419          END IF;
4420         When too_many_rows then
4421          IF l_debug_level  > 0 THEN
4422              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - TOO_MANY' ) ;
4423          END IF;
4424          IF l_debug_level  > 0 THEN
4425              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4426          END IF;
4427          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4428 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4429            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4430          END IF;
4431 	   When others then
4432          IF l_debug_level  > 0 THEN
4433              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - OTHERS' ) ;
4434          END IF;
4435          IF l_debug_level  > 0 THEN
4436              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4437          END IF;
4438          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4439 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4440            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4441          END IF;
4442       END;
4443     ELSIF (p_x_line_tbl(I).ordered_item_id <> FND_API.G_MISS_NUM AND
4444            p_x_line_tbl(I).ordered_item_id IS NOT NULL)
4445     THEN
4446       BEGIN
4447       IF l_debug_level  > 0 THEN
4448           oe_debug_pub.add(  'IN OEXVIMSB ITEM IDEN IS INT WITH ORDERED_ITEM_ID' ) ;
4449       END IF;
4450          SELECT customer_item_number
4451          INTO  p_x_line_tbl(I).ordered_item
4452          FROM  mtl_customer_items
4453          WHERE customer_item_id = p_x_line_tbl(I).ordered_item_id
4454          AND   inactive_flag    = 'N';
4455 
4456       EXCEPTION
4457         WHEN NO_DATA_FOUND THEN
4458          IF l_debug_level  > 0 THEN
4459              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - NO_DATA' ) ;
4460          END IF;
4461         When too_many_rows then
4462          IF l_debug_level  > 0 THEN
4463              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - TOO_MANY' ) ;
4464          END IF;
4465          IF l_debug_level  > 0 THEN
4466              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4467          END IF;
4468          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4469 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4470            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4471          END IF;
4472 	   When others then
4473          IF l_debug_level  > 0 THEN
4474              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - OTHERS' ) ;
4475          END IF;
4476          IF l_debug_level  > 0 THEN
4477              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4478          END IF;
4479          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4480 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4481            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4482          END IF;
4483       END;
4484     END IF;
4485  END IF;
4486  -- End of get inventory item id for ordered_item or ordered_item_id }
4487 
4488     -- { Get inventory item id and customer item id for type 'CUST'
4489     IF (NVL(p_x_line_tbl(I).item_identifier_type, 'CUST') = 'CUST' OR
4490         p_x_line_tbl(I).item_identifier_type = FND_API.G_MISS_CHAR) AND
4491        (p_x_line_tbl(I).ordered_Item is NOT NULL AND
4492        p_x_line_tbl(I).ordered_Item <> FND_API.G_MISS_CHAR  OR
4493        p_x_line_tbl(I).ordered_Item_id is NOT NULL AND
4494        p_x_line_tbl(I).ordered_Item_id <> FND_API.G_MISS_NUM)
4495        THEN
4496          IF l_debug_level  > 0 THEN
4497              oe_debug_pub.add(  'IN OEXVIMSB. ITEM IDENTIFIER IS CUST' ) ;
4498          END IF;
4499          IF (p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4500             p_x_line_tbl(I).sold_to_org_id IS NULL) AND
4501             ((p_x_line_val_tbl(I).sold_to_org <> FND_API.G_MISS_CHAR AND
4502             p_x_line_val_tbl(I).sold_to_org IS NOT NULL) OR
4503             (p_x_header_val_rec.customer_number <> FND_API.G_MISS_CHAR AND
4504             p_x_header_val_rec.customer_number IS NOT NULL) OR
4505             (p_x_header_val_rec.sold_to_org <> FND_API.G_MISS_CHAR AND
4506             p_x_header_val_rec.sold_to_org IS NOT NULL))
4507          THEN
4508            IF l_debug_level  > 0 THEN
4509                oe_debug_pub.add(  'BEFORE CALLING SOLD TO ORG ID' ) ;
4510            END IF;
4511            p_x_line_tbl(I).sold_to_org_id := oe_value_to_id.sold_to_org(
4512                            p_sold_to_org => nvl(p_x_header_val_rec.sold_to_org,
4513                                             p_x_line_val_tbl(I).sold_to_org),
4514                        p_customer_number => p_x_header_val_rec.customer_number);
4515            If p_x_header_rec.sold_to_org_id is NULL OR
4516               p_x_header_rec.sold_to_org_id = FND_API.G_MISS_NUM Then
4517               p_x_header_rec.sold_to_org_id := p_x_line_tbl(I).sold_to_org_id;
4518            End If;
4519 
4520            IF l_debug_level  > 0 THEN
4521                oe_debug_pub.add(  'AFTER SOLDTOORGID '|| P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ;
4522            END IF;
4523          END IF;
4524 	 -- 6 Lines are deleted from here, check the previous version for details.
4525 
4526 	 IF p_x_line_tbl(I).ordered_item_id = FND_API.G_MISS_NUM THEN
4527             l_ordered_item_id := NULL;
4528          ELSE
4529             l_ordered_item_id := p_x_line_tbl(I).ordered_item_id;
4530          END IF;
4531 
4532          IF l_debug_level  > 0 THEN
4533              oe_debug_pub.add(  'INVENTORY_ITEM_ID BEFORE CALLING CI_ATTRIBUTE_VALUE ' ||TO_CHAR ( P_X_LINE_TBL ( I ) .INVENTORY_ITEM_ID ) , 1 ) ;
4534          END IF;
4535          IF l_debug_level  > 0 THEN
4536              oe_debug_pub.add(  'CUST ITEM ID = '||P_X_LINE_TBL ( I ) .ORDERED_ITEM_ID ) ;
4537          END IF;
4538          IF l_debug_level  > 0 THEN
4539              oe_debug_pub.add(  'CUST ITEM ID = '||L_ORDERED_ITEM_ID ) ;
4540          END IF;
4541          IF l_debug_level  > 0 THEN
4542              oe_debug_pub.add(  'CUSTOMER_ID AT LINE = '||P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ;
4543          END IF;
4544          IF l_debug_level  > 0 THEN
4545              oe_debug_pub.add(  'CUSTOMER_ID AT HEADER = '||P_X_HEADER_REC.SOLD_TO_ORG_ID ) ;
4546          END IF;
4547          IF l_debug_level  > 0 THEN
4548              oe_debug_pub.add(  'CUSTOMER_ITEM_NUMBER = '||P_X_LINE_TBL ( I ) .ORDERED_ITEM ) ;
4549          END IF;
4550          IF l_debug_level  > 0 THEN
4551              oe_debug_pub.add(  'ORGANIZATION_ID = '||P_X_LINE_TBL ( I ) .SHIP_FROM_ORG_ID ) ;
4552          END IF;
4553          -- Fix for bug 1654669 start
4554          If p_x_line_tbl(I).ship_from_org_id = FND_API.G_MISS_NUM Then
4555             l_ship_from_org_id := NULL;
4556          Else
4557             l_ship_from_org_id := p_x_line_tbl(I).ship_from_org_id;
4558          End If;
4559          -- Fix for bug 1654669 end
4560          -- Fix for 2626323
4561     IF ((p_x_header_rec.ship_to_org_id IS NOT NULL AND --Bug 5383045
4562      p_x_header_rec.ship_to_org_id <> FND_API.G_MISS_NUM) AND
4563     (p_x_line_tbl(I).ship_to_org_id IS NULL OR
4564      p_x_line_tbl(I).ship_to_org_id =FND_API.G_MISS_NUM))THEN
4565 
4566      p_x_line_tbl(I).ship_to_org_id :=p_x_header_rec.ship_to_org_id;
4567     END IF;
4568 
4569     IF (p_x_line_tbl(I).ship_to_org_id IS NOT NULL AND
4570         p_x_line_tbl(I).ship_to_org_id <> FND_API.G_MISS_NUM) THEN
4571                   SELECT  /* MOAC_SQL_CHANGE */ u.cust_acct_site_id,
4572                 s.cust_account_id
4573         INTO  l_address_id
4574               ,l_cust_id
4575         FROM  HZ_CUST_SITE_USES_ALL u,   --moac
4576               HZ_CUST_ACCT_SITES s
4577         WHERE  u.cust_acct_site_id = s.cust_acct_site_id
4578         AND    u.org_id = s.org_id
4579         AND    u.site_use_id = p_x_line_tbl(I).ship_to_org_id
4580         AND    u.site_use_code = 'SHIP_TO';
4581 
4582         IF l_debug_level  > 0 THEN
4583             oe_debug_pub.add(  'SHIP TO ADDRESS:' || L_ADDRESS_ID||' - CUSTOMER:'||TO_CHAR ( L_CUST_ID ) ) ;
4584         END IF;
4585        IF l_cust_id <> p_x_line_tbl(I).sold_to_org_id  THEN
4586           IF l_debug_level  > 0 THEN
4587               oe_debug_pub.add(  'SOLD-TO CUSTOMER:'||TO_CHAR ( P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ) ;
4588           END IF;
4589           l_address_id := NULL;
4590         END IF;
4591      END IF;
4592 
4593         IF (p_x_line_tbl(I).inventory_item_id = FND_API.G_MISS_NUM OR
4594             p_x_line_tbl(I).inventory_item_id IS NULL)  THEN
4595              l_inventory_id := NULL;
4596           ELSE
4597              l_inventory_id :=  p_x_line_tbl(I).inventory_item_id;
4598         END IF;
4599 
4600        --Start of bug# 13574394
4601         IF Nvl(p_x_line_tbl(I).return_reason_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4602            p_x_line_tbl(I).line_category_code = 'RETURN' OR
4603            Nvl(p_x_line_tbl(I).return_context,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4604            Nvl(p_x_line_tbl(I).return_attribute1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4605            Nvl(p_x_line_tbl(I).return_attribute2, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4606            p_x_line_tbl(I).ordered_quantity < 0
4607 
4608         THEN
4609           IF l_debug_level  > 0 THEN
4610               oe_debug_pub.add(  'Its a Return Order Line' ) ;
4611           END IF;
4612           INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
4613                        Z_Customer_Item_Id => l_ordered_item_id
4614                      , Z_Customer_Id => p_x_header_rec.sold_to_org_id
4615                      , Z_Customer_Item_Number => p_x_line_tbl(I).Ordered_Item
4616                      , Z_Address_Id => l_address_id
4617                      , Z_Organization_Id => nvl(l_ship_from_org_id, OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id))
4618                      , Z_Inventory_Item_Id => l_inventory_id
4619                      , Attribute_Name => 'INVENTORY_ITEM_ID'
4620                      , Error_Code => l_error_code
4621                      , Error_Flag => l_error_flag
4622                      , Error_Message => l_error_message
4623                      , Attribute_Value => l_inventory_item_id_cust
4624 		     , Z_Line_Category_Code => 'RETURN'
4625                      );
4626         ELSE
4627           OE_DEBUG_PUB.ADD('Its Normal Sales Order Line');
4628           INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
4629                        Z_Customer_Item_Id => l_ordered_item_id
4630                      , Z_Customer_Id => p_x_header_rec.sold_to_org_id
4631                      , Z_Customer_Item_Number => p_x_line_tbl(I).Ordered_Item
4632                    , Z_Address_Id => l_address_id
4633                      , Z_Organization_Id => nvl(l_ship_from_org_id, OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id))
4634                      , Z_Inventory_Item_Id => l_inventory_id
4635                      , Attribute_Name => 'INVENTORY_ITEM_ID'
4636                      , Error_Code => l_error_code
4637                      , Error_Flag => l_error_flag
4638                      , Error_Message => l_error_message
4639                      , Attribute_Value => l_inventory_item_id_cust
4640                      , Z_Line_Category_Code => 'ORDER'
4641                      );
4642 
4643          END IF;    --End of bug# 13574394
4644 
4645 
4646 
4647           IF l_debug_level  > 0 THEN
4648               oe_debug_pub.add(  'INV CUST VAL RET BY INVAPI = '||L_INVENTORY_ITEM_ID_CUST ) ;
4649           END IF;
4650           IF l_error_message IS NOT NULL
4651           THEN
4652            IF l_debug_level  > 0 THEN
4653                oe_debug_pub.add(  'CALLED TO THE INV API CI_ATTR_VAL RETURNED ERROR' ) ;
4654            END IF;
4655 	      FND_MESSAGE.SET_NAME('ONT','OE_INV_CUS_ITEM');
4656            FND_MESSAGE.SET_TOKEN('ERROR_CODE', l_error_code);
4657            FND_MESSAGE.SET_TOKEN('ERROR_MESSAGE', l_error_message);
4658            OE_MSG_PUB.Add;
4659           END IF;
4660 
4661         --Start of bug# 13574394
4662         IF Nvl(p_x_line_tbl(I).return_reason_code,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4663            p_x_line_tbl(I).line_category_code = 'RETURN' OR
4664            Nvl(p_x_line_tbl(I).return_context,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4665            Nvl(p_x_line_tbl(I).return_attribute1,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4666            Nvl(p_x_line_tbl(I).return_attribute2, FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR OR
4667            p_x_line_tbl(I).ordered_quantity < 0
4668         THEN
4669           IF l_debug_level  > 0 THEN
4670               oe_debug_pub.add(  'Its a Return Order Line' ) ;
4671           END IF;
4672 
4673 	  INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
4674                        Z_Customer_Item_Id => l_ordered_item_id
4675                      , Z_Customer_Id => p_x_header_rec.sold_to_org_id
4676                      , Z_Customer_Item_Number => p_x_line_tbl(I).Ordered_Item
4677                    , Z_Address_Id => l_address_id
4678                      , Z_Organization_Id => nvl(l_ship_from_org_id , OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id))
4679                      , Z_Inventory_Item_Id => NULL
4680                      , Attribute_Name => 'CUSTOMER_ITEM_ID'
4681                      , Error_Code => l_error_code
4682                      , Error_Flag => l_error_flag
4683                      , Error_Message => l_error_message
4684                      , Attribute_Value => p_x_line_tbl(I).ordered_item_id
4685                      , Z_Line_Category_Code => 'RETURN'
4686                      );
4687         ELSE
4688           OE_DEBUG_PUB.ADD('Its Normal Order Line');
4689           INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
4690                        Z_Customer_Item_Id => l_ordered_item_id
4691                      , Z_Customer_Id => p_x_header_rec.sold_to_org_id
4692                      , Z_Customer_Item_Number => p_x_line_tbl(I).Ordered_Item
4693                    , Z_Address_Id => l_address_id
4694                      , Z_Organization_Id => nvl(l_ship_from_org_id , OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id))
4695                      , Z_Inventory_Item_Id => NULL
4696                      , Attribute_Name => 'CUSTOMER_ITEM_ID'
4697                      , Error_Code => l_error_code
4698                      , Error_Flag => l_error_flag
4699                      , Error_Message => l_error_message
4700                      , Attribute_Value => p_x_line_tbl(I).ordered_item_id
4701                      , Z_Line_Category_Code => 'ORDER'
4702                      );
4703 
4704     END IF;	--End of bug# 13574394
4705 
4706         IF l_debug_level  > 0 THEN
4707             oe_debug_pub.add(  'ORDRD VAL RET BY INVAPI = '||P_X_LINE_TBL ( I ) .ORDERED_ITEM_ID ) ;
4708         END IF;
4709         IF l_error_message IS NOT NULL
4710         THEN
4711            IF l_debug_level  > 0 THEN
4712                oe_debug_pub.add(  'CALLED TO THE INV API CI_ATTR_VAL RETURNED ERROR:' || l_error_message ) ;
4713            END IF;
4714            FND_MESSAGE.SET_NAME('ONT','OE_INV_CUS_ITEM');
4715            FND_MESSAGE.SET_TOKEN('ERROR_CODE', l_error_code);
4716            FND_MESSAGE.SET_TOKEN('ERROR_MESSAGE', l_error_message);
4717            OE_MSG_PUB.Add;
4718         ELSE  --moved assignment of item_identifier_type to ELSE clause to prevent incorrect
4719               --assignment when a customer item is not found by the inventory API...bug 3683667
4720            IF l_debug_level  > 0 THEN
4721                oe_debug_pub.add(  'ASSIGNING ITEM_IDENTIFIER_TYPE AS CUST' ) ;
4722            END IF;
4723            p_x_line_tbl(I).item_identifier_type := 'CUST';
4724         END IF;
4725 
4726 
4727         IF l_inventory_item_id_ord IS NOT NULL AND
4728            l_inventory_item_id_cust IS NOT NULL AND
4729            l_inventory_item_Id_ord <> l_inventory_item_id_cust
4730         THEN
4731            IF l_debug_level  > 0 THEN
4732                oe_debug_pub.add(  'WARNING: CUST AND INVENTORY ITEM ARE DIFFERENT' ) ;
4733            END IF;
4734 	      FND_MESSAGE.SET_NAME('ONT','OE_INV_INT_CUS_ITEM_ID');
4735            FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID', l_inventory_item_id_ord);
4736            FND_MESSAGE.SET_TOKEN('CUST_ITEM_ID', l_inventory_item_id_cust);
4737            OE_MSG_PUB.Add;
4738            p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_cust;
4739         ELSIF l_inventory_item_id_ord IS NOT NULL
4740         THEN
4741            p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_ord;
4742         ELSIF l_inventory_item_id_cust IS NOT NULL
4743         THEN
4744            p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_cust;
4745         END IF;
4746 
4747     END IF; -- CUST
4748 
4749     -- } End of Get inventory item id and customer item id for type 'CUST'
4750 
4751     -- { Get inventory item id for Generice Item
4752     IF (NVL(p_x_line_tbl(I).item_identifier_type,'INT') NOT IN ('INT','CUST') AND
4753         p_x_line_tbl(I).item_identifier_type <> FND_API.G_MISS_CHAR) AND
4754        (p_x_line_tbl(I).ordered_Item is NOT NULL AND
4755        p_x_line_tbl(I).ordered_Item <> FND_API.G_MISS_CHAR)
4756     THEN
4757       BEGIN
4758        IF l_debug_level  > 0 THEN
4759            oe_debug_pub.add(  'IN OEXVIMSB. ITEM IDENTIFIER IS '||P_X_LINE_TBL ( I ) .ITEM_IDENTIFIER_TYPE ) ;
4760        END IF;
4761        IF l_debug_level  > 0 THEN
4762            oe_debug_pub.add(  'ORDERED_ITEM_ID: '||P_X_LINE_TBL ( I ) .ORDERED_ITEM_ID ) ;
4763        END IF;
4764        IF l_debug_level  > 0 THEN
4765            oe_debug_pub.add(  'ORDERED_ITEM: '||P_X_LINE_TBL ( I ) .ORDERED_ITEM ) ;
4766        END IF;
4767        SELECT inventory_item_id
4768        INTO   l_inventory_item_id_gen
4769        FROM   mtl_cross_references
4770        WHERE  cross_reference_type = p_x_line_tbl(I).item_identifier_type
4771          AND  (organization_id =
4772                          OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id)
4773          OR   organization_id IS NULL)
4774          AND  cross_reference = p_x_line_tbl(I).ordered_item
4775          And  (inventory_item_id =  l_inventory_item_id_int
4776           OR  l_inventory_item_id_int IS NULL);
4777 
4778        IF l_inventory_item_id_ord IS NOT NULL AND
4779           l_inventory_item_id_gen IS NOT NULL AND
4780           l_inventory_item_Id_ord <> l_inventory_item_id_gen
4781        THEN
4782           IF l_debug_level  > 0 THEN
4783               oe_debug_pub.add(  'WARNING: GENERIC AND INVENTORY ITEM ARE DIFFERENT' ) ;
4784           END IF;
4785 	     FND_MESSAGE.SET_NAME('ONT','OE_INV_INT_CUS_ITEM_ID');
4786           FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID', l_inventory_item_id_ord);
4787           FND_MESSAGE.SET_TOKEN('CUST_ITEM_ID', l_inventory_item_id_gen);
4788           OE_MSG_PUB.Add;
4789           p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_gen;
4790        ELSIF l_inventory_item_id_ord IS NOT NULL
4791        THEN
4792           p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_ord;
4793        ELSIF l_inventory_item_id_gen IS NOT NULL
4794        THEN
4795           p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_gen;
4796        END IF;
4797 
4798       EXCEPTION
4799         WHEN NO_DATA_FOUND THEN
4800          IF l_debug_level  > 0 THEN
4801              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS GEN - NO_DATA' ) ;
4802          END IF;
4803         When too_many_rows then
4804          IF l_debug_level  > 0 THEN
4805              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4806          END IF;
4807 	    FND_MESSAGE.SET_NAME('ONT','OE_NOT_UNIQUE_ITEM');
4808          FND_MESSAGE.SET_TOKEN('GENERIC_ITEM', p_x_line_tbl(I).ordered_item);
4809          OE_MSG_PUB.Add;
4810          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4811 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4812            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_GEN_ITEM');
4813          END IF;
4814          IF l_debug_level  > 0 THEN
4815              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS GEN - TO_MANY' ) ;
4816          END IF;
4817 	   When others then
4818          IF l_debug_level  > 0 THEN
4819              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4820          END IF;
4821          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4822 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4823            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_GEN_ITEM');
4824          END IF;
4825          IF l_debug_level  > 0 THEN
4826              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS GEN - OTHERS' ) ;
4827          END IF;
4828       END;
4829     END IF;
4830     -- } End of  Get inventory item id for Generice Item
4831    /*Added for bug 5088655*/
4832    IF( l_inventory_item_id_int IS NULL AND
4833    l_inventory_item_id_ord  IS  NULL AND
4834    l_inventory_item_id_cust IS  NULL AND
4835    l_inventory_item_id_gen  IS  NULL )
4836    and p_x_line_tbl(I).operation in ('CREATE','INSERT') --added for bug 5509598
4837    and (nvl(p_x_line_tbl(I).split_from_line_ref,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR) THEN  --added for bug 5531063
4838          p_return_status := FND_API.G_RET_STS_ERROR;
4839    END IF;
4840 
4841     IF  (p_x_line_tbl(I).inventory_item_id IS NOT NULL
4842     AND p_x_line_tbl(I).inventory_Item_id <> FND_API.G_MISS_NUM)
4843     AND (p_x_line_val_tbl(I).inventory_item IS NOT NULL
4844     AND p_x_line_val_tbl(I).inventory_Item <> FND_API.G_MISS_CHAR)
4845     THEN
4846         p_x_line_val_tbl(I).inventory_item := FND_API.G_MISS_CHAR;
4847     END IF;
4848 
4849 
4850 -- Aksingh 11/14/2000 End for Cross Reference
4851 
4852 /* -----------------------------------------------------------
4853       Validate calculate price flag
4854    -----------------------------------------------------------
4855 */
4856       IF l_debug_level  > 0 THEN
4857           oe_debug_pub.add(  'BEFORE VALIDATING CALCULATE PRICE FLAG' ) ;
4858       END IF;
4859 
4860       IF p_x_line_tbl(I).calculate_price_flag NOT IN ('N','Y','P') AND
4861 	 p_x_line_tbl(I).calculate_price_flag <> FND_API.G_MISS_CHAR	--added for bug#13062903
4862       THEN
4863 	 IF l_debug_level  > 0 THEN
4864 	     oe_debug_pub.add(  'INVALID CALCULATE_PRICE FLAG... ' ) ;
4865 	 END IF;
4866 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_CALCULATE_PRICE');
4867          OE_MSG_PUB.Add;
4868   	 p_return_status := FND_API.G_RET_STS_ERROR;
4869       END IF;
4870 
4871 /* -----------------------------------------------------------
4872       Check List_Price and Selling_price
4873    -----------------------------------------------------------
4874 */
4875       IF l_debug_level  > 0 THEN
4876           oe_debug_pub.add(  'BEFORE VALIDATING LIST AND SELLING PRICE' ) ;
4877       END IF;
4878 
4879       IF p_x_line_tbl(I).calculate_price_flag = 'N' AND
4880         (p_x_line_tbl(I).unit_list_price    = FND_API.G_MISS_NUM OR
4881 	    p_x_line_tbl(I).unit_selling_price = FND_API.G_MISS_NUM) AND
4882          p_x_line_tbl(I).Item_Type_Code <> 'INCLUDED'
4883 
4884       THEN
4885 	 IF l_debug_level  > 0 THEN
4886 	     oe_debug_pub.add(  'LIST PRICE OR SELLING PRICE IS NULL... ' ) ;
4887 	 END IF;
4888 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_PRICE');
4889          OE_MSG_PUB.Add;
4890   	 p_return_status := FND_API.G_RET_STS_ERROR;
4891       END IF;
4892 
4893 /* -----------------------------------------------------------
4894       Check Pricing_Qunatity and Pricing_Quantity_Uom and update
4895    -----------------------------------------------------------
4896 */
4897       IF l_debug_level  > 0 THEN
4898           oe_debug_pub.add(  'BEFORE VALIDATING PRICING QUNATITY AND UOM' ) ;
4899       END IF;
4900 
4901       IF p_x_line_tbl(I).calculate_price_flag = 'N' AND
4902         (p_x_line_tbl(I).pricing_quantity    = FND_API.G_MISS_NUM OR
4903          p_x_line_tbl(I).pricing_quantity    = NULL)
4904       THEN
4905          IF l_debug_level  > 0 THEN
4906              oe_debug_pub.add(  'PRICING QUANTITY IS NULL...RESETTING ' ) ;
4907          END IF;
4908          p_x_line_tbl(I).pricing_quantity := p_x_line_tbl(I).ordered_quantity;
4909          p_x_line_tbl(I).pricing_quantity_uom := p_x_line_tbl(I).order_quantity_uom;
4910       END IF;
4911 
4912    --------------------------------------------------------------
4913    -- Importing Service lines for the Order/CUSTOMER PRODUCT context --
4914    --------------------------------------------------------------
4915 
4916       IF l_debug_level  > 0 THEN
4917           oe_debug_pub.add(  'ITEM_TYPE ' || P_X_LINE_TBL ( I ) .ITEM_TYPE_CODE ) ;
4918       END IF;
4919 	 IF l_debug_level  > 0 THEN
4920 	     oe_debug_pub.add(  'REF_TYPE ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_TYPE_CODE ) ;
4921 	 END IF;
4922 	 IF l_debug_level  > 0 THEN
4923 	     oe_debug_pub.add(  'REF_ORDER ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_ORDER ) ;
4924 	 END IF;
4925 	 IF l_debug_level  > 0 THEN
4926 	     oe_debug_pub.add(  'REF_LINE ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_LINE ) ;
4927 	 END IF;
4928 --	 oe_debug_pub.add('ref_order ' || nvl(p_x_line_tbl(I).service_reference_order, FND_API.G_MISS_CHAR));
4929 --	 oe_debug_pub.add('ref_line ' ||  nvl(p_x_line_tbl(I).service_reference_line, FND_API.G_MISS_CHAR));
4930 
4931       IF p_x_line_tbl(I).item_type_code = 'SERVICE' AND
4932          p_x_line_tbl(I).service_reference_type_code = 'ORDER' AND
4933          p_x_line_tbl(I).service_reference_order <> FND_API.G_MISS_CHAR AND
4934          p_x_line_tbl(I).service_reference_line <> FND_API.G_MISS_CHAR
4935       THEN
4936          -- Immediate Service
4937          IF p_x_line_tbl(I).service_reference_order =
4938             p_x_line_tbl(I).orig_sys_document_ref
4939          THEN
4940             -- Populate index for the link
4941             IF l_debug_level  > 0 THEN
4942                 oe_debug_pub.add(  'LOOPING LINE TABLE OF RECORD TO FIND THE INDEX' ) ;
4943             END IF;
4944             FOR J in 1..p_x_line_tbl.count
4945             LOOP
4946               IF p_x_line_tbl(J).orig_sys_line_ref =
4947                  p_x_line_tbl(I).service_reference_line
4948               THEN
4949                  p_x_line_tbl(I).service_line_index := J;
4950                  goto next_line;
4951               END IF;
4952             END LOOP;
4953             -- This condition is for Immediate service being enter during
4954             -- order update(semi delayed!!)
4955             BEGIN
4956               IF l_debug_level  > 0 THEN
4957                   oe_debug_pub.add(  'FOR SEMI DELAYED SERVICE GET THE LINE_ID' ) ;
4958               END IF;
4959               SELECT line_id
4960               INTO   p_x_line_tbl(I).service_reference_line_id
4961               FROM   oe_order_lines ol
4962               WHERE  ol.header_id = l_header_id
4963               AND    ol.orig_sys_line_ref =
4964                      p_x_line_tbl(I).service_reference_line
4965               AND    decode(l_customer_key_profile, 'Y',
4966 		     nvl(ol.sold_to_org_id, FND_API.G_MISS_NUM), 1)
4967                 =    decode(l_customer_key_profile, 'Y',
4968 		     nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
4969             EXCEPTION
4970              WHEN NO_DATA_FOUND THEN
4971                IF l_debug_level  > 0 THEN
4972                    oe_debug_pub.add(  'NOT FOUND LINEID FOR SEMI-DELAYED SERVICE' ) ;
4973                END IF;
4974 	          FND_MESSAGE.SET_NAME('ONT','OE_NO_SERV_TRANS');
4975                OE_MSG_PUB.Add;
4976                p_return_status := FND_API.G_RET_STS_ERROR;
4977              WHEN OTHERS THEN
4978                IF l_debug_level  > 0 THEN
4979                    oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4980                END IF;
4981               IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
4982   	           p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4983                   OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Line_id derivation for semi-delayed service');
4984               END IF;
4985             END;
4986          ELSE
4987           BEGIN
4988             IF l_debug_level  > 0 THEN
4989                 oe_debug_pub.add(  'FOR DELAYED SERVICE GET THE LINE_ID' ) ;
4990             END IF;
4991             SELECT line_id
4992             INTO   p_x_line_tbl(I).service_reference_line_id
4993             FROM   oe_order_lines ol
4994             WHERE  ol.order_source_id =
4995                    p_x_header_rec.order_source_id
4996             AND    ol.orig_sys_document_ref =
4997                    p_x_line_tbl(I).service_reference_order
4998             AND    ol.orig_sys_line_ref =
4999                    p_x_line_tbl(I).service_reference_line
5000             AND    decode(l_customer_key_profile, 'Y',
5001 		   nvl(ol.sold_to_org_id, FND_API.G_MISS_NUM), 1)
5002                =   decode(l_customer_key_profile, 'Y',
5003         	   nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
5004 
5005           EXCEPTION
5006            WHEN NO_DATA_FOUND THEN
5007              IF l_debug_level  > 0 THEN
5008                  oe_debug_pub.add(  'NOT FOUND ORDER LINE FOR DELAYED SERVICE' ) ;
5009              END IF;
5010 	        FND_MESSAGE.SET_NAME('ONT','OE_NO_SERV_TRANS');
5011              OE_MSG_PUB.Add;
5012              p_return_status := FND_API.G_RET_STS_ERROR;
5013            WHEN OTHERS THEN
5014              IF l_debug_level  > 0 THEN
5015                  oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
5016              END IF;
5017             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
5018 	           p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5019                 OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Line_id derivation for delayed service');
5020             END IF;
5021           END;
5022          END IF;
5023       ELSIF p_x_line_tbl(I).item_type_code = 'SERVICE' AND
5024          p_x_line_tbl(I).service_reference_type_code = 'CUSTOMER_PRODUCT' AND
5025          p_x_line_tbl(I).service_reference_order = FND_API.G_MISS_CHAR AND
5026       -- second OR condition now removed as service_reference_system cannot be processed without
5027       -- service_reference_line
5028         p_x_line_tbl(I).service_reference_line <> FND_API.G_MISS_CHAR
5029       THEN
5030 	 IF l_debug_level  > 0 THEN
5031 	     oe_debug_pub.add(  'REF_SYSTEM ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_SYSTEM ) ;
5032 	 END IF;
5033          -- Assign service reference system to line rec (if populated)
5034         BEGIN
5035             p_x_line_tbl(I).service_reference_line_id :=
5036             to_number(p_x_line_tbl(I).service_reference_line);
5037           If p_x_line_tbl(I).service_reference_system <> FND_API.G_MISS_CHAR then
5038             p_x_line_tbl(I).service_reference_system_id :=
5039             to_number(p_x_line_tbl(I).service_reference_system);
5040           End If;
5041         EXCEPTION
5042            WHEN OTHERS THEN
5043             IF l_debug_level  > 0 THEN
5044                 oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
5045             END IF;
5046             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
5047 	          p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5048                OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.system_id derivation for delayed service');
5049             END IF;
5050         END;
5051       ELSIF p_x_line_tbl(I).item_type_code = 'SERVICE'
5052       THEN
5053          IF l_debug_level  > 0 THEN
5054              oe_debug_pub.add(  'REQUIRED DATA IS MISSING FOR SERVICE LINE' ) ;
5055          END IF;
5056 	    FND_MESSAGE.SET_NAME('ONT','OE_NO_SERV_TRANS');
5057          OE_MSG_PUB.Add;
5058          p_return_status := FND_API.G_RET_STS_ERROR;
5059       END IF;
5060    <<next_line>>
5061 	null;
5062     /* bsadri fill in the IDs for actions if this is an update */
5063     BEGIN
5064     IF p_x_line_tbl(I).operation IN ('UPDATE','DELETE')
5065       AND p_x_header_rec.operation IN ('UPDATE','DELETE') THEN
5066     -- The following condition is added for #1927259
5067    if (p_x_action_request_tbl.COUNT >0 ) then
5068       FOR b in l_counter..p_x_action_request_tbl.COUNT
5069       LOOP--{
5070          l_counter_memory := l_counter_memory + 1;
5071          IF p_x_action_request_tbl(b).entity_code = OE_Globals.G_ENTITY_LINE
5072           AND p_x_action_request_tbl(b).entity_index = l_line_count THEN
5073             p_x_action_request_tbl(b).entity_id := p_x_line_tbl(I).line_id;
5074 /*myerrams, Customer Acceptance, Populating the Action_request table with Header id if Customer Acceptance is enabled.*/
5075 	    IF  p_x_action_request_tbl(b).request_type = OE_Globals.G_ACCEPT_FULFILLMENT  OR  p_x_action_request_tbl(b).request_type = OE_Globals.G_REJECT_FULFILLMENT THEN
5076 		    IF (OE_SYS_PARAMETERS.VALUE('ENABLE_FULFILLMENT_ACCEPTANCE',l_org_id) = 'Y') THEN
5077 			p_x_action_request_tbl(b).param5 := p_x_line_tbl(I).header_id;
5078 	            END IF;
5079 	    END IF;
5080 /*myerrams, Customer Acceptance, end*/
5081             IF p_x_action_request_tbl(b).request_type =
5082                                                 OE_Globals.G_LINK_CONFIG
5083             THEN
5084               p_x_action_request_tbl(b).param1 :=
5085                      p_x_line_tbl(I).inventory_item_id;
5086             END IF;
5087          END IF;
5088          IF p_x_action_request_tbl(b).entity_code = OE_Globals.G_ENTITY_LINE
5089           AND p_x_action_request_tbl(b).entity_index > l_line_count THEN
5090               raise e_break;
5091          END IF;
5092       END LOOP;--}
5093     end if;
5094       l_counter := l_counter_memory - 1;
5095     END IF;
5096     EXCEPTION
5097       WHEN e_break THEN
5098           l_counter := l_counter_memory - 1;
5099     END;
5100    END LOOP; --}
5101 
5102    FOR I in 1..p_x_line_adj_tbl.count
5103    LOOP
5104 /* -----------------------------------------------------------
5105       Set message context for line price adjustments
5106    -----------------------------------------------------------
5107 */
5108       l_price_adjustment_id := NULL;
5109       IF l_debug_level  > 0 THEN
5110           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE PRICE ADJUSTMENTS' ) ;
5111       END IF;
5112 
5113       OE_MSG_PUB.set_msg_context(
5114          p_entity_code                => 'LINE_ADJ'
5115         ,p_entity_ref                 => p_x_line_adj_tbl(I).orig_sys_discount_ref
5116         ,p_entity_id                  => null
5117         ,p_header_id                  => p_x_header_rec.header_id
5118         ,p_line_id                    => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).line_id
5119 --      ,p_batch_request_id           => p_x_header_rec.request_id
5120         ,p_order_source_id            => p_x_header_rec.order_source_id
5121         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5122         ,p_change_sequence            => p_x_header_rec.change_sequence
5123         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).orig_sys_line_ref
5124         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).orig_sys_shipment_ref
5125         ,p_source_document_type_id    => null
5126         ,p_source_document_id         => null
5127         ,p_source_document_line_id    => null
5128         ,p_attribute_code             => null
5129         ,p_constraint_id              => null
5130         );
5131 
5132 /* -----------------------------------------------------------
5133       Validate orig sys discount ref for line
5134    -----------------------------------------------------------
5135 */
5136       IF l_debug_level  > 0 THEN
5137           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_DISCOUNT_REF FOR LINE' ) ;
5138       END IF;
5139 
5140       IF p_x_line_adj_tbl(I).orig_sys_discount_ref = FND_API.G_MISS_CHAR
5141       THEN
5142 	 IF l_debug_level  > 0 THEN
5143 	     oe_debug_pub.add(  'INVALID ORIG_SYS_DISCOUNT_REF FOR LINE... ' ) ;
5144 	 END IF;
5145 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_DISCOUNT_REF');
5146          OE_MSG_PUB.Add;
5147 	 p_return_status := FND_API.G_RET_STS_ERROR;
5148       END IF;
5149 
5150 /* -----------------------------------------------------------
5151       Validate line adjustments operation code
5152    -----------------------------------------------------------
5153 */
5154       IF l_debug_level  > 0 THEN
5155           oe_debug_pub.add(  'BEFORE VALIDATING LINE ADJUSTMENTS OPERATION CODE' ) ;
5156       END IF;
5157 
5158       IF p_x_line_adj_tbl(I).operation NOT IN ('INSERT','CREATE',
5159 					     'UPDATE','DELETE') OR
5160         (p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation
5161 			     		 IN ('INSERT','CREATE') AND
5162          p_x_line_adj_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5163         (p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation
5164 			     		 IN ('UPDATE') AND
5165          p_x_line_adj_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5166         (p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation
5167 			     		 IN ('DELETE') AND
5168          p_x_line_adj_tbl(I).operation NOT IN ('DELETE'))
5169       THEN
5170 	 IF l_debug_level  > 0 THEN
5171 	     oe_debug_pub.add(  'INVALID LINE ADJUSTMENTS OPERATION CODE...' ) ;
5172 	 END IF;
5173 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5174          OE_MSG_PUB.Add;
5175 	 p_return_status := FND_API.G_RET_STS_ERROR;
5176       END IF;
5177 
5178 -- aksingh start on this (10/11/2000) this is in process of being coded
5179       IF  p_x_line_adj_tbl(I).operation IN ('INSERT', 'CREATE')
5180       AND p_x_header_rec.operation = 'UPDATE'
5181       AND p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation = 'UPDATE'
5182       THEN
5183       Begin
5184          IF l_debug_level  > 0 THEN
5185              oe_debug_pub.add(  'NEW ADJUSTMENT FOR LINE LEVEL , THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5186          END IF;
5187          p_x_line_adj_tbl(I).header_id  := l_header_id;
5188        /*  Bug #2108967 -- Passing the correct line_id    */
5189          p_x_line_adj_tbl(I).line_id    := p_x_line_tbl(p_x_line_adj_tbl(I).line_index).line_id;
5190 
5191          SELECT 1 into l_count
5192            FROM oe_price_adjustments
5193           WHERE header_id              = p_x_header_rec.header_id
5194             AND line_id                = l_line_id
5195             AND orig_sys_discount_ref  =
5196                        p_x_line_adj_tbl(I).orig_sys_discount_ref
5197             AND rownum                < 2;
5198 
5199          IF l_debug_level  > 0 THEN
5200              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LNADJ WITH THE SAME HEADER_ID , LINE_ID AND ORIG_SYS_DISCOUNT_REF... ' ) ;
5201          END IF;
5202          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5203          OE_MSG_PUB.Add;
5204          p_return_status := FND_API.G_RET_STS_ERROR;
5205       Exception
5206         When no_data_found then
5207           IF l_debug_level  > 0 THEN
5208               oe_debug_pub.add(  'VALID LINE LEVEL PRICE ADJ FOR INSERT' ) ;
5209           END IF;
5210         When others then
5211          IF l_debug_level  > 0 THEN
5212              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE PRICE ADJ... ' ) ;
5213          END IF;
5214          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5215          OE_MSG_PUB.Add;
5216          p_return_status := FND_API.G_RET_STS_ERROR;
5217       End;
5218       End IF; -- Insert, Create Operation
5219 
5220       IF  p_x_line_adj_tbl(I).operation IN ('UPDATE','DELETE')
5221       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5222       AND p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5223       THEN
5224       Begin
5225          IF l_debug_level  > 0 THEN
5226              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5227          END IF;
5228          IF l_debug_level  > 0 THEN
5229              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5230          END IF;
5231          IF l_debug_level  > 0 THEN
5232              oe_debug_pub.add(  'DISCOUNT REF: '||P_X_LINE_ADJ_TBL ( I ) .ORIG_SYS_DISCOUNT_REF ) ;
5233          END IF;
5234          p_x_line_adj_tbl(I).header_id  := l_header_id;
5235          p_x_line_adj_tbl(I).line_id    := p_x_line_tbl(p_x_line_adj_tbl(I).line_index).line_id;
5236          SELECT price_adjustment_id
5237            INTO l_price_adjustment_id
5238            FROM oe_price_adjustments
5239           WHERE header_id             = l_header_id
5240             AND line_id               = p_x_line_adj_tbl(I).line_id
5241             AND orig_sys_discount_ref =
5242                 p_x_line_adj_tbl(I).orig_sys_discount_ref;
5243 
5244          p_x_line_adj_tbl(I).price_adjustment_id := l_price_adjustment_id;
5245          IF l_debug_level  > 0 THEN
5246              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_LINE_ADJ_TBL ( I ) .HEADER_ID ) ) ;
5247          END IF;
5248          IF l_debug_level  > 0 THEN
5249              oe_debug_pub.add(  'ADJUST ID: '||TO_CHAR ( P_X_LINE_ADJ_TBL ( I ) .PRICE_ADJUSTMENT_ID ) ) ;
5250          END IF;
5251 
5252       Exception
5253         When no_data_found then
5254           IF l_debug_level  > 0 THEN
5255               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE ADJ BUT THAT DOES NOT EXIST... ' ) ;
5256           END IF;
5257           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5258           OE_MSG_PUB.Add;
5259           p_return_status := FND_API.G_RET_STS_ERROR;
5260         When others then
5261          IF l_debug_level  > 0 THEN
5262              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINEADJ ... ' ) ;
5263          END IF;
5264          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5265          OE_MSG_PUB.Add;
5266          p_return_status := FND_API.G_RET_STS_ERROR;
5267       End;
5268       End IF; -- Update and Delete operation
5269 
5270 -- aksingh(10/11/2000) this is in process of being coded upto this point
5271 
5272 -- Following changes are made to fix the bug# 1220921, It will call the
5273 -- api to get the id(header and line) also the list_line_type code to
5274 -- pass it to process_order as right now it is not possible to call
5275 -- process order to import order without passing the these ids.
5276 -- {
5277 
5278   If   (p_x_line_adj_tbl(I).list_header_id is null
5279        or  p_x_line_adj_tbl(I).list_header_id = FND_API.G_MISS_NUM)
5280       and (p_x_line_adj_tbl(I).list_line_id is null
5281        or  p_x_line_adj_tbl(I).list_line_id = FND_API.G_MISS_NUM)
5282      then
5283       list_line_id( p_modifier_name  => p_x_line_adj_val_tbl(I).list_name,
5284                     p_list_line_no   => p_x_line_adj_tbl(I).list_line_no,
5285                     p_version_no     => p_x_line_adj_val_tbl(I).version_no,
5286                     p_list_line_type_code =>p_x_line_adj_tbl(I).list_line_type_code,
5287                     p_return_status  => l_return_status,
5288                     x_list_header_id => l_list_header_id,
5289                     x_list_line_id   => l_list_line_id,
5290                     x_list_line_no  =>l_list_line_no,
5291                      x_type         => l_type);
5292 
5293       IF l_type NOT IN ('DIS','FREIGHT_CHARGE','PROMOLINE','COUPON','PROMO','SUR') THEN
5294          IF l_debug_level  > 0 THEN
5295              oe_debug_pub.add(  'OEXVIMSB.PLS -> NOT A VALID DISCOUNT/COUPON TYPE ( LINE ) ' ) ;
5296          END IF;
5297          IF l_debug_level  > 0 THEN
5298              oe_debug_pub.add(  'NOT VALID PROMOTION NAME =' ||P_X_HEADER_ADJ_VAL_TBL ( I ) .LIST_NAME ) ;
5299          END IF;
5300          FND_MESSAGE.SET_NAME('ONT','OE_INVALID_LIST_NAME');
5301          FND_MESSAGE.SET_TOKEN('LIST_NAME',p_x_line_adj_val_tbl(I).list_name);
5302          OE_MSG_PUB.Add;
5303 	 p_return_status := FND_API.G_RET_STS_ERROR;
5304       END IF;
5305 
5306       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
5307           AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
5308 		          FND_API.G_RET_STS_UNEXP_ERROR)
5309       THEN
5310           p_return_status := l_return_status;
5311       END IF;
5312 
5313       IF l_debug_level  > 0 THEN
5314           oe_debug_pub.add(  'LIST_LINE_TYPE_CODE = '||L_TYPE ) ;
5315       END IF;
5316       IF l_debug_level  > 0 THEN
5317           oe_debug_pub.add(  'LIST HEADER ID = '||L_LIST_HEADER_ID ) ;
5318       END IF;
5319       IF l_debug_level  > 0 THEN
5320           oe_debug_pub.add(  'LIST LINE ID = '||L_LIST_LINE_ID ) ;
5321       END IF;
5322       IF l_type In ('DIS','SUR') THEN
5323          p_x_line_adj_tbl(I).list_header_id :=l_list_header_id;
5324          p_x_line_adj_tbl(I).list_line_id :=l_list_line_id;
5325       END IF;
5326 
5327       IF l_type='FREIGHT_CHARGE' THEN
5328          p_x_line_adj_tbl(I).list_header_id :=l_list_header_id;
5329          p_x_line_adj_tbl(I).list_line_id :=l_list_line_id;
5330       END IF;
5331 
5332       IF l_type='PROMOLINE' THEN
5333        l_line_price_att_tbl(I).pricing_context :='MODLIST';
5334        l_line_price_att_tbl(I).flex_title      :='QP_ATTR_DEFNS_QUALIFIER';
5335        l_line_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_line_adj_tbl(I).Orig_Sys_Discount_Ref;
5336        l_line_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
5337        l_line_price_att_tbl(I).pricing_attribute2 :=l_list_line_id;
5338        l_line_price_att_tbl(I).operation := p_x_line_adj_tbl(I).Operation;
5339        l_line_price_att_tbl(I).line_index := p_x_line_adj_tbl(I).line_index;
5340        IF l_debug_level  > 0 THEN
5341            oe_debug_pub.add(  'LINE_INDEX = '||L_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) ;
5342        END IF;
5343        IF l_debug_level  > 0 THEN
5344            oe_debug_pub.add(  'LINE_PRICE OPERATION = '||L_LINE_PRICE_ATT_TBL ( I ) .OPERATION ) ;
5345        END IF;
5346        p_x_line_adj_tbl.delete (I);
5347        p_x_line_adj_val_tbl.DELETE (I);
5348       END IF;
5349       IF l_type = 'COUPON' THEN
5350        l_line_price_att_tbl(I).pricing_context :='MODLIST';
5351        l_line_price_att_tbl(I).flex_title      :='QP_ATTR_DEFNS_QUALIFIER';
5352        l_line_price_att_tbl(I).pricing_attribute3 :=l_list_line_id;
5353        l_line_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_line_adj_tbl(I).Orig_Sys_Discount_Ref;
5354        l_line_price_att_tbl(I).operation := p_x_line_adj_tbl(I).Operation;
5355        l_line_price_att_tbl(I).line_index := p_x_line_adj_tbl(I).line_index;
5356        IF l_debug_level  > 0 THEN
5357            oe_debug_pub.add(  'LINE_INDEX = '||L_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) ;
5358        END IF;
5359        IF l_debug_level  > 0 THEN
5360            oe_debug_pub.add(  'LINE_PRICE OPERATION = '||L_LINE_PRICE_ATT_TBL ( I ) .OPERATION ) ;
5361        END IF;
5362        p_x_line_adj_tbl.delete (I);
5363        p_x_line_adj_val_tbl.DELETE (I);
5364       END IF;
5365 
5366       IF l_type='PROMO' THEN
5367        IF l_debug_level  > 0 THEN
5368            oe_debug_pub.add(  'IN LINE PROMO' ) ;
5369        END IF;
5370        l_line_price_att_tbl(I).pricing_context :='MODLIST';
5371        l_line_price_att_tbl(I).flex_title    :='QP_ATTR_DEFNS_QUALIFIER';
5372        l_line_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
5373        l_line_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_line_adj_tbl(I).Orig_Sys_Discount_Ref;
5374        l_line_price_att_tbl(I).operation := p_x_line_adj_tbl(I).Operation;
5375        l_line_price_att_tbl(I).line_index := p_x_line_adj_tbl(I).line_index;
5376        IF l_debug_level  > 0 THEN
5377            oe_debug_pub.add(  'LINE_INDEX = '||L_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) ;
5378        END IF;
5379        IF l_debug_level  > 0 THEN
5380            oe_debug_pub.add(  'LINE_PRICE OPERATION = '||L_LINE_PRICE_ATT_TBL ( I ) .OPERATION ) ;
5381        END IF;
5382        p_x_line_adj_tbl.delete (I);
5383        p_x_line_adj_val_tbl.DELETE (I);
5384       END IF;
5385    end if;
5386 -- } end if
5387 
5388    END LOOP;
5389 
5390 IF l_debug_level  > 0 THEN
5391     oe_debug_pub.add(  'P_X_LINE_PRICE_ATT_TBL.COUNT: '||TO_CHAR ( P_X_LINE_PRICE_ATT_TBL.COUNT ) , 1 ) ;
5392 END IF;
5393    FOR I in 1..p_x_line_price_att_tbl.count
5394    LOOP
5395 /* -----------------------------------------------------------
5396       Set message context for line atts
5397    -----------------------------------------------------------
5398 */
5399       IF l_debug_level  > 0 THEN
5400           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE ATTS' ) ;
5401       END IF;
5402 
5403       OE_MSG_PUB.set_msg_context(
5404          p_entity_code                => 'LINE_PATTS'
5405 --        ,p_entity_ref                 => p_x_line_price_att_tbl(I).orig_sys_atts_ref
5406         ,p_entity_id                  => p_x_line_price_att_tbl(I).order_price_attrib_id
5407         ,p_header_id                  => p_x_header_rec.header_id
5408         ,p_line_id                    => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).line_id
5409 --      ,p_batch_request_id           => p_x_header_rec.request_id
5410         ,p_order_source_id            => p_x_header_rec.order_source_id
5411         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5412         ,p_change_sequence            => p_x_header_rec.change_sequence
5413         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).orig_sys_line_ref
5414         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).orig_sys_shipment_ref
5415         ,p_source_document_type_id    => null
5416         ,p_source_document_id         => null
5417         ,p_source_document_line_id    => null
5418         ,p_attribute_code             => null
5419         ,p_constraint_id              => null
5420         );
5421 
5422 /* -----------------------------------------------------------
5423       Validate orig sys documentt ref for line
5424    -----------------------------------------------------------
5425 
5426       oe_debug_pub.add('before validating orig_sys_atts_ref for line');
5427 
5428       IF p_x_line_price_att_tbl(I).orig_sys_atts_ref = FND_API.G_MISS_CHAR
5429       THEN
5430 	 oe_debug_pub.add('Invalid orig_sys_attribute_ref for line... ');
5431 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_ATT_REF');
5432          OE_MSG_PUB.Add;
5433 	 p_return_status := FND_API.G_RET_STS_ERROR;
5434       END IF;
5435 
5436  -----------------------------------------------------------
5437       Validate line atts operation code
5438    -----------------------------------------------------------
5439 */
5440       IF l_debug_level  > 0 THEN
5441           oe_debug_pub.add(  'BEFORE VALIDATING LINE ATTS OPERATION CODE' ) ;
5442       END IF;
5443     IF l_debug_level  > 0 THEN
5444         oe_debug_pub.add(  ' OPERATION CODE IS :'||P_X_LINE_PRICE_ATT_TBL ( I ) .OPERATION , 1 ) ;
5445     END IF;
5446       IF p_x_line_price_att_tbl(I).operation NOT IN ('INSERT','CREATE',
5447                                              'UPDATE','DELETE') OR
5448         (p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation
5449                                          IN ('INSERT','CREATE') AND
5450          p_x_line_price_att_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5451         (p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation
5452                                          IN ('UPDATE') AND
5453          p_x_line_price_att_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5454         (p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation
5455                                          IN ('DELETE') AND
5456          p_x_line_price_att_tbl(I).operation NOT IN ('DELETE'))
5457 
5458       THEN
5459 	   IF l_debug_level  > 0 THEN
5460 	       oe_debug_pub.add(  'INVALID LINE ADJUSTMENTS OPERATION CODE...' ) ;
5461 	   END IF;
5462 	   FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5463         OE_MSG_PUB.Add;
5464 	   p_return_status := FND_API.G_RET_STS_ERROR;
5465       END IF;
5466 
5467       IF  p_x_line_price_att_tbl(I).operation IN ('INSERT', 'CREATE')
5468       AND p_x_header_rec.operation = 'UPDATE'
5469       AND p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation = 'UPDATE'
5470       THEN
5471          IF l_debug_level  > 0 THEN
5472              oe_debug_pub.add(  'NEW ATT FOR THE LINE LEVEL , EXISITNG HEARDER_ID:' || P_X_HEADER_REC.HEADER_ID ) ;
5473          END IF;
5474 IF l_debug_level  > 0 THEN
5475     oe_debug_pub.add(  'NEW ATT P_X_LINE_PRICE_ATT_TBL:'||TO_CHAR ( P_X_LINE_PRICE_ATT_TBL ( I ) .ORDER_PRICE_ATTRIB_ID ) , 1 ) ;
5476 END IF;
5477 IF l_debug_level  > 0 THEN
5478     oe_debug_pub.add(  'LINEID :' ||TO_CHAR ( P_X_LINE_TBL ( P_X_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) .LINE_ID ) , 1 ) ;
5479 END IF;
5480          p_x_line_price_att_tbl(I).header_id    := p_x_header_rec.header_id; --l_header_id;
5481          p_x_line_price_att_tbl(I).line_id      := p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).line_id;         --l_line_id;
5482       Begin
5483 
5484          SELECT 1 into l_count
5485            FROM oe_order_price_attribs
5486           WHERE header_id              = p_x_header_rec.header_id
5487             AND line_id                = l_line_id
5488             AND orig_sys_atts_ref  =
5489                 p_x_line_price_att_tbl(I).orig_sys_atts_ref
5490             AND rownum                < 2;
5491 
5492          IF l_debug_level  > 0 THEN
5493              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRATT WITH THE SAME HEADER_ID AND ATTRIBUTE ID....' ) ;
5494          END IF;
5495          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5496          OE_MSG_PUB.Add;
5497          p_return_status := FND_API.G_RET_STS_ERROR;
5498       Exception
5499         When no_data_found then
5500           IF l_debug_level  > 0 THEN
5501               oe_debug_pub.add(  'VALID LINE LEVEL PRICE ATT FOR INSERT' ) ;
5502           END IF;
5503         When others then
5504          IF l_debug_level  > 0 THEN
5505              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PRICE ATT... ' ) ;
5506          END IF;
5507          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5508          OE_MSG_PUB.Add;
5509          p_return_status := FND_API.G_RET_STS_ERROR;
5510       End;
5511       End If; -- Insert, Create operation
5512 
5513       IF  p_x_line_price_att_tbl(I).operation IN ('UPDATE','DELETE')
5514       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5515       AND p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5516       THEN
5517       Begin
5518          IF l_debug_level  > 0 THEN
5519              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5520          END IF;
5521          IF l_debug_level  > 0 THEN
5522              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5523          END IF;
5524          IF l_debug_level  > 0 THEN
5525              oe_debug_pub.add(  'ATTRIBUTE REF: '||P_X_LINE_PRICE_ATT_TBL ( I ) .ORIG_SYS_ATTS_REF ) ;
5526          END IF;
5527          p_x_line_price_att_tbl(I).header_id    := l_header_id;
5528          p_x_line_price_att_tbl(I).line_id      := l_line_id;
5529 
5530          SELECT order_price_attrib_id
5531            INTO l_price_attrib_id
5532            FROM oe_order_price_attribs
5533           WHERE header_id             = l_header_id
5534             AND line_id               = l_line_id
5535             AND orig_sys_atts_ref  =
5536                 p_x_line_price_att_tbl(I).orig_sys_atts_ref;
5537 
5538          p_x_line_price_att_tbl(I).order_price_attrib_id := l_price_attrib_id;
5539          IF l_debug_level  > 0 THEN
5540              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_LINE_PRICE_ATT_TBL ( I ) .HEADER_ID ) ) ;
5541          END IF;
5542          IF l_debug_level  > 0 THEN
5543              oe_debug_pub.add(  'ATTRIBUTE ID: '||TO_CHAR ( P_X_LINE_PRICE_ATT_TBL ( I ) .ORDER_PRICE_ATTRIB_ID ) ) ;
5544          END IF;
5545 
5546       Exception
5547         When no_data_found then
5548           IF l_debug_level  > 0 THEN
5549               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING HDR ATT BUT THAT DOES NOT EXIST... ' ) ;
5550           END IF;
5551           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5552           OE_MSG_PUB.Add;
5553           p_return_status := FND_API.G_RET_STS_ERROR;
5554         When others then
5555          IF l_debug_level  > 0 THEN
5556              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HDRATT ... ' ) ;
5557          END IF;
5558          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5559          OE_MSG_PUB.Add;
5560          p_return_status := FND_API.G_RET_STS_ERROR;
5561       End;
5562       End IF; -- Update and Delete operation
5563 
5564    END LOOP;
5565 
5566 l_last_index :=p_x_line_price_att_tbl.LAST;
5567 IF l_last_index IS NULL THEN
5568   l_last_index := 0;
5569 END IF;
5570 
5571     FOR I IN 1..l_line_price_att_tbl.COUNT
5572     LOOP
5573      IF l_debug_level  > 0 THEN
5574          oe_debug_pub.add(  'IN LINE PRICE_REC_TBL LOOP' ) ;
5575      END IF;
5576      l_last_index := l_last_index+1;
5577      IF l_debug_level  > 0 THEN
5578          oe_debug_pub.add(  'L_LAST_INDEX = '||L_LAST_INDEX ) ;
5579      END IF;
5580      p_x_line_price_att_tbl(l_last_index).pricing_attribute1 := l_line_price_att_tbl(I).pricing_attribute1;
5581      p_x_line_price_att_tbl(l_last_index).pricing_attribute3 :=l_line_price_att_tbl(I).pricing_attribute3;
5582      p_x_line_price_att_tbl(l_last_index).pricing_attribute2 :=l_line_price_att_tbl(I).pricing_attribute2;
5583      p_x_line_price_att_tbl(l_last_index).flex_title := l_line_price_att_tbl(I).flex_title;
5584      p_x_line_price_att_tbl(l_last_index).pricing_context :=l_line_price_att_tbl(I).pricing_context;
5585      p_x_line_price_att_tbl(l_last_index).Orig_Sys_Atts_Ref :=l_line_price_att_tbl(I).Orig_Sys_Atts_Ref;
5586      p_x_line_price_att_tbl(l_last_index).Operation := l_line_price_att_tbl(I).operation;
5587      p_x_line_price_att_tbl(l_last_index).line_index := l_line_price_att_tbl(I).line_index;
5588     END LOOP;
5589     IF l_debug_level  > 0 THEN
5590         oe_debug_pub.add(  'RECORDS IN LINE PRICE ATTL TBL = '||P_X_LINE_PRICE_ATT_TBL.COUNT ) ;
5591     END IF;
5592 
5593 
5594    FOR I in 1..p_x_line_scredit_tbl.count
5595    LOOP
5596 /* -----------------------------------------------------------
5597       Set message context for line sales credits
5598    -----------------------------------------------------------
5599 */
5600       l_sales_credit_id := NULL;
5601       IF l_debug_level  > 0 THEN
5602           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE SALES CREDITS' ) ;
5603       END IF;
5604 
5605       OE_MSG_PUB.set_msg_context(
5606          p_entity_code                => 'LINE_SCREDIT'
5607         ,p_entity_ref                 => p_x_line_scredit_tbl(I).orig_sys_credit_ref
5608         ,p_entity_id                  => null
5609         ,p_header_id                  => p_x_header_rec.header_id
5610         ,p_line_id                    => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).line_id
5611 --      ,p_batch_request_id           => p_x_header_rec.request_id
5612         ,p_order_source_id            => p_x_header_rec.order_source_id
5613         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5614         ,p_change_sequence            => p_x_header_rec.change_sequence
5615         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).orig_sys_line_ref
5616         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).orig_sys_shipment_ref
5617         ,p_source_document_type_id    => null
5618         ,p_source_document_id         => null
5619         ,p_source_document_line_id    => null
5620         ,p_attribute_code             => null
5621         ,p_constraint_id              => null
5622         );
5623 
5624 /* -----------------------------------------------------------
5625       Validate orig sys credit ref for line
5626    -----------------------------------------------------------
5627 */
5628       IF l_debug_level  > 0 THEN
5629           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_CREDIT_REF FOR LINE' ) ;
5630       END IF;
5631 
5632       IF p_x_line_scredit_tbl(I).orig_sys_credit_ref = FND_API.G_MISS_CHAR
5633       THEN
5634          IF l_debug_level  > 0 THEN
5635              oe_debug_pub.add(  'INVALID ORIG_SYS_CREDIT_REF FOR LINE... ' ) ;
5636          END IF;
5637 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_CREDIT_REF');
5638          OE_MSG_PUB.Add;
5639 	 p_return_status := FND_API.G_RET_STS_ERROR;
5640       END IF;
5641 
5642 /* -----------------------------------------------------------
5643       Validate line sales credits operation code
5644    -----------------------------------------------------------
5645 */
5646       IF l_debug_level  > 0 THEN
5647           oe_debug_pub.add(  'BEFORE VALIDATING LINE SALES CREDITS OPERATION CODE' ) ;
5648       END IF;
5649 
5650       IF p_x_line_scredit_tbl(I).operation NOT IN ('INSERT','CREATE',
5651 				                 'UPDATE','DELETE') OR
5652         (p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5653 					     IN ('INSERT','CREATE') AND
5654          p_x_line_scredit_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5655         (p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5656 					     IN ('UPDATE') AND
5657          p_x_line_scredit_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5658         (p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5659 					     IN ('DELETE') AND
5660          p_x_line_scredit_tbl(I).operation NOT IN ('DELETE'))
5661       THEN
5662 	 IF l_debug_level  > 0 THEN
5663 	     oe_debug_pub.add(  'INVALID LINE SALES CREDITS OPERATION CODE...' ) ;
5664 	 END IF;
5665 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5666          OE_MSG_PUB.Add;
5667 	 p_return_status := FND_API.G_RET_STS_ERROR;
5668       END IF;
5669 
5670 -- aksingh start on this (10/11/2000) this is in process of being coded
5671       IF  p_x_line_scredit_tbl(I).operation IN ('INSERT', 'CREATE')
5672       AND p_x_header_rec.operation = 'UPDATE'
5673       AND p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5674 					          = 'UPDATE'
5675       THEN
5676       Begin
5677          IF l_debug_level  > 0 THEN
5678              oe_debug_pub.add(  'NEW ADJUSTMENT FOR LINE LEVEL , THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5679          END IF;
5680          p_x_line_scredit_tbl(I).header_id  := l_header_id;
5681          p_x_line_scredit_tbl(I).line_id    := l_line_id;
5682 
5683          SELECT 1 into l_count
5684            FROM oe_sales_credits
5685           WHERE header_id              = p_x_header_rec.header_id
5686             AND line_id                = l_line_id
5687             AND orig_sys_credit_ref  =
5688                        p_x_line_scredit_tbl(I).orig_sys_credit_ref
5689             AND rownum                < 2;
5690 
5691          IF l_debug_level  > 0 THEN
5692              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LNSCREDIT WITH THE SAME HEADER_ID , LINE_ID AND ORIG_SYS_CREDIT_REF... ' ) ;
5693          END IF;
5694          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5695          OE_MSG_PUB.Add;
5696          p_return_status := FND_API.G_RET_STS_ERROR;
5697       Exception
5698         When no_data_found then
5699           IF l_debug_level  > 0 THEN
5700               oe_debug_pub.add(  'VALID LINE LEVEL SALES CREDIT FOR INSERT' ) ;
5701           END IF;
5702         When others then
5703          IF l_debug_level  > 0 THEN
5704              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE SALES CREDIT... ' ) ;
5705          END IF;
5706          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5707          OE_MSG_PUB.Add;
5708          p_return_status := FND_API.G_RET_STS_ERROR;
5709       End;
5710       END IF; -- Insert, Update Operation
5711 
5712       IF  p_x_line_scredit_tbl(I).operation IN ('UPDATE','DELETE')
5713       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5714       AND p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5715       THEN
5716       Begin
5717          IF l_debug_level  > 0 THEN
5718              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5719          END IF;
5720          IF l_debug_level  > 0 THEN
5721              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5722          END IF;
5723          IF l_debug_level  > 0 THEN
5724              oe_debug_pub.add(  'CREDIT REF: '||P_X_LINE_SCREDIT_TBL ( I ) .ORIG_SYS_CREDIT_REF ) ;
5725          END IF;
5726          p_x_line_scredit_tbl(I).header_id  := l_header_id;
5727          p_x_line_scredit_tbl(I).line_id    := l_line_id;
5728          SELECT sales_credit_id
5729            INTO l_sales_credit_id
5730            FROM oe_sales_credits
5731           WHERE header_id             = p_x_header_rec.header_id
5732             AND line_id               = l_line_id
5733             AND orig_sys_credit_ref =
5734                 p_x_line_scredit_tbl(I).orig_sys_credit_ref;
5735 
5736          p_x_line_scredit_tbl(I).sales_credit_id := l_sales_credit_id;
5737          IF l_debug_level  > 0 THEN
5738              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_LINE_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
5739          END IF;
5740          IF l_debug_level  > 0 THEN
5741              oe_debug_pub.add(  'ADJUST ID: '||TO_CHAR ( P_X_LINE_SCREDIT_TBL ( I ) .SALES_CREDIT_ID ) ) ;
5742          END IF;
5743 
5744       Exception
5745         When no_data_found then
5746           IF l_debug_level  > 0 THEN
5747               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE CREDIT BUT THAT DOES NOT EXIST... ' ) ;
5748           END IF;
5749           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5750           OE_MSG_PUB.Add;
5751           p_return_status := FND_API.G_RET_STS_ERROR;
5752         When others then
5753          IF l_debug_level  > 0 THEN
5754              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINECRDT ... ' ) ;
5755          END IF;
5756          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5757          OE_MSG_PUB.Add;
5758          p_return_status := FND_API.G_RET_STS_ERROR;
5759       End;
5760       End IF; -- Update and Delete operation
5761 
5762 
5763    END LOOP;
5764 
5765 -- multiple payment starts..
5766 
5767    FOR I in 1..p_x_line_payment_tbl.count
5768    LOOP
5769 /* -----------------------------------------------------------
5770       Set message context for line PAYMENTs
5771    -----------------------------------------------------------
5772 */
5773 --      l_sales_payment_id := NULL;
5774       IF l_debug_level  > 0 THEN
5775           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE PAYMENTS' ) ;
5776       END IF;
5777 
5778       OE_MSG_PUB.set_msg_context(
5779          p_entity_code                => 'LINE_PAYMENT'
5780         ,p_entity_ref                 => p_x_line_payment_tbl(I).orig_sys_payment_ref
5781         ,p_entity_id                  => null
5782         ,p_header_id                  => p_x_header_rec.header_id
5783         ,p_line_id                    => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).line_id
5784 --      ,p_batch_request_id           => p_x_header_rec.request_id
5785         ,p_order_source_id            => p_x_header_rec.order_source_id
5786         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5787         ,p_change_sequence            => p_x_header_rec.change_sequence
5788         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).orig_sys_line_ref
5789         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).orig_sys_shipment_ref
5790         ,p_source_document_type_id    => null
5791         ,p_source_document_id         => null
5792         ,p_source_document_line_id    => null
5793         ,p_attribute_code             => null
5794         ,p_constraint_id              => null
5795         );
5796 
5797 /* -----------------------------------------------------------
5798       Validate orig sys payment ref for line
5799    -----------------------------------------------------------
5800 */
5801       IF l_debug_level  > 0 THEN
5802           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_PAYMENT_REF FOR LINE' ) ;
5803       END IF;
5804 
5805       IF p_x_line_payment_tbl(I).orig_sys_payment_ref = FND_API.G_MISS_CHAR
5806       THEN
5807          IF l_debug_level  > 0 THEN
5808              oe_debug_pub.add(  'INVALID ORIG_SYS_PAYMENT_REF FOR LINE... ' ) ;
5809          END IF;
5810          /* multiple payments: new message */
5811 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_payment_REF');
5812          OE_MSG_PUB.Add;
5813 	 p_return_status := FND_API.G_RET_STS_ERROR;
5814       END IF;
5815 
5816 /* -----------------------------------------------------------
5817       Validate line PAYMENTs operation code
5818    -----------------------------------------------------------
5819 */
5820       IF l_debug_level  > 0 THEN
5821           oe_debug_pub.add(  'BEFORE VALIDATING LINE PAYMENTS OPERATION CODE' ) ;
5822       END IF;
5823 
5824       IF p_x_line_payment_tbl(I).operation NOT IN ('INSERT','CREATE',
5825 				                 'UPDATE','DELETE') OR
5826         (p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5827 					     IN ('INSERT','CREATE') AND
5828          p_x_line_payment_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5829         (p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5830 					     IN ('UPDATE') AND
5831          p_x_line_payment_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5832         (p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5833 					     IN ('DELETE') AND
5834          p_x_line_payment_tbl(I).operation NOT IN ('DELETE'))
5835       THEN
5836 	 IF l_debug_level  > 0 THEN
5837 	     oe_debug_pub.add(  'INVALID LINE PAYMENTS OPERATION CODE...' ) ;
5838 	 END IF;
5839 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5840          OE_MSG_PUB.Add;
5841 	 p_return_status := FND_API.G_RET_STS_ERROR;
5842       END IF;
5843 
5844       IF  p_x_line_payment_tbl(I).operation IN ('INSERT', 'CREATE')
5845       AND p_x_header_rec.operation = 'UPDATE'
5846       AND p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5847 					          = 'UPDATE'
5848       THEN
5849       Begin
5850          IF l_debug_level  > 0 THEN
5851              oe_debug_pub.add(  'NEW PAYMENT FOR LINE LEVEL , THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5852          END IF;
5853          p_x_line_payment_tbl(I).header_id  := l_header_id;
5854          p_x_line_payment_tbl(I).line_id    := l_line_id;
5855 
5856          SELECT 1 into l_count
5857            FROM oe_payments
5858           WHERE header_id              = p_x_header_rec.header_id
5859             AND line_id                = l_line_id
5860             AND orig_sys_payment_ref  =
5861                        p_x_line_payment_tbl(I).orig_sys_payment_ref
5862             AND rownum                < 2;
5863 
5864          IF l_debug_level  > 0 THEN
5865              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LINE PAYMENT WITH THE SAME HEADER_ID , LINE_ID AND ORIG_SYS_PAYMENT_REF... ' ) ;
5866          END IF;
5867          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5868          OE_MSG_PUB.Add;
5869          p_return_status := FND_API.G_RET_STS_ERROR;
5870       Exception
5871         When no_data_found then
5872           IF l_debug_level  > 0 THEN
5873               oe_debug_pub.add(  'VALID LINE LEVEL PAYMENT FOR INSERT' ) ;
5874           END IF;
5875         When others then
5876          IF l_debug_level  > 0 THEN
5877              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE PAYMENT... ' ) ;
5878          END IF;
5879          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5880          OE_MSG_PUB.Add;
5881          p_return_status := FND_API.G_RET_STS_ERROR;
5882       End;
5883       END IF; -- Insert, Update Operation
5884 
5885       IF  p_x_line_payment_tbl(I).operation IN ('UPDATE','DELETE')
5886       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5887       AND p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5888       THEN
5889       Begin
5890          IF l_debug_level  > 0 THEN
5891              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5892              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5893              oe_debug_pub.add(  'PAYMENT REF: '||P_X_LINE_PAYMENT_TBL ( I ) .ORIG_SYS_PAYMENT_REF ) ;
5894          END IF;
5895          p_x_line_payment_tbl(I).header_id  := l_header_id;
5896          p_x_line_payment_tbl(I).line_id    := l_line_id;
5897          SELECT 1
5898            INTO l_count
5899            FROM oe_payments
5900           WHERE header_id             = p_x_header_rec.header_id
5901             AND line_id               = l_line_id
5902             AND orig_sys_payment_ref =
5903                 p_x_line_payment_tbl(I).orig_sys_payment_ref;
5904 
5905       Exception
5906         When no_data_found then
5907           IF l_debug_level  > 0 THEN
5908               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE PAYMENT BUT THAT DOES NOT EXIST... ' ) ;
5909           END IF;
5910           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5911           OE_MSG_PUB.Add;
5912           p_return_status := FND_API.G_RET_STS_ERROR;
5913         When others then
5914          IF l_debug_level  > 0 THEN
5915              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING PAYMENT ... ' ) ;
5916          END IF;
5917          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5918          OE_MSG_PUB.Add;
5919          p_return_status := FND_API.G_RET_STS_ERROR;
5920       End;
5921       End IF; -- Update and Delete operation
5922 
5923    END LOOP; -- multiple payments for line.
5924 
5925    FOR I in 1..p_x_lot_serial_tbl.count
5926    LOOP
5927 /* -----------------------------------------------------------
5928       Set message context for line lot serials
5929    -----------------------------------------------------------
5930 */
5931       l_lot_serial_id := NULL;
5932       IF l_debug_level  > 0 THEN
5933           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE LOT SERIALS' ) ;
5934       END IF;
5935 
5936       OE_MSG_PUB.set_msg_context(
5937          p_entity_code                => 'LOT_SERIAL'
5938         ,p_entity_ref                 => p_x_lot_serial_tbl(I).orig_sys_lotserial_ref
5939         ,p_entity_id                  => null
5940         ,p_header_id                  => p_x_header_rec.header_id
5941         ,p_line_id                    => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).line_id
5942 --      ,p_batch_request_id           => p_x_header_rec.request_id
5943         ,p_order_source_id            => p_x_header_rec.order_source_id
5944         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5945         ,p_change_sequence            => p_x_header_rec.change_sequence
5946         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).orig_sys_line_ref
5947         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).orig_sys_shipment_ref
5948         ,p_source_document_type_id    => null
5949         ,p_source_document_id         => null
5950         ,p_source_document_line_id    => null
5951         ,p_attribute_code             => null
5952         ,p_constraint_id              => null
5953         );
5954 
5955 /* -----------------------------------------------------------
5956       Validate orig sys lotserial ref for line
5957    -----------------------------------------------------------
5958 */
5959       IF l_debug_level  > 0 THEN
5960           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_LOTSERIAL_REF FOR LINE' ) ;
5961       END IF;
5962 
5963       IF p_x_lot_serial_tbl(I).orig_sys_lotserial_ref = FND_API.G_MISS_CHAR
5964       THEN
5965          IF l_debug_level  > 0 THEN
5966              oe_debug_pub.add(  'INVALID ORIG_SYS_LOTSERIAL_REF... ' ) ;
5967          END IF;
5968 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LOTSERIAL_REF');
5969          OE_MSG_PUB.Add;
5970 	 p_return_status := FND_API.G_RET_STS_ERROR;
5971       END IF;
5972 
5973 /* -----------------------------------------------------------
5974       Validate line lot serials operation code
5975    -----------------------------------------------------------
5976 */
5977       IF l_debug_level  > 0 THEN
5978           oe_debug_pub.add(  'BEFORE VALIDATING LINE LOT SERIALS OPERATION CODE' ) ;
5979       END IF;
5980 
5981       IF p_x_lot_serial_tbl(I).operation NOT IN ('INSERT','CREATE',
5982 			                       'UPDATE','DELETE') OR
5983         (p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).operation
5984 					   IN ('INSERT','CREATE') AND
5985          p_x_lot_serial_tbl(I).operation NOT IN ('INSERT','CREATE'))
5986       THEN
5987 	 IF l_debug_level  > 0 THEN
5988 	     oe_debug_pub.add(  'INVALID LINE LOT SERIALS OPERATION CODE...' ) ;
5989 	 END IF;
5990 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5991          OE_MSG_PUB.Add;
5992 	 p_return_status := FND_API.G_RET_STS_ERROR;
5993       END IF;
5994 
5995 -- aksingh start on this (10/11/2000) this is in process of being coded
5996       IF  p_x_lot_serial_tbl(I).operation IN ('INSERT', 'CREATE')
5997       AND p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).operation = 'UPDATE'
5998       THEN
5999       Begin
6000          IF l_debug_level  > 0 THEN
6001              oe_debug_pub.add(  'NEW LOT FOR LINE LEVEL , THE EXISITNG LINE_ID:' || L_LINE_ID ) ;
6002          END IF;
6003          p_x_lot_serial_tbl(I).line_id    := l_line_id;
6004 
6005          SELECT 1 into l_count
6006            FROM oe_lot_serial_numbers
6007           WHERE line_id                = l_line_id
6008             AND orig_sys_lotserial_ref  =
6009                        p_x_lot_serial_tbl(I).orig_sys_lotserial_ref
6010             AND rownum                < 2;
6011 
6012          IF l_debug_level  > 0 THEN
6013              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LOT WITH THE SAME LINE_ID AND ORIG_SYS_DISCOUNT_REF... ' ) ;
6014          END IF;
6015          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
6016          OE_MSG_PUB.Add;
6017          p_return_status := FND_API.G_RET_STS_ERROR;
6018       Exception
6019         When no_data_found then
6020           IF l_debug_level  > 0 THEN
6021               oe_debug_pub.add(  'VALID LINE LEVEL LOT FOR INSERT' ) ;
6022           END IF;
6023         When others then
6024          IF l_debug_level  > 0 THEN
6025              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE LOT... ' ) ;
6026          END IF;
6027          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
6028          OE_MSG_PUB.Add;
6029          p_return_status := FND_API.G_RET_STS_ERROR;
6030       End;
6031       END IF; -- Insert, Create Opearation
6032 
6033       IF  p_x_lot_serial_tbl(I).operation IN ('UPDATE','DELETE')
6034       AND p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).operation IN ('UPDATE','DELETE')
6035       THEN
6036       Begin
6037          IF l_debug_level  > 0 THEN
6038              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
6039          END IF;
6040          IF l_debug_level  > 0 THEN
6041              oe_debug_pub.add(  'LOT REF: '||P_X_LOT_SERIAL_TBL ( I ) .ORIG_SYS_LOTSERIAL_REF ) ;
6042          END IF;
6043          p_x_lot_serial_tbl(I).line_id    := l_line_id;
6044          SELECT lot_serial_id
6045            INTO l_lot_serial_id
6046            FROM oe_lot_serial_numbers
6047           WHERE line_id               = l_line_id
6048             AND orig_sys_lotserial_ref =
6049                 p_x_lot_serial_tbl(I).orig_sys_lotserial_ref;
6050 
6051          p_x_lot_serial_tbl(I).lot_serial_id := l_lot_serial_id;
6052          IF l_debug_level  > 0 THEN
6053              oe_debug_pub.add(  'LOT ID: '||TO_CHAR ( P_X_LOT_SERIAL_TBL ( I ) .LOT_SERIAL_ID ) ) ;
6054          END IF;
6055 
6056       Exception
6057         When no_data_found then
6058           IF l_debug_level  > 0 THEN
6059               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LOT BUT THAT DOES NOT EXIST... ' ) ;
6060           END IF;
6061           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
6062           OE_MSG_PUB.Add;
6063           p_return_status := FND_API.G_RET_STS_ERROR;
6064         When others then
6065          IF l_debug_level  > 0 THEN
6066              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LOT... ' ) ;
6067          END IF;
6068          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
6069          OE_MSG_PUB.Add;
6070          p_return_status := FND_API.G_RET_STS_ERROR;
6071       End;
6072       End IF; -- Update and Delete operation
6073 
6074 -- aksingh(10/11/2000) this is in process of being coded upto this point
6075 
6076    END LOOP;
6077 
6078 
6079    FOR I in 1..p_x_reservation_tbl.count
6080    LOOP
6081 /* -----------------------------------------------------------
6082       Set message context for line reservations
6083    -----------------------------------------------------------
6084 */
6085       IF l_debug_level  > 0 THEN
6086           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE RESERVATIONS' ) ;
6087       END IF;
6088 
6089       OE_MSG_PUB.set_msg_context(
6090          p_entity_code                => 'RESERVATION'
6091         ,p_entity_ref                 => p_x_reservation_tbl(I).orig_sys_reservation_ref
6092         ,p_entity_id                  => null
6093         ,p_header_id                  => p_x_header_rec.header_id
6094         ,p_line_id                    => p_x_line_tbl(p_x_reservation_tbl(I).line_index).line_id
6095 --      ,p_batch_request_id           => p_x_header_rec.request_id
6096         ,p_order_source_id            => p_x_header_rec.order_source_id
6097         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
6098         ,p_change_sequence            => p_x_header_rec.change_sequence
6099         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_reservation_tbl(I).line_index).orig_sys_line_ref
6100         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_reservation_tbl(I).line_index).orig_sys_shipment_ref
6101         ,p_source_document_type_id    => null
6102         ,p_source_document_id         => null
6103         ,p_source_document_line_id    => null
6104         ,p_attribute_code             => null
6105         ,p_constraint_id              => null
6106         );
6107 
6108 /* -----------------------------------------------------------
6109       Validate orig sys reservation ref for line
6110    -----------------------------------------------------------
6111 */
6112       IF l_debug_level  > 0 THEN
6113           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_RESERVATION_REF FOR LINE' ) ;
6114       END IF;
6115 
6116       IF p_x_reservation_tbl(I).orig_sys_reservation_ref = FND_API.G_MISS_CHAR
6117       THEN
6118          IF l_debug_level  > 0 THEN
6119              oe_debug_pub.add(  'INVALID ORIG_SYS_RESERVATION_REF... ' ) ;
6120          END IF;
6121 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_RESERVATION_REF');
6122          OE_MSG_PUB.Add;
6123 	 p_return_status := FND_API.G_RET_STS_ERROR;
6124       END IF;
6125 
6126 /* -----------------------------------------------------------
6127       Validate reservation details for line
6128    -----------------------------------------------------------
6129 */
6130       IF l_debug_level  > 0 THEN
6131           oe_debug_pub.add(  'BEFORE VALIDATING RESERVATION DETAILS FOR LINE' ) ;
6132       END IF;
6133 
6134       IF  p_x_reservation_tbl(I).revision              = FND_API.G_MISS_CHAR
6135       AND p_x_reservation_tbl(I).lot_number_id         = FND_API.G_MISS_NUM
6136       AND p_x_reservation_val_tbl(I).lot_number        = FND_API.G_MISS_CHAR
6137       AND p_x_reservation_tbl(I).subinventory_id       = FND_API.G_MISS_NUM
6138       AND p_x_reservation_val_tbl(I).subinventory_code = FND_API.G_MISS_CHAR
6139       AND p_x_reservation_tbl(I).locator_id            = FND_API.G_MISS_NUM
6140       THEN
6141          IF l_debug_level  > 0 THEN
6142              oe_debug_pub.add(  'INVALID RESERVATION DETAILS... ' ) ;
6143          END IF;
6144 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_RESERVATION_DETAILS');
6145          OE_MSG_PUB.Add;
6146 	 p_return_status := FND_API.G_RET_STS_ERROR;
6147       END IF;
6148 
6149 /* -----------------------------------------------------------
6150       Validate reservation quantity
6151    -----------------------------------------------------------
6152 */
6153       IF l_debug_level  > 0 THEN
6154           oe_debug_pub.add(  'BEFORE VALIDATING RESERVATION QUANTITY FOR LINE' ) ;
6155       END IF;
6156 
6157       IF p_x_reservation_tbl(I).quantity = FND_API.G_MISS_NUM OR
6158          p_x_reservation_tbl(I).quantity = 0 		    OR
6159          p_x_reservation_tbl(I).quantity < 0
6160       THEN
6161          IF l_debug_level  > 0 THEN
6162              oe_debug_pub.add(  'INVALID RESERVATION QUANTITY... ' ) ;
6163          END IF;
6164 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_RESERVATION_QUANTITY');
6165          OE_MSG_PUB.Add;
6166 	 p_return_status := FND_API.G_RET_STS_ERROR;
6167       END IF;
6168 
6169 /* -----------------------------------------------------------
6170       Validate reservation operation
6171    -----------------------------------------------------------
6172 */
6173       IF l_debug_level  > 0 THEN
6174           oe_debug_pub.add(  'BEFORE VALIDATING RESERVATION OPERATION FOR LINE' ) ;
6175       END IF;
6176 
6177       IF p_x_reservation_tbl(I).operation NOT IN ('INSERT','CREATE',
6178 						'UPDATE','DELETE')
6179       THEN
6180          IF l_debug_level  > 0 THEN
6181              oe_debug_pub.add(  'INVALID RESERVATION OPERATION... ' ) ;
6182          END IF;
6183 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
6184          OE_MSG_PUB.Add;
6185 	 p_return_status := FND_API.G_RET_STS_ERROR;
6186       END IF;
6187 
6188 --    Following Line are added to fixed the bug for the duplicate reservation
6189 --    when the auto scheduling is on + within time fence
6190 --    bug# 1537689
6191       IF l_debug_level  > 0 THEN
6192           oe_debug_pub.add(  'LINE SUNINV: ' || P_X_LINE_TBL ( P_X_RESERVATION_TBL ( I ) .LINE_INDEX ) .SUBINVENTORY ) ;
6193       END IF;
6194       IF l_debug_level  > 0 THEN
6195           oe_debug_pub.add(  'RESV_REC SUNINV: ' || P_X_RESERVATION_VAL_TBL ( I ) .SUBINVENTORY_CODE ) ;
6196       END IF;
6197 /*commenting code for bug 1765449
6198       p_x_line_tbl(p_x_reservation_tbl(I).line_index).subinventory
6199                      := p_x_reservation_val_tbl(I).subinventory_code;
6200       oe_debug_pub.add('Line Suninv: ' || p_x_line_tbl(p_x_reservation_tbl(I).line_index).subinventory);
6201 */
6202 --    end change for bug# 1537689
6203 
6204    END LOOP;
6205 
6206 
6207 /* -----------------------------------------------------------
6208    Call Configurations Pre-Processing
6209    -----------------------------------------------------------
6210 */
6211       IF l_debug_level  > 0 THEN
6212           oe_debug_pub.add(  'BEFORE CALLING CONFIGURATIONS PRE-PROCESSING' ) ;
6213       END IF;
6214 
6215       OE_ORDER_IMPORT_CONFIG_PVT.Pre_Process(
6216          p_header_rec                   => p_x_header_rec
6217         ,p_x_line_tbl                     => p_x_line_tbl
6218         ,p_return_status                => l_return_status
6219         );
6220 
6221       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6222       AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6223 			          FND_API.G_RET_STS_UNEXP_ERROR)
6224       THEN
6225           p_return_status := l_return_status;
6226       END IF;
6227 
6228 
6229 /* -----------------------------------------------------------
6230    Call EDI Pre-Process
6231    -----------------------------------------------------------
6232 */
6233    IF p_x_header_rec.order_source_id = OE_Globals.G_ORDER_SOURCE_EDI
6234    THEN
6235       IF l_debug_level  > 0 THEN
6236           oe_debug_pub.add(  'BEFORE CALLING EDI PRE-PROCESS' ) ;
6237       END IF;
6238 
6239       OE_EDI_PVT.Pre_Process(
6240          p_header_rec                   => p_x_header_rec
6241         ,p_header_adj_tbl               => p_x_header_adj_tbl
6242         ,p_header_scredit_tbl           => p_x_header_scredit_tbl
6243         ,p_line_tbl                     => p_x_line_tbl
6244         ,p_line_adj_tbl                 => p_x_line_adj_tbl
6245         ,p_line_scredit_tbl             => p_x_line_scredit_tbl
6246         ,p_lot_serial_tbl               => p_x_lot_serial_tbl
6247 
6248         ,p_header_val_rec               => p_x_header_val_rec
6249         ,p_header_adj_val_tbl           => p_x_header_adj_val_tbl
6250         ,p_header_scredit_val_tbl       => p_x_header_scredit_val_tbl
6251         ,p_line_val_tbl                 => p_x_line_val_tbl
6252         ,p_line_adj_val_tbl             => p_x_line_adj_val_tbl
6253         ,p_line_scredit_val_tbl         => p_x_line_scredit_val_tbl
6254         ,p_lot_serial_val_tbl           => p_x_lot_serial_val_tbl
6255 
6256         ,p_return_status                => l_return_status
6257         );
6258 
6259       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6260       AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6261 			          FND_API.G_RET_STS_UNEXP_ERROR)
6262       THEN
6263             p_return_status := l_return_status;
6264       END IF;
6265 
6266    END IF;
6267 
6268   EXCEPTION
6269    WHEN OTHERS THEN
6270       IF l_debug_level  > 0 THEN
6271           oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
6272       END IF;
6273       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6274 	 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6275          OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process');
6276       END IF;
6277 
6278 END PRE_PROCESS;
6279 
6280 
6281 /* -----------------------------------------------------------
6282    Procedure: Post_Process
6283    -----------------------------------------------------------
6284 */
6285 PROCEDURE Post_Process(
6286    p_x_header_rec                 IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type
6287   ,p_x_header_adj_tbl             IN OUT NOCOPY OE_Order_Pub.Header_Adj_Tbl_Type
6288   ,p_x_header_price_att_tbl       IN OUT NOCOPY OE_Order_Pub.Header_Price_Att_Tbl_Type
6289   ,p_x_header_adj_att_tbl         IN OUT NOCOPY OE_Order_Pub.Header_Adj_Att_Tbl_Type
6290   ,p_x_header_adj_assoc_tbl      IN OUT NOCOPY OE_Order_Pub.Header_Adj_Assoc_Tbl_Type
6291   ,p_x_header_scredit_tbl         IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Tbl_Type
6292   ,p_x_line_tbl			IN OUT NOCOPY OE_Order_Pub.Line_Tbl_Type
6293   ,p_x_line_adj_tbl		IN OUT NOCOPY OE_Order_Pub.Line_Adj_Tbl_Type
6294   ,p_x_line_price_att_tbl         IN OUT NOCOPY OE_Order_Pub.Line_Price_Att_Tbl_Type
6295   ,p_x_line_adj_att_tbl           IN OUT NOCOPY OE_Order_Pub.Line_Adj_Att_Tbl_Type
6296   ,p_x_line_adj_assoc_tbl         IN OUT NOCOPY OE_Order_Pub.Line_Adj_Assoc_Tbl_Type
6297   ,p_x_line_scredit_tbl           IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Tbl_Type
6298   ,p_x_lot_serial_tbl             IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Tbl_Type
6299 
6300   ,p_x_header_val_rec             IN OUT NOCOPY OE_Order_Pub.Header_Val_Rec_Type
6301   ,p_x_header_adj_val_tbl         IN OUT NOCOPY OE_Order_Pub.Header_Adj_Val_Tbl_Type
6302   ,p_x_header_scredit_val_tbl     IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Val_Tbl_Type
6303   ,p_x_line_val_tbl               IN OUT NOCOPY OE_Order_Pub.Line_Val_Tbl_Type
6304   ,p_x_line_adj_val_tbl           IN OUT NOCOPY OE_Order_Pub.Line_Adj_Val_Tbl_Type
6305   ,p_x_line_scredit_val_tbl       IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Val_Tbl_Type
6306   ,p_x_lot_serial_val_tbl         IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Val_Tbl_Type
6307 
6308   ,p_x_header_rec_old             IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type
6309   ,p_x_header_adj_tbl_old         IN OUT NOCOPY OE_Order_Pub.Header_Adj_Tbl_Type
6310   ,p_x_header_scredit_tbl_old     IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Tbl_Type
6311   ,p_x_line_tbl_old		IN OUT NOCOPY OE_Order_Pub.Line_Tbl_Type
6312   ,p_x_line_adj_tbl_old		IN OUT NOCOPY OE_Order_Pub.Line_Adj_Tbl_Type
6313   ,p_x_line_price_att_tbl_old     IN OUT NOCOPY OE_Order_Pub.Line_Price_Att_Tbl_Type
6314   ,p_x_line_scredit_tbl_old       IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Tbl_Type
6315   ,p_x_lot_serial_tbl_old         IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Tbl_Type
6316 
6317   ,p_x_header_val_rec_old         IN OUT NOCOPY OE_Order_Pub.Header_Val_Rec_Type
6318   ,p_x_header_adj_val_tbl_old     IN OUT NOCOPY OE_Order_Pub.Header_Adj_Val_Tbl_Type
6319   ,p_x_header_scredit_val_tbl_old IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Val_Tbl_Type
6320   ,p_x_line_val_tbl_old           IN OUT NOCOPY OE_Order_Pub.Line_Val_Tbl_Type
6321   ,p_x_line_adj_val_tbl_old       IN OUT NOCOPY OE_Order_Pub.Line_Adj_Val_Tbl_Type
6322   ,p_x_line_scredit_val_tbl_old   IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Val_Tbl_Type
6323   ,p_x_lot_serial_val_tbl_old     IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Val_Tbl_Type
6324 
6325   ,p_x_reservation_tbl     	IN OUT NOCOPY OE_Order_Pub.Reservation_Tbl_Type
6326   ,p_x_reservation_val_tbl     	IN OUT NOCOPY OE_Order_Pub.Reservation_Val_Tbl_Type
6327 
6328 ,p_return_status OUT NOCOPY VARCHAR2
6329 
6330 ) IS
6331    l_return_status		       VARCHAR2(1);
6332 /* Added the following variable to fix the bug 2355630 */
6333    l_unit_selling_price   NUMBER;
6334    --
6335    l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6336    --
6337 /* Added for bug 2734389 */
6338 l_msg_count     NUMBER;
6339 l_msg_data      VARCHAR2(2000);
6340 l_failed_rsv_temp_tbl INV_RESERVATION_GLOBAL.mtl_failed_rsv_tbl_type;
6341 /* finish 2734389 */
6342 
6343 BEGIN
6344 
6345 /* -----------------------------------------------------------
6346    Initialize return status
6347    -----------------------------------------------------------
6348 */
6349    IF l_debug_level  > 0 THEN
6350        oe_debug_pub.add(  'BEFORE INITIALIZING RETURN_STATUS' ) ;
6351    END IF;
6352    IF l_debug_level  > 0 THEN
6353        oe_debug_pub.add(  'ENTERING ORDER IMPORT POST_PROCESS' ) ;
6354    END IF;
6355 
6356    p_return_status := FND_API.G_RET_STS_SUCCESS; /* Init to Success */
6357 
6358 
6359    FOR I in 1..p_x_line_tbl.count
6360    LOOP
6361 /* -----------------------------------------------------------
6362       Set message context for the line
6363    -----------------------------------------------------------
6364 */
6365       IF l_debug_level  > 0 THEN
6366           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR THE LINE' ) ;
6367       END IF;
6368 
6369       OE_MSG_PUB.set_msg_context(
6370          p_entity_code                => 'HEADER'
6371         ,p_entity_ref                 => null
6372         ,p_entity_id                  => null
6373         ,p_header_id                  => p_x_header_rec.header_id
6374         ,p_line_id                    => null
6375 --      ,p_batch_request_id           => p_x_header_rec.request_id
6376         ,p_order_source_id            => p_x_header_rec.order_source_id
6377         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
6378         ,p_change_sequence            => p_x_header_rec.change_sequence
6379         ,p_orig_sys_document_line_ref => p_x_line_tbl(I).orig_sys_line_ref
6380         ,p_orig_sys_shipment_ref      => p_x_line_tbl(I).orig_sys_shipment_ref
6381         ,p_source_document_type_id    => null
6382         ,p_source_document_id         => null
6383         ,p_source_document_line_id    => null
6384         ,p_attribute_code             => null
6385         ,p_constraint_id              => null
6386         );
6387 
6388 /* -----------------------------------------------------------
6389       Compare Price
6390    -----------------------------------------------------------
6391 */
6392       IF l_debug_level  > 0 THEN
6393           oe_debug_pub.add(  'BEFORE COMPARING PRICE' ) ;
6394       END IF;
6395 
6396 /* Added the following code to fix the bug 2355630 */
6397       l_unit_selling_price := -1;
6398       oe_debug_pub.add(  'net_price = ' || p_x_line_tbl(I).customer_item_net_price);
6399       oe_debug_pub.add(  'line_id = ' || p_x_line_tbl(I).line_id);
6400       IF p_x_line_tbl(I).customer_item_net_price <> FND_API.G_MISS_NUM THEN
6401 
6402          begin
6403            select unit_selling_price into l_unit_selling_price
6404            from oe_order_lines
6405            where line_id = p_x_line_tbl(I).line_id;
6406 
6407         exception
6408           when others then
6409             oe_debug_pub.add(  'ex usp = ' || l_unit_selling_price);
6410         end;
6411 
6412          IF l_debug_level  > 0 THEN
6413              oe_debug_pub.add(  'CUSTOMER_ITEM_NET_PRICE '||TO_CHAR ( P_X_LINE_TBL ( I ) .CUSTOMER_ITEM_NET_PRICE ) ) ;
6414          END IF;
6415          IF l_debug_level  > 0 THEN
6416              oe_debug_pub.add(  'UNIT_SELLING_PRICE '||TO_CHAR ( L_UNIT_SELLING_PRICE ) ) ;
6417          END IF;
6418 
6419       END IF;
6420 
6421 
6422       IF p_x_line_tbl(I).customer_item_net_price <> FND_API.G_MISS_NUM AND
6423          p_x_line_tbl(I).customer_item_net_price <> l_unit_selling_price AND
6424          l_unit_selling_price <> -1
6425       THEN
6426 	 IF l_debug_level  > 0 THEN
6427 	     oe_debug_pub.add(  'WARNING! ITEM PRICE SENT BY THE CUSTOMER IS DIFFERENT FROM THE ONE CALCULATED BY THE SYSTEM... ' ) ;
6428 	 END IF;
6429 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_PRICE_WARNING');
6430 	 FND_MESSAGE.SET_TOKEN('CUST_PRICE',p_x_line_tbl(I).customer_item_net_price);
6431 	 FND_MESSAGE.SET_TOKEN('SPLR_PRICE',l_unit_selling_price);
6432          OE_MSG_PUB.Add;
6433 --	 p_return_status := FND_API.G_RET_STS_ERROR;
6434       END IF;
6435 
6436 /* -----------------------------------------------------------
6437       Compare Payment Term
6438    -----------------------------------------------------------
6439 */
6440       IF l_debug_level  > 0 THEN
6441        oe_debug_pub.add('BEFORE COMPARING PAYMENT TERM' ) ;
6442        oe_debug_pub.add('cpti ' || p_x_line_tbl(I).customer_payment_term_id);
6443        IF p_x_line_val_tbl_old.exists(I) THEN --added for bug 4307609
6444          oe_debug_pub.add('cpt ' || p_x_line_val_tbl_old(I).customer_payment_term);
6445        end if ;
6446        oe_debug_pub.add('pti ' || p_x_line_tbl(I).payment_term_id);
6447       END IF;
6448 
6449       IF (p_x_line_tbl(I).customer_payment_term_id <> FND_API.G_MISS_NUM AND
6450          p_x_line_tbl(I).customer_payment_term_id <>
6451          p_x_line_tbl(I).payment_term_id) OR
6452          (  p_x_line_val_tbl_old.exists(I) -- added for 4307609
6453 	 AND p_x_line_val_tbl_old(I).customer_payment_term <> FND_API.G_MISS_CHAR
6454          AND
6455          p_x_line_val_tbl_old(I).customer_payment_term <>
6456          oe_id_to_value.payment_term(p_x_line_tbl(I).payment_term_id))
6457       THEN
6458 	 IF l_debug_level  > 0 THEN
6459 	     oe_debug_pub.add(  'WARNING! CUSTOMER AND SUPPLIER PAYMENT TERMS DIFFERENT... ' ) ;
6460 	 END IF;
6461 
6462 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_PAYMENT_TERM_WARNING');
6463          IF nvl(p_x_line_tbl(I).customer_payment_term_id, FND_API.G_MISS_NUM)
6464             <> FND_API.G_MISS_NUM Then
6465             FND_MESSAGE.SET_TOKEN('CUST_TERM',p_x_line_tbl(I).customer_payment_term_id);
6466 	    FND_MESSAGE.SET_TOKEN('SPLR_TERM',p_x_line_tbl(I).payment_term_id);
6467          ELSIF p_x_line_val_tbl_old.exists(I)  -- added for 4307609
6468 	    AND nvl(p_x_line_val_tbl_old(I).customer_payment_term,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR Then
6469             FND_MESSAGE.SET_TOKEN('CUST_TERM',p_x_line_val_tbl_old(I).customer_payment_term);
6470 	    FND_MESSAGE.SET_TOKEN('SPLR_TERM',oe_id_to_value.payment_term(p_x_line_tbl(I).payment_term_id));
6471          END IF;
6472          OE_MSG_PUB.Add;
6473 --	 p_return_status := FND_API.G_RET_STS_ERROR;
6474       END IF;
6475 
6476    END LOOP;
6477 
6478 
6479 /* -----------------------------------------------------------
6480    Inventory Reservations
6481    -----------------------------------------------------------
6482 */
6483    IF l_debug_level  > 0 THEN
6484        oe_debug_pub.add(  'BEFORE RESERVING INVENTORY' ) ;
6485    END IF;
6486 
6487       OE_ORDER_IMPORT_RESERVE_PVT.Reserve_Inventory(
6488          p_header_rec                   => p_x_header_rec
6489         ,p_line_tbl                     => p_x_line_tbl
6490         ,p_reservation_tbl              => p_x_reservation_tbl
6491         ,p_header_val_rec               => p_x_header_val_rec
6492         ,p_line_val_tbl                 => p_x_line_val_tbl
6493         ,p_reservation_val_tbl          => p_x_reservation_val_tbl
6494         ,p_return_status                => l_return_status
6495         );
6496 
6497       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6498       AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6499 			          FND_API.G_RET_STS_UNEXP_ERROR)
6500       THEN
6501             p_return_status := l_return_status;
6502       END IF;
6503 
6504 /* Added the following if condition to fix the bug 3176286 */
6505       IF OE_SCHEDULE_UTIL.OESCH_PERFORMED_RESERVATION = 'Y' THEN
6506 /* Added the code for the bug 2734389 */
6507         oe_debug_pub.add(  'BEFORE CALLING THE INV FOR DO_CHECK_FOR_COMMIT FROM  ORDER IMPORT' , 1 ) ;
6508     INV_RESERVATION_PVT.Do_Check_For_Commit
6509         (p_api_version_number  => 1.0
6510         ,p_init_msg_lst        => FND_API.G_FALSE
6511         ,x_return_status       => l_return_status
6512         ,x_msg_count           => l_msg_count
6513         ,x_msg_data            => l_msg_data
6514         ,x_failed_rsv_temp_tbl => l_failed_rsv_temp_tbl);
6515     oe_debug_pub.add(  'AFTER CALLING THE INV FOR DO_CHECK_FOR_COMMIT : ' || L_RETURN_STATUS , 1 ) ;
6516     IF l_failed_rsv_temp_tbl.count > 0 THEN
6517       oe_debug_pub.add(  ' THE RESERVATION PROCESS HAS FAILED ' , 1 ) ;
6518       FND_MESSAGE.SET_NAME('ONT','OE_SCH_RSV_FAILURE');
6519       OE_MSG_PUB.Add;
6520     END IF;
6521     -- Error Handling Start
6522     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6523       oe_debug_pub.add(  'INSIDE UNEXPECTED ERROR' , 1 ) ;
6524       OE_MSG_PUB.Transfer_Msg_Stack;
6525       l_msg_count   := OE_MSG_PUB.COUNT_MSG;
6526 
6527       FOR I IN 1..l_msg_count LOOP
6528         l_msg_data :=  OE_MSG_PUB.Get(I,'F');
6529         oe_debug_pub.add(  L_MSG_DATA , 1 ) ;
6530       END LOOP;
6531       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6532     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
6533       oe_debug_pub.add(  ' INSIDE EXPECTED ERROR' , 1 ) ;
6534       OE_MSG_PUB.Transfer_Msg_Stack;
6535       l_msg_count   := OE_MSG_PUB.COUNT_MSG;
6536 
6537       FOR I IN 1..l_msg_count LOOP
6538         l_msg_data :=  OE_MSG_PUB.Get(I,'F');
6539         oe_debug_pub.add(  L_MSG_DATA , 1 ) ;
6540       END LOOP;
6541       RAISE FND_API.G_EXC_ERROR;
6542 
6543     END IF;
6544       --Error Handling End
6545 
6546     OE_SCHEDULE_UTIL.OESCH_PERFORMED_RESERVATION := 'N';
6547 
6548   -- Check for Performed Reservation End
6549   END IF;
6550   /* Finish code for 2734389 */
6551 
6552 /* -----------------------------------------------------------
6553    Call EDI Post-Process
6554    -----------------------------------------------------------
6555 */
6556 
6557    IF p_x_header_rec.order_source_id = OE_Globals.G_ORDER_SOURCE_EDI
6558    THEN
6559       IF l_debug_level  > 0 THEN
6560           oe_debug_pub.add(  'BEFORE CALLING EDI POST-PROCESS' ) ;
6561       END IF;
6562 
6563       OE_EDI_PVT.POST_PROCESS(
6564          p_header_rec                   => p_x_header_rec
6565         ,p_header_adj_tbl               => p_x_header_adj_tbl
6566         ,p_header_scredit_tbl           => p_x_header_scredit_tbl
6567         ,p_line_tbl                     => p_x_line_tbl
6568         ,p_line_adj_tbl                 => p_x_line_adj_tbl
6569         ,p_line_scredit_tbl             => p_x_line_scredit_tbl
6570         ,p_lot_serial_tbl               => p_x_lot_serial_tbl
6571 
6572         ,p_header_val_rec               => p_x_header_val_rec
6573         ,p_header_adj_val_tbl           => p_x_header_adj_val_tbl
6574         ,p_header_scredit_val_tbl       => p_x_header_scredit_val_tbl
6575         ,p_line_val_tbl                 => p_x_line_val_tbl
6576         ,p_line_adj_val_tbl             => p_x_line_adj_val_tbl
6577         ,p_line_scredit_val_tbl         => p_x_line_scredit_val_tbl
6578         ,p_lot_serial_val_tbl           => p_x_lot_serial_val_tbl
6579 
6580         ,p_return_status                => l_return_status
6581         );
6582 
6583         IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6584         AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6585 			            FND_API.G_RET_STS_UNEXP_ERROR)
6586         THEN
6587               p_return_status := l_return_status;
6588         END IF;
6589    END IF;
6590 
6591 
6592   EXCEPTION
6593    WHEN OTHERS THEN
6594       IF l_debug_level  > 0 THEN
6595           oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
6596       END IF;
6597       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6598 	 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6599          OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Post_Process');
6600       END IF;
6601 
6602 END POST_PROCESS;
6603 
6604 
6605 END OE_ORDER_IMPORT_SPECIFIC_PVT;