1 PACKAGE BODY OE_BULK_PROCESS_HEADER AS
2 /* $Header: OEBLHDRB.pls 120.8.12010000.6 2009/01/21 13:13:05 smanian ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30):='OE_BULK_PROCESS_HEADER';
5
6
7 -----------------------------------------------------------------------
8 -- LOCAL PROCEDURES/FUNCTIONS
9 -----------------------------------------------------------------------
10
11 -- Pass sold_to_org_id on the order or line in the related_customer_id
12 -- parameter.
13
14 FUNCTION Is_Related_Customer
15 (p_related_customer_id IN NUMBER
16 ,p_customer_id IN NUMBER
17 )
18 RETURN BOOLEAN
19 IS
20 l_dummy VARCHAR2(1);
21 BEGIN
22
23 SELECT 'VALID'
24 INTO l_dummy
25 FROM hz_cust_acct_relate
26 WHERE RELATED_CUST_ACCOUNT_ID = p_related_customer_id
27 AND CUST_ACCOUNT_ID = p_customer_id AND STATUS='A'
28 AND ROWNUM = 1;
29
30 RETURN TRUE;
31
32 EXCEPTION
33 WHEN OTHERS THEN
34 RETURN FALSE;
35
36 END Is_Related_Customer;
37
38
39 FUNCTION Get_Order_Number(p_order_type_id IN NUMBER,
40 p_order_number IN OUT NOCOPY /* file.sql.39 change */ NUMBER,
41 p_gapless_sequence OUT NOCOPY VARCHAR2)
42 RETURN BOOLEAN
43 IS
44
45 x_result NUMBER;
46 x_doc_sequence_value NUMBER;
47 x_doc_category_code VARCHAR(30):= p_order_type_id;
48 x_doc_sequence_id NUMBER;
49 x_db_sequence_name VARCHAR2(50);
50 x_doc_sequence_type CHAR(1);
51 x_doc_sequence_name VARCHAR2(240);
52 x_Prd_Tbl_Name VARCHAR2(240) ;
53 x_Aud_Tbl_Name VARCHAR2(240);
54 x_Msg_Flag VARCHAR2(240);
55 x_seqassid INTEGER;
56
57 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
58 BEGIN
59
60 -- Check whether order type exists in global table
61
62 IF G_SEQ_INFO_TBL.EXISTS(p_order_type_id) THEN
63
64 x_doc_sequence_type := G_SEQ_INFO_TBL(p_order_type_id);
65
66 ELSE -- Get sequence type from AOL
67
68 x_result := fnd_seqnum.get_seq_info( 660,
69 x_doc_category_code,
70 OE_Bulk_Order_Pvt.G_SOB_ID,
71 null,
72 sysdate,
73 x_doc_sequence_id,
74 x_doc_sequence_type,
75 x_doc_sequence_name,
76 x_db_sequence_name,
77 x_seqassid,
78 x_Prd_Tbl_Name,
79 x_Aud_Tbl_Name,
80 x_Msg_Flag
81 );
82
83
84 IF (x_result <> FND_SEQNUM.SEQSUCC)THEN
85
86 IF (x_result = FND_SEQNUM.NOTUSED) THEN
87 fnd_message.set_name('ONT','OE_MISS_DOC_SEQ');
88 oe_bulk_msg_pub.Add('Y', 'ERROR');
89 RAISE FND_API.G_EXC_ERROR;
90 END IF;
91
92 END IF;
93
94 -- Add entry to global table
95
96 G_SEQ_INFO_TBL(p_order_type_id) := x_doc_sequence_type;
97
98 END IF; -- Order Type exists in Global table
99
100 -- For manual sequences Caller needs to pass the Order Number.
101 IF (x_doc_sequence_type = 'M') THEN
102 IF (p_order_number IS NULL) THEN
103 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
104 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
105 OE_Order_Util.Get_Attribute_Name('ORDER_NUMBER'));
106 oe_bulk_msg_pub.Add('Y', 'ERROR');
107 return FALSE;
108 ELSE
109 return TRUE;
110 END IF;
111 -- Gapless sequence not supported for BULK
112 ELSIF x_doc_sequence_type = 'G' THEN
113 fnd_message.set_name('ONT','OE_BULK_GAPLESS_DOC_SEQ');
114 oe_bulk_msg_pub.Add('Y', 'ERROR');
115 p_gapless_sequence := 'Y';
116 RETURN FALSE;
117 END IF;
118
119 X_result := fnd_seqnum.get_seq_val(660,
120 x_doc_category_code,
121 OE_Bulk_Order_Pvt.G_SOB_ID,
122 null,
123 sysdate,
124 x_doc_sequence_value,
125 x_doc_sequence_id,
126 'Y',
127 'Y');
128
129 IF (x_result <> 0)THEN
130 RAISE FND_API.G_EXC_ERROR;
131 END IF;
132
133 p_order_number := x_doc_sequence_value;
134 IF (p_order_number IS NULL) THEN
135 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
136 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
137 OE_Order_Util.Get_Attribute_Name('ORDER_NUMBER'));
138 oe_bulk_msg_pub.Add('Y', 'ERROR');
139 return FALSE;
140 END IF;
141
142 RETURN TRUE;
143
144 EXCEPTION
145 WHEN OTHERS THEN
146 RETURN FALSE;
147 END Get_Order_Number;
148
149
150 --
151 -- This FUNCTION returns the Price List Type Code
152 --
153
154 FUNCTION Get_Price_List_Type
155 ( p_price_list_id IN NUMBER)
156 RETURN VARCHAR2
157 IS
158 l_c_index NUMBER;
159 BEGIN
160
161 l_c_index := OE_Bulk_Cache.Load_Price_List(p_price_list_id);
162
163 RETURN OE_Bulk_Cache.G_PRICE_LIST_TBL(l_c_index).list_type_code;
164
165 END Get_Price_List_Type;
166
167
168 --
169 -- This FUNCTION validates Tax Exempt Reason against the lookup
170 --
171
172 FUNCTION Valid_Tax_Exempt_Reason
173 (p_tax_exempt_reason_code VARCHAR2
174 )
175 RETURN BOOLEAN
176 IS
177 l_dummy VARCHAR2(1);
178 BEGIN
179 -- EBTax Changes
180 SELECT 'Y'
181 INTO l_dummy
182 FROM fnd_lookups l
183 WHERE l.LOOKUP_CODE = p_tax_exempt_reason_code --7782998
184 AND l.LOOKUP_TYPE = 'ZX_EXEMPTION_REASON_CODE'
185 AND l.ENABLED_FLAG = 'Y'
186 AND SYSDATE BETWEEN NVL(START_DATE_ACTIVE, SYSDATE)
187 AND NVL(END_DATE_ACTIVE, SYSDATE)
188 ;
189
190 RETURN TRUE;
191
192 EXCEPTION
193 WHEN OTHERS THEN
194 RETURN FALSE;
195 END Valid_Tax_Exempt_Reason;
196
197 --
198 -- This FUNCTION validates Tax Exemptions against Customer, Sites
199 --
200
201 FUNCTION Valid_Tax_Exemptions
202 (p_tax_exempt_number VARCHAR2
203 ,p_tax_exempt_reason_code VARCHAR2
204 ,p_ship_to_org_id NUMBER
205 ,p_invoice_to_org_id NUMBER
206 ,p_sold_to_org_id NUMBER
207 ,p_request_date DATE
208 )
209 RETURN BOOLEAN
210 IS
211 l_dummy VARCHAR2(10);
212 -- eBTax Changes
213 l_ship_to_cust_Acct_id hz_cust_Accounts.cust_Account_id%type;
214 l_ship_to_party_id hz_cust_accounts.party_id%type;
215 l_ship_to_party_site_id hz_party_sites.party_site_id%type;
216 l_bill_to_cust_Acct_id hz_cust_Accounts.cust_Account_id%type;
217 l_bill_to_party_id hz_cust_accounts.party_id%type;
218 l_bill_to_party_site_id hz_party_sites.party_site_id%type;
219 l_org_id NUMBER;
220 l_legal_entity_id NUMBER;
221
222 cursor partyinfo(p_site_org_id HZ_CUST_SITE_USES_ALL.SITE_USE_ID%type) is
223 SELECT cust_acct.cust_account_id,
224 cust_Acct.party_id,
225 acct_site.party_site_id,
226 site_use.org_id
227 FROM
228 HZ_CUST_SITE_USES_ALL site_use,
229 HZ_CUST_ACCT_SITES_ALL acct_site,
230 HZ_CUST_ACCOUNTS_ALL cust_Acct
231 WHERE site_use.site_use_id = p_site_org_id
232 AND site_use.cust_acct_site_id = acct_site.cust_acct_site_id
233 and acct_site.cust_account_id = cust_acct.cust_account_id;
234
235
236 BEGIN
237 -- EBTax Changes
238
239 open partyinfo(p_invoice_to_org_id);
240 fetch partyinfo into l_bill_to_cust_Acct_id,
241 l_bill_to_party_id,
242 l_bill_to_party_site_id,
243 l_org_id;
244 close partyinfo;
245
246 if p_ship_to_org_id = p_invoice_to_org_id then
247 l_ship_to_cust_Acct_id := l_bill_to_cust_Acct_id;
248 l_ship_to_party_id := l_bill_to_party_id;
249 l_ship_to_party_site_id := l_bill_to_party_site_id ;
250 else
251 open partyinfo(p_ship_to_org_id);
252 fetch partyinfo into l_ship_to_cust_Acct_id,
253 l_ship_to_party_id,
254 l_ship_to_party_site_id,
255 l_org_id;
256 close partyinfo;
257 end if;
258
259 SELECT 'VALID'
260 INTO l_dummy
261 FROM ZX_EXEMPTIONS_V
262 WHERE EXEMPT_CERTIFICATE_NUMBER = p_tax_exempt_number
263 AND EXEMPT_REASON_CODE = p_tax_exempt_reason_code
264 AND nvl(site_use_id,nvl(p_ship_to_org_id, p_invoice_to_org_id)) =
265 nvl(p_ship_to_org_id,p_invoice_to_org_id)
266 AND nvl(cust_account_id, l_bill_to_cust_acct_id) = l_bill_to_cust_acct_id
267 AND nvl(PARTY_SITE_ID,nvl(l_ship_to_party_site_id, l_bill_to_party_site_id))=
268 nvl(l_ship_to_party_site_id, l_bill_to_party_site_id)
269 and org_id = l_org_id
270 and party_id = l_bill_to_party_id
271 -- and nvl(LEGAL_ENTITY_ID,-99) IN (nvl(l_legal_entity_id, legal_entity_id), -99)
272 AND EXEMPTION_STATUS_CODE = 'PRIMARY'
273 AND TRUNC(NVL(p_request_date,sysdate))
274 BETWEEN TRUNC(EFFECTIVE_FROM)
275 AND TRUNC(NVL(EFFECTIVE_TO,NVL(p_request_date,sysdate)))
276 AND ROWNUM = 1;
277
278
279 EXCEPTION
280 WHEN NO_DATA_FOUND THEN
281 RETURN FALSE;
282 END Valid_Tax_Exemptions;
283
284 --{ bug 5054618
285 -- End customer changes
286 FUNCTION validate_end_customer(p_end_customer_id IN NUMBER) RETURN BOOLEAN
287 IS
288 l_dummy VARCHAR2(10);
289 BEGIN
290 IF p_end_customer_id IS NULL OR
291 p_end_customer_id = FND_API.G_MISS_NUM THEN
292 RETURN TRUE;
293 END IF;
294
295 SELECT 'VALID' INTO l_dummy
296 FROM OE_SOLD_TO_ORGS_V
297 WHERE ORGANIZATION_ID =p_end_customer_id AND
298 STATUS = 'A' AND
299 SYSDATE BETWEEN NVL(START_DATE_ACTIVE, SYSDATE)
300 AND NVL(END_DATE_ACTIVE, SYSDATE);
301 RETURN TRUE;
302 EXCEPTION
303 WHEN NO_DATA_FOUND THEN
304
305 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
306 THEN
307
308 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => 'END_CUSTOMER_ID');
309
310 fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
311 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
312 OE_Order_Util.Get_Attribute_Name('END_CUSTOMER_ID')||':validation:'||to_char(p_end_customer_id));
313 OE_MSG_PUB.Add;
314 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
315
316 END IF;
317
318 RETURN FALSE;
319
320 WHEN OTHERS THEN
321
322 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
323 THEN
324 OE_MSG_PUB.Add_Exc_Msg
325 ( G_PKG_NAME
326 , 'END_CUSOTMER'
327 );
328 END IF;
329
330 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
331 null;
332
333 END validate_end_customer;
334
335 FUNCTION validate_end_customer_contact(p_end_customer_contact_id IN NUMBER) RETURN BOOLEAN
336 IS
337 l_dummy VARCHAR2(10);
338 BEGIN
339 IF p_end_customer_contact_id IS NULL OR
340 p_end_customer_contact_id = FND_API.G_MISS_NUM THEN
341 RETURN TRUE;
342 END IF;
343
344 SELECT 'VALID' INTO l_dummy
345 FROM OE_RA_CONTACTS_V CON
346 WHERE CON.CONTACT_ID = p_end_customer_contact_id
347 AND CON.STATUS = 'A';
348 RETURN TRUE;
349 EXCEPTION
350 WHEN NO_DATA_FOUND THEN
351
352 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
353 THEN
354
355 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => 'END_CUSTOMER_CONTACT_ID');
356
357 fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
358 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
359 OE_Order_Util.Get_Attribute_Name('end_customer_contact_id'));
360 OE_MSG_PUB.Add;
361 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
362
363 END IF;
364
365
366 RETURN FALSE;
367
368 WHEN OTHERS THEN
369
370 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
371 THEN
372 OE_MSG_PUB.Add_Exc_Msg
373 ( G_PKG_NAME
374 , 'End_Customer_Contact'
375 );
376 END IF;
377
378
379 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
380 null;
381 END validate_end_customer_contact;
382
383
384 FUNCTION validate_END_CUSTOMER_SITE_USE (
385 p_end_customer_site_use_id IN NUMBER,
386 p_end_customer_id IN NUMBER)RETURN BOOLEAN
387 IS
388 l_dummy VARCHAR2(10);
389 l_c_index NUMBER;
390 BEGIN
391 IF p_end_customer_site_use_id IS NULL OR p_end_customer_site_use_id = FND_API.G_MISS_NUM THEN
392 RETURN TRUE;
393 END IF;
394
395 /* SELECT 'VALID'
396 INTO
397 l_dummy
398 FROM
399 hz_cust_site_uses site_use,
400 hz_cust_acct_sites acct_site
401 WHERE
402 site_use.site_use_id=p_end_customer_site_use_id
403 and site_use.cust_acct_site_id=acct_site.cust_acct_site_id
404 and acct_site.cust_account_id=p_end_customer_id;
405
406 RETURN TRUE; */
407 l_c_index := OE_Bulk_Cache.Load_End_customer_site
408 (p_key => p_end_customer_site_use_id);
409
410 IF OE_Bulk_Cache.G_END_CUSTOMER_SITE_TBL(l_c_index).customer_id
411 = p_end_customer_id
412 THEN
413 RETURN TRUE;
414 ELSE
415 RETURN FALSE;
416 END IF;
417
418 EXCEPTION
419 WHEN NO_DATA_FOUND THEN
420 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
421 THEN
422
423 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => 'END_CUSTOMER_SITE_USE_ID');
424
425 fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
426 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
427 OE_Order_Util.Get_Attribute_Name('end_customer_site_use_id'));
428 OE_MSG_PUB.Add;
429 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
430
431 END IF;
432
433
434 RETURN FALSE;
435
436 WHEN OTHERS THEN
437
438 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
439 THEN
440 OE_MSG_PUB.Add_Exc_Msg
441 ( G_PKG_NAME
442 , 'END_CUSTOMER_SITE_USE_ID'
443 );
444 END IF;
445
446
447 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
448 null;
449 END validate_END_CUSTOMER_SITE_USE;
450
451 FUNCTION validate_IB_OWNER ( p_ib_owner IN VARCHAR2 )RETURN BOOLEAN
452 IS l_dummy VARCHAR2(10);
453 l_lookup_type1 VARCHAR2(80) :='ITEM_OWNER';
454
455 BEGIN
456 IF p_ib_owner IS NULL OR
457 p_ib_owner = FND_API.G_MISS_CHAR THEN
458 RETURN TRUE;
459 END IF;
460 SELECT 'VALID' INTO
461 l_dummy FROM OE_LOOKUPS
462 WHERE lookup_code = p_ib_owner AND
463 ( lookup_type = l_lookup_type1);
464
465 RETURN TRUE;
466 EXCEPTION
467 WHEN NO_DATA_FOUND THEN
468
469 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
470 THEN
471
472 OE_DEBUG_PUB.ADD('Validation failed for IB_INSTALLED_AT_LOCATION in OEBLHDRB.pls');
473 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => 'IB_INSTALLED_AT_LOCATION');
474
475 fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
476 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
477 OE_Order_Util.Get_Attribute_Name('ib_installed_at_location'));
478 OE_MSG_PUB.Add;
479 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
480
481 END IF;
482
483
484 RETURN FALSE;
485
486 WHEN OTHERS THEN
487
488 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
489 THEN
490 OE_MSG_PUB.Add_Exc_Msg
491 ( G_PKG_NAME
492 , 'IB_INSTALLED_AT_LOCATION'
493 );
494 END IF;
495
496
497 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
498
499 null;
500
501 END validate_IB_OWNER;
502
503
504 FUNCTION validate_IB_INST_LOC( p_ib_installed_at_location IN VARCHAR2 )RETURN BOOLEAN
505 IS
506 l_dummy VARCHAR2(10);
507 l_lookup_type1 VARCHAR2(80) :='ITEM_INSTALL_LOCATION';
508
509 BEGIN
510 IF p_ib_installed_at_location IS NULL OR p_ib_installed_at_location = FND_API.G_MISS_CHAR THEN
511 RETURN TRUE;
512 END IF;
513 SELECT 'VALID' INTO l_dummy FROM OE_LOOKUPS
514 WHERE lookup_code = p_ib_installed_at_location AND
515 (lookup_type = l_lookup_type1);
516
517 RETURN TRUE;
518 EXCEPTION
519 WHEN NO_DATA_FOUND THEN
520
521 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
522 THEN
523
524 OE_DEBUG_PUB.ADD('Validation failed for IB_INSTALLED_AT_LOCATION in OEBLHDRB.pls');
525 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => 'IB_INSTALLED_AT_LOCATION');
526
527 fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
528 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
529 OE_Order_Util.Get_Attribute_Name('ib_installed_at_location'));
530 OE_MSG_PUB.Add;
531 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
532
533 END IF;
534
535
536 RETURN FALSE;
537
538 WHEN OTHERS THEN
539
540 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
541 THEN
542 OE_MSG_PUB.Add_Exc_Msg
543 ( G_PKG_NAME
544 , 'IB_INSTALLED_AT_LOCATION'
545 );
546 END IF;
547
548
549 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
550 null;
551
552 END validate_IB_INST_LOC;
553
554 FUNCTION validate_IB_CURRENT_LOCATION ( p_ib_current_location IN VARCHAR2 )
555 RETURN BOOLEAN
556 IS
557 l_dummy VARCHAR2(10);
558 l_lookup_type1 VARCHAR2(80) :='ITEM_CURRENT_LOCATION';
559
560 BEGIN
561 IF p_ib_current_location IS NULL OR
562 p_ib_current_location = FND_API.G_MISS_CHAR
563 THEN
564
565 RETURN TRUE;
566 END IF;
567
568 SELECT 'VALID'
569 INTO l_dummy
570 FROM OE_LOOKUPS
571 WHERE lookup_code = p_ib_current_location AND
572 (lookup_type = l_lookup_type1 );
573
574 RETURN TRUE;
575 EXCEPTION
576 WHEN NO_DATA_FOUND THEN
577
578 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
579 THEN
580
581 OE_DEBUG_PUB.ADD('Validation failed for IB_CURRENT_LOCATION in OEBLHDRB.pls');
582 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => 'IB_CURRENT_LOCATION');
583
584 fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
585 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
586 OE_Order_Util.Get_Attribute_Name('ib_current_location'));
587 OE_MSG_PUB.Add;
588 OE_MSG_PUB.Update_Msg_Context(p_attribute_code => null);
589
590 END IF;
591
592
593 RETURN FALSE;
594
595 WHEN OTHERS THEN
596
597 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
598 THEN
599 OE_MSG_PUB.Add_Exc_Msg
600 ( G_PKG_NAME
601 , 'IB_CURRENT_LOCATION'
602 );
603 END IF;
604
605
606 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
607
608 null;
609 END validate_IB_CURRENT_LOCATION;
610
611 --bug 5054618}
612
613 PROCEDURE Check_Book_Reqd_Attributes
614 ( p_header_rec IN OE_Bulk_Order_Pvt.HEADER_REC_TYPE
615 , p_index IN NUMBER
616 , x_return_status IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2
617 )
618 IS
619 l_set_of_books_rec OE_Order_Cache.Set_Of_Books_Rec_Type;
620 l_c_index NUMBER;
621 BEGIN
622
623 oe_debug_pub.add('Enter OE_VALIDATE_HEADER.CHECK_BOOK_REQD',1);
624
625 -- Check for the following required fields on a booked order:
626 -- Order Number, Sold To Org, Invoice To Org,
627 -- Price List, Tax Exempt Flag, Sales Person, Order Date
628
629 IF p_header_rec.sold_to_org_id(p_index) IS NULL
630 THEN
631 x_return_status := FND_API.G_RET_STS_ERROR;
632 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
633 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
634 OE_Order_UTIL.Get_Attribute_Name('SOLD_TO_ORG_ID'));
635 oe_bulk_msg_pub.ADD;
636 END IF;
637
638 IF p_header_rec.salesrep_id(p_index) IS NULL
639 THEN
640 x_return_status := FND_API.G_RET_STS_ERROR;
641 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
642 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
643 OE_Order_UTIL.Get_Attribute_Name('SALESREP_ID'));
644 oe_bulk_msg_pub.ADD;
645 END IF;
646
647 IF p_header_rec.ordered_date(p_index) IS NULL
648 THEN
649 x_return_status := FND_API.G_RET_STS_ERROR;
650 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
651 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
652 OE_Order_UTIL.Get_Attribute_Name('ORDERED_DATE'));
653 oe_bulk_msg_pub.ADD;
654 END IF;
655
656 IF p_header_rec.invoice_to_org_id(p_index) IS NULL
657 THEN
658 x_return_status := FND_API.G_RET_STS_ERROR;
659 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
660 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
661 OE_Order_UTIL.Get_Attribute_Name('INVOICE_TO_ORG_ID'));
662 oe_bulk_msg_pub.ADD;
663 END IF;
664
665 IF p_header_rec.tax_exempt_flag(p_index) IS NULL
666 THEN
667 x_return_status := FND_API.G_RET_STS_ERROR;
668 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
669 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
670 OE_Order_UTIL.Get_Attribute_Name('TAX_EXEMPT_FLAG'));
671 oe_bulk_msg_pub.ADD;
672 END IF;
673
674
675 -- Fix bug 1262790
676 -- Ship To Org and Payment Term are required only on regular or
677 -- MIXED orders, NOT on RETURN orders
678
679 IF p_header_rec.order_category_code(p_index) <>
680 OE_GLOBALS.G_RETURN_CATEGORY_CODE THEN
681
682 IF p_header_rec.ship_to_org_id(p_index) IS NULL
683 THEN
684 x_return_status := FND_API.G_RET_STS_ERROR;
685 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
686 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
687 OE_Order_UTIL.Get_Attribute_Name('SHIP_TO_ORG_ID'));
688 oe_bulk_msg_pub.ADD;
689 END IF;
690
691 IF p_header_rec.payment_term_id(p_index) IS NULL
692 THEN
693 x_return_status := FND_API.G_RET_STS_ERROR;
694 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
695 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
696 OE_Order_UTIL.Get_Attribute_Name('PAYMENT_TERM_ID'));
697 oe_bulk_msg_pub.ADD;
698 END IF;
699
700 END IF;
701
702
703 -- Check for additional required fields based on flags set
704 -- at the order type: agreement, customer po number
705
706 l_c_index := OE_Bulk_Cache.Load_Order_Type(p_header_rec.order_type_id(p_index));
707
708 IF ( OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).agreement_required_flag = 'Y' AND
709 p_header_rec.agreement_id(p_index) IS NULL)
710 THEN
711 x_return_status := FND_API.G_RET_STS_ERROR;
712 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
713 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
714 OE_Order_UTIL.Get_Attribute_Name('AGREEMENT_ID'));
715 oe_bulk_msg_pub.ADD;
716 END IF;
717
718 IF ( OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).require_po_flag = 'Y' AND
719 p_header_rec.cust_po_number(p_index) IS NULL)
720 THEN
721 x_return_status := FND_API.G_RET_STS_ERROR;
722 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
723 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
724 OE_Order_UTIL.Get_Attribute_Name('CUST_PO_NUMBER'));
725 oe_bulk_msg_pub.ADD;
726 END IF;
727
728
729 -- Conversion Type Related Checks
730
731 -- IF SOB currency is dIFferent from order currency,
732 -- conversion type is required
733
734 IF p_header_rec.conversion_type_code(p_index) IS NULL
735 THEN
736 l_set_of_books_rec := OE_Order_Cache.Load_Set_Of_Books;
737
738 IF ( l_set_of_books_rec.currency_code <>
739 p_header_rec.transactional_curr_code(p_index)) THEN
740 x_return_status := FND_API.G_RET_STS_ERROR;
741 FND_MESSAGE.SET_NAME('ONT','OE_VAL_REQ_NON_BASE_CURRENCY');
742 FND_MESSAGE.SET_TOKEN
743 ('ORDER_CURRENCY',p_header_rec.transactional_curr_code(p_index));
744 FND_MESSAGE.SET_TOKEN('SOB_CURRENCY',l_set_of_books_rec.currency_code);
745 oe_bulk_msg_pub.ADD;
746 END IF;
747
748 -- IF conversion type is 'User', conversion rate AND conversion rate date
749 -- required.
750
751 ELSIF p_header_rec.conversion_type_code(p_index) = 'User'
752 THEN
753
754 IF p_header_rec.conversion_rate(p_index) IS NULL OR
755 p_header_rec.conversion_rate_date(p_index) IS NULL
756 THEN
757 x_return_status := FND_API.G_RET_STS_ERROR;
758 FND_MESSAGE.SET_NAME('ONT','OE_VAL_USER_CONVERSION_TYPE');
759 oe_bulk_msg_pub.ADD;
760 END IF;
761
762 END IF; -- END of checks based on conversion type
763
764
765 -- Checks based on payment type attached to the order
766
767 IF p_header_rec.payment_type_code(p_index) IS NOT NULL THEN
768
769 -- payment amount should be specIFied
770 -- only IF Payment Type is NOT Credit Card
771
772 IF p_header_rec.payment_type_code(p_index) <> 'CREDIT_CARD' AND
773 p_header_rec.payment_amount(p_index) IS NULL
774 THEN
775 x_return_status := FND_API.G_RET_STS_ERROR;
776 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQUIRED_ATTRIBUTE');
777 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
778 OE_Order_UTIL.Get_Attribute_Name('PAYMENT_AMOUNT'));
779 oe_bulk_msg_pub.ADD;
780 END IF;
781
782 -- check number required IF payment type is Check
783
784 IF (p_header_rec.payment_type_code(p_index) = 'CHECK' AND
785 p_header_rec.check_number(p_index) IS NULL )
786 THEN
787 x_return_status := FND_API.G_RET_STS_ERROR;
788 FND_MESSAGE.SET_NAME('ONT','OE_VAL_CHECK_NUM_REQD');
789 oe_bulk_msg_pub.ADD;
790 END IF;
791
792 -- credit card holder name, number AND expiration date
793 -- required for payment type of Credit Card
794
795 /*
796 ** Following Validation Moved to Authorize Credit Card
797 ** Payment Routine. Not required anymore at BOOKING.
798 IF p_header_rec.payment_type_code = 'CREDIT_CARD' THEN
799 IF p_header_rec.credit_card_holder_name IS NULL
800 OR p_header_rec.credit_card_number IS NULL
801 OR p_header_rec.credit_card_expiration_date IS NULL
802 THEN
803 x_return_status := FND_API.G_RET_STS_ERROR;
804 FND_MESSAGE.SET_NAME('ONT','OE_VAL_CREDIT_CARD_REQD');
805 oe_bulk_msg_pub.ADD;
806 END IF;
807 END IF;
808 */
809
810 END IF; -- END of checks related to payment type
811
812 oe_debug_pub.add('Exiting OE_VALIDATE_HEADER.CHECK_BOOK_REQD',1);
813 EXCEPTION
814 WHEN OTHERS THEN
815 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
816 IF oe_bulk_msg_pub.check_msg_level (oe_bulk_msg_pub.G_MSG_LVL_UNEXP_ERROR)
817 THEN
818 oe_bulk_msg_pub.add_exc_msg
819 ( G_PKG_NAME ,
820 'Check_Book_Reqd_Attributes'
821 );
822 END IF;
823 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
824 END Check_Book_Reqd_Attributes;
825
826
827 PROCEDURE Default_Record
828 (p_header_rec IN OUT NOCOPY OE_Bulk_Order_Pvt.HEADER_REC_TYPE
829 ,p_index IN NUMBER
830 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
831 )
832 IS
833 l_c_index NUMBER;
834 BEGIN
835
836 x_return_status := FND_API.G_RET_STS_SUCCESS;
837
838 -- Validation of defaulted attributes - when to do this, within the
839 -- cache for each source? YES!
840
841 -- Default Order Type from 1.Invoice To 2.Ship To
842
843 IF p_header_rec.order_type_id(p_index) IS NULL THEN
844
845 BEGIN
846
847 l_c_index := OE_Bulk_Cache.Load_Invoice_To
848 (p_key => p_header_rec.invoice_to_org_id(p_index)
849 ,p_default_attributes => 'Y');
850 p_header_rec.order_type_id(p_index)
851 := OE_Bulk_Cache.G_INVOICE_TO_TBL(l_c_index).order_type_id;
852 -- Invalid invoice to - error message populated during validation
853 EXCEPTION
854 WHEN NO_DATA_FOUND THEN
855 oe_debug_pub.add('Invoice To cache returns no data found');
856 x_return_status := FND_API.G_RET_STS_ERROR;
857 END;
858
859 END IF;
860
861 IF p_header_rec.order_type_id(p_index) IS NULL THEN
862
863 BEGIN
864
865 l_c_index := OE_Bulk_Cache.Load_Ship_To
866 (p_key => p_header_rec.ship_to_org_id(p_index)
867 ,p_default_attributes => 'Y');
868 p_header_rec.order_type_id(p_index)
869 := OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).order_type_id;
870
871 -- Invalid ship to - error message populated during validation
872 EXCEPTION
873 WHEN NO_DATA_FOUND THEN
874 oe_debug_pub.add('Ship To cache returns no data found');
875 x_return_status := FND_API.G_RET_STS_ERROR;
876 END;
877
878 END IF;
879
880 -- ASSUMPTION: The hierarchy for defaulting sources for each of the
881 -- attributes can only be 1.Agreement 2.Ship To 3.Invoice To 4.Order Type
882
883 -- Default attributes that have agreement as the first source
884
885 IF p_header_rec.agreement_id(p_index) IS NOT NULL
886 AND ( p_header_rec.price_list_id(p_index) IS NULL
887 OR p_header_rec.payment_term_id(p_index) IS NULL
888 OR p_header_rec.accounting_rule_id(p_index) IS NULL
889 OR p_header_rec.invoicing_rule_id(p_index) IS NULL )
890 THEN
891
892 BEGIN
893
894 l_c_index := OE_Bulk_Cache.Load_Agreement
895 (p_key => p_header_rec.agreement_id(p_index)
896 ,p_default_attributes => 'Y');
897
898 p_header_rec.price_list_id(p_index) := nvl(p_header_rec.price_list_id(p_index)
899 ,OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).price_list_id);
900 p_header_rec.payment_term_id(p_index) := nvl(p_header_rec.payment_term_id(p_index)
901 ,OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).payment_term_id);
902 p_header_rec.accounting_rule_id(p_index) := nvl(p_header_rec.accounting_rule_id(p_index)
903 ,OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).accounting_rule_id);
904 p_header_rec.invoicing_rule_id(p_index) := nvl(p_header_rec.invoicing_rule_id(p_index)
905 ,OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).invoicing_rule_id);
906
907 -- Invalid agreement - error message populated during validation
908 EXCEPTION
909 WHEN NO_DATA_FOUND THEN
910 oe_debug_pub.add('Agreement cache returns no data found');
911 x_return_status := FND_API.G_RET_STS_ERROR;
912 END;
913
914 END IF;
915
916 -- Default attributes that have ship to as the first source
917 -- or is the next source after agreement.
918
919 oe_debug_pub.add('load ship to cache');
920 IF p_header_rec.ship_to_org_id(p_index) IS NOT NULL
921 AND ( p_header_rec.fob_point_code(p_index) IS NULL
922 OR p_header_rec.freight_terms_code(p_index) IS NULL
923 OR p_header_rec.demand_class_code(p_index) IS NULL
924 OR p_header_rec.shipping_method_code(p_index) IS NULL
925 OR p_header_rec.ship_tolerance_above(p_index) IS NULL
926 OR p_header_rec.ship_tolerance_below(p_index) IS NULL
927 OR p_header_rec.latest_schedule_limit(p_index) IS NULL
928 OR p_header_rec.order_date_type_code(p_index) IS NULL )
929 THEN
930
931 BEGIN
932
933 l_c_index := OE_Bulk_Cache.Load_Ship_To
934 (p_key => p_header_rec.ship_to_org_id(p_index)
935 ,p_default_attributes => 'Y');
936
937 p_header_rec.fob_point_code(p_index) := nvl(p_header_rec.fob_point_code(p_index)
938 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).fob_point_code);
939 p_header_rec.freight_terms_code(p_index) := nvl(p_header_rec.freight_terms_code(p_index)
940 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).freight_terms_code);
941 p_header_rec.demand_class_code(p_index) := nvl(p_header_rec.demand_class_code(p_index)
942 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).demand_class_code);
943 p_header_rec.shipping_method_code(p_index) := nvl(p_header_rec.shipping_method_code(p_index)
944 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).shipping_method_code);
945 p_header_rec.ship_tolerance_above(p_index) := nvl(p_header_rec.ship_tolerance_above(p_index)
946 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).ship_tolerance_above);
947 p_header_rec.ship_tolerance_below(p_index) := nvl(p_header_rec.ship_tolerance_below(p_index)
948 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).ship_tolerance_below);
949 p_header_rec.latest_schedule_limit(p_index) := nvl(p_header_rec.latest_schedule_limit(p_index)
950 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).latest_schedule_limit);
951 p_header_rec.order_date_type_code(p_index) := nvl(p_header_rec.order_date_type_code(p_index)
952 ,OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).order_date_type_code);
953
954 -- Invalid ship to - error message populated during validation
955 EXCEPTION
956 WHEN NO_DATA_FOUND THEN
957 oe_debug_pub.add('Ship To cache returns no data found');
958 x_return_status := FND_API.G_RET_STS_ERROR;
959 END;
960
961 END IF;
962
963 -- Default attributes that have invoice to as the first source
964 -- or is the next source after agreement, ship to.
965
966 oe_debug_pub.add('load invoice to cache');
967 IF p_header_rec.invoice_to_org_id(p_index) IS NOT NULL
968 AND ( p_header_rec.price_list_id(p_index) IS NULL
969 OR p_header_rec.payment_term_id(p_index) IS NULL )
970 THEN
971
972 BEGIN
973
974 l_c_index := OE_Bulk_Cache.Load_Invoice_To
975 (p_key => p_header_rec.invoice_to_org_id(p_index)
976 ,p_default_attributes => 'Y');
977
978 p_header_rec.price_list_id(p_index) := nvl(p_header_rec.price_list_id(p_index)
979 ,OE_Bulk_Cache.G_INVOICE_TO_TBL(l_c_index).price_list_id);
980 p_header_rec.payment_term_id(p_index) := nvl(p_header_rec.payment_term_id(p_index)
981 ,OE_Bulk_Cache.G_INVOICE_TO_TBL(l_c_index).payment_term_id);
982
983 -- Invalid invoice to - error message populated during validation
984 EXCEPTION
985 WHEN NO_DATA_FOUND THEN
986 oe_debug_pub.add('Invoice to cache returns no data found');
987 x_return_status := FND_API.G_RET_STS_ERROR;
988 END;
989
990 END IF;
991
992 -- Default remaining attributes from order type
993
994 IF p_header_rec.order_type_id(p_index) IS NOT NULL
995 AND (p_header_rec.fob_point_code(p_index) IS NULL
996 OR p_header_rec.freight_terms_code(p_index) IS NULL
997 OR p_header_rec.demand_class_code(p_index) IS NULL
998 OR p_header_rec.shipping_method_code(p_index) IS NULL
999 OR p_header_rec.shipment_priority_code(p_index) IS NULL
1000 OR p_header_rec.accounting_rule_id(p_index) IS NULL
1001 OR p_header_rec.invoicing_rule_id(p_index) IS NULL
1002 OR p_header_rec.conversion_type_code(p_index) IS NULL )
1003 THEN
1004
1005 BEGIN
1006
1007 l_c_index := OE_Bulk_Cache.Load_Order_Type
1008 (p_key => p_header_rec.order_type_id(p_index)
1009 ,p_default_attributes => 'Y');
1010
1011 p_header_rec.accounting_rule_id(p_index) := nvl(p_header_rec.accounting_rule_id(p_index)
1012 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).accounting_rule_id);
1013 p_header_rec.invoicing_rule_id(p_index) := nvl(p_header_rec.invoicing_rule_id(p_index)
1014 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).invoicing_rule_id);
1015 p_header_rec.fob_point_code(p_index) := nvl(p_header_rec.fob_point_code(p_index)
1016 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).fob_point_code);
1017 p_header_rec.freight_terms_code(p_index) := nvl(p_header_rec.freight_terms_code(p_index)
1018 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).freight_terms_code);
1019 p_header_rec.demand_class_code(p_index) := nvl(p_header_rec.demand_class_code(p_index)
1020 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).demand_class_code);
1021 p_header_rec.shipping_method_code(p_index) := nvl(p_header_rec.shipping_method_code(p_index)
1022 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).shipping_method_code);
1023 p_header_rec.shipment_priority_code(p_index) := nvl(p_header_rec.shipment_priority_code(p_index)
1024 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).shipment_priority_code);
1025 p_header_rec.conversion_type_code(p_index) := nvl(p_header_rec.conversion_type_code(p_index)
1026 ,OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).conversion_type_code);
1027
1028 -- Invalid order type - error message populated during validation
1029 EXCEPTION
1030 WHEN NO_DATA_FOUND THEN
1031 oe_debug_pub.add('Order Type cache returns no data found');
1032 x_return_status := FND_API.G_RET_STS_ERROR;
1033 END;
1034
1035 END IF;
1036
1037 -- Constant Value Defaults
1038
1039 IF p_header_rec.pricing_date(p_index) IS NULL THEN
1040 p_header_rec.pricing_date(p_index) := sysdate;
1041 END IF;
1042
1043 IF p_header_rec.ordered_date(p_index) IS NULL THEN
1044 p_header_rec.ordered_date(p_index) := sysdate;
1045 END IF;
1046
1047 IF p_header_rec.request_date(p_index) IS NULL THEN
1048 p_header_rec.request_date(p_index) := sysdate;
1049 END IF;
1050
1051 IF p_header_rec.tax_exempt_flag(p_index) IS NULL THEN
1052 p_header_rec.tax_exempt_flag(p_index) := 'S'; -- 'Standard'
1053 END IF;
1054
1055 EXCEPTION
1056 WHEN OTHERS THEN
1057 IF oe_bulk_msg_pub.check_msg_level(oe_bulk_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1058 THEN
1059 oe_bulk_msg_pub.add_exc_msg
1060 ( G_PKG_NAME
1061 , 'Default_Record'
1062 );
1063 END IF;
1064 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1065 END Default_Record;
1066
1067 PROCEDURE Populate_Internal_Fields
1068 (p_header_rec IN OUT NOCOPY OE_Bulk_Order_Pvt.HEADER_REC_TYPE
1069 ,p_index IN NUMBER
1070 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1071 )
1072 IS
1073 l_c_index NUMBER;
1074 l_set_of_books_rec OE_Order_Cache.Set_of_Books_Rec_Type;
1075 l_is_fixed_rate VARCHAR2(1);
1076 BEGIN
1077
1078 -- Header_ID is pre-generated and read from interface tables
1079 -- This is to reduce DB block contention as sequential ids will
1080 -- be assigned to each parallel thread by master import program.
1081 -- (Refer OEBVIMNB.pls)
1082
1083 BEGIN
1084
1085 l_c_index := OE_Bulk_Cache.Load_Order_Type
1086 (p_key => p_header_rec.order_type_id(p_index));
1087
1088 IF OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).order_category_code
1089 = 'RETURN'
1090 THEN
1091 FND_MESSAGE.SET_NAME('ONT','OE_BULK_NOT_SUPP_RETURN');
1092 oe_bulk_msg_pub.Add('Y', 'ERROR');
1093 x_return_status := FND_API.G_RET_STS_ERROR;
1094 ELSE
1095 p_header_rec.order_category_code(p_index) := OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).order_category_code;
1096 END IF;
1097
1098 -- Invalid order type - error message populated during validation
1099 EXCEPTION
1100 WHEN NO_DATA_FOUND THEN
1101 oe_debug_pub.add('Order Type cache returns no data found');
1102 -- Set order category for insert to succeed
1103 p_header_rec.order_category_code(p_index) := 'ORDER';
1104 x_return_status := FND_API.G_RET_STS_ERROR;
1105 END;
1106
1107 IF p_header_rec.shipping_method_code(p_index) IS NOT NULL
1108 AND p_header_rec.ship_from_org_id(p_index) IS NOT NULL
1109 THEN
1110 p_header_rec.freight_carrier_code(p_index) :=
1111 Get_Freight_Carrier
1112 (p_shipping_method_code => p_header_rec.shipping_method_code(p_index)
1113 ,p_ship_from_org_id => p_header_rec.ship_from_org_id(p_index)
1114 );
1115 END IF;
1116
1117 l_set_of_books_rec := OE_Order_Cache.Load_Set_Of_Books;
1118 IF p_header_rec.transactional_curr_code(p_index)
1119 <> l_set_of_books_rec.currency_code
1120 THEN
1121
1122 l_Is_Fixed_Rate :=
1123 GL_CURRENCY_API.IS_FIXED_RATE(
1124 p_header_rec.transactional_curr_code(p_index),
1125 l_set_of_books_rec.currency_code,
1126 nvl(p_header_rec.Ordered_Date(p_index),Sysdate));
1127
1128 IF (L_Is_Fixed_Rate = 'Y') THEN
1129 p_header_rec.Conversion_Type_Code(p_index) := 'EMU FIXED';
1130 END IF;
1131
1132 END IF;
1133
1134 -- QUOTING changes
1135 -- Version number should be initialized to 0 starting 11i10
1136 IF p_header_rec.version_number(p_index) IS NULL THEN
1137 IF OE_Code_Control.Get_Code_Release_Level >= '110510' THEN
1138 p_header_rec.version_number(p_index) := 0;
1139 ELSE
1140 p_header_rec.version_number(p_index) := 1;
1141 END IF;
1142 END IF;
1143
1144 EXCEPTION
1145 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1146 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1147 WHEN OTHERS THEN
1148 oe_debug_pub.add('others errors, Populate_Internal_Fields');
1149 oe_debug_pub.add(substr(sqlerrm,1,200));
1150 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1151 IF oe_bulk_msg_pub.check_msg_level(oe_bulk_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1152 THEN
1153 oe_bulk_msg_pub.add_exc_msg
1154 ( G_PKG_NAME
1155 , 'Populate_Internal_Fields'
1156 );
1157 END IF;
1158 END Populate_Internal_Fields;
1159
1160 -----------------------------------------------------------------------
1161 -- PUBLIC PROCEDURES/FUNCTIONS
1162 -----------------------------------------------------------------------
1163
1164 FUNCTION Get_Freight_Carrier
1165 (p_shipping_method_code IN VARCHAR2
1166 ,p_ship_from_org_id IN VARCHAR2
1167 )
1168 RETURN VARCHAR2
1169 IS
1170 l_freight_code VARCHAR2(80);
1171 BEGIN
1172
1173 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110509' THEN
1174
1175 SELECT freight_code
1176 INTO l_freight_code
1177 FROM wsh_carriers wsh_ca,wsh_carrier_services wsh,
1178 wsh_org_carrier_services wsh_org
1179 WHERE wsh_org.organization_id = p_ship_from_org_id
1180 AND wsh.carrier_service_id = wsh_org.carrier_service_id
1181 AND wsh_ca.carrier_id = wsh.carrier_id
1182 AND wsh.ship_method_code = p_shipping_method_code
1183 AND wsh_org.enabled_flag='Y';
1184 ELSE
1185
1186 SELECT freight_code
1187 INTO l_freight_code
1188 FROM wsh_carrier_ship_methods
1189 WHERE ship_method_code = p_shipping_method_code
1190 AND ORGANIZATION_ID = p_ship_from_org_id;
1191
1192 END IF;
1193
1194 RETURN l_freight_code;
1195
1196 EXCEPTION
1197 WHEN NO_DATA_FOUND THEN
1198 RETURN NULL;
1199 WHEN OTHERS THEN
1200 IF oe_bulk_msg_pub.check_msg_level (oe_bulk_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1201 THEN
1202 oe_bulk_msg_pub.add_exc_msg
1203 ( G_PKG_NAME
1204 ,'Get_Freight_Carrier'
1205 );
1206 END IF;
1207 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1208 END Get_Freight_Carrier;
1209
1210 --
1211 -- This FUNCTION is used for all agreement related validations.
1212 --
1213
1214 FUNCTION Validate_Agreement
1215 (p_agreement_id IN NUMBER
1216 ,p_pricing_date IN DATE
1217 ,p_price_list_id IN NUMBER
1218 ,p_sold_to_org_id IN NUMBER
1219 )
1220 RETURN BOOLEAN
1221 IS
1222 l_c_index NUMBER;
1223 BEGIN
1224
1225 -- Load agreement in the cache
1226 l_c_index := OE_Bulk_Cache.Load_Agreement(p_agreement_id);
1227
1228 -- Verify that agreement is effective for the valid dates
1229 IF NOT trunc(nvl(p_pricing_date,sysdate))
1230 BETWEEN trunc(nvl(OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).start_date_active
1231 ,add_months(sysdate,-10000)))
1232 AND trunc(nvl(OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).end_date_active
1233 ,add_months(sysdate,+10000)))
1234 THEN
1235
1236 fnd_message.set_name('ONT', 'ONT_INVALID_AGREEMENT');
1237 fnd_message.set_Token('AGREEMENT_NAME',
1238 OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).name);
1239 fnd_message.set_Token('REVISION',
1240 OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).revision);
1241 oe_bulk_msg_pub.Add('Y', 'ERROR');
1242
1243 RETURN FALSE;
1244
1245 END IF;
1246
1247 -- Verify that price list on header matches price list on agreement
1248 IF p_price_list_id IS NOT NULL
1249 AND Get_Price_List_Type(p_price_list_id) <> 'PRL'
1250 THEN
1251
1252 IF (OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).price_list_id
1253 <> p_price_list_id) THEN
1254
1255 fnd_message.set_name('ONT', 'OE_INVALID_AGREEMENT_PLIST');
1256 fnd_message.set_Token('AGREEMENT_NAME',
1257 OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).name);
1258 fnd_message.set_Token('PRICE_LIST1',
1259 OE_Bulk_Cache.G_PRICE_LIST_TBL(p_price_list_id).name);
1260 fnd_message.set_Token('PRICE_LIST2',
1261 OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).price_list_id);
1262 oe_bulk_msg_pub.Add('Y', 'ERROR');
1263
1264 RETURN FALSE;
1265
1266 END IF;
1267
1268 END IF;
1269
1270 -- Verify that customer on agreement matches the customer on order or
1271 -- is a related customer if customer relationships is ON.
1272 IF NOT OE_GLOBALS.EQUAL
1273 (OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).sold_to_org_id
1274 ,p_sold_to_org_id)
1275 THEN
1276
1277 IF OE_Bulk_Order_Pvt.G_CUST_RELATIONS = 'N'
1278 OR (OE_Bulk_Order_Pvt.G_CUST_RELATIONS = 'Y'
1279 AND NOT Is_Related_Customer(p_sold_to_org_id
1280 ,OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).sold_to_org_id))
1281 THEN
1282
1283 fnd_message.set_name('ONT', 'OE_INVALID_AGREEMENT');
1284 fnd_message.set_Token('AGREEMENT_ID',p_agreement_id);
1285 fnd_message.set_Token('AGREEMENT_NAME',
1286 OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).name);
1287 fnd_message.set_Token('CUSTOMER_ID',
1288 OE_Bulk_Cache.G_AGREEMENT_TBL(l_c_index).sold_to_org_id);
1289 oe_bulk_msg_pub.Add('Y', 'ERROR');
1290
1291 RETURN FALSE;
1292
1293 END IF;
1294
1295 END IF;
1296
1297 RETURN TRUE;
1298
1299 EXCEPTION
1300 WHEN NO_DATA_FOUND THEN
1301 RETURN FALSE;
1302 END Validate_Agreement;
1303
1304
1305 -- This FUNCTION consists of all price list related validations.
1306
1307 FUNCTION Validate_Price_List
1308 (p_price_list_id IN NUMBER
1309 ,p_curr_code IN VARCHAR2
1310 ,p_pricing_date IN DATE
1311 ,p_calculate_price IN VARCHAR2
1312 )
1313 RETURN BOOLEAN
1314 IS
1315
1316 l_validate_result VARCHAR2(1);
1317 l_c_index NUMBER;
1318
1319 BEGIN
1320
1321 -- For order header, this check is NOT needed if any one line exists
1322 -- with calculate_price_flag of 'N' or 'P' - where to do this?
1323
1324 -- For line, price list validations not needed if calculate price is
1325 -- frozen or partial
1326
1327 IF p_calculate_price IN ('P','N') THEN
1328 RETURN TRUE;
1329 END IF;
1330
1331 -- Cache price list
1332
1333 l_c_index := OE_Bulk_Cache.Load_Price_List(p_price_list_id);
1334
1335 -- Verify that price list is effective for the valid dates
1336
1337 IF NOT trunc(nvl(p_pricing_date,sysdate))
1338 BETWEEN trunc(nvl(OE_Bulk_Cache.G_PRICE_LIST_TBL(l_c_index).start_date_active
1339 ,add_months(sysdate,-10000)))
1340 AND trunc(nvl(OE_Bulk_Cache.G_PRICE_LIST_TBL(l_c_index).end_date_active
1341 ,add_months(sysdate,+10000)))
1342 THEN
1343
1344 fnd_message.set_name('ONT', 'OE_INVALID_NONAGR_PLIST');
1345 fnd_message.set_Token('PRICE_LIST1', p_price_list_id);
1346 fnd_message.set_Token('PRICING_DATE', p_pricing_date);
1347 oe_bulk_msg_pub.Add('Y', 'ERROR');
1348
1349 RETURN FALSE;
1350
1351 END IF;
1352
1353 -- Validate currency against the price list
1354
1355 QP_UTIL_PUB.Validate_Price_list_Curr_code(p_price_list_id
1356 ,p_curr_code
1357 ,p_pricing_date
1358 ,l_validate_result);
1359
1360 IF l_validate_result = 'N' THEN
1361
1362 FND_MESSAGE.SET_NAME('ONT','OE_CURRENCY_MISMATCH');
1363 FND_MESSAGE.SET_TOKEN('LINE_CURR_CODE',
1364 OE_Bulk_Cache.G_PRICE_LIST_TBL(l_c_index).currency_code);
1365 FND_MESSAGE.SET_TOKEN('PRICE_LIST_NAME',
1366 OE_Bulk_Cache.G_PRICE_LIST_TBL(l_c_index).name);
1367 FND_MESSAGE.SET_TOKEN('HEADER_CURR_CODE',p_curr_code);
1368 oe_bulk_msg_pub.Add('Y', 'ERROR');
1369
1370 RETURN FALSE;
1371
1372 END IF;
1373
1374 RETURN TRUE;
1375
1376 EXCEPTION
1377 WHEN NO_DATA_FOUND THEN
1378 oe_debug_pub.add('no data found in validate price list');
1379 RETURN FALSE;
1380 END Validate_Price_List;
1381
1382
1383 FUNCTION Validate_Ship_to(p_sold_to IN NUMBER,
1384 p_Ship_to IN NUMBER)
1385 RETURN BOOLEAN
1386 IS
1387 l_dummy VARCHAR2(10);
1388 l_c_index NUMBER;
1389 BEGIN
1390
1391 --
1392 -- Validations here account for all customer relationships
1393 --
1394 -- If ship_to_org_id is not valid for any customer,
1395 -- then Cache FUNCTION Load_<Entity> will raise no data found
1396 -- so for all relationship values including G_CUST_RELATIONS = 'A'
1397 -- , it will return FALSE.
1398 --
1399 -- If customer relationships = 'N' but customer does not match
1400 -- ship to customer, it will return FALSE.
1401 --
1402 -- If customer relationships = 'Y', it will also check if ship
1403 -- to customer is a related customer and if not, return FALSE.
1404 --
1405
1406 l_c_index := OE_Bulk_Cache.Load_Ship_To
1407 (p_key => p_ship_to);
1408
1409 IF OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).customer_id
1410 = p_sold_to
1411 THEN
1412 RETURN TRUE;
1413 END IF;
1414
1415 IF OE_Bulk_Order_Pvt.G_CUST_RELATIONS = 'N' THEN
1416
1417 RETURN FALSE;
1418
1419 ELSIF OE_Bulk_Order_Pvt.G_CUST_RELATIONS = 'Y' THEN
1420
1421 SELECT 'VALID'
1422 INTO l_dummy
1423 FROM HZ_CUST_ACCT_RELATE
1424 WHERE RELATED_CUST_ACCOUNT_ID = p_sold_to
1425 AND CUST_ACCOUNT_ID = OE_Bulk_Cache.G_SHIP_TO_TBL(l_c_index).customer_id
1426 AND ship_to_flag = 'Y' AND STATUS='A';
1427
1428 END IF;
1429
1430 RETURN TRUE;
1431
1432 EXCEPTION
1433 WHEN NO_DATA_FOUND THEN
1434 RETURN FALSE;
1435 END Validate_Ship_to;
1436
1437 --abghosh
1438
1439 FUNCTION Validate_Sold_to_site(p_sold_to IN NUMBER,
1440 p_Sold_to_site_use_id IN NUMBER)
1441 RETURN BOOLEAN
1442 IS
1443 l_dummy VARCHAR2(10);
1444 l_c_index NUMBER;
1445 BEGIN
1446
1447 --
1448 --
1449 -- If sold_to_site_use_id is not valid for any customer,
1450 -- then Cache FUNCTION Load_<Entity> will raise no data found
1451 -- , it will return FALSE.
1452 --
1453 --
1454 --
1455
1456 l_c_index := OE_Bulk_Cache.Load_Sold_to_site
1457 (p_key => p_sold_to_site_use_id);
1458
1459 IF OE_Bulk_Cache.G_SOLD_TO_SITE_TBL(l_c_index).customer_id
1460 = p_sold_to
1461 THEN
1462 RETURN TRUE;
1463 ELSE
1464 RETURN FALSE;
1465 END IF;
1466
1467
1468 EXCEPTION
1469 WHEN NO_DATA_FOUND THEN
1470 RETURN FALSE;
1471 END Validate_Sold_to_site;
1472
1473
1474 FUNCTION Validate_Bill_to(p_sold_to IN NUMBER,
1475 p_bill_to IN NUMBER)
1476 RETURN BOOLEAN
1477 IS
1478 l_dummy VARCHAR2(10);
1479 l_c_index NUMBER;
1480 BEGIN
1481
1482 --
1483 -- Validations here account for all customer relationships
1484 --
1485 -- If invoice_to_org_id is not valid for any customer,
1486 -- then Cache FUNCTION Load_<Entity> will raise no data found
1487 -- so for all relationship values including G_CUST_RELATIONS = 'A'
1488 -- , it will return FALSE.
1489 --
1490 -- If customer relationships = 'N' but customer does not match
1491 -- invoice to customer, it will return FALSE.
1492 --
1493 -- If customer relationships = 'Y', it will also check if invoice
1494 -- to customer is a related customer and if not, return FALSE.
1495 --
1496
1497 l_c_index := OE_Bulk_Cache.Load_Invoice_To
1498 (p_key => p_bill_to);
1499
1500 IF OE_Bulk_Cache.G_INVOICE_TO_TBL(l_c_index).customer_id
1501 = p_sold_to
1502 THEN
1503 RETURN TRUE;
1504 END IF;
1505
1506 IF OE_Bulk_Order_Pvt.G_CUST_RELATIONS = 'N' THEN
1507
1508 RETURN FALSE;
1509
1510 ELSIF OE_Bulk_Order_Pvt.G_CUST_RELATIONS = 'Y' THEN
1511
1512 SELECT 'VALID'
1513 INTO l_dummy
1514 FROM HZ_CUST_ACCT_RELATE
1515 WHERE RELATED_CUST_ACCOUNT_ID = p_sold_to
1516 AND CUST_ACCOUNT_ID = OE_Bulk_Cache.G_INVOICE_TO_TBL(l_c_index).customer_id
1517 AND bill_to_flag = 'Y' AND STATUS='A';
1518
1519 END IF;
1520
1521 RETURN TRUE;
1522
1523 EXCEPTION
1524 WHEN NO_DATA_FOUND THEN
1525 RETURN FALSE;
1526 END Validate_Bill_to;
1527
1528
1529 FUNCTION Validate_Deliver_to(p_sold_to IN NUMBER,
1530 p_deliver_to IN NUMBER)
1531 RETURN BOOLEAN
1532 IS
1533 l_dummy VARCHAR2(10);
1534 --bug 4729536
1535 Cursor cur_customer_relations is
1536 SELECT /*MOAC_SQL_NO_CHANGE */ 'VALID'
1537 FROM oe_deliver_to_orgs_v
1538 WHERE site_use_id = p_deliver_to
1539 AND status = 'A'
1540 AND customer_id = p_sold_to
1541 AND ROWNUM = 1
1542
1543 UNION ALL
1544
1545 SELECT /*MOAC_SQL_NO_CHANGE*/ 'VALID'
1546 FROM oe_deliver_to_orgs_v odto
1547 WHERE site_use_id = p_deliver_to
1548 AND status = 'A'
1549 AND exists
1550 (
1551 SELECT 1
1552 FROM HZ_CUST_ACCT_RELATE hcar
1553 WHERE hcar.CUST_ACCOUNT_ID = odto.customer_id
1554 AND hcar.RELATED_CUST_ACCOUNT_ID = p_sold_to
1555 AND hcar.ship_to_flag = 'Y'
1556 AND hcar.STATUS ='A'
1557 )
1558 AND ROWNUM=1;
1559
1560 BEGIN
1561
1562 IF (OE_Bulk_Order_Pvt.G_CUST_RELATIONS = 'N') THEN
1563
1564 SELECT 'VALID'
1565 INTO l_dummy
1566 FROM oe_deliver_to_orgs_v
1567 WHERE customer_id = p_sold_to
1568 AND site_use_id = p_deliver_to
1569 AND status = 'A';
1570
1571 ELSE
1572
1573 /*SELECT /*MOAC_SQL_NO_CHANGE 'VALID'
1574 INTO l_dummy
1575 FROM oe_deliver_to_orgs_v
1576 WHERE site_use_id = p_deliver_to
1577 AND status = 'A'
1578 AND customer_id IN (
1579 Select p_sold_to from dual
1580 union
1581 SELECT CUST_ACCOUNT_ID
1582 FROM HZ_CUST_ACCT_RELATE
1583 WHERE RELATED_CUST_ACCOUNT_ID = p_sold_to
1584 AND ship_to_flag = 'Y' AND STATUS ='A'
1585 );*/
1586 --bug 4729536
1587 Open Cur_Customer_Relations;
1588 Fetch Cur_Customer_Relations into l_dummy;
1589 Close Cur_Customer_Relations;
1590 --bug 4729536
1591
1592 END IF;
1593
1594 return TRUE;
1595
1596 EXCEPTION
1597 WHEN NO_DATA_FOUND THEN
1598 return FALSE;
1599
1600 END Validate_Deliver_to;
1601
1602
1603 -- Validate that contact is valid for given (site)customer and usage.
1604 -- Validate Active status, since contact does NOT go thru attribute
1605 -- validation.
1606
1607 FUNCTION Validate_Site_Contact
1608 (p_site_use_id IN NUMBER
1609 ,p_contact_id IN NUMBER
1610 )
1611 RETURN BOOLEAN
1612 IS
1613 l_dummy VARCHAR2(10);
1614 BEGIN
1615
1616 SELECT /* MOAC_SQL_CHANGE */ 'VALID'
1617 INTO l_dummy
1618 FROM HZ_CUST_ACCOUNT_ROLES ACCT_ROLE,
1619 HZ_CUST_SITE_USES_ALL SITE,
1620 HZ_CUST_ACCT_SITES ADDR
1621 WHERE ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_contact_id
1622 AND ACCT_ROLE.CUST_ACCOUNT_ID = ADDR.CUST_ACCOUNT_ID
1623 AND ACCT_ROLE.ROLE_TYPE = 'CONTACT'
1624 AND ADDR.CUST_ACCT_SITE_ID = SITE.CUST_ACCT_SITE_ID
1625 AND SITE.SITE_USE_ID = p_site_use_id
1626 AND SITE.STATUS = 'A'
1627 AND ACCT_ROLE.STATUS = 'A'
1628 AND ADDR.STATUS ='A' ;-- added for bug 2752321
1629
1630 RETURN TRUE;
1631
1632 EXCEPTION
1633 WHEN NO_DATA_FOUND THEN
1634 RETURN FALSE;
1635 END Validate_Site_Contact;
1636
1637
1638 ---------------------------------------------------------------------
1639 -- PROCEDURE Entity
1640 --
1641 -- Main processing procedure used to process headers in a batch.
1642 -- IN parameters -
1643 -- p_header_rec : order headers in this batch
1644 -- p_defaulting_mode : 'Y' if fixed defaulting is needed, 'N' if
1645 -- defaulting is to be completely bypassed
1646 -- OUT NOCOPY /* file.sql.39 change */ parameters -
1647 -- x_header_scredit_rec : sales credits for headers processed
1648 --
1649 -- Processing steps include:
1650 -- 1. Restricted defaulting on p_header_rec if defaulting_mode is 'Y'
1651 -- 2. Populate all internal fields on p_header_rec
1652 -- 3. All entity validations
1653 -- 4. Other misc processing like holds evaluation, sales credits.
1654 ---------------------------------------------------------------------
1655
1656 PROCEDURE Entity
1657 ( p_header_rec IN OUT NOCOPY OE_Bulk_Order_Pvt.HEADER_REC_TYPE
1658 , x_header_scredit_rec IN OUT NOCOPY OE_Bulk_Order_Pvt.SCREDIT_REC_TYPE
1659 , p_defaulting_mode IN VARCHAR2
1660 , p_process_configurations IN VARCHAR2 DEFAULT 'N'
1661 , p_validate_configurations IN VARCHAR2 DEFAULT 'Y'
1662 , p_schedule_configurations IN VARCHAR2 DEFAULT 'N'
1663 , p_validate_desc_flex IN VARCHAR2
1664 )
1665 IS
1666
1667 ctr NUMBER;
1668 error_count NUMBER := 0;
1669 l_dummy VARCHAR2(10);
1670 l_return_status VARCHAR2(30);
1671 l_c_index NUMBER;
1672 l_order_type_id NUMBER;
1673 l_on_generic_hold BOOLEAN;
1674 l_on_booking_hold BOOLEAN;
1675 l_on_scheduling_hold BOOLEAN;
1676 l_scredit_index NUMBER := 1;
1677 l_gapless_sequence VARCHAR2(1) := 'N';
1678 l_hold_ii_flag VARCHAR2(1); -- Added to support out parameter
1679 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1680 l_header_rec_for_hold OE_Order_PUB.Header_Rec_Type; --ER#7479609
1681
1682 BEGIN
1683 ctr := p_header_rec.header_id.COUNT;
1684
1685 FOR i IN 1..ctr LOOP
1686
1687 -- Set Context for messags
1688
1689 oe_bulk_msg_pub.set_msg_context
1690 ( p_entity_code => 'HEADER'
1691 ,p_entity_id => p_header_rec.header_id(i)
1692 ,p_header_id => p_header_rec.header_id(i)
1693 ,p_line_id => null
1694 ,p_orig_sys_document_ref => p_header_rec.orig_sys_document_ref(i)
1695 ,p_orig_sys_document_line_ref => null
1696 ,p_order_source_id => p_header_rec.order_source_id(i)
1697 ,p_source_document_type_id => null
1698 ,p_source_document_id => null
1699 ,p_source_document_line_id => null);
1700
1701 --PIB
1702 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
1703 p_header_rec.header_index.extend(1);
1704 p_header_rec.header_index(i) := i;
1705 p_header_rec.event_code.extend(1);
1706 IF p_header_rec.booked_flag(i) = 'Y' THEN
1707 p_header_rec.event_code(i) := 'BATCH,BOOK';
1708 ELSE
1709 p_header_rec.event_code(i) := 'BATCH';
1710 END IF;
1711 If l_debug_level > 0 Then
1712 oe_debug_pub.add('event code : '||p_header_rec.event_code(i));
1713 End If;
1714 END IF;
1715 --PIB
1716
1717 ---------------------------------------------------------
1718 -- CALL THE FIXED DEFAULTING PROCEDURE IF NEEDED
1719 ---------------------------------------------------------
1720
1721 IF p_defaulting_mode = 'Y' THEN
1722
1723 Default_Record
1724 ( p_header_rec => p_header_rec
1725 ,p_index => i
1726 ,x_return_status => l_return_status
1727 );
1728
1729 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1730 p_header_rec.lock_control(i) := -99;
1731 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1732 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1733 END IF;
1734
1735 END IF;
1736
1737 ---------------------------------------------------------
1738 -- POPULATE INTERNAL FIELDS
1739 -- Hardcoded Defaulting From OEXDHDRB.pls
1740 ---------------------------------------------------------
1741
1742 Populate_Internal_Fields
1743 ( p_header_rec => p_header_rec
1744 ,p_index => i
1745 ,x_return_status => l_return_status
1746 );
1747
1748 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1749 p_header_rec.lock_control(i) := -99;
1750 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1751 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1752 END IF;
1753
1754
1755 ---------------------------------------------------------
1756 -- START ENTITY VALIDATIONS
1757 ---------------------------------------------------------
1758
1759 -- Validate Required Attributes
1760
1761 -- Order Type is required
1762
1763 IF (p_header_rec.order_type_id(i) IS NOT NULL) THEN
1764
1765 l_order_type_id := p_header_rec.order_type_id(i);
1766
1767 -- Get Order Number - will return FALSE IF
1768 -- 1. Doc Sequence type is 'Manual' and order number not specified
1769 -- 2. If gapless sequence
1770 -- Error messages are populated in Get_Order_Number
1771
1772 IF NOT Get_order_number(p_header_rec.order_type_id(i),
1773 p_header_rec.order_number(i),
1774 l_gapless_sequence ) THEN
1775
1776 IF l_gapless_sequence = 'Y' THEN
1777 p_header_rec.lock_control(i) := -98;
1778 ELSE
1779 p_header_rec.lock_control(i) := -99;
1780 END IF;
1781
1782 -- Order Number is a required column hence put a dummy value
1783 -- for the insert to succeed.
1784 p_header_rec.order_number(i) := -1 * p_header_rec.header_id(i);
1785
1786 END IF;
1787
1788 -- Do other order type related validations
1789
1790 -- Cache order type, if order type is not valid caching will fail
1791 -- with no data found error.
1792 l_c_index := OE_Bulk_Cache.Load_Order_Type
1793 (p_key => l_order_type_id);
1794
1795 -- Check if Order Type is valid for ordered date
1796
1797 IF p_header_rec.ordered_date(i) IS NOT NULL
1798 AND NOT (p_header_rec.ordered_date(i) BETWEEN
1799 nvl(OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_order_type_id).start_date_active,sysdate)
1800 AND nvl(OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_order_type_id).end_date_active,sysdate))
1801 THEN
1802 p_header_rec.lock_control(i) := -99;
1803 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
1804 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1805 OE_Order_Util.Get_Attribute_Name('ORDER_TYPE_ID'));
1806 oe_bulk_msg_pub.Add('Y', 'ERROR');
1807 END IF;
1808
1809 -- Validate that Order Type has valid WF assignment
1810
1811 IF NOT OE_BULK_WF_UTIL.Validate_OT_WF_Assignment
1812 (p_header_rec.order_type_id(i)
1813 ,p_header_rec.wf_process_name(i)) THEN
1814 p_header_rec.lock_control(i) := -99;
1815 FND_MESSAGE.SET_NAME('ONT','OE_MISS_FLOW');
1816 oe_bulk_msg_pub.Add('Y', 'ERROR');
1817 END IF;
1818
1819 -- Populate order type name, this is denormalized onto header
1820 -- record as it will be used in insert into mtl_sales_orders
1821
1822 p_header_rec.order_type_name(i) :=
1823 OE_Bulk_Cache.G_ORDER_TYPE_TBL(l_c_index).NAME;
1824
1825 ELSE
1826
1827 p_header_rec.lock_control(i) := -99;
1828 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
1829 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1830 OE_Order_UTIL.Get_Attribute_Name('ORDER_TYPE_ID'));
1831 oe_bulk_msg_pub.Add('Y', 'ERROR');
1832
1833 -- To avoid Insert failure, populate not null column.
1834 -- This record will be deleted later.
1835
1836 p_header_rec.order_type_id(i) := -99;
1837
1838 END IF; -- Order Type is not null
1839
1840
1841 -- Check that Transactional currency exists
1842 -- If it does validate Price List currency against it.
1843
1844 IF (p_header_rec.transactional_curr_code(i) IS NULL) THEN
1845
1846 p_header_rec.lock_control(i) := -99;
1847
1848 -- To avoid Insert failure, populate not null column.
1849 -- This record will be deleted later.
1850 p_header_rec.transactional_curr_code(i) := '-99';
1851
1852 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
1853 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1854 OE_Order_UTIL.Get_Attribute_Name('TRANSACTIONAL_CURR_CODE'));
1855 oe_bulk_msg_pub.Add('Y', 'ERROR');
1856
1857 END IF;
1858
1859
1860 -- Price List Validations
1861
1862 IF (p_header_rec.price_list_id(i) IS NOT NULL) THEN
1863
1864 IF NOT Validate_Price_List(p_header_rec.price_list_id(i)
1865 ,p_header_rec.transactional_curr_code(i)
1866 ,p_header_rec.pricing_date(i)
1867 ,'Y'
1868 )
1869 THEN
1870
1871 p_header_rec.lock_control(i) := -99 ;
1872
1873 END IF;
1874
1875 END IF;
1876
1877
1878 -- Conversion rate, date should be null when conversion type is null.
1879
1880 IF (p_header_rec.conversion_type_code(i) IS NULL) THEN
1881 IF p_header_rec.conversion_rate(i) IS NOT NULL
1882 OR p_header_rec.conversion_rate_date(i) IS NOT NULL
1883 THEN
1884 p_header_rec.lock_control(i) := -99;
1885 FND_MESSAGE.SET_NAME('ONT','OE_VAL_CONVERSION_TYPE');
1886 oe_bulk_msg_pub.Add('Y', 'ERROR');
1887 END IF;
1888 END IF;
1889
1890 -- Conversion rate must be Null if coversion type is not User
1891 -- Removed the validation for conversion date Bug 3220059
1892 IF p_header_rec.conversion_type_code(i) <> 'User' AND
1893 p_header_rec.conversion_rate(i) IS NOT NULL
1894 THEN
1895 l_return_status := FND_API.G_RET_STS_ERROR;
1896 FND_MESSAGE.SET_NAME('ONT','OE_VALIDATION_CONV_TYPE');
1897 OE_MSG_PUB.ADD;
1898
1899 END IF; -- END of checks based on conversion type
1900
1901
1902 -- Agreement related validations
1903
1904 IF (p_header_rec.agreement_id(i) IS NOT NULL) THEN
1905
1906 -- Error messages are populated in Validate_Agreement
1907
1908 IF NOT Validate_Agreement(p_header_rec.agreement_id(i)
1909 ,p_header_rec.pricing_date(i)
1910 ,p_header_rec.price_list_id(i)
1911 ,p_header_rec.sold_to_org_id(i)
1912 )
1913 THEN
1914
1915 p_header_rec.lock_control(i) := -99;
1916
1917 END IF;
1918
1919 END IF;
1920
1921
1922 -- BEGIN: Site, Contact Validations
1923
1924 -- Validate Sold-to Contact
1925 -- Validate Active status, since contact does go thru attribute
1926 -- validation.
1927 IF (p_header_rec.sold_to_contact_id(i) IS NOT NULL) THEN
1928 BEGIN
1929
1930 SELECT 'VALID'
1931 INTO l_dummy
1932 FROM HZ_CUST_ACCOUNT_ROLES ACCT_ROLE
1933 WHERE ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_header_rec.sold_to_contact_id(i)
1934 AND ACCT_ROLE.CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id(i)
1935 AND ROWNUM = 1
1936 AND ACCT_ROLE.ROLE_TYPE = 'CONTACT'
1937 AND STATUS = 'A';
1938
1939 EXCEPTION
1940 WHEN NO_DATA_FOUND THEN
1941 p_header_rec.lock_control(i) := -99;
1942 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
1943 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1944 OE_Order_Util.Get_Attribute_Name('SOLD_TO_CONTACT_ID'));
1945 oe_bulk_msg_pub.Add('Y', 'ERROR');
1946 END;
1947 END IF; -- End sold to contact validation
1948
1949 -- Validate Bill-to for customer
1950 IF (p_header_rec.invoice_to_org_id(i) IS NOT NULL) THEN
1951
1952 IF NOT Validate_Bill_To(p_header_rec.sold_to_org_id(i),
1953 p_header_rec.invoice_to_org_id(i))
1954 THEN
1955
1956 p_header_rec.lock_control(i) := -99;
1957 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
1958 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1959 OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
1960 oe_bulk_msg_pub.Add('Y', 'ERROR');
1961
1962 END IF;
1963
1964 END IF; -- Invoice to is not null
1965
1966 -- Validate Ship To for customer
1967 IF (p_header_rec.ship_to_org_id(i) IS NOT NULL) THEN
1968
1969 IF NOT Validate_Ship_To(p_header_rec.sold_to_org_id(i),
1970 p_header_rec.ship_to_org_id(i))
1971 THEN
1972
1973 p_header_rec.lock_control(i) := -99;
1974 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
1975 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1976 OE_Order_Util.Get_Attribute_Name('SHIP_TO_ORG_ID'));
1977 oe_bulk_msg_pub.Add('Y', 'ERROR');
1978
1979 END IF;
1980
1981 END IF; -- Ship to is not null
1982
1983 --abghosh
1984 -- Validate sold_to_site_use_id for customer
1985 IF (p_header_rec.sold_to_site_use_id(i) IS NOT NULL) THEN
1986
1987 IF NOT Validate_Sold_to_site(p_header_rec.sold_to_org_id(i),
1988 p_header_rec.sold_to_site_use_id(i))
1989 THEN
1990
1991 p_header_rec.lock_control(i) := -99;
1992 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
1993 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1994 OE_Order_Util.Get_Attribute_Name('SOLD_TO_SITE_USE_ID'));
1995 oe_bulk_msg_pub.Add('Y', 'ERROR');
1996
1997 END IF;
1998
1999 END IF;
2000
2001 --{bug 5054618
2002 -- end customer
2003 IF (p_header_rec.end_Customer_id(i) IS NOT NULL) THEN
2004 IF NOT Validate_End_Customer( p_header_rec.end_Customer_id(i)) THEN
2005 p_header_rec.lock_control(i) := -99;
2006 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2007 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('end_customer_id'));
2008 oe_bulk_msg_pub.Add('Y', 'ERROR');
2009 END IF;
2010 End IF;
2011
2012 IF (p_header_rec.end_Customer_contact_id(i) IS NOT NULL) THEN
2013 IF NOT Validate_End_Customer_contact( p_header_rec.end_Customer_contact_id(i)) THEN
2014 p_header_rec.lock_control(i) := -99;
2015 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2016 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('end_customer_contact_id'));
2017 oe_bulk_msg_pub.Add('Y', 'ERROR');
2018 END IF;
2019 END IF;
2020
2021 IF (p_header_rec.end_Customer_site_use_id(i) IS NOT NULL) THEN
2022 IF NOT Validate_End_Customer_site_use(p_header_rec.end_Customer_site_use_id(i),p_header_rec.end_customer_id(i)) THEN
2023 p_header_rec.lock_control(i) := -99;
2024 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2025 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('end_customer_site_use_id'));
2026 oe_bulk_msg_pub.Add('Y', 'ERROR');
2027 END IF;
2028 END IF;
2029
2030 IF (p_header_rec.IB_owner(i) IS NOT NULL) THEN
2031 IF NOT validate_IB_Owner(p_header_rec.IB_Owner(i)) THEN
2032 p_header_rec.lock_control(i) := -99;
2033 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2034 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('IB_Owner'));
2035 oe_bulk_msg_pub.Add('Y', 'ERROR');
2036 END IF;
2037 END IF;
2038
2039 IF (p_header_rec.IB_current_location(i) IS NOT NULL) THEN
2040 IF NOT Validate_IB_current_location( p_header_rec.IB_current_Location(i)) THEN
2041 p_header_rec.lock_control(i) := -99;
2042 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2043 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('IB_location'));
2044 oe_bulk_msg_pub.Add('Y', 'ERROR');
2045 END IF;
2046 END IF;
2047
2048 IF (p_header_rec.IB_Installed_at_location(i) IS NOT NULL) THEN
2049 IF NOT Validate_IB_Inst_loc( p_header_rec.IB_Installed_at_location(i)) THEN
2050 p_header_rec.lock_control(i) := -99;
2051 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2052 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_Order_Util.Get_Attribute_Name('end_customer_site_use_id'));
2053 oe_bulk_msg_pub.Add('Y', 'ERROR');
2054 END IF;
2055 END IF;
2056 --bug 5054618}
2057
2058 -- Validate Deliver-to for customer
2059 IF (p_header_rec.deliver_to_org_id(i) IS NOT NULL) THEN
2060
2061 IF NOT Validate_Deliver_To(p_header_rec.sold_to_org_id(i)
2062 ,p_header_rec.deliver_to_org_id(i))
2063 THEN
2064
2065 p_header_rec.lock_control(i) := -99;
2066 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2067 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2068 OE_Order_Util.Get_Attribute_Name('DELIVER_TO_ORG_ID'));
2069 oe_bulk_msg_pub.Add('Y', 'ERROR');
2070
2071 END IF;
2072
2073 END IF; -- deliver to is not null
2074
2075 -- Validate Bill to contact
2076 IF (p_header_rec.invoice_to_contact_id(i) IS NOT NULL) THEN
2077
2078 IF NOT Validate_Site_Contact(p_header_rec.invoice_to_org_id(i)
2079 ,p_header_rec.invoice_to_contact_id(i)
2080 )
2081 THEN
2082
2083 p_header_rec.lock_control(i) := -99;
2084 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2085 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2086 OE_Order_Util.Get_Attribute_Name('invoice_to_contact_id'));
2087 oe_bulk_msg_pub.Add('Y', 'ERROR');
2088
2089 END IF;
2090
2091 END IF;
2092
2093 -- Validate ship to contact
2094 IF (p_header_rec.ship_to_contact_id(i) IS NOT NULL) THEN
2095
2096 IF NOT Validate_Site_Contact(p_header_rec.ship_to_org_id(i)
2097 ,p_header_rec.ship_to_contact_id(i)
2098 )
2099 THEN
2100
2101 p_header_rec.lock_control(i) := -99;
2102 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2103 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2104 OE_Order_Util.Get_Attribute_Name('SHIP_TO_CONTACT_ID'));
2105 oe_bulk_msg_pub.Add('Y', 'ERROR');
2106
2107 END IF;
2108
2109 END IF;
2110
2111 -- Validate deliver to contact
2112 IF (p_header_rec.deliver_to_contact_id(i) IS NOT NULL) THEN
2113
2114 IF NOT Validate_Site_Contact(p_header_rec.deliver_to_org_id(i)
2115 ,p_header_rec.deliver_to_contact_id(i)
2116 )
2117 THEN
2118
2119 p_header_rec.lock_control(i) := -99;
2120 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2121 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2122 OE_Order_Util.Get_Attribute_Name('DELIVER_TO_CONTACT_ID'));
2123 oe_bulk_msg_pub.Add('Y', 'ERROR');
2124
2125 END IF;
2126
2127 END IF;
2128
2129 -- END: Site, Contact Validations
2130
2131
2132 -- BEGIN: Check for Tax Exemption attributes
2133
2134 IF (p_header_rec.tax_exempt_flag(i) = 'E') THEN
2135
2136 -- Tax exempt reason code is required
2137 IF (p_header_rec.tax_exempt_reason_code(i) IS NULL) THEN
2138
2139 p_header_rec.lock_control(i) := -99;
2140 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
2141 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2142 OE_Order_UTIL.Get_Attribute_Name('TAX_EXEMPT_REASON_CODE'));
2143 oe_bulk_msg_pub.Add('Y', 'ERROR');
2144
2145 ELSIF NOT Valid_Tax_Exempt_Reason
2146 (p_header_rec.tax_exempt_reason_code(i)) THEN
2147
2148 p_header_rec.lock_control(i) := -99;
2149 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2150 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2151 OE_Order_UTIL.Get_Attribute_Name('TAX_EXEMPT_REASON_CODE'));
2152 oe_bulk_msg_pub.Add('Y', 'ERROR');
2153
2154 END IF;
2155
2156 ELSIF (p_header_rec.tax_exempt_flag(i) = 'R') THEN
2157
2158 IF (p_header_rec.tax_exempt_number(i) IS NOT NULL)
2159 OR (p_header_rec.tax_exempt_reason_code(i) IS NOT NULL)
2160 THEN
2161
2162 p_header_rec.lock_control(i) := -99;
2163 FND_MESSAGE.SET_NAME('ONT','OE_TAX_EXEMPTION_NOT_ALLOWED');
2164 oe_bulk_msg_pub.Add('Y', 'ERROR');
2165
2166 END IF;
2167
2168 -- Validate Tax Exempt # and reason for this customer and site
2169 ELSIF (p_header_rec.tax_exempt_flag(i) = 'S')
2170 AND (p_header_rec.tax_exempt_number(i) IS NOT NULL)
2171 AND(p_header_rec.tax_exempt_reason_code(i) IS NOT NULL)
2172 THEN
2173
2174 --commented for bug 7685103
2175 -- No need to validate execption number irrespective of tax_exempt_flags
2176 /* IF NOT Valid_Tax_Exemptions(p_header_rec.tax_exempt_number(i)
2177 ,p_header_rec.tax_exempt_reason_code(i)
2178 ,p_header_rec.ship_to_org_id(i)
2179 ,p_header_rec.invoice_to_org_id(i)
2180 ,p_header_rec.sold_to_org_id(i)
2181 ,p_header_rec.request_date(i)
2182 )
2183 THEN
2184
2185 p_header_rec.lock_control(i) := -99;
2186 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2187 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2188 OE_Order_Util.Get_Attribute_Name('tax_exempt_number'));
2189 oe_bulk_msg_pub.Add('Y', 'ERROR');
2190
2191 END IF;
2192 */
2193 NULL;
2194 END IF;
2195
2196 -- END: Check for Tax Exemption attributes
2197
2198
2199 -- Duplicate PO Number Validation
2200
2201 IF p_header_rec.cust_po_number(i) IS NOT NULL THEN
2202
2203 IF OE_Validate_Header.Is_Duplicate_PO_Number
2204 (p_header_rec.cust_po_number(i)
2205 ,p_header_rec.sold_to_org_id(i)
2206 ,p_header_rec.header_id(i)
2207 )
2208 THEN
2209 FND_MESSAGE.SET_NAME('ONT','OE_VAL_DUP_PO_NUMBER');
2210 oe_bulk_msg_pub.ADD;
2211 END IF;
2212
2213 END IF;
2214
2215
2216 -- BEGIN: Desc Flex Validation
2217
2218 IF p_validate_desc_flex = 'Y' THEN
2219
2220 IF OE_Bulk_Order_Pvt.G_OE_HEADER_ATTRIBUTES = 'Y' THEN
2221
2222 IF NOT OE_VALIDATE.Header_Desc_Flex
2223 (p_context => p_header_rec.context(i)
2224 ,p_attribute1 => p_header_rec.attribute1(i)
2225 ,p_attribute2 => p_header_rec.attribute2(i)
2226 ,p_attribute3 => p_header_rec.attribute3(i)
2227 ,p_attribute4 => p_header_rec.attribute4(i)
2228 ,p_attribute5 => p_header_rec.attribute5(i)
2229 ,p_attribute6 => p_header_rec.attribute6(i)
2230 ,p_attribute7 => p_header_rec.attribute7(i)
2231 ,p_attribute8 => p_header_rec.attribute8(i)
2232 ,p_attribute9 => p_header_rec.attribute9(i)
2233 ,p_attribute10 => p_header_rec.attribute10(i)
2234 ,p_attribute11 => p_header_rec.attribute11(i)
2235 ,p_attribute12 => p_header_rec.attribute12(i)
2236 ,p_attribute13 => p_header_rec.attribute13(i)
2237 ,p_attribute14 => p_header_rec.attribute14(i)
2238 ,p_attribute15 => p_header_rec.attribute15(i)
2239 ,p_attribute16 => p_header_rec.attribute16(i) -- for bug 2184255
2240 ,p_attribute17 => p_header_rec.attribute17(i)
2241 ,p_attribute18 => p_header_rec.attribute18(i)
2242 ,p_attribute19 => p_header_rec.attribute19(i)
2243 ,p_attribute20 => p_header_rec.attribute20(i))
2244 THEN
2245 p_header_rec.lock_control(i) := -99;
2246 -- Log Error Message
2247 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2248 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2249 'Entity:Flexfield:Header_Desc_Flex');
2250 oe_bulk_msg_pub.Add('Y', 'ERROR');
2251 ELSE -- if the flex validation is successfull
2252 -- For bug 2511313
2253 IF p_header_rec.context(i) IS NULL
2254 OR p_header_rec.context(i) = FND_API.G_MISS_CHAR THEN
2255 p_header_rec.context(i) := oe_validate.g_context;
2256 END IF;
2257
2258 IF p_header_rec.attribute1(i) IS NULL
2259 OR p_header_rec.attribute1(i) = FND_API.G_MISS_CHAR THEN
2260 p_header_rec.attribute1(i) := oe_validate.g_attribute1;
2261 END IF;
2262
2263 IF p_header_rec.attribute2(i) IS NULL
2264 OR p_header_rec.attribute2(i) = FND_API.G_MISS_CHAR THEN
2265 p_header_rec.attribute2(i) := oe_validate.g_attribute2;
2266 END IF;
2267
2268 IF p_header_rec.attribute3(i) IS NULL
2269 OR p_header_rec.attribute3(i) = FND_API.G_MISS_CHAR THEN
2270 p_header_rec.attribute3(i) := oe_validate.g_attribute3;
2271 END IF;
2272
2273 IF p_header_rec.attribute4(i) IS NULL
2274 OR p_header_rec.attribute4(i) = FND_API.G_MISS_CHAR THEN
2275 p_header_rec.attribute4(i) := oe_validate.g_attribute4;
2276 END IF;
2277
2278 IF p_header_rec.attribute5(i) IS NULL
2279 OR p_header_rec.attribute5(i) = FND_API.G_MISS_CHAR THEN
2280 p_header_rec.attribute5(i) := oe_validate.g_attribute5;
2281 END IF;
2282
2283 IF p_header_rec.attribute6(i) IS NULL
2284 OR p_header_rec.attribute6(i) = FND_API.G_MISS_CHAR THEN
2285 p_header_rec.attribute6(i) := oe_validate.g_attribute6;
2286 END IF;
2287
2288 IF p_header_rec.attribute7(i) IS NULL
2289 OR p_header_rec.attribute7(i) = FND_API.G_MISS_CHAR THEN
2290 p_header_rec.attribute7(i) := oe_validate.g_attribute7;
2291 END IF;
2292
2293 IF p_header_rec.attribute8(i) IS NULL
2294 OR p_header_rec.attribute8(i) = FND_API.G_MISS_CHAR THEN
2295 p_header_rec.attribute8(i) := oe_validate.g_attribute8;
2296 END IF;
2297
2298 IF p_header_rec.attribute9(i) IS NULL
2299 OR p_header_rec.attribute9(i) = FND_API.G_MISS_CHAR THEN
2300 p_header_rec.attribute9(i) := oe_validate.g_attribute9;
2301 END IF;
2302
2303 IF p_header_rec.attribute10(i) IS NULL
2304 OR p_header_rec.attribute10(i) = FND_API.G_MISS_CHAR THEN
2305 p_header_rec.attribute10(i) := Oe_validate.G_attribute10;
2306 End IF;
2307
2308 IF p_header_rec.attribute11(i) IS NULL
2309 OR p_header_rec.attribute11(i) = FND_API.G_MISS_CHAR THEN
2310 p_header_rec.attribute11(i) := oe_validate.g_attribute11;
2311 END IF;
2312
2313 IF p_header_rec.attribute12(i) IS NULL
2314 OR p_header_rec.attribute12(i) = FND_API.G_MISS_CHAR THEN
2315 p_header_rec.attribute12(i) := oe_validate.g_attribute12;
2316 END IF;
2317
2318 IF p_header_rec.attribute13(i) IS NULL
2319 OR p_header_rec.attribute13(i) = FND_API.G_MISS_CHAR THEN
2320 p_header_rec.attribute13(i) := oe_validate.g_attribute13;
2321 END IF;
2322
2323 IF p_header_rec.attribute14(i) IS NULL
2324 OR p_header_rec.attribute14(i) = FND_API.G_MISS_CHAR THEN
2325 p_header_rec.attribute14(i) := oe_validate.g_attribute14;
2326 END IF;
2327
2328 IF p_header_rec.attribute15(i) IS NULL
2329 OR p_header_rec.attribute15(i) = FND_API.G_MISS_CHAR THEN
2330 p_header_rec.attribute15(i) := oe_validate.g_attribute15;
2331 END IF;
2332
2333 IF p_header_rec.attribute16(i) IS NULL -- For bug 2184255
2334 OR p_header_rec.attribute16(i) = FND_API.G_MISS_CHAR THEN
2335 p_header_rec.attribute16(i) := oe_validate.g_attribute16;
2336 END IF;
2337
2338 IF p_header_rec.attribute17(i) IS NULL
2339 OR p_header_rec.attribute17(i) = FND_API.G_MISS_CHAR THEN
2340 p_header_rec.attribute17(i) := oe_validate.g_attribute17;
2341 END IF;
2342
2343 IF p_header_rec.attribute18(i) IS NULL
2344 OR p_header_rec.attribute18(i) = FND_API.G_MISS_CHAR THEN
2345 p_header_rec.attribute18(i) := oe_validate.g_attribute18;
2346 END IF;
2347
2348 IF p_header_rec.attribute19(i) IS NULL
2349 OR p_header_rec.attribute19(i) = FND_API.G_MISS_CHAR THEN
2350 p_header_rec.attribute19(i) := oe_validate.g_attribute19;
2351 END IF;
2352
2353 IF p_header_rec.attribute20(i) IS NULL
2354 OR p_header_rec.attribute20(i) = FND_API.G_MISS_CHAR THEN
2355 p_header_rec.attribute20(i) := oe_validate.g_attribute20;
2356 END IF;
2357
2358 -- end of assignments, bug 2511313
2359
2360 END IF;
2361 END IF;
2362
2363 IF OE_Bulk_Order_Pvt.G_OE_HEADER_GLOBAL_ATTRIBUTE = 'Y' THEN
2364
2365 IF NOT OE_VALIDATE.G_Header_Desc_Flex
2366 (p_context => p_header_rec.global_attribute_category(i)
2367 ,p_attribute1 => p_header_rec.global_attribute1(i)
2368 ,p_attribute2 => p_header_rec.global_attribute2(i)
2369 ,p_attribute3 => p_header_rec.global_attribute3(i)
2370 ,p_attribute4 => p_header_rec.global_attribute4(i)
2371 ,p_attribute5 => p_header_rec.global_attribute5(i)
2372 ,p_attribute6 => p_header_rec.global_attribute6(i)
2373 ,p_attribute7 => p_header_rec.global_attribute7(i)
2374 ,p_attribute8 => p_header_rec.global_attribute8(i)
2375 ,p_attribute9 => p_header_rec.global_attribute9(i)
2376 ,p_attribute10 => p_header_rec.global_attribute10(i)
2377 ,p_attribute11 => p_header_rec.global_attribute11(i)
2378 ,p_attribute12 => p_header_rec.global_attribute12(i)
2379 ,p_attribute13 => p_header_rec.global_attribute13(i)
2380 ,p_attribute14 => p_header_rec.global_attribute13(i)
2381 ,p_attribute15 => p_header_rec.global_attribute14(i)
2382 ,p_attribute16 => p_header_rec.global_attribute16(i)
2383 ,p_attribute17 => p_header_rec.global_attribute17(i)
2384 ,p_attribute18 => p_header_rec.global_attribute18(i)
2385 ,p_attribute19 => p_header_rec.global_attribute19(i)
2386 ,p_attribute20 => p_header_rec.global_attribute20(i))
2387 THEN
2388 p_header_rec.lock_control(i) := -99;
2389 -- Log Error Message
2390 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2391 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2392 'Entity:Flexfield:G_Header_Desc_Flex');
2393 oe_bulk_msg_pub.Add('Y', 'ERROR');
2394
2395 ELSE -- for bug 2511313
2396 IF p_header_rec.global_attribute_category(i) IS NULL
2397 OR p_header_rec.global_attribute_category(i) = FND_API.G_MISS_CHAR THEN
2398 p_header_rec.global_attribute_category(i) := oe_validate.g_context;
2399 END IF;
2400
2401 IF p_header_rec.global_attribute1(i) IS NULL
2402 OR p_header_rec.global_attribute1(i) = FND_API.G_MISS_CHAR THEN
2403 p_header_rec.global_attribute1(i) := oe_validate.g_attribute1;
2404 END IF;
2405
2406 IF p_header_rec.global_attribute2(i) IS NULL
2407 OR p_header_rec.global_attribute2(i) = FND_API.G_MISS_CHAR THEN
2408 p_header_rec.global_attribute2(i) := oe_validate.g_attribute2;
2409 END IF;
2410
2411 IF p_header_rec.global_attribute3(i) IS NULL
2412 OR p_header_rec.global_attribute3(i) = FND_API.G_MISS_CHAR THEN
2413 p_header_rec.global_attribute3(i) := oe_validate.g_attribute3;
2414 END IF;
2415
2416 IF p_header_rec.global_attribute4(i) IS NULL
2417 OR p_header_rec.global_attribute4(i) = FND_API.G_MISS_CHAR THEN
2418 p_header_rec.global_attribute4(i) := oe_validate.g_attribute4;
2419 END IF;
2420
2421 IF p_header_rec.global_attribute5(i) IS NULL
2422 OR p_header_rec.global_attribute5(i) = FND_API.G_MISS_CHAR THEN
2423 p_header_rec.global_attribute5(i) := oe_validate.g_attribute5;
2424 END IF;
2425
2426 IF p_header_rec.global_attribute6(i) IS NULL
2427 OR p_header_rec.global_attribute6(i) = FND_API.G_MISS_CHAR THEN
2428 p_header_rec.global_attribute6(i) := oe_validate.g_attribute6;
2429 END IF;
2430
2431 IF p_header_rec.global_attribute7(i) IS NULL
2432 OR p_header_rec.global_attribute7(i) = FND_API.G_MISS_CHAR THEN
2433 p_header_rec.global_attribute7(i) := oe_validate.g_attribute7;
2434 END IF;
2435
2436 IF p_header_rec.global_attribute8(i) IS NULL
2437 OR p_header_rec.global_attribute8(i) = FND_API.G_MISS_CHAR THEN
2438 p_header_rec.global_attribute8(i) := oe_validate.g_attribute8;
2439 END IF;
2440
2441 IF p_header_rec.global_attribute9(i) IS NULL
2442 OR p_header_rec.global_attribute9(i) = FND_API.G_MISS_CHAR THEN
2443 p_header_rec.global_attribute9(i) := oe_validate.g_attribute9;
2444 END IF;
2445
2446 IF p_header_rec.global_attribute10(i) IS NULL
2447 OR p_header_rec.global_attribute10(i) = FND_API.G_MISS_CHAR THEN
2448 p_header_rec.global_attribute10(i) := oe_validate.g_attribute10;
2449 END IF;
2450
2451 IF p_header_rec.global_attribute11(i) IS NULL
2452 OR p_header_rec.global_attribute11(i) = FND_API.G_MISS_CHAR THEN
2453 p_header_rec.global_attribute11(i) := oe_validate.g_attribute11;
2454 END IF;
2455
2456 IF p_header_rec.global_attribute12(i) IS NULL
2457 OR p_header_rec.global_attribute12(i) = FND_API.G_MISS_CHAR THEN
2458 p_header_rec.global_attribute12(i) := oe_validate.g_attribute12;
2459 END IF;
2460
2461 IF p_header_rec.global_attribute13(i) IS NULL
2462 OR p_header_rec.global_attribute13(i) = FND_API.G_MISS_CHAR THEN
2463 p_header_rec.global_attribute13(i) := oe_validate.g_attribute13;
2464 END IF;
2465
2466 IF p_header_rec.global_attribute14(i) IS NULL
2467 OR p_header_rec.global_attribute14(i) = FND_API.G_MISS_CHAR THEN
2468 p_header_rec.global_attribute14(i) := oe_validate.g_attribute14;
2469 END IF;
2470
2471 IF p_header_rec.global_attribute15(i) IS NULL
2472 OR p_header_rec.global_attribute15(i) = FND_API.G_MISS_CHAR THEN
2473 p_header_rec.global_attribute15(i) := oe_validate.g_attribute15;
2474 END IF;
2475
2476 IF p_header_rec.global_attribute16(i) IS NULL
2477 OR p_header_rec.global_attribute16(i) = FND_API.G_MISS_CHAR THEN
2478 p_header_rec.global_attribute16(i) := oe_validate.g_attribute16;
2479 END IF;
2480
2481 IF p_header_rec.global_attribute17(i) IS NULL
2482 OR p_header_rec.global_attribute17(i) = FND_API.G_MISS_CHAR THEN
2483 p_header_rec.global_attribute17(i) := oe_validate.g_attribute17;
2484 END IF;
2485
2486 IF p_header_rec.global_attribute18(i) IS NULL
2487 OR p_header_rec.global_attribute18(i) = FND_API.G_MISS_CHAR THEN
2488 p_header_rec.global_attribute18(i) := oe_validate.g_attribute18;
2489 END IF;
2490
2491 IF p_header_rec.global_attribute19(i) IS NULL
2492 OR p_header_rec.global_attribute19(i) = FND_API.G_MISS_CHAR THEN
2493 p_header_rec.global_attribute19(i) := oe_validate.g_attribute19;
2494 END IF;
2495
2496 IF p_header_rec.global_attribute20(i) IS NULL
2497 OR p_header_rec.global_attribute20(i) = FND_API.G_MISS_CHAR THEN
2498 p_header_rec.global_attribute20(i) := oe_validate.g_attribute20;
2499 END IF;
2500 -- end of bug 2511313
2501
2502 END IF;
2503 END IF;
2504
2505 IF OE_Bulk_Order_Pvt.G_OE_HEADER_TP_ATTRIBUTES = 'Y' THEN
2506
2507 IF NOT OE_VALIDATE.TP_Header_Desc_Flex
2508 (p_context => p_header_rec.tp_context(i)
2509 ,p_attribute1 => p_header_rec.tp_attribute1(i)
2510 ,p_attribute2 => p_header_rec.tp_attribute2(i)
2511 ,p_attribute3 => p_header_rec.tp_attribute3(i)
2512 ,p_attribute4 => p_header_rec.tp_attribute4(i)
2513 ,p_attribute5 => p_header_rec.tp_attribute5(i)
2514 ,p_attribute6 => p_header_rec.tp_attribute6(i)
2515 ,p_attribute7 => p_header_rec.tp_attribute7(i)
2516 ,p_attribute8 => p_header_rec.tp_attribute8(i)
2517 ,p_attribute9 => p_header_rec.tp_attribute9(i)
2518 ,p_attribute10 => p_header_rec.tp_attribute10(i)
2519 ,p_attribute11 => p_header_rec.tp_attribute11(i)
2520 ,p_attribute12 => p_header_rec.tp_attribute12(i)
2521 ,p_attribute13 => p_header_rec.tp_attribute13(i)
2522 ,p_attribute14 => p_header_rec.tp_attribute14(i)
2523 ,p_attribute15 => p_header_rec.tp_attribute15(i))
2524 THEN
2525 p_header_rec.lock_control(i) := -99;
2526 -- Log Error Message
2527 FND_MESSAGE.SET_NAME('ONT','OE_INVALID_ATTRIBUTE');
2528 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2529 'Entity:Flexfield:TP_Header_Desc_Flex');
2530 oe_bulk_msg_pub.Add('Y', 'ERROR');
2531 ELSE -- for bug 2511313
2532
2533 IF p_header_rec.tp_context(i) IS NULL
2534 OR p_header_rec.tp_context(i) = FND_API.G_MISS_CHAR THEN
2535 p_header_rec.tp_context(i) := oe_validate.g_context;
2536 END IF;
2537
2538 IF p_header_rec.tp_attribute1(i) IS NULL
2539 OR p_header_rec.tp_attribute1(i) = FND_API.G_MISS_CHAR THEN
2540 p_header_rec.tp_attribute1(i) := oe_validate.g_attribute1;
2541 END IF;
2542
2543 IF p_header_rec.tp_attribute2(i) IS NULL
2544 OR p_header_rec.tp_attribute2(i) = FND_API.G_MISS_CHAR THEN
2545 p_header_rec.tp_attribute2(i) := oe_validate.g_attribute2;
2546 END IF;
2547
2548 IF p_header_rec.tp_attribute3(i) IS NULL
2549 OR p_header_rec.tp_attribute3(i) = FND_API.G_MISS_CHAR THEN
2550 p_header_rec.tp_attribute3(i) := oe_validate.g_attribute3;
2551 END IF;
2552
2553 IF p_header_rec.tp_attribute4(i) IS NULL
2554 OR p_header_rec.tp_attribute4(i) = FND_API.G_MISS_CHAR THEN
2555 p_header_rec.tp_attribute4(i) := oe_validate.g_attribute4;
2556 END IF;
2557
2558 IF p_header_rec.tp_attribute5(i) IS NULL
2559 OR p_header_rec.tp_attribute5(i) = FND_API.G_MISS_CHAR THEN
2560 p_header_rec.tp_attribute5(i) := oe_validate.g_attribute5;
2561 END IF;
2562
2563 IF p_header_rec.tp_attribute6(i) IS NULL
2564 OR p_header_rec.tp_attribute6(i) = FND_API.G_MISS_CHAR THEN
2565 p_header_rec.tp_attribute6(i) := oe_validate.g_attribute6;
2566 END IF;
2567
2568 IF p_header_rec.tp_attribute7(i) IS NULL
2569 OR p_header_rec.tp_attribute7(i) = FND_API.G_MISS_CHAR THEN
2570 p_header_rec.tp_attribute7(i) := oe_validate.g_attribute7;
2571 END IF;
2572
2573 IF p_header_rec.tp_attribute8(i) IS NULL
2574 OR p_header_rec.tp_attribute8(i) = FND_API.G_MISS_CHAR THEN
2575 p_header_rec.tp_attribute8(i) := oe_validate.g_attribute8;
2576 END IF;
2577
2578 IF p_header_rec.tp_attribute9(i) IS NULL
2579 OR p_header_rec.tp_attribute9(i) = FND_API.G_MISS_CHAR THEN
2580 p_header_rec.tp_attribute9(i) := oe_validate.g_attribute9;
2581 END IF;
2582
2583 IF p_header_rec.tp_attribute10(i) IS NULL
2584 OR p_header_rec.tp_attribute10(i) = FND_API.G_MISS_CHAR THEN
2585 p_header_rec.tp_attribute10(i) := Oe_validate.G_attribute10;
2586 End IF;
2587
2588 IF p_header_rec.tp_attribute11(i) IS NULL
2589 OR p_header_rec.tp_attribute11(i) = FND_API.G_MISS_CHAR THEN
2590 p_header_rec.tp_attribute11(i) := oe_validate.g_attribute11;
2591 END IF;
2592
2593 IF p_header_rec.tp_attribute12(i) IS NULL
2594 OR p_header_rec.tp_attribute12(i) = FND_API.G_MISS_CHAR THEN
2595 p_header_rec.tp_attribute12(i) := oe_validate.g_attribute12;
2596 END IF;
2597
2598 IF p_header_rec.tp_attribute13(i) IS NULL
2599 OR p_header_rec.tp_attribute13(i) = FND_API.G_MISS_CHAR THEN
2600 p_header_rec.tp_attribute13(i) := oe_validate.g_attribute13;
2601 END IF;
2602
2603 IF p_header_rec.tp_attribute14(i) IS NULL
2604 OR p_header_rec.tp_attribute14(i) = FND_API.G_MISS_CHAR THEN
2605 p_header_rec.tp_attribute14(i) := oe_validate.g_attribute14;
2606 END IF;
2607
2608 IF p_header_rec.tp_attribute15(i) IS NULL
2609 OR p_header_rec.tp_attribute15(i) = FND_API.G_MISS_CHAR THEN
2610 p_header_rec.tp_attribute15(i) := oe_validate.g_attribute15;
2611 END IF;
2612
2613 END IF;
2614 END IF;
2615
2616 END IF; -- End if p_validate_desc_flex is 'Y'
2617
2618 -- END: Desc Flex Validations
2619
2620
2621 ---------------------------------------------------------------
2622 -- Add a 100% default sales credit record for this salesperson
2623 ---------------------------------------------------------------
2624
2625 IF p_header_rec.salesrep_id(i) IS NOT NULL THEN
2626
2627 x_header_scredit_rec.header_id.extend(1);
2628 x_header_scredit_rec.salesrep_id.extend(1);
2629 x_header_scredit_rec.sales_credit_type_id.extend(1);
2630
2631 l_c_index := OE_Bulk_Cache.Load_Salesrep
2632 (p_key => p_header_rec.salesrep_id(i));
2633
2634 x_header_scredit_rec.header_id(l_scredit_index)
2635 := p_header_rec.header_id(i);
2636 x_header_scredit_rec.salesrep_id(l_scredit_index)
2637 := p_header_rec.salesrep_id(i);
2638 x_header_scredit_rec.sales_credit_type_id(l_scredit_index)
2639 := OE_Bulk_Cache.G_SALESREP_TBL(l_c_index).sales_credit_type_id;
2640
2641 l_scredit_index := l_scredit_index + 1;
2642
2643 END IF;
2644
2645 ---------------------------------------------------------------
2646 -- Load EDI attributes if sold to customer is an EDI customer
2647 ---------------------------------------------------------------
2648
2649 IF OE_GLOBALS.G_EC_INSTALLED = 'Y'
2650 AND p_header_rec.booked_flag(i) = 'Y'
2651 AND nvl(p_header_rec.lock_control(i),0) <> -99
2652 THEN
2653
2654 l_c_index := OE_Bulk_Cache.Load_Sold_To
2655 (p_key => p_header_rec.sold_to_org_id(i)
2656 ,p_edi_attributes => 'Y'
2657 );
2658
2659 IF OE_Bulk_Cache.G_SOLD_TO_TBL(l_c_index).tp_setup THEN
2660
2661 OE_Bulk_Order_Pvt.G_ACK_NEEDED := 'Y';
2662 p_header_rec.first_ack_code(i) := 'X';
2663
2664 -- Cache EDI attributes as these will be used in creating
2665 -- the acknowledgment records later.
2666
2667 IF p_header_rec.invoice_to_org_id(i) IS NOT NULL THEN
2668 l_c_index := OE_Bulk_Cache.Load_Invoice_To
2669 (p_key => p_header_rec.invoice_to_org_id(i)
2670 ,p_edi_attributes => 'Y'
2671 );
2672 END IF;
2673
2674 IF p_header_rec.ship_to_org_id(i) IS NOT NULL THEN
2675 l_c_index := OE_Bulk_Cache.Load_Ship_To
2676 (p_key => p_header_rec.ship_to_org_id(i)
2677 ,p_edi_attributes => 'Y'
2678 );
2679 END IF;
2680
2681 IF p_header_rec.ship_from_org_id(i) IS NOT NULL THEN
2682 l_c_index := OE_Bulk_Cache.Load_Ship_From
2683 (p_key => p_header_rec.ship_from_org_id(i)
2684 );
2685 END IF;
2686
2687 -- added for end customer changes(bug 5054618)
2688
2689 IF p_header_rec.end_customer_id(i) IS NOT NULL THEN
2690 l_c_index := OE_Bulk_Cache.Load_End_customer
2691 (p_key => p_header_rec.end_customer_id(i)
2692 ,p_edi_attributes => 'Y'
2693 );
2694 END IF;
2695
2696 IF p_header_rec.End_customer_site_use_id(i) IS NOT NULL THEN
2697 l_c_index := OE_Bulk_Cache.Load_end_customer_site
2698 (p_key => p_header_rec.end_customer_site_use_id(i)
2699 ,p_edi_attributes => 'Y'
2700 );
2701 END IF;
2702
2703 END IF;
2704
2705 END IF;
2706
2707 ---------------------------------------------------------------
2708 -- Evaluate Holds for header
2709 ---------------------------------------------------------------
2710
2711 IF p_header_rec.lock_control(i) <> -99 THEN
2712
2713 -- Check Header Level Holds
2714 /*ER#7479609 start
2715 OE_Bulk_Holds_PVT.Evaluate_Holds(
2716 p_header_id => p_header_rec.header_id(i),
2717 p_line_id => NULL,
2718 p_line_number => NULL,
2719 p_sold_to_org_id => p_header_rec.sold_to_org_id(i),
2720 p_inventory_item_id => NULL,
2721 p_ship_from_org_id => NULL,
2722 p_invoice_to_org_id => NULL,
2723 p_ship_to_org_id => NULL,
2724 p_top_model_line_id => NULL,
2725 p_ship_set_name => NULL,
2726 p_arrival_set_name => NULL,
2727 p_on_generic_hold => l_on_generic_hold,
2728 p_on_booking_hold => l_on_booking_hold,
2729 p_on_scheduling_hold => l_on_scheduling_hold
2730 );
2731 ER#7479609 end*/
2732
2733 --ER#7479609 start
2734 l_header_rec_for_hold.header_id := p_header_rec.header_id(i);
2735 l_header_rec_for_hold.sold_to_org_id := p_header_rec.sold_to_org_id(i);
2736 l_header_rec_for_hold.sales_channel_code := p_header_rec.sales_channel_code(i);
2737 l_header_rec_for_hold.payment_type_code := p_header_rec.payment_type_code(i);
2738 l_header_rec_for_hold.order_type_id := p_header_rec.order_type_id(i);
2739 l_header_rec_for_hold.transactional_curr_code := p_header_rec.transactional_curr_code(i);
2740
2741 OE_Bulk_Holds_PVT.Evaluate_Holds(
2742 p_header_rec => l_header_rec_for_hold,
2743 p_line_rec => NULL,
2744 p_on_generic_hold => l_on_generic_hold,
2745 p_on_booking_hold => l_on_booking_hold,
2746 p_on_scheduling_hold => l_on_scheduling_hold
2747 );
2748 --ER#7479609 end
2749
2750 END IF;
2751
2752 ---------------------------------------------------------------
2753 -- BOOKING VALIDATIONS
2754 ---------------------------------------------------------------
2755 IF p_header_rec.booked_flag(i) = 'Y' THEN
2756
2757 -- Do not book the Order if the header is on HOLD.
2758
2759 IF l_on_generic_hold OR l_on_booking_hold THEN
2760
2761 FND_MESSAGE.SET_NAME('ONT','OE_BOOKING_HOLD_EXISTS');
2762 oe_bulk_msg_pub.ADD;
2763 p_header_rec.booked_flag(i) := 'N';
2764 --PIB
2765 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' Then
2766 p_header_rec.event_code(i) := 'BATCH';
2767 If l_debug_level > 0 Then
2768 oe_debug_pub.add('event code1 : '||p_header_rec.event_code(i));
2769 End If;
2770 END IF;
2771 --PIB
2772
2773 ELSE
2774
2775 Check_Book_Reqd_Attributes(p_header_rec => p_header_rec
2776 ,p_index => i
2777 ,x_return_status => l_return_status);
2778
2779 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2780 p_header_rec.booked_flag(i) := 'N';
2781 --PIB
2782 IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' Then
2783 p_header_rec.event_code(i) := 'BATCH';
2784 If l_debug_level > 0 Then
2785 oe_debug_pub.add('event code2 : '||p_header_rec.event_code(i));
2786 End If;
2787 END IF;
2788 --PIB
2789 END IF;
2790
2791 END IF;
2792
2793 END IF;
2794
2795 -- Update Global table with pointers to Erroneous record
2796
2797 IF (p_header_rec.lock_control(i) IN (-99, -98, -97) ) THEN
2798
2799 error_count := error_count + 1;
2800
2801 OE_Bulk_Order_Pvt.G_ERROR_REC.order_source_id.EXTEND(1);
2802 OE_Bulk_Order_Pvt.G_ERROR_REC.order_source_id(error_count)
2803 := p_header_rec.order_source_id(i);
2804
2805 OE_Bulk_Order_Pvt.G_ERROR_REC.orig_sys_document_ref.EXTEND(1);
2806 OE_Bulk_Order_Pvt.G_ERROR_REC.orig_sys_document_ref(error_count)
2807 := p_header_rec.orig_sys_document_ref(i);
2808
2809 OE_Bulk_Order_Pvt.G_ERROR_REC.header_id.EXTEND(1);
2810 OE_Bulk_Order_Pvt.G_ERROR_REC.header_id(error_count)
2811 := p_header_rec.header_id(i);
2812 OE_Bulk_Order_PVT.G_ERROR_REC.ineligible_for_hvop.EXTEND(1);
2813 OE_Bulk_Order_PVT.G_ERROR_REC.skip_batch.EXTEND(1);
2814
2815 IF p_header_rec.lock_control(i) = -98 THEN
2816 OE_Bulk_Order_PVT.G_ERROR_REC.ineligible_for_hvop(error_count):=
2817 'Y';
2818 ELSIF p_header_rec.lock_control(i) = -97 THEN
2819 OE_Bulk_Order_PVT.G_ERROR_REC.skip_batch(error_count):= 'Y';
2820 END IF;
2821 END IF;
2822
2823 END LOOP;
2824
2825
2826 EXCEPTION
2827 WHEN OTHERS THEN
2828 IF oe_bulk_msg_pub.check_msg_level(oe_bulk_msg_pub.G_MSG_LVL_UNEXP_ERROR)
2829 THEN
2830 oe_bulk_msg_pub.add_exc_msg
2831 ( G_PKG_NAME
2832 , 'Entity'
2833 );
2834 END IF;
2835 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2836 END Entity;
2837
2838
2839 END OE_BULK_PROCESS_HEADER;