DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_CNCL_VALIDATE_HEADER

Source


1 PACKAGE BODY OE_CNCL_Validate_Header AS
2 /* $Header: OEXVCHDB.pls 120.8 2006/06/26 17:43:08 aycui ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME    CONSTANT VARCHAR2(30) := 'OE_CNCL_Validate_Header';
7 
8 
9 /* LOCAL PROCEDURES */
10 
11 /*-------------------------------------------------------
12 PROCEDURE:    Check_Book_Reqd_Attributes
13 Description:
14 --------------------------------------------------------*/
15 
16 PROCEDURE Check_Book_Reqd_Attributes
17 ( p_header_rec            IN OE_Order_PUB.Header_Rec_Type
18 , x_return_status         IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2
19 )
20 IS
21 l_order_type_rec      OE_Order_Cache.Order_Type_Rec_Type;
22 l_set_of_books_rec    OE_Order_Cache.Set_Of_Books_Rec_Type;
23 BEGIN
24 
25     oe_debug_pub.add('Enter OE_CNCL_VALIDATE_HEADER.CHECK_BOOK_REQD',1);
26 
27   -- Check for the following required fields on a booked order:
28   -- Order Number, Sold To Org, Invoice To Org,
29   -- Price List, Tax Exempt Flag, Sales Person, Order Date
30 
31   IF p_header_rec.sold_to_org_id IS NULL
32   THEN
33     x_return_status := FND_API.G_RET_STS_ERROR;
34     FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
35     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
36     OE_Order_UTIL.Get_Attribute_Name('SOLD_TO_ORG_ID'));
37     OE_MSG_PUB.ADD;
38   END IF;
39 
40   IF p_header_rec.salesrep_id IS NULL
41   THEN
42     x_return_status := FND_API.G_RET_STS_ERROR;
43     FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
44     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
45     OE_Order_UTIL.Get_Attribute_Name('SALESREP_ID'));
46     OE_MSG_PUB.ADD;
47   END IF;
48 
49   IF p_header_rec.ordered_date IS NULL
50   THEN
51     x_return_status := FND_API.G_RET_STS_ERROR;
52     FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
53     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
54     OE_Order_UTIL.Get_Attribute_Name('ORDERED_DATE'));
55     OE_MSG_PUB.ADD;
56   END IF;
57 
58   IF p_header_rec.invoice_to_org_id IS NULL
59   THEN
60     x_return_status := FND_API.G_RET_STS_ERROR;
61     FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
62     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
63       OE_Order_UTIL.Get_Attribute_Name('INVOICE_TO_ORG_ID'));
64     OE_MSG_PUB.ADD;
65   END IF;
66 
67   IF p_header_rec.tax_exempt_flag IS NULL
68   THEN
69     x_return_status := FND_API.G_RET_STS_ERROR;
70     FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
71     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
72       OE_Order_UTIL.Get_Attribute_Name('TAX_EXEMPT_FLAG'));
73     OE_MSG_PUB.ADD;
74   END IF;
75 
76 
77   -- Fix bug 1262790
78   -- Ship To Org and Payment Term are required only on regular or
79   -- MIXED orders, NOT on RETURN orders
80 
81   oe_debug_pub.add('p_header_rec.ship_to_org_id' || to_char(p_header_rec.ship_to_org_id),2);
82 
83   IF p_header_rec.order_category_code <>
84                OE_GLOBALS.G_RETURN_CATEGORY_CODE THEN
85 
86     IF p_header_rec.ship_to_org_id IS NULL
87     THEN
88       x_return_status := FND_API.G_RET_STS_ERROR;
89       FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
90       FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
91         OE_Order_UTIL.Get_Attribute_Name('SHIP_TO_ORG_ID'));
92       OE_MSG_PUB.ADD;
93     END IF;
94 
95     IF p_header_rec.payment_term_id IS NULL
96     THEN
97       x_return_status := FND_API.G_RET_STS_ERROR;
98       FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
99       FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
100         OE_Order_UTIL.Get_Attribute_Name('PAYMENT_TERM_ID'));
101       OE_MSG_PUB.ADD;
102     END IF;
103 
104   END IF;
105 
106 
107   -- Check for additional required fields based on flags set
108   -- at the order type: agreement, customer po number
109 
110   l_order_type_rec := OE_Order_Cache.Load_Order_Type
111                       (p_header_rec.order_type_id);
112 
113   IF ( l_order_type_rec.agreement_required_flag = 'Y' AND
114        p_header_rec.agreement_id IS NULL)
115   THEN
116     x_return_status := FND_API.G_RET_STS_ERROR;
117     FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
118     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
119     OE_Order_UTIL.Get_Attribute_Name('AGREEMENT_ID'));
120     OE_MSG_PUB.ADD;
121   END IF;
122 
123   IF ( l_order_type_rec.require_po_flag = 'Y' AND
124        p_header_rec.cust_po_number IS NULL)
125   THEN
126     x_return_status := FND_API.G_RET_STS_ERROR;
127     FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
128     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
129     OE_Order_UTIL.Get_Attribute_Name('CUST_PO_NUMBER'));
130     OE_MSG_PUB.ADD;
131   END IF;
132 
133 
134   -- Conversion Type Related Checks
135 
136   -- IF SOB currency is dIFferent from order currency,
137   -- conversion type is required
138 
139   IF p_header_rec.conversion_type_code IS NULL
140   THEN
141      l_set_of_books_rec := OE_Order_Cache.Load_Set_Of_Books;
142 
143      IF ( l_set_of_books_rec.currency_code <>
144       p_header_rec.transactional_curr_code) THEN
145       x_return_status := FND_API.G_RET_STS_ERROR;
146       FND_MESSAGE.SET_NAME('ONT','OE_VAL_REQ_NON_BASE_CURRENCY');
147       FND_MESSAGE.SET_TOKEN
148       ('ORDER_CURRENCY',p_header_rec.transactional_curr_code);
149       FND_MESSAGE.SET_TOKEN('SOB_CURRENCY',l_set_of_books_rec.currency_code);
150       OE_MSG_PUB.ADD;
151      END IF;
152 
153   -- IF conversion type is 'User', conversion rate AND conversion rate date
154   -- required.
155 
156   ELSIF p_header_rec.conversion_type_code = 'User'
157   THEN
158 
159     IF p_header_rec.conversion_rate IS NULL OR
160        p_header_rec.conversion_rate_date IS NULL
161     THEN
162       x_return_status := FND_API.G_RET_STS_ERROR;
163       FND_MESSAGE.SET_NAME('ONT','OE_VAL_USER_CONVERSION_TYPE');
164       OE_MSG_PUB.ADD;
165     END IF;
166 
167   END IF; -- END of checks based on conversion type
168 
169 
170   -- Checks based on payment type attached to the order
171 
172   IF p_header_rec.payment_type_code IS NOT NULL THEN
173 
174     -- payment amount should be specIFied
175     -- only IF Payment Type is NOT Credit Card
176 
177     IF  p_header_rec.payment_type_code <> 'CREDIT_CARD' AND
178         p_header_rec.payment_amount IS NULL
179     THEN
180       x_return_status := FND_API.G_RET_STS_ERROR;
181       FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
182       FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
183       OE_Order_UTIL.Get_Attribute_Name('PAYMENT_AMOUNT'));
184       OE_MSG_PUB.ADD;
185     END IF;
186 
187     -- check number required IF payment type is Check
188 
189     IF (p_header_rec.payment_type_code = 'CHECK' AND
190         p_header_rec.check_number IS NULL )
191     THEN
192       x_return_status := FND_API.G_RET_STS_ERROR;
193       FND_MESSAGE.SET_NAME('ONT','OE_VAL_CHECK_NUM_REQD');
194       OE_MSG_PUB.ADD;
195     END IF;
196 
197     -- credit card holder name, number AND expiration date
198     -- required for payment type of Credit Card
199 
200     /*
201     ** Following Validation Moved to Authorize Credit Card
202     ** Payment Routine. Not required anymore at BOOKING.
203     IF p_header_rec.payment_type_code = 'CREDIT_CARD' THEN
204       IF p_header_rec.credit_card_holder_name IS NULL
205       OR p_header_rec.credit_card_number IS NULL
206       OR p_header_rec.credit_card_expiration_date IS NULL
207       THEN
208       x_return_status := FND_API.G_RET_STS_ERROR;
209       FND_MESSAGE.SET_NAME('ONT','OE_VAL_CREDIT_CARD_REQD');
210       OE_MSG_PUB.ADD;
211       END IF;
212     END IF;
213     */
214 
215   END IF; -- END of checks related to payment type
216 
217     oe_debug_pub.add('Exiting OE_CNCL_VALIDATE_HEADER.CHECK_BOOK_REQD',1);
218 EXCEPTION
219   WHEN OTHERS THEN
220     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
221 
222     IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
223     THEN
224       OE_MSG_PUB.Add_Exc_Msg
225       (  G_PKG_NAME ,
226         'Check_Book_Reqd_Attributes'
227       );
228     END IF;
229 
230     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
231 END Check_Book_Reqd_Attributes;
232 
233 ---------------------------------------------------------------
234 -- FUNCTION Is_Duplicate_PO_Number
235 -- Added to fix bug 1162304
236 -- Returns TRUE if the PO number is referenced on another order
237 -- for the same customer
238 ---------------------------------------------------------------
239 
240 FUNCTION Is_Duplicate_PO_Number
241 ( p_cust_po_number                  IN VARCHAR2
242 , p_sold_to_org_id                  IN NUMBER
243 , p_header_id                       IN NUMBER
244 ) RETURN BOOLEAN
245 IS
246 l_duplicate_exists		varchar2(1);
247 BEGIN
248 
249 	SELECT /* MOAC_SQL_NO_CHANGE */ 'Y'
250 	INTO l_duplicate_exists
251 	FROM DUAL
252 	WHERE EXISTS (SELECT 'Y'
253 			    FROM OE_ORDER_HEADERS
254 			    WHERE HEADER_ID <> p_header_id
255 				 AND SOLD_TO_ORG_ID = p_sold_to_org_id
256 				 AND CUST_PO_NUMBER = p_cust_po_number )
257         OR EXISTS (SELECT 'Y'
258                    FROM OE_ORDER_LINES
259                    WHERE HEADER_ID <> p_header_id
260                      AND SOLD_TO_ORG_ID = p_sold_to_org_id
261                      AND CUST_PO_NUMBER = p_cust_po_number );
262 
263      RETURN TRUE;
264 
265 EXCEPTION
266      WHEN NO_DATA_FOUND THEN
267         RETURN FALSE;
268 
269 END Is_Duplicate_PO_Number;
270 
271 /*-------------------------------------------------------
272 PROCEDURE:    Entity
273 Description:
274 --------------------------------------------------------*/
275 
276 PROCEDURE Entity
277 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
278 ,   p_header_rec                    IN  OE_Order_PUB.Header_Rec_Type
279 )
280 IS
281 l_return_status     VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
282 l_dummy             VARCHAR2(10);
283 l_price_list_rec    OE_Order_Cache.Price_List_Rec_Type;
284 -- l_order_type_rec    OE_Order_Cache.Order_Type_Rec_Type;
285 -- L_agreement_rec     OE_Order_Cache.Agreement_Rec_Type;
286 
287 l_agreement_name    varchar2(240);
288 l_sold_to_org       number;
289 l_price_list_id     number;
290 lcustomer_relations varchar2(1);
291 l_list_type_code	VARCHAR2(30);
292 
293 -- eBTax Changes
294   l_ship_to_cust_Acct_id  hz_cust_Accounts.cust_Account_id%type;
295   l_ship_to_party_id      hz_cust_accounts.party_id%type;
296   l_ship_to_party_site_id hz_party_sites.party_site_id%type;
297   l_bill_to_cust_Acct_id  hz_cust_Accounts.cust_Account_id%type;
298   l_bill_to_party_id      hz_cust_accounts.party_id%type;
299   l_bill_to_party_site_id hz_party_sites.party_site_id%type;
300   l_org_id                NUMBER;
301 --  l_legal_entity_id       NUMBER;
302 
303      cursor partyinfo(p_site_org_id HZ_CUST_SITE_USES_ALL.SITE_USE_ID%type) is
304      SELECT cust_acct.cust_account_id,
305             cust_Acct.party_id,
306             acct_site.party_site_id,
307             site_use.org_id
308       FROM
309             HZ_CUST_SITE_USES_ALL       site_use,
310             HZ_CUST_ACCT_SITES_ALL      acct_site,
311             HZ_CUST_ACCOUNTS_ALL        cust_Acct
312      WHERE  site_use.site_use_id = p_site_org_id
313        AND  site_use.cust_acct_site_id  = acct_site.cust_acct_site_id
314        and  acct_site.cust_account_id = cust_acct.cust_account_id;
315   -- end eBtax changes
316 
317 --bug 4729536
318 Cursor Cur_Customer_Relations IS
319     SELECT /*MOAC_SQL_NO_CHANGE*/ 'VALID'
320     FROM   oe_ship_to_orgs_v
321     WHERE site_use_id = p_header_rec.ship_to_org_id
322     AND customer_id = p_header_rec.sold_to_org_id
323     AND ROWNUM = 1
324 
325     UNION ALL
326 
327     SELECT /*MOAC_SQL_NO_CHANGE*/ 'VALID'
328     FROM   oe_ship_to_orgs_v osov
329     WHERE site_use_id = p_header_rec.ship_to_org_id
330     AND EXISTS
331 		(SELECT 1 FROM
332                  HZ_CUST_ACCT_RELATE hcar
333                     WHERE hcar.cust_account_id = osov.customer_id AND
334 		    hcar.related_cust_account_id = p_header_rec.sold_to_org_id
335 		    /* added the following condition to fix the bug 2002486 */
336                     AND hcar.ship_to_flag = 'Y')
337     AND ROWNUM = 1;
338 
339 Cursor Cur_customer_relations_inv IS
340     SELECT /*MOAC_SQL_NO_CHANGE*/ 'VALID'
341     FROM   oe_invoice_to_orgs_v
342     WHERE site_use_id = p_header_rec.invoice_to_org_id
343     AND customer_id = p_header_rec.sold_to_org_id
344     AND ROWNUM = 1
345 
346     UNION ALL
347 
348     SELECT /*MOAC_SQL_NO_CHANGE*/ 'VALID'
349     FROM   oe_invoice_to_orgs_v oito
350     WHERE oito.site_use_id = p_header_rec.invoice_to_org_id
351     AND EXISTS(
352                     SELECT 1 FROM
353                     HZ_CUST_ACCT_RELATE hcar WHERE
354 		    hcar.cust_account_id = oito.customer_id AND
355                     hcar.related_cust_account_id = p_header_rec.sold_to_org_id
356                     AND hcar.bill_to_flag = 'Y')
357     AND ROWNUM = 1;
358 
359 
360 BEGIN
361     oe_debug_pub.add('Enter OE_CNCL_VALIDATE_HEADER.ENTITY',1);
362 
363     --  Check required attributes.
364  --lcustomer_relations := FND_PROFILE.VALUE('ONT_CUSTOMER_RELATIONSHIPS');
365  lcustomer_relations := OE_Sys_Parameters.VALUE('CUSTOMER_RELATIONSHIPS_FLAG');
366 
367 
368 
369 
370     ----------------------------------------------------------
371     --  Check rest of required attributes here.
372     ----------------------------------------------------------
373 
374 
375     oe_debug_pub.add('p_header_rec.order_type_id' || p_header_rec.order_type_id, 2);
376 
377     IF p_header_rec.order_type_id IS NULL
378     THEN
379       l_return_status := FND_API.G_RET_STS_ERROR;
380 
381       IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_ERROR)
382       THEN
383         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
384         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
385         OE_Order_UTIL.Get_Attribute_Name('ORDER_TYPE_ID'));
386         OE_MSG_PUB.Add;
387       END IF;
388     END IF;
389 
390     --add messages
391 
392 
393     oe_debug_pub.add('p_header_rec.transactional_curr_code' || p_header_rec.transactional_curr_code, 2);
394 
395     IF p_header_rec.transactional_curr_code IS NULL
396     THEN
397       l_return_status := FND_API.G_RET_STS_ERROR;
398 
399       IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_ERROR)
400       THEN
401         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
402         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
403         OE_Order_UTIL.Get_Attribute_Name('TRANSACTIONAL_CURR_CODE'));
404         OE_MSG_PUB.Add;
405       END IF;
406 
407     END IF;
408 
409 
410     --  Return Error IF a required attribute is missing.
411     IF l_return_status = FND_API.G_RET_STS_ERROR
412     THEN
413         RAISE FND_API.G_EXC_ERROR;
414     END IF;
415 
416 
417     ----------------------------------------------------------
418     --  Check conditionally required attributes here.
419     ----------------------------------------------------------
420 
421     --  Check attributes required for booked header
422 
423 
424     oe_debug_pub.add('p_header_rec.booked_flag' || p_header_rec.booked_flag, 2);
425 
426 
427     IF p_header_rec.booked_flag = 'Y' THEN
428 
429       Check_Book_Reqd_Attributes
430       ( p_header_rec      => p_header_rec
431       , x_return_status    => l_return_status
432        );
433 
434     END IF;
435 
439 
436     -- IF the Tax handling is "Exempt"
437 
438      oe_debug_pub.add('p_header_rec.tax_exempt_flag' || p_header_rec.tax_exempt_flag, 2);
440     IF p_header_rec.tax_exempt_flag = 'E'
441     THEN
442      -- Check for Tax exempt reason
443       IF p_header_rec.tax_exempt_reason_code IS NULL  OR
444          p_header_rec.tax_exempt_reason_code = FND_API.G_MISS_CHAR
445       THEN
446          l_return_status := FND_API.G_RET_STS_ERROR;
447 
448          IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_ERROR)
449          THEN
450            fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
451            FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
452            OE_Order_UTIL.Get_Attribute_Name('TAX_EXEMPT_REASON_CODE'));
453            OE_MSG_PUB.Add;
454          END IF;
455 
456       END IF;
457 
458     END IF; -- IF Tax handling is exempt
459 
460     -- IF the TAX handling is STANDARD THEN we can not validate the
461     -- Tax Exempt Number as it can be a NULL value.
462 
463     -- IF the Tax handling is "Required"
464     IF p_header_rec.tax_exempt_flag = 'R'
465     THEN
466 
467       -- Check for Tax exempt number/Tax exempt reason.
468 
469       IF (p_header_rec.tax_exempt_number IS NOT NULL AND
470           p_header_rec.tax_exempt_number <> FND_API.G_MISS_CHAR)
471           OR
472          (p_header_rec.tax_exempt_reason_code IS NOT NULL AND
473           p_header_rec.tax_exempt_reason_code <> FND_API.G_MISS_CHAR)
474       THEN
475           l_return_status := FND_API.G_RET_STS_ERROR;
476 
477           IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_ERROR)
478           THEN
479             fnd_message.set_name('ONT','OE_TAX_EXEMPTION_NOT_ALLOWED');
480             OE_MSG_PUB.Add;
481           END IF;
482       END IF;
483 
484     END IF;
485 
486     --  Return Error IF a conditionally required attribute is missing.
487 
488     IF l_return_status = FND_API.G_RET_STS_ERROR
489     THEN
490       RAISE FND_API.G_EXC_ERROR;
491     END IF;
492 
493 
494     ----------------------------------------------------------------
495     -- VALIDATE ATTRIBUTE DEPENDENCIES
496     ----------------------------------------------------------------
497 
498     oe_debug_pub.add('New price ' ||  p_header_rec.price_list_id,2);
499     oe_debug_pub.add('New curr ' ||  p_header_rec.transactional_curr_code,2);
500     -- Validate currency
501 
502     l_price_list_rec :=
503     OE_Order_Cache.Load_Price_List ( p_header_rec.price_list_id );
504 
505 
506     oe_debug_pub.add('p_header_rec.price_list_id' || p_header_rec.price_list_id, 2);
507 
508 
509     IF p_header_rec.price_list_id IS NOT NULL
510     THEN
511 
512       IF p_header_rec.transactional_curr_code <>
513          l_price_list_rec.currency_code
514       THEN
515         l_return_status := FND_API.G_RET_STS_ERROR;
516         fnd_message.set_name('ONT','OE_VAL_ORD_CURRENCY_MISMATCH');
517         FND_MESSAGE.SET_TOKEN('ORDER_CURRENCY',
518         p_header_rec.transactional_curr_code);
519         FND_MESSAGE.SET_TOKEN('PRICE_LIST_CURRENCY',
520         l_price_list_rec.currency_code);
521         OE_MSG_PUB.Add;
522       END IF; -- Currency Mismatch.
523 
524     END IF; -- Price list or currency changed.
525 
526     -- Currency_date, currency_rate should be null when type is null.
527 
528 
529     oe_debug_pub.add('p_header_rec.Conversion_type_code' || p_header_rec.Conversion_type_code, 2);
530 
531     IF p_header_rec.Conversion_type_code IS NULL
532     THEN
533       IF Nvl(p_header_rec.conversion_rate, FND_API.G_MISS_NUM)
534                                         <> FND_API.G_MISS_NUM  OR
535          Nvl(p_header_rec.conversion_rate_date, FND_API.G_MISS_DATE)
536                                         <> FND_API.G_MISS_DATE
537       THEN
538         l_return_status :=  FND_API.G_RET_STS_ERROR;
539         fnd_message.set_name('ONT','OE_VAL_CONVERSION_TYPE');
540         OE_MSG_PUB.Add;
541       END IF;
542 
543     END IF;
544 
545   -- made changes to the bug 3220059
546    -- Validation to check that conversion rate are null when type is not User
547 
548   IF p_header_rec.conversion_type_code <> 'User' AND
549         p_header_rec.conversion_rate IS NOT NULL
550    THEN
551     l_return_status := FND_API.G_RET_STS_ERROR;
552     FND_MESSAGE.SET_NAME('ONT','OE_VALIDATION_CONV_TYPE');
553     OE_MSG_PUB.ADD;
554 
555   END IF; -- END of checks based on conversion type
556 
557     oe_debug_pub.add('p_header_rec.ordered_date' || p_header_rec.ordered_date, 2);
558 
559     --  Order Type has to be valid
560         BEGIN
561 
562           SELECT  'VALID'
563           INTO  l_dummy
564           FROM  OE_ORDER_TYPES_V
565           WHERE  ORDER_TYPE_ID = p_header_rec.order_type_id
566           AND  ROWNUM = 1;
567           --
568           -- Commented out when importing CLOSED orders
569           --           AND  p_header_rec.ordered_date
570           -- BETWEEN NVL(START_DATE_ACTIVE,p_header_rec.ordered_date)
571           -- AND     NVL( END_DATE_ACTIVE,p_header_rec.ordered_date);
572           --  Valid Order Type.
573 
577             fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
574         EXCEPTION
575           WHEN NO_DATA_FOUND THEN
576             l_return_status := FND_API.G_RET_STS_ERROR;
578             FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
579             OE_Order_Util.Get_Attribute_Name('ORDER_TYPE_ID'));
580             OE_MSG_PUB.Add;
581 
582           WHEN OTHERS THEN
583 
584             IF OE_MSG_PUB.Check_Msg_Level
585                           (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
586             THEN
587 
588               OE_MSG_PUB.Add_Exc_Msg
589               (  G_PKG_NAME ,
590                 'Record - Order Type'
591                );
592             END IF;
593 
594             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
595         END;
596 
597     --  Agreement depends on Order Type AND Sold To Org
598 
599 
600     oe_debug_pub.add('p_header_rec.agreement_id' || p_header_rec.agreement_id, 2);
601 
602     IF p_header_rec.agreement_id IS NOT NULL THEN
603         -- commented by Geresh
604         -- l_agreement_rec :=
605         -- OE_Order_Cache.Load_Agreement (p_header_rec.agreement_id);
606 
607         BEGIN
608 		BEGIN
609             select list_type_code
610 		  into l_list_type_code
611 		  from qp_list_headers_vl
612 		  where list_header_id = p_header_rec.price_list_id;
613 		EXCEPTION WHEN NO_DATA_FOUND THEN
614 		  null;
615           END;
616 
617           IF NOT OE_GLOBALS.EQUAL(l_list_type_code,'PRL') THEN
618 		-- any price list with 'PRL' type should be allowed to
619 		-- be associated with any agreement according to bug 1386406.
620 
621             select name ,sold_to_org_id , price_list_id
622             into l_agreement_name,l_sold_to_org,l_price_list_id
623             from oe_agreements_v
624             where agreement_id = p_header_rec.agreement_id
625             AND ROWNUM = 1;
626             -- Commented out when importing CLOSED orders
627             --
628             -- AND trunc(nvl(p_header_rec.pricing_date,sysdate)) between
629             -- trunc(nvl(START_DATE_ACTIVE,add_months(sysdate,-10000)))
630             -- AND  trunc(nvl(END_DATE_ACTIVE,add_months(sysdate,+10000)));
631 
632             -- Geresh added
633             IF l_price_list_id <> p_Header_rec.price_list_id
634             THEN
635               fnd_message.set_name('ONT', 'OE_INVALID_AGREEMENT_PLIST');
636               fnd_message.set_Token
637               ('AGREEMENT_NAME', l_agreement_name || sqlerrm);
638               fnd_message.set_Token('PRICE_LIST1', p_Header_rec.price_list_id);
639               fnd_message.set_Token('PRICE_LIST2', l_price_list_id);
640               OE_MSG_PUB.Add;
641               oe_debug_pub.add('Invalid Agreement +price_list_id combination',2);
642               raise FND_API.G_EXC_ERROR;
643             END IF;
644           END IF;
645 
646 
647         EXCEPTION
648            WHEN NO_DATA_FOUND THEN
649              fnd_message.set_name('ONT', 'OE_INVALID_AGREEMENT_PLIST');
650              fnd_message.set_Token('AGREEMENT_NAME', l_agreement_name);
651              fnd_message.set_Token('PRICE_LIST1', p_Header_rec.price_list_id);
652              fnd_message.set_Token('PRICE_LIST2', l_price_list_id || sqlerrm);
653              OE_MSG_PUB.Add;
654              oe_debug_pub.add
655              ('No Data Found Agreement+price_list_id combination',2);
656              raise FND_API.G_EXC_ERROR;
657         END;
658 
659        -- l_order_type_rec :=
660        --  OE_Order_Cache.Load_Order_Type (p_header_rec.order_type_id);
661 
662     END IF;  --  Agreement is not null
663 
664     --  Ship to Org id depends on sold to org.
665 
666     oe_debug_pub.add('p_header_rec.ship_to_org_id' || p_header_rec.ship_to_org_id, 2);
667 
668     IF p_header_rec.ship_to_org_id IS NOT NULL
669     THEN
670 
671       BEGIN
672         oe_debug_pub.add
673         ('ship_to_org_id :'||to_char(p_header_rec.ship_to_org_id),2);
674         oe_debug_pub.add
675         ('Customer Relation :'||lcustomer_relations,2);
676 
677     --lcustomer_relations := FND_PROFILE.VALUE('ONT_CUSTOMER_RELATIONSHIPS');
678 
679     IF nvl(lcustomer_relations,'N') = 'N' THEN
680         oe_debug_pub.add
681         ('Cr: No',2);
682 
683         SELECT 'VALID'
684         INTO   l_dummy
685         FROM   oe_ship_to_orgs_v
686         WHERE  customer_id = p_header_rec.sold_to_org_id
687         AND    site_use_id = p_header_rec.ship_to_org_id
688         AND    ROWNUM = 1;
689         --
690         -- Commented out when importing CLOSED orders
691         --
692         -- AND    status = 'A';
693 
694    ELSIF lcustomer_relations = 'Y' THEN
695         oe_debug_pub.add
696         ('Cr: Yes',2);
697 
698     /*Select /*MOAC_SQL_NO_CHANGE 'VALID'
699     Into   l_dummy
700     From   oe_ship_to_orgs_v
701     WHERE site_use_id = p_header_rec.ship_to_org_id
702     AND
703     customer_id in (
704                     Select p_header_rec.sold_to_org_id from dual
705                     union
706                     select cust_account_id from
707                     HZ_CUST_ACCT_RELATE
711 
708                     Where related_cust_account_id = p_header_rec.sold_to_org_id
709 /* added the following condition to fix the bug 2002486
710                     and ship_to_flag = 'Y')*/
712 /* Replaced ra tables with HZ tables to fix the bug 1888440
713     and rownum = 1;*/
714 
715     /* Replaced ra tables with HZ tables to fix the bug 1888440 */
716 
717     --bug 4729536
718     OPEN cur_customer_relations;
719     Fetch cur_customer_relations into l_dummy;
720     Close cur_customer_relations;
721     --bug 4729536
722 
723     -- Commented out when importing CLOSED orders
724     --
725     -- AND    status = 'A'
726 
727 /* added the following ELSIF condition to fix the bug 2002486 */
728 
729     ELSIF nvl(lcustomer_relations,'N') = 'A' THEN
730         oe_debug_pub.add
731         ('Cr: A',2);
732 
733         SELECT 'VALID'
734         INTO   l_dummy
735         FROM   oe_ship_to_orgs_v
736         WHERE  site_use_id = p_header_rec.ship_to_org_id
737         AND    ROWNUM = 1;
738 
739 
740         oe_debug_pub.add
741         ('Cr: Yes- After the select',2);
742 
743    END IF;
744 
745 
746         --  Valid Ship To Org Id.
747 
748       EXCEPTION
749 
750         WHEN NO_DATA_FOUND THEN
751         oe_debug_pub.add
752         ('In: No data found',2);
753           l_return_status := FND_API.G_RET_STS_ERROR;
754           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
755           FND_MESSAGE.SET_TOKEN('ATTRIBUTE', OE_Order_Util.Get_Attribute_Name
756                                              ('ship_to_org_id'));
757           OE_MSG_PUB.Add;
758 
759         WHEN OTHERS THEN
760 
761           IF OE_MSG_PUB.Check_Msg_Level
762              (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
763           THEN
764             OE_MSG_PUB.Add_Exc_Msg
765            (  G_PKG_NAME ,
766               'Record - Ship To'
767             );
768           END IF;
769           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
770 
771       END;
772 
773     END IF; -- Ship To needed validation.
774 
775     --  Deliver to Org id depends on sold to org.
776   oe_debug_pub.add('p_header_rec.deliver_to_org_id'||  to_char(p_header_rec.deliver_to_org_id),2);
777     IF p_header_rec.deliver_to_org_id IS NOT NULL
778     THEN
779 
780       BEGIN
781 
782       IF nvl(lcustomer_relations,'N') = 'N' THEN
783 
784         SELECT 'VALID'
785         INTO   l_dummy
786         FROM   oe_deliver_to_orgs_v
787         WHERE  customer_id = p_header_rec.sold_to_org_id
788         AND    site_use_id = p_header_rec.deliver_to_org_id
789         AND    ROWNUM = 1;
790 
791       ELSIF lcustomer_relations = 'Y' THEN
792 
793         oe_debug_pub.add('Cr: Yes deliver',2);
794 
795         SELECT /* MOAC_SQL_CHANGE */ 'VALID'
796          Into   l_dummy
797          FROM   HZ_CUST_SITE_USES_ALL SITE,
798 	        HZ_CUST_ACCT_SITES ACCT_SITE
799         WHERE SITE.SITE_USE_ID     = p_header_rec.deliver_to_org_id
800          AND SITE.SITE_USE_CODE     ='DELIVER_TO'
801          AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
802          AND ACCT_SITE.CUST_ACCOUNT_ID in (
803                     SELECT p_header_rec.sold_to_org_id FROM DUAL
804                     UNION
805                     SELECT CUST_ACCOUNT_ID FROM
806                     HZ_CUST_ACCT_RELATE_ALL R WHERE
807 		    R.ORG_ID = ACCT_SITE.ORG_ID
808                     AND R.RELATED_CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id
809 			and R.ship_to_flag = 'Y')
810          AND ROWNUM = 1;
811         oe_debug_pub.add('Cr: Yes- After the select',2);
812 
813       ELSIF lcustomer_relations = 'A' THEN
814 
815         SELECT  'VALID'
816          INTO    l_dummy
817          FROM   HZ_CUST_SITE_USES SITE
818         WHERE   SITE.SITE_USE_ID =p_header_rec.deliver_to_org_id;
819 
820 
821       END IF;
822 
823       EXCEPTION
824 
825         WHEN NO_DATA_FOUND THEN
826           l_return_status := FND_API.G_RET_STS_ERROR;
827           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
828           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
829           OE_Order_Util.Get_Attribute_Name('deliver_to_org_id'));
830           OE_MSG_PUB.Add;
831 
832         WHEN OTHERS THEN
833 
834           IF OE_MSG_PUB.Check_Msg_Level
835              (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
836           THEN
837 
838             OE_MSG_PUB.Add_Exc_Msg
839             (  G_PKG_NAME ,
840                'Record - Deliver To'
841             );
842           END IF;
843 
844           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
845 
846       END;
847 
848     END IF; -- Deliver To needed validation.
849 
850 
851 
852     --  Invoice to Org id depends on sold to org.
853 
854 
855     oe_debug_pub.add
856         ('invoice_to_org_id :'||to_char(p_header_rec.invoice_to_org_id),2);
857 
858     IF p_header_rec.invoice_to_org_id IS NOT NULL
859     THEN
860       BEGIN
861         oe_debug_pub.add
865 
862         ('invoice_to_org_id :'||to_char(p_header_rec.invoice_to_org_id),2);
863 
864 	   IF nvl(lcustomer_relations,'N') = 'N' THEN
866         Select 'VALID'
867         Into   l_dummy
868         From   oe_invoice_to_orgs_v
869         Where  customer_id = p_header_rec.sold_to_org_id
870         AND    site_use_id = p_header_rec.invoice_to_org_id;
871     ELSIF lcustomer_relations = 'Y' THEN
872 
873     /*Select /*MOAC_SQL_NO_CHANGE 'VALID'
874     Into   l_dummy
875     From   oe_invoice_to_orgs_v
876     WHERE site_use_id = p_header_rec.invoice_to_org_id
877     AND
878     customer_id in (
879                     Select p_header_rec.sold_to_org_id from dual
880                     union
881                     select cust_account_id from
882                     HZ_CUST_ACCT_RELATE where
883                     related_cust_account_id = p_header_rec.sold_to_org_id
884 /* added the following condition to fix the bug 2002486
885                     and bill_to_flag = 'Y')
886 
887     and rownum = 1;*/
888     --bug 4729536
889     OPEN cur_customer_relations_inv;
890     Fetch cur_customer_relations_inv into l_dummy;
891     Close cur_customer_relations_inv;
892     --bug 4729536
893 
894 /* Changed ra_customer_relationships to HZ Table to fix the bug 1888440 */
895 
896     --
897     -- Commented out when importing CLOSED orders
898     --
899     -- AND    status = 'A' AND
900 
901 /* added the following ELSIF condition to fix the bug 2002486 */
902 
903     ELSIF nvl(lcustomer_relations,'N') = 'A' THEN
904         oe_debug_pub.add
905         ('Cr: A',2);
906 
907         SELECT 'VALID'
908         INTO   l_dummy
909         From   oe_invoice_to_orgs_v
910         WHERE  site_use_id = p_header_rec.invoice_to_org_id
911         AND    ROWNUM = 1;
912 
913 
914     END IF;
915 
916 
917       EXCEPTION
918 
919       WHEN NO_DATA_FOUND THEN
920         l_return_status := FND_API.G_RET_STS_ERROR;
921         fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
922         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
923         OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
924       OE_MSG_PUB.Add;
925 
926       WHEN OTHERS THEN
927 
928         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
929         THEN
930           OE_MSG_PUB.Add_Exc_Msg
931           (  G_PKG_NAME ,
932             'Record - Invoice To'
933           );
934         END IF;
935 
936         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
937       END;
938 
939     END IF; -- Invoice to org needed validation.
940 
941     --  Customer Location  depends on Sold To Org
942   oe_debug_pub.add('p_header_rec.sold_to_site_use_id'||  to_char(p_header_rec.sold_to_site_use_id),2);
943     IF p_header_rec.sold_to_site_use_id IS NOT NULL
944     THEN
945 
946       BEGIN
947 
948         SELECT  /* MOAC_SQL_CHANGE */ 'VALID'
949         INTO    l_dummy
950         FROM
951              HZ_CUST_SITE_USES_ALL   SITE,
952              HZ_CUST_ACCT_SITES  ACCT_SITE
953         WHERE
954              SITE.SITE_USE_ID = p_header_rec.sold_to_site_use_id
955              AND  SITE.SITE_USE_CODE = 'SOLD_TO'
956              AND  SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
957              AND  ACCT_SITE.CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id;
958 
959       EXCEPTION
960 
961         WHEN NO_DATA_FOUND THEN
962           l_return_status := FND_API.G_RET_STS_ERROR;
963           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
964           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
965           OE_Order_Util.Get_Attribute_Name('SOLD_TO_SITE_USE_ID'));
966           OE_MSG_PUB.Add;
967 
968         WHEN OTHERS THEN
969           IF OE_MSG_PUB.Check_Msg_Level
970           ( OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
971           THEN
972             OE_MSG_PUB.Add_Exc_Msg
973             (  G_PKG_NAME ,
974               'Record - Customer Location'
975              );
976           END IF;
977 
978           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
979 
980       END; -- BEGIN
981 
982     END IF; --
983     --  Sold to contact depends on Sold To Org
984   oe_debug_pub.add('p_header_rec.sold_to_contact_id'||  to_char(p_header_rec.sold_to_contact_id),2);
985     IF p_header_rec.sold_to_contact_id IS NOT NULL
986     THEN
987 
988       BEGIN
989 
990         SELECT  'VALID'
991         INTO  l_dummy
992         FROM  HZ_CUST_ACCOUNT_ROLES ACCT_ROLE
993         WHERE  ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_header_rec.sold_to_contact_id
994         AND   ACCT_ROLE.ROLE_TYPE = 'CONTACT'
995         AND  ACCT_ROLE.CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id
996            AND  ROWNUM = 1;
997 
998 /* Replaced ra_contacts with HZ Table to fix the bug 1888440 */
999 
1000         --  Valid Sold To Contact
1001 
1002       EXCEPTION
1003 
1004         WHEN NO_DATA_FOUND THEN
1005           l_return_status := FND_API.G_RET_STS_ERROR;
1006           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
1007           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1011         WHEN OTHERS THEN
1008           OE_Order_Util.Get_Attribute_Name('SOLD_TO_CONTACT_ID'));
1009           OE_MSG_PUB.Add;
1010 
1012           IF OE_MSG_PUB.Check_Msg_Level
1013           ( OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1014           THEN
1015             OE_MSG_PUB.Add_Exc_Msg
1016             (  G_PKG_NAME ,
1017               'Record - Sold To Contact'
1018              );
1019           END IF;
1020 
1021           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1022 
1023       END; -- BEGIN
1024 
1025     END IF; -- Sold to contact needed validation.
1026 
1027 
1028     --  Invoice to contact depends on Invoice To Org
1029   oe_debug_pub.add('p_header_rec.invoice_to_contact_id'||  to_char(p_header_rec.invoice_to_contact_id),2);
1030     IF p_header_rec.invoice_to_contact_id IS NOT NULL
1031     THEN
1032       BEGIN
1033         oe_debug_pub.add
1034         ('inv_to_contact :'||to_char(p_header_rec.invoice_to_contact_id),2);
1035 
1036         SELECT  /* MOAC_SQL_CHANGE */ 'VALID'
1037         INTO    l_dummy
1038         FROM    HZ_CUST_ACCOUNT_ROLES ACCT_ROLE
1039               ,  HZ_CUST_ACCT_SITES ACCT_SITE
1040               , HZ_CUST_SITE_USES_ALL INV
1041         WHERE   ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_header_rec.invoice_to_contact_id
1042         AND   ACCT_ROLE.CUST_ACCOUNT_ID = ACCT_SITE.CUST_ACCOUNT_ID
1043         AND   ACCT_SITE.CUST_ACCT_SITE_ID = INV.CUST_ACCT_SITE_ID
1044         AND   INV.SITE_USE_ID = p_header_rec.invoice_to_org_id
1045         AND   ACCT_ROLE.ROLE_TYPE = 'CONTACT'
1046         AND   ROWNUM = 1;
1047 
1048 /* Replaced ra_contacts , ra_addresses and ra_site_uses with HZ Tables , to fix the bug 1888440 */
1049 
1050 
1051       EXCEPTION
1052 
1053         WHEN NO_DATA_FOUND THEN
1054 
1055           l_return_status := FND_API.G_RET_STS_ERROR;
1056           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
1057           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1058           OE_Order_Util.Get_Attribute_Name('INVOICE_TO_CONTACT_ID'));
1059           OE_MSG_PUB.Add;
1060 
1061         WHEN OTHERS THEN
1062 
1063           IF OE_MSG_PUB.Check_Msg_Level
1064             (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1065           THEN
1066 
1067             OE_MSG_PUB.Add_Exc_Msg
1068             (  G_PKG_NAME ,
1069               'Record - Invoice To Contact'
1070             );
1071           END IF;
1072 
1073           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1074 
1075       END;
1076 
1077     END IF; -- Invoice to contact needed validation.
1078 
1079 
1080     --  Ship to contact depends on Ship To Org
1081   oe_debug_pub.add('p_header_rec.ship_to_contact_id'||  to_char(p_header_rec.ship_to_contact_id),2);
1082     IF p_header_rec.ship_to_contact_id IS NOT NULL
1083     THEN
1084 
1085       BEGIN
1086 
1087         SELECT  /* MOAC_SQL_CHANGE */ 'VALID'
1088         INTO    l_dummy
1089         FROM    HZ_CUST_ACCOUNT_ROLES ACCT_ROLE
1090               ,  HZ_CUST_ACCT_SITES ACCT_SITE
1091               , HZ_CUST_SITE_USES_ALL SHIP
1092         WHERE   ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_header_rec.ship_to_contact_id
1093         AND   ACCT_ROLE.CUST_ACCOUNT_ID = ACCT_SITE.CUST_ACCOUNT_ID
1094         AND   ACCT_SITE.CUST_ACCT_SITE_ID = SHIP.CUST_ACCT_SITE_ID
1095         AND   SHIP.SITE_USE_ID = p_header_rec.ship_to_org_id
1096         AND   ACCT_ROLE.ROLE_TYPE = 'CONTACT'
1097         AND   ROWNUM = 1;
1098 
1099 /* Replace RA views with HZ views to fix the bug 1888440 */
1100         --
1101         -- Commented out when importing CLOSED orders
1102         --
1103         -- AND   SHIP.STATUS = 'A'
1104 
1105         --  Valid Ship To Contact
1106 
1107       EXCEPTION
1108 
1109         WHEN NO_DATA_FOUND THEN
1110           l_return_status := FND_API.G_RET_STS_ERROR;
1111           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
1112           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1113           OE_Order_Util.Get_Attribute_Name('SHIP_TO_CONTACT_ID'));
1114           OE_MSG_PUB.Add;
1115 
1116         WHEN OTHERS THEN
1117 
1118          IF OE_MSG_PUB.Check_Msg_Level
1119          (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1120          THEN
1121 
1122            OE_MSG_PUB.Add_Exc_Msg
1123            (  G_PKG_NAME ,
1124              'Record - Ship To Contact'
1125            );
1126          END IF;
1127 
1128          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1129 
1130       END; -- BEGIN
1131 
1132     END IF; -- Ship to contact needed validation.
1133 
1134 
1135     --  Deliver to contact depends on Deliver To Org
1136   oe_debug_pub.add('p_header_rec.deliver_to_contact_id' ||  to_char(p_header_rec.deliver_to_contact_id),2);
1137     IF p_header_rec.deliver_to_contact_id IS NOT NULL
1138     THEN
1139 
1140       BEGIN
1141 
1142         SELECT  /* MOAC_SQL_CHANGE */ 'VALID'
1143         INTO    l_dummy
1144         FROM  HZ_CUST_ACCOUNT_ROLES ACCT_ROLE
1145               ,  HZ_CUST_ACCT_SITES ACCT_SITE
1146               , HZ_CUST_SITE_USES_ALL DELIVER
1147         WHERE   ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_header_rec.deliver_to_contact_id
1148         AND   ACCT_ROLE.CUST_ACCOUNT_ID = ACCT_SITE.CUST_ACCOUNT_ID
1149         AND   ACCT_SITE.CUST_ACCT_SITE_ID = DELIVER.CUST_ACCT_SITE_ID
1153 
1150         AND   DELIVER.SITE_USE_ID = p_header_rec.deliver_to_org_id
1151         AND   ACCT_ROLE.ROLE_TYPE = 'CONTACT'
1152         AND   ROWNUM = 1;
1154 /* Replaced ra_contacts , ra_addresses and ra_site_uses with HZ Tables , to fix the bug 1888440 */
1155 
1156 
1157         --  Valid Deliver To Org.
1158 
1159       EXCEPTION
1160 
1161         WHEN NO_DATA_FOUND THEN
1162           l_return_status := FND_API.G_RET_STS_ERROR;
1163           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
1164           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1165           OE_Order_Util.Get_Attribute_Name('DELIVER_TO_CONTACT_ID'));
1166           OE_MSG_PUB.Add;
1167 
1168         WHEN OTHERS THEN
1169 
1170           IF OE_MSG_PUB.Check_Msg_Level (
1171           OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1172           THEN
1173             OE_MSG_PUB.Add_Exc_Msg
1174             (  G_PKG_NAME ,
1175               'Record - Deliver To Contact'
1176              );
1177           END IF;
1178 
1179           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1180 
1181       END; -- BEGIN
1182 
1183     END IF; -- Deliver to contact needed validation.
1184 
1185 
1186     --  Check for Tax Exempt number/Tax exempt reason code IF the Tax exempt
1187     --    flag is 'S' (StANDard).
1188   oe_debug_pub.add('p_header_rec.tax_exempt_number'|| p_header_rec.tax_exempt_number,2);
1189   oe_debug_pub.add('p_header_rec.tax_exempt_flag'||  p_header_rec.tax_exempt_flag,2);
1190     IF p_header_rec.tax_exempt_flag IS NOT NULL
1191     THEN
1192 
1193       BEGIN
1194 
1195         IF p_header_rec.tax_exempt_flag = 'S' AND
1196            p_header_rec.tax_exempt_number IS NOT NULL AND
1197            p_header_rec.tax_exempt_reason_code IS NOT NULL
1198         THEN
1199           -- eBTax changes
1200         /*SELECT 'VALID'
1201           INTO l_dummy
1202           FROM OE_TAX_EXEMPTIONS_QP_V
1203           WHERE TAX_EXEMPT_NUMBER = p_header_rec.tax_exempt_number
1204           AND TAX_EXEMPT_REASON_CODE=p_header_rec.tax_exempt_reason_code
1205           AND SHIP_TO_ORG_ID = nvl(p_header_rec.ship_to_org_id,
1206                                    p_header_rec.invoice_to_org_id)
1207           AND BILL_TO_CUSTOMER_ID = p_header_rec.sold_to_org_id
1208           AND ROWNUM = 1;
1209 
1210           -- Commented out when importing CLOSED orders ?
1211           -- AND STATUS_CODE = 'PRIMARY'
1212           -- AND TRUNC(NVL(p_header_rec.request_date,sysdate)) BETWEEN
1213           -- TRUNC(START_DATE) AND
1214           -- TRUNC(NVL(END_DATE,NVL(p_header_rec.request_date,sysdate)))
1215          */
1216 
1217           open partyinfo(p_header_rec.invoice_to_org_id);
1218           fetch partyinfo into l_bill_to_cust_Acct_id,
1219                                l_bill_to_party_id,
1220                                l_bill_to_party_site_id,
1221                                l_org_id;
1222           close partyinfo;
1223 
1224           if p_header_rec.ship_to_org_id = p_header_rec.invoice_to_org_id then
1225              l_ship_to_cust_Acct_id    :=  l_bill_to_cust_Acct_id;
1226              l_ship_to_party_id        :=  l_bill_to_party_id;
1227              l_ship_to_party_site_id   :=  l_bill_to_party_site_id ;
1228           else
1229              open partyinfo(p_header_rec.ship_to_org_id);
1230              fetch partyinfo into l_ship_to_cust_Acct_id,
1231                                l_ship_to_party_id,
1232                                l_ship_to_party_site_id,
1233                                l_org_id;
1234              close partyinfo;
1235           end if;
1236 
1237 
1238            SELECT 'VALID'
1239              INTO l_dummy
1240              FROM ZX_EXEMPTIONS_V
1241             WHERE EXEMPT_CERTIFICATE_NUMBER = p_header_rec.tax_exempt_number
1242               AND EXEMPT_REASON_CODE = p_header_rec.tax_exempt_reason_code
1243               AND nvl(site_use_id,nvl(p_header_rec.ship_to_org_id,
1244                                     p_header_rec.invoice_to_org_id))
1245                   =  nvl(p_header_rec.ship_to_org_id,
1246                                     p_header_rec.invoice_to_org_id)
1247               AND nvl(cust_account_id, l_bill_to_cust_acct_id) = l_bill_to_cust_acct_id
1248               AND nvl(PARTY_SITE_ID,nvl(l_ship_to_party_site_id, l_bill_to_party_site_id))=
1249                                 nvl(l_ship_to_party_site_id, l_bill_to_party_site_id)
1250               AND  org_id = l_org_id
1251               AND  party_id = l_bill_to_party_id
1252      --       AND nvl(LEGAL_ENTITY_ID,-99) IN (nvl(l_legal_entity_id, legal_entity_id), -99)
1253               AND EXEMPTION_STATUS_CODE = 'PRIMARY'
1254      --         AND TRUNC(NVL(p_header_rec.request_date,sysdate))
1255      --               BETWEEN TRUNC(EFFECTIVE_FROM)
1256      --                       AND TRUNC(NVL(EFFECTIVE_TO,NVL(p_header_rec.request_date,sysdate)))
1257               AND ROWNUM = 1;
1258 
1259         END IF;
1260 
1261         --  Valid Tax Exempt Number.
1262 
1263       EXCEPTION
1264 
1265         WHEN NO_DATA_FOUND THEN
1266 
1267           l_return_status := FND_API.G_RET_STS_ERROR;
1268           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
1269           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1270           OE_Order_Util.Get_Attribute_Name('TAX_EXEMPT_NUMBER'));
1271           OE_MSG_PUB.Add;
1272 
1276           THEN
1273         WHEN OTHERS THEN
1274 
1275           IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1277 
1278             OE_MSG_PUB.Add_Exc_Msg
1279             (  G_PKG_NAME ,
1280               'Record - Tax Exempt Number'
1281             );
1282           END IF;
1283 
1284           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1285 
1286       END; -- BEGIN
1287 
1288     END IF; -- Tax exempton info validation.
1289 
1290 
1291     -- Fix bug 1162304: issue a warning message if the PO number
1292     -- is being referenced by another order
1293     IF p_header_rec.cust_po_number IS NOT NULL
1294     THEN
1295 
1296       IF OE_CNCL_Validate_Header.Is_Duplicate_PO_Number
1297            (p_header_rec.cust_po_number
1298            ,p_header_rec.sold_to_org_id
1299            ,p_header_rec.header_id )
1300       THEN
1301           FND_MESSAGE.SET_NAME('ONT','OE_VAL_DUP_PO_NUMBER');
1302           OE_MSG_PUB.ADD;
1303       END IF;
1304 
1305     END IF;
1306     -- End of check for duplicate PO number
1307 
1308 
1309     --  Done validating entity
1310     x_return_status := l_return_status;
1311 
1312     oe_debug_pub.add('Exit OE_CNCL_VALIDATE_HEADER.ENTITY',1);
1313 
1314 EXCEPTION
1315 
1316     WHEN FND_API.G_EXC_ERROR THEN
1317       x_return_status := FND_API.G_RET_STS_ERROR;
1318 
1319     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1320       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1321 
1322     WHEN OTHERS THEN
1323       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1324 
1325       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1326       THEN
1327         OE_MSG_PUB.Add_Exc_Msg
1328         (   G_PKG_NAME
1329         ,   'Entity'
1330          );
1331       END IF;
1332 
1333 END Entity;
1334 
1335 
1336 
1337 /*-------------------------------------------------------
1338 PROCEDURE:    Attributes
1339 Description:
1340 --------------------------------------------------------*/
1341 
1342 PROCEDURE Attributes
1343 (   x_return_status      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1344 ,   p_x_header_rec       IN  OUT NOCOPY OE_Order_PUB.Header_Rec_Type
1345 ,   p_validation_level   IN  NUMBER := FND_API.G_VALID_LEVEL_FULL
1346 )
1347 IS
1348 BEGIN
1349 
1350     oe_debug_pub.add('Entering OE_CNCL_VALIDATE_HEADER.ATTRIBUTES',1);
1351 
1352     x_return_status := FND_API.G_RET_STS_SUCCESS;
1353     --  validate Sales agreements Attributes
1354     IF  p_x_header_rec.Blanket_number IS NOT NULL
1355     THEN
1356         x_return_status := FND_API.G_RET_STS_ERROR;
1357         fnd_message.set_name('ONT', 'OE_BLKT_DISALLOW_CLOSE_REL');
1358         OE_MSG_PUB.add;
1359     END IF;
1360 
1361 
1362     --  Validate header attributes
1363 
1364     IF  p_x_header_rec.accounting_rule_id IS NOT NULL
1365     THEN
1366 
1367       IF NOT OE_CNCL_Validate.Accounting_Rule(p_x_header_rec.accounting_rule_id)
1368       THEN
1369 
1370         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1371              --
1372              p_x_header_rec.accounting_rule_id := NULL;
1373              --
1374         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1375              --
1376              p_x_header_rec.accounting_rule_id := FND_API.G_MISS_NUM;
1377              --
1378         ELSE
1379              --
1380              x_return_status := FND_API.G_RET_STS_ERROR;
1381              --
1382         END IF;
1383 
1384       END IF;
1385 
1386     END IF;
1387 
1388     IF  p_x_header_rec.agreement_id IS NOT NULL THEN
1389       --
1390       IF NOT OE_CNCL_Validate.Agreement(p_x_header_rec.agreement_id) THEN
1391         --
1392         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1393           --
1394           p_x_header_rec.agreement_id := NULL;
1395           --
1396         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1397           --
1398           p_x_header_rec.agreement_id := FND_API.G_MISS_NUM;
1399           --
1400         ELSE
1401           --
1402           x_return_status := FND_API.G_RET_STS_ERROR;
1403           --
1404         END IF;
1405         --
1406       END IF;
1407       --
1408     END IF;
1409     --
1410 
1411     IF  p_x_header_rec.booked_flag IS NOT NULL THEN
1412       --
1413       IF NOT OE_CNCL_Validate.Booked(p_x_header_rec.booked_flag) THEN
1414         --
1415         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1416           --
1417           p_x_header_rec.booked_flag := NULL;
1418           --
1419         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1420           --
1421           p_x_header_rec.booked_flag := FND_API.G_MISS_CHAR;
1422           --
1423         ELSE
1424           --
1425           x_return_status := FND_API.G_RET_STS_ERROR;
1426           --
1427         END IF;
1428         --
1429       END IF;
1430       --
1431     END IF;
1432     --
1433 
1434     IF  p_x_header_rec.cancelled_flag IS NOT NULL THEN
1435       --
1439           --
1436       IF NOT OE_CNCL_Validate.Cancelled(p_x_header_rec.cancelled_flag) THEN
1437         --
1438         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1440           p_x_header_rec.cancelled_flag := NULL;
1441           --
1442         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1443           --
1444           p_x_header_rec.cancelled_flag := FND_API.G_MISS_CHAR;
1445           --
1446         ELSE
1447           --
1448           x_return_status := FND_API.G_RET_STS_ERROR;
1449           --
1450         END IF;
1451         --
1452       END IF;
1453       --
1454     END IF;
1455     --
1456 
1457     IF p_x_header_rec.conversion_type_code IS NOT NULL THEN
1458       --
1459       IF NOT OE_CNCL_Validate.Conversion_Type(p_x_header_rec.conversion_type_code) THEN
1460         --
1461         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1462           --
1463           p_x_header_rec.conversion_type_code := NULL;
1464           --
1465         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1466           --
1467           p_x_header_rec.conversion_type_code := FND_API.G_MISS_CHAR;
1468           --
1469         ELSE
1470           --
1471           x_return_status := FND_API.G_RET_STS_ERROR;
1472           --
1473         END IF;
1474         --
1475       END IF;
1476       --
1477     END IF;
1478     --
1479 
1480     IF  p_x_header_rec.deliver_to_contact_id IS NOT NULL THEN
1481       --
1482       IF NOT OE_CNCL_Validate.Deliver_To_Contact(p_x_header_rec.deliver_to_contact_id) THEN
1483         --
1484         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1485           --
1486           p_x_header_rec.deliver_to_contact_id := NULL;
1487           --
1488         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1489           --
1490           p_x_header_rec.deliver_to_contact_id := FND_API.G_MISS_NUM;
1491           --
1492         ELSE
1493           --
1494           x_return_status := FND_API.G_RET_STS_ERROR;
1495           --
1496         END IF;
1497         --
1498       END IF;
1499       --
1500     END IF;
1501     --
1502 
1503     --
1504     IF  p_x_header_rec.deliver_to_org_id IS NOT NULL THEN
1505       --
1506       IF NOT OE_CNCL_Validate.Deliver_To_Org(p_x_header_rec.deliver_to_org_id) THEN
1507         --
1508         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1509           --
1510           p_x_header_rec.deliver_to_org_id := NULL;
1511           --
1512         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1513           --
1514           p_x_header_rec.deliver_to_org_id := FND_API.G_MISS_NUM;
1515           --
1516         ELSE
1517           --
1518           x_return_status := FND_API.G_RET_STS_ERROR;
1519           --
1520         END IF;
1521         --
1522       END IF;
1523       --
1524     END IF;
1525     --
1526 
1527     --
1528     IF  p_x_header_rec.demand_class_code IS NOT NULL THEN
1529       --
1530       IF NOT OE_CNCL_Validate.Demand_Class(p_x_header_rec.demand_class_code) THEN
1531         --
1532         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1533           --
1534           p_x_header_rec.demAND_class_code := NULL;
1535           --
1536         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1537           --
1538           p_x_header_rec.demAND_class_code := FND_API.G_MISS_CHAR;
1539           --
1540         ELSE
1541           --
1542           x_return_status := FND_API.G_RET_STS_ERROR;
1543           --
1544         END IF;
1545         --
1546       END IF;
1547       --
1548     END IF;
1549     --
1550 
1551     --
1552     IF  p_x_header_rec.fob_point_code IS NOT NULL THEN
1553       --
1554       IF NOT OE_CNCL_Validate.Fob_Point(p_x_header_rec.fob_point_code) THEN
1555         --
1556         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1557           --
1558           p_x_header_rec.fob_point_code := NULL;
1559           --
1560         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1561           --
1562           p_x_header_rec.fob_point_code := FND_API.G_MISS_CHAR;
1563           --
1564         ELSE
1565           --
1566           x_return_status := FND_API.G_RET_STS_ERROR;
1567           --
1568         END IF;
1569         --
1570       END IF;
1571       --
1572     END IF;
1573     --
1574 
1575     --
1576     IF  p_x_header_rec.freight_terms_code IS NOT NULL THEN
1577       --
1578       IF NOT OE_CNCL_Validate.Freight_Terms(p_x_header_rec.freight_terms_code) THEN
1579         --
1580         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1581           --
1582           p_x_header_rec.freight_terms_code := NULL;
1583           --
1584         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1585           --
1586           p_x_header_rec.freight_terms_code := FND_API.G_MISS_CHAR;
1587           --
1588         ELSE
1589           --
1593         --
1590           x_return_status := FND_API.G_RET_STS_ERROR;
1591           --
1592         END IF;
1594       END IF;
1595       --
1596     END IF;
1597     --
1598 
1599     --
1600     IF  p_x_header_rec.invoice_to_contact_id IS NOT NULL THEN
1601       --
1602       IF NOT OE_CNCL_Validate.Invoice_To_Contact(p_x_header_rec.invoice_to_contact_id) THEN
1603         --
1604         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1605           --
1606           p_x_header_rec.invoice_to_contact_id := NULL;
1607           --
1608         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1609           --
1610           p_x_header_rec.invoice_to_contact_id := FND_API.G_MISS_NUM;
1611           --
1612         ELSE
1613           --
1614           x_return_status := FND_API.G_RET_STS_ERROR;
1615           --
1616         END IF;
1617         --
1618       END IF;
1619       --
1620     END IF;
1621     --
1622 
1623     --
1624     IF  p_x_header_rec.invoice_to_org_id IS NOT NULL THEN
1625       --
1626       IF NOT OE_CNCL_Validate.Invoice_To_Org(p_x_header_rec.invoice_to_org_id) THEN
1627        --
1628        IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1629           --
1630           p_x_header_rec.invoice_to_org_id := NULL;
1631           --
1632        ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1633           --
1634           p_x_header_rec.invoice_to_org_id := FND_API.G_MISS_NUM;
1635           --
1636        ELSE
1637           --
1638           x_return_status := FND_API.G_RET_STS_ERROR;
1639           --
1640        END IF;
1641        --
1642      END IF;
1643      --
1644     END IF;
1645     --
1646 
1647     --
1648     IF  p_x_header_rec.invoicing_rule_id IS NOT NULL THEN
1649       --
1650       IF NOT OE_CNCL_Validate.Invoicing_Rule(p_x_header_rec.invoicing_rule_id) THEN
1651         --
1652         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1653           --
1654           p_x_header_rec.invoicing_rule_id := NULL;
1655           --
1656         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1657           --
1658           p_x_header_rec.invoicing_rule_id := FND_API.G_MISS_NUM;
1659           --
1660         ELSE
1661           --
1662           x_return_status := FND_API.G_RET_STS_ERROR;
1663           --
1664         END IF;
1665         --
1666       END IF;
1667       --
1668     END IF;
1669     --
1670 
1671     --
1672     IF  p_x_header_rec.open_flag IS NOT NULL THEN
1673       --
1674       IF NOT OE_CNCL_Validate.Open(p_x_header_rec.open_flag) THEN
1675         --
1676         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1677           --
1678           p_x_header_rec.open_flag := NULL;
1679           --
1680         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1681           --
1682           p_x_header_rec.open_flag := FND_API.G_MISS_CHAR;
1683           --
1684         ELSE
1685           --
1686           x_return_status := FND_API.G_RET_STS_ERROR;
1687           --
1688         END IF;
1689         --
1690       END IF;
1691       --
1692     END IF;
1693     --
1694 
1695     --
1696     IF  p_x_header_rec.order_date_type_code IS NOT NULL THEN
1697       --
1698       IF NOT OE_CNCL_Validate.Order_Date_Type_Code(p_x_header_rec.order_date_type_code) THEN
1699         --
1700         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1701           --
1702           p_x_header_rec.order_date_type_code := NULL;
1703           --
1704         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1705           --
1706           p_x_header_rec.order_date_type_code := FND_API.G_MISS_CHAR;
1707           --
1708         ELSE
1709           --
1710           x_return_status := FND_API.G_RET_STS_ERROR;
1711           --
1712         END IF;
1713         --
1714       END IF;
1715       --
1716     END IF;
1717     --
1718 
1719     --
1720     IF  p_x_header_rec.order_type_id IS NOT NULL THEN
1721       --
1722       IF NOT OE_CNCL_Validate.Order_Type(p_x_header_rec.order_type_id) THEN
1723         --
1724         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1725           --
1726           p_x_header_rec.order_type_id := NULL;
1727           --
1728         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1729           --
1730           p_x_header_rec.order_type_id := FND_API.G_MISS_NUM;
1731           --
1732         ELSE
1733           --
1734           x_return_status := FND_API.G_RET_STS_ERROR;
1735           --
1736         END IF;
1737         --
1738       END IF;
1739       --
1740     END IF;
1741     --
1742 
1743     --
1744     IF  p_x_header_rec.payment_term_id IS NOT NULL THEN
1745       --
1746       IF NOT OE_CNCL_Validate.Payment_Term(p_x_header_rec.payment_term_id) THEN
1747         --
1748         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1749           --
1750           p_x_header_rec.payment_term_id := NULL;
1754           p_x_header_rec.payment_term_id := FND_API.G_MISS_NUM;
1751           --
1752         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1753           --
1755           --
1756         ELSE
1757           --
1758           x_return_status := FND_API.G_RET_STS_ERROR;
1759           --
1760         END IF;
1761         --
1762       END IF;
1763       --
1764     END IF;
1765     --
1766 
1767 --{added for bug 4240715
1768 
1769        IF  p_x_header_rec.Ib_owner  IS NOT NULL THEN
1770 
1771         IF NOT OE_CNCL_Validate.IB_OWNER (p_x_header_rec.Ib_owner)
1772         THEN
1773            IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL  THEN
1774 
1775               p_x_header_rec.Ib_owner := NULL;
1776 
1777            ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF
1778            THEN
1779               p_x_header_rec.Ib_owner := FND_API.G_MISS_CHAR;
1780            ELSE
1781               x_return_status := FND_API.G_RET_STS_ERROR;
1782            END IF;
1783 
1784         END IF;
1785 
1786      END IF;
1787 
1788   IF  p_x_header_rec.Ib_installed_at_location  IS NOT NULL
1789    THEN
1790 
1791         IF NOT OE_CNCL_Validate.IB_INSTALLED_AT_LOCATION (p_x_header_rec.Ib_installed_at_location)
1792         THEN
1793            IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL
1794            THEN
1795               p_x_header_rec.Ib_installed_at_location := NULL;
1796            ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF
1797            THEN
1798               p_x_header_rec.Ib_installed_at_location := FND_API.G_MISS_CHAR;
1799            ELSE
1800               x_return_status := FND_API.G_RET_STS_ERROR;
1801            END IF;
1802 
1803         END IF;
1804 
1805      END IF;
1806 
1807    IF  p_x_header_rec.Ib_current_location  IS NOT NULL
1808                THEN
1809 
1810         IF NOT OE_CNCL_Validate.IB_CURRENT_LOCATION (p_x_header_rec.Ib_current_location)
1811         THEN
1812            IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL
1813             THEN
1814               p_x_header_rec.Ib_current_location := NULL;
1815            ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF
1816                     THEN
1817               p_x_header_rec.Ib_current_location := FND_API.G_MISS_CHAR;
1818            ELSE
1819               x_return_status := FND_API.G_RET_STS_ERROR;
1820            END IF;
1821 
1822         END IF;
1823 
1824      END IF;
1825 
1826    IF  p_x_header_rec.End_customer_id  IS NOT NULL  THEN
1827 
1828         IF NOT OE_CNCL_Validate.END_CUSTOMER (p_x_header_rec.End_customer_id)
1829         THEN
1830            IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL
1831 
1832            THEN
1833               p_x_header_rec.End_customer_id := NULL;
1834            ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF
1835            THEN
1836               p_x_header_rec.End_customer_id := FND_API.G_MISS_NUM;
1837            ELSE
1838               x_return_status := FND_API.G_RET_STS_ERROR;
1839            END IF;
1840 
1841         END IF;
1842 
1843      END IF;
1844 
1845    IF  p_x_header_rec.End_customer_contact_id  IS NOT NULL
1846      THEN
1847         IF NOT OE_CNCL_Validate.END_CUSTOMER_CONTACT (p_x_header_rec.End_customer_contact_id)
1848         THEN
1849            IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL
1850            THEN
1851               p_x_header_rec.End_customer_contact_id := NULL;
1852            ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF
1853            THEN
1854               p_x_header_rec.End_customer_contact_id := FND_API.G_MISS_NUM;
1855            ELSE
1856               x_return_status := FND_API.G_RET_STS_ERROR;
1857            END IF;
1858 
1859         END IF;
1860 
1861      END IF;
1862 
1863   IF  p_x_header_rec.End_customer_site_use_id  IS NOT NULL
1864  THEN
1865 
1866         IF NOT OE_CNCL_Validate.END_CUSTOMER_SITE_USE (p_x_header_rec.End_customer_site_use_id)
1867         THEN
1868            IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL
1869               THEN
1870               p_x_header_rec.End_customer_site_use_id := NULL;
1871            ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF
1872                     THEN
1873               p_x_header_rec.End_customer_site_use_id := FND_API.G_MISS_NUM;
1874            ELSE
1875               x_return_status := FND_API.G_RET_STS_ERROR;
1876            END IF;
1877 
1878         END IF;
1879 
1880      END IF;
1881 
1882 	--bug 4240715}
1883 
1884     --
1885     IF  p_x_header_rec.price_list_id IS NOT NULL THEN
1886       --
1887       IF NOT OE_CNCL_Validate.Price_List(p_x_header_rec.price_list_id) THEN
1888         --
1889         p_x_header_rec.price_list_id := NULL;
1890         --
1891       ELSE
1892         --
1893         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1894           --
1895           x_return_status := FND_API.G_RET_STS_ERROR;
1896           --
1897         END IF;
1898         --
1899       END IF;
1900       --
1901     END IF;
1902     --
1903 
1904     --
1908         --
1905     IF  p_x_header_rec.shipment_priority_code IS NOT NULL THEN
1906       --
1907       IF NOT OE_CNCL_Validate.Shipment_Priority(p_x_header_rec.shipment_priority_code) THEN
1909         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1910           --
1911           p_x_header_rec.shipment_priority_code := NULL;
1912           --
1913         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1914           --
1915           p_x_header_rec.shipment_priority_code := FND_API.G_MISS_CHAR;
1916           --
1917         ELSE
1918           --
1919           x_return_status := FND_API.G_RET_STS_ERROR;
1920           --
1921         END IF;
1922         --
1923       END IF;
1924       --
1925     END IF;
1926     --
1927 
1928     --
1929     IF  p_x_header_rec.shipping_method_code IS NOT NULL THEN
1930       --
1931       IF NOT OE_CNCL_Validate.Shipping_Method(p_x_header_rec.shipping_method_code) THEN
1932         --
1933         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1934           --
1935           p_x_header_rec.shipping_method_code := NULL;
1936           --
1937         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1938           --
1939           p_x_header_rec.shipping_method_code := FND_API.G_MISS_CHAR;
1940           --
1941         ELSE
1942           --
1943           x_return_status := FND_API.G_RET_STS_ERROR;
1944           --
1945         END IF;
1946         --
1947       END IF;
1948       --
1949     END IF;
1950     --
1951 
1952     --
1953     IF  p_x_header_rec.ship_from_org_id IS NOT NULL THEN
1954       --
1955       IF NOT OE_CNCL_Validate.Ship_From_Org(p_x_header_rec.ship_from_org_id) THEN
1956         --
1957         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1958           --
1959           p_x_header_rec.ship_from_org_id := NULL;
1960           --
1961         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1962           --
1963           p_x_header_rec.ship_from_org_id := FND_API.G_MISS_NUM;
1964           --
1965         ELSE
1966           --
1967           x_return_status := FND_API.G_RET_STS_ERROR;
1968           --
1969         END IF;
1970         --
1971       END IF;
1972       --
1973     END IF;
1974     --
1975 
1976     --
1977     IF  p_x_header_rec.ship_to_contact_id IS NOT NULL THEN
1978       --
1979       IF NOT OE_CNCL_Validate.Ship_To_Contact(p_x_header_rec.ship_to_contact_id) THEN
1980         --
1981         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
1982           --
1983           p_x_header_rec.ship_to_contact_id := NULL;
1984           --
1985         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
1986           --
1987           p_x_header_rec.ship_to_contact_id := FND_API.G_MISS_NUM;
1988           --
1989         ELSE
1990           --
1991           x_return_status := FND_API.G_RET_STS_ERROR;
1992           --
1993         END IF;
1994         --
1995       END IF;
1996       --
1997     END IF;
1998     --
1999 
2000     --
2001     IF  p_x_header_rec.ship_to_org_id IS NOT NULL THEN
2002       --
2003       IF NOT OE_CNCL_Validate.Ship_To_Org(p_x_header_rec.ship_to_org_id) THEN
2004         --
2005         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2006           --
2007           p_x_header_rec.ship_to_org_id := NULL;
2008           --
2009         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2010           --
2011           p_x_header_rec.ship_to_org_id := FND_API.G_MISS_NUM;
2012           --
2013         ELSE
2014           --
2015           x_return_status := FND_API.G_RET_STS_ERROR;
2016           --
2017         END IF;
2018         --
2019       END IF;
2020       --
2021     END IF;
2022     --
2023 
2024     --
2025     IF  p_x_header_rec.sold_to_contact_id IS NOT NULL THEN
2026       --
2027       IF NOT OE_CNCL_Validate.Sold_To_Contact(p_x_header_rec.sold_to_contact_id) THEN
2028         --
2029         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2030           --
2031           p_x_header_rec.sold_to_contact_id := NULL;
2032           --
2033         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2034           --
2035           p_x_header_rec.sold_to_contact_id := FND_API.G_MISS_NUM;
2036           --
2037         ELSE
2038           --
2039           x_return_status := FND_API.G_RET_STS_ERROR;
2040           --
2041         END IF;
2042         --
2043       END IF;
2044       --
2045     END IF;
2046     --
2047 
2048 
2049     IF  p_x_header_rec.sold_to_org_id IS NOT NULL THEN
2050       --
2051       IF NOT OE_CNCL_Validate.Sold_To_Org(p_x_header_rec.sold_to_org_id) THEN
2052         --
2053         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2054           --
2055           p_x_header_rec.sold_to_org_id := NULL;
2056           --
2057         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2058           --
2059           p_x_header_rec.sold_to_org_id := FND_API.G_MISS_NUM;
2063           x_return_status := FND_API.G_RET_STS_ERROR;
2060           --
2061         ELSE
2062           --
2064           --
2065         END IF;
2066         --
2067       END IF;
2068       --
2069     END IF;
2070     --
2071 
2072     --
2073     IF  p_x_header_rec.source_document_type_id IS NOT NULL THEN
2074       --
2075       IF NOT OE_CNCL_Validate.Source_Document_Type
2076                            (p_x_header_rec.source_document_type_id) THEN
2077           --
2078           IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2079             --
2080             p_x_header_rec.source_document_type_id := NULL;
2081             --
2082           ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2083             --
2084             p_x_header_rec.source_document_type_id := FND_API.G_MISS_NUM;
2085             --
2086           ELSE
2087             --
2088             x_return_status := FND_API.G_RET_STS_ERROR;
2089             --
2090           END IF;
2091           --
2092         END IF;
2093         --
2094     END IF;
2095     --
2096 
2097     --
2098     IF  p_x_header_rec.tax_exempt_flag IS NOT NULL THEN
2099       --
2100       IF NOT OE_CNCL_Validate.Tax_Exempt(p_x_header_rec.tax_exempt_flag) THEN
2101         --
2102         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2103           --
2104           p_x_header_rec.tax_exempt_flag := NULL;
2105           --
2106         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2107           --
2108           p_x_header_rec.tax_exempt_flag := FND_API.G_MISS_CHAR;
2109           --
2110         ELSE
2111           --
2112           x_return_status := FND_API.G_RET_STS_ERROR;
2113           --
2114         END IF;
2115         --
2116       END IF;
2117       --
2118     END IF;
2119     --
2120 
2121     --
2122     IF  p_x_header_rec.tax_exempt_reason_code IS NOT NULL THEN
2123       --
2124       IF NOT OE_CNCL_Validate.Tax_Exempt_Reason
2125                          (p_x_header_rec.tax_exempt_reason_code) THEN
2126         --
2127         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2128           --
2129           p_x_header_rec.tax_exempt_reason_code := NULL;
2130           --
2131         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2132           --
2133           p_x_header_rec.tax_exempt_reason_code := FND_API.G_MISS_CHAR;
2134           --
2135         ELSE
2136           --
2137           x_return_status := FND_API.G_RET_STS_ERROR;
2138           --
2139         END IF;
2140         --
2141       END IF;
2142       --
2143     END IF;
2144     --
2145 
2146     --
2147     IF  p_x_header_rec.tax_point_code IS NOT NULL THEN
2148       --
2149       IF NOT OE_CNCL_Validate.Tax_Point(p_x_header_rec.tax_point_code) THEN
2150         --
2151         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2152           --
2153           p_x_header_rec.tax_point_code := NULL;
2154           --
2155         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2156           --
2157           p_x_header_rec.tax_point_code := FND_API.G_MISS_CHAR;
2158           --
2159         ELSE
2160           --
2161           x_return_status := FND_API.G_RET_STS_ERROR;
2162           --
2163         END IF;
2164         --
2165       END IF;
2166       --
2167     END IF;
2168     --
2169 
2170     --
2171     IF  p_x_header_rec.transactional_curr_code IS NOT NULL THEN
2172       --
2173       IF NOT OE_CNCL_Validate.Transactional_Curr
2174                          (p_x_header_rec.transactional_curr_code) THEN
2175         --
2176         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2177           --
2178           p_x_header_rec.transactional_curr_code := NULL;
2179           --
2180         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2181           --
2182           p_x_header_rec.transactional_curr_code := FND_API.G_MISS_CHAR;
2183           --
2184         ELSE
2185           --
2186           x_return_status := FND_API.G_RET_STS_ERROR;
2187           --
2188         END IF;
2189         --
2190       END IF;
2191       --
2192     END IF;
2193     --
2194 
2195     --
2196     IF  p_x_header_rec.payment_type_code IS NOT NULL THEN
2197       --
2198       IF NOT OE_CNCL_Validate.Payment_Type(p_x_header_rec.payment_type_code) THEN
2199         --
2200         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2201           --
2202           p_x_header_rec.payment_type_code := NULL;
2203           --
2204         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2205           --
2206           p_x_header_rec.payment_type_code := FND_API.G_MISS_CHAR;
2207           --
2208         ELSE
2209           --
2210           x_return_status := FND_API.G_RET_STS_ERROR;
2211           --
2212         END IF;
2213         --
2214       END IF;
2215       --
2216     END IF;
2217     --
2218 
2219     --
2223         --
2220     IF  p_x_header_rec.credit_card_code IS NOT NULL THEN
2221       --
2222       IF NOT OE_CNCL_Validate.Credit_Card(p_x_header_rec.credit_card_code) THEN
2224         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2225           --
2226           p_x_header_rec.credit_card_code := NULL;
2227           --
2228         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2229           --
2230           p_x_header_rec.credit_card_code := FND_API.G_MISS_CHAR;
2231           --
2232         ELSE
2233           --
2234           x_return_status := FND_API.G_RET_STS_ERROR;
2235           --
2236         END IF;
2237         --
2238       END IF;
2239       --
2240     END IF;
2241     --
2242 
2243     --
2244     IF  p_x_header_rec.flow_status_code IS NOT NULL THEN
2245       --
2246       IF NOT OE_CNCL_Validate.Flow_Status(p_x_header_rec.flow_status_code) THEN
2247         --
2248         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2249           --
2250           p_x_header_rec.flow_status_code := NULL;
2251           --
2252         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2253           --
2254           p_x_header_rec.flow_status_code := FND_API.G_MISS_CHAR;
2255           --
2256         ELSE
2257           --
2258           x_return_status := FND_API.G_RET_STS_ERROR;
2259           --
2260         END IF;
2261         --
2262       END IF;
2263       --
2264     END IF;
2265     --
2266 
2267     --
2268     IF  p_x_header_rec.attribute1 IS NOT NULL
2269     OR  p_x_header_rec.attribute10 IS NOT NULL
2270     OR  p_x_header_rec.attribute11 IS NOT NULL
2271     OR  p_x_header_rec.attribute12 IS NOT NULL
2272     OR  p_x_header_rec.attribute13 IS NOT NULL
2273     OR  p_x_header_rec.attribute14 IS NOT NULL
2274     OR  p_x_header_rec.attribute15 IS NOT NULL
2275     OR  p_x_header_rec.attribute16 IS NOT NULL   --For bug 2184255
2276     OR  p_x_header_rec.attribute17 IS NOT NULL
2277     OR  p_x_header_rec.attribute18 IS NOT NULL
2278     OR  p_x_header_rec.attribute19 IS NOT NULL
2279     OR  p_x_header_rec.attribute2 IS NOT NULL
2280     OR  p_x_header_rec.attribute20 IS NOT NULL
2281     OR  p_x_header_rec.attribute3 IS NOT NULL
2282     OR  p_x_header_rec.attribute4 IS NOT NULL
2283     OR  p_x_header_rec.attribute5 IS NOT NULL
2284     OR  p_x_header_rec.attribute6 IS NOT NULL
2285     OR  p_x_header_rec.attribute7 IS NOT NULL
2286     OR  p_x_header_rec.attribute8 IS NOT NULL
2287     OR  p_x_header_rec.attribute9 IS NOT NULL
2288     OR  p_x_header_rec.context IS NOT NULL
2289     THEN
2290          --
2291          oe_debug_pub.add('Before calling header_desc_flex',2);
2292          IF NOT OE_CNCL_VALIDATE.Header_Desc_Flex
2293           (p_context            => p_x_header_rec.context
2294           ,p_attribute1         => p_x_header_rec.attribute1
2295           ,p_attribute2         => p_x_header_rec.attribute2
2296           ,p_attribute3         => p_x_header_rec.attribute3
2297           ,p_attribute4         => p_x_header_rec.attribute4
2298           ,p_attribute5         => p_x_header_rec.attribute5
2299           ,p_attribute6         => p_x_header_rec.attribute6
2300           ,p_attribute7         => p_x_header_rec.attribute7
2301           ,p_attribute8         => p_x_header_rec.attribute8
2302           ,p_attribute9         => p_x_header_rec.attribute9
2303           ,p_attribute10        => p_x_header_rec.attribute10
2304           ,p_attribute11        => p_x_header_rec.attribute11
2305           ,p_attribute12        => p_x_header_rec.attribute12
2306           ,p_attribute13        => p_x_header_rec.attribute13
2307           ,p_attribute14        => p_x_header_rec.attribute14
2308           ,p_attribute15        => p_x_header_rec.attribute15
2309           ,p_attribute16        => p_x_header_rec.attribute16  -- for bug 2184255
2310           ,p_attribute17        => p_x_header_rec.attribute17
2311           ,p_attribute18        => p_x_header_rec.attribute18
2312           ,p_attribute19        => p_x_header_rec.attribute19
2313           ,p_attribute20        => p_x_header_rec.attribute20)
2314           THEN
2315 
2316             --
2317             IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2318                 --
2319                 p_x_header_rec.context    := null;
2320                 p_x_header_rec.attribute1 := null;
2321                 p_x_header_rec.attribute2 := null;
2322                 p_x_header_rec.attribute3 := null;
2323                 p_x_header_rec.attribute4 := null;
2324                 p_x_header_rec.attribute5 := null;
2325                 p_x_header_rec.attribute6 := null;
2326                 p_x_header_rec.attribute7 := null;
2327                 p_x_header_rec.attribute8 := null;
2328                 p_x_header_rec.attribute9 := null;
2329                 p_x_header_rec.attribute10 := null;
2330                 p_x_header_rec.attribute11 := null;
2331                 p_x_header_rec.attribute12 := null;
2332                 p_x_header_rec.attribute13 := null;
2333                 p_x_header_rec.attribute14 := null;
2334                 p_x_header_rec.attribute15 := null;
2335                 p_x_header_rec.attribute16 := null;  -- for bug 2184255
2336                 p_x_header_rec.attribute17 := null;
2337                 p_x_header_rec.attribute18 := null;
2338                 p_x_header_rec.attribute19 := null;
2339                 p_x_header_rec.attribute20 := null;
2340                 --
2341             ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2342                 --
2343                 p_x_header_rec.context    := FND_API.G_MISS_CHAR;
2344                 p_x_header_rec.attribute1 := FND_API.G_MISS_CHAR;
2345                 p_x_header_rec.attribute2 := FND_API.G_MISS_CHAR;
2346                 p_x_header_rec.attribute3 := FND_API.G_MISS_CHAR;
2347                 p_x_header_rec.attribute4 := FND_API.G_MISS_CHAR;
2348                 p_x_header_rec.attribute5 := FND_API.G_MISS_CHAR;
2349                 p_x_header_rec.attribute6 := FND_API.G_MISS_CHAR;
2350                 p_x_header_rec.attribute7 := FND_API.G_MISS_CHAR;
2351                 p_x_header_rec.attribute8 := FND_API.G_MISS_CHAR;
2352                 p_x_header_rec.attribute9 := FND_API.G_MISS_CHAR;
2353                 p_x_header_rec.attribute10 := FND_API.G_MISS_CHAR;
2354                 p_x_header_rec.attribute11 := FND_API.G_MISS_CHAR;
2355                 p_x_header_rec.attribute12 := FND_API.G_MISS_CHAR;
2356                 p_x_header_rec.attribute13 := FND_API.G_MISS_CHAR;
2357                 p_x_header_rec.attribute14 := FND_API.G_MISS_CHAR;
2358                 p_x_header_rec.attribute15 := FND_API.G_MISS_CHAR;
2362                 p_x_header_rec.attribute19 := FND_API.G_MISS_CHAR;
2359                 p_x_header_rec.attribute16 := FND_API.G_MISS_CHAR;  -- for bug 2184255
2360                 p_x_header_rec.attribute17 := FND_API.G_MISS_CHAR;
2361                 p_x_header_rec.attribute18 := FND_API.G_MISS_CHAR;
2363                 p_x_header_rec.attribute20 := FND_API.G_MISS_CHAR;
2364                 --
2365             ELSE
2366                 --
2367                 x_return_status := FND_API.G_RET_STS_ERROR;
2368                 --
2369             END IF;
2370             --
2371         END IF;
2372         --
2373     END IF;
2374     --
2375     oe_debug_pub.add('After header_desc_flex  ' || x_return_status,2);
2376     --
2377     IF  p_x_header_rec.global_attribute1 IS NOT NULL
2378     OR  p_x_header_rec.global_attribute10 IS NOT NULL
2379     OR  p_x_header_rec.global_attribute11 IS NOT NULL
2380     OR  p_x_header_rec.global_attribute12 IS NOT NULL
2381     OR  p_x_header_rec.global_attribute13 IS NOT NULL
2382     OR  p_x_header_rec.global_attribute14 IS NOT NULL
2383     OR  p_x_header_rec.global_attribute15 IS NOT NULL
2384     OR  p_x_header_rec.global_attribute16 IS NOT NULL
2385     OR  p_x_header_rec.global_attribute17 IS NOT NULL
2386     OR  p_x_header_rec.global_attribute18 IS NOT NULL
2387     OR  p_x_header_rec.global_attribute19 IS NOT NULL
2388     OR  p_x_header_rec.global_attribute2 IS NOT NULL
2389     OR  p_x_header_rec.global_attribute20 IS NOT NULL
2390     OR  p_x_header_rec.global_attribute3 IS NOT NULL
2391     OR  p_x_header_rec.global_attribute4 IS NOT NULL
2392     OR  p_x_header_rec.global_attribute5 IS NOT NULL
2393     OR  p_x_header_rec.global_attribute6 IS NOT NULL
2394     OR  p_x_header_rec.global_attribute7 IS NOT NULL
2395     OR  p_x_header_rec.global_attribute8 IS NOT NULL
2396     OR  p_x_header_rec.global_attribute9 IS NOT NULL
2397     OR  p_x_header_rec.global_attribute_category IS NOT NULL
2398     THEN
2399 
2400           --
2401           OE_DEBUG_PUB.ADD('Before G_header_desc_flex',2);
2402           IF NOT OE_CNCL_VALIDATE.G_Header_Desc_Flex
2403           (p_context            => p_x_header_rec.global_attribute_category
2404           ,p_attribute1         => p_x_header_rec.global_attribute1
2405           ,p_attribute2         => p_x_header_rec.global_attribute2
2406           ,p_attribute3         => p_x_header_rec.global_attribute3
2407           ,p_attribute4         => p_x_header_rec.global_attribute4
2408           ,p_attribute5         => p_x_header_rec.global_attribute5
2409           ,p_attribute6         => p_x_header_rec.global_attribute6
2410           ,p_attribute7         => p_x_header_rec.global_attribute7
2411           ,p_attribute8         => p_x_header_rec.global_attribute8
2412           ,p_attribute9         => p_x_header_rec.global_attribute9
2413           ,p_attribute10        => p_x_header_rec.global_attribute10
2414           ,p_attribute11        => p_x_header_rec.global_attribute11
2415           ,p_attribute12        => p_x_header_rec.global_attribute12
2416           ,p_attribute13        => p_x_header_rec.global_attribute13
2417           ,p_attribute14        => p_x_header_rec.global_attribute13
2418           ,p_attribute15        => p_x_header_rec.global_attribute14
2419           ,p_attribute16        => p_x_header_rec.global_attribute16
2420           ,p_attribute17        => p_x_header_rec.global_attribute17
2421           ,p_attribute18        => p_x_header_rec.global_attribute18
2422           ,p_attribute19        => p_x_header_rec.global_attribute19
2423           ,p_attribute20        => p_x_header_rec.global_attribute20)
2424           THEN
2425             --
2426             IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2427                 --
2428                 p_x_header_rec.global_attribute_category    := null;
2429                 p_x_header_rec.global_attribute1 := null;
2430                 p_x_header_rec.global_attribute2 := null;
2431                 p_x_header_rec.global_attribute3 := null;
2432                 p_x_header_rec.global_attribute4 := null;
2433                 p_x_header_rec.global_attribute5 := null;
2434                 p_x_header_rec.global_attribute6 := null;
2435                 p_x_header_rec.global_attribute7 := null;
2436                 p_x_header_rec.global_attribute8 := null;
2437                 p_x_header_rec.global_attribute9 := null;
2438                 p_x_header_rec.global_attribute11 := null;
2439                 p_x_header_rec.global_attribute12 := null;
2440                 p_x_header_rec.global_attribute13 := null;
2441                 p_x_header_rec.global_attribute14 := null;
2442                 p_x_header_rec.global_attribute15 := null;
2443                 p_x_header_rec.global_attribute16 := null;
2444                 p_x_header_rec.global_attribute17 := null;
2445                 p_x_header_rec.global_attribute18 := null;
2446                 p_x_header_rec.global_attribute19 := null;
2447                 p_x_header_rec.global_attribute20 := null;
2448                 --
2449             ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2450                 --
2451                 p_x_header_rec.global_attribute_category
2452                                                := FND_API.G_MISS_CHAR;
2453                 p_x_header_rec.global_attribute1 := FND_API.G_MISS_CHAR;
2454                 p_x_header_rec.global_attribute2 := FND_API.G_MISS_CHAR;
2455                 p_x_header_rec.global_attribute3 := FND_API.G_MISS_CHAR;
2456                 p_x_header_rec.global_attribute4 := FND_API.G_MISS_CHAR;
2457                 p_x_header_rec.global_attribute5 := FND_API.G_MISS_CHAR;
2458                 p_x_header_rec.global_attribute6 := FND_API.G_MISS_CHAR;
2459                 p_x_header_rec.global_attribute7 := FND_API.G_MISS_CHAR;
2460                 p_x_header_rec.global_attribute8 := FND_API.G_MISS_CHAR;
2461                 p_x_header_rec.global_attribute9 := FND_API.G_MISS_CHAR;
2462                 p_x_header_rec.global_attribute11 := FND_API.G_MISS_CHAR;
2463                 p_x_header_rec.global_attribute12 := FND_API.G_MISS_CHAR;
2464                 p_x_header_rec.global_attribute13 := FND_API.G_MISS_CHAR;
2465                 p_x_header_rec.global_attribute14 := FND_API.G_MISS_CHAR;
2466                 p_x_header_rec.global_attribute15 := FND_API.G_MISS_CHAR;
2467                 p_x_header_rec.global_attribute16 := FND_API.G_MISS_CHAR;
2468                 p_x_header_rec.global_attribute17 := FND_API.G_MISS_CHAR;
2469                 p_x_header_rec.global_attribute18 := FND_API.G_MISS_CHAR;
2470                 p_x_header_rec.global_attribute19 := FND_API.G_MISS_CHAR;
2471                 p_x_header_rec.global_attribute20 := FND_API.G_MISS_CHAR;
2472                 --
2473             ELSE
2474                 --
2475                 x_return_status := FND_API.G_RET_STS_ERROR;
2476                 --
2477             END IF;
2478             --
2479          END IF;
2480          --
2481    END IF;
2482    --
2483 
2484     --
2485     OE_DEBUG_PUB.ADD('After G_header_desc_flex ' || x_return_status,2);
2486     --  Done validating attributes
2487 
2488     -- Salesrep_id
2489     IF  p_x_header_rec.salesrep_id IS NOT NULL THEN
2490       --
2491       IF NOT OE_CNCL_Validate.salesrep(p_x_header_rec.salesrep_id) THEN
2492         --
2493         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2494            --
2495            p_x_header_rec.salesrep_id := NULL;
2496            --
2497         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2498            --
2499            p_x_header_rec.salesrep_id := FND_API.G_MISS_NUM;
2500            --
2501         ELSE
2502            --
2503            x_return_status := FND_API.G_RET_STS_ERROR;
2504            --
2505         END IF;
2506         --
2507       END IF;
2508       --
2509     END IF;
2510     --
2511 
2512     --
2513     IF  p_x_header_rec.sales_channel_code IS NOT NULL THEN
2514       --
2515       IF NOT OE_CNCL_Validate.sales_channel(p_x_header_rec.sales_channel_code) THEN
2516         --
2517         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2518            --
2519            p_x_header_rec.sales_channel_code := NULL;
2520            --
2521         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2522            --
2523            p_x_header_rec.sales_channel_code := FND_API.G_MISS_NUM;
2524            --
2525         ELSE
2526            --
2527            x_return_status := FND_API.G_RET_STS_ERROR;
2528            --
2529         END IF;
2530         --
2531       END IF;
2532       --
2533     END IF;
2534     --
2535 
2536 
2537     -- Return_reason_code
2538     --
2539     IF  p_x_header_rec.return_reason_code IS NOT NULL THEN
2540       --
2541       IF NOT OE_CNCL_Validate.return_reason(p_x_header_rec.return_reason_code) THEN
2542         --
2543         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2544           --
2545           p_x_header_rec.return_reason_code := NULL;
2546           --
2547         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2548           --
2549           p_x_header_rec.return_reason_code := FND_API.G_MISS_CHAR;
2550           --
2551         ELSE
2552           --
2553           x_return_status := FND_API.G_RET_STS_ERROR;
2554           --
2555         END IF;
2556         --
2557       END IF;
2558       --
2559     END IF;
2560     --
2561 
2562     -- Customer_Location
2563     --
2564     IF  p_x_header_rec.sold_to_site_use_id IS NOT NULL THEN
2565       --
2566       IF NOT OE_CNCL_Validate.Customer_Location(p_x_header_rec.sold_to_site_use_id) THEN
2567         --
2568         IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL THEN
2569           --
2570           p_x_header_rec.sold_to_site_use_id := NULL;
2571           --
2572         ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF THEN
2573           --
2574           p_x_header_rec.sold_to_site_use_id := FND_API.G_MISS_CHAR;
2575           --
2576         ELSE
2577           --
2578           x_return_status := FND_API.G_RET_STS_ERROR;
2579           --
2580         END IF;
2581         --
2582       END IF;
2583       --
2584     END IF;
2585     --
2586     oe_debug_pub.add('Exiting OE_CNCL_VALIDATE_HEADER.ATTRIBUTES',1);
2587 
2588 EXCEPTION
2589 
2590     WHEN FND_API.G_EXC_ERROR THEN
2591       x_return_status := FND_API.G_RET_STS_ERROR;
2592 
2593     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2594       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2595 
2596     WHEN OTHERS THEN
2597       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2598 
2599       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2600       THEN
2601         OE_MSG_PUB.Add_Exc_Msg
2602         (   G_PKG_NAME
2603            ,'Attributes'
2604          );
2605       END IF;
2606 
2607 END Attributes;
2608 
2609 
2610 
2611 END OE_CNCL_Validate_Header;