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.12.12000000.2 2007/05/15 08:30:49 smanian 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 
2330 /* ---------------------------------------------------------------
2331 	Validate flags which are derived in Process Order Api
2332    ---------------------------------------------------------------
2333 */
2334 
2335       --call check_derived_flags
2336      IF l_debug_level  > 0 THEN
2337          oe_debug_pub.add(  'CALLING CHECK_DERIVED_FLAGS' ) ;
2338      END IF;
2339      CHECK_DERIVED_FLAGS(
2340    	 p_x_header_rec		=> p_x_header_rec
2341   	,p_x_header_adj_tbl		=> p_x_header_adj_tbl
2342         ,p_x_header_price_att_tbl =>  p_x_header_price_att_tbl
2343         ,p_x_header_adj_att_tbl   => p_x_header_adj_att_tbl
2344         ,p_x_header_adj_assoc_tbl => p_x_header_adj_assoc_tbl
2345   	,p_x_header_scredit_tbl	=> p_x_header_scredit_tbl
2346         ,p_x_header_payment_tbl => p_x_header_payment_tbl
2347   	,p_x_line_tbl			=> p_x_line_tbl
2348   	,p_x_line_adj_tbl		=> p_x_line_adj_tbl
2349         ,p_x_line_price_att_tbl        =>p_x_line_price_att_tbl
2350         ,p_x_line_adj_att_tbl         => p_x_line_adj_att_tbl
2351         ,p_x_line_adj_assoc_tbl       => p_x_line_adj_assoc_tbl
2352   	,p_x_line_scredit_tbl	=> p_x_line_scredit_tbl
2353         ,p_x_line_payment_tbl   => p_x_line_payment_tbl
2354   	,p_x_lot_serial_tbl		=> p_x_lot_serial_tbl
2355   	,p_x_reservation_tbl	=> p_x_reservation_tbl
2356   	,p_x_header_val_rec		=> p_x_header_val_rec
2357   	,p_x_header_adj_val_tbl	=> p_x_header_adj_val_tbl
2358   	,p_x_header_scredit_val_tbl	=> p_x_header_scredit_val_tbl
2359         ,p_x_header_payment_val_tbl     => p_x_header_payment_val_tbl
2360   	,p_x_line_val_tbl		=> p_x_line_val_tbl
2361   	,p_x_line_adj_val_tbl		=> p_x_line_adj_val_tbl
2362   	,p_x_line_scredit_val_tbl	=> p_x_line_scredit_val_tbl
2363         ,p_x_line_payment_val_tbl       => p_x_line_payment_val_tbl
2364   	,p_x_lot_serial_val_tbl		=> p_x_lot_serial_val_tbl
2365   	,p_x_reservation_val_tbl	=> p_x_reservation_val_tbl
2366   	,p_x_return_status		=> l_d_return_status
2367 	);
2368 
2369 	IF l_d_return_status IN (FND_API.G_RET_STS_ERROR,
2370 						FND_API.G_RET_STS_UNEXP_ERROR)
2371      THEN
2372 	  p_return_status := l_d_return_status;
2373      END IF;
2374 
2375      -- {Start As at this point we should have the sold_to_org_id
2376      --  available, either by above call or If Customer_Number or
2377      --  sold_to_org is passed, that means we should call value_to_id
2378      --  api here and populate our Glabal variable which will be used
2379      --  later for creating the relationship.
2380      If p_x_header_rec.sold_to_org_id Is Null Then
2381         If p_x_header_val_rec.sold_to_org <> FND_API.G_MISS_CHAR Or
2382            p_x_header_val_rec.customer_number <> FND_API.G_MISS_CHAR Then
2383            p_x_header_rec.sold_to_org_id     :=
2384              oe_value_to_id.sold_to_org(
2385              p_sold_to_org     => p_x_header_val_rec.sold_to_org,
2386              p_customer_number => p_x_header_val_rec.customer_number);
2387              OE_INLINE_CUSTOMER_PUB.G_SOLD_TO_CUST :=
2388                                   p_x_header_rec.sold_to_org_id;
2389         End If;
2390      Else
2391         OE_INLINE_CUSTOMER_PUB.G_SOLD_TO_CUST :=
2392                                   p_x_header_rec.sold_to_org_id;
2393      End If;
2394      -- End of the value to id call If}
2395 
2396      -- { Start of the Code for the Add Customer Functionality
2397 
2398      -- {Check for order_import_add_customers system parameter
2399      -- if any ref data is passed and the parameter is set
2400      -- then call add customers functionality.
2401      --{Start of If for calling add customers
2402      If p_header_customer_rec.Orig_Sys_Customer_Ref IS NOT NULL Or
2403         p_header_customer_rec.Orig_Ship_Address_Ref IS NOT NULL Or
2404         p_header_customer_rec.Orig_Bill_Address_Ref IS NOT NULL Or
2405         p_header_customer_rec.Orig_Deliver_Address_Ref IS NOT NULL Or
2406         p_header_customer_rec.Sold_to_Contact_Ref IS NOT NULL Or
2407         p_header_customer_rec.Ship_to_Contact_Ref IS NOT NULL Or
2408         p_header_customer_rec.Bill_to_Contact_Ref IS NOT NULL Or
2409         p_header_customer_rec.Deliver_to_Contact_Ref IS NOT NULL
2410      Then
2411        --{Start of If for checking add customers parameter
2412        If G_ONT_ADD_CUSTOMER In ('Y','P') Then
2413 
2414        -- What we need to do here is to check for the add customer
2415        -- related coulmns and if they are null then call the Add Customer
2416        -- For this New procedure is added into this api which will accept
2417        -- the customer record structure and read that record and create
2418        -- data
2419          l_line_rec      :=    OE_ORDER_PUB.G_MISS_LINE_REC;
2420          Create_New_Cust_Info(
2421                  p_customer_rec   => p_header_customer_rec,
2422                  p_x_header_rec   => p_x_header_rec,
2423                  p_x_line_rec     => l_line_rec,
2424                  p_record_type    => 'HEADER',
2425                  x_return_status  => l_return_status);
2426 
2427          IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
2428          AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
2429 			          FND_API.G_RET_STS_UNEXP_ERROR)
2430          THEN
2431            p_return_status := l_return_status;
2432          END IF;
2433        Else
2434          IF l_debug_level  > 0 THEN
2435              oe_debug_pub.add(  'REF DATA PASSED BUT PARAMETER NOT SET' ) ;
2436          END IF;
2437          fnd_message.set_name('ONT','ONT_OI_INL_SET_PARAMETER');
2438          fnd_message.set_token('TYPE', 'Customers, Addresses or Contacts');
2439          oe_msg_pub.add;
2440          p_return_status := FND_API.G_RET_STS_ERROR;
2441        End If;
2442        -- End of If for checking add customers parameter}
2443      End If;
2444      -- End of If for calling add customers}
2445      -- End of the Code for the Add Customer Functionality }
2446 
2447 
2448 /* -----------------------------------------------------------------------
2449 	If BOOKED_FLAG is set then create a record in  the OE_ACTIONS_INTERFACE
2450 	table. (for compatibility with previous releases)
2451 
2452         bsadri : since the actions cursor is already fetched at this time
2453         the booked action should not be populated into interface tables, but
2454         into the plsql table
2455    -----------------------------------------------------------------------
2456 */
2457 
2458    IF UPPER(p_x_header_rec.booked_flag) = 'Y'
2459    THEN
2460 	IF l_debug_level  > 0 THEN
2461 	    oe_debug_pub.add(  'BOOKED FLAG IS SET' ) ;
2462 	END IF;
2463 	IF l_debug_level  > 0 THEN
2464 	    oe_debug_pub.add(  'INSERTING RECORD IN ACTIONS TABLE' ) ;
2465 	END IF;
2466 	l_c_operation_code := 'BOOK_ORDER';
2467 
2468      p_x_action_request_tbl(p_x_action_request_tbl.COUNT +1).request_type
2469                := l_c_operation_code;
2470      p_x_action_request_tbl(p_x_action_request_tbl.COUNT).entity_code
2471                := OE_Globals.G_ENTITY_HEADER;
2472      p_x_header_rec.booked_flag := FND_API.G_MISS_CHAR;
2473 
2474    END IF;
2475 
2476 /* -----------------------------------------------------------
2477    Derive Requisition Header Id for Internal Orders
2478    -----------------------------------------------------------
2479 */
2480    IF (p_x_header_rec.order_source_id = OE_GLOBALS.G_ORDER_SOURCE_INTERNAL)
2481     AND p_x_header_rec.operation IN ('INSERT','CREATE','UPDATE','DELETE')
2482    THEN
2483      BEGIN
2484        IF l_debug_level  > 0 THEN
2485            oe_debug_pub.add(  'BEFORE DERIVING REQ HEADER ID FOR INTERNAL ORDERS' ) ;
2486        END IF;
2487 
2488        p_x_header_rec.source_document_type_id :=
2489 				OE_GLOBALS.G_ORDER_SOURCE_INTERNAL;
2490 
2491 	  -- Following select is removed because of the po tables are
2492        -- changing to multi-org, and it has been decided that PO
2493        -- will pass ids columns instead of reference as they are unique
2494        -- in _all tables and reference column can be derived uniquely
2495        -- but not the vice-versa
2496 
2497        --  SELECT requisition_header_id
2498        --	 INTO p_header_rec.source_document_id
2499        --	 FROM po_requisition_headers
2500        --  WHERE segment1 = p_header_rec.orig_sys_document_ref;
2501 
2502        --  Re-Assigning the ID to OM ID column
2503        p_x_header_rec.source_document_id := p_x_header_rec.orig_sys_document_ref;
2504 
2505        --  New Select for Multi-Org to get the reference columns
2506        SELECT segment1
2507        INTO   p_x_header_rec.orig_sys_document_ref
2508        FROM   po_requisition_headers_all
2509        WHERE  requisition_header_id = p_x_header_rec.source_document_id;
2510 
2511        EXCEPTION
2512         WHEN OTHERS THEN
2513           IF l_debug_level  > 0 THEN
2514               oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
2515           END IF;
2516 
2517           IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
2518 	     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2519              OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Req_Header_Id_derivation');
2520           END IF;
2521      END;
2522    END IF;
2523 
2524 /* -----------------------------------------------------------
2525       Validate header operation code
2526    -----------------------------------------------------------
2527 */
2528 					IF l_debug_level  > 0 THEN
2529 					    oe_debug_pub.add(  'BEFORE VALIDATING HEADER OPERATION CODE: '|| P_X_HEADER_REC.OPERATION ) ;
2530 					END IF;
2531 
2532 
2533 
2534    BEGIN
2535    IF p_x_header_rec.operation IN ('INSERT','CREATE')
2536    THEN --{
2537       Begin
2538        -- Start for the fix of bug  1794206
2539        IF (p_x_header_rec.order_source_id = OE_GLOBALS.G_ORDER_SOURCE_INTERNAL)
2540        THEN
2541          IF l_debug_level  > 0 THEN
2542              oe_debug_pub.add(  'BEFORE VALIDATING INTERNAL ORDER FOR INSERT OPR' ) ;
2543          END IF;
2544 
2545 
2546          SELECT 1 into l_count
2547            FROM oe_order_headers
2548           WHERE order_source_id       = p_x_header_rec.order_source_id
2549             AND orig_sys_document_ref = p_x_header_rec.orig_sys_document_ref
2550             AND decode(l_customer_key_profile, 'Y',
2551 	        nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
2552               = decode(l_customer_key_profile, 'Y',
2553 	        nvl(p_x_header_rec.sold_to_org_id, FND_API.G_MISS_NUM), 1)
2554             AND source_document_id    = p_x_header_rec.source_document_id
2555             AND rownum                < 2;
2556 
2557          IF l_debug_level  > 0 THEN
2558              oe_debug_pub.add(  'AFTER VALIDATING INTERNAL ORDER FOR INSERT OPR' ) ;
2559          END IF;
2560        ELSE
2561        -- End for the fix of bug  1794206
2562          IF l_debug_level  > 0 THEN
2563              oe_debug_pub.add(  'BEFORE VALIDATING EXTERNAL ORDER FOR INSERT OPR' ) ;
2564          END IF;
2565 
2566          SELECT 1 into l_count
2567            FROM oe_order_headers
2568           WHERE order_source_id       = p_x_header_rec.order_source_id
2569             AND orig_sys_document_ref = p_x_header_rec.orig_sys_document_ref
2570 	    AND decode(l_customer_key_profile, 'Y',
2571 	        nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
2572               = decode(l_customer_key_profile, 'Y',
2573 	        nvl(p_x_header_rec.sold_to_org_id, FND_API.G_MISS_NUM), 1)
2574             AND rownum                < 2;
2575 
2576          IF l_debug_level  > 0 THEN
2577              oe_debug_pub.add(  'AFTER VALIDATING EXTERNAL ORDER FOR INSERT OPR' ) ;
2578          END IF;
2579        END IF;
2580 
2581          IF l_debug_level  > 0 THEN
2582              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW ORDER WITH THE SAME ORDER SOURCE ID AND ORIG_SYS_DOCUMENT_REF... ' ) ;
2583          END IF;
2584          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2585          OE_MSG_PUB.Add;
2586          p_return_status := FND_API.G_RET_STS_ERROR;
2587       Exception
2588         When no_data_found then
2589           IF l_debug_level  > 0 THEN
2590               oe_debug_pub.add(  'VALID ORDER FOR INSERT' ) ;
2591           END IF;
2592         When others then
2593          IF l_debug_level  > 0 THEN
2594              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT NEW ORDER... ' ) ;
2595          END IF;
2596          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2597          OE_MSG_PUB.Add;
2598          p_return_status := FND_API.G_RET_STS_ERROR;
2599       End;
2600    --}{
2601    ELSIF p_x_header_rec.operation IN ('UPDATE','DELETE')
2602    THEN
2603       Begin
2604 
2605 --change sequence is not used in the WHERE-clause  here because we don't want
2606 --to restrict new order to have the same change sequence as old order
2607 
2608          SELECT header_id, order_number, change_sequence
2609            INTO l_header_id, l_order_number, l_c_change_sequence
2610            FROM oe_order_headers
2611           WHERE order_source_id       = p_x_header_rec.order_source_id
2612             AND orig_sys_document_ref = p_x_header_rec.orig_sys_document_ref
2613             AND (sold_to_org_id is NULL OR
2614 		decode(l_customer_key_profile, 'Y',
2615 	 	nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
2616               = decode(l_customer_key_profile, 'Y',
2617 		nvl(p_x_header_rec.sold_to_org_id, FND_API.G_MISS_NUM), 1));
2618 
2619          p_x_header_rec.header_id    := l_header_id;
2620          p_x_header_rec.order_number := l_order_number;
2621 
2622          IF l_debug_level  > 0 THEN
2623              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
2624          END IF;
2625          IF l_debug_level  > 0 THEN
2626              oe_debug_pub.add(  'ORDER NUMBER: '||TO_CHAR ( P_X_HEADER_REC.ORDER_NUMBER ) ) ;
2627          END IF;
2628       Exception
2629         When no_data_found then
2630           IF l_debug_level  > 0 THEN
2631               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING ORDER BUT THAT ORDER DOES NOT EXIST... ' ) ;
2632           END IF;
2633           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2634           OE_MSG_PUB.Add;
2635           p_return_status := FND_API.G_RET_STS_ERROR;
2636         When others then
2637          IF l_debug_level  > 0 THEN
2638              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING ORDER ... ' ) ;
2639          END IF;
2640          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2641          OE_MSG_PUB.Add;
2642          p_return_status := FND_API.G_RET_STS_ERROR;
2643       End;
2644    --}{
2645    ELSE --IF p_x_header_rec.operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')
2646       IF l_debug_level  > 0 THEN
2647           oe_debug_pub.add(  'INVALID OPERATION CODE. NOT ONE OF INSERT , CREATE , UPDATE OR DELETE... ' ) ;
2648       END IF;
2649       FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2650       OE_MSG_PUB.Add;
2651       p_return_status := FND_API.G_RET_STS_ERROR;
2652 
2653    END IF;  --}
2654 
2655    EXCEPTION
2656    WHEN OTHERS THEN
2657       IF l_debug_level  > 0 THEN
2658           oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
2659       END IF;
2660 
2661       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2662 	 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2663          OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.header_operation_validation');
2664       END IF;
2665    END;
2666 
2667    /* bsadri fill in the IDs for actions if this is an update */
2668    BEGIN
2669    IF p_x_header_rec.operation IN ('UPDATE','DELETE') THEN
2670      FOR b in 1..p_x_action_request_tbl.COUNT
2671      LOOP--{
2672         IF p_x_action_request_tbl(b).entity_code = OE_Globals.G_ENTITY_HEADER
2673         THEN
2674            p_x_action_request_tbl(b).entity_id := p_x_header_rec.header_id;
2675 
2676 /*myerrams, Customer Acceptance, Populating the Action_request table with Header id if Customer Acceptance is enabled.*/
2677            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
2678 		  l_org_id := mo_global.get_current_org_id;
2679 	          IF (OE_SYS_PARAMETERS.VALUE('ENABLE_FULFILLMENT_ACCEPTANCE',l_org_id) = 'Y') THEN
2680 			p_x_action_request_tbl(b).param5 := p_x_header_rec.header_id;
2681 		  END IF;
2682            END IF;
2683 /*myerrams, Customer Acceptance, end*/
2684         ELSE
2685            --adjustments for line exit the loop
2686            raise e_break;
2687         END IF;
2688      END LOOP;--}
2689    END IF;
2690    EXCEPTION
2691      WHEN  e_break THEN
2692        NULL;
2693    END;
2694    FOR I in 1..p_x_header_adj_tbl.count
2695    LOOP
2696 /* -----------------------------------------------------------
2697       Set message context for header adjustments
2698    -----------------------------------------------------------
2699 */
2700       l_price_adjustment_id := NULL;
2701       IF l_debug_level  > 0 THEN
2702           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER ADJUSTMENTS' ) ;
2703       END IF;
2704 
2705       OE_MSG_PUB.set_msg_context(
2706          p_entity_code                => 'HEADER_ADJ'
2707         ,p_entity_ref                 => p_x_header_adj_tbl(I).orig_sys_discount_ref
2708         ,p_entity_id                  => null
2709         ,p_header_id                  => p_x_header_rec.header_id
2710         ,p_line_id                    => null
2711 --      ,p_batch_request_id           => p_x_header_rec.request_id
2712         ,p_order_source_id            => p_x_header_rec.order_source_id
2713         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
2714         ,p_change_sequence            => p_x_header_rec.change_sequence
2715         ,p_orig_sys_document_line_ref => null
2716         ,p_orig_sys_shipment_ref      => null
2717         ,p_source_document_type_id    => null
2718         ,p_source_document_id         => null
2719         ,p_source_document_line_id    => null
2720         ,p_attribute_code             => null
2721         ,p_constraint_id              => null
2722         );
2723 
2724 /* -----------------------------------------------------------
2725       Validate orig sys discount ref for header
2726    -----------------------------------------------------------
2727 */
2728       IF l_debug_level  > 0 THEN
2729           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_DISCOUNT_REF' ) ;
2730       END IF;
2731 
2732       IF p_x_header_adj_tbl(I).orig_sys_discount_ref = FND_API.G_MISS_CHAR
2733       THEN
2734 	 IF l_debug_level  > 0 THEN
2735 	     oe_debug_pub.add(  'INVALID ORIG_SYS_DISCOUNT_REF... ' ) ;
2736 	 END IF;
2737 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_DISCOUNT_REF');
2738          OE_MSG_PUB.Add;
2739 	 p_return_status := FND_API.G_RET_STS_ERROR;
2740       END IF;
2741 
2742 /* -----------------------------------------------------------
2743       Validate header adjustments operation code
2744    -----------------------------------------------------------
2745 */
2746       IF l_debug_level  > 0 THEN
2747           oe_debug_pub.add(  'BEFORE VALIDATING HEADER ADJUSTMENTS OPERATION CODE' ) ;
2748       END IF;
2749 
2750       IF p_x_header_adj_tbl(I).operation NOT IN ('INSERT','CREATE',
2751 					       'UPDATE','DELETE') OR
2752         (p_x_header_rec.operation            IN ('INSERT','CREATE') AND
2753          p_x_header_adj_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
2754         (p_x_header_rec.operation                IN ('UPDATE') AND
2755          p_x_header_adj_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
2756         (p_x_header_rec.operation                IN ('DELETE') AND
2757          p_x_header_adj_tbl(I).operation NOT IN ('DELETE'))
2758       THEN
2759 	   IF l_debug_level  > 0 THEN
2760 	       oe_debug_pub.add(  'INVALID HEADER ADJUSTMENTS OPERATION CODE...' ) ;
2761 	   END IF;
2762 	   FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2763         OE_MSG_PUB.Add;
2764 	   p_return_status := FND_API.G_RET_STS_ERROR;
2765       END IF;
2766 
2767 -- aksingh(10/11/2000) this is in process of being coded
2768       IF  p_x_header_adj_tbl(I).operation IN ('INSERT', 'CREATE')
2769       AND p_x_header_rec.operation = 'UPDATE'
2770       THEN
2771          IF l_debug_level  > 0 THEN
2772              oe_debug_pub.add(  'NEW ADJUSTMENT FOR THE EXISITNG HEARDER_ID:' || P_X_HEADER_REC.HEADER_ID ) ;
2773          END IF;
2774          IF l_debug_level  > 0 THEN
2775              oe_debug_pub.add(  'NEW ADJUSTMENT FOR THE EXISITNG HEARDER_ID:' || L_HEADER_ID ) ;
2776          END IF;
2777          p_x_header_adj_tbl(I).header_id    := l_header_id;
2778       Begin
2779 
2780          SELECT 1 into l_count
2781            FROM oe_price_adjustments
2782           WHERE header_id              = p_x_header_rec.header_id
2783             AND line_id                IS NULL
2784             AND orig_sys_discount_ref  =
2785                        p_x_header_adj_tbl(I).orig_sys_discount_ref
2786             AND rownum                < 2;
2787 
2788          IF l_debug_level  > 0 THEN
2789              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRADJ WITH THE SAME HEADER_ID AND ORIG_SYS_DISCOUNT_REF... ' ) ;
2790          END IF;
2791          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2792          OE_MSG_PUB.Add;
2793          p_return_status := FND_API.G_RET_STS_ERROR;
2794       Exception
2795         When no_data_found then
2796           IF l_debug_level  > 0 THEN
2797               oe_debug_pub.add(  'VALID HEADER LEVEL PRICE ADJ FOR INSERT' ) ;
2798           END IF;
2799         When others then
2800          IF l_debug_level  > 0 THEN
2801              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PRICE ADJ... ' ) ;
2802          END IF;
2803          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2804          OE_MSG_PUB.Add;
2805          p_return_status := FND_API.G_RET_STS_ERROR;
2806       End;
2807       End If; -- Insert, Create operation
2808 
2809       IF  p_x_header_adj_tbl(I).operation IN ('UPDATE','DELETE')
2810       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
2811       THEN
2812       Begin
2813          IF l_debug_level  > 0 THEN
2814              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
2815          END IF;
2816          IF l_debug_level  > 0 THEN
2817              oe_debug_pub.add(  'DISCOUNT REF: '||P_X_HEADER_ADJ_TBL ( I ) .ORIG_SYS_DISCOUNT_REF ) ;
2818          END IF;
2819          SELECT price_adjustment_id
2820            INTO l_price_adjustment_id
2821            FROM oe_price_adjustments
2822           WHERE header_id             = p_x_header_rec.header_id
2823             AND line_id               IS NULL
2824             AND orig_sys_discount_ref =
2825                 p_x_header_adj_tbl(I).orig_sys_discount_ref;
2826 
2827          p_x_header_adj_tbl(I).header_id    := l_header_id;
2828          p_x_header_adj_tbl(I).price_adjustment_id := l_price_adjustment_id;
2829          IF l_debug_level  > 0 THEN
2830              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_ADJ_TBL ( I ) .HEADER_ID ) ) ;
2831          END IF;
2832          IF l_debug_level  > 0 THEN
2833              oe_debug_pub.add(  'ADJUST ID: '||TO_CHAR ( P_X_HEADER_ADJ_TBL ( I ) .PRICE_ADJUSTMENT_ID ) ) ;
2834          END IF;
2835 
2836       Exception
2837         When no_data_found then
2838           IF l_debug_level  > 0 THEN
2839               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING HDR ADJ BUT THAT DOES NOT EXIST... ' ) ;
2840           END IF;
2841           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2842           OE_MSG_PUB.Add;
2843           p_return_status := FND_API.G_RET_STS_ERROR;
2844         When others then
2845          IF l_debug_level  > 0 THEN
2846              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HDRADJ ... ' ) ;
2847          END IF;
2848          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
2849          OE_MSG_PUB.Add;
2850          p_return_status := FND_API.G_RET_STS_ERROR;
2851       End;
2852       End IF; -- Update and Delete operation
2853 
2854 -- aksingh(10/11/2000) this is in process of being coded upto this point
2855 
2856 -- Following changes are made to fix the bug# 1220921, It will call the
2857 -- api to get the id(header and line) also the list_line_type code to
2858 -- pass it to process_order as right now it is not possible to call
2859 -- process order to import order without passing the these ids.
2860 -- {
2861    If   (p_x_header_adj_tbl(I).list_header_id is null
2862 	 or   p_x_header_adj_tbl(I).list_header_id = FND_API.G_MISS_NUM)
2863       and (p_x_header_adj_tbl(I).list_line_id is null
2864 	 or   p_x_header_adj_tbl(I).list_line_id = FND_API.G_MISS_NUM)
2865 	 then
2866       list_line_id( p_modifier_name  => p_x_header_adj_val_tbl(I).list_name,
2867                     p_list_line_no   => p_x_header_adj_tbl(I).list_line_no,
2868                     p_version_no     => p_x_header_adj_val_tbl(I).version_no,
2869                  p_list_line_type_code => p_x_header_adj_tbl(I).list_line_type_code,
2870                     p_return_status  => l_return_status,
2871                     x_list_header_id => l_list_header_id,
2872                     x_list_line_id   => l_list_line_id,
2873                     x_list_line_no   => l_list_line_no,
2874                     x_type           =>l_type);
2875 
2876        IF l_type NOT IN ('DIS','FREIGHT_CHARGE','PROMOLINE','COUPON','PROMO','SUR') THEN
2877          IF l_debug_level  > 0 THEN
2878              oe_debug_pub.add(  'OEXVIMSB.PLS -> NOT A VALID DISCOUNT/COUPON TYPE' ) ;
2879          END IF;
2880          IF l_debug_level  > 0 THEN
2881              oe_debug_pub.add(  'NOT VALID PROMOTION NAME =' ||P_X_HEADER_ADJ_VAL_TBL ( I ) .LIST_NAME ) ;
2882          END IF;
2883          FND_MESSAGE.SET_NAME('ONT','OE_INVALID_LIST_NAME');
2884          FND_MESSAGE.SET_TOKEN('LIST_NAME',p_x_header_adj_val_tbl(I).list_name);
2885          OE_MSG_PUB.Add;
2886 	 p_return_status := FND_API.G_RET_STS_ERROR;
2887        END IF;
2888 
2889        IF  (p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
2890          AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
2891                                   FND_API.G_RET_STS_UNEXP_ERROR))
2892       THEN
2893           p_return_status := l_return_status;
2894           return;
2895       END IF;
2896        IF l_debug_level  > 0 THEN
2897            oe_debug_pub.add(  'LIST_LINE_TYPE_CODE = '||L_TYPE ) ;
2898        END IF;
2899        IF l_debug_level  > 0 THEN
2900            oe_debug_pub.add(  'LIST HEADER ID = '||L_LIST_HEADER_ID ) ;
2901        END IF;
2902        IF l_debug_level  > 0 THEN
2903            oe_debug_pub.add(  'LIST LINE ID = '||L_LIST_LINE_ID ) ;
2904        END IF;
2905       IF l_type In ('DIS','SUR') THEN
2906         p_x_header_adj_tbl(I).list_header_id :=l_list_header_id;
2907         p_x_header_adj_tbl(I).list_line_id :=l_list_line_id;
2908       END IF;
2909 
2910       IF l_type='FREIGHT_CHARGE' THEN
2911         p_x_header_adj_tbl(I).list_header_id :=l_list_header_id;
2912         p_x_header_adj_tbl(I).list_line_id :=l_list_line_id;
2913       END IF;
2914 
2915       IF l_type='PROMOLINE' THEN
2916          l_header_price_att_tbl(I).pricing_context :='MODLIST';
2917          l_header_price_att_tbl(I).flex_title :='QP_ATTR_DEFNS_QUALIFIER';
2918          l_header_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
2919          l_header_price_att_tbl(I).pricing_attribute2 :=l_list_line_id;
2920          l_header_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_header_adj_tbl(I).Orig_Sys_Discount_Ref;
2921          l_header_price_att_tbl(I).operation := p_x_header_adj_tbl(I).Operation;
2922          p_x_header_adj_tbl.delete (I);
2923          p_x_header_adj_val_tbl.DELETE (I);
2924       END IF;
2925       IF l_type = 'COUPON' THEN
2926         IF l_debug_level  > 0 THEN
2927             oe_debug_pub.add(  'SETTING PRICING_REC FOR COUPON' ) ;
2928         END IF;
2929         l_header_price_att_tbl(I).pricing_context :='MODLIST';
2930         l_header_price_att_tbl(I).flex_title      :='QP_ATTR_DEFNS_QUALIFIER';
2931         l_header_price_att_tbl(I).pricing_attribute3 :=l_list_line_id;
2932         l_header_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_header_adj_tbl(I).Orig_Sys_Discount_Ref;
2933         l_header_price_att_tbl(I).operation := p_x_header_adj_tbl(I).Operation;
2934         p_x_header_adj_tbl.delete (I);
2935         p_x_header_adj_val_tbl.DELETE (I);
2936       END IF;
2937 
2938        IF l_type='PROMO' THEN
2939          IF l_debug_level  > 0 THEN
2940              oe_debug_pub.add(  'SETTING PRICING_REC FOR PROMO' ) ;
2941          END IF;
2942          l_header_price_att_tbl(I).pricing_context :='MODLIST';
2943          l_header_price_att_tbl(I).flex_title    :='QP_ATTR_DEFNS_QUALIFIER';
2944          l_header_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
2945          l_header_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_header_adj_tbl(I).Orig_Sys_Discount_Ref;
2946          l_header_price_att_tbl(I).operation := p_x_header_adj_tbl(I).Operation;
2947          p_x_header_adj_tbl.delete (I);
2948          p_x_header_adj_val_tbl.DELETE (I);
2949        END IF;
2950    end if;
2951 -- } end if
2952 
2953    END LOOP;
2954 
2955 IF l_debug_level  > 0 THEN
2956     oe_debug_pub.add(  'P_X_HEADER_ATT_TBL.COUNT: '||TO_CHAR ( P_X_HEADER_PRICE_ATT_TBL.COUNT ) , 1 ) ;
2957 END IF;
2958 
2959    FOR I in 1..p_x_header_price_att_tbl.count
2960    LOOP
2961 /* -----------------------------------------------------------
2962       Set message context for header atts
2963    -----------------------------------------------------------
2964 */
2965       IF l_debug_level  > 0 THEN
2966           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER ATTS' ) ;
2967       END IF;
2968 
2969       OE_MSG_PUB.set_msg_context(
2970          p_entity_code                => 'HEADER_PATTS'
2971         ,p_entity_ref                 => p_x_header_price_att_tbl(I).orig_sys_atts_ref
2972         ,p_entity_id                  => null
2973         ,p_header_id                  => p_x_header_rec.header_id
2974         ,p_line_id                    => null
2975 --      ,p_batch_request_id           => p_x_header_rec.request_id
2976         ,p_order_source_id            => p_x_header_rec.order_source_id
2977         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
2978         ,p_change_sequence            => p_x_header_rec.change_sequence
2979         ,p_orig_sys_document_line_ref => null
2980         ,p_orig_sys_shipment_ref      => null
2981         ,p_source_document_type_id    => null
2982         ,p_source_document_id         => null
2983         ,p_source_document_line_id    => null
2984         ,p_attribute_code             => null
2985         ,p_constraint_id              => null
2986         );
2987 
2988 /* -----------------------------------------------------------
2989       Validate orig sys documentt ref for header
2990    -----------------------------------------------------------
2991 */
2992       IF l_debug_level  > 0 THEN
2993           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_ATTS_REF' ) ;
2994       END IF;
2995 
2996       IF p_x_header_price_att_tbl(I).orig_sys_atts_ref = FND_API.G_MISS_CHAR
2997       THEN
2998 	 IF l_debug_level  > 0 THEN
2999 	     oe_debug_pub.add(  'INVALID ORIG_SYS_ATTRIBUTE_REF... ' ) ;
3000 	 END IF;
3001 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_ATTS_REF');
3002          OE_MSG_PUB.Add;
3003 	 p_return_status := FND_API.G_RET_STS_ERROR;
3004       END IF;
3005 
3006 /* -----------------------------------------------------------
3007       Validate header atts operation code
3008    -----------------------------------------------------------
3009 */
3010       IF l_debug_level  > 0 THEN
3011           oe_debug_pub.add(  'BEFORE VALIDATING HEADER ATTS OPERATION CODE' ) ;
3012       END IF;
3013 
3014       IF p_x_header_price_att_tbl(I).operation NOT IN ('INSERT','CREATE',
3015 					       'UPDATE','DELETE') OR
3016         (p_x_header_rec.operation            IN ('INSERT','CREATE') AND
3017          p_x_header_price_att_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3018         (p_x_header_rec.operation                IN ('UPDATE') AND
3019          p_x_header_price_att_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
3020         (p_x_header_rec.operation                IN ('DELETE') AND
3021          p_x_header_price_att_tbl(I).operation NOT IN ('DELETE'))
3022       THEN
3023 	   IF l_debug_level  > 0 THEN
3024 	       oe_debug_pub.add(  'INVALID HEADER ATTRIBUTE OPERATION CODE...' ) ;
3025 	   END IF;
3026 	   FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3027         OE_MSG_PUB.Add;
3028 	   p_return_status := FND_API.G_RET_STS_ERROR;
3029       END IF;
3030 
3031       IF  p_x_header_price_att_tbl(I).operation IN ('INSERT', 'CREATE')
3032       AND p_x_header_rec.operation = 'UPDATE'
3033       THEN
3034          IF l_debug_level  > 0 THEN
3035              oe_debug_pub.add(  'NEW ATT FOR THE EXISITNG HEARDER_ID:' || P_X_HEADER_REC.HEADER_ID ) ;
3036          END IF;
3037          IF l_debug_level  > 0 THEN
3038              oe_debug_pub.add(  'NEW ATT FOR THE EXISITNG HEARDER_ID:' || L_HEADER_ID ) ;
3039          END IF;
3040          p_x_header_price_att_tbl(I).header_id    := l_header_id;
3041       Begin
3042 
3043          SELECT 1 into l_count
3044            FROM oe_order_price_attribs
3045           WHERE header_id              = p_x_header_rec.header_id
3046             AND line_id                IS NULL
3047             AND orig_sys_atts_ref  =
3048                        p_x_header_price_att_tbl(I).orig_sys_atts_ref
3049             AND rownum                < 2;
3050 
3051          IF l_debug_level  > 0 THEN
3052              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRATT WITH THE SAME HEADER_ID AND ATTRIBUTE ID....' ) ;
3053          END IF;
3054          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3055          OE_MSG_PUB.Add;
3056          p_return_status := FND_API.G_RET_STS_ERROR;
3057       Exception
3058         When no_data_found then
3059           IF l_debug_level  > 0 THEN
3060               oe_debug_pub.add(  'VALID HEADER LEVEL PRICE ATT FOR INSERT' ) ;
3061           END IF;
3062         When others then
3063          IF l_debug_level  > 0 THEN
3064              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PRICE ATT... ' ) ;
3065          END IF;
3066          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3067          OE_MSG_PUB.Add;
3068          p_return_status := FND_API.G_RET_STS_ERROR;
3069       End;
3070       End If; -- Insert, Create operation
3071 
3072       IF  p_x_header_price_att_tbl(I).operation IN ('UPDATE','DELETE')
3073       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
3074       THEN
3075       Begin
3076          IF l_debug_level  > 0 THEN
3077              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
3078          END IF;
3079          IF l_debug_level  > 0 THEN
3080              oe_debug_pub.add(  'ATTRIBUTE REF: '||P_X_HEADER_PRICE_ATT_TBL ( I ) .ORIG_SYS_ATTS_REF ) ;
3081          END IF;
3082          SELECT order_price_attrib_id
3083            INTO l_price_attrib_id
3084            FROM oe_order_price_attribs
3085           WHERE header_id             = p_x_header_rec.header_id
3086             AND line_id               IS NULL
3087             AND orig_sys_atts_ref =
3088                 p_x_header_price_att_tbl(I).orig_sys_atts_ref;
3089 
3090          p_x_header_price_att_tbl(I).header_id    := l_header_id;
3091          p_x_header_price_att_tbl(I).order_price_attrib_id := l_price_attrib_id;
3092          IF l_debug_level  > 0 THEN
3093              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_PRICE_ATT_TBL ( I ) .HEADER_ID ) ) ;
3094          END IF;
3095 --         oe_debug_pub.add('Atttribute id: '||to_char(p_x_header_att_tbl(I).order_price_attrib_id));
3096 
3097       Exception
3098         When no_data_found then
3099           IF l_debug_level  > 0 THEN
3100               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING HDR ATT BUT THAT DOES NOT EXIST... ' ) ;
3101           END IF;
3102           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3103           OE_MSG_PUB.Add;
3104           p_return_status := FND_API.G_RET_STS_ERROR;
3105         When others then
3106          IF l_debug_level  > 0 THEN
3107              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HDRATT ... ' ) ;
3108          END IF;
3109          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3110          OE_MSG_PUB.Add;
3111          p_return_status := FND_API.G_RET_STS_ERROR;
3112       End;
3113       End IF; -- Update and Delete operation
3114 
3115    END LOOP;
3116 
3117 
3118  l_last_index :=p_x_header_price_att_tbl.LAST;
3119  IF l_last_index IS NULL THEN
3120    IF l_debug_level  > 0 THEN
3121        oe_debug_pub.add(  'SETTING L_LAST_INDEX TO ZERO' ) ;
3122    END IF;
3123    l_last_index := 0;
3124  END IF;
3125  IF l_debug_level  > 0 THEN
3126      oe_debug_pub.add(  'L_LAST_INDEX1 = '||L_LAST_INDEX ) ;
3127  END IF;
3128 
3129  FOR I IN 1..l_header_price_att_tbl.COUNT
3130 LOOP
3131    IF l_debug_level  > 0 THEN
3132        oe_debug_pub.add(  'CREATING REC IN PRICING_REC' ) ;
3133    END IF;
3134    l_last_index := l_last_index+1;
3135  IF l_debug_level  > 0 THEN
3136      oe_debug_pub.add(  'L_LAST_INDEX2 = '||L_LAST_INDEX ) ;
3137  END IF;
3138    p_x_header_price_att_tbl(l_last_index).pricing_attribute1 := l_header_price_att_tbl(I).pricing_attribute1;
3139    p_x_header_price_att_tbl(l_last_index).pricing_attribute2 := l_header_price_att_tbl(I).pricing_attribute2;
3140    p_x_header_price_att_tbl(l_last_index).pricing_attribute3 :=l_header_price_att_tbl(I).pricing_attribute3;
3141    p_x_header_price_att_tbl(l_last_index).flex_title := l_header_price_att_tbl(I).flex_title;
3142    p_x_header_price_att_tbl(l_last_index).pricing_context :=l_header_price_att_tbl(I).pricing_context;
3143    p_x_header_price_att_tbl(l_last_index).Orig_Sys_Atts_Ref :=l_header_price_att_tbl(I).Orig_Sys_Atts_Ref;
3144    p_x_header_price_att_tbl(l_last_index).Operation :=l_header_price_att_tbl(I).Operation;
3145 END LOOP;
3146 
3147 
3148 
3149    FOR I in 1..p_x_header_scredit_tbl.count
3150    LOOP
3151  /* --------------------------------------------------------
3152       Set message context for header sales credits
3153    -----------------------------------------------------------
3154 */
3155       l_sales_credit_id := NULL;
3156       IF l_debug_level  > 0 THEN
3157           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER SALES CREDITS' ) ;
3158       END IF;
3159 
3160       OE_MSG_PUB.set_msg_context(
3161          p_entity_code                => 'HEADER_SCREDIT'
3162         ,p_entity_ref                 => p_x_header_scredit_tbl(I).orig_sys_credit_ref
3163         ,p_entity_id                  => null
3164         ,p_header_id                  => p_x_header_rec.header_id
3165         ,p_line_id                    => null
3166 --      ,p_batch_request_id           => p_x_header_rec.request_id
3167         ,p_order_source_id            => p_x_header_rec.order_source_id
3168         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
3169         ,p_change_sequence            => p_x_header_rec.change_sequence
3170         ,p_orig_sys_document_line_ref => null
3171         ,p_orig_sys_shipment_ref      => null
3172         ,p_source_document_type_id    => null
3173         ,p_source_document_id         => null
3174         ,p_source_document_line_id    => null
3175         ,p_attribute_code             => null
3176         ,p_constraint_id              => null
3177         );
3178 
3179 /* -----------------------------------------------------------
3180       Validate orig sys credit ref for header
3181    -----------------------------------------------------------
3182 */
3183       IF l_debug_level  > 0 THEN
3184           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_CREDIT_REF' ) ;
3185       END IF;
3186 
3187       IF p_x_header_scredit_tbl(I).orig_sys_credit_ref = FND_API.G_MISS_CHAR
3188       THEN
3189 	 IF l_debug_level  > 0 THEN
3190 	     oe_debug_pub.add(  'INVALID ORIG_SYS_CREDIT_REF... ' ) ;
3191 	 END IF;
3192 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_CREDIT_REF');
3193          OE_MSG_PUB.Add;
3194 	 p_return_status := FND_API.G_RET_STS_ERROR;
3195       END IF;
3196 
3197 /* -----------------------------------------------------------
3198       Validate header sales credits operation code
3199    -----------------------------------------------------------
3200 */
3201       IF l_debug_level  > 0 THEN
3202           oe_debug_pub.add(  'BEFORE VALIDATING HEADER SALES CREDITS OPERATION CODE' ) ;
3203       END IF;
3204 
3205       IF p_x_header_scredit_tbl(I).operation NOT IN ('INSERT','CREATE',
3206 					           'UPDATE','DELETE') OR
3207         (p_x_header_rec.operation                IN ('INSERT','CREATE') AND
3208          p_x_header_scredit_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3209         (p_x_header_rec.operation                IN ('UPDATE') AND
3210          p_x_header_scredit_tbl(I).operation NOT IN ('INSERT','CREATE',
3211                                     'UPDATE','DELETE')) OR
3212         (p_x_header_rec.operation                IN ('DELETE') AND
3213          p_x_header_scredit_tbl(I).operation NOT IN ('DELETE'))
3214       THEN
3215 	 IF l_debug_level  > 0 THEN
3216 	     oe_debug_pub.add(  'INVALID HEADER SALES CREDITS OPERATION CODE...' ) ;
3217 	 END IF;
3218 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3219          OE_MSG_PUB.Add;
3220 	 p_return_status := FND_API.G_RET_STS_ERROR;
3221       END IF;
3222 
3223 -- aksingh(10/11/2000) this is in process of being coded
3224       IF  p_x_header_scredit_tbl(I).operation IN ('INSERT', 'CREATE')
3225       AND p_x_header_rec.operation = 'UPDATE'
3226       THEN
3227       Begin
3228          p_x_header_scredit_tbl(I).header_id    := l_header_id;
3229          IF l_debug_level  > 0 THEN
3230              oe_debug_pub.add(  'NEW SCREDITS FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
3231          END IF;
3232 
3233          SELECT 1 into l_count
3234            FROM oe_sales_credits
3235           WHERE header_id           = p_x_header_rec.header_id
3236             AND line_id             IS NULL
3237             AND orig_sys_credit_ref =
3238                    p_x_header_scredit_tbl(I).orig_sys_credit_ref
3239             AND rownum                < 2;
3240 
3241          IF l_debug_level  > 0 THEN
3242              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRCREDIT WITH THE SAME HEADER_ID AND ORIG_SYS_CREDIT_REF... ' ) ;
3243          END IF;
3244          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3245          OE_MSG_PUB.Add;
3246          p_return_status := FND_API.G_RET_STS_ERROR;
3247       Exception
3248         When no_data_found then
3249           IF l_debug_level  > 0 THEN
3250               oe_debug_pub.add(  'VALID HEADER LEVEL SALES CREDIT FOR INSERT' ) ;
3251           END IF;
3252         When others then
3253          IF l_debug_level  > 0 THEN
3254              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR SALES CREDIT... ' ) ;
3255          END IF;
3256          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3257          OE_MSG_PUB.Add;
3258          p_return_status := FND_API.G_RET_STS_ERROR;
3259 
3260       End;
3261       END IF; -- Insert, Create Operation
3262 
3263       IF  p_x_header_scredit_tbl(I).operation IN ('UPDATE','DELETE')
3264       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
3265       THEN
3266       Begin
3267          p_x_header_scredit_tbl(I).header_id    := l_header_id;
3268          IF l_debug_level  > 0 THEN
3269              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
3270          END IF;
3271          IF l_debug_level  > 0 THEN
3272              oe_debug_pub.add(  'SCREDIT REF: '||P_X_HEADER_SCREDIT_TBL ( I ) .ORIG_SYS_CREDIT_REF ) ;
3273          END IF;
3274          SELECT sales_credit_id
3275            INTO l_sales_credit_id
3276            FROM oe_sales_credits
3277           WHERE header_id             = l_header_id
3278             AND line_id             IS NULL
3279             AND orig_sys_credit_ref =
3280                 p_x_header_scredit_tbl(I).orig_sys_credit_ref;
3281 
3282          p_x_header_scredit_tbl(I).sales_credit_id := l_sales_credit_id;
3283          IF l_debug_level  > 0 THEN
3284              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
3285          END IF;
3286          IF l_debug_level  > 0 THEN
3287              oe_debug_pub.add(  'SCREDIT ID: '||TO_CHAR ( P_X_HEADER_SCREDIT_TBL ( I ) .SALES_CREDIT_ID ) ) ;
3288          END IF;
3289 
3290       Exception
3291         When no_data_found then
3292           IF l_debug_level  > 0 THEN
3293               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING ORDER BUT THAT ORDER DOES NOT EXIST... ' ) ;
3294           END IF;
3295           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3296           OE_MSG_PUB.Add;
3297           p_return_status := FND_API.G_RET_STS_ERROR;
3298         When others then
3299          IF l_debug_level  > 0 THEN
3300              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HEADER LEVEL SCREDIT ... ' ) ;
3301          END IF;
3302          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3303          OE_MSG_PUB.Add;
3304          p_return_status := FND_API.G_RET_STS_ERROR;
3305       End;
3306       End IF; -- Update and Delete operation
3307 
3308    END LOOP;
3309 
3310 -- multiple payments start
3311 
3312    FOR I in 1..p_x_header_payment_tbl.count
3313    LOOP
3314  /* --------------------------------------------------------
3315       Set message context for header payment
3316    -----------------------------------------------------------
3317 */
3318    --   l_sales_credit_id := NULL;
3319       IF l_debug_level  > 0 THEN
3320           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR HEADER PAYMENTS' ) ;
3321       END IF;
3322 
3323       OE_MSG_PUB.set_msg_context(
3324          p_entity_code                => 'HEADER_PAYMENT'
3325         ,p_entity_ref                 => p_x_header_payment_tbl(I).orig_sys_payment_ref
3326         ,p_entity_id                  => null
3327         ,p_header_id                  => p_x_header_rec.header_id
3328         ,p_line_id                    => null
3329 --      ,p_batch_request_id           => p_x_header_rec.request_id
3330         ,p_order_source_id            => p_x_header_rec.order_source_id
3331         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
3332         ,p_change_sequence            => p_x_header_rec.change_sequence
3333         ,p_orig_sys_document_line_ref => null
3334         ,p_orig_sys_shipment_ref      => null
3335         ,p_source_document_type_id    => null
3336         ,p_source_document_id         => null
3337         ,p_source_document_line_id    => null
3338         ,p_attribute_code             => null
3339         ,p_constraint_id              => null
3340         );
3341 
3342 /* -----------------------------------------------------------
3343       Validate orig sys payment ref for header
3344    -----------------------------------------------------------
3345 */
3346       IF l_debug_level  > 0 THEN
3347           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_PAYMENT_REF' ) ;
3348       END IF;
3349 
3350       IF p_x_header_payment_tbl(I).orig_sys_payment_ref = FND_API.G_MISS_CHAR
3351       THEN
3352 	 IF l_debug_level  > 0 THEN
3353 	     oe_debug_pub.add(  'INVALID ORIG_SYS_PAYMENT_REF... ' ) ;
3354 	 END IF;
3355          /* multiple payment: new message */
3356 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_PAYMENT_REF');
3357          OE_MSG_PUB.Add;
3358 	 p_return_status := FND_API.G_RET_STS_ERROR;
3359       END IF;
3360 
3361 /* -----------------------------------------------------------
3362       Validate header payment operation code
3363    -----------------------------------------------------------
3364 */
3365       IF l_debug_level  > 0 THEN
3366           oe_debug_pub.add(  'BEFORE VALIDATING HEADER PAYMENT OPERATION CODE' ) ;
3367       END IF;
3368 
3369       IF p_x_header_payment_tbl(I).operation NOT IN ('INSERT','CREATE',
3370 					           'UPDATE','DELETE') OR
3371         (p_x_header_rec.operation                IN ('INSERT','CREATE') AND
3372          p_x_header_payment_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3373         (p_x_header_rec.operation                IN ('UPDATE') AND
3374          p_x_header_payment_tbl(I).operation NOT IN ('INSERT','CREATE',
3375                                     'UPDATE','DELETE')) OR
3376         (p_x_header_rec.operation                IN ('DELETE') AND
3377          p_x_header_payment_tbl(I).operation NOT IN ('DELETE'))
3378       THEN
3379 	 IF l_debug_level  > 0 THEN
3380 	     oe_debug_pub.add(  'INVALID HEADER PAYMENT OPERATION CODE...' ) ;
3381 	 END IF;
3382 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3383          OE_MSG_PUB.Add;
3384 	 p_return_status := FND_API.G_RET_STS_ERROR;
3385       END IF;
3386 
3387       IF  p_x_header_payment_tbl(I).operation IN ('INSERT', 'CREATE')
3388       AND p_x_header_rec.operation = 'UPDATE'
3389       THEN
3390       Begin
3391          p_x_header_payment_tbl(I).header_id    := l_header_id;
3392          IF l_debug_level  > 0 THEN
3393              oe_debug_pub.add(  'NEW PAYMENT FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_payment_TBL ( I ) .HEADER_ID ) ) ;
3394          END IF;
3395 
3396          SELECT 1 into l_count
3397            FROM oe_payments
3398           WHERE header_id           = p_x_header_rec.header_id
3399             AND line_id             IS NULL
3400             AND orig_sys_payment_ref =
3401                    p_x_header_payment_tbl(I).orig_sys_payment_ref
3402             AND rownum                < 2;
3403 
3404          IF l_debug_level  > 0 THEN
3405              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDR PAYMENT WITH THE SAME HEADER_ID AND ORIG_SYS_PAYMENT_REF... ' ) ;
3406          END IF;
3407          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3408          OE_MSG_PUB.Add;
3409          p_return_status := FND_API.G_RET_STS_ERROR;
3410       Exception
3411         When no_data_found then
3412           IF l_debug_level  > 0 THEN
3413               oe_debug_pub.add(  'VALID HEADER LEVEL PAYMENT FOR INSERT' ) ;
3414           END IF;
3415         When others then
3416          IF l_debug_level  > 0 THEN
3417              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PAYMENT... ' ) ;
3418          END IF;
3419          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3420          OE_MSG_PUB.Add;
3421          p_return_status := FND_API.G_RET_STS_ERROR;
3422 
3423       End;
3424       END IF; -- Insert, Create Operation
3425 
3426       IF  p_x_header_payment_tbl(I).operation IN ('UPDATE','DELETE')
3427       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
3428       THEN
3429       Begin
3430          p_x_header_payment_tbl(I).header_id    := l_header_id;
3431          IF l_debug_level  > 0 THEN
3432              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_payment_TBL ( I ) .HEADER_ID ) ) ;
3433          END IF;
3434          IF l_debug_level  > 0 THEN
3435              oe_debug_pub.add(  'payment REF: '||P_X_HEADER_payment_TBL ( I ) .ORIG_SYS_PAYMENT_REF ) ;
3436          END IF;
3437          SELECT header_id
3438            INTO l_header_id
3439            FROM oe_payments
3440           WHERE header_id             = l_header_id
3441             AND line_id             IS NULL
3442             AND orig_sys_payment_ref =
3443                 p_x_header_payment_tbl(I).orig_sys_payment_ref;
3444 
3445 /* can take these 2 out, making sure the correct values */
3446          p_x_header_payment_tbl(I).header_id := l_header_id;
3447          p_x_header_payment_tbl(I).line_id := NULL;
3448 
3449          IF l_debug_level  > 0 THEN
3450              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_payment_TBL ( I ) .HEADER_ID ) ) ;
3451          END IF;
3452          IF l_debug_level  > 0 THEN
3453              oe_debug_pub.add(  'header payment ref: '||P_X_HEADER_payment_TBL ( I ) .orig_sys_payment_ref ) ;
3454          END IF;
3455 
3456       Exception
3457         When no_data_found then
3458           IF l_debug_level  > 0 THEN
3459               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING ORDER BUT THAT ORDER DOES NOT EXIST... ' ) ;
3460           END IF;
3461           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3462           OE_MSG_PUB.Add;
3463           p_return_status := FND_API.G_RET_STS_ERROR;
3464         When others then
3465          IF l_debug_level  > 0 THEN
3466              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HEADER LEVEL payment ... ' ) ;
3467          END IF;
3468          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3469          OE_MSG_PUB.Add;
3470          p_return_status := FND_API.G_RET_STS_ERROR;
3471       End;
3472       End IF; -- Update and Delete operation
3473    END LOOP; -- header payment
3474 -- aksingh(10/11/2000) this is in process of being coded upto this point
3475 
3476 -- end of multiple payments: header payment.
3477 
3478    l_line_count := 0;
3479    l_counter := 1;
3480    l_counter_memory := 1;
3481 
3482    FOR I in 1..p_x_line_tbl.count
3483    LOOP --{
3484 /* -----------------------------------------------------------
3485       Set message context for the line
3486    -----------------------------------------------------------
3487 */
3488       l_line_id         := NULL;
3489       l_line_number     := NULL;
3490       l_shipment_number := NULL;
3491       l_option_number   := NULL;
3492       l_price_adjustment_id := NULL;
3493       l_sales_credit_id := NULL;
3494       l_error_code      := NULL;
3495       l_error_flag      := NULL;
3496       l_error_message   := NULL;
3497       l_cho_unit_selling_price := NULL;
3498 
3499       IF p_x_line_tbl(I).org_id <> FND_API.G_MISS_NUM then
3500          l_org_id := p_x_line_tbl(I).org_id;
3501       ELSIF p_x_header_rec.ORG_ID <> FND_API.G_MISS_NUM then
3502             l_org_id := p_x_header_rec.org_id;
3503       ELSE
3504             l_org_id := mo_global.get_current_org_id;
3505       END IF;
3506 
3507       l_line_count := l_line_count + 1;
3508 
3509       IF l_debug_level  > 0 THEN
3510           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR THE LINE' ) ;
3511       END IF;
3512 
3513       OE_MSG_PUB.set_msg_context(
3514          p_entity_code                => 'LINE'
3515         ,p_entity_ref                 => null
3516         ,p_entity_id                  => null
3517         ,p_header_id                  => p_x_header_rec.header_id
3518         ,p_line_id                    => p_x_line_tbl(I).line_id
3519 --      ,p_batch_request_id           => p_x_header_rec.request_id
3520         ,p_order_source_id            => p_x_header_rec.order_source_id
3521         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
3522         ,p_change_sequence            => p_x_header_rec.change_sequence
3523         ,p_orig_sys_document_line_ref => p_x_line_tbl(I).orig_sys_line_ref
3524         ,p_orig_sys_shipment_ref      => p_x_line_tbl(I).orig_sys_shipment_ref
3525         ,p_source_document_type_id    => null
3526         ,p_source_document_id         => null
3527         ,p_source_document_line_id    => null
3528         ,p_attribute_code             => null
3529         ,p_constraint_id              => null
3530         );
3531 
3532 /* -----------------------------------------------------------
3533       Validate orig sys line ref
3534    -----------------------------------------------------------
3535 */
3536       IF l_debug_level  > 0 THEN
3537           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_LINE_REF' ) ;
3538       END IF;
3539 
3540       IF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3541          G_IMPORT_SHIPMENTS = 'YES' THEN
3542         IF p_x_line_tbl(I).orig_sys_line_ref     = FND_API.G_MISS_CHAR AND
3543            p_x_line_tbl(I).orig_sys_shipment_ref = FND_API.G_MISS_CHAR
3544         THEN
3545           IF l_debug_level  > 0 THEN
3546               oe_debug_pub.add(  'INVALID ORIG_SYS_LINE_REF... ' ) ;
3547           END IF;
3548           FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LINE_REF');
3549           OE_MSG_PUB.Add;
3550           p_return_status := FND_API.G_RET_STS_ERROR;
3551         END IF;
3552       ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3553             G_IMPORT_SHIPMENTS = 'NO' THEN
3554         IF p_x_line_tbl(I).orig_sys_line_ref     = FND_API.G_MISS_CHAR THEN
3555           IF l_debug_level  > 0 THEN
3556               oe_debug_pub.add(  'INVALID ORIG_SYS_LINE_REF... ' ) ;
3557           END IF;
3558           FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LINE_REF');
3559           OE_MSG_PUB.Add;
3560           p_return_status := FND_API.G_RET_STS_ERROR;
3561         END IF;
3562       ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL < '110508' THEN
3563         IF p_x_line_tbl(I).orig_sys_line_ref     = FND_API.G_MISS_CHAR THEN
3564           IF l_debug_level  > 0 THEN
3565               oe_debug_pub.add(  'INVALID ORIG_SYS_LINE_REF... ' ) ;
3566           END IF;
3567           FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LINE_REF');
3568           OE_MSG_PUB.Add;
3569           p_return_status := FND_API.G_RET_STS_ERROR;
3570         END IF;
3571       END IF;
3572 
3573 /* -----------------------------------------------------------
3574       Validate Ordered quantity uom2 (OPM bug 3457463)
3575    -----------------------------------------------------------
3576       If this is a process line, load the item details from cache and validate
3577   -----------------------------------------------------------
3578 */
3579 
3580    OPEN c_item(   	   p_x_line_tbl(I).ship_from_org_id,
3581                    p_x_line_tbl(I).inventory_item_id
3582                     );
3583                FETCH c_item
3584                 INTO   l_tracking_quantity_ind,
3585                        l_secondary_uom_code ,
3586                        l_secondary_default_ind
3587 	               ;
3588 
3589 
3590                IF c_item%NOTFOUND THEN
3591 		    l_tracking_quantity_ind := 'P';
3592 	            l_secondary_uom_code := NULL;
3593 	            l_secondary_default_ind := null;
3594 
3595 	       END IF;
3596 
3597     Close c_item;
3598 
3599 
3600 
3601 --IF oe_line_util.Process_Characteristics INVCONV
3602 --  (p_x_line_tbl(I).inventory_item_id,p_x_line_tbl(I).ship_from_org_id,l_item_rec) THEN
3603 
3604    IF l_debug_level  > 0 THEN
3605          oe_debug_pub.add(  'BEFORE VALIDATING ORDERED_QUANTITY_UOM2' ) ;
3606    END IF;
3607    /*oe_debug_pub.add('PROCESS ' ) ;
3608    oe_debug_pub.ADD(' dual ind : '|| l_item_rec.dualum_ind,1);
3609    oe_debug_pub.ADD(' l_item_rec.opm_item_um2 : '|| l_item_rec.opm_item_um2,1);
3610    oe_debug_pub.ADD(' ordered_quantity_uom2 : '|| p_x_line_tbl(I).ordered_quantity_uom2,1); */
3611 
3612 
3613   --IF l_item_rec.dualum_ind not in (1,2,3) THEN
3614   IF l_tracking_quantity_ind <> 'PS' then --  INVCONV
3615 
3616     oe_debug_pub.add('Primary and Secondary -  tracking_quantity_ind <> PS', 2);
3617 
3618     IF ( p_x_line_tbl(I).ordered_quantity_uom2 IS NOT NULL
3619      AND p_x_line_tbl(I).ordered_quantity_uom2 <> FND_API.G_MISS_CHAR ) THEN
3620       	  --oe_debug_pub.add(  'OPM INVALID ordered_quantity_uom2 - should not be provided... ' ) ;
3621           FND_MESSAGE.SET_NAME('INV','INV_SECONDARY_UOM_NOT_REQUIRED'); -- INVCONV
3622           OE_MSG_PUB.Add;
3623           p_return_status := FND_API.G_RET_STS_ERROR;
3624           IF l_debug_level  > 0 THEN
3625                oe_debug_pub.add(  'INVALID ORDERED_QUANTITY_UOM2... should not be provided' ) ;
3626           END IF;
3627 
3628     END IF; --  IF ( p_x_line_tbl(I).ordered_quantity_uom2 <> NULL
3629 
3630   ELSIF l_tracking_quantity_ind = 'PS' then --  INVCONV
3631 	   IF ( (  p_x_line_tbl(I).ordered_quantity_uom2 IS NOT NULL
3632 	   AND p_x_line_tbl(I).ordered_quantity_uom2 <> FND_API.G_MISS_CHAR )
3633            AND p_x_line_tbl(I).ordered_quantity_uom2 <> l_secondary_uom_code ) THEN -- INVCONV
3634       	     FND_MESSAGE.SET_NAME('PO','PO_INCORRECT_SECONDARY_UOM');  -- INVCONV
3635              OE_MSG_PUB.Add;
3636              p_return_status := FND_API.G_RET_STS_ERROR;
3637              IF l_debug_level  > 0 THEN
3638                oe_debug_pub.add(  'INVALID ORDERED_QUANTITY_UOM2... does not match mtl_system_items' ) ;
3639              END IF;
3640 
3641            END IF;   --  IF ( p_x_line_tbl(I).ordered_quantity_uom2 <> NULL
3642     END IF;  --IF l_tracking_quantity_ind <> 'PS' then --  INVCONV
3643 -- END IF; -- IF oe_line_util.Process_Characteristics invconv
3644 
3645 
3646 -- OPM END
3647 
3648 
3649 
3650 
3651 
3652 
3653 
3654       -- Validate the quantity sent on the 3a9
3655      If p_x_line_tbl(I).order_source_id = OE_Acknowledgment_Pub.G_XML_ORDER_SOURCE_ID And
3656          p_x_line_tbl(I).xml_transaction_type_code = OE_Acknowledgment_Pub.G_TRANSACTION_CPO Then
3657 	If  p_x_line_tbl(I).ordered_quantity < 0 Then
3658              IF l_debug_level  > 0 THEN
3659                  oe_debug_pub.add(  'INVALID QUANTITY ON 3A9' ) ;
3660              END IF;
3661              FND_MESSAGE.SET_NAME('ONT','OE_OI_INVALID_QTY_3A9');
3662              OE_MSG_PUB.Add;
3663              p_return_status := FND_API.G_RET_STS_ERROR;
3664         Else
3665 
3666            Begin
3667              Select ordered_quantity
3668              Into l_existing_qty
3669              From Oe_Order_Lines
3670              Where orig_sys_document_ref = p_x_line_tbl(I).orig_sys_document_ref
3671              And order_source_id       = p_x_line_tbl(I).order_source_id
3672              And orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref
3673              And orig_sys_shipment_ref = p_x_line_tbl(I).orig_sys_shipment_ref
3674              And decode(l_customer_key_profile, 'Y',
3675 		 nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
3676                = decode(l_customer_key_profile, 'Y',
3677 		 nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
3678 
3679           If l_existing_qty < p_x_line_tbl(I).ordered_quantity Then
3680              IF l_debug_level  > 0 THEN
3681                  oe_debug_pub.add(  'INVALID QUANTITY ON 3A9' ) ;
3682              END IF;
3683              FND_MESSAGE.SET_NAME('ONT','OE_OI_INVALID_QTY_3A9');
3684              OE_MSG_PUB.Add;
3685              p_return_status := FND_API.G_RET_STS_ERROR;
3686           End If;
3687           Exception
3688              When Others Then
3689            p_return_status := FND_API.G_RET_STS_ERROR;
3690           End;
3691         End If;
3692     End If;
3693 
3694 /* -----------------------------------------------------------
3695       Validate line operation code
3696    -----------------------------------------------------------
3697 */
3698 				IF l_debug_level  > 0 THEN
3699 				    oe_debug_pub.add(  'BEFORE VALIDATING LINE OPERATION CODE: '|| P_X_LINE_TBL ( I ) .OPERATION ) ;
3700 				END IF;
3701 
3702       IF (p_x_header_rec.operation      IN ('INSERT','CREATE') AND
3703           p_x_line_tbl(I).operation NOT IN ('INSERT','CREATE'))OR
3704          (p_x_header_rec.operation      IN ('UPDATE') AND
3705           p_x_line_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE'))OR
3706          (p_x_header_rec.operation      IN ('DELETE') AND
3707           p_x_line_tbl(I).operation NOT IN ('DELETE'))
3708       THEN
3709 	 IF l_debug_level  > 0 THEN
3710 	     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...' ) ;
3711 	 END IF;
3712 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3713          OE_MSG_PUB.Add;
3714 	 p_return_status := FND_API.G_RET_STS_ERROR;
3715       END IF;
3716 
3717 /* -----------------------------------------------------------
3718       Derive Requisition Line Id for Internal Orders
3719    -----------------------------------------------------------
3720 */
3721       IF p_x_header_rec.order_source_id = OE_GLOBALS.G_ORDER_SOURCE_INTERNAL
3722         AND p_x_line_tbl(I).operation IN ('INSERT','CREATE','UPDATE','DELETE')
3723       THEN
3724         BEGIN
3725          IF l_debug_level  > 0 THEN
3726              oe_debug_pub.add(  'BEFORE DERIVING REQ LINE ID FOR INTERNAL ORDERS' ) ;
3727          END IF;
3728 
3729 	    p_x_line_tbl(I).source_document_type_id :=
3730 				OE_GLOBALS.G_ORDER_SOURCE_INTERNAL;
3731 	    p_x_line_tbl(I).source_document_id := p_x_header_rec.source_document_id;
3732 	    p_x_line_tbl(I).orig_sys_document_ref := p_x_header_rec.orig_sys_document_ref;
3733 	    p_x_line_tbl(I).sold_to_org_id := p_x_header_rec.sold_to_org_id;
3734 
3735 	  --  SELECT requisition_line_id
3736 	  --  INTO p_line_tbl(I).source_document_line_id
3737 	  --  FROM po_requisition_lines
3738 	  --  WHERE requisition_header_id = p_header_rec.source_document_id
3739        --  AND line_num = p_line_tbl(I).orig_sys_line_ref;
3740 
3741        --  Re-Assigning the ID to OM ID column
3742        p_x_line_tbl(I).source_document_line_id := p_x_line_tbl(I).orig_sys_line_ref;
3743 
3744        --  New Select for Multi-Org to get the reference columns
3745 
3746            l_po_dest_org_id := NULL;
3747 
3748            SELECT line_num, destination_organization_id
3749            INTO   p_x_line_tbl(I).orig_sys_line_ref, l_po_dest_org_id
3750            FROM   po_requisition_lines_all
3751            WHERE  requisition_header_id = p_x_header_rec.source_document_id
3752            AND    requisition_line_id = p_x_line_tbl(I).source_document_line_id;
3753 
3754            l_intransit_time := 0;
3755            IF l_po_dest_org_id is not null THEN
3756            BEGIN
3757               SELECT intransit_time * -1
3758               INTO   l_intransit_time
3759               FROM   mtl_interorg_ship_methods
3760               WHERE  from_organization_id = p_x_line_tbl(I).ship_from_org_id
3761               AND    to_organization_id = l_po_dest_org_id
3762               AND    nvl(default_flag,1) = 1;
3763               IF l_debug_level  > 0 THEN
3764                   oe_debug_pub.add(  'IN TRANSIT ' || L_INTRANSIT_TIME ) ;
3765               END IF;
3766            EXCEPTION
3767               WHEN OTHERS THEN
3768                IF l_debug_level  > 0 THEN
3769                    oe_debug_pub.add(  'IN TRANSIT IS SET TO 0' ) ;
3770                END IF;
3771                l_intransit_time := 0;
3772            END;
3773            END IF;
3774 
3775            -- Call to MRP package api Date_Offset for getting new
3776            -- schedule ship date
3777            IF l_debug_level  > 0 THEN
3778                oe_debug_pub.add(  'BEFORE CHECKING THE REQUEST_DATE VALUE' ) ;
3779            END IF;
3780            -- bug 1727334, do not call if request_date is MISS
3781 
3782            -- This code is going to be here, but it should be removed
3783            -- later when family pack H or I become mandatory
3784            -- I am leaving it here so, it will work as it, if customer
3785            -- does not have PO's patch for not passing the
3786            -- schedule ship date.
3787            -- Bug 1606316, fix (see later what fix), this is redundant
3788            -- as explained above
3789 
3790            IF p_x_line_tbl(I).request_date <> FND_API.G_MISS_DATE
3791            THEN
3792              IF l_debug_level  > 0 THEN
3793                  oe_debug_pub.add(  'BEFORE CALL TO DATE OFFSET API' ) ;
3794              END IF;
3795 
3796            -- bug 1675148, call changed, now passing request_date
3797            -- previously it was schedule_ship_date(!)
3798              l_new_schedule_ship_date := mrp_calendar.date_offset
3799                (arg_org_id => l_po_dest_org_id,
3800                 arg_bucket => 1,
3801                 arg_date   => p_x_line_tbl(I).request_date,
3802                 arg_offset => l_intransit_time
3803                 );
3804            END IF;
3805 
3806               IF l_debug_level  > 0 THEN
3807                   oe_debug_pub.add(  'OLD SCHEDULE_SHIP_DATE ' || P_X_LINE_TBL ( I ) .SCHEDULE_SHIP_DATE ) ;
3808               END IF;
3809            -- { Start of bug fix 1606316, If condition to check if
3810            -- schedule_ship_date is not passed by PO means it is
3811            -- MISS_DATE, do not assign the new found value of
3812            -- l_new_schedule_ship_date in above call. Which will
3813            -- be removed once family pack H/I become mandatory
3814            If p_x_line_tbl(I).schedule_ship_date <> FND_API.G_MISS_DATE Then
3815               p_x_line_tbl(I).schedule_ship_date :=
3816               nvl(l_new_schedule_ship_date, p_x_line_tbl(I).schedule_ship_date);
3817               IF l_debug_level  > 0 THEN
3818                   oe_debug_pub.add(  'NEW SCHEDULE_SHIP_DATE ' || P_X_LINE_TBL ( I ) .SCHEDULE_SHIP_DATE ) ;
3819               END IF;
3820            End If;
3821            -- End of bug fix 1606316, the change is adding of IF, that is it}
3822 
3823         EXCEPTION
3824         WHEN OTHERS THEN
3825 	     IF l_debug_level  > 0 THEN
3826 	         oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
3827 	     END IF;
3828 
3829           IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3830 	     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3831              OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Req_Line_Id_derivation');
3832           END IF;
3833         END;
3834       END IF;
3835 
3836      -- { Start of the Code for the Add Customer Functionality
3837 
3838      -- {Check for order_import_add_customers system parameter
3839      -- if any ref data is passed and the parameter is set
3840      -- then call add customers functionality.
3841      --{Start of If for calling add customers
3842      If p_line_customer_tbl(I).Orig_Ship_Address_Ref IS NOT NULL Or
3843         p_line_customer_tbl(I).Orig_Bill_Address_Ref IS NOT NULL Or
3844         p_line_customer_tbl(I).Orig_Deliver_Address_Ref IS NOT NULL Or
3845         p_line_customer_tbl(I).Ship_to_Contact_Ref IS NOT NULL Or
3846         p_line_customer_tbl(I).Bill_to_Contact_Ref IS NOT NULL Or
3847         p_line_customer_tbl(I).Deliver_to_Contact_Ref IS NOT NULL
3848      Then
3849        --{Start of If for checking add customers parameter
3850        If G_ONT_ADD_CUSTOMER In ('Y','P') Then
3851           l_line_rec := p_x_line_tbl(I);
3852           l_line_customer_rec := p_line_customer_tbl(I);
3853           Create_New_Cust_Info(
3854                  p_customer_rec   => l_line_customer_rec,
3855                  p_x_header_rec   => p_x_header_rec,
3856                  p_x_line_rec     => l_line_rec,
3857                  p_record_type    => 'LINE',
3858                  x_return_status  => l_return_status);
3859 
3860           IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
3861           AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
3862 			          FND_API.G_RET_STS_UNEXP_ERROR)
3863           THEN
3864             p_return_status := l_return_status;
3865           END IF;
3866           p_x_line_tbl(I)  := l_line_rec;
3867        Else
3868          IF l_debug_level  > 0 THEN
3869              oe_debug_pub.add(  'REF DATA PASSED BUT PARAMETER NOT SET' ) ;
3870          END IF;
3871          fnd_message.set_name('ONT','ONT_OI_INL_SET_PARAMETER');
3872          fnd_message.set_token('TYPE', 'Customers, Addresses or Contacts');
3873          oe_msg_pub.add;
3874          p_return_status := FND_API.G_RET_STS_ERROR;
3875        End If;
3876        -- End of If for checking add customers parameter}
3877      End If;
3878      -- End of If for calling add customers}
3879 
3880      -- End of the Code for the Add Customer Functionality }
3881 
3882       BEGIN
3883       IF p_x_line_tbl(I).operation IN ('INSERT','CREATE')
3884 -- aksingh(10/11/2000) this is in process of being coded
3885       AND p_x_header_rec.operation = 'UPDATE'
3886       THEN
3887             p_x_line_tbl(I).header_id    := l_header_id;
3888 
3889          IF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3890             G_IMPORT_SHIPMENTS = 'YES' THEN
3891 
3892             IF (p_x_line_tbl(I).split_from_line_ref IS NOT NULL) AND
3893                (p_x_line_tbl(I).split_from_line_ref <> FND_API.G_MISS_CHAR) AND
3894                (p_x_line_tbl(I).split_from_shipment_ref IS NOT NULL) AND
3895                (p_x_line_tbl(I).split_from_shipment_ref <> FND_API.G_MISS_CHAR)
3896             THEN
3897                 IF l_debug_level  > 0 THEN
3898                     oe_debug_pub.add(  'SPLIT LINE FOR LINE REFERENCE: '|| P_X_LINE_TBL ( I ) .SPLIT_FROM_LINE_REF ) ;
3899                 END IF;
3900               l_rec_found := FALSE;
3901               BEGIN
3902               FOR Z in 1..p_x_line_tbl.count
3903                LOOP
3904                  IF (p_x_line_tbl(Z).orig_sys_line_ref = p_x_line_tbl(I).split_from_line_ref) AND
3905                     (p_x_line_tbl(Z).orig_sys_shipment_ref = p_x_line_tbl(I).split_from_shipment_ref)
3906                  THEN
3907                    l_rec_found := TRUE;
3908                    p_x_line_tbl(Z).split_action_code := 'SPLIT';
3909                    p_x_line_tbl(Z).split_by := 'USER';
3910                    p_x_line_tbl(I).split_from_line_id :=
3911                        p_x_line_tbl(Z).line_id;
3912                  END IF;
3913                  IF l_rec_found THEN
3914                     raise e_break;
3915                  END IF;
3916                END LOOP;
3917               EXCEPTION
3918                 WHEN e_break THEN
3919                   NULL;
3920               END;
3921               IF NOT l_rec_found THEN
3922                 IF l_debug_level  > 0 THEN
3923                     oe_debug_pub.add(  'BSADRI NO SPLIT FROM FOUND' ) ;
3924                 END IF;
3925                 FND_MESSAGE.SET_NAME('ONT','OE_PC_SPLIT_VIOLATION');
3926                 FND_MESSAGE.SET_TOKEN('OBJECT',
3927                      p_x_line_tbl(I).split_from_line_ref);
3928                 FND_MESSAGE.SET_TOKEN('REASON',
3929                      'Could not find the reference line');
3930                 OE_MSG_PUB.Add;
3931                 p_return_status := FND_API.G_RET_STS_ERROR;
3932               END IF;
3933             END IF;
3934            BEGIN
3935             IF l_debug_level  > 0 THEN
3936                 oe_debug_pub.add(  'NEW LINE FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
3937             END IF;
3938             SELECT 1 into l_count
3939             FROM oe_order_lines
3940             WHERE header_id             = l_header_id
3941             AND orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref
3942             AND orig_sys_shipment_ref = p_x_line_tbl(I).orig_sys_shipment_ref
3943             AND decode(l_customer_key_profile, 'Y',
3944                 nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
3945               = decode(l_customer_key_profile, 'Y',
3946 		nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
3947 
3948 -- aksingh(10/11/2000) this is in process of being coded upto here
3949                IF l_debug_level  > 0 THEN
3950                    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... ' ) ;
3951                END IF;
3952              FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3953              OE_MSG_PUB.Add;
3954              p_return_status := FND_API.G_RET_STS_ERROR;
3955            Exception
3956            When no_data_found then
3957              IF l_debug_level  > 0 THEN
3958                  oe_debug_pub.add(  'VALID ORDER LINE FOR INSERT' ) ;
3959              END IF;
3960            When others then
3961              IF l_debug_level  > 0 THEN
3962                  oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT A NEW LINE... ' ) ;
3963              END IF;
3964             FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
3965             OE_MSG_PUB.Add;
3966             p_return_status := FND_API.G_RET_STS_ERROR;
3967           End;
3968         ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
3969               G_IMPORT_SHIPMENTS = 'NO' THEN
3970           IF (p_x_line_tbl(I).split_from_line_ref IS NOT NULL) AND
3971                (p_x_line_tbl(I).split_from_line_ref <> FND_API.G_MISS_CHAR)
3972             THEN
3973                 IF l_debug_level  > 0 THEN
3974                     oe_debug_pub.add(  'SPLIT LINE FOR LINE REFERENCE: '|| P_X_LINE_TBL ( I ) .SPLIT_FROM_LINE_REF ) ;
3975                 END IF;
3976               l_rec_found := FALSE;
3977               BEGIN
3978               FOR Z in 1..p_x_line_tbl.count
3979                LOOP
3980                  IF (p_x_line_tbl(Z).orig_sys_line_ref = p_x_line_tbl(I).split_from_line_ref) THEN
3981                    l_rec_found := TRUE;
3982                    p_x_line_tbl(Z).split_action_code := 'SPLIT';
3983                    p_x_line_tbl(Z).split_by := 'USER';
3984                    p_x_line_tbl(I).split_from_line_id :=
3985                        p_x_line_tbl(Z).line_id;
3986                  END IF;
3987                  IF l_rec_found THEN
3988                     raise e_break;
3989                  END IF;
3990                END LOOP;
3991               EXCEPTION
3992                 WHEN e_break THEN
3993                   NULL;
3994               END;
3995               IF NOT l_rec_found THEN
3996                 IF l_debug_level  > 0 THEN
3997                     oe_debug_pub.add(  'BSADRI NO SPLIT FROM FOUND' ) ;
3998                 END IF;
3999                 FND_MESSAGE.SET_NAME('ONT','OE_PC_SPLIT_VIOLATION');
4000                 FND_MESSAGE.SET_TOKEN('OBJECT',
4001                      p_x_line_tbl(I).split_from_line_ref);
4002                 FND_MESSAGE.SET_TOKEN('REASON',
4003                      'Could not find the reference line');
4004                 OE_MSG_PUB.Add;
4005                 p_return_status := FND_API.G_RET_STS_ERROR;
4006               END IF;
4007             END IF;
4008             BEGIN
4009             IF l_debug_level  > 0 THEN
4010                 oe_debug_pub.add(  'NEW LINE FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
4011             END IF;
4012             SELECT 1 into l_count
4013             FROM oe_order_lines
4014             WHERE header_id             = l_header_id
4015             AND orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref
4016             AND decode(l_customer_key_profile, 'Y',
4017 		nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
4018 	      = decode(l_customer_key_profile, 'Y',
4019 		nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
4020 
4021 -- aksingh(10/11/2000) this is in process of being coded upto here
4022                IF l_debug_level  > 0 THEN
4023                    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. .. ' ) ;
4024                END IF;
4025              FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4026              OE_MSG_PUB.Add;
4027              p_return_status := FND_API.G_RET_STS_ERROR;
4028            Exception
4029            When no_data_found then
4030              IF l_debug_level  > 0 THEN
4031                  oe_debug_pub.add(  'VALID ORDER LINE FOR INSERT' ) ;
4032              END IF;
4033            When others then
4034              IF l_debug_level  > 0 THEN
4035                  oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT A NEW LINE... ' ) ;
4036              END IF;
4037             FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4038             OE_MSG_PUB.Add;
4039             p_return_status := FND_API.G_RET_STS_ERROR;
4040           End;
4041          ELSIF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL < '110508' THEN
4042           IF (p_x_line_tbl(I).split_from_line_ref IS NOT NULL) AND
4043                (p_x_line_tbl(I).split_from_line_ref <> FND_API.G_MISS_CHAR)
4044             THEN
4045                 IF l_debug_level  > 0 THEN
4046                     oe_debug_pub.add(  'SPLIT LINE FOR LINE REFERENCE: '|| P_X_LINE_TBL ( I ) .SPLIT_FROM_LINE_REF ) ;
4047                 END IF;
4048               l_rec_found := FALSE;
4049               BEGIN
4050               FOR Z in 1..p_x_line_tbl.count
4051                LOOP
4052                  IF (p_x_line_tbl(Z).orig_sys_line_ref = p_x_line_tbl(I).split_from_line_ref) THEN
4053                    l_rec_found := TRUE;
4054                    p_x_line_tbl(Z).split_action_code := 'SPLIT';
4055                    p_x_line_tbl(Z).split_by := 'USER';
4056                    p_x_line_tbl(I).split_from_line_id :=
4057                        p_x_line_tbl(Z).line_id;
4058                  END IF;
4059                  IF l_rec_found THEN
4060                     raise e_break;
4061                  END IF;
4062                END LOOP;
4063               EXCEPTION
4064                 WHEN e_break THEN
4065                   NULL;
4066               END;
4067               IF NOT l_rec_found THEN
4068                 IF l_debug_level  > 0 THEN
4069                     oe_debug_pub.add(  'BSADRI NO SPLIT FROM FOUND' ) ;
4070                 END IF;
4071                 FND_MESSAGE.SET_NAME('ONT','OE_PC_SPLIT_VIOLATION');
4072                 FND_MESSAGE.SET_TOKEN('OBJECT',
4073                      p_x_line_tbl(I).split_from_line_ref);
4074                 FND_MESSAGE.SET_TOKEN('REASON',
4075                      'Could not find the reference line');
4076                 OE_MSG_PUB.Add;
4077                 p_return_status := FND_API.G_RET_STS_ERROR;
4078               END IF;
4079             END IF;
4080             BEGIN
4081             IF l_debug_level  > 0 THEN
4082                 oe_debug_pub.add(  'NEW LINE FOR THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
4083             END IF;
4084             SELECT 1 into l_count
4085             FROM oe_order_lines
4086             WHERE header_id             = l_header_id
4087             AND orig_sys_line_ref     = p_x_line_tbl(I).orig_sys_line_ref;
4088 
4089 -- aksingh(10/11/2000) this is in process of being coded upto here
4090                IF l_debug_level  > 0 THEN
4091                    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. .. ' ) ;
4092                END IF;
4093              FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4094              OE_MSG_PUB.Add;
4095              p_return_status := FND_API.G_RET_STS_ERROR;
4096            Exception
4097            When no_data_found then
4098              IF l_debug_level  > 0 THEN
4099                  oe_debug_pub.add(  'VALID ORDER LINE FOR INSERT' ) ;
4100              END IF;
4101            When others then
4102              IF l_debug_level  > 0 THEN
4103                  oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO INSERT A NEW LINE... ' ) ;
4104              END IF;
4105             FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4106             OE_MSG_PUB.Add;
4107             p_return_status := FND_API.G_RET_STS_ERROR;
4108           End;
4109 
4110          END IF;
4111 
4112       ELSIF p_x_line_tbl(I).operation IN ('UPDATE','DELETE')
4113       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
4114       THEN
4115 
4116 
4117                 IF l_debug_level  > 0 THEN
4118               oe_debug_pub.add(  'L_HEADER_ID: ' || l_header_id) ;
4119               oe_debug_pub.add(  'P_X_LINE_TBL(I).ORIG_SYS_LINE_REF' || p_x_line_tbl(I).orig_sys_line_ref) ;
4120               oe_debug_pub.add(  'P_X_LINE_TBL(I).ORIG_SYS_SHIPMENT_REF' || p_x_line_tbl(I).orig_sys_shipment_ref);
4121               oe_debug_pub.add(  'P_X_LINE_TBL(I).SOLD_TO_ORG_ID' || p_x_line_tbl(I).sold_to_org_id);
4122 
4123               END IF;
4124 
4125 
4126         IF OE_CODE_CONTROL.GET_CODE_RELEASE_LEVEL >= '110508' AND
4127            G_IMPORT_SHIPMENTS = 'YES' THEN
4128 
4129                 IF l_debug_level  > 0 THEN
4130               oe_debug_pub.add(  'G_IMPORT_SHIPMENTS WAS YES ' ) ;
4131               END IF;
4132 
4133 	Begin
4134               l_c_change_sequence := NULL;
4135 
4136           SELECT line_id, line_number, shipment_number,
4137                    option_number, change_sequence, unit_selling_price
4138               INTO l_line_id, l_line_number, l_shipment_number,
4139                    l_option_number, l_c_change_sequence, l_cho_unit_selling_price
4140               FROM oe_order_lines
4141              WHERE header_id          = l_header_id
4142                AND orig_sys_line_ref  = p_x_line_tbl(I).orig_sys_line_ref
4143                AND orig_sys_shipment_ref = p_x_line_tbl(I).orig_sys_shipment_ref
4144                AND (sold_to_org_id is NULL OR
4145 		   decode(l_customer_key_profile, 'Y',
4146 		   nvl(sold_to_org_id, FND_API.G_MISS_NUM), 1)
4147                  = decode(l_customer_key_profile, 'Y',
4148 		   nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1));
4149 
4150             p_x_line_tbl(I).header_id       := l_header_id;
4151             p_x_line_tbl(I).line_id         := l_line_id;
4152             p_x_line_tbl(I).line_number     := l_line_number;
4153             p_x_line_tbl(I).shipment_number := l_shipment_number;
4154             p_x_line_tbl(I).option_number   := l_option_number;
4155 
4156          Exception
4157             When no_data_found then
4158               IF l_debug_level  > 0 THEN
4159                   oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE BUT THAT LINE DOES NOT EXIST... ' ) ;
4160               END IF;
4161               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4162               OE_MSG_PUB.Add;
4163               p_return_status := FND_API.G_RET_STS_ERROR;
4164             When others then
4165               IF l_debug_level  > 0 THEN
4166                   oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINE ... ' ) ;
4167               END IF;
4168               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4169               OE_MSG_PUB.Add;
4170               p_return_status := FND_API.G_RET_STS_ERROR;
4171          End;
4172        ELSE
4173           Begin
4174             l_c_change_sequence := NULL;
4175             SELECT line_id, line_number, shipment_number,
4176                    option_number, change_sequence, unit_selling_price
4177               INTO l_line_id, l_line_number, l_shipment_number,
4178                    l_option_number, l_c_change_sequence, l_cho_unit_selling_price
4179               FROM oe_order_lines
4180              WHERE header_id          = l_header_id
4181                AND orig_sys_line_ref  = p_x_line_tbl(I).orig_sys_line_ref;
4182 
4183             p_x_line_tbl(I).header_id       := l_header_id;
4184             p_x_line_tbl(I).line_id         := l_line_id;
4185             p_x_line_tbl(I).line_number     := l_line_number;
4186             p_x_line_tbl(I).shipment_number := l_shipment_number;
4187             p_x_line_tbl(I).option_number   := l_option_number;
4188 
4189          Exception
4190             When no_data_found then
4191               IF l_debug_level  > 0 THEN
4192                   oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE BUT THAT LINE DOES NOT EXIST... ' ) ;
4193               END IF;
4194               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4195               OE_MSG_PUB.Add;
4196               p_return_status := FND_API.G_RET_STS_ERROR;
4197             When others then
4198               IF l_debug_level  > 0 THEN
4199                   oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINE ... ' ) ;
4200               END IF;
4201               FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4202               OE_MSG_PUB.Add;
4203               p_return_status := FND_API.G_RET_STS_ERROR;
4204          End;
4205        END IF;
4206 
4207         IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' THEN
4208            IF p_x_line_tbl(I).order_source_id = OE_Acknowledgment_Pub.G_XML_ORDER_SOURCE_ID AND
4209               p_x_line_tbl(I).xml_transaction_type_code = OE_Acknowledgment_Pub.G_TRANSACTION_CHO AND
4210               l_cso_response_profile = 'Y' AND
4211               p_x_line_tbl(I).cso_response_flag = 'Y' AND
4212               p_x_line_tbl(I).customer_item_net_price = FND_API.G_MISS_NUM  THEN
4213 
4214                  p_x_line_tbl(I).customer_item_net_price := l_cho_unit_selling_price;
4215                  IF l_debug_level > 0 THEN
4216                     oe_debug_pub.add('3A8 Response Customer_item_net_price ' || p_x_line_tbl(I).customer_item_net_price
4217                                    || ' Unit Selling Price ' || p_x_line_tbl(I).unit_selling_price);
4218                  END IF;
4219            END IF;
4220         END IF;
4221 
4222 
4223       ELSIF p_x_line_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')
4224       THEN
4225          IF l_debug_level  > 0 THEN
4226              oe_debug_pub.add(  'INVALID OPERATION CODE. NOT ONE OF INSERT , CREATE , UPDATE OR DELETE... ' ) ;
4227          END IF;
4228          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
4229          OE_MSG_PUB.Add;
4230          p_return_status := FND_API.G_RET_STS_ERROR;
4231 
4232       END IF;
4233 
4234       EXCEPTION
4235       WHEN OTHERS THEN
4236          IF l_debug_level  > 0 THEN
4237              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4238          END IF;
4239 
4240          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4241 	    p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4242             OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.header_operation_validation');
4243          END IF;
4244       END;
4245 
4246 /* -----------------------------------------------------------
4247       Validate item type code
4248    -----------------------------------------------------------
4249 */
4250       IF l_debug_level  > 0 THEN
4251           oe_debug_pub.add(  'BEFORE VALIDATING ITEM TYPE CODE' ) ;
4252       END IF;
4253 
4254       IF p_x_line_tbl(I).item_type_code <> FND_API.G_MISS_CHAR AND
4255          p_x_line_tbl(I).item_type_code NOT IN
4256        ('STANDARD','MODEL','CLASS','KIT','SERVICE','OPTION','INCLUDED','CONFIG')
4257       THEN
4258 	 IF l_debug_level  > 0 THEN
4259 	     oe_debug_pub.add(  'INVALID ITEM TYPE CODE... ' ) ;
4260 	 END IF;
4261 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ITEM_TYPE');
4262          OE_MSG_PUB.Add;
4263   	 p_return_status := FND_API.G_RET_STS_ERROR;
4264       END IF;
4265    -- { Start of derivation of the sold_to_org_id for Header/Line
4266    If p_x_header_rec.sold_to_org_id IS NOT NULL AND
4267       p_x_header_rec.sold_to_org_id <> FND_API.G_MISS_NUM
4268    Then
4269       If p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4270          p_x_line_tbl(I).sold_to_org_id IS NULL
4271       Then
4272          p_x_line_tbl(I).sold_to_org_id := p_x_header_rec.sold_to_org_id;
4273       End If;
4274    Else
4275     -- { Start Begin
4276     Begin
4277       IF (p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4278          p_x_line_tbl(I).sold_to_org_id IS NULL) AND
4279          ((p_x_line_val_tbl(I).sold_to_org <> FND_API.G_MISS_CHAR AND
4280          p_x_line_val_tbl(I).sold_to_org IS NOT NULL) OR
4281          (p_x_header_val_rec.customer_number <> FND_API.G_MISS_CHAR AND
4282          p_x_header_val_rec.customer_number IS NOT NULL) OR
4283          (p_x_header_val_rec.sold_to_org <> FND_API.G_MISS_CHAR AND
4284          p_x_header_val_rec.sold_to_org IS NOT NULL))
4285       THEN
4286         IF l_debug_level  > 0 THEN
4287             oe_debug_pub.add(  'BEFORE CALLING SOLD TO ORG ID' ) ;
4288         END IF;
4289         p_x_line_tbl(I).sold_to_org_id := oe_value_to_id.sold_to_org(
4290                         p_sold_to_org => nvl(p_x_header_val_rec.sold_to_org,
4291                                          p_x_line_val_tbl(I).sold_to_org),
4292                     p_customer_number => p_x_header_val_rec.customer_number);
4293         If p_x_header_rec.sold_to_org_id is NULL OR
4294            p_x_header_rec.sold_to_org_id = FND_API.G_MISS_NUM Then
4295            p_x_header_rec.sold_to_org_id := p_x_line_tbl(I).sold_to_org_id;
4296         End If;
4297 
4298         IF l_debug_level  > 0 THEN
4299             oe_debug_pub.add(  'AFTER SOLDTOORGID '|| P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ;
4300         END IF;
4301 
4302         IF (p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4303            p_x_line_tbl(I).sold_to_org_id IS NULL)
4304         THEN
4305         IF l_debug_level  > 0 THEN
4306             oe_debug_pub.add(  'SOLD TO ORG ID IS MISSING , AFTER CALL TO VALUE TO ID' ) ;
4307         END IF;
4308           FND_MESSAGE.SET_NAME('ONT','OE_INVALID_CUSTOMER_ID');
4309           OE_MSG_PUB.Add;
4310           p_return_status := FND_API.G_RET_STS_ERROR;
4311         END IF;
4312       END IF;
4313     Exception
4314       When others then
4315        IF l_debug_level  > 0 THEN
4316            oe_debug_pub.add(  'OTHERS EXCEPTION WHEN GETTING SOLD TO ORG ID IN OEXVIMSB... ' ) ;
4317        END IF;
4318        FND_MESSAGE.SET_NAME('ONT','OE_INVALID_CUSTOMER_ID');
4319        OE_MSG_PUB.Add;
4320        p_return_status := FND_API.G_RET_STS_ERROR;
4321     End;
4322     -- End Begin}
4323    End If;
4324    -- End of derivation of the sold_to_org_id for Header/Line }
4325 
4326    -- This initialization is done to avoid use of the old value for next
4327    -- loop
4328    l_inventory_item_id_int  := NULL;
4329    l_inventory_item_id_ord  := NULL;
4330    l_inventory_item_id_cust := NULL;
4331    l_inventory_item_id_gen  := NULL;
4332    --bug#4174961
4333    IF (p_x_line_tbl(I).inventory_item_id <>  FND_API.G_MISS_NUM AND
4334       p_x_line_tbl(I).inventory_item_id IS NOT NULL)
4335    THEN
4336     l_inventory_item_id_int  := p_x_line_tbl(I).inventory_item_id;
4337    END IF;
4338 
4339 -- Aksingh Adding code for the Item Derivation and Cross Referencing
4340 -- { Adding 11/14/2000 Start
4341    IF (p_x_line_val_tbl(I).inventory_item <> FND_API.G_MISS_CHAR AND
4342       p_x_line_val_tbl(I).inventory_item IS NOT NULL) AND
4343       (p_x_line_tbl(I).inventory_item_id =  FND_API.G_MISS_NUM OR
4344       p_x_line_tbl(I).inventory_item_id IS NULL)
4345    THEN
4346       BEGIN
4347          IF l_debug_level  > 0 THEN
4348              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT' ) ;
4349          END IF;
4350          SELECT inventory_item_id
4351          INTO  l_inventory_item_id_int
4352          FROM  mtl_system_items_vl
4353          WHERE concatenated_segments = p_x_line_val_tbl(I).inventory_item
4354          AND   customer_order_enabled_flag = 'Y'
4355          AND   bom_item_type in (1,2,4)
4356          AND   organization_id =
4357                oe_sys_parameters.Value('MASTER_ORGANIZATION_ID',l_org_id);
4358 
4359          p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_int;
4360 
4361       EXCEPTION
4362         WHEN NO_DATA_FOUND THEN
4363          IF l_debug_level  > 0 THEN
4364              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - NO_DATA' ) ;
4365          END IF;
4366         When too_many_rows then
4367          IF l_debug_level  > 0 THEN
4368              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - TOO_MANY' ) ;
4369          END IF;
4370          IF l_debug_level  > 0 THEN
4371              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4372          END IF;
4373          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4374 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4375            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4376          END IF;
4377 	   When others then
4378          IF l_debug_level  > 0 THEN
4379              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - OTHERS' ) ;
4380          END IF;
4381          IF l_debug_level  > 0 THEN
4382              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4383          END IF;
4384          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4385 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4386            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4387          END IF;
4388       END;
4389     END IF;
4390 --  Adding 11/14/2000 End }
4391 
4392  -- { Get inventory item id for the ordered_item or ordered_item_id
4393  IF (NVL(p_x_line_tbl(I).item_identifier_type,'INT') IN ('INT','CUST') OR
4394         p_x_line_tbl(I).item_identifier_type = FND_API.G_MISS_CHAR)
4395  THEN
4396    IF (p_x_line_tbl(I).ordered_item <> FND_API.G_MISS_CHAR AND
4397       p_x_line_tbl(I).ordered_item IS NOT NULL)
4398    THEN
4399       BEGIN
4400          IF l_debug_level  > 0 THEN
4401              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT WITH ORDERED_ITEM' ) ;
4402          END IF;
4403          SELECT inventory_item_id
4404          INTO  l_inventory_item_id_ord
4405          FROM  mtl_system_items_vl
4406          WHERE concatenated_segments = p_x_line_tbl(I).ordered_item
4407          AND   customer_order_enabled_flag = 'Y'
4408          AND   bom_item_type in (1,2,4)
4409          AND   organization_id =
4410                oe_sys_parameters.Value('MASTER_ORGANIZATION_ID',l_org_id);
4411 
4412       EXCEPTION
4413         WHEN NO_DATA_FOUND THEN
4414          IF l_debug_level  > 0 THEN
4415              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - NO_DATA' ) ;
4416          END IF;
4417         When too_many_rows then
4418          IF l_debug_level  > 0 THEN
4419              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - TOO_MANY' ) ;
4420          END IF;
4421          IF l_debug_level  > 0 THEN
4422              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4423          END IF;
4424          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4425 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4426            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4427          END IF;
4428 	   When others then
4429          IF l_debug_level  > 0 THEN
4430              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - OTHERS' ) ;
4431          END IF;
4432          IF l_debug_level  > 0 THEN
4433              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4434          END IF;
4435          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4436 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4437            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4438          END IF;
4439       END;
4440     ELSIF (p_x_line_tbl(I).ordered_item_id <> FND_API.G_MISS_NUM AND
4441            p_x_line_tbl(I).ordered_item_id IS NOT NULL)
4442     THEN
4443       BEGIN
4444       IF l_debug_level  > 0 THEN
4445           oe_debug_pub.add(  'IN OEXVIMSB ITEM IDEN IS INT WITH ORDERED_ITEM_ID' ) ;
4446       END IF;
4447          SELECT customer_item_number
4448          INTO  p_x_line_tbl(I).ordered_item
4449          FROM  mtl_customer_items
4450          WHERE customer_item_id = p_x_line_tbl(I).ordered_item_id
4451          AND   inactive_flag    = 'N';
4452 
4453       EXCEPTION
4454         WHEN NO_DATA_FOUND THEN
4455          IF l_debug_level  > 0 THEN
4456              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - NO_DATA' ) ;
4457          END IF;
4458         When too_many_rows then
4459          IF l_debug_level  > 0 THEN
4460              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - TOO_MANY' ) ;
4461          END IF;
4462          IF l_debug_level  > 0 THEN
4463              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4464          END IF;
4465          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4466 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4467            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4468          END IF;
4469 	   When others then
4470          IF l_debug_level  > 0 THEN
4471              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS INT - OTHERS' ) ;
4472          END IF;
4473          IF l_debug_level  > 0 THEN
4474              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4475          END IF;
4476          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4477 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4478            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_INT_ITEM');
4479          END IF;
4480       END;
4481     END IF;
4482  END IF;
4483  -- End of get inventory item id for ordered_item or ordered_item_id }
4484 
4485     -- { Get inventory item id and customer item id for type 'CUST'
4486     IF (NVL(p_x_line_tbl(I).item_identifier_type, 'CUST') = 'CUST' OR
4487         p_x_line_tbl(I).item_identifier_type = FND_API.G_MISS_CHAR) AND
4488        (p_x_line_tbl(I).ordered_Item is NOT NULL AND
4489        p_x_line_tbl(I).ordered_Item <> FND_API.G_MISS_CHAR  OR
4490        p_x_line_tbl(I).ordered_Item_id is NOT NULL AND
4491        p_x_line_tbl(I).ordered_Item_id <> FND_API.G_MISS_NUM)
4492        THEN
4493          IF l_debug_level  > 0 THEN
4494              oe_debug_pub.add(  'IN OEXVIMSB. ITEM IDENTIFIER IS CUST' ) ;
4495          END IF;
4496          IF (p_x_line_tbl(I).sold_to_org_id = FND_API.G_MISS_NUM OR
4497             p_x_line_tbl(I).sold_to_org_id IS NULL) AND
4498             ((p_x_line_val_tbl(I).sold_to_org <> FND_API.G_MISS_CHAR AND
4499             p_x_line_val_tbl(I).sold_to_org IS NOT NULL) OR
4500             (p_x_header_val_rec.customer_number <> FND_API.G_MISS_CHAR AND
4501             p_x_header_val_rec.customer_number IS NOT NULL) OR
4502             (p_x_header_val_rec.sold_to_org <> FND_API.G_MISS_CHAR AND
4503             p_x_header_val_rec.sold_to_org IS NOT NULL))
4504          THEN
4505            IF l_debug_level  > 0 THEN
4506                oe_debug_pub.add(  'BEFORE CALLING SOLD TO ORG ID' ) ;
4507            END IF;
4508            p_x_line_tbl(I).sold_to_org_id := oe_value_to_id.sold_to_org(
4509                            p_sold_to_org => nvl(p_x_header_val_rec.sold_to_org,
4510                                             p_x_line_val_tbl(I).sold_to_org),
4511                        p_customer_number => p_x_header_val_rec.customer_number);
4512            If p_x_header_rec.sold_to_org_id is NULL OR
4513               p_x_header_rec.sold_to_org_id = FND_API.G_MISS_NUM Then
4514               p_x_header_rec.sold_to_org_id := p_x_line_tbl(I).sold_to_org_id;
4515            End If;
4516 
4517            IF l_debug_level  > 0 THEN
4518                oe_debug_pub.add(  'AFTER SOLDTOORGID '|| P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ;
4519            END IF;
4520          END IF;
4521 	 -- 6 Lines are deleted from here, check the previous version for details.
4522 
4523 	 IF p_x_line_tbl(I).ordered_item_id = FND_API.G_MISS_NUM THEN
4524             l_ordered_item_id := NULL;
4525          ELSE
4526             l_ordered_item_id := p_x_line_tbl(I).ordered_item_id;
4527          END IF;
4528 
4529          IF l_debug_level  > 0 THEN
4530              oe_debug_pub.add(  'INVENTORY_ITEM_ID BEFORE CALLING CI_ATTRIBUTE_VALUE ' ||TO_CHAR ( P_X_LINE_TBL ( I ) .INVENTORY_ITEM_ID ) , 1 ) ;
4531          END IF;
4532          IF l_debug_level  > 0 THEN
4533              oe_debug_pub.add(  'CUST ITEM ID = '||P_X_LINE_TBL ( I ) .ORDERED_ITEM_ID ) ;
4534          END IF;
4535          IF l_debug_level  > 0 THEN
4536              oe_debug_pub.add(  'CUST ITEM ID = '||L_ORDERED_ITEM_ID ) ;
4537          END IF;
4538          IF l_debug_level  > 0 THEN
4539              oe_debug_pub.add(  'CUSTOMER_ID AT LINE = '||P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ;
4540          END IF;
4541          IF l_debug_level  > 0 THEN
4542              oe_debug_pub.add(  'CUSTOMER_ID AT HEADER = '||P_X_HEADER_REC.SOLD_TO_ORG_ID ) ;
4543          END IF;
4544          IF l_debug_level  > 0 THEN
4545              oe_debug_pub.add(  'CUSTOMER_ITEM_NUMBER = '||P_X_LINE_TBL ( I ) .ORDERED_ITEM ) ;
4546          END IF;
4547          IF l_debug_level  > 0 THEN
4548              oe_debug_pub.add(  'ORGANIZATION_ID = '||P_X_LINE_TBL ( I ) .SHIP_FROM_ORG_ID ) ;
4549          END IF;
4550          -- Fix for bug 1654669 start
4551          If p_x_line_tbl(I).ship_from_org_id = FND_API.G_MISS_NUM Then
4552             l_ship_from_org_id := NULL;
4553          Else
4554             l_ship_from_org_id := p_x_line_tbl(I).ship_from_org_id;
4555          End If;
4556          -- Fix for bug 1654669 end
4557          -- Fix for 2626323
4558     IF ((p_x_header_rec.ship_to_org_id IS NOT NULL AND --Bug 5383045
4559      p_x_header_rec.ship_to_org_id <> FND_API.G_MISS_NUM) AND
4560     (p_x_line_tbl(I).ship_to_org_id IS NULL OR
4561      p_x_line_tbl(I).ship_to_org_id =FND_API.G_MISS_NUM))THEN
4562 
4563      p_x_line_tbl(I).ship_to_org_id :=p_x_header_rec.ship_to_org_id;
4564     END IF;
4565 
4566     IF (p_x_line_tbl(I).ship_to_org_id IS NOT NULL AND
4567         p_x_line_tbl(I).ship_to_org_id <> FND_API.G_MISS_NUM) THEN
4568                   SELECT  /* MOAC_SQL_CHANGE */ u.cust_acct_site_id,
4569                 s.cust_account_id
4570         INTO  l_address_id
4571               ,l_cust_id
4572         FROM  HZ_CUST_SITE_USES_ALL u,   --moac
4573               HZ_CUST_ACCT_SITES s
4574         WHERE  u.cust_acct_site_id = s.cust_acct_site_id
4575         AND    u.org_id = s.org_id
4576         AND    u.site_use_id = p_x_line_tbl(I).ship_to_org_id
4577         AND    u.site_use_code = 'SHIP_TO';
4578 
4579         IF l_debug_level  > 0 THEN
4580             oe_debug_pub.add(  'SHIP TO ADDRESS:' || L_ADDRESS_ID||' - CUSTOMER:'||TO_CHAR ( L_CUST_ID ) ) ;
4581         END IF;
4582        IF l_cust_id <> p_x_line_tbl(I).sold_to_org_id  THEN
4583           IF l_debug_level  > 0 THEN
4584               oe_debug_pub.add(  'SOLD-TO CUSTOMER:'||TO_CHAR ( P_X_LINE_TBL ( I ) .SOLD_TO_ORG_ID ) ) ;
4585           END IF;
4586           l_address_id := NULL;
4587         END IF;
4588      END IF;
4589 
4590         IF (p_x_line_tbl(I).inventory_item_id = FND_API.G_MISS_NUM OR
4591             p_x_line_tbl(I).inventory_item_id IS NULL)  THEN
4592              l_inventory_id := NULL;
4593           ELSE
4594              l_inventory_id :=  p_x_line_tbl(I).inventory_item_id;
4595         END IF;
4596 
4597 
4598           INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
4599                        Z_Customer_Item_Id => l_ordered_item_id
4600                      , Z_Customer_Id => p_x_header_rec.sold_to_org_id
4601                      , Z_Customer_Item_Number => p_x_line_tbl(I).Ordered_Item
4602                    , Z_Address_Id => l_address_id
4603                      , Z_Organization_Id => nvl(l_ship_from_org_id, OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id))
4604                      , Z_Inventory_Item_Id => l_inventory_id
4605                      , Attribute_Name => 'INVENTORY_ITEM_ID'
4606                      , Error_Code => l_error_code
4607                      , Error_Flag => l_error_flag
4608                      , Error_Message => l_error_message
4609                      , Attribute_Value => l_inventory_item_id_cust
4610                      );
4611           IF l_debug_level  > 0 THEN
4612               oe_debug_pub.add(  'INV CUST VAL RET BY INVAPI = '||L_INVENTORY_ITEM_ID_CUST ) ;
4613           END IF;
4614           IF l_error_message IS NOT NULL
4615           THEN
4616            IF l_debug_level  > 0 THEN
4617                oe_debug_pub.add(  'CALLED TO THE INV API CI_ATTR_VAL RETURNED ERROR' ) ;
4618            END IF;
4619 	      FND_MESSAGE.SET_NAME('ONT','OE_INV_CUS_ITEM');
4620            FND_MESSAGE.SET_TOKEN('ERROR_CODE', l_error_code);
4621            FND_MESSAGE.SET_TOKEN('ERROR_MESSAGE', l_error_message);
4622            OE_MSG_PUB.Add;
4623           END IF;
4624 
4625 	  INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
4626                        Z_Customer_Item_Id => l_ordered_item_id
4627                      , Z_Customer_Id => p_x_header_rec.sold_to_org_id
4628                      , Z_Customer_Item_Number => p_x_line_tbl(I).Ordered_Item
4629                    , Z_Address_Id => l_address_id
4630                      , Z_Organization_Id => nvl(l_ship_from_org_id , OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id))
4631                      , Z_Inventory_Item_Id => NULL
4632                      , Attribute_Name => 'CUSTOMER_ITEM_ID'
4633                      , Error_Code => l_error_code
4634                      , Error_Flag => l_error_flag
4635                      , Error_Message => l_error_message
4636                      , Attribute_Value => p_x_line_tbl(I).ordered_item_id
4637                      );
4638 
4639 
4640         IF l_debug_level  > 0 THEN
4641             oe_debug_pub.add(  'ORDRD VAL RET BY INVAPI = '||P_X_LINE_TBL ( I ) .ORDERED_ITEM_ID ) ;
4642         END IF;
4643         IF l_error_message IS NOT NULL
4644         THEN
4645            IF l_debug_level  > 0 THEN
4646                oe_debug_pub.add(  'CALLED TO THE INV API CI_ATTR_VAL RETURNED ERROR:' || l_error_message ) ;
4647            END IF;
4648            FND_MESSAGE.SET_NAME('ONT','OE_INV_CUS_ITEM');
4649            FND_MESSAGE.SET_TOKEN('ERROR_CODE', l_error_code);
4650            FND_MESSAGE.SET_TOKEN('ERROR_MESSAGE', l_error_message);
4651            OE_MSG_PUB.Add;
4652         ELSE  --moved assignment of item_identifier_type to ELSE clause to prevent incorrect
4653               --assignment when a customer item is not found by the inventory API...bug 3683667
4654            IF l_debug_level  > 0 THEN
4655                oe_debug_pub.add(  'ASSIGNING ITEM_IDENTIFIER_TYPE AS CUST' ) ;
4656            END IF;
4657            p_x_line_tbl(I).item_identifier_type := 'CUST';
4658         END IF;
4659 
4660 
4661         IF l_inventory_item_id_ord IS NOT NULL AND
4662            l_inventory_item_id_cust IS NOT NULL AND
4663            l_inventory_item_Id_ord <> l_inventory_item_id_cust
4664         THEN
4665            IF l_debug_level  > 0 THEN
4666                oe_debug_pub.add(  'WARNING: CUST AND INVENTORY ITEM ARE DIFFERENT' ) ;
4667            END IF;
4668 	      FND_MESSAGE.SET_NAME('ONT','OE_INV_INT_CUS_ITEM_ID');
4669            FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID', l_inventory_item_id_ord);
4670            FND_MESSAGE.SET_TOKEN('CUST_ITEM_ID', l_inventory_item_id_cust);
4671            OE_MSG_PUB.Add;
4672            p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_cust;
4673         ELSIF l_inventory_item_id_ord IS NOT NULL
4674         THEN
4675            p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_ord;
4676         ELSIF l_inventory_item_id_cust IS NOT NULL
4677         THEN
4678            p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_cust;
4679         END IF;
4680 
4681     END IF; -- CUST
4682 
4683     -- } End of Get inventory item id and customer item id for type 'CUST'
4684 
4685     -- { Get inventory item id for Generice Item
4686     IF (NVL(p_x_line_tbl(I).item_identifier_type,'INT') NOT IN ('INT','CUST') AND
4687         p_x_line_tbl(I).item_identifier_type <> FND_API.G_MISS_CHAR) AND
4688        (p_x_line_tbl(I).ordered_Item is NOT NULL AND
4689        p_x_line_tbl(I).ordered_Item <> FND_API.G_MISS_CHAR)
4690     THEN
4691       BEGIN
4692        IF l_debug_level  > 0 THEN
4693            oe_debug_pub.add(  'IN OEXVIMSB. ITEM IDENTIFIER IS '||P_X_LINE_TBL ( I ) .ITEM_IDENTIFIER_TYPE ) ;
4694        END IF;
4695        IF l_debug_level  > 0 THEN
4696            oe_debug_pub.add(  'ORDERED_ITEM_ID: '||P_X_LINE_TBL ( I ) .ORDERED_ITEM_ID ) ;
4697        END IF;
4698        IF l_debug_level  > 0 THEN
4699            oe_debug_pub.add(  'ORDERED_ITEM: '||P_X_LINE_TBL ( I ) .ORDERED_ITEM ) ;
4700        END IF;
4701        SELECT inventory_item_id
4702        INTO   l_inventory_item_id_gen
4703        FROM   mtl_cross_references
4704        WHERE  cross_reference_type = p_x_line_tbl(I).item_identifier_type
4705          AND  (organization_id =
4706                          OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID',l_org_id)
4707          OR   organization_id IS NULL)
4708          AND  cross_reference = p_x_line_tbl(I).ordered_item
4709          And  (inventory_item_id =  l_inventory_item_id_int
4710           OR  l_inventory_item_id_int IS NULL);
4711 
4712        IF l_inventory_item_id_ord IS NOT NULL AND
4713           l_inventory_item_id_gen IS NOT NULL AND
4714           l_inventory_item_Id_ord <> l_inventory_item_id_gen
4715        THEN
4716           IF l_debug_level  > 0 THEN
4717               oe_debug_pub.add(  'WARNING: GENERIC AND INVENTORY ITEM ARE DIFFERENT' ) ;
4718           END IF;
4719 	     FND_MESSAGE.SET_NAME('ONT','OE_INV_INT_CUS_ITEM_ID');
4720           FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID', l_inventory_item_id_ord);
4721           FND_MESSAGE.SET_TOKEN('CUST_ITEM_ID', l_inventory_item_id_gen);
4722           OE_MSG_PUB.Add;
4723           p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_gen;
4724        ELSIF l_inventory_item_id_ord IS NOT NULL
4725        THEN
4726           p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_ord;
4727        ELSIF l_inventory_item_id_gen IS NOT NULL
4728        THEN
4729           p_x_line_tbl(I).inventory_item_id := l_inventory_item_id_gen;
4730        END IF;
4731 
4732       EXCEPTION
4733         WHEN NO_DATA_FOUND THEN
4734          IF l_debug_level  > 0 THEN
4735              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS GEN - NO_DATA' ) ;
4736          END IF;
4737         When too_many_rows then
4738          IF l_debug_level  > 0 THEN
4739              oe_debug_pub.add(  'TOO MANY ROWS ERROR: '||SQLERRM ) ;
4740          END IF;
4741 	    FND_MESSAGE.SET_NAME('ONT','OE_NOT_UNIQUE_ITEM');
4742          FND_MESSAGE.SET_TOKEN('GENERIC_ITEM', p_x_line_tbl(I).ordered_item);
4743          OE_MSG_PUB.Add;
4744          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4745 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4746            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_GEN_ITEM');
4747          END IF;
4748          IF l_debug_level  > 0 THEN
4749              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS GEN - TO_MANY' ) ;
4750          END IF;
4751 	   When others then
4752          IF l_debug_level  > 0 THEN
4753              oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4754          END IF;
4755          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4756 	      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4757            OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process_GEN_ITEM');
4758          END IF;
4759          IF l_debug_level  > 0 THEN
4760              oe_debug_pub.add(  'IN OEXVIMSB ITEM IDENTIFIER IS GEN - OTHERS' ) ;
4761          END IF;
4762       END;
4763     END IF;
4764     -- } End of  Get inventory item id for Generice Item
4765    /*Added for bug 5088655*/
4766    IF( l_inventory_item_id_int IS NULL AND
4767    l_inventory_item_id_ord  IS  NULL AND
4768    l_inventory_item_id_cust IS  NULL AND
4769    l_inventory_item_id_gen  IS  NULL )
4770    and p_x_line_tbl(I).operation in ('CREATE','INSERT') --added for bug 5509598
4771    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
4772          p_return_status := FND_API.G_RET_STS_ERROR;
4773    END IF;
4774 
4775     IF  (p_x_line_tbl(I).inventory_item_id IS NOT NULL
4776     AND p_x_line_tbl(I).inventory_Item_id <> FND_API.G_MISS_NUM)
4777     AND (p_x_line_val_tbl(I).inventory_item IS NOT NULL
4778     AND p_x_line_val_tbl(I).inventory_Item <> FND_API.G_MISS_CHAR)
4779     THEN
4780         p_x_line_val_tbl(I).inventory_item := FND_API.G_MISS_CHAR;
4781     END IF;
4782 
4783 
4784 -- Aksingh 11/14/2000 End for Cross Reference
4785 
4786 /* -----------------------------------------------------------
4787       Validate calculate price flag
4788    -----------------------------------------------------------
4789 */
4790       IF l_debug_level  > 0 THEN
4791           oe_debug_pub.add(  'BEFORE VALIDATING CALCULATE PRICE FLAG' ) ;
4792       END IF;
4793 
4794       IF p_x_line_tbl(I).calculate_price_flag NOT IN ('N','Y','P')
4795       THEN
4796 	 IF l_debug_level  > 0 THEN
4797 	     oe_debug_pub.add(  'INVALID CALCULATE_PRICE FLAG... ' ) ;
4798 	 END IF;
4799 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_CALCULATE_PRICE');
4800          OE_MSG_PUB.Add;
4801   	 p_return_status := FND_API.G_RET_STS_ERROR;
4802       END IF;
4803 
4804 /* -----------------------------------------------------------
4805       Check List_Price and Selling_price
4806    -----------------------------------------------------------
4807 */
4808       IF l_debug_level  > 0 THEN
4809           oe_debug_pub.add(  'BEFORE VALIDATING LIST AND SELLING PRICE' ) ;
4810       END IF;
4811 
4812       IF p_x_line_tbl(I).calculate_price_flag = 'N' AND
4813         (p_x_line_tbl(I).unit_list_price    = FND_API.G_MISS_NUM OR
4814 	    p_x_line_tbl(I).unit_selling_price = FND_API.G_MISS_NUM) AND
4815          p_x_line_tbl(I).Item_Type_Code <> 'INCLUDED'
4816 
4817       THEN
4818 	 IF l_debug_level  > 0 THEN
4819 	     oe_debug_pub.add(  'LIST PRICE OR SELLING PRICE IS NULL... ' ) ;
4820 	 END IF;
4821 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_PRICE');
4822          OE_MSG_PUB.Add;
4823   	 p_return_status := FND_API.G_RET_STS_ERROR;
4824       END IF;
4825 
4826 /* -----------------------------------------------------------
4827       Check Pricing_Qunatity and Pricing_Quantity_Uom and update
4828    -----------------------------------------------------------
4829 */
4830       IF l_debug_level  > 0 THEN
4831           oe_debug_pub.add(  'BEFORE VALIDATING PRICING QUNATITY AND UOM' ) ;
4832       END IF;
4833 
4834       IF p_x_line_tbl(I).calculate_price_flag = 'N' AND
4835         (p_x_line_tbl(I).pricing_quantity    = FND_API.G_MISS_NUM OR
4836          p_x_line_tbl(I).pricing_quantity    = NULL)
4837       THEN
4838          IF l_debug_level  > 0 THEN
4839              oe_debug_pub.add(  'PRICING QUANTITY IS NULL...RESETTING ' ) ;
4840          END IF;
4841          p_x_line_tbl(I).pricing_quantity := p_x_line_tbl(I).ordered_quantity;
4842          p_x_line_tbl(I).pricing_quantity_uom := p_x_line_tbl(I).order_quantity_uom;
4843       END IF;
4844 
4845    --------------------------------------------------------------
4846    -- Importing Service lines for the Order/CUSTOMER PRODUCT context --
4847    --------------------------------------------------------------
4848 
4849       IF l_debug_level  > 0 THEN
4850           oe_debug_pub.add(  'ITEM_TYPE ' || P_X_LINE_TBL ( I ) .ITEM_TYPE_CODE ) ;
4851       END IF;
4852 	 IF l_debug_level  > 0 THEN
4853 	     oe_debug_pub.add(  'REF_TYPE ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_TYPE_CODE ) ;
4854 	 END IF;
4855 	 IF l_debug_level  > 0 THEN
4856 	     oe_debug_pub.add(  'REF_ORDER ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_ORDER ) ;
4857 	 END IF;
4858 	 IF l_debug_level  > 0 THEN
4859 	     oe_debug_pub.add(  'REF_LINE ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_LINE ) ;
4860 	 END IF;
4861 --	 oe_debug_pub.add('ref_order ' || nvl(p_x_line_tbl(I).service_reference_order, FND_API.G_MISS_CHAR));
4862 --	 oe_debug_pub.add('ref_line ' ||  nvl(p_x_line_tbl(I).service_reference_line, FND_API.G_MISS_CHAR));
4863 
4864       IF p_x_line_tbl(I).item_type_code = 'SERVICE' AND
4865          p_x_line_tbl(I).service_reference_type_code = 'ORDER' AND
4866          p_x_line_tbl(I).service_reference_order <> FND_API.G_MISS_CHAR AND
4867          p_x_line_tbl(I).service_reference_line <> FND_API.G_MISS_CHAR
4868       THEN
4869          -- Immediate Service
4870          IF p_x_line_tbl(I).service_reference_order =
4871             p_x_line_tbl(I).orig_sys_document_ref
4872          THEN
4873             -- Populate index for the link
4874             IF l_debug_level  > 0 THEN
4875                 oe_debug_pub.add(  'LOOPING LINE TABLE OF RECORD TO FIND THE INDEX' ) ;
4876             END IF;
4877             FOR J in 1..p_x_line_tbl.count
4878             LOOP
4879               IF p_x_line_tbl(J).orig_sys_line_ref =
4880                  p_x_line_tbl(I).service_reference_line
4881               THEN
4882                  p_x_line_tbl(I).service_line_index := J;
4883                  goto next_line;
4884               END IF;
4885             END LOOP;
4886             -- This condition is for Immediate service being enter during
4887             -- order update(semi delayed!!)
4888             BEGIN
4889               IF l_debug_level  > 0 THEN
4890                   oe_debug_pub.add(  'FOR SEMI DELAYED SERVICE GET THE LINE_ID' ) ;
4891               END IF;
4892               SELECT line_id
4893               INTO   p_x_line_tbl(I).service_reference_line_id
4894               FROM   oe_order_lines ol
4895               WHERE  ol.header_id = l_header_id
4896               AND    ol.orig_sys_line_ref =
4897                      p_x_line_tbl(I).service_reference_line
4898               AND    decode(l_customer_key_profile, 'Y',
4899 		     nvl(ol.sold_to_org_id, FND_API.G_MISS_NUM), 1)
4900                 =    decode(l_customer_key_profile, 'Y',
4901 		     nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
4902             EXCEPTION
4903              WHEN NO_DATA_FOUND THEN
4904                IF l_debug_level  > 0 THEN
4905                    oe_debug_pub.add(  'NOT FOUND LINEID FOR SEMI-DELAYED SERVICE' ) ;
4906                END IF;
4907 	          FND_MESSAGE.SET_NAME('ONT','OE_NO_SERV_TRANS');
4908                OE_MSG_PUB.Add;
4909                p_return_status := FND_API.G_RET_STS_ERROR;
4910              WHEN OTHERS THEN
4911                IF l_debug_level  > 0 THEN
4912                    oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4913                END IF;
4914               IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
4915   	           p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4916                   OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Line_id derivation for semi-delayed service');
4917               END IF;
4918             END;
4919          ELSE
4920           BEGIN
4921             IF l_debug_level  > 0 THEN
4922                 oe_debug_pub.add(  'FOR DELAYED SERVICE GET THE LINE_ID' ) ;
4923             END IF;
4924             SELECT line_id
4925             INTO   p_x_line_tbl(I).service_reference_line_id
4926             FROM   oe_order_lines ol
4927             WHERE  ol.order_source_id =
4928                    p_x_header_rec.order_source_id
4929             AND    ol.orig_sys_document_ref =
4930                    p_x_line_tbl(I).service_reference_order
4931             AND    ol.orig_sys_line_ref =
4932                    p_x_line_tbl(I).service_reference_line
4933             AND    decode(l_customer_key_profile, 'Y',
4934 		   nvl(ol.sold_to_org_id, FND_API.G_MISS_NUM), 1)
4935                =   decode(l_customer_key_profile, 'Y',
4936         	   nvl(p_x_line_tbl(I).sold_to_org_id, FND_API.G_MISS_NUM), 1);
4937 
4938           EXCEPTION
4939            WHEN NO_DATA_FOUND THEN
4940              IF l_debug_level  > 0 THEN
4941                  oe_debug_pub.add(  'NOT FOUND ORDER LINE FOR DELAYED SERVICE' ) ;
4942              END IF;
4943 	        FND_MESSAGE.SET_NAME('ONT','OE_NO_SERV_TRANS');
4944              OE_MSG_PUB.Add;
4945              p_return_status := FND_API.G_RET_STS_ERROR;
4946            WHEN OTHERS THEN
4947              IF l_debug_level  > 0 THEN
4948                  oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4949              END IF;
4950             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
4951 	           p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4952                 OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.Line_id derivation for delayed service');
4953             END IF;
4954           END;
4955          END IF;
4956       ELSIF p_x_line_tbl(I).item_type_code = 'SERVICE' AND
4957          p_x_line_tbl(I).service_reference_type_code = 'CUSTOMER_PRODUCT' AND
4958          p_x_line_tbl(I).service_reference_order = FND_API.G_MISS_CHAR AND
4959       -- second OR condition now removed as service_reference_system cannot be processed without
4960       -- service_reference_line
4961         p_x_line_tbl(I).service_reference_line <> FND_API.G_MISS_CHAR
4962       THEN
4963 	 IF l_debug_level  > 0 THEN
4964 	     oe_debug_pub.add(  'REF_SYSTEM ' || P_X_LINE_TBL ( I ) .SERVICE_REFERENCE_SYSTEM ) ;
4965 	 END IF;
4966          -- Assign service reference system to line rec (if populated)
4967         BEGIN
4968             p_x_line_tbl(I).service_reference_line_id :=
4969             to_number(p_x_line_tbl(I).service_reference_line);
4970           If p_x_line_tbl(I).service_reference_system <> FND_API.G_MISS_CHAR then
4971             p_x_line_tbl(I).service_reference_system_id :=
4972             to_number(p_x_line_tbl(I).service_reference_system);
4973           End If;
4974         EXCEPTION
4975            WHEN OTHERS THEN
4976             IF l_debug_level  > 0 THEN
4977                 oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
4978             END IF;
4979             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_Msg_Lvl_Unexp_Error) THEN
4980 	          p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4981                OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process.system_id derivation for delayed service');
4982             END IF;
4983         END;
4984       ELSIF p_x_line_tbl(I).item_type_code = 'SERVICE'
4985       THEN
4986          IF l_debug_level  > 0 THEN
4987              oe_debug_pub.add(  'REQUIRED DATA IS MISSING FOR SERVICE LINE' ) ;
4988          END IF;
4989 	    FND_MESSAGE.SET_NAME('ONT','OE_NO_SERV_TRANS');
4990          OE_MSG_PUB.Add;
4991          p_return_status := FND_API.G_RET_STS_ERROR;
4992       END IF;
4993    <<next_line>>
4994 	null;
4995     /* bsadri fill in the IDs for actions if this is an update */
4996     BEGIN
4997     IF p_x_line_tbl(I).operation IN ('UPDATE','DELETE')
4998       AND p_x_header_rec.operation IN ('UPDATE','DELETE') THEN
4999     -- The following condition is added for #1927259
5000    if (p_x_action_request_tbl.COUNT >0 ) then
5001       FOR b in l_counter..p_x_action_request_tbl.COUNT
5002       LOOP--{
5003          l_counter_memory := l_counter_memory + 1;
5004          IF p_x_action_request_tbl(b).entity_code = OE_Globals.G_ENTITY_LINE
5005           AND p_x_action_request_tbl(b).entity_index = l_line_count THEN
5006             p_x_action_request_tbl(b).entity_id := p_x_line_tbl(I).line_id;
5007 /*myerrams, Customer Acceptance, Populating the Action_request table with Header id if Customer Acceptance is enabled.*/
5008 	    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
5009 		    IF (OE_SYS_PARAMETERS.VALUE('ENABLE_FULFILLMENT_ACCEPTANCE',l_org_id) = 'Y') THEN
5010 			p_x_action_request_tbl(b).param5 := p_x_line_tbl(I).header_id;
5011 	            END IF;
5012 	    END IF;
5013 /*myerrams, Customer Acceptance, end*/
5014             IF p_x_action_request_tbl(b).request_type =
5015                                                 OE_Globals.G_LINK_CONFIG
5016             THEN
5017               p_x_action_request_tbl(b).param1 :=
5018                      p_x_line_tbl(I).inventory_item_id;
5019             END IF;
5020          END IF;
5021          IF p_x_action_request_tbl(b).entity_code = OE_Globals.G_ENTITY_LINE
5022           AND p_x_action_request_tbl(b).entity_index > l_line_count THEN
5023               raise e_break;
5024          END IF;
5025       END LOOP;--}
5026     end if;
5027       l_counter := l_counter_memory - 1;
5028     END IF;
5029     EXCEPTION
5030       WHEN e_break THEN
5031           l_counter := l_counter_memory - 1;
5032     END;
5033    END LOOP; --}
5034 
5035    FOR I in 1..p_x_line_adj_tbl.count
5036    LOOP
5037 /* -----------------------------------------------------------
5038       Set message context for line price adjustments
5039    -----------------------------------------------------------
5040 */
5041       l_price_adjustment_id := NULL;
5042       IF l_debug_level  > 0 THEN
5043           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE PRICE ADJUSTMENTS' ) ;
5044       END IF;
5045 
5046       OE_MSG_PUB.set_msg_context(
5047          p_entity_code                => 'LINE_ADJ'
5048         ,p_entity_ref                 => p_x_line_adj_tbl(I).orig_sys_discount_ref
5049         ,p_entity_id                  => null
5050         ,p_header_id                  => p_x_header_rec.header_id
5051         ,p_line_id                    => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).line_id
5052 --      ,p_batch_request_id           => p_x_header_rec.request_id
5053         ,p_order_source_id            => p_x_header_rec.order_source_id
5054         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5055         ,p_change_sequence            => p_x_header_rec.change_sequence
5056         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).orig_sys_line_ref
5057         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_adj_tbl(I).line_index).orig_sys_shipment_ref
5058         ,p_source_document_type_id    => null
5059         ,p_source_document_id         => null
5060         ,p_source_document_line_id    => null
5061         ,p_attribute_code             => null
5062         ,p_constraint_id              => null
5063         );
5064 
5065 /* -----------------------------------------------------------
5066       Validate orig sys discount ref for line
5067    -----------------------------------------------------------
5068 */
5069       IF l_debug_level  > 0 THEN
5070           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_DISCOUNT_REF FOR LINE' ) ;
5071       END IF;
5072 
5073       IF p_x_line_adj_tbl(I).orig_sys_discount_ref = FND_API.G_MISS_CHAR
5074       THEN
5075 	 IF l_debug_level  > 0 THEN
5076 	     oe_debug_pub.add(  'INVALID ORIG_SYS_DISCOUNT_REF FOR LINE... ' ) ;
5077 	 END IF;
5078 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_DISCOUNT_REF');
5079          OE_MSG_PUB.Add;
5080 	 p_return_status := FND_API.G_RET_STS_ERROR;
5081       END IF;
5082 
5083 /* -----------------------------------------------------------
5084       Validate line adjustments operation code
5085    -----------------------------------------------------------
5086 */
5087       IF l_debug_level  > 0 THEN
5088           oe_debug_pub.add(  'BEFORE VALIDATING LINE ADJUSTMENTS OPERATION CODE' ) ;
5089       END IF;
5090 
5091       IF p_x_line_adj_tbl(I).operation NOT IN ('INSERT','CREATE',
5092 					     'UPDATE','DELETE') OR
5093         (p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation
5094 			     		 IN ('INSERT','CREATE') AND
5095          p_x_line_adj_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5096         (p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation
5097 			     		 IN ('UPDATE') AND
5098          p_x_line_adj_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5099         (p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation
5100 			     		 IN ('DELETE') AND
5101          p_x_line_adj_tbl(I).operation NOT IN ('DELETE'))
5102       THEN
5103 	 IF l_debug_level  > 0 THEN
5104 	     oe_debug_pub.add(  'INVALID LINE ADJUSTMENTS OPERATION CODE...' ) ;
5105 	 END IF;
5106 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5107          OE_MSG_PUB.Add;
5108 	 p_return_status := FND_API.G_RET_STS_ERROR;
5109       END IF;
5110 
5111 -- aksingh start on this (10/11/2000) this is in process of being coded
5112       IF  p_x_line_adj_tbl(I).operation IN ('INSERT', 'CREATE')
5113       AND p_x_header_rec.operation = 'UPDATE'
5114       AND p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation = 'UPDATE'
5115       THEN
5116       Begin
5117          IF l_debug_level  > 0 THEN
5118              oe_debug_pub.add(  'NEW ADJUSTMENT FOR LINE LEVEL , THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5119          END IF;
5120          p_x_line_adj_tbl(I).header_id  := l_header_id;
5121        /*  Bug #2108967 -- Passing the correct line_id    */
5122          p_x_line_adj_tbl(I).line_id    := p_x_line_tbl(p_x_line_adj_tbl(I).line_index).line_id;
5123 
5124          SELECT 1 into l_count
5125            FROM oe_price_adjustments
5126           WHERE header_id              = p_x_header_rec.header_id
5127             AND line_id                = l_line_id
5128             AND orig_sys_discount_ref  =
5129                        p_x_line_adj_tbl(I).orig_sys_discount_ref
5130             AND rownum                < 2;
5131 
5132          IF l_debug_level  > 0 THEN
5133              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... ' ) ;
5134          END IF;
5135          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5136          OE_MSG_PUB.Add;
5137          p_return_status := FND_API.G_RET_STS_ERROR;
5138       Exception
5139         When no_data_found then
5140           IF l_debug_level  > 0 THEN
5141               oe_debug_pub.add(  'VALID LINE LEVEL PRICE ADJ FOR INSERT' ) ;
5142           END IF;
5143         When others then
5144          IF l_debug_level  > 0 THEN
5145              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE PRICE ADJ... ' ) ;
5146          END IF;
5147          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5148          OE_MSG_PUB.Add;
5149          p_return_status := FND_API.G_RET_STS_ERROR;
5150       End;
5151       End IF; -- Insert, Create Operation
5152 
5153       IF  p_x_line_adj_tbl(I).operation IN ('UPDATE','DELETE')
5154       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5155       AND p_x_line_tbl(p_x_line_adj_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5156       THEN
5157       Begin
5158          IF l_debug_level  > 0 THEN
5159              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5160          END IF;
5161          IF l_debug_level  > 0 THEN
5162              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5163          END IF;
5164          IF l_debug_level  > 0 THEN
5165              oe_debug_pub.add(  'DISCOUNT REF: '||P_X_LINE_ADJ_TBL ( I ) .ORIG_SYS_DISCOUNT_REF ) ;
5166          END IF;
5167          p_x_line_adj_tbl(I).header_id  := l_header_id;
5168          p_x_line_adj_tbl(I).line_id    := p_x_line_tbl(p_x_line_adj_tbl(I).line_index).line_id;
5169          SELECT price_adjustment_id
5170            INTO l_price_adjustment_id
5171            FROM oe_price_adjustments
5172           WHERE header_id             = l_header_id
5173             AND line_id               = p_x_line_adj_tbl(I).line_id
5174             AND orig_sys_discount_ref =
5175                 p_x_line_adj_tbl(I).orig_sys_discount_ref;
5176 
5177          p_x_line_adj_tbl(I).price_adjustment_id := l_price_adjustment_id;
5178          IF l_debug_level  > 0 THEN
5179              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_LINE_ADJ_TBL ( I ) .HEADER_ID ) ) ;
5180          END IF;
5181          IF l_debug_level  > 0 THEN
5182              oe_debug_pub.add(  'ADJUST ID: '||TO_CHAR ( P_X_LINE_ADJ_TBL ( I ) .PRICE_ADJUSTMENT_ID ) ) ;
5183          END IF;
5184 
5185       Exception
5186         When no_data_found then
5187           IF l_debug_level  > 0 THEN
5188               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE ADJ BUT THAT DOES NOT EXIST... ' ) ;
5189           END IF;
5190           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5191           OE_MSG_PUB.Add;
5192           p_return_status := FND_API.G_RET_STS_ERROR;
5193         When others then
5194          IF l_debug_level  > 0 THEN
5195              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINEADJ ... ' ) ;
5196          END IF;
5197          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5198          OE_MSG_PUB.Add;
5199          p_return_status := FND_API.G_RET_STS_ERROR;
5200       End;
5201       End IF; -- Update and Delete operation
5202 
5203 -- aksingh(10/11/2000) this is in process of being coded upto this point
5204 
5205 -- Following changes are made to fix the bug# 1220921, It will call the
5206 -- api to get the id(header and line) also the list_line_type code to
5207 -- pass it to process_order as right now it is not possible to call
5208 -- process order to import order without passing the these ids.
5209 -- {
5210 
5211   If   (p_x_line_adj_tbl(I).list_header_id is null
5212        or  p_x_line_adj_tbl(I).list_header_id = FND_API.G_MISS_NUM)
5213       and (p_x_line_adj_tbl(I).list_line_id is null
5214        or  p_x_line_adj_tbl(I).list_line_id = FND_API.G_MISS_NUM)
5215      then
5216       list_line_id( p_modifier_name  => p_x_line_adj_val_tbl(I).list_name,
5217                     p_list_line_no   => p_x_line_adj_tbl(I).list_line_no,
5218                     p_version_no     => p_x_line_adj_val_tbl(I).version_no,
5219                     p_list_line_type_code =>p_x_line_adj_tbl(I).list_line_type_code,
5220                     p_return_status  => l_return_status,
5221                     x_list_header_id => l_list_header_id,
5222                     x_list_line_id   => l_list_line_id,
5223                     x_list_line_no  =>l_list_line_no,
5224                      x_type         => l_type);
5225 
5226       IF l_type NOT IN ('DIS','FREIGHT_CHARGE','PROMOLINE','COUPON','PROMO','SUR') THEN
5227          IF l_debug_level  > 0 THEN
5228              oe_debug_pub.add(  'OEXVIMSB.PLS -> NOT A VALID DISCOUNT/COUPON TYPE ( LINE ) ' ) ;
5229          END IF;
5230          IF l_debug_level  > 0 THEN
5231              oe_debug_pub.add(  'NOT VALID PROMOTION NAME =' ||P_X_HEADER_ADJ_VAL_TBL ( I ) .LIST_NAME ) ;
5232          END IF;
5233          FND_MESSAGE.SET_NAME('ONT','OE_INVALID_LIST_NAME');
5234          FND_MESSAGE.SET_TOKEN('LIST_NAME',p_x_line_adj_val_tbl(I).list_name);
5235          OE_MSG_PUB.Add;
5236 	 p_return_status := FND_API.G_RET_STS_ERROR;
5237       END IF;
5238 
5239       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
5240           AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
5241 		          FND_API.G_RET_STS_UNEXP_ERROR)
5242       THEN
5243           p_return_status := l_return_status;
5244       END IF;
5245 
5246       IF l_debug_level  > 0 THEN
5247           oe_debug_pub.add(  'LIST_LINE_TYPE_CODE = '||L_TYPE ) ;
5248       END IF;
5249       IF l_debug_level  > 0 THEN
5250           oe_debug_pub.add(  'LIST HEADER ID = '||L_LIST_HEADER_ID ) ;
5251       END IF;
5252       IF l_debug_level  > 0 THEN
5253           oe_debug_pub.add(  'LIST LINE ID = '||L_LIST_LINE_ID ) ;
5254       END IF;
5255       IF l_type In ('DIS','SUR') THEN
5256          p_x_line_adj_tbl(I).list_header_id :=l_list_header_id;
5257          p_x_line_adj_tbl(I).list_line_id :=l_list_line_id;
5258       END IF;
5259 
5260       IF l_type='FREIGHT_CHARGE' THEN
5261          p_x_line_adj_tbl(I).list_header_id :=l_list_header_id;
5262          p_x_line_adj_tbl(I).list_line_id :=l_list_line_id;
5263       END IF;
5264 
5265       IF l_type='PROMOLINE' THEN
5266        l_line_price_att_tbl(I).pricing_context :='MODLIST';
5267        l_line_price_att_tbl(I).flex_title      :='QP_ATTR_DEFNS_QUALIFIER';
5268        l_line_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_line_adj_tbl(I).Orig_Sys_Discount_Ref;
5269        l_line_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
5270        l_line_price_att_tbl(I).pricing_attribute2 :=l_list_line_id;
5271        l_line_price_att_tbl(I).operation := p_x_line_adj_tbl(I).Operation;
5272        l_line_price_att_tbl(I).line_index := p_x_line_adj_tbl(I).line_index;
5273        IF l_debug_level  > 0 THEN
5274            oe_debug_pub.add(  'LINE_INDEX = '||L_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) ;
5275        END IF;
5276        IF l_debug_level  > 0 THEN
5277            oe_debug_pub.add(  'LINE_PRICE OPERATION = '||L_LINE_PRICE_ATT_TBL ( I ) .OPERATION ) ;
5278        END IF;
5279        p_x_line_adj_tbl.delete (I);
5280        p_x_line_adj_val_tbl.DELETE (I);
5281       END IF;
5282       IF l_type = 'COUPON' THEN
5283        l_line_price_att_tbl(I).pricing_context :='MODLIST';
5284        l_line_price_att_tbl(I).flex_title      :='QP_ATTR_DEFNS_QUALIFIER';
5285        l_line_price_att_tbl(I).pricing_attribute3 :=l_list_line_id;
5286        l_line_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_line_adj_tbl(I).Orig_Sys_Discount_Ref;
5287        l_line_price_att_tbl(I).operation := p_x_line_adj_tbl(I).Operation;
5288        l_line_price_att_tbl(I).line_index := p_x_line_adj_tbl(I).line_index;
5289        IF l_debug_level  > 0 THEN
5290            oe_debug_pub.add(  'LINE_INDEX = '||L_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) ;
5291        END IF;
5292        IF l_debug_level  > 0 THEN
5293            oe_debug_pub.add(  'LINE_PRICE OPERATION = '||L_LINE_PRICE_ATT_TBL ( I ) .OPERATION ) ;
5294        END IF;
5295        p_x_line_adj_tbl.delete (I);
5296        p_x_line_adj_val_tbl.DELETE (I);
5297       END IF;
5298 
5299       IF l_type='PROMO' THEN
5300        IF l_debug_level  > 0 THEN
5301            oe_debug_pub.add(  'IN LINE PROMO' ) ;
5302        END IF;
5303        l_line_price_att_tbl(I).pricing_context :='MODLIST';
5304        l_line_price_att_tbl(I).flex_title    :='QP_ATTR_DEFNS_QUALIFIER';
5305        l_line_price_att_tbl(I).pricing_attribute1 := l_list_header_id;
5306        l_line_price_att_tbl(I).Orig_Sys_Atts_Ref :=p_x_line_adj_tbl(I).Orig_Sys_Discount_Ref;
5307        l_line_price_att_tbl(I).operation := p_x_line_adj_tbl(I).Operation;
5308        l_line_price_att_tbl(I).line_index := p_x_line_adj_tbl(I).line_index;
5309        IF l_debug_level  > 0 THEN
5310            oe_debug_pub.add(  'LINE_INDEX = '||L_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) ;
5311        END IF;
5312        IF l_debug_level  > 0 THEN
5313            oe_debug_pub.add(  'LINE_PRICE OPERATION = '||L_LINE_PRICE_ATT_TBL ( I ) .OPERATION ) ;
5314        END IF;
5315        p_x_line_adj_tbl.delete (I);
5316        p_x_line_adj_val_tbl.DELETE (I);
5317       END IF;
5318    end if;
5319 -- } end if
5320 
5321    END LOOP;
5322 
5323 IF l_debug_level  > 0 THEN
5324     oe_debug_pub.add(  'P_X_LINE_PRICE_ATT_TBL.COUNT: '||TO_CHAR ( P_X_LINE_PRICE_ATT_TBL.COUNT ) , 1 ) ;
5325 END IF;
5326    FOR I in 1..p_x_line_price_att_tbl.count
5327    LOOP
5328 /* -----------------------------------------------------------
5329       Set message context for line atts
5330    -----------------------------------------------------------
5331 */
5332       IF l_debug_level  > 0 THEN
5333           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE ATTS' ) ;
5334       END IF;
5335 
5336       OE_MSG_PUB.set_msg_context(
5337          p_entity_code                => 'LINE_PATTS'
5338 --        ,p_entity_ref                 => p_x_line_price_att_tbl(I).orig_sys_atts_ref
5339         ,p_entity_id                  => p_x_line_price_att_tbl(I).order_price_attrib_id
5340         ,p_header_id                  => p_x_header_rec.header_id
5341         ,p_line_id                    => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).line_id
5342 --      ,p_batch_request_id           => p_x_header_rec.request_id
5343         ,p_order_source_id            => p_x_header_rec.order_source_id
5344         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5345         ,p_change_sequence            => p_x_header_rec.change_sequence
5346         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).orig_sys_line_ref
5347         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).orig_sys_shipment_ref
5348         ,p_source_document_type_id    => null
5349         ,p_source_document_id         => null
5350         ,p_source_document_line_id    => null
5351         ,p_attribute_code             => null
5352         ,p_constraint_id              => null
5353         );
5354 
5355 /* -----------------------------------------------------------
5356       Validate orig sys documentt ref for line
5357    -----------------------------------------------------------
5358 
5359       oe_debug_pub.add('before validating orig_sys_atts_ref for line');
5360 
5361       IF p_x_line_price_att_tbl(I).orig_sys_atts_ref = FND_API.G_MISS_CHAR
5362       THEN
5363 	 oe_debug_pub.add('Invalid orig_sys_attribute_ref for line... ');
5364 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_ATT_REF');
5365          OE_MSG_PUB.Add;
5366 	 p_return_status := FND_API.G_RET_STS_ERROR;
5367       END IF;
5368 
5369  -----------------------------------------------------------
5370       Validate line atts operation code
5371    -----------------------------------------------------------
5372 */
5373       IF l_debug_level  > 0 THEN
5374           oe_debug_pub.add(  'BEFORE VALIDATING LINE ATTS OPERATION CODE' ) ;
5375       END IF;
5376     IF l_debug_level  > 0 THEN
5377         oe_debug_pub.add(  ' OPERATION CODE IS :'||P_X_LINE_PRICE_ATT_TBL ( I ) .OPERATION , 1 ) ;
5378     END IF;
5379       IF p_x_line_price_att_tbl(I).operation NOT IN ('INSERT','CREATE',
5380                                              'UPDATE','DELETE') OR
5381         (p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation
5382                                          IN ('INSERT','CREATE') AND
5383          p_x_line_price_att_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5384         (p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation
5385                                          IN ('UPDATE') AND
5386          p_x_line_price_att_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5387         (p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation
5388                                          IN ('DELETE') AND
5389          p_x_line_price_att_tbl(I).operation NOT IN ('DELETE'))
5390 
5391       THEN
5392 	   IF l_debug_level  > 0 THEN
5393 	       oe_debug_pub.add(  'INVALID LINE ADJUSTMENTS OPERATION CODE...' ) ;
5394 	   END IF;
5395 	   FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5396         OE_MSG_PUB.Add;
5397 	   p_return_status := FND_API.G_RET_STS_ERROR;
5398       END IF;
5399 
5400       IF  p_x_line_price_att_tbl(I).operation IN ('INSERT', 'CREATE')
5401       AND p_x_header_rec.operation = 'UPDATE'
5402       AND p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation = 'UPDATE'
5403       THEN
5404          IF l_debug_level  > 0 THEN
5405              oe_debug_pub.add(  'NEW ATT FOR THE LINE LEVEL , EXISITNG HEARDER_ID:' || P_X_HEADER_REC.HEADER_ID ) ;
5406          END IF;
5407 IF l_debug_level  > 0 THEN
5408     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 ) ;
5409 END IF;
5410 IF l_debug_level  > 0 THEN
5411     oe_debug_pub.add(  'LINEID :' ||TO_CHAR ( P_X_LINE_TBL ( P_X_LINE_PRICE_ATT_TBL ( I ) .LINE_INDEX ) .LINE_ID ) , 1 ) ;
5412 END IF;
5413          p_x_line_price_att_tbl(I).header_id    := p_x_header_rec.header_id; --l_header_id;
5414          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;
5415       Begin
5416 
5417          SELECT 1 into l_count
5418            FROM oe_order_price_attribs
5419           WHERE header_id              = p_x_header_rec.header_id
5420             AND line_id                = l_line_id
5421             AND orig_sys_atts_ref  =
5422                 p_x_line_price_att_tbl(I).orig_sys_atts_ref
5423             AND rownum                < 2;
5424 
5425          IF l_debug_level  > 0 THEN
5426              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW HDRATT WITH THE SAME HEADER_ID AND ATTRIBUTE ID....' ) ;
5427          END IF;
5428          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5429          OE_MSG_PUB.Add;
5430          p_return_status := FND_API.G_RET_STS_ERROR;
5431       Exception
5432         When no_data_found then
5433           IF l_debug_level  > 0 THEN
5434               oe_debug_pub.add(  'VALID LINE LEVEL PRICE ATT FOR INSERT' ) ;
5435           END IF;
5436         When others then
5437          IF l_debug_level  > 0 THEN
5438              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW HDR PRICE ATT... ' ) ;
5439          END IF;
5440          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5441          OE_MSG_PUB.Add;
5442          p_return_status := FND_API.G_RET_STS_ERROR;
5443       End;
5444       End If; -- Insert, Create operation
5445 
5446       IF  p_x_line_price_att_tbl(I).operation IN ('UPDATE','DELETE')
5447       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5448       AND p_x_line_tbl(p_x_line_price_att_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5449       THEN
5450       Begin
5451          IF l_debug_level  > 0 THEN
5452              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5453          END IF;
5454          IF l_debug_level  > 0 THEN
5455              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5456          END IF;
5457          IF l_debug_level  > 0 THEN
5458              oe_debug_pub.add(  'ATTRIBUTE REF: '||P_X_LINE_PRICE_ATT_TBL ( I ) .ORIG_SYS_ATTS_REF ) ;
5459          END IF;
5460          p_x_line_price_att_tbl(I).header_id    := l_header_id;
5461          p_x_line_price_att_tbl(I).line_id      := l_line_id;
5462 
5463          SELECT order_price_attrib_id
5464            INTO l_price_attrib_id
5465            FROM oe_order_price_attribs
5466           WHERE header_id             = l_header_id
5467             AND line_id               = l_line_id
5468             AND orig_sys_atts_ref  =
5469                 p_x_line_price_att_tbl(I).orig_sys_atts_ref;
5470 
5471          p_x_line_price_att_tbl(I).order_price_attrib_id := l_price_attrib_id;
5472          IF l_debug_level  > 0 THEN
5473              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_LINE_PRICE_ATT_TBL ( I ) .HEADER_ID ) ) ;
5474          END IF;
5475          IF l_debug_level  > 0 THEN
5476              oe_debug_pub.add(  'ATTRIBUTE ID: '||TO_CHAR ( P_X_LINE_PRICE_ATT_TBL ( I ) .ORDER_PRICE_ATTRIB_ID ) ) ;
5477          END IF;
5478 
5479       Exception
5480         When no_data_found then
5481           IF l_debug_level  > 0 THEN
5482               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING HDR ATT BUT THAT DOES NOT EXIST... ' ) ;
5483           END IF;
5484           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5485           OE_MSG_PUB.Add;
5486           p_return_status := FND_API.G_RET_STS_ERROR;
5487         When others then
5488          IF l_debug_level  > 0 THEN
5489              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING HDRATT ... ' ) ;
5490          END IF;
5491          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5492          OE_MSG_PUB.Add;
5493          p_return_status := FND_API.G_RET_STS_ERROR;
5494       End;
5495       End IF; -- Update and Delete operation
5496 
5497    END LOOP;
5498 
5499 l_last_index :=p_x_line_price_att_tbl.LAST;
5500 IF l_last_index IS NULL THEN
5501   l_last_index := 0;
5502 END IF;
5503 
5504     FOR I IN 1..l_line_price_att_tbl.COUNT
5505     LOOP
5506      IF l_debug_level  > 0 THEN
5507          oe_debug_pub.add(  'IN LINE PRICE_REC_TBL LOOP' ) ;
5508      END IF;
5509      l_last_index := l_last_index+1;
5510      IF l_debug_level  > 0 THEN
5511          oe_debug_pub.add(  'L_LAST_INDEX = '||L_LAST_INDEX ) ;
5512      END IF;
5513      p_x_line_price_att_tbl(l_last_index).pricing_attribute1 := l_line_price_att_tbl(I).pricing_attribute1;
5514      p_x_line_price_att_tbl(l_last_index).pricing_attribute3 :=l_line_price_att_tbl(I).pricing_attribute3;
5515      p_x_line_price_att_tbl(l_last_index).pricing_attribute2 :=l_line_price_att_tbl(I).pricing_attribute2;
5516      p_x_line_price_att_tbl(l_last_index).flex_title := l_line_price_att_tbl(I).flex_title;
5517      p_x_line_price_att_tbl(l_last_index).pricing_context :=l_line_price_att_tbl(I).pricing_context;
5518      p_x_line_price_att_tbl(l_last_index).Orig_Sys_Atts_Ref :=l_line_price_att_tbl(I).Orig_Sys_Atts_Ref;
5519      p_x_line_price_att_tbl(l_last_index).Operation := l_line_price_att_tbl(I).operation;
5520      p_x_line_price_att_tbl(l_last_index).line_index := l_line_price_att_tbl(I).line_index;
5521     END LOOP;
5522     IF l_debug_level  > 0 THEN
5523         oe_debug_pub.add(  'RECORDS IN LINE PRICE ATTL TBL = '||P_X_LINE_PRICE_ATT_TBL.COUNT ) ;
5524     END IF;
5525 
5526 
5527    FOR I in 1..p_x_line_scredit_tbl.count
5528    LOOP
5529 /* -----------------------------------------------------------
5530       Set message context for line sales credits
5531    -----------------------------------------------------------
5532 */
5533       l_sales_credit_id := NULL;
5534       IF l_debug_level  > 0 THEN
5535           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE SALES CREDITS' ) ;
5536       END IF;
5537 
5538       OE_MSG_PUB.set_msg_context(
5539          p_entity_code                => 'LINE_SCREDIT'
5540         ,p_entity_ref                 => p_x_line_scredit_tbl(I).orig_sys_credit_ref
5541         ,p_entity_id                  => null
5542         ,p_header_id                  => p_x_header_rec.header_id
5543         ,p_line_id                    => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).line_id
5544 --      ,p_batch_request_id           => p_x_header_rec.request_id
5545         ,p_order_source_id            => p_x_header_rec.order_source_id
5546         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5547         ,p_change_sequence            => p_x_header_rec.change_sequence
5548         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).orig_sys_line_ref
5549         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).orig_sys_shipment_ref
5550         ,p_source_document_type_id    => null
5551         ,p_source_document_id         => null
5552         ,p_source_document_line_id    => null
5553         ,p_attribute_code             => null
5554         ,p_constraint_id              => null
5555         );
5556 
5557 /* -----------------------------------------------------------
5558       Validate orig sys credit ref for line
5559    -----------------------------------------------------------
5560 */
5561       IF l_debug_level  > 0 THEN
5562           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_CREDIT_REF FOR LINE' ) ;
5563       END IF;
5564 
5565       IF p_x_line_scredit_tbl(I).orig_sys_credit_ref = FND_API.G_MISS_CHAR
5566       THEN
5567          IF l_debug_level  > 0 THEN
5568              oe_debug_pub.add(  'INVALID ORIG_SYS_CREDIT_REF FOR LINE... ' ) ;
5569          END IF;
5570 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_CREDIT_REF');
5571          OE_MSG_PUB.Add;
5572 	 p_return_status := FND_API.G_RET_STS_ERROR;
5573       END IF;
5574 
5575 /* -----------------------------------------------------------
5576       Validate line sales credits operation code
5577    -----------------------------------------------------------
5578 */
5579       IF l_debug_level  > 0 THEN
5580           oe_debug_pub.add(  'BEFORE VALIDATING LINE SALES CREDITS OPERATION CODE' ) ;
5581       END IF;
5582 
5583       IF p_x_line_scredit_tbl(I).operation NOT IN ('INSERT','CREATE',
5584 				                 'UPDATE','DELETE') OR
5585         (p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5586 					     IN ('INSERT','CREATE') AND
5587          p_x_line_scredit_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5588         (p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5589 					     IN ('UPDATE') AND
5590          p_x_line_scredit_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5591         (p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5592 					     IN ('DELETE') AND
5593          p_x_line_scredit_tbl(I).operation NOT IN ('DELETE'))
5594       THEN
5595 	 IF l_debug_level  > 0 THEN
5596 	     oe_debug_pub.add(  'INVALID LINE SALES CREDITS OPERATION CODE...' ) ;
5597 	 END IF;
5598 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5599          OE_MSG_PUB.Add;
5600 	 p_return_status := FND_API.G_RET_STS_ERROR;
5601       END IF;
5602 
5603 -- aksingh start on this (10/11/2000) this is in process of being coded
5604       IF  p_x_line_scredit_tbl(I).operation IN ('INSERT', 'CREATE')
5605       AND p_x_header_rec.operation = 'UPDATE'
5606       AND p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation
5607 					          = 'UPDATE'
5608       THEN
5609       Begin
5610          IF l_debug_level  > 0 THEN
5611              oe_debug_pub.add(  'NEW ADJUSTMENT FOR LINE LEVEL , THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5612          END IF;
5613          p_x_line_scredit_tbl(I).header_id  := l_header_id;
5614          p_x_line_scredit_tbl(I).line_id    := l_line_id;
5615 
5616          SELECT 1 into l_count
5617            FROM oe_sales_credits
5618           WHERE header_id              = p_x_header_rec.header_id
5619             AND line_id                = l_line_id
5620             AND orig_sys_credit_ref  =
5621                        p_x_line_scredit_tbl(I).orig_sys_credit_ref
5622             AND rownum                < 2;
5623 
5624          IF l_debug_level  > 0 THEN
5625              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... ' ) ;
5626          END IF;
5627          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5628          OE_MSG_PUB.Add;
5629          p_return_status := FND_API.G_RET_STS_ERROR;
5630       Exception
5631         When no_data_found then
5632           IF l_debug_level  > 0 THEN
5633               oe_debug_pub.add(  'VALID LINE LEVEL SALES CREDIT FOR INSERT' ) ;
5634           END IF;
5635         When others then
5636          IF l_debug_level  > 0 THEN
5637              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE SALES CREDIT... ' ) ;
5638          END IF;
5639          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5640          OE_MSG_PUB.Add;
5641          p_return_status := FND_API.G_RET_STS_ERROR;
5642       End;
5643       END IF; -- Insert, Update Operation
5644 
5645       IF  p_x_line_scredit_tbl(I).operation IN ('UPDATE','DELETE')
5646       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5647       AND p_x_line_tbl(p_x_line_scredit_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5648       THEN
5649       Begin
5650          IF l_debug_level  > 0 THEN
5651              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5652          END IF;
5653          IF l_debug_level  > 0 THEN
5654              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5655          END IF;
5656          IF l_debug_level  > 0 THEN
5657              oe_debug_pub.add(  'CREDIT REF: '||P_X_LINE_SCREDIT_TBL ( I ) .ORIG_SYS_CREDIT_REF ) ;
5658          END IF;
5659          p_x_line_scredit_tbl(I).header_id  := l_header_id;
5660          p_x_line_scredit_tbl(I).line_id    := l_line_id;
5661          SELECT sales_credit_id
5662            INTO l_sales_credit_id
5663            FROM oe_sales_credits
5664           WHERE header_id             = p_x_header_rec.header_id
5665             AND line_id               = l_line_id
5666             AND orig_sys_credit_ref =
5667                 p_x_line_scredit_tbl(I).orig_sys_credit_ref;
5668 
5669          p_x_line_scredit_tbl(I).sales_credit_id := l_sales_credit_id;
5670          IF l_debug_level  > 0 THEN
5671              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_LINE_SCREDIT_TBL ( I ) .HEADER_ID ) ) ;
5672          END IF;
5673          IF l_debug_level  > 0 THEN
5674              oe_debug_pub.add(  'ADJUST ID: '||TO_CHAR ( P_X_LINE_SCREDIT_TBL ( I ) .SALES_CREDIT_ID ) ) ;
5675          END IF;
5676 
5677       Exception
5678         When no_data_found then
5679           IF l_debug_level  > 0 THEN
5680               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE CREDIT BUT THAT DOES NOT EXIST... ' ) ;
5681           END IF;
5682           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5683           OE_MSG_PUB.Add;
5684           p_return_status := FND_API.G_RET_STS_ERROR;
5685         When others then
5686          IF l_debug_level  > 0 THEN
5687              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LINECRDT ... ' ) ;
5688          END IF;
5689          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5690          OE_MSG_PUB.Add;
5691          p_return_status := FND_API.G_RET_STS_ERROR;
5692       End;
5693       End IF; -- Update and Delete operation
5694 
5695 
5696    END LOOP;
5697 
5698 -- multiple payment starts..
5699 
5700    FOR I in 1..p_x_line_payment_tbl.count
5701    LOOP
5702 /* -----------------------------------------------------------
5703       Set message context for line PAYMENTs
5704    -----------------------------------------------------------
5705 */
5706 --      l_sales_payment_id := NULL;
5707       IF l_debug_level  > 0 THEN
5708           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE PAYMENTS' ) ;
5709       END IF;
5710 
5711       OE_MSG_PUB.set_msg_context(
5712          p_entity_code                => 'LINE_PAYMENT'
5713         ,p_entity_ref                 => p_x_line_payment_tbl(I).orig_sys_payment_ref
5714         ,p_entity_id                  => null
5715         ,p_header_id                  => p_x_header_rec.header_id
5716         ,p_line_id                    => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).line_id
5717 --      ,p_batch_request_id           => p_x_header_rec.request_id
5718         ,p_order_source_id            => p_x_header_rec.order_source_id
5719         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5720         ,p_change_sequence            => p_x_header_rec.change_sequence
5721         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).orig_sys_line_ref
5722         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_line_payment_tbl(I).line_index).orig_sys_shipment_ref
5723         ,p_source_document_type_id    => null
5724         ,p_source_document_id         => null
5725         ,p_source_document_line_id    => null
5726         ,p_attribute_code             => null
5727         ,p_constraint_id              => null
5728         );
5729 
5730 /* -----------------------------------------------------------
5731       Validate orig sys payment ref for line
5732    -----------------------------------------------------------
5733 */
5734       IF l_debug_level  > 0 THEN
5735           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_PAYMENT_REF FOR LINE' ) ;
5736       END IF;
5737 
5738       IF p_x_line_payment_tbl(I).orig_sys_payment_ref = FND_API.G_MISS_CHAR
5739       THEN
5740          IF l_debug_level  > 0 THEN
5741              oe_debug_pub.add(  'INVALID ORIG_SYS_PAYMENT_REF FOR LINE... ' ) ;
5742          END IF;
5743          /* multiple payments: new message */
5744 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_payment_REF');
5745          OE_MSG_PUB.Add;
5746 	 p_return_status := FND_API.G_RET_STS_ERROR;
5747       END IF;
5748 
5749 /* -----------------------------------------------------------
5750       Validate line PAYMENTs operation code
5751    -----------------------------------------------------------
5752 */
5753       IF l_debug_level  > 0 THEN
5754           oe_debug_pub.add(  'BEFORE VALIDATING LINE PAYMENTS OPERATION CODE' ) ;
5755       END IF;
5756 
5757       IF p_x_line_payment_tbl(I).operation NOT IN ('INSERT','CREATE',
5758 				                 'UPDATE','DELETE') OR
5759         (p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5760 					     IN ('INSERT','CREATE') AND
5761          p_x_line_payment_tbl(I).operation NOT IN ('INSERT','CREATE')) OR
5762         (p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5763 					     IN ('UPDATE') AND
5764          p_x_line_payment_tbl(I).operation NOT IN ('INSERT','CREATE','UPDATE','DELETE')) OR
5765         (p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5766 					     IN ('DELETE') AND
5767          p_x_line_payment_tbl(I).operation NOT IN ('DELETE'))
5768       THEN
5769 	 IF l_debug_level  > 0 THEN
5770 	     oe_debug_pub.add(  'INVALID LINE PAYMENTS OPERATION CODE...' ) ;
5771 	 END IF;
5772 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5773          OE_MSG_PUB.Add;
5774 	 p_return_status := FND_API.G_RET_STS_ERROR;
5775       END IF;
5776 
5777       IF  p_x_line_payment_tbl(I).operation IN ('INSERT', 'CREATE')
5778       AND p_x_header_rec.operation = 'UPDATE'
5779       AND p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation
5780 					          = 'UPDATE'
5781       THEN
5782       Begin
5783          IF l_debug_level  > 0 THEN
5784              oe_debug_pub.add(  'NEW PAYMENT FOR LINE LEVEL , THE EXISITNG HEARDER_ID:' || TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5785          END IF;
5786          p_x_line_payment_tbl(I).header_id  := l_header_id;
5787          p_x_line_payment_tbl(I).line_id    := l_line_id;
5788 
5789          SELECT 1 into l_count
5790            FROM oe_payments
5791           WHERE header_id              = p_x_header_rec.header_id
5792             AND line_id                = l_line_id
5793             AND orig_sys_payment_ref  =
5794                        p_x_line_payment_tbl(I).orig_sys_payment_ref
5795             AND rownum                < 2;
5796 
5797          IF l_debug_level  > 0 THEN
5798              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... ' ) ;
5799          END IF;
5800          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5801          OE_MSG_PUB.Add;
5802          p_return_status := FND_API.G_RET_STS_ERROR;
5803       Exception
5804         When no_data_found then
5805           IF l_debug_level  > 0 THEN
5806               oe_debug_pub.add(  'VALID LINE LEVEL PAYMENT FOR INSERT' ) ;
5807           END IF;
5808         When others then
5809          IF l_debug_level  > 0 THEN
5810              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE PAYMENT... ' ) ;
5811          END IF;
5812          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5813          OE_MSG_PUB.Add;
5814          p_return_status := FND_API.G_RET_STS_ERROR;
5815       End;
5816       END IF; -- Insert, Update Operation
5817 
5818       IF  p_x_line_payment_tbl(I).operation IN ('UPDATE','DELETE')
5819       AND p_x_header_rec.operation IN ('UPDATE','DELETE')
5820       AND p_x_line_tbl(p_x_line_payment_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5821       THEN
5822       Begin
5823          IF l_debug_level  > 0 THEN
5824              oe_debug_pub.add(  'HEADER ID: '||TO_CHAR ( P_X_HEADER_REC.HEADER_ID ) ) ;
5825              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5826              oe_debug_pub.add(  'PAYMENT REF: '||P_X_LINE_PAYMENT_TBL ( I ) .ORIG_SYS_PAYMENT_REF ) ;
5827          END IF;
5828          p_x_line_payment_tbl(I).header_id  := l_header_id;
5829          p_x_line_payment_tbl(I).line_id    := l_line_id;
5830          SELECT 1
5831            INTO l_count
5832            FROM oe_payments
5833           WHERE header_id             = p_x_header_rec.header_id
5834             AND line_id               = l_line_id
5835             AND orig_sys_payment_ref =
5836                 p_x_line_payment_tbl(I).orig_sys_payment_ref;
5837 
5838       Exception
5839         When no_data_found then
5840           IF l_debug_level  > 0 THEN
5841               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LINE PAYMENT BUT THAT DOES NOT EXIST... ' ) ;
5842           END IF;
5843           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5844           OE_MSG_PUB.Add;
5845           p_return_status := FND_API.G_RET_STS_ERROR;
5846         When others then
5847          IF l_debug_level  > 0 THEN
5848              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING PAYMENT ... ' ) ;
5849          END IF;
5850          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5851          OE_MSG_PUB.Add;
5852          p_return_status := FND_API.G_RET_STS_ERROR;
5853       End;
5854       End IF; -- Update and Delete operation
5855 
5856    END LOOP; -- multiple payments for line.
5857 
5858    FOR I in 1..p_x_lot_serial_tbl.count
5859    LOOP
5860 /* -----------------------------------------------------------
5861       Set message context for line lot serials
5862    -----------------------------------------------------------
5863 */
5864       l_lot_serial_id := NULL;
5865       IF l_debug_level  > 0 THEN
5866           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE LOT SERIALS' ) ;
5867       END IF;
5868 
5869       OE_MSG_PUB.set_msg_context(
5870          p_entity_code                => 'LOT_SERIAL'
5871         ,p_entity_ref                 => p_x_lot_serial_tbl(I).orig_sys_lotserial_ref
5872         ,p_entity_id                  => null
5873         ,p_header_id                  => p_x_header_rec.header_id
5874         ,p_line_id                    => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).line_id
5875 --      ,p_batch_request_id           => p_x_header_rec.request_id
5876         ,p_order_source_id            => p_x_header_rec.order_source_id
5877         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
5878         ,p_change_sequence            => p_x_header_rec.change_sequence
5879         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).orig_sys_line_ref
5880         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).orig_sys_shipment_ref
5881         ,p_source_document_type_id    => null
5882         ,p_source_document_id         => null
5883         ,p_source_document_line_id    => null
5884         ,p_attribute_code             => null
5885         ,p_constraint_id              => null
5886         );
5887 
5888 /* -----------------------------------------------------------
5889       Validate orig sys lotserial ref for line
5890    -----------------------------------------------------------
5891 */
5892       IF l_debug_level  > 0 THEN
5893           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_LOTSERIAL_REF FOR LINE' ) ;
5894       END IF;
5895 
5896       IF p_x_lot_serial_tbl(I).orig_sys_lotserial_ref = FND_API.G_MISS_CHAR
5897       THEN
5898          IF l_debug_level  > 0 THEN
5899              oe_debug_pub.add(  'INVALID ORIG_SYS_LOTSERIAL_REF... ' ) ;
5900          END IF;
5901 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_LOTSERIAL_REF');
5902          OE_MSG_PUB.Add;
5903 	 p_return_status := FND_API.G_RET_STS_ERROR;
5904       END IF;
5905 
5906 /* -----------------------------------------------------------
5907       Validate line lot serials operation code
5908    -----------------------------------------------------------
5909 */
5910       IF l_debug_level  > 0 THEN
5911           oe_debug_pub.add(  'BEFORE VALIDATING LINE LOT SERIALS OPERATION CODE' ) ;
5912       END IF;
5913 
5914       IF p_x_lot_serial_tbl(I).operation NOT IN ('INSERT','CREATE',
5915 			                       'UPDATE','DELETE') OR
5916         (p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).operation
5917 					   IN ('INSERT','CREATE') AND
5918          p_x_lot_serial_tbl(I).operation NOT IN ('INSERT','CREATE'))
5919       THEN
5920 	 IF l_debug_level  > 0 THEN
5921 	     oe_debug_pub.add(  'INVALID LINE LOT SERIALS OPERATION CODE...' ) ;
5922 	 END IF;
5923 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5924          OE_MSG_PUB.Add;
5925 	 p_return_status := FND_API.G_RET_STS_ERROR;
5926       END IF;
5927 
5928 -- aksingh start on this (10/11/2000) this is in process of being coded
5929       IF  p_x_lot_serial_tbl(I).operation IN ('INSERT', 'CREATE')
5930       AND p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).operation = 'UPDATE'
5931       THEN
5932       Begin
5933          IF l_debug_level  > 0 THEN
5934              oe_debug_pub.add(  'NEW LOT FOR LINE LEVEL , THE EXISITNG LINE_ID:' || L_LINE_ID ) ;
5935          END IF;
5936          p_x_lot_serial_tbl(I).line_id    := l_line_id;
5937 
5938          SELECT 1 into l_count
5939            FROM oe_lot_serial_numbers
5940           WHERE line_id                = l_line_id
5941             AND orig_sys_lotserial_ref  =
5942                        p_x_lot_serial_tbl(I).orig_sys_lotserial_ref
5943             AND rownum                < 2;
5944 
5945          IF l_debug_level  > 0 THEN
5946              oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO INSERT A NEW LOT WITH THE SAME LINE_ID AND ORIG_SYS_DISCOUNT_REF... ' ) ;
5947          END IF;
5948          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5949          OE_MSG_PUB.Add;
5950          p_return_status := FND_API.G_RET_STS_ERROR;
5951       Exception
5952         When no_data_found then
5953           IF l_debug_level  > 0 THEN
5954               oe_debug_pub.add(  'VALID LINE LEVEL LOT FOR INSERT' ) ;
5955           END IF;
5956         When others then
5957          IF l_debug_level  > 0 THEN
5958              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN INSERTING NEW LINE LOT... ' ) ;
5959          END IF;
5960          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5961          OE_MSG_PUB.Add;
5962          p_return_status := FND_API.G_RET_STS_ERROR;
5963       End;
5964       END IF; -- Insert, Create Opearation
5965 
5966       IF  p_x_lot_serial_tbl(I).operation IN ('UPDATE','DELETE')
5967       AND p_x_line_tbl(p_x_lot_serial_tbl(I).line_index).operation IN ('UPDATE','DELETE')
5968       THEN
5969       Begin
5970          IF l_debug_level  > 0 THEN
5971              oe_debug_pub.add(  'LINE ID: '|| L_LINE_ID ) ;
5972          END IF;
5973          IF l_debug_level  > 0 THEN
5974              oe_debug_pub.add(  'LOT REF: '||P_X_LOT_SERIAL_TBL ( I ) .ORIG_SYS_LOTSERIAL_REF ) ;
5975          END IF;
5976          p_x_lot_serial_tbl(I).line_id    := l_line_id;
5977          SELECT lot_serial_id
5978            INTO l_lot_serial_id
5979            FROM oe_lot_serial_numbers
5980           WHERE line_id               = l_line_id
5981             AND orig_sys_lotserial_ref =
5982                 p_x_lot_serial_tbl(I).orig_sys_lotserial_ref;
5983 
5984          p_x_lot_serial_tbl(I).lot_serial_id := l_lot_serial_id;
5985          IF l_debug_level  > 0 THEN
5986              oe_debug_pub.add(  'LOT ID: '||TO_CHAR ( P_X_LOT_SERIAL_TBL ( I ) .LOT_SERIAL_ID ) ) ;
5987          END IF;
5988 
5989       Exception
5990         When no_data_found then
5991           IF l_debug_level  > 0 THEN
5992               oe_debug_pub.add(  'INVALID OPERATION CODE. TRYING TO UPDATE OR DELETE AN EXISTING LOT BUT THAT DOES NOT EXIST... ' ) ;
5993           END IF;
5994           FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
5995           OE_MSG_PUB.Add;
5996           p_return_status := FND_API.G_RET_STS_ERROR;
5997         When others then
5998          IF l_debug_level  > 0 THEN
5999              oe_debug_pub.add(  'OTHERS EXCEPTION WHEN TRYING TO UPDATE OR DELETE AN EXISTING LOT... ' ) ;
6000          END IF;
6001          FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
6002          OE_MSG_PUB.Add;
6003          p_return_status := FND_API.G_RET_STS_ERROR;
6004       End;
6005       End IF; -- Update and Delete operation
6006 
6007 -- aksingh(10/11/2000) this is in process of being coded upto this point
6008 
6009    END LOOP;
6010 
6011 
6012    FOR I in 1..p_x_reservation_tbl.count
6013    LOOP
6014 /* -----------------------------------------------------------
6015       Set message context for line reservations
6016    -----------------------------------------------------------
6017 */
6018       IF l_debug_level  > 0 THEN
6019           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR LINE RESERVATIONS' ) ;
6020       END IF;
6021 
6022       OE_MSG_PUB.set_msg_context(
6023          p_entity_code                => 'RESERVATION'
6024         ,p_entity_ref                 => p_x_reservation_tbl(I).orig_sys_reservation_ref
6025         ,p_entity_id                  => null
6026         ,p_header_id                  => p_x_header_rec.header_id
6027         ,p_line_id                    => p_x_line_tbl(p_x_reservation_tbl(I).line_index).line_id
6028 --      ,p_batch_request_id           => p_x_header_rec.request_id
6029         ,p_order_source_id            => p_x_header_rec.order_source_id
6030         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
6031         ,p_change_sequence            => p_x_header_rec.change_sequence
6032         ,p_orig_sys_document_line_ref => p_x_line_tbl(p_x_reservation_tbl(I).line_index).orig_sys_line_ref
6033         ,p_orig_sys_shipment_ref      => p_x_line_tbl(p_x_reservation_tbl(I).line_index).orig_sys_shipment_ref
6034         ,p_source_document_type_id    => null
6035         ,p_source_document_id         => null
6036         ,p_source_document_line_id    => null
6037         ,p_attribute_code             => null
6038         ,p_constraint_id              => null
6039         );
6040 
6041 /* -----------------------------------------------------------
6042       Validate orig sys reservation ref for line
6043    -----------------------------------------------------------
6044 */
6045       IF l_debug_level  > 0 THEN
6046           oe_debug_pub.add(  'BEFORE VALIDATING ORIG_SYS_RESERVATION_REF FOR LINE' ) ;
6047       END IF;
6048 
6049       IF p_x_reservation_tbl(I).orig_sys_reservation_ref = FND_API.G_MISS_CHAR
6050       THEN
6051          IF l_debug_level  > 0 THEN
6052              oe_debug_pub.add(  'INVALID ORIG_SYS_RESERVATION_REF... ' ) ;
6053          END IF;
6054 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_ORIG_SYS_RESERVATION_REF');
6055          OE_MSG_PUB.Add;
6056 	 p_return_status := FND_API.G_RET_STS_ERROR;
6057       END IF;
6058 
6059 /* -----------------------------------------------------------
6060       Validate reservation details for line
6061    -----------------------------------------------------------
6062 */
6063       IF l_debug_level  > 0 THEN
6064           oe_debug_pub.add(  'BEFORE VALIDATING RESERVATION DETAILS FOR LINE' ) ;
6065       END IF;
6066 
6067       IF  p_x_reservation_tbl(I).revision              = FND_API.G_MISS_CHAR
6068       AND p_x_reservation_tbl(I).lot_number_id         = FND_API.G_MISS_NUM
6069       AND p_x_reservation_val_tbl(I).lot_number        = FND_API.G_MISS_CHAR
6070       AND p_x_reservation_tbl(I).subinventory_id       = FND_API.G_MISS_NUM
6071       AND p_x_reservation_val_tbl(I).subinventory_code = FND_API.G_MISS_CHAR
6072       AND p_x_reservation_tbl(I).locator_id            = FND_API.G_MISS_NUM
6073       THEN
6074          IF l_debug_level  > 0 THEN
6075              oe_debug_pub.add(  'INVALID RESERVATION DETAILS... ' ) ;
6076          END IF;
6077 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_RESERVATION_DETAILS');
6078          OE_MSG_PUB.Add;
6079 	 p_return_status := FND_API.G_RET_STS_ERROR;
6080       END IF;
6081 
6082 /* -----------------------------------------------------------
6083       Validate reservation quantity
6084    -----------------------------------------------------------
6085 */
6086       IF l_debug_level  > 0 THEN
6087           oe_debug_pub.add(  'BEFORE VALIDATING RESERVATION QUANTITY FOR LINE' ) ;
6088       END IF;
6089 
6090       IF p_x_reservation_tbl(I).quantity = FND_API.G_MISS_NUM OR
6091          p_x_reservation_tbl(I).quantity = 0 		    OR
6092          p_x_reservation_tbl(I).quantity < 0
6093       THEN
6094          IF l_debug_level  > 0 THEN
6095              oe_debug_pub.add(  'INVALID RESERVATION QUANTITY... ' ) ;
6096          END IF;
6097 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_RESERVATION_QUANTITY');
6098          OE_MSG_PUB.Add;
6099 	 p_return_status := FND_API.G_RET_STS_ERROR;
6100       END IF;
6101 
6102 /* -----------------------------------------------------------
6103       Validate reservation operation
6104    -----------------------------------------------------------
6105 */
6106       IF l_debug_level  > 0 THEN
6107           oe_debug_pub.add(  'BEFORE VALIDATING RESERVATION OPERATION FOR LINE' ) ;
6108       END IF;
6109 
6110       IF p_x_reservation_tbl(I).operation NOT IN ('INSERT','CREATE',
6111 						'UPDATE','DELETE')
6112       THEN
6113          IF l_debug_level  > 0 THEN
6114              oe_debug_pub.add(  'INVALID RESERVATION OPERATION... ' ) ;
6115          END IF;
6116 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_OPERATION_CODE');
6117          OE_MSG_PUB.Add;
6118 	 p_return_status := FND_API.G_RET_STS_ERROR;
6119       END IF;
6120 
6121 --    Following Line are added to fixed the bug for the duplicate reservation
6122 --    when the auto scheduling is on + within time fence
6123 --    bug# 1537689
6124       IF l_debug_level  > 0 THEN
6125           oe_debug_pub.add(  'LINE SUNINV: ' || P_X_LINE_TBL ( P_X_RESERVATION_TBL ( I ) .LINE_INDEX ) .SUBINVENTORY ) ;
6126       END IF;
6127       IF l_debug_level  > 0 THEN
6128           oe_debug_pub.add(  'RESV_REC SUNINV: ' || P_X_RESERVATION_VAL_TBL ( I ) .SUBINVENTORY_CODE ) ;
6129       END IF;
6130 /*commenting code for bug 1765449
6131       p_x_line_tbl(p_x_reservation_tbl(I).line_index).subinventory
6132                      := p_x_reservation_val_tbl(I).subinventory_code;
6133       oe_debug_pub.add('Line Suninv: ' || p_x_line_tbl(p_x_reservation_tbl(I).line_index).subinventory);
6134 */
6135 --    end change for bug# 1537689
6136 
6137    END LOOP;
6138 
6139 
6140 /* -----------------------------------------------------------
6141    Call Configurations Pre-Processing
6142    -----------------------------------------------------------
6143 */
6144       IF l_debug_level  > 0 THEN
6145           oe_debug_pub.add(  'BEFORE CALLING CONFIGURATIONS PRE-PROCESSING' ) ;
6146       END IF;
6147 
6148       OE_ORDER_IMPORT_CONFIG_PVT.Pre_Process(
6149          p_header_rec                   => p_x_header_rec
6150         ,p_x_line_tbl                     => p_x_line_tbl
6151         ,p_return_status                => l_return_status
6152         );
6153 
6154       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6155       AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6156 			          FND_API.G_RET_STS_UNEXP_ERROR)
6157       THEN
6158           p_return_status := l_return_status;
6159       END IF;
6160 
6161 
6162 /* -----------------------------------------------------------
6163    Call EDI Pre-Process
6164    -----------------------------------------------------------
6165 */
6166    IF p_x_header_rec.order_source_id = OE_Globals.G_ORDER_SOURCE_EDI
6167    THEN
6168       IF l_debug_level  > 0 THEN
6169           oe_debug_pub.add(  'BEFORE CALLING EDI PRE-PROCESS' ) ;
6170       END IF;
6171 
6172       OE_EDI_PVT.Pre_Process(
6173          p_header_rec                   => p_x_header_rec
6174         ,p_header_adj_tbl               => p_x_header_adj_tbl
6175         ,p_header_scredit_tbl           => p_x_header_scredit_tbl
6176         ,p_line_tbl                     => p_x_line_tbl
6177         ,p_line_adj_tbl                 => p_x_line_adj_tbl
6178         ,p_line_scredit_tbl             => p_x_line_scredit_tbl
6179         ,p_lot_serial_tbl               => p_x_lot_serial_tbl
6180 
6181         ,p_header_val_rec               => p_x_header_val_rec
6182         ,p_header_adj_val_tbl           => p_x_header_adj_val_tbl
6183         ,p_header_scredit_val_tbl       => p_x_header_scredit_val_tbl
6184         ,p_line_val_tbl                 => p_x_line_val_tbl
6185         ,p_line_adj_val_tbl             => p_x_line_adj_val_tbl
6186         ,p_line_scredit_val_tbl         => p_x_line_scredit_val_tbl
6187         ,p_lot_serial_val_tbl           => p_x_lot_serial_val_tbl
6188 
6189         ,p_return_status                => l_return_status
6190         );
6191 
6192       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6193       AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6194 			          FND_API.G_RET_STS_UNEXP_ERROR)
6195       THEN
6196             p_return_status := l_return_status;
6197       END IF;
6198 
6199    END IF;
6200 
6201   EXCEPTION
6202    WHEN OTHERS THEN
6203       IF l_debug_level  > 0 THEN
6204           oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
6205       END IF;
6206       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6207 	 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6208          OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Pre_Process');
6209       END IF;
6210 
6211 END PRE_PROCESS;
6212 
6213 
6214 /* -----------------------------------------------------------
6215    Procedure: Post_Process
6216    -----------------------------------------------------------
6217 */
6218 PROCEDURE Post_Process(
6219    p_x_header_rec                 IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type
6220   ,p_x_header_adj_tbl             IN OUT NOCOPY OE_Order_Pub.Header_Adj_Tbl_Type
6221   ,p_x_header_price_att_tbl       IN OUT NOCOPY OE_Order_Pub.Header_Price_Att_Tbl_Type
6222   ,p_x_header_adj_att_tbl         IN OUT NOCOPY OE_Order_Pub.Header_Adj_Att_Tbl_Type
6223   ,p_x_header_adj_assoc_tbl      IN OUT NOCOPY OE_Order_Pub.Header_Adj_Assoc_Tbl_Type
6224   ,p_x_header_scredit_tbl         IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Tbl_Type
6225   ,p_x_line_tbl			IN OUT NOCOPY OE_Order_Pub.Line_Tbl_Type
6226   ,p_x_line_adj_tbl		IN OUT NOCOPY OE_Order_Pub.Line_Adj_Tbl_Type
6227   ,p_x_line_price_att_tbl         IN OUT NOCOPY OE_Order_Pub.Line_Price_Att_Tbl_Type
6228   ,p_x_line_adj_att_tbl           IN OUT NOCOPY OE_Order_Pub.Line_Adj_Att_Tbl_Type
6229   ,p_x_line_adj_assoc_tbl         IN OUT NOCOPY OE_Order_Pub.Line_Adj_Assoc_Tbl_Type
6230   ,p_x_line_scredit_tbl           IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Tbl_Type
6231   ,p_x_lot_serial_tbl             IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Tbl_Type
6232 
6233   ,p_x_header_val_rec             IN OUT NOCOPY OE_Order_Pub.Header_Val_Rec_Type
6234   ,p_x_header_adj_val_tbl         IN OUT NOCOPY OE_Order_Pub.Header_Adj_Val_Tbl_Type
6235   ,p_x_header_scredit_val_tbl     IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Val_Tbl_Type
6236   ,p_x_line_val_tbl               IN OUT NOCOPY OE_Order_Pub.Line_Val_Tbl_Type
6237   ,p_x_line_adj_val_tbl           IN OUT NOCOPY OE_Order_Pub.Line_Adj_Val_Tbl_Type
6238   ,p_x_line_scredit_val_tbl       IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Val_Tbl_Type
6239   ,p_x_lot_serial_val_tbl         IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Val_Tbl_Type
6240 
6241   ,p_x_header_rec_old             IN OUT NOCOPY OE_Order_Pub.Header_Rec_Type
6242   ,p_x_header_adj_tbl_old         IN OUT NOCOPY OE_Order_Pub.Header_Adj_Tbl_Type
6243   ,p_x_header_scredit_tbl_old     IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Tbl_Type
6244   ,p_x_line_tbl_old		IN OUT NOCOPY OE_Order_Pub.Line_Tbl_Type
6245   ,p_x_line_adj_tbl_old		IN OUT NOCOPY OE_Order_Pub.Line_Adj_Tbl_Type
6246   ,p_x_line_price_att_tbl_old     IN OUT NOCOPY OE_Order_Pub.Line_Price_Att_Tbl_Type
6247   ,p_x_line_scredit_tbl_old       IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Tbl_Type
6248   ,p_x_lot_serial_tbl_old         IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Tbl_Type
6249 
6250   ,p_x_header_val_rec_old         IN OUT NOCOPY OE_Order_Pub.Header_Val_Rec_Type
6251   ,p_x_header_adj_val_tbl_old     IN OUT NOCOPY OE_Order_Pub.Header_Adj_Val_Tbl_Type
6252   ,p_x_header_scredit_val_tbl_old IN OUT NOCOPY OE_Order_Pub.Header_Scredit_Val_Tbl_Type
6253   ,p_x_line_val_tbl_old           IN OUT NOCOPY OE_Order_Pub.Line_Val_Tbl_Type
6254   ,p_x_line_adj_val_tbl_old       IN OUT NOCOPY OE_Order_Pub.Line_Adj_Val_Tbl_Type
6255   ,p_x_line_scredit_val_tbl_old   IN OUT NOCOPY OE_Order_Pub.Line_Scredit_Val_Tbl_Type
6256   ,p_x_lot_serial_val_tbl_old     IN OUT NOCOPY OE_Order_Pub.Lot_Serial_Val_Tbl_Type
6257 
6258   ,p_x_reservation_tbl     	IN OUT NOCOPY OE_Order_Pub.Reservation_Tbl_Type
6259   ,p_x_reservation_val_tbl     	IN OUT NOCOPY OE_Order_Pub.Reservation_Val_Tbl_Type
6260 
6261 ,p_return_status OUT NOCOPY VARCHAR2
6262 
6263 ) IS
6264    l_return_status		       VARCHAR2(1);
6265 /* Added the following variable to fix the bug 2355630 */
6266    l_unit_selling_price   NUMBER;
6267    --
6268    l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6269    --
6270 /* Added for bug 2734389 */
6271 l_msg_count     NUMBER;
6272 l_msg_data      VARCHAR2(2000);
6273 l_failed_rsv_temp_tbl INV_RESERVATION_GLOBAL.mtl_failed_rsv_tbl_type;
6274 /* finish 2734389 */
6275 
6276 BEGIN
6277 
6278 /* -----------------------------------------------------------
6279    Initialize return status
6280    -----------------------------------------------------------
6281 */
6282    IF l_debug_level  > 0 THEN
6283        oe_debug_pub.add(  'BEFORE INITIALIZING RETURN_STATUS' ) ;
6284    END IF;
6285    IF l_debug_level  > 0 THEN
6286        oe_debug_pub.add(  'ENTERING ORDER IMPORT POST_PROCESS' ) ;
6287    END IF;
6288 
6289    p_return_status := FND_API.G_RET_STS_SUCCESS; /* Init to Success */
6290 
6291 
6292    FOR I in 1..p_x_line_tbl.count
6293    LOOP
6294 /* -----------------------------------------------------------
6295       Set message context for the line
6296    -----------------------------------------------------------
6297 */
6298       IF l_debug_level  > 0 THEN
6299           oe_debug_pub.add(  'BEFORE SETTING MESSAGE CONTEXT FOR THE LINE' ) ;
6300       END IF;
6301 
6302       OE_MSG_PUB.set_msg_context(
6303          p_entity_code                => 'HEADER'
6304         ,p_entity_ref                 => null
6305         ,p_entity_id                  => null
6306         ,p_header_id                  => p_x_header_rec.header_id
6307         ,p_line_id                    => null
6308 --      ,p_batch_request_id           => p_x_header_rec.request_id
6309         ,p_order_source_id            => p_x_header_rec.order_source_id
6310         ,p_orig_sys_document_ref      => p_x_header_rec.orig_sys_document_ref
6311         ,p_change_sequence            => p_x_header_rec.change_sequence
6312         ,p_orig_sys_document_line_ref => p_x_line_tbl(I).orig_sys_line_ref
6313         ,p_orig_sys_shipment_ref      => p_x_line_tbl(I).orig_sys_shipment_ref
6314         ,p_source_document_type_id    => null
6315         ,p_source_document_id         => null
6316         ,p_source_document_line_id    => null
6317         ,p_attribute_code             => null
6318         ,p_constraint_id              => null
6319         );
6320 
6321 /* -----------------------------------------------------------
6322       Compare Price
6323    -----------------------------------------------------------
6324 */
6325       IF l_debug_level  > 0 THEN
6326           oe_debug_pub.add(  'BEFORE COMPARING PRICE' ) ;
6327       END IF;
6328 
6329 /* Added the following code to fix the bug 2355630 */
6330       l_unit_selling_price := -1;
6331       oe_debug_pub.add(  'net_price = ' || p_x_line_tbl(I).customer_item_net_price);
6332       oe_debug_pub.add(  'line_id = ' || p_x_line_tbl(I).line_id);
6333       IF p_x_line_tbl(I).customer_item_net_price <> FND_API.G_MISS_NUM THEN
6334 
6335          begin
6336            select unit_selling_price into l_unit_selling_price
6337            from oe_order_lines
6338            where line_id = p_x_line_tbl(I).line_id;
6339 
6340         exception
6341           when others then
6342             oe_debug_pub.add(  'ex usp = ' || l_unit_selling_price);
6343         end;
6344 
6345          IF l_debug_level  > 0 THEN
6346              oe_debug_pub.add(  'CUSTOMER_ITEM_NET_PRICE '||TO_CHAR ( P_X_LINE_TBL ( I ) .CUSTOMER_ITEM_NET_PRICE ) ) ;
6347          END IF;
6348          IF l_debug_level  > 0 THEN
6349              oe_debug_pub.add(  'UNIT_SELLING_PRICE '||TO_CHAR ( L_UNIT_SELLING_PRICE ) ) ;
6350          END IF;
6351 
6352       END IF;
6353 
6354 
6355       IF p_x_line_tbl(I).customer_item_net_price <> FND_API.G_MISS_NUM AND
6356          p_x_line_tbl(I).customer_item_net_price <> l_unit_selling_price AND
6357          l_unit_selling_price <> -1
6358       THEN
6359 	 IF l_debug_level  > 0 THEN
6360 	     oe_debug_pub.add(  'WARNING! ITEM PRICE SENT BY THE CUSTOMER IS DIFFERENT FROM THE ONE CALCULATED BY THE SYSTEM... ' ) ;
6361 	 END IF;
6362 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_PRICE_WARNING');
6363 	 FND_MESSAGE.SET_TOKEN('CUST_PRICE',p_x_line_tbl(I).customer_item_net_price);
6364 	 FND_MESSAGE.SET_TOKEN('SPLR_PRICE',l_unit_selling_price);
6365          OE_MSG_PUB.Add;
6366 --	 p_return_status := FND_API.G_RET_STS_ERROR;
6367       END IF;
6368 
6369 /* -----------------------------------------------------------
6370       Compare Payment Term
6371    -----------------------------------------------------------
6372 */
6373       IF l_debug_level  > 0 THEN
6374        oe_debug_pub.add('BEFORE COMPARING PAYMENT TERM' ) ;
6375        oe_debug_pub.add('cpti ' || p_x_line_tbl(I).customer_payment_term_id);
6376        IF p_x_line_val_tbl_old.exists(I) THEN --added for bug 4307609
6377          oe_debug_pub.add('cpt ' || p_x_line_val_tbl_old(I).customer_payment_term);
6378        end if ;
6379        oe_debug_pub.add('pti ' || p_x_line_tbl(I).payment_term_id);
6380       END IF;
6381 
6382       IF (p_x_line_tbl(I).customer_payment_term_id <> FND_API.G_MISS_NUM AND
6383          p_x_line_tbl(I).customer_payment_term_id <>
6384          p_x_line_tbl(I).payment_term_id) OR
6385          (  p_x_line_val_tbl_old.exists(I) -- added for 4307609
6386 	 AND p_x_line_val_tbl_old(I).customer_payment_term <> FND_API.G_MISS_CHAR
6387          AND
6388          p_x_line_val_tbl_old(I).customer_payment_term <>
6389          oe_id_to_value.payment_term(p_x_line_tbl(I).payment_term_id))
6390       THEN
6391 	 IF l_debug_level  > 0 THEN
6392 	     oe_debug_pub.add(  'WARNING! CUSTOMER AND SUPPLIER PAYMENT TERMS DIFFERENT... ' ) ;
6393 	 END IF;
6394 
6395 	 FND_MESSAGE.SET_NAME('ONT','OE_OI_PAYMENT_TERM_WARNING');
6396          IF nvl(p_x_line_tbl(I).customer_payment_term_id, FND_API.G_MISS_NUM)
6397             <> FND_API.G_MISS_NUM Then
6398             FND_MESSAGE.SET_TOKEN('CUST_TERM',p_x_line_tbl(I).customer_payment_term_id);
6399 	    FND_MESSAGE.SET_TOKEN('SPLR_TERM',p_x_line_tbl(I).payment_term_id);
6400          ELSIF p_x_line_val_tbl_old.exists(I)  -- added for 4307609
6401 	    AND nvl(p_x_line_val_tbl_old(I).customer_payment_term,FND_API.G_MISS_CHAR) <> FND_API.G_MISS_CHAR Then
6402             FND_MESSAGE.SET_TOKEN('CUST_TERM',p_x_line_val_tbl_old(I).customer_payment_term);
6403 	    FND_MESSAGE.SET_TOKEN('SPLR_TERM',oe_id_to_value.payment_term(p_x_line_tbl(I).payment_term_id));
6404          END IF;
6405          OE_MSG_PUB.Add;
6406 --	 p_return_status := FND_API.G_RET_STS_ERROR;
6407       END IF;
6408 
6409    END LOOP;
6410 
6411 
6412 /* -----------------------------------------------------------
6413    Inventory Reservations
6414    -----------------------------------------------------------
6415 */
6416    IF l_debug_level  > 0 THEN
6417        oe_debug_pub.add(  'BEFORE RESERVING INVENTORY' ) ;
6418    END IF;
6419 
6420       OE_ORDER_IMPORT_RESERVE_PVT.Reserve_Inventory(
6421          p_header_rec                   => p_x_header_rec
6422         ,p_line_tbl                     => p_x_line_tbl
6423         ,p_reservation_tbl              => p_x_reservation_tbl
6424         ,p_header_val_rec               => p_x_header_val_rec
6425         ,p_line_val_tbl                 => p_x_line_val_tbl
6426         ,p_reservation_val_tbl          => p_x_reservation_val_tbl
6427         ,p_return_status                => l_return_status
6428         );
6429 
6430       IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6431       AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6432 			          FND_API.G_RET_STS_UNEXP_ERROR)
6433       THEN
6434             p_return_status := l_return_status;
6435       END IF;
6436 
6437 /* Added the following if condition to fix the bug 3176286 */
6438       IF OE_SCHEDULE_UTIL.OESCH_PERFORMED_RESERVATION = 'Y' THEN
6439 /* Added the code for the bug 2734389 */
6440         oe_debug_pub.add(  'BEFORE CALLING THE INV FOR DO_CHECK_FOR_COMMIT FROM  ORDER IMPORT' , 1 ) ;
6441     INV_RESERVATION_PVT.Do_Check_For_Commit
6442         (p_api_version_number  => 1.0
6443         ,p_init_msg_lst        => FND_API.G_FALSE
6444         ,x_return_status       => l_return_status
6445         ,x_msg_count           => l_msg_count
6446         ,x_msg_data            => l_msg_data
6447         ,x_failed_rsv_temp_tbl => l_failed_rsv_temp_tbl);
6448     oe_debug_pub.add(  'AFTER CALLING THE INV FOR DO_CHECK_FOR_COMMIT : ' || L_RETURN_STATUS , 1 ) ;
6449     IF l_failed_rsv_temp_tbl.count > 0 THEN
6450       oe_debug_pub.add(  ' THE RESERVATION PROCESS HAS FAILED ' , 1 ) ;
6451       FND_MESSAGE.SET_NAME('ONT','OE_SCH_RSV_FAILURE');
6452       OE_MSG_PUB.Add;
6453     END IF;
6454     -- Error Handling Start
6455     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6456       oe_debug_pub.add(  'INSIDE UNEXPECTED ERROR' , 1 ) ;
6457       OE_MSG_PUB.Transfer_Msg_Stack;
6458       l_msg_count   := OE_MSG_PUB.COUNT_MSG;
6459 
6460       FOR I IN 1..l_msg_count LOOP
6461         l_msg_data :=  OE_MSG_PUB.Get(I,'F');
6462         oe_debug_pub.add(  L_MSG_DATA , 1 ) ;
6463       END LOOP;
6464       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6465     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
6466       oe_debug_pub.add(  ' INSIDE EXPECTED ERROR' , 1 ) ;
6467       OE_MSG_PUB.Transfer_Msg_Stack;
6468       l_msg_count   := OE_MSG_PUB.COUNT_MSG;
6469 
6470       FOR I IN 1..l_msg_count LOOP
6471         l_msg_data :=  OE_MSG_PUB.Get(I,'F');
6472         oe_debug_pub.add(  L_MSG_DATA , 1 ) ;
6473       END LOOP;
6474       RAISE FND_API.G_EXC_ERROR;
6475 
6476     END IF;
6477       --Error Handling End
6478 
6479     OE_SCHEDULE_UTIL.OESCH_PERFORMED_RESERVATION := 'N';
6480 
6481   -- Check for Performed Reservation End
6482   END IF;
6483   /* Finish code for 2734389 */
6484 
6485 /* -----------------------------------------------------------
6486    Call EDI Post-Process
6487    -----------------------------------------------------------
6488 */
6489 
6490    IF p_x_header_rec.order_source_id = OE_Globals.G_ORDER_SOURCE_EDI
6491    THEN
6492       IF l_debug_level  > 0 THEN
6493           oe_debug_pub.add(  'BEFORE CALLING EDI POST-PROCESS' ) ;
6494       END IF;
6495 
6496       OE_EDI_PVT.POST_PROCESS(
6497          p_header_rec                   => p_x_header_rec
6498         ,p_header_adj_tbl               => p_x_header_adj_tbl
6499         ,p_header_scredit_tbl           => p_x_header_scredit_tbl
6500         ,p_line_tbl                     => p_x_line_tbl
6501         ,p_line_adj_tbl                 => p_x_line_adj_tbl
6502         ,p_line_scredit_tbl             => p_x_line_scredit_tbl
6503         ,p_lot_serial_tbl               => p_x_lot_serial_tbl
6504 
6505         ,p_header_val_rec               => p_x_header_val_rec
6506         ,p_header_adj_val_tbl           => p_x_header_adj_val_tbl
6507         ,p_header_scredit_val_tbl       => p_x_header_scredit_val_tbl
6508         ,p_line_val_tbl                 => p_x_line_val_tbl
6509         ,p_line_adj_val_tbl             => p_x_line_adj_val_tbl
6510         ,p_line_scredit_val_tbl         => p_x_line_scredit_val_tbl
6511         ,p_lot_serial_val_tbl           => p_x_lot_serial_val_tbl
6512 
6513         ,p_return_status                => l_return_status
6514         );
6515 
6516         IF  p_return_status NOT IN (FND_API.G_RET_STS_ERROR)
6517         AND l_return_status     IN (FND_API.G_RET_STS_ERROR,
6518 			            FND_API.G_RET_STS_UNEXP_ERROR)
6519         THEN
6520               p_return_status := l_return_status;
6521         END IF;
6522    END IF;
6523 
6524 
6525   EXCEPTION
6526    WHEN OTHERS THEN
6527       IF l_debug_level  > 0 THEN
6528           oe_debug_pub.add(  'UNEXPECTED ERROR: '||SQLERRM ) ;
6529       END IF;
6530       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6531 	 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6532          OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, 'Post_Process');
6533       END IF;
6534 
6535 END POST_PROCESS;
6536 
6537 
6538 END OE_ORDER_IMPORT_SPECIFIC_PVT;