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