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