[Home] [Help]
PACKAGE BODY: APPS.OE_HOLDS_PVT
Source
1 PACKAGE BODY OE_Holds_Pvt AS
2 /* $Header: OEXVHLDB.pls 120.21.12010000.12 2008/11/19 10:38:11 vbkapoor ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_Holds_Pvt';
7
8
9 Procedure Release_Hold_Source (
10 p_hold_source_rec IN OE_HOLDS_PVT.Hold_source_Rec_Type,
11 p_hold_release_rec IN OE_HOLDS_PVT.hold_release_rec_type,
12 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
13 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
14 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
15 );
16
17
18 /****************************/
19 /* entity_code_value */
20 /****************************/
21 /*
22 *
23 */
24 function entity_code_value (
25 p_hold_entity_code IN OE_HOLD_SOURCES_ALL.HOLD_ENTITY_CODE%TYPE
26 )
27 return VARCHAR2
28 IS
29 l_hold_entity_code_value VARCHAR2 (100) := NULL;
30
31
32 CURSOR hold_entity_code_value IS
33 select meaning
34 from oe_lookups
35 where LOOKUP_TYPE = 'HOLD_ENTITY_DESC'
36 and LOOKUP_CODE = p_hold_entity_code
37 and rownum = 1;
38
39 BEGIN
40
41 OPEN hold_entity_code_value;
42 FETCH hold_entity_code_value
43 INTO l_hold_entity_code_value;
44 CLOSE hold_entity_code_value;
45
46 return l_hold_entity_code_value;
47
48 END entity_code_value;
49 /*********************/
50
51
52
53 /*=======================*/
54 /* Private procedures */
55 /*=======================*/
56 function get_user_id
57 return number
58 IS
59 BEGIN
60 return NVL(FND_GLOBAL.USER_ID, -1);
61 END get_user_id;
62
63
64 function entity_id_value (
65 p_hold_entity_code IN OE_HOLD_SOURCES_ALL.HOLD_ENTITY_CODE%TYPE,
66 p_hold_entity_id IN OE_HOLD_SOURCES_ALL.HOLD_ENTITY_ID%TYPE )
67 return VARCHAR2
68 IS
69 l_hold_entity_id_value VARCHAR2 (100) := NULL;
70
71 CURSOR order_value_cur IS
72 select order_number
73 from oe_order_headers
74 where header_id = p_hold_entity_id
75 and rownum = 1;
76
77 CURSOR item_value_cur IS
78 select concatenated_segments
79 from mtl_system_items_kfv
80 where inventory_item_id = p_hold_entity_id;
81
82 /* Following cursor has been changed to use direct TCA tables -Bug 1874065*/
83 /* CURSOR customer_value_cur IS
84 select customer_name
85 from ra_customers
86 where customer_id = p_hold_entity_id;
87 */
88 CURSOR customer_value_cur IS
89 select substrb(party.party_name,1,50) customer_name
90 from hz_parties party, hz_cust_accounts cust_acct
91 where party.party_id = cust_acct.party_id
92 AND cust_acct.cust_account_id = p_hold_entity_id;
93
94 CURSOR ship_to_value_cur IS
95 select name
96 from oe_ship_to_orgs_v
97 where ORGANIZATION_ID = p_hold_entity_id;
98
99 CURSOR bill_to_value_cur IS
100 select name
101 from oe_invoice_to_orgs_v
102 where ORGANIZATION_ID = p_hold_entity_id;
103
104 CURSOR ship_from_value_cur IS
105 select name
106 from oe_ship_from_orgs_v
107 where ORGANIZATION_ID = p_hold_entity_id;
108
109 --ER#7479609 start
110 CURSOR deliver_to_value_cur IS
111 select name
112 from oe_deliver_to_orgs_v
113 where ORGANIZATION_ID = p_hold_entity_id;
114
115 CURSOR payment_type_value_cur IS
116 SELECT name
117 FROM oe_payment_types_vl
118 WHERE payment_type_code = p_hold_entity_id;
119
120 CURSOR payment_term_value_cur IS
121 select name
122 from ra_terms
123 WHERE term_id = p_hold_entity_id;
124
125 CURSOR price_list_value_cur IS
126 select name
127 from qp_list_headers_vl
128 WHERE list_header_id = p_hold_entity_id;
129
130 CURSOR transaction_type_value_cur IS
131 select name
132 from oe_transaction_types
133 WHERE transaction_type_id = p_hold_entity_id;
134
135 CURSOR source_type_value_cur IS
136 select meaning
137 from oe_lookups
138 WHERE lookup_code= p_hold_entity_id
139 AND lookup_type = 'SOURCE_TYPE';
140
141 CURSOR shipping_method_value_cur IS
142 select meaning
143 from oe_ship_methods_v
144 WHERE lookup_code= p_hold_entity_id
145 AND lookup_type = 'SHIP_METHOD';
146
147 CURSOR currency_value_cur IS
148 select name
149 from fnd_currencies_vl
150 WHERE currency_code = p_hold_entity_id;
151
152 CURSOR salesrep_value_cur IS
153 select name
154 from ra_salesreps
155 WHERE salesrep_id = p_hold_entity_id;
156
157 CURSOR sales_channel_value_cur IS
158 select meaning
159 from oe_lookups
160 WHERE lookup_code= p_hold_entity_id
161 AND lookup_type = 'SALES_CHANNEL';
162
163 CURSOR project_value_cur IS
164 select PROJECT_NAME
165 from PJM_PROJECTS_ORG_OU_SECURE_V
166 WHERE PROJECT_ID = p_hold_entity_id;
167
168 CURSOR task_value_cur IS
169 select TASK_NAME
170 from PJM_TASKS_OU_V
171 WHERE TASK_ID = p_hold_entity_id;
172
173 CURSOR user_value_cur IS
174 select user_name
175 from fnd_user
176 WHERE user_id = p_hold_entity_id;
177
178 --ER#7479609 end
179
180 BEGIN
181
182 if p_hold_entity_code = 'O' THEN
183 OPEN order_value_cur;
184 FETCH order_value_cur
185 INTO l_hold_entity_id_value;
186 CLOSE order_value_cur;
187 --ER#7479609 elsif p_hold_entity_code = 'I' THEN
188 elsif p_hold_entity_code in ('I','OI','TM') THEN --ER#7479609
189 OPEN item_value_cur;
190 FETCH item_value_cur
191 into l_hold_entity_id_value;
192 CLOSE item_value_cur;
193 elsif p_hold_entity_code = 'C' THEN
194 OPEN customer_value_cur;
195 FETCH customer_value_cur
196 into l_hold_entity_id_value;
197 CLOSE customer_value_cur;
198 elsif p_hold_entity_code = 'S' THEN
199 OPEN ship_to_value_cur;
200 FETCH ship_to_value_cur
201 into l_hold_entity_id_value;
202 CLOSE ship_to_value_cur;
203 elsif p_hold_entity_code = 'B' THEN
204 OPEN bill_to_value_cur;
205 FETCH bill_to_value_cur
206 into l_hold_entity_id_value;
207 CLOSE bill_to_value_cur;
208 elsif p_hold_entity_code = 'W' THEN
209 OPEN ship_from_value_cur;
210 FETCH ship_from_value_cur
211 into l_hold_entity_id_value;
212 CLOSE ship_from_value_cur;
213 elsif p_hold_entity_code = 'H' THEN
214 l_hold_entity_id_value := p_hold_entity_id;
215 elsif p_hold_entity_code = 'L' THEN
216 l_hold_entity_id_value := p_hold_entity_id;
217 --ER#7479609 start
218 elsif p_hold_entity_code = 'D' THEN
219 OPEN deliver_to_value_cur;
220 FETCH deliver_to_value_cur
221 into l_hold_entity_id_value;
222 CLOSE deliver_to_value_cur;
223 elsif p_hold_entity_code = 'P' THEN
224 OPEN payment_type_value_cur;
225 FETCH payment_type_value_cur
226 into l_hold_entity_id_value;
227 CLOSE payment_type_value_cur;
228 elsif p_hold_entity_code = 'PT' THEN
229 OPEN payment_term_value_cur;
230 FETCH payment_term_value_cur
231 into l_hold_entity_id_value;
232 CLOSE payment_term_value_cur;
233
234 elsif p_hold_entity_code = 'PL' THEN
235 OPEN price_list_value_cur;
236 FETCH price_list_value_cur
237 into l_hold_entity_id_value;
238 CLOSE price_list_value_cur;
239
240 elsif p_hold_entity_code in ('OT','LT') THEN
241 OPEN transaction_type_value_cur;
242 FETCH transaction_type_value_cur
243 into l_hold_entity_id_value;
244 CLOSE transaction_type_value_cur;
245
246 elsif p_hold_entity_code = 'ST' THEN
247 OPEN source_type_value_cur;
248 FETCH source_type_value_cur
249 into l_hold_entity_id_value;
250 CLOSE source_type_value_cur;
251
252 elsif p_hold_entity_code = 'SM' THEN
253 OPEN shipping_method_value_cur;
254 FETCH shipping_method_value_cur
255 into l_hold_entity_id_value;
256 CLOSE shipping_method_value_cur;
257
258 elsif p_hold_entity_code = 'TC' THEN
259 OPEN currency_value_cur;
260 FETCH currency_value_cur
261 into l_hold_entity_id_value;
262 CLOSE currency_value_cur;
263
264 elsif p_hold_entity_code = 'SC' THEN
265 OPEN sales_channel_value_cur;
266 FETCH sales_channel_value_cur
267 into l_hold_entity_id_value;
268 CLOSE sales_channel_value_cur;
269
270 elsif p_hold_entity_code = 'PR' THEN
271 OPEN project_value_cur;
272 FETCH project_value_cur
273 into l_hold_entity_id_value;
274 CLOSE project_value_cur;
275
276 elsif p_hold_entity_code = 'T' THEN
277 OPEN task_value_cur;
278 FETCH task_value_cur
279 into l_hold_entity_id_value;
280 CLOSE task_value_cur;
281
282 elsif p_hold_entity_code = 'CB' THEN
283 OPEN user_value_cur;
284 FETCH user_value_cur
285 into l_hold_entity_id_value;
286 CLOSE user_value_cur;
287
288 elsif p_hold_entity_code = 'CD' THEN
289 l_hold_entity_id_value := p_hold_entity_id;
290 --ER#7479609 end
291 end if;
292
293 return l_hold_entity_id_value;
294
295 END entity_id_value;
296 --------------------------
297 function hold_name(
298 p_hold_source_id IN OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE)
299 return varchar2
300 IS
301 l_hold_name oe_hold_definitions.name%type := '';
302 BEGIN
303 select hd.name
304 into l_hold_name
305 from oe_hold_sources hs,
306 oe_hold_definitions hd
307 where hs.HOLD_SOURCE_ID = p_hold_source_id
308 and hs.hold_id = hd.hold_id;
309
310 return l_hold_name;
311 END hold_name;
312
313 ------------------
314 function user_name (
315 p_user_id IN FND_USER.USER_ID%TYPE )
316 return VARCHAR2
317 IS
318 l_user_name VARCHAR2(100) := '';
319 BEGIN
320 select USER_NAME
321 into l_user_name
322 from fnd_user
323 where USER_ID = p_user_id;
324 return l_user_name;
325 END user_name;
326 -----------------
327
328 /*
329 NAME :
330 progress_order
331 BRIEF DESCRIPTION :
332 This API is called when a workflow based hold is released to progress
333 the workflow of affected lines/orders if eligible.Introduced as a part
334 of ER 1373910.
335 CALLER :
336 1. Process_release_holds_lines
337 2. Process_release_holds_orders
338 RELEASE LEVEL :
339 12.1.1 and higher.
340 PARAMETERS :
341 p_num_of_records Number of records affected by the hold release.
342 Determines whether workflow should be progressed
343 or deferred.
344 p_order_tbl Details of affected order/line.
345 x_return_status Return status
346 */
347 PROCEDURE progress_order( p_hold_id IN NUMBER,
348 p_num_of_records IN NUMBER,
349 p_order_tbl OE_HOLDS_PVT.order_tbl_type,
350 x_return_status OUT NOCOPY VARCHAR2,
351 x_msg_count OUT NOCOPY NUMBER,
352 x_msg_data OUT NOCOPY VARCHAR2
353 )
354 IS
355
356 l_rel_threshold NUMBER;
357 l_release_children VARCHAR2(10) := 'N';
358 l_result VARCHAR2(10);
359 l_item_type VARCHAR2(10);
360 l_activity VARCHAR2(250);
361 l_found VARCHAR2(2) := 'T';
362
363 CURSOR c_child_lines(p_header_id IN NUMBER)
364 IS
365 SELECT wpa_to.process_name || ':' || wpa_to.activity_name full_activity_name,
366 wias_to.item_type,
367 wias_to.item_key
368 FROM wf_item_activity_statuses wias_to,
369 wf_process_activities wpa_to,
370 wf_activities wa,
371 wf_item_activity_statuses wias_from,
372 wf_activity_transitions wat,
373 wf_items wi
374 WHERE wpa_to.instance_id= wias_to.process_activity
375 AND wat.to_process_activity = wpa_to.instance_id
376 AND wat.result_code = 'ON_HOLD'
377 AND wias_from.process_activity = wat.from_process_activity
378 AND wias_from.activity_result_code = 'ON_HOLD'
379 AND wias_from.end_date IS NOT NULL
380 AND wias_from.item_type = 'OEOL'
381 AND wi.parent_item_key = To_Char(p_header_id)
382 AND wa.item_type = wias_to.item_type
383 AND wa.NAME = wpa_to.activity_name
384 AND wa.FUNCTION = 'OE_STANDARD_WF.STANDARD_BLOCK'
385 AND wa.end_date IS NULL
386 AND wias_to.end_date IS NULL
387 AND wias_to.activity_status = 'NOTIFIED'
388 AND wias_to.item_type = wias_from.item_type
389 AND wias_to.item_key = wias_from.item_key
390 AND wi.item_type = wias_to.item_type
391 AND wias_to.item_key = wi.item_key;
392
393 BEGIN
394
395 l_rel_threshold := wf_engine.threshold;
396 SAVEPOINT progress_order;
397
398 /*
399 This section will be executed in the following situation :
400 1. Hold is defined on a line and is workflow based.
401 2. Hold definition has its apply_to_order_and_line_flag
402 = 'Y'
403 If such an hold is applied on an order, the following code
404 takes care that the child lines are also progressed when it
405 is released.
406 */
407
408 IF p_order_tbl(1).line_id IS NULL THEN
409 BEGIN
410 SELECT 'Y'
411 INTO l_release_children
412 FROM oe_order_holds oh,
413 oe_hold_sources hs,
414 oe_hold_definitions hd
415 WHERE hs.hold_source_id = oh.hold_source_id
416 AND hs.hold_id = hd.hold_id
417 AND hd.hold_id = p_hold_id
418 AND oh.header_id = p_order_tbl(1).header_id
419 AND oh.line_id IS NULL
420 AND hs.hold_entity_code = 'O'
421 AND hs.hold_entity_id = p_order_tbl(1).header_id
422 AND NVL(hd.item_type, 'INVALID') = 'OEOL'
423 AND hd.activity_name IS NOT NULL
424 AND NVL(hd.apply_to_order_and_line_flag,'N') = 'Y';
425
426 EXCEPTION
427 WHEN NO_DATA_FOUND THEN
428 Oe_debug_pub.ADD('Normal hold release.');
429 WHEN OTHERS THEN
430 Oe_debug_pub.ADD(SQLERRM);
431 -- RAISE;
432 END;
433
434 IF l_release_children = 'Y' THEN
435
436 Oe_debug_pub.ADD('Handling apply_to_order_and_line_flag..');
437
438 wf_engine.threshold := -1;
439
440 FOR c_rec IN c_child_lines(p_order_tbl(1).header_id)
441 LOOP
442 Oe_debug_pub.ADD('Processing OEOL : ' || c_rec.item_key);
443 wf_engine.CompleteActivity('OEOL', c_rec.item_key, c_rec.full_activity_name, l_result);
444 END LOOP;
445
446 wf_engine.threshold := l_rel_threshold;
447 x_return_status := FND_API.G_RET_STS_SUCCESS;
448 Oe_msg_pub.Count_And_Get
449 ( p_count => x_msg_count
450 ,p_data => x_msg_data
451 );
452 RETURN;
453 END IF;
454 END IF;
455
456 /* This section will take care of the normal situation */
457
458 IF p_num_of_records > 1 THEN
459 wf_engine.threshold := -1 ;
460 END IF;
461
462 Oe_debug_pub.ADD('p_num_of_records : ' || p_num_of_records);
463
464 FOR i in p_order_tbl.FIRST..p_order_tbl.LAST
465 LOOP
466 BEGIN
467
468 /* This select statement will pick up the activity which fulfills
469 the following criteria :
470 1. Activity is based on a OE_STANDARD_WF.STANDARD_BLOCK function
471 2. Activity is in a 'NOTIFIED' status
472 3. Activity has been reached via a transition of 'ON_HOLD'
473 4. For a given item_type and item_key
474 */
475 l_found := 'T';
476
477 SELECT wpa_to.process_name || ':' || wpa_to.activity_name,
478 wias_to.item_type
479 INTO l_activity, l_item_type
480 FROM wf_item_activity_statuses wias_to,
481 wf_process_activities wpa_to,
482 wf_activities wa,
483 wf_item_activity_statuses wias_from,
484 wf_activity_transitions wat
485 WHERE wpa_to.instance_id= wias_to.process_activity
486 AND wat.to_process_activity = wpa_to.instance_id
487 AND wat.result_code = 'ON_HOLD'
488 AND wias_from.process_activity = wat.from_process_activity
489 AND wias_from.activity_result_code = 'ON_HOLD'
490 AND wias_from.end_date IS NOT NULL
491 AND wias_from.item_type = DECODE(p_order_tbl(i).line_id, NULL, 'OEOH', 'OEOL')
492 AND wias_from.item_key = To_Char(NVL(p_order_tbl(i).line_id,p_order_tbl(i).header_id))
493 AND wa.item_type = wias_to.item_type
494 AND wa.NAME = wpa_to.activity_name
495 AND wa.FUNCTION = 'OE_STANDARD_WF.STANDARD_BLOCK'
496 AND wa.end_date IS NULL
497 AND wias_to.end_date IS NULL
498 AND wias_to.activity_status = 'NOTIFIED'
499 AND wias_to.item_type = wias_from.item_type
500 AND wias_to.item_key = wias_from.item_key;
501
502 Oe_debug_pub.ADD('Processing ' || l_item_type || ':' || NVL(p_order_tbl(i).line_id,p_order_tbl(i).header_id));
503
504 EXCEPTION
505 WHEN OTHERS THEN
506 Oe_debug_pub.ADD('Could not get activity ID for header/line : ' || To_Char(NVL(p_order_tbl(i).line_id,p_order_tbl(i).header_id)));
507 l_found := 'F';
508 -- Do not raise an exception here as the query might fail because
509 -- entity being processed is not at this workflow stage (not reached
510 -- yet/ crossed already). This is a valid scenario. say, line hasn't
511 -- been booked but scheduling hold is being released. So the
512 -- processing must resume for the other lines.
513
514 -- RAISE;
515 END;
516
517 IF l_found = 'T' THEN
518 wf_engine.CompleteActivity(l_item_type, To_Char(NVL(p_order_tbl(1).line_id,p_order_tbl(1).header_id)),l_activity, l_result);
519 END IF;
520
521 END LOOP;
522
523 wf_engine.threshold := l_rel_threshold;
524 x_return_status := FND_API.G_RET_STS_SUCCESS;
525 Oe_msg_pub.Count_And_Get
526 ( p_count => x_msg_count
527 ,p_data => x_msg_data
528 );
529
530 EXCEPTION
531 WHEN OTHERS THEN
532 Oe_debug_pub.ADD('Failed from progress order.');
533 wf_engine.threshold := l_rel_threshold;
534 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
535 Oe_msg_pub.Count_And_Get
536 ( p_count => x_msg_count
537 ,p_data => x_msg_data
538 );
539 ROLLBACK TO progress_order;
540
541 END progress_order;
542
543
544 /*
545 NAME :
546 progress_order
547 BRIEF DESCRIPTION :
548 This overloaded version of API is called when a workflow based hold
549 SOURCE is released to progress the workflow of affected lines/orders
550 if eligible.Introduced as a part of ER 1373910.
551 CALLER :
552 1. Process_release_source
553 RELEASE LEVEL :
554 12.1.1 and higher.
555 PARAMETERS :
556 p_hold_source_id Released hold source
557 x_return_status Return status
558 */
559
560 PROCEDURE progress_order( p_hold_source_id IN NUMBER,
561 x_return_status OUT NOCOPY VARCHAR2,
562 x_msg_count OUT NOCOPY NUMBER,
563 x_msg_data OUT NOCOPY VARCHAR2
564 )
565 IS
566
567 l_rel_threshold NUMBER;
568 l_result VARCHAR2(10);
569 l_activity VARCHAR2(250);
570 l_found VARCHAR2(2) := 'T';
571 l_item_type VARCHAR2(10);
572 l_hold_entity_code VARCHAR2(10);
573
574 CURSOR released_orders_lines
575 IS
576 SELECT NVL(line_id, header_id) entity_id,
577 DECODE(line_id , NULL, 'OEOH', 'OEOL') entity_type
578 FROM oe_order_holds oh, oe_hold_sources hs
579 WHERE hs.hold_source_id = p_hold_source_id
580 AND oh.hold_release_id = hs.hold_release_id
581 AND oh.released_flag = 'Y';
582
583 BEGIN
584
585 Oe_debug_pub.ADD('In overloaded progress_order!!');
586
587 l_rel_threshold := wf_engine.threshold;
588
589 BEGIN
590 SELECT hold_entity_code
591 INTO l_hold_entity_code
592 FROM oe_hold_sources
593 WHERE hold_source_id = p_hold_source_id;
594 EXCEPTION
595 WHEN OTHERS THEN
596 Oe_debug_pub.ADD('Source not found.!!');
597 -- RAISE;
598 END;
599
600 IF NVL(l_hold_entity_code,'INVALID') <> 'O' THEN
601 wf_engine.threshold := -1 ;
602 END IF;
603
604 FOR x IN released_orders_lines LOOP
605
606 BEGIN
607
608 /* This select statement will pick up the activity which fulfills
609 the following criteria :
610 1. Activity is based on a OE_STANDARD_WF.STANDARD_BLOCK function
611 2. Activity is in a 'NOTIFIED' status
612 3. Activity has been reached via a transition of 'ON_HOLD'
613 4. For a given item_type and item_key
614 */
615 l_found := 'T';
616
617 SELECT wpa_to.process_name || ':' || wpa_to.activity_name,
618 wias_to.item_type
619 INTO l_activity, l_item_type
620 FROM wf_item_activity_statuses wias_to,
621 wf_process_activities wpa_to,
622 wf_activities wa,
623 wf_item_activity_statuses wias_from,
624 wf_activity_transitions wat
625 WHERE wpa_to.instance_id= wias_to.process_activity
626 AND wat.to_process_activity = wpa_to.instance_id
627 AND wat.result_code = 'ON_HOLD'
628 AND wias_from.process_activity = wat.from_process_activity
629 AND wias_from.activity_result_code = 'ON_HOLD'
630 AND wias_from.end_date IS NOT NULL
631 AND wias_from.item_type = x.entity_type
632 AND wias_from.item_key = To_Char(x.entity_id)
633 AND wa.item_type = wias_to.item_type
634 AND wa.NAME = wpa_to.activity_name
635 AND wa.FUNCTION = 'OE_STANDARD_WF.STANDARD_BLOCK'
636 AND wa.end_date IS NULL
637 AND wias_to.end_date IS NULL
638 AND wias_to.activity_status = 'NOTIFIED'
639 AND wias_to.item_type = x.entity_type
640 AND wias_to.item_key = To_Char(x.entity_id);
641
642 Oe_debug_pub.ADD('Processing ' || l_item_type || ':' || x.entity_id);
643 EXCEPTION
644 WHEN OTHERS THEN
645 Oe_debug_pub.ADD('Could not get activity ID for header/line : ' || x.entity_id);
646 l_found := 'F';
647 -- Do not raise an exception here as the query might fail because
648 -- entity being processed is not at this workflow stage (not reached
649 -- yet/ crossed already). This is a valid scenario. say, line hasn't
650 -- been booked but scheduling hold is being released. So the
651 -- processing must resume for the other lines.
652
653 -- RAISE;
654 END;
655
656 SAVEPOINT progress_order;
657
658 IF l_found = 'T' THEN
659 wf_engine.CompleteActivity(l_item_type, To_Char(x.entity_id),l_activity, l_result);
660 END IF;
661
662 END LOOP;
663
664 wf_engine.threshold := l_rel_threshold;
665 x_return_status := FND_API.G_RET_STS_SUCCESS;
666 Oe_msg_pub.Count_And_Get
667 ( p_count => x_msg_count
668 ,p_data => x_msg_data
669 );
670
671 EXCEPTION
672 WHEN OTHERS THEN
673 OE_debug_pub.ADD('Failed from progress order');
674 wf_engine.threshold := l_rel_threshold;
675 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
676 Oe_msg_pub.Count_And_Get
677 ( p_count => x_msg_count
678 ,p_data => x_msg_data
679 );
680 ROLLBACK TO progress_order;
681 END progress_order;
682
683 -------------------------------------
684 -- CHECK_AUTHORIZATION
685 -------------------------------------
686 function check_authorization (
687 p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE,
688 p_authorized_action_code IN OE_HOLD_AUTHORIZATIONS.AUTHORIZED_ACTION_CODE%TYPE,
689 p_responsibility_id IN OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE,
690 p_application_id IN OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE,
691 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
692 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
693 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
694 )
695 RETURN varchar2
696 IS
697 l_auth_exists Varchar2(1) := 'N';
698 l_authorized_or_not varchar2(1) := 'Y';
699 l_dummy VARCHAR2(1);
700 BEGIN
701 OE_Debug_PUB.Add('Hold Check_Authorization Action' ||
702 p_authorized_action_code,1);
703 OE_Debug_PUB.Add('Hold_id' || to_char(p_hold_id),1);
704 OE_Debug_PUB.Add('Responsibility_Id' || to_char(p_responsibility_id),1);
705 OE_Debug_PUB.Add('Application_Id' || to_char(p_application_id),1);
706 begin
707 select 'Y'
708 Into l_auth_exists
709 from oe_hold_authorizations
710 where hold_id = p_hold_id
711 and authorized_action_code = p_authorized_action_code
712 and rownum = 1;
713 Exception
714 When NO_DATA_FOUND Then
715 OE_Debug_PUB.Add('No Authorization exists, Authorized=Yes',1);
716 l_authorized_or_not := 'Y';
717 l_auth_exists := 'N';
718 when others then
719 null;
720 End;
721
722 if l_auth_exists = 'Y' then
723 begin
724 select 'x'
725 into l_dummy
726 from oe_hold_authorizations
727 where sysdate between nvl(start_date_active,sysdate)
728 and nvl(end_date_active,sysdate)
729 and authorized_action_code = p_authorized_action_code
730 and responsibility_id = p_responsibility_id
731 and application_id = p_application_id
732 and hold_id = p_hold_id
733 and rownum = 1;
734 exception
735 when no_data_found then
736 OE_Debug_PUB.Add('Not Authorized', 1);
737 l_authorized_or_not := 'N';
738 when others then
739 null;
740 end;
741 end if;
742 return l_authorized_or_not;
743 END check_authorization;
744
745
746
747 --ER#7479609 start
748 ---------------------------------------------------------------------------------------------------
749 -- PROCEDURE : InsertTable_OOH_Header
750 -- DESCRIPTION : This is a Local Procedure used to insert record into the OE_ORDER_HOLDS_ALL table
751 -- for header level holds
752
753 -- Caller : Create_Order_Holds Procedure
754 -- PARAMETERS:
755 -- p_hold_source_id : Hold Source Id of the hold
756 -- p_header_id : Line Id if the hold is applied using action -> apply hold for a specific Hold
757 -- and BLANK if a hold source is created for a header level attribute
758 -- p_org_id : Operating Unit ID
759 -- p_hold_entity_where_clause : Condition for the hold criteria selected
760 -- p_item_type : Workflow item type like 'OEOH' or 'OEOL'
761 -- p_activity_name : Workflow activity name
762 -- p_activity_status : Workflow activity status
763 -- p_additional_where_clause : Its derived from the p_item_type and p_activity_name
764 ---------------------------------------------------------------------------------------------------
765 Procedure InsertTable_OOH_Header (p_hold_source_id OE_HOLD_SOURCES_ALL.hold_source_id%type
766 ,p_header_id OE_ORDER_HEADERS_ALL.header_id%type
767 ,p_org_id OE_ORDER_HEADERS_ALL.org_id%type
768 ,p_hold_entity_where_clause VARCHAR2
769 ,p_item_type VARCHAR2
770 ,p_activity_name VARCHAR2
771 ,p_activity_status VARCHAR2
772 ,p_additional_where_clause VARCHAR2
773 ,x_is_hold_applied OUT NOCOPY BOOLEAN)
774 IS
775 l_user_id NUMBER := OE_HOLDS_PVT.get_user_id;
776 l_parent_count NUMBER;
777 l_user_activity_name VARCHAR2(80);
778 l_sql_rowcount NUMBER;
779 l_sqlmt VARCHAR2(3000);
780 l_wf_sqlmt VARCHAR2(3000);
781
782 BEGIN
783
784 OE_DEBUG_PUB.ADD('Entering InsertTable_OOH_Header');
785
786 IF p_header_id IS NOT NULL THEN
787 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
788 ( ORDER_HOLD_ID
789 , LAST_UPDATE_DATE
790 , LAST_UPDATED_BY
791 , CREATION_DATE
792 , CREATED_BY
793 , LAST_UPDATE_LOGIN
794 , HOLD_SOURCE_ID
795 , HEADER_ID
796 , LINE_ID
797 , RELEASED_FLAG
798 , ORG_ID
799 )
800 SELECT
801 OE_ORDER_HOLDS_S.NEXTVAL
802 , SYSDATE
803 , :l_user_id
804 , SYSDATE
805 , :l_user_id
806 , NULL
807 , :hold_source_id
808 , h.HEADER_ID
809 , NULL
810 , ''N''
811 , h.org_id
812 FROM OE_ORDER_HEADERS_ALL h
813 WHERE h.OPEN_FLAG = ''Y''
814 and h.org_id = :l_org_id
815 and h.header_id = :header_id
816 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
817 and not exists ( select ''x''
818 from oe_order_holds_ALL oh
819 where oh.header_id = h.header_id
820 and oh.line_id IS NULL
821 and oh.hold_source_id =:hold_source_id )';
822 IF p_item_type is not null and p_activity_name is not null then
823 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
824 , wf_process_activities wpa
825 where was.process_activity = wpa.instance_id
826 and item_type = :p_item_type
827 and item_key = to_char(h.header_id)
828 and activity_name = :l_activity_name
829 and activity_status = :l_activity_status)';
830 END IF;
831
832 IF p_hold_entity_where_clause IS NOT NULL THEN
833 l_sqlmt :=l_sqlmt||' '||p_hold_entity_where_clause;
834 END IF;
835
836
837 IF p_item_type is null and p_activity_name is null then
838
839 EXECUTE IMMEDIATE
840 l_sqlmt USING l_user_id,
841 l_user_id,
842 p_hold_source_id,
843 p_org_id ,
844 p_header_id,
845 p_hold_source_id;
846 IF sql%rowcount = 0 THEN
847 x_is_hold_applied := FALSE;
848 ELSIF sql%rowcount = 1 THEN
849 x_is_hold_applied := TRUE;
850 END IF;
851 ELSE
852
853 EXECUTE IMMEDIATE
854 l_sqlmt USING l_user_id,
855 l_user_id,
856 p_hold_source_id,
857 p_org_id ,
858 p_header_id,
859 p_hold_source_id,
860 'OEOH',
861 p_activity_name,
862 p_activity_status;
863
864 IF sql%rowcount = 0 THEN
865 x_is_hold_applied := FALSE;
866 ELSIF sql%rowcount = 1 THEN
867 x_is_hold_applied := TRUE;
868 END IF;
869 END IF;
870
871 ELSE
872
873
874 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
875 ( ORDER_HOLD_ID
876 , LAST_UPDATE_DATE
877 , LAST_UPDATED_BY
878 , CREATION_DATE
879 , CREATED_BY
880 , LAST_UPDATE_LOGIN
881 , HOLD_SOURCE_ID
882 , HEADER_ID
883 , LINE_ID
884 , RELEASED_FLAG
885 , ORG_ID
886 )
887 SELECT
888 OE_ORDER_HOLDS_S.NEXTVAL
889 , SYSDATE
890 , :l_user_id
891 , SYSDATE
892 , :l_user_id
893 , NULL
894 , :hold_source_id
895 , h.HEADER_ID
896 , NULL
897 , ''N''
898 , h.org_id
899 FROM OE_ORDER_HEADERS_ALL h
900 WHERE h.OPEN_FLAG = ''Y''
901 and h.org_id = :l_org_id
902 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
903 and not exists ( select ''x''
904 from oe_order_holds_ALL oh
905 where oh.header_id = h.header_id
906 and oh.line_id IS NULL
907 and oh.hold_source_id =:hold_source_id )';
908 IF p_item_type is not null and p_activity_name is not null then
909 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
910 , wf_process_activities wpa
911 where was.process_activity = wpa.instance_id
912 and item_type = :p_item_type
913 and item_key = to_char(h.header_id)
914 and activity_name = :l_activity_name
915 and activity_status = :l_activity_status)';
916 END IF;
917
918 IF p_hold_entity_where_clause IS NOT NULL THEN
919 l_sqlmt :=l_sqlmt||' '||p_hold_entity_where_clause;
920 END IF;
921
922
923 IF p_item_type is null and p_activity_name is null then
924
925 EXECUTE IMMEDIATE
926 l_sqlmt USING l_user_id,
927 l_user_id,
928 p_hold_source_id,
929 p_org_id,
930 p_hold_source_id;
931 ELSE
932
933 EXECUTE IMMEDIATE
934 l_sqlmt USING l_user_id,
935 l_user_id,
936 p_hold_source_id,
937 p_org_id,
938 p_hold_source_id,
939 'OEOH',
940 p_activity_name,
941 p_activity_status;
942
943
944 l_sql_rowcount := sql%rowcount;
945
946 OE_DEBUG_PUB.ADD('l_sql_rowcount - '||l_sql_rowcount);
947
948 IF l_sql_rowcount = 0 THEN
949
950 SELECT meaning
951 INTO l_user_activity_name
952 FROM oe_lookups
953 WHERE lookup_type = DECODE(p_item_type,
954 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
955 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
956 AND lookup_code = p_activity_name;
957
958 FND_MESSAGE.SET_NAME('ONT', 'OE_NO_HOLD_ALL_LINES');
959 FND_MESSAGE.SET_TOKEN('WF_ACT', l_user_activity_name);
960 OE_MSG_PUB.ADD;
961 OE_DEBUG_PUB.ADD(' Hold Not applied for All requested records');
962 RAISE FND_API.G_EXC_ERROR;
963
964 ELSIF l_sql_rowcount > 0 THEN
965
966 l_wf_sqlmt := 'SELECT count(*)
967 FROM OE_ORDER_HEADERS_ALL h
968 WHERE h.OPEN_FLAG = ''Y''
969 AND nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
970 AND NOT EXISTS ( select ''x''
971 from oe_order_holds_ALL oh
972 where oh.header_id = h.header_id
973 and oh.hold_source_id = '||p_hold_source_id||' )';
974
975 IF p_hold_entity_where_clause IS NOT NULL THEN
976 l_wf_sqlmt :=l_wf_sqlmt||' '||p_hold_entity_where_clause;
977 END IF;
978
979
980 EXECUTE IMMEDIATE l_wf_sqlmt INTO l_parent_count;
981
982 /* Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables. */
983
984 OE_DEBUG_PUB.ADD('l_parent_count - '||l_parent_count);
985
986 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
987
988 SELECT meaning
989 INTO l_user_activity_name
990 FROM oe_lookups
991 WHERE lookup_type = DECODE(p_item_type,
992 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
993 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
994 AND lookup_code = p_activity_name;
995
996 FND_MESSAGE.SET_NAME('ONT', 'OE_NO_HOLD_FEW_LINES');
997 FND_MESSAGE.SET_TOKEN('WF_ACT', l_user_activity_name);
998 OE_MSG_PUB.ADD;
999 OE_DEBUG_PUB.ADD(' Hold Not applied for FEW of the requested records');
1000 END IF;
1001 END IF;
1002 END IF;
1003 END IF;
1004 OE_DEBUG_PUB.ADD('Exiting InsertTable_OOH_Header Successfully');
1005 EXCEPTION
1006 WHEN OTHERS THEN
1007 OE_DEBUG_PUB.ADD('Exiting InsertTable_OOH_Header with Error:'||SQLCODE);
1008 END InsertTable_OOH_Header;
1009 --ER#7479609 end
1010
1011
1012 --ER#7479609 start
1013 ---------------------------------------------------------------------------------------------------
1014 -- PROCEDURE : InsertTable_OOH_Line
1015 -- DESCRIPTION : This is a Local Procedure used to insert record into the OE_ORDER_HOLDS_ALL table
1016 -- for line level holds
1017
1018 -- Caller : Create_Order_Holds Procedure
1019 -- PARAMETERS:
1020 -- p_hold_source_id : Hold Source Id of the hold
1021 -- p_line_id : Line Id if the hold is applied using action -> apply hold for a specific Hold
1022 -- and BLANK if a hold source is created for a line level attribute
1023 -- p_org_id : Operating Unit ID
1024 -- p_hold_entity_where_clause : Condition for the hold criteria selected
1025 -- p_item_type : Workflow item type like 'OEOH' or 'OEOL'
1026 -- p_activity_name : Workflow activity name
1027 -- p_activity_status : Workflow activity status
1028 -- p_additional_where_clause : Its derived from the p_item_type and p_activity_name
1029 ---------------------------------------------------------------------------------------------------
1030 Procedure InsertTable_OOH_Line (p_hold_source_id OE_HOLD_SOURCES_ALL.hold_source_id%type,
1031 p_line_id OE_ORDER_LINES_ALL.line_id%type,
1032 p_org_id OE_ORDER_HEADERS_ALL.org_id%type,
1033 p_hold_entity_where_clause VARCHAR2,
1034 p_item_type VARCHAR2,
1035 p_activity_name VARCHAR2,
1036 p_activity_status VARCHAR2,
1037 p_additional_where_clause VARCHAR2,
1038 x_is_hold_applied OUT NOCOPY BOOLEAN)
1039 IS
1040 l_user_id NUMBER := OE_HOLDS_PVT.get_user_id;
1041 l_parent_count NUMBER;
1042 l_user_activity_name VARCHAR2(80);
1043 l_sql_rowcount NUMBER;
1044 l_sqlmt VARCHAR2(3000);
1045 l_wf_sqlmt VARCHAR2(3000);
1046 BEGIN
1047
1048 OE_DEBUG_PUB.ADD('Entering InsertTable_OOH_Line');
1049
1050 IF p_line_id IS NOT NULL THEN
1051
1052 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
1053 ( ORDER_HOLD_ID
1054 , LAST_UPDATE_DATE
1055 , LAST_UPDATED_BY
1056 , CREATION_DATE
1057 , CREATED_BY
1058 , LAST_UPDATE_LOGIN
1059 , HOLD_SOURCE_ID
1060 , HEADER_ID
1061 , LINE_ID
1062 , RELEASED_FLAG
1063 , ORG_ID
1064 )
1065 SELECT
1066 OE_ORDER_HOLDS_S.NEXTVAL
1067 , SYSDATE
1068 , :l_user_id
1069 , SYSDATE
1070 , :l_user_id
1071 , NULL
1072 , :hold_source_id
1073 , h.HEADER_ID
1074 , ol.line_id
1075 , ''N''
1076 , h.org_id
1077 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
1078 WHERE h.OPEN_FLAG = ''Y''
1079 and h.header_id = ol.header_id
1080 and h.org_id = :l_org_id
1081 and ol.line_id = :line_id
1082 and ol.OPEN_FLAG = ''Y''
1083 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
1084 and not exists ( select ''x''
1085 from oe_order_holds_ALL oh
1086 where oh.header_id = h.header_id
1087 and oh.line_id = ol.line_id
1088 and oh.hold_source_id = :hold_source_id )';
1089 IF p_item_type is not null and p_activity_name is not null then
1090 l_sqlmt :=l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
1091 , wf_process_activities wpa
1092 where was.process_activity = wpa.instance_id
1093 and item_type = :p_item_type
1094 and item_key = to_char(ol.line_id)
1095 and activity_name = :l_activity_name
1096 and activity_status = :l_activity_status)';
1097 END IF;
1098
1099 IF p_additional_where_clause = 'PICK_TRUE' THEN
1100 l_sqlmt :=l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
1101 where w.source_line_id = ol.line_id
1102 and w.source_code = ''OE''
1103 and w.released_status in (''Y'', ''C''))';
1104 ELSIF p_additional_where_clause = 'PACK_TRUE' THEN
1105 l_sqlmt :=l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
1106 where wdd.source_line_id = ol.LINE_ID
1107 and wdd.source_code = ''OE''
1108 and wda.delivery_detail_id = wdd.delivery_detail_id
1109 and wda.parent_delivery_detail_id is not null)';
1110 END IF;
1111
1112 IF p_hold_entity_where_clause IS NOT NULL THEN
1113 l_sqlmt :=l_sqlmt||' '||p_hold_entity_where_clause;
1114 END IF;
1115
1116 IF p_item_type is null and p_activity_name is null then
1117
1118 EXECUTE IMMEDIATE
1119 l_sqlmt USING l_user_id,
1120 l_user_id,
1121 p_hold_source_id,
1122 p_org_id,
1123 p_line_id,
1124 p_hold_source_id;
1125
1126 IF sql%rowcount = 0 THEN
1127 x_is_hold_applied := FALSE;
1128 ELSIF sql%rowcount = 1 THEN
1129 x_is_hold_applied := TRUE;
1130 END IF;
1131
1132 ELSE
1133
1134 EXECUTE IMMEDIATE
1135 l_sqlmt using l_user_id,
1136 l_user_id,
1137 p_hold_source_id,
1138 p_org_id ,
1139 p_line_id,
1140 p_hold_source_id,
1141 'OEOL',
1142 p_activity_name,
1143 p_activity_status;
1144
1145 IF sql%rowcount = 0 THEN
1146 x_is_hold_applied := FALSE;
1147 ELSIF sql%rowcount = 1 THEN
1148 x_is_hold_applied := TRUE;
1149 END IF;
1150
1151 END IF;
1152
1153 ELSE
1154
1155 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
1156 ( ORDER_HOLD_ID
1157 , LAST_UPDATE_DATE
1158 , LAST_UPDATED_BY
1159 , CREATION_DATE
1160 , CREATED_BY
1161 , LAST_UPDATE_LOGIN
1162 , HOLD_SOURCE_ID
1163 , HEADER_ID
1164 , LINE_ID
1165 , RELEASED_FLAG
1166 , ORG_ID
1167 )
1168 SELECT
1169 OE_ORDER_HOLDS_S.NEXTVAL
1170 , SYSDATE
1171 , :l_user_id
1172 , SYSDATE
1173 , :l_user_id
1174 , NULL
1175 , :hold_source_id
1176 , h.HEADER_ID
1177 , ol.line_id
1178 , ''N''
1179 , h.org_id
1180 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
1181 WHERE h.OPEN_FLAG = ''Y''
1182 and h.header_id = ol.header_id
1183 and h.org_id = :l_org_id
1184 and ol.OPEN_FLAG = ''Y''
1185 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
1186 and not exists ( select ''x''
1187 from oe_order_holds_ALL oh
1188 where oh.header_id = h.header_id
1189 and oh.line_id = ol.line_id
1190 and oh.hold_source_id =:hold_source_id )';
1191
1192 IF p_item_type is not null and p_activity_name is not null then
1193 l_sqlmt :=l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
1194 , wf_process_activities wpa
1195 where was.process_activity = wpa.instance_id
1196 and item_type = :p_item_type
1197 and item_key = to_char(ol.line_id)
1198 and activity_name = :l_activity_name
1199 and activity_status = :l_activity_status)';
1200 END IF;
1201
1202 IF p_additional_where_clause = 'PICK_TRUE' THEN
1203 l_sqlmt :=l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
1204 where w.source_line_id = ol.line_id and w.source_code = ''OE''
1205 and w.released_status in (''Y'', ''C''))';
1206 ELSIF p_additional_where_clause = 'PACK_TRUE' THEN
1207 l_sqlmt :=l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
1208 where wdd.source_line_id = ol.LINE_ID and wdd.source_code = ''OE''
1209 and wda.delivery_detail_id = wdd.delivery_detail_id
1210 and wda.parent_delivery_detail_id is not null)';
1211 END IF;
1212
1213 IF p_hold_entity_where_clause IS NOT NULL THEN
1214 l_sqlmt :=l_sqlmt||' '||p_hold_entity_where_clause;
1215 END IF;
1216
1217
1218 OE_DEBUG_PUB.ADD('Before Executing SQL:'||l_sqlmt);
1219 IF p_item_type is null AND p_activity_name is null THEN
1220
1221 EXECUTE IMMEDIATE
1222 l_sqlmt USING l_user_id,
1223 l_user_id,
1224 p_hold_source_id,
1225 p_org_id ,
1226 p_hold_source_id;
1227 OE_DEBUG_PUB.ADD('After Executing SQL for non-WF Hold');
1228 ELSE
1229
1230 EXECUTE IMMEDIATE
1231 l_sqlmt USING l_user_id,
1232 l_user_id,
1233 p_hold_source_id,
1234 p_org_id ,
1235 p_hold_source_id,
1236 'OEOL',
1237 p_activity_name,
1238 p_activity_status;
1239
1240
1241 l_sql_rowcount := sql%rowcount;
1242 IF l_sql_rowcount = 0 THEN
1243
1244 SELECT meaning
1245 INTO l_user_activity_name
1246 FROM oe_lookups
1247 WHERE lookup_type = DECODE(p_item_type,
1248 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
1249 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
1250 AND lookup_code = p_activity_name;
1251
1252 FND_MESSAGE.SET_NAME('ONT', 'OE_NO_HOLD_ALL_LINES');
1253 FND_MESSAGE.SET_TOKEN('WF_ACT',l_user_activity_name);
1254 OE_MSG_PUB.ADD;
1255 OE_DEBUG_PUB.ADD(' Hold Not applied for All requested records');
1256 RAISE FND_API.G_EXC_ERROR;
1257
1258 ELSIF l_sql_rowcount > 0 THEN
1259 l_wf_sqlmt := 'SELECT count(*)
1260 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
1261 WHERE h.OPEN_FLAG = ''Y''
1262 AND h.header_id = ol.header_id
1263 AND ol.OPEN_FLAG = ''Y''
1264 AND NVL(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
1265 AND NOT EXISTS ( SELECT ''x''
1266 FROM oe_order_holds_ALL oh
1267 WHERE oh.header_id = h.header_id
1268 AND oh.line_id = ol.line_id
1269 AND oh.hold_source_id = '||p_hold_source_id||' )';
1270
1271 IF p_hold_entity_where_clause IS NOT NULL THEN
1272 l_wf_sqlmt :=l_wf_sqlmt||' '||p_hold_entity_where_clause;
1273 END IF;
1274
1275 EXECUTE IMMEDIATE l_wf_sqlmt INTO l_parent_count;
1276
1277 OE_DEBUG_PUB.ADD('l_parent_count/sql_count'||l_parent_count||sql%rowcount);
1278 /* Note: The above query is used based on WHERE clause of thel_sqlmt but without any query on Workflow or Shipping product tables. */
1279
1280 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
1281
1282 SELECT meaning
1283 INTO l_user_activity_name
1284 FROM oe_lookups
1285 WHERE lookup_type = DECODE(p_item_type,
1286 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
1287 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
1288 AND lookup_code = p_activity_name;
1289
1290 FND_MESSAGE.SET_NAME('ONT', 'OE_NO_HOLD_FEW_LINES');
1291 FND_MESSAGE.SET_TOKEN('WF_ACT',l_user_activity_name);
1292 OE_MSG_PUB.ADD;
1293 OE_DEBUG_PUB.ADD(' Hold Not applied for FEW of the requested records');
1294 END IF;
1295 END IF;
1296 END IF;
1297 END IF;
1298
1299 OE_DEBUG_PUB.ADD('Exiting InsertTable_OOH_Line Successfully');
1300 EXCEPTION
1301 WHEN OTHERS THEN
1302 OE_DEBUG_PUB.ADD('Exiting InsertTable_OOH_Line with Error:'||SQLCODE);
1303 END InsertTable_OOH_Line;
1304 --ER#7479609 end
1305
1306 --ER#7479609 start
1307 ---------------------------------------------------------------------------------------------------
1308 -- PROCEDURE : PaymentType_Hold
1309 -- DESCRIPTION : This is a Local Procedure used to insert record into the OE_ORDER_HOLDS_ALL table
1310 -- for header level holds
1311
1312 -- Caller : Create_Order_Holds Procedure
1313 -- PARAMETERS:
1314 -- p_hold_source_id : Hold Source Id of the hold
1315 -- p_header_id : Line Id if the hold is applied using action -> apply hold for a specific Hold
1316 ---------------------------------------------------------------------------------------------------
1317 Procedure PaymentType_Hold (p_hold_source_rec OE_HOLDS_PVT.Hold_source_Rec_Type
1318 ,p_org_id OE_ORDER_HEADERS_ALL.org_id%type
1319 ,p_item_type VARCHAR2
1320 ,p_activity_name VARCHAR2
1321 ,p_activity_status VARCHAR2
1322 ,p_additional_where_clause VARCHAR2
1323 ,x_is_hold_applied OUT NOCOPY BOOLEAN)
1324 IS
1325
1326 l_payment_count NUMBER := 0;
1327 l_sqlmt VARCHAR2(3000);
1328 l_sqlmt1 VARCHAR2(3000);
1329
1330 TYPE eligible_record_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
1331 l_eligible_record_tab eligible_record_tab;
1332
1333 BEGIN
1334
1335 OE_DEBUG_PUB.ADD('Entering PaymentType_Hold');
1336
1337 OE_DEBUG_PUB.ADD('Header_id :'||p_hold_source_rec.header_id);
1338 OE_DEBUG_PUB.ADD('Line_id :'||p_hold_source_rec.line_id);
1339
1340 IF p_item_type = 'OEOL' or p_item_type IS NULL THEN
1341 oe_debug_pub.add('Line Level Processing Starts');
1342 l_eligible_record_tab.delete;
1343
1344 IF p_hold_source_rec.hold_entity_code = 'P' and p_hold_source_rec.hold_entity_code2 IS NULL THEN
1345
1346 l_sqlmt := 'Select line_id
1347 FROM OE_PAYMENTS OP
1348 WHERE line_id IS NOT NULL
1349 AND PAYMENT_TYPE_CODE =:hold_entity_id';
1350
1351
1352 IF (p_hold_source_rec.header_id IS NOT NULL AND p_hold_source_rec.line_id IS NOT NULL)
1353 OR (p_hold_source_rec.header_id IS NULL AND p_hold_source_rec.line_id IS NOT NULL) THEN
1354
1355 l_sqlmt := l_sqlmt||' AND OP.line_id = '||p_hold_source_rec.line_id;
1356
1357 EXECUTE IMMEDIATE l_sqlmt
1358 BULK COLLECT INTO l_eligible_record_tab
1359 USING p_hold_source_rec.hold_entity_id;
1360
1361 ELSIF (p_hold_source_rec.header_id IS NULL AND p_hold_source_rec.line_id IS NULL) THEN
1362
1363 EXECUTE IMMEDIATE l_sqlmt
1364 BULK COLLECT INTO l_eligible_record_tab
1365 USING p_hold_source_rec.hold_entity_id;
1366
1367 END IF;
1368
1369
1370
1371 ELSIF p_hold_source_rec.hold_entity_code = 'C' and p_hold_source_rec.hold_entity_code2 ='P' THEN
1372
1373 l_sqlmt := 'Select OP.line_id
1374 FROM OE_PAYMENTS OP,OE_ORDER_LINES_ALL OL
1375 WHERE OP.line_id IS NOT NULL
1376 AND OP.line_id= OL.line_id
1377 AND OL.sold_to_org_id= :hold_entity_id
1378 AND OP.PAYMENT_TYPE_CODE = :hold_entity_id2';
1379
1380 IF (p_hold_source_rec.header_id IS NOT NULL AND p_hold_source_rec.line_id IS NOT NULL)
1381 OR (p_hold_source_rec.header_id IS NULL AND p_hold_source_rec.line_id IS NOT NULL) THEN
1382 l_sqlmt := l_sqlmt||' AND OP.line_id = '||p_hold_source_rec.line_id;
1383
1384 EXECUTE IMMEDIATE l_sqlmt
1385 BULK COLLECT INTO l_eligible_record_tab
1386 USING p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id2;
1387
1388 ELSIF (p_hold_source_rec.header_id IS NULL AND p_hold_source_rec.line_id IS NULL) THEN
1389
1390 EXECUTE IMMEDIATE l_sqlmt
1391 BULK COLLECT INTO l_eligible_record_tab
1392 USING p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id2;
1393
1394 END IF;
1395
1396 END IF;
1397
1398
1399 FOR i in 1 .. l_eligible_record_tab.count LOOP
1400
1401 oe_debug_pub.add('Calling InsertTable_OOH_Line for P for line_id:'||l_eligible_record_tab(i));
1402 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
1403 ,p_line_id => l_eligible_record_tab(i)
1404 ,p_org_id => p_org_id
1405 ,p_hold_entity_where_clause => NULL
1406 ,p_item_type => p_item_type
1407 ,p_activity_name => p_activity_name
1408 ,p_activity_status => p_activity_status
1409 ,p_additional_where_clause => p_additional_where_clause
1410 ,x_is_hold_applied => x_is_hold_applied);
1411 oe_debug_pub.add('After Calling InsertTable_OOH_Line for P');
1412
1413 END LOOP;
1414 END IF;
1415
1416 IF p_item_type = 'OEOH' or p_item_type IS NULL THEN
1417 oe_debug_pub.add('Header Level Processing Starts');
1418
1419 l_eligible_record_tab.delete;
1420
1421 IF p_hold_source_rec.hold_entity_code = 'P' and p_hold_source_rec.hold_entity_code2 IS NULL THEN
1422
1423 l_sqlmt := 'Select header_id
1424 FROM OE_PAYMENTS OP
1425 WHERE line_id IS NULL
1426 AND PAYMENT_TYPE_CODE = :hold_entity_id';
1427
1428 IF p_hold_source_rec.header_id IS NOT NULL and p_hold_source_rec.line_id IS NULL THEN
1429 l_sqlmt := l_sqlmt||' AND OP.header_id = '||p_hold_source_rec.header_id;
1430
1431 l_sqlmt1 := ' UNION Select header_id
1432 FROM OE_ORDER_HEADERS_ALL OH
1433 WHERE PAYMENT_TYPE_CODE = :hold_entity_id
1434 AND header_id = :header_id';
1435
1436 l_sqlmt := l_sqlmt||l_sqlmt1;
1437
1438 EXECUTE IMMEDIATE l_sqlmt
1439 BULK COLLECT INTO l_eligible_record_tab
1440 USING p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id,p_hold_source_rec.header_id;
1441
1442 ELSIF (p_hold_source_rec.header_id IS NULL AND p_hold_source_rec.line_id IS NULL) THEN
1443
1444 l_sqlmt1 := ' UNION Select header_id
1445 FROM OE_ORDER_HEADERS_ALL OH
1446 WHERE PAYMENT_TYPE_CODE = :hold_entity_id';
1447
1448 l_sqlmt := l_sqlmt||l_sqlmt1;
1449
1450 EXECUTE IMMEDIATE l_sqlmt
1451 BULK COLLECT INTO l_eligible_record_tab
1452 USING p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id;
1453
1454 END IF;
1455
1456 ELSIF p_hold_source_rec.hold_entity_code = 'C' and p_hold_source_rec.hold_entity_code2 ='P' THEN
1457
1458 l_sqlmt := 'Select OP.header_id
1459 FROM OE_PAYMENTS OP,OE_ORDER_HEADERS_ALL OH
1460 WHERE OP.line_id IS NULL
1461 AND OP.header_id= OH.header_id
1462 AND OH.sold_to_org_id= :hold_entity_id
1463 AND OP.PAYMENT_TYPE_CODE = :hold_entity_id2';
1464
1465 IF p_hold_source_rec.header_id IS NOT NULL and p_hold_source_rec.line_id IS NULL THEN
1466 l_sqlmt := l_sqlmt||' AND OP.header_id = '||p_hold_source_rec.header_id;
1467
1468 l_sqlmt1 := ' UNION Select header_id
1469 FROM OE_ORDER_HEADERS_ALL OH
1470 WHERE sold_to_org_id= :hold_entity_id
1471 AND PAYMENT_TYPE_CODE = :hold_entity_id2
1472 AND header_id = :header_id';
1473
1474 l_sqlmt := l_sqlmt||l_sqlmt1;
1475 EXECUTE IMMEDIATE l_sqlmt
1476 BULK COLLECT INTO l_eligible_record_tab
1477 USING p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id2,
1478 p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id2,
1479 p_hold_source_rec.header_id;
1480
1481 ELSIF (p_hold_source_rec.header_id IS NULL AND p_hold_source_rec.line_id IS NULL) THEN
1482
1483 l_sqlmt1 := ' UNION Select header_id
1484 FROM OE_ORDER_HEADERS_ALL OH
1485 WHERE sold_to_org_id= :hold_entity_id
1486 AND PAYMENT_TYPE_CODE = :hold_entity_id2';
1487
1488 l_sqlmt := l_sqlmt||l_sqlmt1;
1489
1490 EXECUTE IMMEDIATE l_sqlmt
1491 BULK COLLECT INTO l_eligible_record_tab
1492 USING p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id2,
1493 p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_entity_id2;
1494
1495 END IF;
1496
1497
1498 END IF;
1499
1500
1501 FOR i in 1 .. l_eligible_record_tab.count LOOP
1502
1503 oe_debug_pub.add('Calling InsertTable_OOH_Header for P for header_id:'||l_eligible_record_tab(i));
1504 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
1505 ,p_header_id =>l_eligible_record_tab(i)
1506 ,p_org_id => p_org_id
1507 ,p_hold_entity_where_clause => NULL
1508 ,p_item_type => p_item_type
1509 ,p_activity_name => p_activity_name
1510 ,p_activity_status => p_activity_status
1511 ,p_additional_where_clause => p_additional_where_clause
1512 ,x_is_hold_applied => x_is_hold_applied);
1513
1514 oe_debug_pub.add('After Calling InsertTable_OOH_Header for P');
1515
1516 END LOOP;
1517 END IF;
1518
1519
1520
1521 oe_debug_pub.add('Exiting PaymentType_Hold Successfully');
1522
1523 EXCEPTION
1524 WHEN OTHERS THEN
1525 OE_DEBUG_PUB.ADD('Exiting PaymentType_Hold with Error:'||SQLCODE);
1526 END PaymentType_Hold;
1527 --ER#7479609 end
1528
1529
1530 /****************************
1531 | RELEASE_ORDERS
1532 ***************************/
1533 Procedure release_orders (
1534 p_hold_release_rec IN OE_HOLDS_PVT.hold_release_rec_type,
1535 p_order_rec IN OE_HOLDS_PVT.order_rec_type,
1536 p_hold_source_rec IN OE_HOLDS_PVT.Hold_source_Rec_Type,
1537 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
1538 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
1539 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1540 )
1541 IS
1542
1543 CURSOR hold_source IS
1544 SELECT HS.HOLD_SOURCE_ID,
1545 HS.HOLD_ENTITY_CODE,
1546 hs.hold_id,
1547 oh.order_hold_id
1548 FROM OE_HOLD_SOURCES HS,
1549 OE_ORDER_HOLDS oh
1550 WHERE HS.HOLD_ID = nvl(p_hold_source_rec.hold_id, HS.HOLD_ID)
1551 and hs.hold_entity_code = nvl(p_hold_source_rec.hold_entity_code, hs.hold_entity_code)
1552 and hs.hold_entity_id = nvl(p_hold_source_rec.hold_entity_id, hs.hold_entity_id)
1553 and hs.HOLD_SOURCE_ID = oh.HOLD_SOURCE_ID
1554 and oh.HEADER_ID = p_order_rec.header_id
1555 and nvl(oh.LINE_ID, -99 ) = nvl(p_order_rec.line_id, -99)
1556 AND OH.RELEASED_FLAG = 'N';
1557
1558 -- GENESIS --
1559 CURSOR check_hold_type_cur(p_ord_hld_id IN NUMBER) IS
1560 SELECT 'Y'
1561 FROM DUAL
1562 WHERE EXISTS (SELECT NULL
1563 FROM oe_order_holds ooh,
1564 oe_hold_sources ohs,
1565 oe_hold_definitions ohd,
1566 oe_order_headers_all h,
1567 oe_order_sources oos
1568 WHERE ooh.header_id = h.header_id
1569 -- AND ohd.activity_name IS NULL Bug 6791587
1570 AND oos.aia_enabled_flag = 'Y'
1571 AND ohd.hold_id = ohs.hold_id
1572 AND ohs.hold_source_id = ooh.hold_source_id
1573 AND ooh.order_hold_id = p_ord_hld_id);
1574
1575 l_chk_hold VARCHAR2(1) := 'N';
1576 -- GENESIS --
1577
1578 l_user_id NUMBER;
1579 x_hold_release_id oe_hold_releases.HOLD_RELEASE_ID%type;
1580 l_hold_source_id OE_HOLD_SOURCES.HOLD_SOURCE_ID%TYPE;
1581 x_hold_source_id OE_HOLD_SOURCES.HOLD_SOURCE_ID%TYPE;
1582 l_hold_entity_code OE_HOLD_SOURCES.HOLD_ENTITY_CODE%TYPE;
1583 l_order_hold_id OE_ORDER_HOLDS.ORDER_HOLD_ID%TYPE;
1584 l_hold_id OE_HOLD_DEFINITIONS.hold_id%type;
1585
1586 l_hold_source_rec OE_HOLDS_PVT.hold_source_rec_type;
1587 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1588 BEGIN
1589 x_return_status := FND_API.G_RET_STS_SUCCESS;
1590 l_user_id := OE_HOLDS_PVT.get_user_id;
1591 -- XX Also check for release reason code
1592 OPEN hold_source;
1593 LOOP
1594
1595 FETCH hold_source INTO l_hold_source_id,
1596 l_hold_entity_code,
1597 l_hold_id,
1598 l_order_hold_id;
1599 exit when hold_source%NOTFOUND;
1600 -- If the Order was created as an Order Based Hold.
1601 OE_Debug_PUB.Add('Rleaseing Hold' || l_hold_id);
1602 if l_hold_entity_code = 'O' THEN
1603 --x_hold_source_id := l_hold_source_id;
1604 OE_Debug_PUB.Add('Rlsing Source for:'||to_char(p_order_rec.header_id),1);
1605 l_hold_source_rec.hold_source_id := l_hold_source_id;
1606 l_hold_source_rec.HOLD_ENTITY_CODE := 'O';
1607 l_hold_source_rec.HOLD_ENTITY_ID := p_order_rec.header_id;
1608 l_hold_source_rec.HOLD_ID := l_hold_id;
1609 oe_holds_pvt.Release_Hold_Source (
1610 p_hold_source_rec => l_hold_source_rec,
1611 p_hold_release_rec => p_hold_release_rec,
1612 x_return_status => x_return_status,
1613 x_msg_count => x_msg_count,
1614 x_msg_data => x_msg_data );
1615
1616 ELSE
1617 -- Releasing only orders from hold. Insert a record in the
1618 -- OE_HOLD_RELEASES with hold_source_id as null.
1619 OE_Debug_PUB.Add('Releasing Orders from Hold',1);
1620 --x_hold_source_id := '';
1621
1622 SELECT OE_HOLD_RELEASES_S.NEXTVAL
1623 INTO x_hold_release_id
1624 FROM DUAL;
1625 /*Bug3042838 Added nvl condition for insertion into CREATED_BY column */
1626 INSERT INTO OE_HOLD_RELEASES
1627 ( HOLD_RELEASE_ID
1628 , CREATION_DATE
1629 , CREATED_BY
1630 , LAST_UPDATE_DATE
1631 , LAST_UPDATED_BY
1632 , LAST_UPDATE_LOGIN
1633 , PROGRAM_APPLICATION_ID
1634 , PROGRAM_ID
1635 , PROGRAM_UPDATE_DATE
1636 , REQUEST_ID
1637 , HOLD_SOURCE_ID
1638 , RELEASE_REASON_CODE
1639 , RELEASE_COMMENT
1640 , CONTEXT
1641 , ATTRIBUTE1
1642 , ATTRIBUTE2
1643 , ATTRIBUTE3
1644 , ATTRIBUTE4
1645 , ATTRIBUTE5
1646 , ATTRIBUTE6
1647 , ATTRIBUTE7
1648 , ATTRIBUTE8
1649 , ATTRIBUTE9
1650 , ATTRIBUTE10
1651 , ATTRIBUTE11
1652 , ATTRIBUTE12
1653 , ATTRIBUTE13
1654 , ATTRIBUTE14
1655 , ATTRIBUTE15
1656 , ORDER_HOLD_ID
1657 )
1658 VALUES
1659 ( x_hold_release_id
1660 , sysdate
1661 , nvl(p_hold_release_rec.CREATED_BY,l_user_id)
1662 , sysdate
1663 , l_user_id
1664 , p_hold_release_rec.LAST_UPDATE_LOGIN
1665 , p_hold_release_rec.PROGRAM_APPLICATION_ID
1666 , p_hold_release_rec.PROGRAM_ID
1667 , p_hold_release_rec.PROGRAM_UPDATE_DATE
1668 , p_hold_release_rec.REQUEST_ID
1669 , NULL -- HOLD_SOURCE_ID
1670 , p_hold_release_rec.RELEASE_REASON_CODE
1671 , p_hold_release_rec.RELEASE_COMMENT
1672 , p_hold_release_rec.CONTEXT
1673 , p_hold_release_rec.ATTRIBUTE1
1674 , p_hold_release_rec.ATTRIBUTE2
1675 , p_hold_release_rec.ATTRIBUTE3
1676 , p_hold_release_rec.ATTRIBUTE4
1677 , p_hold_release_rec.ATTRIBUTE5
1678 , p_hold_release_rec.ATTRIBUTE6
1679 , p_hold_release_rec.ATTRIBUTE7
1680 , p_hold_release_rec.ATTRIBUTE8
1681 , p_hold_release_rec.ATTRIBUTE9
1682 , p_hold_release_rec.ATTRIBUTE10
1683 , p_hold_release_rec.ATTRIBUTE11
1684 , p_hold_release_rec.ATTRIBUTE12
1685 , p_hold_release_rec.ATTRIBUTE13
1686 , p_hold_release_rec.ATTRIBUTE14
1687 , p_hold_release_rec.ATTRIBUTE15
1688 , l_order_hold_id
1689 );
1690
1691 --dbms_output.put_line('RlsID:'||to_char(p_hold_release_rec.hold_release_id));
1692 UPDATE oe_order_holds
1693 SET hold_release_id = x_hold_release_id,
1694 LAST_UPDATED_BY = l_user_id,
1695 LAST_UPDATE_DATE = sysdate,
1696 RELEASED_FLAG = 'Y'
1697 WHERE ORDER_HOLD_ID = l_order_hold_id;
1698
1699 END IF;
1700 -- XX Also check to see if its the last order from a non order based
1701 -- hold and release the hold source also. NO
1702
1703 -- GENESIS --
1704 IF l_debug_level > 0 THEN
1705 oe_debug_pub.add( 'OE_HOLDS_PVT - RELEASE ORDERS- BEFORE GENESIS CALL');
1706 END IF;
1707
1708 OPEN check_hold_type_cur(l_order_hold_id);
1709 FETCH check_hold_type_cur INTO l_chk_hold;
1710 CLOSE check_hold_type_cur;
1711
1712 IF NVL(l_chk_hold, 'N') = 'Y' THEN
1713 IF l_debug_level > 0 THEN
1714 oe_debug_pub.add( 'OE_HOLDS_PVT - RELEASE ORDERS- BEFORE SYNC_HEADER_LINE');
1715 END IF;
1716 -- XXXX Do we need to generate req_id here
1717 OE_SYNC_ORDER_PVT.SYNC_HEADER_LINE( p_header_rec => NULL
1718 ,p_line_rec => NULL
1719 ,p_hold_source_id => NULL
1720 ,p_order_hold_id => l_order_hold_id
1721 ,p_change_type => 'RELEASE');
1722 END IF;
1723 -- GENESIS --
1724
1725 END LOOP;
1726 CLOSE hold_source;
1727
1728 END release_orders;
1729
1730
1731
1732 Procedure Validate_Hold_Source (
1733 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type
1734 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1735 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
1736 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1737 )
1738 IS
1739 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Hold_source';
1740 l_dummy VARCHAR2(30);
1741
1742 l_hold_id NUMBER := p_hold_source_rec.hold_id;
1743 l_item_type VARCHAR2(8);
1744 l_apply_to_flag VARCHAR2(1);
1745
1746 cursor hold_info
1747 is
1748 select
1749 item_type
1750 , nvl(apply_to_order_and_line_flag, 'N')
1751 from oe_hold_definitions
1752 where hold_id = l_hold_id;
1753
1754 BEGIN
1755 OE_Debug_PUB.Add('In OE_holds_PUB.Validate_Hold_source',1);
1756 -- Initialize API return status to success
1757 x_return_status := FND_API.G_RET_STS_SUCCESS;
1758
1759 --XXX Check the Entity Combination
1760 /*
1761 > Item - Customer
1762 > Item - Customer Ship to Site
1763 > Item - Customer Bill to Site
1764 > Item - Warehouse
1765 > Warehouse - Customer
1766 > Warehouse - Customer Ship to Site
1767 > Warehouse - Customer Bill to Site
1768 > Bill To Site - Order (Used by Line level Credit Checking only)
1769
1770 > Item - Blanket Number
1771 > Blanket Number
1772 > Blanket Number - Customer
1773 > Blanket Number - Customer Ship to Site
1774 > Blanket Number - Customer Bill to Site
1775 > Blanket Number - Warehouse
1776 > Blanket Number - Blanket Line Number
1777 */
1778 OE_Debug_PUB.Add('Entity Combination:' || p_hold_source_rec.hold_entity_code
1779 || '/' || p_hold_source_rec.hold_entity_code2,1);
1780
1781 /* ER # 2662206 Start */
1782 IF p_hold_source_rec.hold_entity_code IS NOT NULL THEN
1783 OPEN hold_info;
1784 FETCH hold_info into l_item_type, l_apply_to_flag;
1785 CLOSE hold_info;
1786
1787 /*ER#7479609
1788 IF l_item_type = 'OEOH' THEN
1789 IF p_hold_source_rec.hold_entity_code IN ('B','H','I','W','S','L') OR
1790 (p_hold_source_rec.hold_entity_code = 'O' AND
1791 p_hold_source_rec.line_id IS NOT NULL) OR
1792 p_hold_source_rec.hold_entity_code2 IS NOT NULL THEN
1793 oe_debug_pub.add('Error: Order WF Hold, being applied at Line Level');
1794 FND_MESSAGE.SET_NAME('ONT','OE_ORDER_HOLD_INVALID_CRITERIA');
1795 OE_MSG_PUB.ADD;
1796 RAISE FND_API.G_EXC_ERROR;
1797 END IF;
1798 ELSIF l_item_type = 'OEOL' THEN
1799 IF p_hold_source_rec.hold_entity_code IN ('C','O') AND
1800 p_hold_source_rec.line_id IS NULL AND
1801 l_apply_to_flag = 'N' THEN
1802 oe_debug_pub.add('Error: Line WF Hold, being applied at Order Level');
1803 FND_MESSAGE.SET_NAME('ONT','OE_LINE_HOLD_INVALID_CRITERIA');
1804 OE_MSG_PUB.ADD;
1805 RAISE FND_API.G_EXC_ERROR;
1806 END IF;
1807 END IF;
1808 ER#7479609*/
1809
1810 --ER#7479609 start
1811 IF (p_hold_source_rec.hold_entity_code = 'O' and p_hold_source_rec.line_id IS NULL) OR
1812 (p_hold_source_rec.hold_entity_code = 'C' and
1813 (p_hold_source_rec.hold_entity_code2 IS NULL OR
1814 p_hold_source_rec.hold_entity_code2 = 'OT' OR
1815 p_hold_source_rec.hold_entity_code2 = 'P' OR
1816 p_hold_source_rec.hold_entity_code2 = 'TC' OR
1817 p_hold_source_rec.hold_entity_code2 = 'SC')) OR
1818 (p_hold_source_rec.hold_entity_code = 'PL' and
1819 (p_hold_source_rec.hold_entity_code2 IS NULL OR
1820 p_hold_source_rec.hold_entity_code2 = 'TC')) OR
1821 (p_hold_source_rec.hold_entity_code = 'OT' and
1822 (p_hold_source_rec.hold_entity_code2 IS NULL OR
1823 p_hold_source_rec.hold_entity_code2 = 'TC')) OR
1824 (p_hold_source_rec.hold_entity_code = 'SC' and p_hold_source_rec.hold_entity_code2 IS NULL) --ER#7479609 OR
1825 --ER#7479609 (p_hold_source_rec.hold_entity_code = 'P' and p_hold_source_rec.hold_entity_code2 IS NULL)
1826 THEN
1827 IF l_item_type = 'OEOH' THEN
1828 NULL;
1829 oe_debug_pub.add('Order WF HOLD');
1830 ELSIF l_item_type = 'OEOL' AND l_apply_to_flag = 'N' THEN
1831 oe_debug_pub.add('Error: Line WF Hold, being applied at Order Level');
1832 FND_MESSAGE.SET_NAME('ONT','OE_LINE_HOLD_INVALID_CRITERIA');
1833 OE_MSG_PUB.ADD;
1834 RAISE FND_API.G_EXC_ERROR;
1835 END IF;
1836 ELSE
1837 IF (p_hold_source_rec.hold_entity_code = 'P' and p_hold_source_rec.hold_entity_code2 IS NULL) THEN
1838 NULL;
1839 ELSE
1840 IF l_item_type = 'OEOL' AND l_apply_to_flag = 'N' THEN
1841 NULL;
1842 oe_debug_pub.add('Line WF HOLD');
1843 ELSIF l_item_type = 'OEOH' THEN
1844 oe_debug_pub.add('Error: Order WF Hold, being applied at Line Level');
1845 FND_MESSAGE.SET_NAME('ONT','OE_ORDER_HOLD_INVALID_CRITERIA');
1846 OE_MSG_PUB.ADD;
1847 RAISE FND_API.G_EXC_ERROR;
1848 END IF;
1849 END IF;
1850 END IF;
1851 --ER#7479609 end
1852
1853
1854 END IF;
1855 /* ER # 2662206 End */
1856
1857 if (p_hold_source_rec.hold_entity_code2 is not null) then
1858 if p_hold_source_rec.hold_entity_code = 'I' then
1859 --ER#7479609 if p_hold_source_rec.hold_entity_code2 not in ('C', 'S', 'B', 'W','H') then
1860 if p_hold_source_rec.hold_entity_code2 not in ('C', 'S', 'B', 'W','H','SM','D','PL','PR','ST','LT') then --ER#7479609
1861 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1862 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1863 OE_MSG_PUB.ADD;
1864 RAISE FND_API.G_EXC_ERROR;
1865 end if;
1866 elsif p_hold_source_rec.hold_entity_code = 'W' then
1867 --ER#7479609 if p_hold_source_rec.hold_entity_code2 not in ('C', 'S', 'B') then
1868 if p_hold_source_rec.hold_entity_code2 not in ('C', 'S', 'B','LT','SM','D','ST') then --ER#7479609
1869 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1870 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1871 OE_MSG_PUB.ADD;
1872 RAISE FND_API.G_EXC_ERROR;
1873 end if;
1874 elsif p_hold_source_rec.hold_entity_code = 'B' then
1875 if p_hold_source_rec.hold_entity_code2 not in ('O') then
1876 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1877 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1878 OE_MSG_PUB.ADD;
1879 RAISE FND_API.G_EXC_ERROR;
1880 end if;
1881 elsif p_hold_source_rec.hold_entity_code = 'H' then
1882 --ER#7479609 if p_hold_source_rec.hold_entity_code2 not in ('S', 'B', 'W', 'L') then
1883 if p_hold_source_rec.hold_entity_code2 not in ('S', 'B', 'W', 'L','PL','PT','SM','D','LT') then --ER#7479609
1884 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1885 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1886 OE_MSG_PUB.ADD;
1887 RAISE FND_API.G_EXC_ERROR;
1888 end if;
1889 --ER#7479609 start
1890 elsif p_hold_source_rec.hold_entity_code = 'TM' then
1891 if p_hold_source_rec.hold_entity_code2 not in ('OI') then
1892 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1893 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1894 OE_MSG_PUB.ADD;
1895 RAISE FND_API.G_EXC_ERROR;
1896 end if;
1897 elsif p_hold_source_rec.hold_entity_code = 'PR' then
1898 if p_hold_source_rec.hold_entity_code2 not in ('T') then
1899 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1900 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1901 OE_MSG_PUB.ADD;
1902 RAISE FND_API.G_EXC_ERROR;
1903 end if;
1904 elsif p_hold_source_rec.hold_entity_code = 'C' then
1905 if p_hold_source_rec.hold_entity_code2 not in ('ST','B','S','D','PL','LT','PT','OT','P','TC','SC') then
1906 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1907 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1908 OE_MSG_PUB.ADD;
1909 RAISE FND_API.G_EXC_ERROR;
1910 end if;
1911 elsif p_hold_source_rec.hold_entity_code = 'PL' then
1912 if p_hold_source_rec.hold_entity_code2 not in ('TC') then
1913 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1914 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1915 OE_MSG_PUB.ADD;
1916 RAISE FND_API.G_EXC_ERROR;
1917 end if;
1918 elsif p_hold_source_rec.hold_entity_code = 'OT' then
1919 if p_hold_source_rec.hold_entity_code2 not in ('LT','TC') then
1920 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1921 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1922 OE_MSG_PUB.ADD;
1923 RAISE FND_API.G_EXC_ERROR;
1924 end if;
1925 elsif p_hold_source_rec.hold_entity_code = 'CD' then
1926 if p_hold_source_rec.hold_entity_code2 not in ('CB') then
1927 OE_Debug_PUB.Add('Invalid Entity Combination',1);
1928 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ENTITY_CONBINATION');
1929 OE_MSG_PUB.ADD;
1930 RAISE FND_API.G_EXC_ERROR;
1931 end if;
1932 --ER#7479609 end
1933 else
1934 null;
1935 end if;
1936 end if;
1937
1938 OE_Debug_PUB.Add('Entity ID Combination->' ||
1939 to_char(p_hold_source_rec.hold_entity_id) || '/' ||
1940 to_char(p_hold_source_rec.hold_entity_id2),1);
1941 IF p_hold_source_rec.hold_entity_code = 'O' THEN
1942
1943 SELECT 'Valid Entity'
1944 INTO l_dummy
1945 FROM OE_ORDER_HEADERS
1946 WHERE HEADER_ID = p_hold_source_rec.hold_entity_id
1947 -- QUOTING change
1948 AND nvl(TRANSACTION_PHASE_CODE,'F') = 'F';
1949
1950
1951 ELSIF p_hold_source_rec.hold_entity_code = 'C' THEN
1952 SELECT 'Valid Entity'
1953 INTO l_dummy
1954 FROM oe_sold_to_orgs_v
1955 WHERE ORGANIZATION_ID = p_hold_source_rec.hold_entity_id;
1956
1957 /* Following cursor has been changed to use direct TCA tables -Bug 1874065*/
1958 /*
1959 ELSIF p_hold_source_rec.hold_entity_code = 'S' THEN
1960 SELECT 'Valid Entity'
1961 INTO l_dummy
1962 FROM RA_SITE_USES
1963 WHERE site_use_id = p_hold_source_rec.hold_entity_id
1964 AND site_use_code = 'SHIP_TO'
1965 AND STATUS='A';*/
1966
1967 ELSIF p_hold_source_rec.hold_entity_code = 'S' THEN
1968 SELECT 'Valid Entity'
1969 INTO l_dummy
1970 FROM hz_cust_site_uses -- Bug 2138398
1971 WHERE site_use_id = p_hold_source_rec.hold_entity_id
1972 AND site_use_code = 'SHIP_TO'
1973 AND STATUS='A';
1974
1975 /* Following cursor has been changed to use direct TCA tables -Bug 1874065*/
1976 /* ELSIF p_hold_source_rec.hold_entity_code = 'B' THEN
1977 SELECT 'Valid Entity'
1978 INTO l_dummy
1979 FROM RA_SITE_USES
1980 WHERE site_use_id = p_hold_source_rec.hold_entity_id
1981 AND site_use_code = 'BILL_TO'
1982 AND STATUS='A';*/
1983
1984 ELSIF p_hold_source_rec.hold_entity_code = 'B' THEN
1985 SELECT 'Valid Entity'
1986 INTO l_dummy
1987 FROM hz_cust_site_uses -- Bug 2138398
1988 WHERE site_use_id = p_hold_source_rec.hold_entity_id
1989 AND site_use_code = 'BILL_TO'
1990 AND STATUS='A';
1991 --ER#7479609 start
1992 ELSIF p_hold_source_rec.hold_entity_code = 'D' THEN
1993 SELECT 'Valid Entity'
1994 INTO l_dummy
1995 FROM hz_cust_site_uses
1996 WHERE site_use_id = p_hold_source_rec.hold_entity_id
1997 AND site_use_code = 'DELIVER_TO'
1998 AND STATUS='A';
1999 --ER#7479609 end
2000 ELSIF p_hold_source_rec.hold_entity_code = 'I' THEN
2001 SELECT 'Valid Entity'
2002 INTO l_dummy
2003 from mtl_system_items_kfv
2004 where inventory_item_id = p_hold_source_rec.hold_entity_id;
2005 ELSIF p_hold_source_rec.hold_entity_code = 'W' THEN
2006 SELECT 'Valid Entity'
2007 INTO l_dummy
2008 from oe_ship_from_orgs_v
2009 where ORGANIZATION_id = p_hold_source_rec.hold_entity_id;
2010 ELSIF p_hold_source_rec.hold_entity_code = 'H' THEN
2011 SELECT 'Valid Entity'
2012 INTO l_dummy
2013 FROM oe_blanket_headers
2014 WHERE ORDER_NUMBER = p_hold_source_rec.hold_entity_id
2015 AND SALES_DOCUMENT_TYPE_CODE = 'B';
2016 --ER#7479609 start
2017 ELSIF p_hold_source_rec.hold_entity_code = 'TM' THEN
2018 SELECT 'Valid Entity'
2019 INTO l_dummy
2020 from mtl_system_items_kfv
2021 where inventory_item_id = p_hold_source_rec.hold_entity_id;
2022 ELSIF p_hold_source_rec.hold_entity_code = 'PR' THEN
2023 SELECT 'Valid Entity'
2024 INTO l_dummy
2025 FROM PJM_PROJECTS_ORG_OU_SECURE_V
2026 WHERE PROJECT_ID = p_hold_source_rec.hold_entity_id;
2027 ELSIF p_hold_source_rec.hold_entity_code = 'PL' THEN
2028 SELECT 'Valid Entity'
2029 INTO l_dummy
2030 FROM qp_list_headers_vl
2031 WHERE list_header_id = p_hold_source_rec.hold_entity_id;
2032 ELSIF p_hold_source_rec.hold_entity_code = 'OT' THEN
2033 SELECT 'Valid Entity'
2034 INTO l_dummy
2035 FROM oe_transaction_types
2036 WHERE transaction_type_id = p_hold_source_rec.hold_entity_id;
2037 ELSIF p_hold_source_rec.hold_entity_code = 'P' THEN
2038 SELECT 'Valid Entity'
2039 INTO l_dummy
2040 FROM oe_payment_types_vl
2041 WHERE payment_type_code = p_hold_source_rec.hold_entity_id;
2042 ELSIF p_hold_source_rec.hold_entity_code = 'CD' THEN
2043 NULL;
2044 ELSIF p_hold_source_rec.hold_entity_code = 'SC' THEN
2045 SELECT 'Valid Entity'
2046 INTO l_dummy
2047 FROM oe_lookups
2048 WHERE lookup_code = p_hold_source_rec.hold_entity_id
2049 AND lookup_type = 'SALES_CHANNEL';
2050 ELSIF p_hold_source_rec.hold_entity_code = 'PT' THEN
2051 SELECT 'Valid Entity'
2052 INTO l_dummy
2053 FROM oe_payment_types_vl
2054 WHERE payment_type_code = p_hold_source_rec.hold_entity_id;
2055 ELSIF p_hold_source_rec.hold_entity_code = 'SM' THEN
2056 SELECT 'Valid Entity'
2057 INTO l_dummy
2058 FROM oe_ship_methods_v
2059 WHERE lookup_code= p_hold_source_rec.hold_entity_id
2060 AND lookup_type = 'SHIP_METHOD';
2061 --ER#7479609 end
2062 ELSE
2063 OE_Debug_PUB.Add('Invalid Entity Code');
2064 FND_MESSAGE.SET_NAME('ONT', 'OE_MISSING_ENTITY_CODE');
2065 OE_MSG_PUB.ADD;
2066 RAISE FND_API.G_EXC_ERROR;
2067 END IF;
2068
2069 /*********************************
2070 ** Check the Second Entity **
2071 *********************************/
2072 IF p_hold_source_rec.hold_entity_code2 is not null THEN
2073 OE_Debug_PUB.Add('Second Entity Code->' ||
2074 p_hold_source_rec.hold_entity_code2,1);
2075 OE_Debug_PUB.Add('Second Entity ID' ||
2076 to_char(p_hold_source_rec.hold_entity_id2),1);
2077
2078 IF p_hold_source_rec.hold_entity_code2 = 'O' THEN
2079
2080 SELECT 'Valid Entity'
2081 INTO l_dummy
2082 FROM OE_ORDER_HEADERS
2083 WHERE HEADER_ID = p_hold_source_rec.hold_entity_id2
2084 -- QUOTING change
2085 AND nvl(TRANSACTION_PHASE_CODE,'F') = 'F';
2086
2087 ELSIF p_hold_source_rec.hold_entity_code2 = 'C' THEN
2088
2089 SELECT 'Valid Entity'
2090 INTO l_dummy
2091 FROM oe_sold_to_orgs_v
2092 WHERE ORGANIZATION_ID = p_hold_source_rec.hold_entity_id2;
2093
2094 /* Following cursor has been changed to use direct TCA tables -Bug 1874065*/
2095 /* ELSIF p_hold_source_rec.hold_entity_code2 = 'S' THEN
2096 SELECT 'Valid Entity'
2097 INTO l_dummy
2098 FROM RA_SITE_USES
2099 WHERE SITE_USE_ID = p_hold_source_rec.hold_entity_id2
2100 AND site_use_code = 'SHIP_TO';*/
2101
2102
2103 ELSIF p_hold_source_rec.hold_entity_code2 = 'S' THEN
2104 SELECT 'Valid Entity'
2105 INTO l_dummy
2106 FROM hz_cust_site_uses -- Bug 2138398
2107 WHERE SITE_USE_ID = p_hold_source_rec.hold_entity_id2
2108 AND site_use_code = 'SHIP_TO';
2109
2110
2111 /* Following cursor has been changed to use direct TCA tables -Bug 1874065*/
2112 /* ELSIF p_hold_source_rec.hold_entity_code2 = 'B' THEN
2113 SELECT 'Valid Entity'
2114 INTO l_dummy
2115 FROM RA_SITE_USES
2116 WHERE SITE_USE_ID = p_hold_source_rec.hold_entity_id2
2117 AND site_use_code = 'BILL_TO';*/
2118
2119 ELSIF p_hold_source_rec.hold_entity_code2 = 'B' THEN
2120 SELECT 'Valid Entity'
2121 INTO l_dummy
2122 FROM hz_cust_site_uses -- Bug 2138398
2123 WHERE SITE_USE_ID = p_hold_source_rec.hold_entity_id2
2124 AND site_use_code = 'BILL_TO';
2125 ELSIF p_hold_source_rec.hold_entity_code2 = 'H' THEN
2126 SELECT 'Valid Entity'
2127 INTO l_dummy
2128 FROM oe_blanket_headers
2129 WHERE ORDER_NUMBER = p_hold_source_rec.hold_entity_id2
2130 AND SALES_DOCUMENT_TYPE_CODE = 'B';
2131 ELSIF p_hold_source_rec.hold_entity_code2 = 'L' THEN
2132 SELECT 'Valid Entity'
2133 INTO l_dummy
2134 FROM oe_blanket_lines_ext
2135 WHERE ORDER_NUMBER = p_hold_source_rec.hold_entity_id
2136 AND LINE_NUMBER = p_hold_source_rec.hold_entity_id2;
2137 ELSIF p_hold_source_rec.hold_entity_code2 = 'W' THEN
2138 SELECT 'Valid Entity'
2139 INTO l_dummy
2140 from oe_ship_from_orgs_v
2141 where ORGANIZATION_id = p_hold_source_rec.hold_entity_id2;
2142 --ER#7479609 start
2143 ELSIF p_hold_source_rec.hold_entity_code2 = 'CB' THEN
2144 SELECT 'Valid Entity'
2145 INTO l_dummy
2146 FROM fnd_user
2147 WHERE user_id = p_hold_source_rec.hold_entity_id2;
2148 ELSIF p_hold_source_rec.hold_entity_code2 = 'D' THEN
2149 SELECT 'Valid Entity'
2150 INTO l_dummy
2151 FROM hz_cust_site_uses
2152 WHERE SITE_USE_ID = p_hold_source_rec.hold_entity_id2
2153 AND site_use_code = 'DELIVER_TO';
2154 ELSIF p_hold_source_rec.hold_entity_code2 in ('LT','OT') THEN
2155 SELECT 'Valid Entity'
2156 INTO l_dummy
2157 FROM oe_transaction_types
2158 WHERE transaction_type_id = p_hold_source_rec.hold_entity_id2;
2159 ELSIF p_hold_source_rec.hold_entity_code2 = 'OI' THEN
2160 SELECT 'Valid Entity'
2161 INTO l_dummy
2162 from mtl_system_items_kfv
2163 where inventory_item_id = p_hold_source_rec.hold_entity_id2;
2164 ELSIF p_hold_source_rec.hold_entity_code2 = 'PT' THEN
2165 SELECT 'Valid Entity'
2166 INTO l_dummy
2167 FROM ra_terms
2168 WHERE term_id = p_hold_source_rec.hold_entity_id2;
2169 ELSIF p_hold_source_rec.hold_entity_code2 = 'P' THEN
2170 SELECT 'Valid Entity'
2171 INTO l_dummy
2172 FROM oe_payment_types_vl
2173 WHERE payment_type_code = p_hold_source_rec.hold_entity_id2;
2174 ELSIF p_hold_source_rec.hold_entity_code2 = 'PL' THEN
2175 SELECT 'Valid Entity'
2176 INTO l_dummy
2177 from qp_list_headers_vl
2178 where list_header_id = p_hold_source_rec.hold_entity_id2;
2179 ELSIF p_hold_source_rec.hold_entity_code2 = 'PR' THEN
2180 SELECT 'Valid Entity'
2181 INTO l_dummy
2182 FROM PJM_PROJECTS_ORG_OU_SECURE_V
2183 WHERE PROJECT_ID = p_hold_source_rec.hold_entity_id2;
2184 ELSIF p_hold_source_rec.hold_entity_code2 = 'SC' THEN
2185 SELECT 'Valid Entity'
2186 INTO l_dummy
2187 FROM oe_lookups
2188 WHERE lookup_code = p_hold_source_rec.hold_entity_id2
2189 AND lookup_type = 'SALES_CHANNEL';
2190 ELSIF p_hold_source_rec.hold_entity_code2 = 'SM' THEN
2191 SELECT 'Valid Entity'
2192 INTO l_dummy
2193 from oe_ship_methods_v
2194 where lookup_code = p_hold_source_rec.hold_entity_id2
2195 AND lookup_type = 'SHIP_METHOD';
2196 ELSIF p_hold_source_rec.hold_entity_code2 = 'ST' THEN
2197 SELECT 'Valid Entity'
2198 INTO l_dummy
2199 FROM oe_lookups
2200 WHERE lookup_code = p_hold_source_rec.hold_entity_id2
2201 AND lookup_type = 'SOURCE_TYPE';
2202 ELSIF p_hold_source_rec.hold_entity_code2 = 'T' THEN
2203 SELECT 'Valid Entity'
2204 INTO l_dummy
2205 FROM PJM_TASKS_OU_V
2206 WHERE TASK_ID = p_hold_source_rec.hold_entity_id2;
2207 ELSIF p_hold_source_rec.hold_entity_code2 = 'TC' THEN
2208 SELECT 'Valid Entity'
2209 INTO l_dummy
2210 from fnd_currencies_vl
2211 where currency_code = p_hold_source_rec.hold_entity_id2;
2212 --ER#7479609 end
2213 ELSE
2214 OE_Debug_PUB.Add('Invalid Second Entity Code');
2215 FND_MESSAGE.SET_NAME('ONT', 'OE_MISSING_ENTITY_CODE');
2216 OE_MSG_PUB.ADD;
2217 RAISE FND_API.G_EXC_ERROR;
2218 END IF;
2219 END IF;
2220 ------------------------------
2221
2222 EXCEPTION
2223 WHEN TOO_MANY_ROWS THEN
2224 null;
2225 WHEN NO_DATA_FOUND THEN
2226 /* XXX Error message here */
2227 OE_Debug_PUB.Add('Hold Entity ID not found for entity',1);
2228 FND_MESSAGE.SET_NAME('ONT', 'OE_MISSING_ENTITY_ID');
2229 OE_MSG_PUB.ADD;
2230 RAISE FND_API.G_EXC_ERROR;
2231 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2232 WHEN FND_API.G_EXC_ERROR THEN
2233 /*
2234 ** This message is not required.
2235 FND_MESSAGE.SET_NAME('ONT', 'OE_ENTITY_NOT_ON_ORDER_OR_LINE');
2236 OE_MSG_PUB.ADD;
2237 */
2238 OE_Debug_PUB.Add('Expected error in Validate_Hold_source',1);
2239 x_return_status := FND_API.G_RET_STS_ERROR;
2240 WHEN OTHERS THEN
2241 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2242 IF OE_MSG_PUB.Check_Msg_Level
2243 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2244 THEN
2245 OE_MSG_PUB.Add_Exc_Msg
2246 ( G_PKG_NAME
2247 , l_api_name
2248 );
2249 END IF;
2250
2251 END Validate_Hold_Source;
2252
2253
2254 -----------------------
2255 Procedure Validate_Hold (
2256 p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_id%TYPE,
2257 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
2258 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
2259 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
2260 IS
2261 l_dummy VARCHAR2(30) DEFAULT NULL;
2262 BEGIN
2263 x_return_status := FND_API.G_RET_STS_SUCCESS;
2264
2265
2266 -- Check for Missing Values
2267 IF p_hold_id IS NULL THEN
2268 FND_MESSAGE.SET_NAME('ONT', 'OE_MISSING_HOLD_ID');
2269 OE_MSG_PUB.ADD;
2270 RAISE FND_API.G_EXC_ERROR;
2271 END IF;
2272
2273
2274 -- Validate Hold ID
2275
2276 BEGIN
2277 SELECT 'x'
2278 INTO l_dummy
2279 FROM OE_HOLD_DEFINITIONS
2280 WHERE HOLD_ID = p_hold_id
2281 AND SYSDATE
2282 BETWEEN NVL(START_DATE_ACTIVE, SYSDATE )
2283 AND NVL(END_DATE_ACTIVE, SYSDATE );
2284
2285 EXCEPTION
2286
2287 WHEN NO_DATA_FOUND THEN
2288 OE_Debug_PUB.Add('Invalid Hold ID'||to_char(p_hold_id),1);
2289 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_HOLD_ID');
2290 FND_MESSAGE.SET_TOKEN('HOLD_ID',p_hold_id);
2291 OE_MSG_PUB.ADD;
2292 x_return_status := FND_API.G_RET_STS_ERROR;
2293
2294 END; -- Validate Hold ID
2295
2296 END Validate_Hold;
2297
2298 ----------------------
2299 ---Overload procedure for bug5548778
2300 Procedure Create_Hold_Source (
2301 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type,
2302 p_org_id IN NUMBER DEFAULT MO_GLOBAL.get_current_org_id, --ER#7479609
2303 x_hold_source_id OUT NOCOPY /* file.sql.39 change */ OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE,
2304 x_hold_exists OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
2305 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
2306 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
2307 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
2308 IS
2309 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_HOLD_SOURCE';
2310 l_user_id NUMBER;
2311 l_org_id NUMBER;
2312 l_count NUMBER;
2313 --l_hold_source_id OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE;
2314 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
2315 BEGIN
2316 x_return_status := FND_API.G_RET_STS_SUCCESS;
2317 x_hold_exists := 'N';
2318 l_user_id := OE_HOLDS_PVT.get_user_id;
2319 l_org_id := MO_GLOBAL.get_current_org_id;
2320 IF l_org_id IS NULL THEN
2321 -- org_id is null, raise an error.
2322 oe_debug_pub.add('Org_Id is NULL',1);
2323 x_return_status := FND_API.G_RET_STS_ERROR;
2324 FND_MESSAGE.SET_NAME('FND','MO_ORG_REQUIRED');
2325 FND_MSG_PUB.ADD;
2326 RAISE FND_API.G_EXC_ERROR;
2327 END IF;
2328
2329 if (p_hold_source_rec.hold_entity_code = 'O'
2330 AND p_hold_source_rec.hold_entity_code2 is NULL) then
2331 /* If Line-level hold */
2332 IF p_hold_source_rec.line_id is not null THEN
2333 select count(*)
2334 into l_count
2335 --ER#7479609 FROM OE_HOLD_SOURCES HS
2336 FROM OE_HOLD_SOURCES_ALL HS --ER#7479609
2337 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
2338 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
2339 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
2340 AND HS.HOLD_ENTITY_CODE2 is null
2341 AND HS.HOLD_ENTITY_ID2 is null
2342 AND HS.RELEASED_FLAG = 'N'
2343 AND HS.org_id= p_org_id --ER#7479609
2344 AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE
2345 AND EXISTS ( select 'x'
2346 --ER#7479609 from oe_order_holds OH
2347 from oe_order_holds_all OH --ER#7479609
2348 where OH.line_id = p_hold_source_rec.line_id
2349 and OH.org_id= p_org_id --ER#7479609
2350 and OH.hold_source_id = HS.hold_source_id);
2351
2352 IF l_count > 0 THEN
2353 OE_Debug_PUB.Add('Duplicate Hold Source for EntityID'||
2354 to_char(p_hold_source_rec.hold_entity_id) ,1);
2355 --FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD');
2356 FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD_SOURCE');
2357 OE_MSG_PUB.ADD;
2358 x_hold_exists := 'Y';
2359 RETURN;
2360 --RAISE FND_API.G_EXC_ERROR;
2361 END IF;
2362 /* If Order Level Hold */
2363 ELSE
2364 select count(*)
2365 into l_count
2366 --ER#7479609 FROM OE_HOLD_SOURCES HS
2367 FROM OE_HOLD_SOURCES_ALL HS --ER#7479609
2368 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
2369 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
2370 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
2371 AND HS.HOLD_ENTITY_CODE2 is null
2372 AND HS.HOLD_ENTITY_ID2 is null
2373 AND HS.RELEASED_FLAG = 'N'
2374 AND HS.org_id= p_org_id --ER#7479609
2375 AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE
2376 AND EXISTS ( select 'x'
2377 --ER#7479609 from oe_order_holds OH
2378 from oe_order_holds_all OH --ER#7479609
2379 where OH.line_id is null
2380 and OH.org_id= p_org_id --ER#7479609
2381 and OH.hold_source_id = HS.hold_source_id);
2382
2383 IF l_count > 0 THEN
2384 OE_Debug_PUB.Add('Duplicate Hold Source for EntityID'||
2385 to_char(p_hold_source_rec.hold_entity_id) ,1);
2386 --FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD');
2387 FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD_SOURCE');
2388 OE_MSG_PUB.ADD;
2389 x_hold_exists := 'Y';
2390 RETURN;
2391 --RAISE FND_API.G_EXC_ERROR;
2392 END IF;
2393
2394 END IF; /*If Order Level Hold */
2395 else
2396 select count(*)
2397 into l_count
2398 --ER#7479609 FROM OE_HOLD_SOURCES HS
2399 FROM OE_HOLD_SOURCES_ALL HS --ER#7479609
2400 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
2401 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
2402 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
2403 AND HS.org_id= p_org_id --ER#7479609
2404 AND nvl(HS.HOLD_ENTITY_CODE2, 'NO_ENTITY_CODE2') =
2405 nvl(p_hold_source_rec.hold_entity_code2, 'NO_ENTITY_CODE2')
2406 AND nvl(HS.HOLD_ENTITY_ID2, -99) =
2407 nvl(p_hold_source_rec.hold_entity_id2,-99 )
2408 AND HS.RELEASED_FLAG = 'N'
2409 AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE;
2410
2411 IF l_count > 0 THEN
2412 OE_Debug_PUB.Add('Duplicate Hold Source for EntityID'||
2413 to_char(p_hold_source_rec.hold_entity_id) ,1);
2414 --FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD');
2415 FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD_SOURCE');
2416 OE_MSG_PUB.ADD;
2417 --RETURN;
2418 RAISE FND_API.G_EXC_ERROR;
2419 END IF;
2420 end if;
2421
2422
2423 -- Inserting a NEW HOLD SOURCE record
2424
2425 SELECT OE_HOLD_SOURCES_S.NEXTVAL
2426 INTO x_hold_source_id
2427 FROM DUAL;
2428
2429 INSERT INTO OE_HOLD_SOURCES_ALL
2430 ( HOLD_SOURCE_ID
2431 , LAST_UPDATE_DATE
2432 , LAST_UPDATED_BY
2433 , CREATION_DATE
2434 , CREATED_BY
2435 , LAST_UPDATE_LOGIN
2436 , PROGRAM_APPLICATION_ID
2437 , PROGRAM_ID
2438 , PROGRAM_UPDATE_DATE
2439 , REQUEST_ID
2440 , HOLD_ID
2441 , HOLD_ENTITY_CODE
2442 , HOLD_ENTITY_ID
2443 , HOLD_UNTIL_DATE
2444 , RELEASED_FLAG
2445 , HOLD_COMMENT
2446 , ORG_ID
2447 , CONTEXT
2448 , ATTRIBUTE1
2449 , ATTRIBUTE2
2450 , ATTRIBUTE3
2451 , ATTRIBUTE4
2452 , ATTRIBUTE5
2453 , ATTRIBUTE6
2454 , ATTRIBUTE7
2455 , ATTRIBUTE8
2456 , ATTRIBUTE9
2457 , ATTRIBUTE10
2458 , ATTRIBUTE11
2459 , ATTRIBUTE12
2460 , ATTRIBUTE13
2461 , ATTRIBUTE14
2462 , ATTRIBUTE15
2463 , HOLD_RELEASE_ID
2464 ,HOLD_ENTITY_CODE2
2465 ,HOLD_ENTITY_ID2
2466 )
2467 VALUES
2468 ( x_hold_source_id
2469 , sysdate
2470 , l_user_id
2471 , sysdate
2472 , l_user_id
2473 , p_hold_source_rec.LAST_UPDATE_LOGIN
2474 , p_hold_source_rec.PROGRAM_APPLICATION_ID
2475 , p_hold_source_rec.PROGRAM_ID
2476 , p_hold_source_rec.PROGRAM_UPDATE_DATE
2477 , p_hold_source_rec.REQUEST_ID
2478 , p_hold_source_rec.HOLD_ID
2479 , p_hold_source_rec.HOLD_ENTITY_CODE
2480 , p_hold_source_rec.HOLD_ENTITY_ID
2481 , p_hold_source_rec.HOLD_UNTIL_DATE
2482 , 'N'
2483 , p_hold_source_rec.HOLD_COMMENT
2484 , p_org_id --ER#7479609 l_org_id
2485 , p_hold_source_rec.CONTEXT
2486 , p_hold_source_rec.ATTRIBUTE1
2487 , p_hold_source_rec.ATTRIBUTE2
2488 , p_hold_source_rec.ATTRIBUTE3
2489 , p_hold_source_rec.ATTRIBUTE4
2490 , p_hold_source_rec.ATTRIBUTE5
2491 , p_hold_source_rec.ATTRIBUTE6
2492 , p_hold_source_rec.ATTRIBUTE7
2493 , p_hold_source_rec.ATTRIBUTE8
2494 , p_hold_source_rec.ATTRIBUTE9
2495 , p_hold_source_rec.ATTRIBUTE10
2496 , p_hold_source_rec.ATTRIBUTE11
2497 , p_hold_source_rec.ATTRIBUTE12
2498 , p_hold_source_rec.ATTRIBUTE13
2499 , p_hold_source_rec.ATTRIBUTE14
2500 , p_hold_source_rec.ATTRIBUTE15
2501 , p_hold_source_rec.HOLD_RELEASE_ID
2502 , p_hold_source_rec.HOLD_ENTITY_CODE2
2503 , p_hold_source_rec.HOLD_ENTITY_ID2
2504 );
2505
2506 --l_hold_source_rec := p_hold_source_rec;
2507 --l_hold_source_rec.hold_source_id := l_hold_source_id;
2508
2509 --dbms_output.put_line ('Caling Create_Order_Holds');
2510
2511 EXCEPTION
2512 WHEN FND_API.G_EXC_ERROR THEN
2513 --ROLLBACK TO Create_Hold_Source;
2514 x_return_status := FND_API.G_RET_STS_ERROR;
2515 OE_MSG_PUB.Count_And_Get
2516 ( p_count => x_msg_count
2517 , p_data => x_msg_data
2518 );
2519 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2520 --ROLLBACK TO Create_Hold_Source;
2521 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2522 OE_MSG_PUB.Count_And_Get
2523 ( p_count => x_msg_count
2524 , p_data => x_msg_data
2525 );
2526 WHEN OTHERS THEN
2527 --ROLLBACK TO Create_Hold_Source;
2528 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2529 IF OE_MSG_PUB.Check_Msg_Level
2530 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2531 THEN
2532 OE_MSG_PUB.Add_Exc_Msg
2533 ( G_PKG_NAME,
2534 l_api_name);
2535 END IF;
2536 OE_MSG_PUB.Count_And_Get
2537 ( p_count => x_msg_count
2538 , p_data => x_msg_data
2539 );
2540 END Create_Hold_Source;
2541
2542 ------
2543 Procedure Create_Hold_Source (
2544 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type,
2545 p_org_id IN NUMBER DEFAULT MO_GLOBAL.get_current_org_id, --ER#7479609
2546 x_hold_source_id OUT NOCOPY /* file.sql.39 change */ OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE,
2547 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
2548 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
2549 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
2550 IS
2551 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_HOLD_SOURCE';
2552 l_user_id NUMBER;
2553 l_org_id NUMBER;
2554 l_count NUMBER;
2555 --l_hold_source_id OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE;
2556 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
2557 l_hold_comment OE_HOLD_SOURCES_ALL.HOLD_COMMENT%TYPE; --ER#7479609
2558 BEGIN
2559 x_return_status := FND_API.G_RET_STS_SUCCESS;
2560 l_user_id := OE_HOLDS_PVT.get_user_id;
2561 l_org_id := MO_GLOBAL.get_current_org_id;
2562 IF l_org_id IS NULL THEN
2563 -- org_id is null, raise an error.
2564 oe_debug_pub.add('Org_Id is NULL',1);
2565 x_return_status := FND_API.G_RET_STS_ERROR;
2566 FND_MESSAGE.SET_NAME('FND','MO_ORG_REQUIRED');
2567 FND_MSG_PUB.ADD;
2568 RAISE FND_API.G_EXC_ERROR;
2569 END IF;
2570
2571 if (p_hold_source_rec.hold_entity_code = 'O'
2572 AND p_hold_source_rec.hold_entity_code2 is NULL) then
2573 /* If Line-level hold */
2574 IF p_hold_source_rec.line_id is not null THEN
2575 select count(*)
2576 into l_count
2577 --ER#7479609 FROM OE_HOLD_SOURCES HS
2578 FROM OE_HOLD_SOURCES_ALL HS --ER#7479609
2579 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
2580 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
2581 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
2582 AND HS.HOLD_ENTITY_CODE2 is null
2583 AND HS.HOLD_ENTITY_ID2 is null
2584 AND HS.RELEASED_FLAG = 'N'
2585 AND HS.ORG_ID = p_org_id --ER#7479609
2586 AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE
2587 AND EXISTS ( select 'x'
2588 --ER#7479609 from oe_order_holds OH
2589 from oe_order_holds_all OH --ER#7479609
2590 where OH.line_id = p_hold_source_rec.line_id
2591 and OH.hold_source_id = HS.hold_source_id);
2592
2593 IF l_count > 0 THEN
2594 OE_Debug_PUB.Add('Duplicate Hold Source for EntityID'||
2595 to_char(p_hold_source_rec.hold_entity_id) ,1);
2596 --FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD');
2597 FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD_SOURCE');
2598 OE_MSG_PUB.ADD;
2599 --RETURN;
2600 RAISE FND_API.G_EXC_ERROR;
2601 END IF;
2602 /* If Order Level Hold */
2603 ELSE
2604 select count(*)
2605 into l_count
2606 --ER#7479609 FROM OE_HOLD_SOURCES HS
2607 FROM OE_HOLD_SOURCES_ALL HS --ER#7479609
2608 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
2609 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
2610 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
2611 AND HS.HOLD_ENTITY_CODE2 is null
2612 AND HS.HOLD_ENTITY_ID2 is null
2613 AND HS.RELEASED_FLAG = 'N'
2614 AND HS.ORG_ID = p_org_id --ER#7479609
2615 AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE
2616 AND EXISTS ( select 'x'
2617 --ER#7479609 from oe_order_holds OH
2618 from oe_order_holds_all OH --ER#7479609
2619 where OH.line_id is null
2620 and OH.hold_source_id = HS.hold_source_id);
2621
2622 IF l_count > 0 THEN
2623 OE_Debug_PUB.Add('Duplicate Hold Source for EntityID'||
2624 to_char(p_hold_source_rec.hold_entity_id) ,1);
2625 --FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD');
2626 FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD_SOURCE');
2627 OE_MSG_PUB.ADD;
2628 --RETURN;
2629 RAISE FND_API.G_EXC_ERROR;
2630 END IF;
2631
2632 END IF; /*If Order Level Hold */
2633 else
2634 select count(*)
2635 into l_count
2636 --ER#7479609 FROM OE_HOLD_SOURCES HS
2637 FROM OE_HOLD_SOURCES_ALL HS --ER#7479609
2638 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
2639 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
2640 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
2641 AND nvl(HS.HOLD_ENTITY_CODE2, 'NO_ENTITY_CODE2') =
2642 nvl(p_hold_source_rec.hold_entity_code2, 'NO_ENTITY_CODE2')
2643 AND nvl(HS.HOLD_ENTITY_ID2, -99) =
2644 nvl(p_hold_source_rec.hold_entity_id2,-99 )
2645 AND HS.RELEASED_FLAG = 'N'
2646 AND HS.ORG_ID = p_org_id --ER#7479609
2647 AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE;
2648
2649 -- AND EXISTS ( select 'x'
2650 -- from oe_order_holds
2651 -- where header_id = p_hold_source_rec.hold_entity_id
2652 -- and line_id = nvl(p_hold_source_rec.line_id, -99));
2653
2654 IF l_count > 0 THEN
2655 OE_Debug_PUB.Add('Duplicate Hold Source for EntityID'||
2656 to_char(p_hold_source_rec.hold_entity_id) ,1);
2657 --FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD');
2658 FND_MESSAGE.SET_NAME('ONT', 'OE_DUPLICATE_HOLD_SOURCE');
2659 OE_MSG_PUB.ADD;
2660 --RETURN;
2661 RAISE FND_API.G_EXC_ERROR;
2662 END IF;
2663
2664 end if;
2665
2666 -- Check to see if the hold source already exists
2667 -- and if exists, retrieve hold source ID.
2668
2669 -- BEGIN
2670 -- SELECT HOLD_SOURCE_ID
2671 -- INTO l_hold_source_id
2672 -- FROM OE_HOLD_SOURCES HS
2673 -- WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
2674 -- AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
2675 -- AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
2676 -- AND nvl(HS.HOLD_ENTITY_CODE2, 'NO_ENTITY_CODE2') =
2677 -- nvl(p_hold_source_rec.hold_entity_code2, 'NO_ENTITY_CODE2')
2678 -- AND nvl(HS.HOLD_ENTITY_ID2, -99) =
2679 -- nvl(p_hold_source_rec.hold_entity_id2,-99 )
2680 -- AND HS.RELEASED_FLAG = 'N'
2681 -- AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE;
2682
2683 -- oe_debug_pub.add('Using Existing Hold Source for:' ||
2684 -- to_char(p_hold_source_rec.hold_entity_id) || 'And:' ||
2685 -- nvl(to_char(p_hold_source_rec.hold_entity_id2), 'No Second Entity'),3);
2686 -- EXCEPTION
2687 -- WHEN NO_DATA_FOUND THEN
2688
2689 -- Inserting a NEW HOLD SOURCE record
2690
2691 --ER#7479609 start
2692 l_hold_comment := p_hold_source_rec.HOLD_COMMENT;
2693 IF p_hold_source_rec.hold_id = 1 and p_hold_source_rec.HOLD_COMMENT IS NULL THEN
2694 l_hold_comment := 'Credit Hold check box has been enabled that has put the hold';
2695 END IF;
2696
2697 --ER#7479609 end
2698
2699
2700 SELECT OE_HOLD_SOURCES_S.NEXTVAL
2701 INTO x_hold_source_id
2702 FROM DUAL;
2703
2704 INSERT INTO OE_HOLD_SOURCES_ALL
2705 ( HOLD_SOURCE_ID
2706 , LAST_UPDATE_DATE
2707 , LAST_UPDATED_BY
2708 , CREATION_DATE
2709 , CREATED_BY
2710 , LAST_UPDATE_LOGIN
2711 , PROGRAM_APPLICATION_ID
2712 , PROGRAM_ID
2713 , PROGRAM_UPDATE_DATE
2714 , REQUEST_ID
2715 , HOLD_ID
2716 , HOLD_ENTITY_CODE
2717 , HOLD_ENTITY_ID
2718 , HOLD_UNTIL_DATE
2719 , RELEASED_FLAG
2720 , HOLD_COMMENT
2721 , ORG_ID
2722 , CONTEXT
2723 , ATTRIBUTE1
2724 , ATTRIBUTE2
2725 , ATTRIBUTE3
2726 , ATTRIBUTE4
2727 , ATTRIBUTE5
2728 , ATTRIBUTE6
2729 , ATTRIBUTE7
2730 , ATTRIBUTE8
2731 , ATTRIBUTE9
2732 , ATTRIBUTE10
2733 , ATTRIBUTE11
2734 , ATTRIBUTE12
2735 , ATTRIBUTE13
2736 , ATTRIBUTE14
2737 , ATTRIBUTE15
2738 , HOLD_RELEASE_ID
2739 ,HOLD_ENTITY_CODE2
2740 ,HOLD_ENTITY_ID2
2741 )
2742 VALUES
2743 ( x_hold_source_id
2744 , sysdate
2745 , l_user_id
2746 , sysdate
2747 , l_user_id
2748 , p_hold_source_rec.LAST_UPDATE_LOGIN
2749 , p_hold_source_rec.PROGRAM_APPLICATION_ID
2750 , p_hold_source_rec.PROGRAM_ID
2751 , p_hold_source_rec.PROGRAM_UPDATE_DATE
2752 , p_hold_source_rec.REQUEST_ID
2753 , p_hold_source_rec.HOLD_ID
2754 , p_hold_source_rec.HOLD_ENTITY_CODE
2755 , p_hold_source_rec.HOLD_ENTITY_ID
2756 , p_hold_source_rec.HOLD_UNTIL_DATE
2757 , 'N'
2758 , l_hold_comment --ER#7479609 p_hold_source_rec.HOLD_COMMENT
2759 , p_org_id --ER#7479609 l_org_id
2760 , p_hold_source_rec.CONTEXT
2761 , p_hold_source_rec.ATTRIBUTE1
2762 , p_hold_source_rec.ATTRIBUTE2
2763 , p_hold_source_rec.ATTRIBUTE3
2764 , p_hold_source_rec.ATTRIBUTE4
2765 , p_hold_source_rec.ATTRIBUTE5
2766 , p_hold_source_rec.ATTRIBUTE6
2767 , p_hold_source_rec.ATTRIBUTE7
2768 , p_hold_source_rec.ATTRIBUTE8
2769 , p_hold_source_rec.ATTRIBUTE9
2770 , p_hold_source_rec.ATTRIBUTE10
2771 , p_hold_source_rec.ATTRIBUTE11
2772 , p_hold_source_rec.ATTRIBUTE12
2773 , p_hold_source_rec.ATTRIBUTE13
2774 , p_hold_source_rec.ATTRIBUTE14
2775 , p_hold_source_rec.ATTRIBUTE15
2776 , p_hold_source_rec.HOLD_RELEASE_ID
2777 , p_hold_source_rec.HOLD_ENTITY_CODE2
2778 , p_hold_source_rec.HOLD_ENTITY_ID2
2779 );
2780
2781 --l_hold_source_rec := p_hold_source_rec;
2782 --l_hold_source_rec.hold_source_id := l_hold_source_id;
2783
2784 --dbms_output.put_line ('Caling Create_Order_Holds');
2785
2786 EXCEPTION
2787 WHEN FND_API.G_EXC_ERROR THEN
2788 --ROLLBACK TO Create_Hold_Source;
2789 x_return_status := FND_API.G_RET_STS_ERROR;
2790 OE_MSG_PUB.Count_And_Get
2791 ( p_count => x_msg_count
2792 , p_data => x_msg_data
2793 );
2794 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2795 --ROLLBACK TO Create_Hold_Source;
2796 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2797 OE_MSG_PUB.Count_And_Get
2798 ( p_count => x_msg_count
2799 , p_data => x_msg_data
2800 );
2801 WHEN OTHERS THEN
2802 --ROLLBACK TO Create_Hold_Source;
2803 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2804 IF OE_MSG_PUB.Check_Msg_Level
2805 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2806 THEN
2807 OE_MSG_PUB.Add_Exc_Msg
2808 ( G_PKG_NAME,
2809 l_api_name);
2810 END IF;
2811 OE_MSG_PUB.Count_And_Get
2812 ( p_count => x_msg_count
2813 , p_data => x_msg_data
2814 );
2815 END Create_Hold_Source;
2816
2817
2818 ---------------------
2819 Procedure Create_Order_Holds(
2820 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type,
2821 p_org_id IN NUMBER DEFAULT MO_GLOBAL.get_current_org_id, --ER#7479609
2822 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
2823 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
2824 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
2825 IS
2826 l_user_id NUMBER;
2827 l_org_id NUMBER;
2828 l_api_name CONSTANT VARCHAR2(30) := 'Create_Order_Holds';
2829 l_site_use_code VARCHAR2(30);
2830 /*Added the three variables for WF_HOLDS bug 6449458*/
2831 l_is_hold_applied BOOLEAN DEFAULT NULL;
2832 l_wf_item_type OE_HOLD_DEFINITIONS.ITEM_TYPE%TYPE := NULL;
2833 l_wf_activity_name OE_HOLD_DEFINITIONS.ACTIVITY_NAME%TYPE := NULL;
2834
2835
2836 /* Moved to Overloaded Procedure under Bug 6801108
2837 -- GENESIS --
2838 l_check_hold VARCHAR2(1) := 'N';
2839
2840 CURSOR check_line_hold_type_cur(p_line_id IN NUMBER) IS
2841 SELECT 'Y'
2842 FROM DUAL
2843 WHERE EXISTS (SELECT NULL
2844 FROM oe_order_holds ooh,
2845 oe_hold_sources ohs,
2846 oe_hold_definitions ohd,
2847 oe_order_headers_all h,
2848 oe_order_sources oos
2849 WHERE ohd.activity_name IS NULL
2850 AND ohd.hold_id = ohs.hold_id
2851 AND ooh.header_id = h.header_id
2852 AND h.order_source_id = oos.order_source_id
2853 AND oos.aia_enabled_flag = 'Y'
2854 AND ohs.hold_source_id = ooh.hold_source_id
2855 AND ooh.line_id = p_line_id);
2856
2857 CURSOR check_hdr_hold_type_cur(p_hdr_id IN NUMBER) IS
2858 SELECT 'Y'
2859 FROM DUAL
2860 WHERE EXISTS (SELECT NULL
2861 FROM oe_order_holds ooh,
2862 oe_hold_sources ohs,
2863 oe_hold_definitions ohd,
2864 oe_order_headers_all h,
2865 oe_order_sources oos
2866 WHERE ohd.activity_name IS NULL
2867 AND ohd.hold_id = ohs.hold_id
2868 AND h.order_source_id = oos.order_source_id
2869 AND oos.aia_enabled_flag = 'Y'
2870 AND ooh.header_id = h.header_id
2871 AND ohs.hold_source_id = ooh.hold_source_id
2872 AND ooh.header_id = p_hdr_id);
2873
2874 CURSOR check_src_hold_type_cur(p_hld_src_id IN NUMBER) IS
2875 SELECT 'Y'
2876 FROM DUAL
2877 WHERE EXISTS (SELECT NULL
2878 FROM oe_hold_sources ohs,
2879 oe_hold_definitions ohd
2880 WHERE ohd.activity_name IS NULL
2881 AND ohd.hold_id = ohs.hold_id
2882 AND ohs.hold_source_id = p_hld_src_id);
2883
2884 l_header_rec OE_Order_PUB.Header_Rec_Type;
2885 l_line_rec OE_Order_PUB.Line_Rec_Type;*/
2886 -- GENESIS --
2887 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2888 BEGIN
2889 x_return_status := FND_API.G_RET_STS_SUCCESS;
2890 l_user_id := OE_HOLDS_PVT.get_user_id;
2891 l_org_id := MO_GLOBAL.get_current_org_id;
2892 IF l_org_id IS NULL THEN
2893 -- org_id is null, raise an error.
2894 oe_debug_pub.add('Org_Id is NULL',1);
2895 x_return_status := FND_API.G_RET_STS_ERROR;
2896 FND_MESSAGE.SET_NAME('FND','MO_ORG_REQUIRED');
2897 FND_MSG_PUB.ADD;
2898 RAISE FND_API.G_EXC_ERROR;
2899 END IF;
2900
2901 Begin
2902 select item_type, activity_name
2903 into l_wf_item_type, l_wf_activity_name
2904 from oe_hold_definitions
2905 where hold_id = p_hold_source_rec.hold_id;
2906 Exception
2907 When NO_DATA_FOUND Then
2908 NULL; -- OE_Holds_Pvt.Validate has not yet been called.
2909 End;
2910
2911 OE_DEBUG_PUB.Add ('Calling Overloaded Create_Order_Holds Based on Workflow from original Create_Order_Holds',1);
2912 Create_Order_Holds (
2913 p_hold_source_rec => p_hold_source_rec
2914 ,p_org_id => p_org_id --ER#7479609
2915 ,p_item_type => l_wf_item_type
2916 ,p_activity_name => l_wf_activity_name
2917 ,x_return_status => x_return_status
2918 ,x_msg_count => x_msg_count
2919 ,x_msg_data => x_msg_data
2920 ,x_is_hold_applied => l_is_hold_applied);
2921
2922 /*oe_debug_pub.add('p_hold_source_rec.hold_source_id:' ||
2923 p_hold_source_rec.hold_source_id);
2924 oe_debug_pub.add('Hold_entity_code/Hold_entity_id/' ||
2925 'Hold_entity_code2/Hold_entity_id2:' ||
2926 p_hold_source_rec.Hold_entity_code || '/' ||
2927 p_hold_source_rec.Hold_entity_id || '/' ||
2928 p_hold_source_rec.Hold_entity_code2 || '/' ||
2929 p_hold_source_rec.Hold_entity_id2);
2930 oe_debug_pub.add('p_hold_source_rec.header_id:' || p_hold_source_rec.header_id);
2931 oe_debug_pub.add('p_hold_source_rec.line_id:' || p_hold_source_rec.line_id);
2932 -- Insert a hold record for the order header or the order line.
2933
2934 IF p_hold_source_rec.hold_entity_code = 'I' and
2935 p_hold_source_rec.hold_entity_code2 = 'C' THEN
2936 IF p_hold_source_rec.line_id IS NOT NULL THEN
2937 INSERT INTO OE_ORDER_HOLDS_ALL
2938 ( ORDER_HOLD_ID
2939 , LAST_UPDATE_DATE
2940 , LAST_UPDATED_BY
2941 , CREATION_DATE
2942 , CREATED_BY
2943 , LAST_UPDATE_LOGIN
2944 , HOLD_SOURCE_ID
2945 , HEADER_ID
2946 , LINE_ID
2947 , RELEASED_FLAG
2948 , ORG_ID
2949 )
2950 SELECT
2951 OE_ORDER_HOLDS_S.NEXTVAL
2952 , SYSDATE
2953 , l_user_id
2954 , SYSDATE
2955 , l_user_id
2956 , NULL
2957 , p_hold_source_rec.hold_source_id
2958 , h.HEADER_ID
2959 , ol.line_id
2960 , 'N'
2961 , l_org_id
2962 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
2963 WHERE h.OPEN_FLAG = 'Y'
2964 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
2965 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
2966 and h.header_id = ol.header_id
2967 and ol.line_id = p_hold_source_rec.line_id
2968 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
2969 and ol.OPEN_FLAG = 'Y'
2970 -- QUOTING change
2971 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
2972 and not exists ( select 'x'
2973 from oe_order_holds_ALL oh
2974 where oh.header_id = h.header_id
2975 and oh.line_id = ol.line_id
2976 and oh.hold_source_id =
2977 p_hold_source_rec.hold_source_id );
2978 ELSE
2979 INSERT INTO OE_ORDER_HOLDS_ALL
2980 ( ORDER_HOLD_ID
2981 , LAST_UPDATE_DATE
2982 , LAST_UPDATED_BY
2983 , CREATION_DATE
2984 , CREATED_BY
2985 , LAST_UPDATE_LOGIN
2986 , HOLD_SOURCE_ID
2987 , HEADER_ID
2988 , LINE_ID
2989 , RELEASED_FLAG
2990 , ORG_ID
2991 )
2992 SELECT
2993 OE_ORDER_HOLDS_S.NEXTVAL
2994 , SYSDATE
2995 , l_user_id
2996 , SYSDATE
2997 , l_user_id
2998 , NULL
2999 , p_hold_source_rec.hold_source_id
3000 , h.HEADER_ID
3001 , ol.line_id
3002 , 'N'
3003 , l_org_id
3004 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3005 WHERE h.OPEN_FLAG = 'Y'
3006 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3007 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3008 and h.header_id = ol.header_id
3009 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3010 and ol.OPEN_FLAG = 'Y'
3011 -- QUOTING change
3012 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3013 and not exists ( select 'x'
3014 from oe_order_holds_ALL oh
3015 where oh.header_id = h.header_id
3016 and oh.line_id = ol.line_id
3017 and oh.hold_source_id =
3018 p_hold_source_rec.hold_source_id );
3019 END IF;
3020 Only used by Credit checking
3021 ELSIF p_hold_source_rec.hold_entity_code = 'B' and
3022 p_hold_source_rec.hold_entity_code2 = 'O' THEN
3023 IF p_hold_source_rec.line_id IS NOT NULL THEN
3024 INSERT INTO OE_ORDER_HOLDS_ALL
3025 ( ORDER_HOLD_ID
3026 , LAST_UPDATE_DATE
3027 , LAST_UPDATED_BY
3028 , CREATION_DATE
3029 , CREATED_BY
3030 , LAST_UPDATE_LOGIN
3031 , HOLD_SOURCE_ID
3032 , HEADER_ID
3033 , LINE_ID
3034 , RELEASED_FLAG
3035 , ORG_ID
3036 )
3037 SELECT
3038 OE_ORDER_HOLDS_S.NEXTVAL
3039 , SYSDATE
3040 , l_user_id
3041 , SYSDATE
3042 , l_user_id
3043 , NULL
3044 , p_hold_source_rec.hold_source_id
3045 , h.HEADER_ID
3046 , ol.line_id
3047 , 'N'
3048 , l_org_id
3049 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol,
3050 ra_terms_b rt
3051 WHERE h.OPEN_FLAG = 'Y'
3052 and h.header_id = p_hold_source_rec.hold_entity_id2
3053 and h.header_id = ol.header_id
3054 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id
3055 and ol.line_id = p_hold_source_rec.line_id
3056 and ol.OPEN_FLAG = 'Y'
3057 and ol.PAYMENT_TERM_ID = rt.TERM_ID
3058 and rt.CREDIT_CHECK_FLAG = 'Y'
3059 -- QUOTING change
3060 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3061 and not exists ( select 'x'
3062 from oe_order_holds_ALL oh
3063 where oh.header_id = h.header_id
3064 and oh.line_id = ol.line_id
3065 and oh.hold_source_id =
3066 p_hold_source_rec.hold_source_id );
3067 ELSE
3068 INSERT INTO OE_ORDER_HOLDS_ALL
3069 ( ORDER_HOLD_ID
3070 , LAST_UPDATE_DATE
3071 , LAST_UPDATED_BY
3072 , CREATION_DATE
3073 , CREATED_BY
3074 , LAST_UPDATE_LOGIN
3075 , HOLD_SOURCE_ID
3076 , HEADER_ID
3077 , LINE_ID
3078 , RELEASED_FLAG
3079 , ORG_ID
3080 )
3081 SELECT
3082 OE_ORDER_HOLDS_S.NEXTVAL
3083 , SYSDATE
3084 , l_user_id
3085 , SYSDATE
3086 , l_user_id
3087 , NULL
3088 , p_hold_source_rec.hold_source_id
3089 , h.HEADER_ID
3090 , ol.line_id
3091 , 'N'
3092 , l_org_id
3093 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol,
3094 ra_terms_b rt
3095 WHERE h.OPEN_FLAG = 'Y'
3096 and h.header_id = p_hold_source_rec.hold_entity_id2
3097 and h.header_id = ol.header_id
3098 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id
3099 and ol.OPEN_FLAG = 'Y'
3100 and ol.PAYMENT_TERM_ID = rt.TERM_ID
3101 and rt.CREDIT_CHECK_FLAG = 'Y'
3102 -- QUOTING change
3103 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3104 and not exists ( select 'x'
3105 from oe_order_holds_ALL oh
3106 where oh.header_id = h.header_id
3107 and oh.line_id = ol.line_id
3108 and oh.hold_source_id =
3109 p_hold_source_rec.hold_source_id );
3110 END IF;
3111
3112 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
3113 p_hold_source_rec.hold_entity_code2 = 'B' THEN
3114 IF p_hold_source_rec.line_id IS NOT NULL THEN
3115 INSERT INTO OE_ORDER_HOLDS_ALL
3116 ( ORDER_HOLD_ID
3117 , LAST_UPDATE_DATE
3118 , LAST_UPDATED_BY
3119 , CREATION_DATE
3120 , CREATED_BY
3121 , LAST_UPDATE_LOGIN
3122 , HOLD_SOURCE_ID
3123 , HEADER_ID
3124 , LINE_ID
3125 , RELEASED_FLAG
3126 , ORG_ID
3127 )
3128 SELECT
3129 OE_ORDER_HOLDS_S.NEXTVAL
3130 , SYSDATE
3131 , l_user_id
3132 , SYSDATE
3133 , l_user_id
3134 , NULL
3135 , p_hold_source_rec.hold_source_id
3136 , h.HEADER_ID
3137 , ol.line_id
3138 , 'N'
3139 , l_org_id
3140 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3141 WHERE h.OPEN_FLAG = 'Y'
3142 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3143 and h.header_id = ol.header_id
3144 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3145 and ol.line_id = p_hold_source_rec.line_id
3146 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3147 and ol.OPEN_FLAG = 'Y'
3148 -- QUOTING change
3149 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3150 and not exists ( select 'x'
3151 from oe_order_holds_ALL oh
3152 where oh.header_id = h.header_id
3153 and oh.line_id = ol.line_id
3154 and oh.hold_source_id =
3155 p_hold_source_rec.hold_source_id );
3156 ELSE
3157 INSERT INTO OE_ORDER_HOLDS_ALL
3158 ( ORDER_HOLD_ID
3159 , LAST_UPDATE_DATE
3160 , LAST_UPDATED_BY
3161 , CREATION_DATE
3162 , CREATED_BY
3163 , LAST_UPDATE_LOGIN
3164 , HOLD_SOURCE_ID
3165 , HEADER_ID
3166 , LINE_ID
3167 , RELEASED_FLAG
3168 , ORG_ID
3169 )
3170 SELECT
3171 OE_ORDER_HOLDS_S.NEXTVAL
3172 , SYSDATE
3173 , l_user_id
3174 , SYSDATE
3175 , l_user_id
3176 , NULL
3177 , p_hold_source_rec.hold_source_id
3178 , h.HEADER_ID
3179 , ol.line_id
3180 , 'N'
3181 , l_org_id
3182 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3183 WHERE h.OPEN_FLAG = 'Y'
3184 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3185 and h.header_id = ol.header_id
3186 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3187 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3188 and ol.OPEN_FLAG = 'Y'
3189 -- QUOTING change
3190 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3191 and not exists ( select 'x'
3192 from oe_order_holds_ALL oh
3193 where oh.header_id = h.header_id
3194 and oh.line_id = ol.line_id
3195 and oh.hold_source_id =
3196 p_hold_source_rec.hold_source_id );
3197 END IF;
3198 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
3199 p_hold_source_rec.hold_entity_code2 = 'S' THEN
3200 IF p_hold_source_rec.line_id IS NOT NULL THEN
3201 INSERT INTO OE_ORDER_HOLDS_ALL
3202 ( ORDER_HOLD_ID
3203 , LAST_UPDATE_DATE
3204 , LAST_UPDATED_BY
3205 , CREATION_DATE
3206 , CREATED_BY
3207 , LAST_UPDATE_LOGIN
3208 , HOLD_SOURCE_ID
3209 , HEADER_ID
3210 , LINE_ID
3211 , RELEASED_FLAG
3212 , ORG_ID
3213 )
3214 SELECT
3215 OE_ORDER_HOLDS_S.NEXTVAL
3216 , SYSDATE
3217 , l_user_id
3218 , SYSDATE
3219 , l_user_id
3220 , NULL
3221 , p_hold_source_rec.hold_source_id
3222 , h.HEADER_ID
3223 , ol.line_id
3224 , 'N'
3225 , l_org_id
3226 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3227 WHERE h.OPEN_FLAG = 'Y'
3228 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3229 and h.header_id = ol.header_id
3230 and ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3231 and ol.line_id = p_hold_source_rec.line_id
3232 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3233 and ol.OPEN_FLAG = 'Y'
3234 -- QUOTING change
3235 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3236 and not exists ( select 'x'
3237 from oe_order_holds_ALL oh
3238 where oh.header_id = h.header_id
3239 and oh.line_id = ol.line_id
3240 and oh.hold_source_id =
3241 p_hold_source_rec.hold_source_id );
3242 ELSE
3243 INSERT INTO OE_ORDER_HOLDS_ALL
3244 ( ORDER_HOLD_ID
3245 , LAST_UPDATE_DATE
3246 , LAST_UPDATED_BY
3247 , CREATION_DATE
3248 , CREATED_BY
3249 , LAST_UPDATE_LOGIN
3250 , HOLD_SOURCE_ID
3251 , HEADER_ID
3252 , LINE_ID
3253 , RELEASED_FLAG
3254 , ORG_ID
3255 )
3256 SELECT
3257 OE_ORDER_HOLDS_S.NEXTVAL
3258 , SYSDATE
3259 , l_user_id
3260 , SYSDATE
3261 , l_user_id
3262 , NULL
3263 , p_hold_source_rec.hold_source_id
3264 , h.HEADER_ID
3265 , ol.line_id
3266 , 'N'
3267 , l_org_id
3268 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3269 WHERE h.OPEN_FLAG = 'Y'
3270 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3271 and h.header_id = ol.header_id
3272 and ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3273 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3274 and ol.OPEN_FLAG = 'Y'
3275 -- QUOTING change
3276 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3277 and not exists ( select 'x'
3278 from oe_order_holds_ALL oh
3279 where oh.header_id = h.header_id
3280 and oh.line_id = ol.line_id
3281 and oh.hold_source_id =
3282 p_hold_source_rec.hold_source_id );
3283 END IF;
3284 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
3285 p_hold_source_rec.hold_entity_code2 = 'W' THEN
3286 IF p_hold_source_rec.line_id IS NOT NULL THEN
3287 INSERT INTO OE_ORDER_HOLDS_ALL
3288 ( ORDER_HOLD_ID
3289 , LAST_UPDATE_DATE
3290 , LAST_UPDATED_BY
3291 , CREATION_DATE
3292 , CREATED_BY
3293 , LAST_UPDATE_LOGIN
3294 , HOLD_SOURCE_ID
3295 , HEADER_ID
3296 , LINE_ID
3297 , RELEASED_FLAG
3298 , ORG_ID
3299 )
3300 SELECT
3301 OE_ORDER_HOLDS_S.NEXTVAL
3302 , SYSDATE
3303 , l_user_id
3304 , SYSDATE
3305 , l_user_id
3306 , NULL
3307 , p_hold_source_rec.hold_source_id
3308 , h.HEADER_ID
3309 , ol.line_id
3310 , 'N'
3311 , l_org_id
3312 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3313 WHERE h.OPEN_FLAG = 'Y'
3314 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3315 and h.header_id = ol.header_id
3316 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id2
3317 and ol.line_id = p_hold_source_rec.line_id
3318 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3319 and ol.OPEN_FLAG = 'Y'
3320 -- QUOTING change
3321 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3322 and not exists ( select 'x'
3323 from oe_order_holds_ALL oh
3324 where oh.header_id = h.header_id
3325 and oh.line_id = ol.line_id
3326 and oh.hold_source_id =
3327 p_hold_source_rec.hold_source_id );
3328 ELSE
3329 INSERT INTO OE_ORDER_HOLDS_ALL
3330 ( ORDER_HOLD_ID
3331 , LAST_UPDATE_DATE
3332 , LAST_UPDATED_BY
3333 , CREATION_DATE
3334 , CREATED_BY
3335 , LAST_UPDATE_LOGIN
3336 , HOLD_SOURCE_ID
3337 , HEADER_ID
3338 , LINE_ID
3339 , RELEASED_FLAG
3340 , ORG_ID
3341 )
3342 SELECT
3343 OE_ORDER_HOLDS_S.NEXTVAL
3344 , SYSDATE
3345 , l_user_id
3346 , SYSDATE
3347 , l_user_id
3348 , NULL
3349 , p_hold_source_rec.hold_source_id
3350 , h.HEADER_ID
3351 , ol.line_id
3352 , 'N'
3353 , l_org_id
3354 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3355 WHERE h.OPEN_FLAG = 'Y'
3356 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3357 and h.header_id = ol.header_id
3358 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id2
3359 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3360 and ol.OPEN_FLAG = 'Y'
3361 -- QUOTING change
3362 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3363 and not exists ( select 'x'
3364 from oe_order_holds_ALL oh
3365 where oh.header_id = h.header_id
3366 and oh.line_id = ol.line_id
3367 and oh.hold_source_id =
3368 p_hold_source_rec.hold_source_id );
3369 END IF;
3370 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
3371 p_hold_source_rec.hold_entity_code2 = 'H' THEN
3372 IF p_hold_source_rec.line_id IS NOT NULL THEN
3373 INSERT INTO OE_ORDER_HOLDS_ALL
3374 ( ORDER_HOLD_ID
3375 , LAST_UPDATE_DATE
3376 , LAST_UPDATED_BY
3377 , CREATION_DATE
3378 , CREATED_BY
3379 , LAST_UPDATE_LOGIN
3380 , HOLD_SOURCE_ID
3381 , HEADER_ID
3382 , LINE_ID
3383 , RELEASED_FLAG
3384 , ORG_ID
3385 )
3386 SELECT
3387 OE_ORDER_HOLDS_S.NEXTVAL
3388 , SYSDATE
3389 , l_user_id
3390 , SYSDATE
3391 , l_user_id
3392 , NULL
3393 , p_hold_source_rec.hold_source_id
3394 , h.HEADER_ID
3395 , ol.line_id
3396 , 'N'
3397 , l_org_id
3398 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3399 WHERE h.OPEN_FLAG = 'Y'
3400 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3401 and h.header_id = ol.header_id
3402 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id2
3403 and ol.line_id = p_hold_source_rec.line_id
3404 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3405 and ol.OPEN_FLAG = 'Y'
3406 -- QUOTING change
3407 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3408 and not exists ( select 'x'
3409 from oe_order_holds_ALL oh
3410 where oh.header_id = h.header_id
3411 and oh.line_id = ol.line_id
3412 and oh.hold_source_id =
3413 p_hold_source_rec.hold_source_id );
3414 ELSE
3415 INSERT INTO OE_ORDER_HOLDS_ALL
3416 ( ORDER_HOLD_ID
3417 , LAST_UPDATE_DATE
3418 , LAST_UPDATED_BY
3419 , CREATION_DATE
3420 , CREATED_BY
3421 , LAST_UPDATE_LOGIN
3422 , HOLD_SOURCE_ID
3423 , HEADER_ID
3424 , LINE_ID
3425 , RELEASED_FLAG
3426 , ORG_ID
3427 )
3428 SELECT
3429 OE_ORDER_HOLDS_S.NEXTVAL
3430 , SYSDATE
3431 , l_user_id
3432 , SYSDATE
3433 , l_user_id
3434 , NULL
3435 , p_hold_source_rec.hold_source_id
3436 , h.HEADER_ID
3437 , ol.line_id
3438 , 'N'
3439 , l_org_id
3440 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3441 WHERE h.OPEN_FLAG = 'Y'
3442 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3443 and h.header_id = ol.header_id
3444 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id2
3445 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
3446 and ol.OPEN_FLAG = 'Y'
3447 -- QUOTING change
3448 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3449 and not exists ( select 'x'
3450 from oe_order_holds_ALL oh
3451 where oh.header_id = h.header_id
3452 and oh.line_id = ol.line_id
3453 and oh.hold_source_id =
3454 p_hold_source_rec.hold_source_id );
3455 END IF;
3456
3457 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
3458 p_hold_source_rec.hold_entity_code2 = 'C' THEN
3459 IF p_hold_source_rec.line_id IS NOT NULL THEN
3460 INSERT INTO OE_ORDER_HOLDS_ALL
3461 ( ORDER_HOLD_ID
3462 , LAST_UPDATE_DATE
3463 , LAST_UPDATED_BY
3464 , CREATION_DATE
3465 , CREATED_BY
3466 , LAST_UPDATE_LOGIN
3467 , HOLD_SOURCE_ID
3468 , HEADER_ID
3469 , LINE_ID
3470 , RELEASED_FLAG
3471 , ORG_ID
3472 )
3473 SELECT
3474 OE_ORDER_HOLDS_S.NEXTVAL
3475 , SYSDATE
3476 , l_user_id
3477 , SYSDATE
3478 , l_user_id
3479 , NULL
3480 , p_hold_source_rec.hold_source_id
3481 , h.HEADER_ID
3482 , ol.line_id
3483 , 'N'
3484 , l_org_id
3485 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3486 WHERE h.OPEN_FLAG = 'Y'
3487 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3488 and h.header_id = ol.header_id
3489 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
3490 and ol.line_id = p_hold_source_rec.line_id
3491 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3492 and ol.OPEN_FLAG = 'Y'
3493 -- QUOTING change
3494 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3495 and not exists ( select 'x'
3496 from oe_order_holds_ALL oh
3497 where oh.header_id = h.header_id
3498 and oh.line_id = ol.line_id
3499 and oh.hold_source_id =
3500 p_hold_source_rec.hold_source_id );
3501 ELSE
3502 INSERT INTO OE_ORDER_HOLDS_ALL
3503 ( ORDER_HOLD_ID
3504 , LAST_UPDATE_DATE
3505 , LAST_UPDATED_BY
3506 , CREATION_DATE
3507 , CREATED_BY
3508 , LAST_UPDATE_LOGIN
3509 , HOLD_SOURCE_ID
3510 , HEADER_ID
3511 , LINE_ID
3512 , RELEASED_FLAG
3513 , ORG_ID
3514 )
3515 SELECT
3516 OE_ORDER_HOLDS_S.NEXTVAL
3517 , SYSDATE
3518 , l_user_id
3519 , SYSDATE
3520 , l_user_id
3521 , NULL
3522 , p_hold_source_rec.hold_source_id
3523 , h.HEADER_ID
3524 , ol.line_id
3525 , 'N'
3526 , l_org_id
3527 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3528 WHERE h.OPEN_FLAG = 'Y'
3529 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3530 and h.header_id = ol.header_id
3531 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
3532 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3533 and ol.OPEN_FLAG = 'Y'
3534 -- QUOTING change
3535 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3536 and not exists ( select 'x'
3537 from oe_order_holds_ALL oh
3538 where oh.header_id = h.header_id
3539 and oh.line_id = ol.line_id
3540 and oh.hold_source_id =
3541 p_hold_source_rec.hold_source_id );
3542 END IF;
3543 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
3544 p_hold_source_rec.hold_entity_code2 = 'B' THEN
3545 IF p_hold_source_rec.line_id IS NOT NULL THEN
3546 INSERT INTO OE_ORDER_HOLDS_ALL
3547 ( ORDER_HOLD_ID
3548 , LAST_UPDATE_DATE
3549 , LAST_UPDATED_BY
3550 , CREATION_DATE
3551 , CREATED_BY
3552 , LAST_UPDATE_LOGIN
3553 , HOLD_SOURCE_ID
3554 , HEADER_ID
3555 , LINE_ID
3556 , RELEASED_FLAG
3557 , ORG_ID
3558 )
3559 SELECT
3560 OE_ORDER_HOLDS_S.NEXTVAL
3561 , SYSDATE
3562 , l_user_id
3563 , SYSDATE
3564 , l_user_id
3565 , NULL
3566 , p_hold_source_rec.hold_source_id
3567 , h.HEADER_ID
3568 , ol.line_id
3569 , 'N'
3570 , l_org_id
3571 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3572 WHERE h.OPEN_FLAG = 'Y'
3573 --AND nvl(h.CANCELLED_FLAG, 'N') = 'N'
3574 AND h.header_id = ol.header_id
3575 AND ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
3576 and ol.line_id = p_hold_source_rec.line_id
3577 AND ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3578 and ol.OPEN_FLAG = 'Y'
3579 -- QUOTING change
3580 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3581 AND NOT EXISTS ( SELECT 'x'
3582 FROM oe_order_holds_ALL oh
3583 WHERE oh.header_id = h.header_id
3584 AND oh.line_id = ol.line_id
3585 AND oh.hold_source_id =
3586 p_hold_source_rec.hold_source_id );
3587 ELSE
3588 INSERT INTO OE_ORDER_HOLDS_ALL
3589 ( ORDER_HOLD_ID
3590 , LAST_UPDATE_DATE
3591 , LAST_UPDATED_BY
3592 , CREATION_DATE
3593 , CREATED_BY
3594 , LAST_UPDATE_LOGIN
3595 , HOLD_SOURCE_ID
3596 , HEADER_ID
3597 , LINE_ID
3598 , RELEASED_FLAG
3599 , ORG_ID
3600 )
3601 SELECT
3602 OE_ORDER_HOLDS_S.NEXTVAL
3603 , SYSDATE
3604 , l_user_id
3605 , SYSDATE
3606 , l_user_id
3607 , NULL
3608 , p_hold_source_rec.hold_source_id
3609 , h.HEADER_ID
3610 , ol.line_id
3611 , 'N'
3612 , l_org_id
3613 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3614 WHERE h.OPEN_FLAG = 'Y'
3615 --AND nvl(h.CANCELLED_FLAG, 'N') = 'N'
3616 AND h.header_id = ol.header_id
3617 AND ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
3618 AND ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3619 and ol.OPEN_FLAG = 'Y'
3620 -- QUOTING change
3621 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3622 AND NOT EXISTS ( SELECT 'x'
3623 FROM oe_order_holds_ALL oh
3624 WHERE oh.header_id = h.header_id
3625 AND oh.line_id = ol.line_id
3626 AND oh.hold_source_id =
3627 p_hold_source_rec.hold_source_id );
3628 END IF;
3629 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
3630 p_hold_source_rec.hold_entity_code2 = 'S' THEN
3631 IF p_hold_source_rec.line_id IS NOT NULL THEN
3632 INSERT INTO OE_ORDER_HOLDS_ALL
3633 ( ORDER_HOLD_ID
3634 , LAST_UPDATE_DATE
3635 , LAST_UPDATED_BY
3636 , CREATION_DATE
3637 , CREATED_BY
3638 , LAST_UPDATE_LOGIN
3639 , HOLD_SOURCE_ID
3640 , HEADER_ID
3641 , LINE_ID
3642 , RELEASED_FLAG
3643 , ORG_ID
3644 )
3645 SELECT
3646 OE_ORDER_HOLDS_S.NEXTVAL
3647 , SYSDATE
3648 , l_user_id
3649 , SYSDATE
3650 , l_user_id
3651 , NULL
3652 , p_hold_source_rec.hold_source_id
3653 , h.HEADER_ID
3654 , ol.line_id
3655 , 'N'
3656 , l_org_id
3657 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3658 WHERE h.OPEN_FLAG = 'Y'
3659 --AND nvl(h.CANCELLED_FLAG, 'N') = 'N'
3660 AND ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
3661 and ol.line_id = p_hold_source_rec.line_id
3662 AND h.header_id = ol.header_id
3663 AND ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3664 and ol.OPEN_FLAG = 'Y'
3665 -- QUOTING change
3666 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3667 AND NOT EXISTS ( SELECT 'x'
3668 FROM oe_order_holds_ALL oh
3669 WHERE oh.header_id = h.header_id
3670 AND oh.line_id = ol.line_id
3671 AND oh.hold_source_id =
3672 p_hold_source_rec.hold_source_id );
3673 ELSE
3674 INSERT INTO OE_ORDER_HOLDS_ALL
3675 ( ORDER_HOLD_ID
3676 , LAST_UPDATE_DATE
3677 , LAST_UPDATED_BY
3678 , CREATION_DATE
3679 , CREATED_BY
3680 , LAST_UPDATE_LOGIN
3681 , HOLD_SOURCE_ID
3682 , HEADER_ID
3683 , LINE_ID
3684 , RELEASED_FLAG
3685 , ORG_ID
3686 )
3687 SELECT
3688 OE_ORDER_HOLDS_S.NEXTVAL
3689 , SYSDATE
3690 , l_user_id
3691 , SYSDATE
3692 , l_user_id
3693 , NULL
3694 , p_hold_source_rec.hold_source_id
3695 , h.HEADER_ID
3696 , ol.line_id
3697 , 'N'
3698 , l_org_id
3699 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3700 WHERE h.OPEN_FLAG = 'Y'
3701 --AND nvl(h.CANCELLED_FLAG, 'N') = 'N'
3702 AND ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
3703 AND h.header_id = ol.header_id
3704 AND ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3705 and ol.OPEN_FLAG = 'Y'
3706 -- QUOTING change
3707 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3708 AND NOT EXISTS ( SELECT 'x'
3709 FROM oe_order_holds_ALL oh
3710 WHERE oh.header_id = h.header_id
3711 AND oh.line_id = ol.line_id
3712 AND oh.hold_source_id =
3713 p_hold_source_rec.hold_source_id );
3714 END IF;
3715 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
3716 p_hold_source_rec.hold_entity_code2 = 'B' THEN
3717 IF p_hold_source_rec.line_id IS NOT NULL THEN
3718 INSERT INTO OE_ORDER_HOLDS_ALL
3719 ( ORDER_HOLD_ID
3720 , LAST_UPDATE_DATE
3721 , LAST_UPDATED_BY
3722 , CREATION_DATE
3723 , CREATED_BY
3724 , LAST_UPDATE_LOGIN
3725 , HOLD_SOURCE_ID
3726 , HEADER_ID
3727 , LINE_ID
3728 , RELEASED_FLAG
3729 , ORG_ID
3730 )
3731 SELECT
3732 OE_ORDER_HOLDS_S.NEXTVAL
3733 , SYSDATE
3734 , l_user_id
3735 , SYSDATE
3736 , l_user_id
3737 , NULL
3738 , p_hold_source_rec.hold_source_id
3739 , h.HEADER_ID
3740 , ol.line_id
3741 , 'N'
3742 , l_org_id
3743 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3744 WHERE h.OPEN_FLAG = 'Y'
3745 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3746 and h.header_id = ol.header_id
3747 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3748 and ol.line_id = p_hold_source_rec.line_id
3749 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
3750 and ol.OPEN_FLAG = 'Y'
3751 -- QUOTING change
3752 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3753 and not exists ( select 'x'
3754 from oe_order_holds_ALL oh
3755 where oh.header_id = h.header_id
3756 and oh.line_id = ol.line_id
3757 and oh.hold_source_id =
3758 p_hold_source_rec.hold_source_id );
3759 ELSE
3760 INSERT INTO OE_ORDER_HOLDS_ALL
3761 ( ORDER_HOLD_ID
3762 , LAST_UPDATE_DATE
3763 , LAST_UPDATED_BY
3764 , CREATION_DATE
3765 , CREATED_BY
3766 , LAST_UPDATE_LOGIN
3767 , HOLD_SOURCE_ID
3768 , HEADER_ID
3769 , LINE_ID
3770 , RELEASED_FLAG
3771 , ORG_ID
3772 )
3773 SELECT
3774 OE_ORDER_HOLDS_S.NEXTVAL
3775 , SYSDATE
3776 , l_user_id
3777 , SYSDATE
3778 , l_user_id
3779 , NULL
3780 , p_hold_source_rec.hold_source_id
3781 , h.HEADER_ID
3782 , ol.line_id
3783 , 'N'
3784 , l_org_id
3785 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3786 WHERE h.OPEN_FLAG = 'Y'
3787 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3788 and h.header_id = ol.header_id
3789 and ol.INVOICE_TO_ORG_ID= p_hold_source_rec.hold_entity_id2
3790 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
3791 and ol.OPEN_FLAG = 'Y'
3792 -- QUOTING change
3793 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3794 and not exists ( select 'x'
3795 from oe_order_holds_ALL oh
3796 where oh.header_id = h.header_id
3797 and oh.line_id = ol.line_id
3798 and oh.hold_source_id =
3799 p_hold_source_rec.hold_source_id );
3800 END IF;
3801
3802 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
3803 p_hold_source_rec.hold_entity_code2 = 'S' THEN
3804 IF p_hold_source_rec.line_id IS NOT NULL THEN
3805 INSERT INTO OE_ORDER_HOLDS_ALL
3806 ( ORDER_HOLD_ID
3807 , LAST_UPDATE_DATE
3808 , LAST_UPDATED_BY
3809 , CREATION_DATE
3810 , CREATED_BY
3811 , LAST_UPDATE_LOGIN
3812 , HOLD_SOURCE_ID
3813 , HEADER_ID
3814 , LINE_ID
3815 , RELEASED_FLAG
3816 , ORG_ID
3817 )
3818 SELECT
3819 OE_ORDER_HOLDS_S.NEXTVAL
3820 , SYSDATE
3821 , l_user_id
3822 , SYSDATE
3823 , l_user_id
3824 , NULL
3825 , p_hold_source_rec.hold_source_id
3826 , h.HEADER_ID
3827 , ol.line_id
3828 , 'N'
3829 , l_org_id
3830 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3831 WHERE h.OPEN_FLAG = 'Y'
3832 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3833 and h.header_id = ol.header_id
3834 and ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
3835 and ol.line_id = p_hold_source_rec.line_id
3836 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
3837 and ol.OPEN_FLAG = 'Y'
3838 -- QUOTING change
3839 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3840 and not exists ( select 'x'
3841 from oe_order_holds_ALL oh
3842 where oh.header_id = h.header_id
3843 and oh.line_id = ol.line_id
3844 and oh.hold_source_id =
3845 p_hold_source_rec.hold_source_id );
3846 ELSE
3847 INSERT INTO OE_ORDER_HOLDS_ALL
3848 ( ORDER_HOLD_ID
3849 , LAST_UPDATE_DATE
3850 , LAST_UPDATED_BY
3851 , CREATION_DATE
3852 , CREATED_BY
3853 , LAST_UPDATE_LOGIN
3854 , HOLD_SOURCE_ID
3855 , HEADER_ID
3856 , LINE_ID
3857 , RELEASED_FLAG
3858 , ORG_ID
3859 )
3860 SELECT
3861 OE_ORDER_HOLDS_S.NEXTVAL
3862 , SYSDATE
3863 , l_user_id
3864 , SYSDATE
3865 , l_user_id
3866 , NULL
3867 , p_hold_source_rec.hold_source_id
3868 , h.HEADER_ID
3869 , ol.line_id
3870 , 'N'
3871 , l_org_id
3872 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3873 WHERE h.OPEN_FLAG = 'Y'
3874 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3875 and h.header_id = ol.header_id
3876 and ol.SHIP_TO_ORG_ID= p_hold_source_rec.hold_entity_id2
3877 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
3878 and ol.OPEN_FLAG = 'Y'
3879 -- QUOTING change
3880 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3881 and not exists ( select 'x'
3882 from oe_order_holds_ALL oh
3883 where oh.header_id = h.header_id
3884 and oh.line_id = ol.line_id
3885 and oh.hold_source_id =
3886 p_hold_source_rec.hold_source_id );
3887 END IF;
3888 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
3889 p_hold_source_rec.hold_entity_code2 = 'W' THEN
3890 IF p_hold_source_rec.line_id IS NOT NULL THEN
3891 INSERT INTO OE_ORDER_HOLDS_ALL
3892 ( ORDER_HOLD_ID
3893 , LAST_UPDATE_DATE
3894 , LAST_UPDATED_BY
3895 , CREATION_DATE
3896 , CREATED_BY
3897 , LAST_UPDATE_LOGIN
3898 , HOLD_SOURCE_ID
3899 , HEADER_ID
3900 , LINE_ID
3901 , RELEASED_FLAG
3902 , ORG_ID
3903 )
3904 SELECT
3905 OE_ORDER_HOLDS_S.NEXTVAL
3906 , SYSDATE
3907 , l_user_id
3908 , SYSDATE
3909 , l_user_id
3910 , NULL
3911 , p_hold_source_rec.hold_source_id
3912 , h.HEADER_ID
3913 , ol.line_id
3914 , 'N'
3915 , l_org_id
3916 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3917 WHERE h.OPEN_FLAG = 'Y'
3918 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3919 and h.header_id = ol.header_id
3920 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id2
3921 and ol.line_id = p_hold_source_rec.line_id
3922 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
3923 and ol.OPEN_FLAG = 'Y'
3924 -- QUOTING change
3925 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3926 and not exists ( select 'x'
3927 from oe_order_holds_ALL oh
3928 where oh.header_id = h.header_id
3929 and oh.line_id = ol.line_id
3930 and oh.hold_source_id =
3931 p_hold_source_rec.hold_source_id );
3932 ELSE
3933 INSERT INTO OE_ORDER_HOLDS_ALL
3934 ( ORDER_HOLD_ID
3935 , LAST_UPDATE_DATE
3936 , LAST_UPDATED_BY
3937 , CREATION_DATE
3938 , CREATED_BY
3939 , LAST_UPDATE_LOGIN
3940 , HOLD_SOURCE_ID
3941 , HEADER_ID
3942 , LINE_ID
3943 , RELEASED_FLAG
3944 , ORG_ID
3945 )
3946 SELECT
3947 OE_ORDER_HOLDS_S.NEXTVAL
3948 , SYSDATE
3949 , l_user_id
3950 , SYSDATE
3951 , l_user_id
3952 , NULL
3953 , p_hold_source_rec.hold_source_id
3954 , h.HEADER_ID
3955 , ol.line_id
3956 , 'N'
3957 , l_org_id
3958 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
3959 WHERE h.OPEN_FLAG = 'Y'
3960 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
3961 and h.header_id = ol.header_id
3962 and ol.SHIP_FROM_ORG_ID= p_hold_source_rec.hold_entity_id2
3963 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
3964 and ol.OPEN_FLAG = 'Y'
3965 -- QUOTING change
3966 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
3967 and not exists ( select 'x'
3968 from oe_order_holds_ALL oh
3969 where oh.header_id = h.header_id
3970 and oh.line_id = ol.line_id
3971 and oh.hold_source_id =
3972 p_hold_source_rec.hold_source_id );
3973 END IF;
3974
3975 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
3976 p_hold_source_rec.hold_entity_code2 = 'L' THEN
3977 IF p_hold_source_rec.line_id IS NOT NULL THEN
3978 INSERT INTO OE_ORDER_HOLDS_ALL
3979 ( ORDER_HOLD_ID
3980 , LAST_UPDATE_DATE
3981 , LAST_UPDATED_BY
3982 , CREATION_DATE
3983 , CREATED_BY
3984 , LAST_UPDATE_LOGIN
3985 , HOLD_SOURCE_ID
3986 , HEADER_ID
3987 , LINE_ID
3988 , RELEASED_FLAG
3989 , ORG_ID
3990 )
3991 SELECT
3992 OE_ORDER_HOLDS_S.NEXTVAL
3993 , SYSDATE
3994 , l_user_id
3995 , SYSDATE
3996 , l_user_id
3997 , NULL
3998 , p_hold_source_rec.hold_source_id
3999 , h.HEADER_ID
4000 , ol.line_id
4001 , 'N'
4002 , l_org_id
4003 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4004 WHERE h.OPEN_FLAG = 'Y'
4005 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4006 and h.header_id = ol.header_id
4007 and ol.BLANKET_LINE_NUMBER = p_hold_source_rec.hold_entity_id2
4008 and ol.line_id = p_hold_source_rec.line_id
4009 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
4010 and ol.OPEN_FLAG = 'Y'
4011 -- QUOTING change
4012 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4013 and not exists ( select 'x'
4014 from oe_order_holds_ALL oh
4015 where oh.header_id = h.header_id
4016 and oh.line_id = ol.line_id
4017 and oh.hold_source_id =
4018 p_hold_source_rec.hold_source_id );
4019 ELSE
4020 INSERT INTO OE_ORDER_HOLDS_ALL
4021 ( ORDER_HOLD_ID
4022 , LAST_UPDATE_DATE
4023 , LAST_UPDATED_BY
4024 , CREATION_DATE
4025 , CREATED_BY
4026 , LAST_UPDATE_LOGIN
4027 , HOLD_SOURCE_ID
4028 , HEADER_ID
4029 , LINE_ID
4030 , RELEASED_FLAG
4031 , ORG_ID
4032 )
4033 SELECT
4034 OE_ORDER_HOLDS_S.NEXTVAL
4035 , SYSDATE
4036 , l_user_id
4037 , SYSDATE
4038 , l_user_id
4039 , NULL
4040 , p_hold_source_rec.hold_source_id
4041 , h.HEADER_ID
4042 , ol.line_id
4043 , 'N'
4044 , l_org_id
4045 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4046 WHERE h.OPEN_FLAG = 'Y'
4047 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4048 and h.header_id = ol.header_id
4049 and ol.BLANKET_LINE_NUMBER = p_hold_source_rec.hold_entity_id2
4050 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
4051 and ol.OPEN_FLAG = 'Y'
4052 -- QUOTING change
4053 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4054 and not exists ( select 'x'
4055 from oe_order_holds_ALL oh
4056 where oh.header_id = h.header_id
4057 and oh.line_id = ol.line_id
4058 and oh.hold_source_id =
4059 p_hold_source_rec.hold_source_id );
4060 END IF;
4061
4062 ELSIF p_hold_source_rec.hold_entity_code = 'H' THEN
4063 IF p_hold_source_rec.line_id IS NOT NULL THEN
4064 INSERT INTO OE_ORDER_HOLDS_ALL
4065 ( ORDER_HOLD_ID
4066 , LAST_UPDATE_DATE
4067 , LAST_UPDATED_BY
4068 , CREATION_DATE
4069 , CREATED_BY
4070 , LAST_UPDATE_LOGIN
4071 , HOLD_SOURCE_ID
4072 , HEADER_ID
4073 , LINE_ID
4074 , RELEASED_FLAG
4075 , ORG_ID
4076 )
4077 SELECT
4078 OE_ORDER_HOLDS_S.NEXTVAL
4079 , SYSDATE
4080 , l_user_id
4081 , SYSDATE
4082 , l_user_id
4083 , NULL
4084 , p_hold_source_rec.hold_source_id
4085 , h.HEADER_ID
4086 , ol.line_id
4087 , 'N'
4088 , l_org_id
4089 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4090 WHERE h.OPEN_FLAG = 'Y'
4091 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4092 and h.header_id = ol.header_id
4093 and ol.line_id = p_hold_source_rec.line_id
4094 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
4095 and ol.OPEN_FLAG = 'Y'
4096 -- QUOTING change
4097 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4098 and not exists ( select 'x'
4099 from oe_order_holds_ALL oh
4100 where oh.header_id = h.header_id
4101 and oh.line_id = ol.line_id
4102 and oh.hold_source_id =
4103 p_hold_source_rec.hold_source_id );
4104 ELSE
4105 INSERT INTO OE_ORDER_HOLDS_ALL
4106 ( ORDER_HOLD_ID
4107 , LAST_UPDATE_DATE
4108 , LAST_UPDATED_BY
4109 , CREATION_DATE
4110 , CREATED_BY
4111 , LAST_UPDATE_LOGIN
4112 , HOLD_SOURCE_ID
4113 , HEADER_ID
4114 , LINE_ID
4115 , RELEASED_FLAG
4116 , ORG_ID
4117 )
4118 SELECT
4119 OE_ORDER_HOLDS_S.NEXTVAL
4120 , SYSDATE
4121 , l_user_id
4122 , SYSDATE
4123 , l_user_id
4124 , NULL
4125 , p_hold_source_rec.hold_source_id
4126 , h.HEADER_ID
4127 , ol.line_id
4128 , 'N'
4129 , l_org_id
4130 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4131 WHERE h.OPEN_FLAG = 'Y'
4132 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4133 and h.header_id = ol.header_id
4134 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
4135 and ol.OPEN_FLAG = 'Y'
4136 -- QUOTING change
4137 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4138 and not exists ( select 'x'
4139 from oe_order_holds_ALL oh
4140 where oh.header_id = h.header_id
4141 and oh.line_id = ol.line_id
4142 and oh.hold_source_id =
4143 p_hold_source_rec.hold_source_id );
4144 END IF;
4145
4146 ELSIF p_hold_source_rec.hold_entity_code = 'O' THEN
4147 IF p_hold_source_rec.line_id is NULL THEN
4148 INSERT INTO OE_ORDER_HOLDS_ALL
4149 ( ORDER_HOLD_ID
4150 , LAST_UPDATE_DATE
4151 , LAST_UPDATED_BY
4152 , CREATION_DATE
4153 , CREATED_BY
4154 , LAST_UPDATE_LOGIN
4155 , HOLD_SOURCE_ID
4156 , HEADER_ID
4157 , LINE_ID
4158 , RELEASED_FLAG
4159 , ORG_ID
4160 )
4161 SELECT
4162 OE_ORDER_HOLDS_S.NEXTVAL
4163 , SYSDATE
4164 , l_user_id
4165 , SYSDATE
4166 , l_user_id
4167 , NULL
4168 , p_hold_source_rec.hold_source_id
4169 , h.HEADER_ID
4170 , NULL
4171 , 'N'
4172 , l_org_id
4173 FROM OE_ORDER_HEADERS_ALL h
4174 WHERE h.OPEN_FLAG = 'Y'
4175 and h.header_id = p_hold_source_rec.hold_entity_id
4176 -- QUOTING change
4177 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4178 and not exists ( select 'x'
4179 from oe_order_holds_ALL oh
4180 where oh.header_id = h.header_id
4181 and oh.hold_source_id =
4182 p_hold_source_rec.hold_source_id );
4183 ELSE
4184 INSERT INTO OE_ORDER_HOLDS_ALL
4185 ( ORDER_HOLD_ID
4186 , LAST_UPDATE_DATE
4187 , LAST_UPDATED_BY
4188 , CREATION_DATE
4189 , CREATED_BY
4190 , LAST_UPDATE_LOGIN
4191 , HOLD_SOURCE_ID
4192 , HEADER_ID
4193 , LINE_ID
4194 , RELEASED_FLAG
4195 , ORG_ID
4196 )
4197 SELECT
4198 OE_ORDER_HOLDS_S.NEXTVAL
4199 , SYSDATE
4200 , l_user_id
4201 , SYSDATE
4202 , l_user_id
4203 , NULL
4204 , p_hold_source_rec.hold_source_id
4205 , h.HEADER_ID
4206 , p_hold_source_rec.line_id
4207 , 'N'
4208 , l_org_id
4209 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4210 WHERE h.OPEN_FLAG = 'Y'
4211 and h.header_id = p_hold_source_rec.hold_entity_id
4212 and h.header_id = ol.header_id
4213 and ol.line_id = p_hold_source_rec.line_id
4214 and ol.open_flag = 'Y'
4215 -- QUOTING change
4216 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4217 and not exists ( select 'x'
4218 from oe_order_holds_ALL oh
4219 where oh.header_id = h.header_id
4220 and oh.line_id = ol.line_id
4221 and oh.hold_source_id =
4222 p_hold_source_rec.hold_source_id );
4223 END IF;
4224
4225 ELSIF p_hold_source_rec.hold_entity_code = 'C' THEN
4226 -- Use header_id for Customer based hold source
4227 IF p_hold_source_rec.header_id IS NOT NULL THEN
4228 INSERT INTO OE_ORDER_HOLDS_ALL
4229 ( ORDER_HOLD_ID
4230 , LAST_UPDATE_DATE
4231 , LAST_UPDATED_BY
4232 , CREATION_DATE
4233 , CREATED_BY
4234 , LAST_UPDATE_LOGIN
4235 , HOLD_SOURCE_ID
4236 , HEADER_ID
4237 , LINE_ID
4238 , RELEASED_FLAG
4239 , ORG_ID
4240 )
4241 SELECT
4242 OE_ORDER_HOLDS_S.NEXTVAL
4243 , SYSDATE
4244 , l_user_id
4245 , SYSDATE
4246 , l_user_id
4247 , NULL
4248 , p_hold_source_rec.hold_source_id
4249 , h.HEADER_ID
4250 , NULL
4251 , 'N'
4252 , l_org_id
4253 FROM OE_ORDER_HEADERS_ALL h
4254 WHERE h.OPEN_FLAG = 'Y'
4255 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4256 and h.header_id = p_hold_source_rec.header_id
4257 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id
4258 -- QUOTING change
4259 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4260 and not exists ( select 'x'
4261 from oe_order_holds_ALL oh
4262 where oh.header_id = h.header_id
4263 and oh.hold_source_id =
4264 p_hold_source_rec.hold_source_id );
4265 ELSE
4266 INSERT INTO OE_ORDER_HOLDS_ALL
4267 ( ORDER_HOLD_ID
4268 , LAST_UPDATE_DATE
4269 , LAST_UPDATED_BY
4270 , CREATION_DATE
4271 , CREATED_BY
4272 , LAST_UPDATE_LOGIN
4273 , HOLD_SOURCE_ID
4274 , HEADER_ID
4275 , LINE_ID
4276 , RELEASED_FLAG
4277 , ORG_ID
4278 )
4279 SELECT
4280 OE_ORDER_HOLDS_S.NEXTVAL
4281 , SYSDATE
4282 , l_user_id
4283 , SYSDATE
4284 , l_user_id
4285 , NULL
4286 , p_hold_source_rec.hold_source_id
4287 , h.HEADER_ID
4288 , NULL
4289 , 'N'
4290 , l_org_id
4291 FROM OE_ORDER_HEADERS_ALL h
4292 WHERE h.OPEN_FLAG = 'Y'
4293 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4294 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id
4295 -- QUOTING change
4296 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4297 and not exists ( select 'x'
4298 from oe_order_holds_ALL oh
4299 where oh.header_id = h.header_id
4300 and oh.hold_source_id =
4301 p_hold_source_rec.hold_source_id );
4302 END IF;
4303 ELSIF p_hold_source_rec.hold_entity_code = 'B' THEN
4304 IF p_hold_source_rec.line_id IS NOT NULL THEN
4305 INSERT INTO OE_ORDER_HOLDS_ALL
4306 ( ORDER_HOLD_ID
4307 , LAST_UPDATE_DATE
4308 , LAST_UPDATED_BY
4309 , CREATION_DATE
4310 , CREATED_BY
4311 , LAST_UPDATE_LOGIN
4312 , HOLD_SOURCE_ID
4313 , HEADER_ID
4314 , LINE_ID
4315 , RELEASED_FLAG
4316 , ORG_ID
4317 )
4318 SELECT
4319 OE_ORDER_HOLDS_S.NEXTVAL
4320 , SYSDATE
4321 , l_user_id
4322 , SYSDATE
4323 , l_user_id
4324 , NULL
4325 , p_hold_source_rec.hold_source_id
4326 , h.HEADER_ID
4327 , ol.line_id
4328 , 'N'
4329 , l_org_id
4330 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4331 WHERE h.OPEN_FLAG = 'Y'
4332 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4333 and h.header_id = ol.header_id
4334 and ol.line_id = p_hold_source_rec.line_id
4335 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id
4336 and ol.OPEN_FLAG = 'Y'
4337 -- QUOTING change
4338 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4339 and not exists ( select 'x'
4340 from oe_order_holds_ALL oh
4341 where oh.header_id = h.header_id
4342 and oh.line_id = ol.line_id
4343 and oh.hold_source_id =
4344 p_hold_source_rec.hold_source_id );
4345 ELSE
4346 INSERT INTO OE_ORDER_HOLDS_ALL
4347 ( ORDER_HOLD_ID
4348 , LAST_UPDATE_DATE
4349 , LAST_UPDATED_BY
4350 , CREATION_DATE
4351 , CREATED_BY
4352 , LAST_UPDATE_LOGIN
4353 , HOLD_SOURCE_ID
4354 , HEADER_ID
4355 , LINE_ID
4356 , RELEASED_FLAG
4357 , ORG_ID
4358 )
4359 SELECT
4360 OE_ORDER_HOLDS_S.NEXTVAL
4361 , SYSDATE
4362 , l_user_id
4363 , SYSDATE
4364 , l_user_id
4365 , NULL
4366 , p_hold_source_rec.hold_source_id
4367 , h.HEADER_ID
4368 , ol.line_id
4369 , 'N'
4370 , l_org_id
4371 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4372 WHERE h.OPEN_FLAG = 'Y'
4373 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4374 and h.header_id = ol.header_id
4375 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id
4376 and ol.OPEN_FLAG = 'Y'
4377 -- QUOTING change
4378 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4379 and not exists ( select 'x'
4380 from oe_order_holds_ALL oh
4381 where oh.header_id = h.header_id
4382 and oh.line_id = ol.line_id
4383 and oh.hold_source_id =
4384 p_hold_source_rec.hold_source_id );
4385 END IF;
4386 ELSIF p_hold_source_rec.hold_entity_code = 'S' THEN
4387 IF p_hold_source_rec.line_id IS NOT NULL THEN
4388 INSERT INTO OE_ORDER_HOLDS_ALL
4389 ( ORDER_HOLD_ID
4390 , LAST_UPDATE_DATE
4391 , LAST_UPDATED_BY
4392 , CREATION_DATE
4393 , CREATED_BY
4394 , LAST_UPDATE_LOGIN
4395 , HOLD_SOURCE_ID
4396 , HEADER_ID
4397 , LINE_ID
4398 , RELEASED_FLAG
4399 , ORG_ID
4400 )
4401 SELECT
4402 OE_ORDER_HOLDS_S.NEXTVAL
4403 , SYSDATE
4404 , l_user_id
4405 , SYSDATE
4406 , l_user_id
4407 , NULL
4408 , p_hold_source_rec.hold_source_id
4409 , h.HEADER_ID
4410 , ol.line_id
4411 , 'N'
4412 , l_org_id
4413 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4414 WHERE h.OPEN_FLAG = 'Y'
4415 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4416 and h.header_id = ol.header_id
4417 and ol.line_id = p_hold_source_rec.line_id
4418 and ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id
4419 and ol.OPEN_FLAG = 'Y'
4420 -- QUOTING change
4421 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4422 and not exists ( select 'x'
4423 from oe_order_holds_ALL oh
4424 where oh.header_id = h.header_id
4425 and oh.line_id = ol.line_id
4426 and oh.hold_source_id =
4427 p_hold_source_rec.hold_source_id );
4428 ELSE
4429 INSERT INTO OE_ORDER_HOLDS_ALL
4430 ( ORDER_HOLD_ID
4431 , LAST_UPDATE_DATE
4432 , LAST_UPDATED_BY
4433 , CREATION_DATE
4434 , CREATED_BY
4435 , LAST_UPDATE_LOGIN
4436 , HOLD_SOURCE_ID
4437 , HEADER_ID
4438 , LINE_ID
4439 , RELEASED_FLAG
4440 , ORG_ID
4441 )
4442 SELECT
4443 OE_ORDER_HOLDS_S.NEXTVAL
4444 , SYSDATE
4445 , l_user_id
4446 , SYSDATE
4447 , l_user_id
4448 , NULL
4449 , p_hold_source_rec.hold_source_id
4450 , h.HEADER_ID
4451 , ol.line_id
4452 , 'N'
4453 , l_org_id
4454 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4455 WHERE h.OPEN_FLAG = 'Y'
4456 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4457 and h.header_id = ol.header_id
4458 and ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id
4459 and ol.OPEN_FLAG = 'Y'
4460 -- QUOTING change
4461 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4462 and not exists ( select 'x'
4463 from oe_order_holds_ALL oh
4464 where oh.header_id = h.header_id
4465 and oh.line_id = ol.line_id
4466 and oh.hold_source_id =
4467 p_hold_source_rec.hold_source_id );
4468 END IF;
4469 ELSIF p_hold_source_rec.hold_entity_code = 'W' THEN
4470 IF p_hold_source_rec.line_id IS NOT NULL THEN
4471 INSERT INTO OE_ORDER_HOLDS_ALL
4472 ( ORDER_HOLD_ID
4473 , LAST_UPDATE_DATE
4474 , LAST_UPDATED_BY
4475 , CREATION_DATE
4476 , CREATED_BY
4477 , LAST_UPDATE_LOGIN
4478 , HOLD_SOURCE_ID
4479 , HEADER_ID
4480 , LINE_ID
4481 , RELEASED_FLAG
4482 , ORG_ID
4483 )
4484 SELECT
4485 OE_ORDER_HOLDS_S.NEXTVAL
4486 , SYSDATE
4487 , l_user_id
4488 , SYSDATE
4489 , l_user_id
4490 , NULL
4491 , p_hold_source_rec.hold_source_id
4492 , h.HEADER_ID
4493 , ol.line_id
4494 , 'N'
4495 , l_org_id
4496 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4497 WHERE h.OPEN_FLAG = 'Y'
4498 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4499 and h.header_id = ol.header_id
4500 and ol.line_id = p_hold_source_rec.line_id
4501 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
4502 and ol.OPEN_FLAG = 'Y'
4503 -- QUOTING change
4504 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4505 and not exists ( select 'x'
4506 from oe_order_holds_ALL oh
4507 where oh.header_id = h.header_id
4508 and oh.line_id = ol.line_id
4509 and oh.hold_source_id =
4510 p_hold_source_rec.hold_source_id );
4511 ELSE
4512 INSERT INTO OE_ORDER_HOLDS_ALL
4513 ( ORDER_HOLD_ID
4514 , LAST_UPDATE_DATE
4515 , LAST_UPDATED_BY
4516 , CREATION_DATE
4517 , CREATED_BY
4518 , LAST_UPDATE_LOGIN
4519 , HOLD_SOURCE_ID
4520 , HEADER_ID
4521 , LINE_ID
4522 , RELEASED_FLAG
4523 , ORG_ID
4524 )
4525 SELECT
4526 OE_ORDER_HOLDS_S.NEXTVAL
4527 , SYSDATE
4528 , l_user_id
4529 , SYSDATE
4530 , l_user_id
4531 , NULL
4532 , p_hold_source_rec.hold_source_id
4533 , h.HEADER_ID
4534 , ol.line_id
4535 , 'N'
4536 , l_org_id
4537 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4538 WHERE h.OPEN_FLAG = 'Y'
4539 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4540 and h.header_id = ol.header_id
4541 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
4542 and ol.OPEN_FLAG = 'Y'
4543 -- QUOTING change
4544 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4545 and not exists ( select 'x'
4546 from oe_order_holds_ALL oh
4547 where oh.header_id = h.header_id
4548 and oh.line_id = ol.line_id
4549 and oh.hold_source_id =
4550 p_hold_source_rec.hold_source_id );
4551 END IF;
4552 ELSIF p_hold_source_rec.hold_entity_code = 'I' THEN
4553 IF p_hold_source_rec.line_id IS NOT NULL THEN
4554 INSERT INTO OE_ORDER_HOLDS_ALL
4555 ( ORDER_HOLD_ID
4556 , LAST_UPDATE_DATE
4557 , LAST_UPDATED_BY
4558 , CREATION_DATE
4559 , CREATED_BY
4560 , LAST_UPDATE_LOGIN
4561 , HOLD_SOURCE_ID
4562 , HEADER_ID
4563 , LINE_ID
4564 , RELEASED_FLAG
4565 , ORG_ID
4566 )
4567 SELECT
4568 OE_ORDER_HOLDS_S.NEXTVAL
4569 , SYSDATE
4570 , l_user_id
4571 , SYSDATE
4572 , l_user_id
4573 , NULL
4574 , p_hold_source_rec.hold_source_id
4575 , h.HEADER_ID
4576 , ol.line_id
4577 , 'N'
4578 , l_org_id
4579 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4580 WHERE h.OPEN_FLAG = 'Y'
4581 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4582 and h.header_id = ol.header_id
4583 and ol.line_id = p_hold_source_rec.line_id
4584 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
4585 and ol.OPEN_FLAG = 'Y'
4586 -- QUOTING change
4587 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4588 and not exists ( select 'x'
4589 from oe_order_holds_ALL oh
4590 where oh.header_id = h.header_id
4591 and oh.line_id = ol.line_id
4592 and oh.hold_source_id =
4593 p_hold_source_rec.hold_source_id );
4594 ELSE
4595 INSERT INTO OE_ORDER_HOLDS_ALL
4596 ( ORDER_HOLD_ID
4597 , LAST_UPDATE_DATE
4598 , LAST_UPDATED_BY
4599 , CREATION_DATE
4600 , CREATED_BY
4601 , LAST_UPDATE_LOGIN
4602 , HOLD_SOURCE_ID
4603 , HEADER_ID
4604 , LINE_ID
4605 , RELEASED_FLAG
4606 , ORG_ID
4607 )
4608 SELECT
4609 OE_ORDER_HOLDS_S.NEXTVAL
4610 , SYSDATE
4611 , l_user_id
4612 , SYSDATE
4613 , l_user_id
4614 , NULL
4615 , p_hold_source_rec.hold_source_id
4616 , h.HEADER_ID
4617 , ol.line_id
4618 , 'N'
4619 , l_org_id
4620 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
4621 WHERE h.OPEN_FLAG = 'Y'
4622 --and nvl(h.CANCELLED_FLAG, 'N') = 'N'
4623 and h.header_id = ol.header_id
4624 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
4625 and ol.OPEN_FLAG = 'Y'
4626 -- QUOTING change
4627 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
4628 and not exists ( select 'x'
4629 from oe_order_holds_ALL oh
4630 where oh.header_id = h.header_id
4631 and oh.line_id = ol.line_id
4632 and oh.hold_source_id =
4633 p_hold_source_rec.hold_source_id );
4634 END IF;
4635 END IF;
4636 -- Moved to Overloaded procedure under Bug 6801108
4637 -- GENESIS --
4638 IF p_hold_source_rec.line_id IS NOT NULL THEN
4639
4640 IF l_debug_level > 0 THEN
4641 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - p_hold_source_rec.line_id IS NOT NULL');
4642 END IF;
4643
4644 OPEN check_line_hold_type_cur(p_hold_source_rec.line_id);
4645 FETCH check_line_hold_type_cur INTO l_check_hold;
4646 CLOSE check_line_hold_type_cur;
4647 IF l_debug_level > 0 THEN
4648 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - l_check_hold' || l_check_hold);
4649 END IF;
4650
4651 ELSIF p_hold_source_rec.line_id IS NULL AND
4652 p_hold_source_rec.header_id IS NOT NULL THEN
4653
4654 IF l_debug_level > 0 THEN
4655 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - p_hold_source_rec.header_id IS NOT NULL');
4656 END IF;
4657 OPEN check_hdr_hold_type_cur(p_hold_source_rec.header_id);
4658 FETCH check_hdr_hold_type_cur INTO l_check_hold;
4659 CLOSE check_hdr_hold_type_cur;
4660 IF l_debug_level > 0 THEN
4661 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - l_check_hold' || l_check_hold);
4662 END IF;
4663
4664 ELSIF p_hold_source_rec.line_id IS NULL AND
4665 p_hold_source_rec.header_id IS NULL AND
4666 p_hold_source_rec.hold_source_id IS NOT NULL THEN
4667
4668 IF l_debug_level > 0 THEN
4669 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - p_hold_source_rec.hold_source_id IS NOT NULL');
4670 END IF;
4671 OPEN check_src_hold_type_cur(p_hold_source_rec.hold_source_id);
4672 FETCH check_src_hold_type_cur INTO l_check_hold;
4673 CLOSE check_src_hold_type_cur;
4674
4675 IF l_debug_level > 0 THEN
4676 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - l_check_hold :' || l_check_hold);
4677 END IF;
4678
4679 END IF;
4680
4681 IF l_debug_level > 0 THEN
4682 oe_debug_pub.add( 'OE_HOLDS_PVT - CREATE ORDER HOLDS - BEFORE SYNC_HEADER_LINE');
4683 END IF;
4684
4685 IF NVL(l_check_hold, 'N') = 'Y' THEN
4686
4687 IF l_debug_level > 0 THEN
4688 oe_debug_pub.add( 'OE_HOLDS_PVT - CREATE ORDER HOLDS - l_check_hold: ' || l_check_hold);
4689 END IF;
4690
4691 IF p_hold_source_rec.hold_entity_code = 'O' THEN
4692 IF l_debug_level > 0 THEN
4693 oe_debug_pub.add(' p_hold_source_rec.hold_entity_code ' || p_hold_source_rec.hold_entity_code);
4694 END IF;
4695 IF p_hold_source_rec.hold_entity_id is NOT NULL THEN
4696 IF l_debug_level > 0 THEN
4697 oe_debug_pub.add(' p_hold_source_rec.hold_entity_id : ' || p_hold_source_rec.hold_entity_id);
4698 END IF;
4699 oe_header_util.query_row ( p_header_id => p_hold_source_rec.hold_entity_id,
4700 x_header_rec => l_header_rec);
4701 END IF; -- p_hold_source_rec.hold_entity_id is NOT NULL
4702
4703 IF p_hold_source_rec.line_id is not NULL THEN
4704 IF l_debug_level > 0 THEN
4705 oe_debug_pub.add(' p_hold_source_rec.line_id : ' || p_hold_source_rec.line_id );
4706 END IF;
4707 oe_line_util.query_row(
4708 p_line_id => p_hold_source_rec.line_id
4709 ,x_line_rec => l_line_rec
4710 );
4711 END IF;
4712
4713 -- XXXX Do we need to generate req_id here
4714 OE_SYNC_ORDER_PVT.SYNC_HEADER_LINE(p_header_rec => l_header_rec
4715 ,p_line_rec => l_line_rec
4716 ,p_hold_source_id => p_hold_source_rec.hold_source_id
4717 ,p_change_type => 'APPLY');
4718 ELSE --p_hold_source_rec.hold_entity_code = 'O'
4719
4720 IF l_debug_level > 0 THEN
4721 oe_debug_pub.add(' p_hold_source_rec.hold_entity_code ' || p_hold_source_rec.hold_entity_code);
4722 END IF;
4723
4724 IF p_hold_source_rec.header_id is NOT NULL THEN
4725 oe_header_util.query_row ( p_header_id => p_hold_source_rec.header_id,
4726 x_header_rec => l_header_rec);
4727 END IF;
4728 IF p_hold_source_rec.line_id is not NULL THEN
4729 oe_line_util.query_row(
4730 p_line_id => p_hold_source_rec.line_id
4731 ,x_line_rec => l_line_rec
4732 );
4733 END IF;
4734 -- IF(p_hold_source_rec.header_id IS NOT NULL OR p_hold_source_rec.line_id IS NOT NULL) THEN
4735 -- XXXX Do we need to generate req_id here
4736 OE_SYNC_ORDER_PVT.SYNC_HEADER_LINE(p_header_rec => l_header_rec
4737 ,p_line_rec => l_line_rec
4738 ,p_hold_source_id => p_hold_source_rec.hold_source_id
4739 ,p_change_type => 'APPLY');
4740 -- END IF; Bug 6791576
4741 END IF; --p_hold_source_rec.hold_entity_code = 'O'
4742 END IF;*/
4743 -- GENESIS --
4744 EXCEPTION
4745 WHEN FND_API.G_EXC_ERROR THEN
4746 --ROLLBACK TO APPLY_HOLDS_PUB;
4747 x_return_status := FND_API.G_RET_STS_ERROR;
4748 OE_MSG_PUB.Count_And_Get
4749 ( p_count => x_msg_count
4750 , p_data => x_msg_data
4751 );
4752 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4753 --ROLLBACK TO APPLY_HOLDS_PUB;
4754 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4755 OE_MSG_PUB.Count_And_Get
4756 ( p_count => x_msg_count
4757 , p_data => x_msg_data
4758 );
4759 WHEN OTHERS THEN
4760 --ROLLBACK TO APPLY_HOLDS_PUB;
4761 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4762 IF OE_MSG_PUB.Check_Msg_Level
4763 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4764 THEN
4765 OE_MSG_PUB.Add_Exc_Msg
4766 ( G_PKG_NAME
4767 , l_api_name
4768 );
4769 END IF;
4770 OE_MSG_PUB.Count_And_Get
4771 ( p_count => x_msg_count
4772 , p_data => x_msg_data
4773 );
4774
4775 END Create_Order_Holds;
4776
4777
4778 Procedure Release_Order_holds (
4779 p_hold_release_rec IN OE_HOLDS_PVT.hold_release_rec_type,
4780 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
4781 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
4782 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2 )
4783 IS
4784 -- GENESIS --
4785 CURSOR check_hold_typ_cur(p_hld_src_id IN NUMBER) IS
4786 SELECT 'Y'
4787 FROM DUAL
4788 WHERE EXISTS (SELECT NULL
4789 FROM oe_hold_sources ohs,
4790 oe_hold_definitions ohd
4791 WHERE ohd.hold_id = ohs.hold_id
4792 -- AND ohd.activity_name IS NULL Bug 6791587
4793 AND ohs.hold_source_id = p_hld_src_id
4794 AND ohs.hold_entity_code <> 'O');
4795
4796 l_chk_hld VARCHAR2(1) := 'N';
4797 -- GENESIS --
4798
4799 l_user_id NUMBER;
4800 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4801
4802 BEGIN
4803 x_return_status := FND_API.G_RET_STS_SUCCESS;
4804 l_user_id := OE_HOLDS_PVT.get_user_id;
4805 -- Flag all orders and order line holds for this hold source
4806 -- as released
4807 UPDATE oe_order_holds
4808 SET hold_release_id = p_hold_release_rec.hold_release_id,
4809 LAST_UPDATED_BY = l_user_id,
4810 LAST_UPDATE_DATE = sysdate,
4811 RELEASED_FLAG = 'Y'
4812 WHERE hold_source_id = p_hold_release_rec.hold_source_id
4813 AND hold_release_id IS NULL;
4814 -- XXX ??
4815 -- If the entity code is order, then release hold source also, if no
4816 -- other order hold records exist for this hold source. This would
4817 -- be the case if selected lines of an order were put on hold.
4818 -- IF l_entity_code = 'O' THEN
4819 -- END IF;
4820 -- GENESIS --
4821 IF l_debug_level > 0 THEN
4822 oe_debug_pub.add( 'OE_HOLDS_PVT - RELEASE ORDER HOLDS - BEFORE GENESIS CALL');
4823 END IF;
4824 OPEN check_hold_typ_cur(p_hold_release_rec.hold_source_id);
4825 FETCH check_hold_typ_cur INTO l_chk_hld;
4826 CLOSE check_hold_typ_cur;
4827
4828 IF NVL(l_chk_hld, 'N') = 'Y' THEN
4829 IF l_debug_level > 0 THEN
4830 oe_debug_pub.add( 'OE_HOLDS_PVT - RELEASE ORDER HOLDS - BEFORE SYNC_HEADER_LINE');
4831 oe_debug_pub.add( 'OE_HOLDS_PVT - hold_source _id '|| p_hold_release_rec.hold_source_id);
4832 oe_debug_pub.add( 'OE_HOLDS_PVT - hold_release_id' ||p_hold_release_rec.hold_release_id);
4833 END IF;
4834 -- XXXX Do we need to generate req_id here
4835 OE_SYNC_ORDER_PVT.SYNC_HEADER_LINE(p_header_rec => NULL
4836 ,p_line_rec => NULL
4837 ,p_hold_source_id => p_hold_release_rec.hold_source_id
4838 ,p_change_type => 'RELEASE'
4839 ,p_hold_release_id => p_hold_release_rec.hold_release_id);
4840 END IF;
4841 -- GENESIS --
4842 END Release_Order_holds;
4843
4844
4845
4846 PROCEDURE Create_Release_Source (
4847 p_hold_release_rec IN OE_Holds_Pvt.Hold_Release_Rec_type,
4848 x_hold_release_id OUT NOCOPY /* file.sql.39 change */ oe_hold_releases.HOLD_RELEASE_ID%type,
4849 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
4850 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
4851 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
4852 )
4853 IS
4854 l_dummy VARCHAR2(30);
4855 l_user_id NUMBER;
4856 l_hold_release_rec OE_Holds_Pvt.Hold_Release_Rec_type;
4857 BEGIN
4858
4859 -- Fix For Bug 1903900
4860 SAVEPOINT insert_hold_release;
4861 x_return_status := FND_API.G_RET_STS_SUCCESS;
4862
4863 l_user_id := OE_HOLDS_PVT.get_user_id;
4864
4865 -- Validate Reason Code
4866 BEGIN
4867
4868 SELECT 'x'
4869 INTO l_dummy
4870 FROM OE_LOOKUPS
4871 WHERE LOOKUP_TYPE = 'RELEASE_REASON'
4872 AND LOOKUP_CODE = p_hold_release_rec.release_reason_code;
4873
4874 EXCEPTION
4875
4876 WHEN NO_DATA_FOUND THEN
4877 oe_debug_pub.add('Invalid Reason Code:' ||
4878 p_hold_release_rec.release_reason_code ,2);
4879 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_REASON_CODE');
4880 FND_MESSAGE.SET_TOKEN('REASON_CODE',
4881 p_hold_release_rec.release_reason_code);
4882 OE_MSG_PUB.ADD;
4883 RAISE FND_API.G_EXC_ERROR;
4884
4885 END; -- Validate Reason Code
4886
4887 SELECT OE_HOLD_RELEASES_S.NEXTVAL
4888 INTO x_hold_release_id
4889 FROM DUAL;
4890
4891 oe_debug_pub.add('Creating OE_HOLD_RELEASES record', 1);
4892 /*Bug3042838 Added nvl condition for insertion into CREATED_BY column */
4893 INSERT INTO OE_HOLD_RELEASES
4894 ( HOLD_RELEASE_ID
4895 , CREATION_DATE
4896 , CREATED_BY
4897 , LAST_UPDATE_DATE
4898 , LAST_UPDATED_BY
4899 , LAST_UPDATE_LOGIN
4900 , PROGRAM_APPLICATION_ID
4901 , PROGRAM_ID
4902 , PROGRAM_UPDATE_DATE
4903 , REQUEST_ID
4904 , HOLD_SOURCE_ID
4905 , RELEASE_REASON_CODE
4906 , RELEASE_COMMENT
4907 , CONTEXT
4908 , ATTRIBUTE1
4909 , ATTRIBUTE2
4910 , ATTRIBUTE3
4911 , ATTRIBUTE4
4912 , ATTRIBUTE5
4913 , ATTRIBUTE6
4914 , ATTRIBUTE7
4915 , ATTRIBUTE8
4916 , ATTRIBUTE9
4917 , ATTRIBUTE10
4918 , ATTRIBUTE11
4919 , ATTRIBUTE12
4920 , ATTRIBUTE13
4921 , ATTRIBUTE14
4922 , ATTRIBUTE15
4923 )
4924 VALUES
4925 ( x_hold_release_id
4926 , sysdate
4927 , nvl(p_hold_release_rec.CREATED_BY,l_user_id)
4928 , sysdate
4929 , l_user_id
4930 , p_hold_release_rec.LAST_UPDATE_LOGIN
4931 , p_hold_release_rec.PROGRAM_APPLICATION_ID
4932 , p_hold_release_rec.PROGRAM_ID
4933 , p_hold_release_rec.PROGRAM_UPDATE_DATE
4934 , p_hold_release_rec.REQUEST_ID
4935 , p_hold_release_rec.HOLD_SOURCE_ID
4936 , p_hold_release_rec.RELEASE_REASON_CODE
4937 , p_hold_release_rec.RELEASE_COMMENT
4938 , p_hold_release_rec.CONTEXT
4939 , p_hold_release_rec.ATTRIBUTE1
4940 , p_hold_release_rec.ATTRIBUTE2
4941 , p_hold_release_rec.ATTRIBUTE3
4942 , p_hold_release_rec.ATTRIBUTE4
4943 , p_hold_release_rec.ATTRIBUTE5
4944 , p_hold_release_rec.ATTRIBUTE6
4945 , p_hold_release_rec.ATTRIBUTE7
4946 , p_hold_release_rec.ATTRIBUTE8
4947 , p_hold_release_rec.ATTRIBUTE9
4948 , p_hold_release_rec.ATTRIBUTE10
4949 , p_hold_release_rec.ATTRIBUTE11
4950 , p_hold_release_rec.ATTRIBUTE12
4951 , p_hold_release_rec.ATTRIBUTE13
4952 , p_hold_release_rec.ATTRIBUTE14
4953 , p_hold_release_rec.ATTRIBUTE15
4954 );
4955
4956 -- Flag the hold source as released
4957
4958 oe_debug_pub.add('Updating oe_hold_sources for Release', 1);
4959 --ER#7479609 UPDATE oe_hold_sources
4960 UPDATE oe_hold_sources_all --ER#7479609
4961 SET hold_release_id = x_hold_release_id
4962 , released_flag = 'Y'
4963 , LAST_UPDATED_BY = l_user_id
4964 , LAST_UPDATE_DATE = sysdate
4965 WHERE hold_source_id = p_hold_release_rec.HOLD_SOURCE_ID;
4966
4967 -- l_hold_release_rec := p_hold_release_rec;
4968 -- l_hold_release_rec.hold_release_id := x_hold_release_id;
4969
4970 EXCEPTION
4971 WHEN FND_API.G_EXC_ERROR THEN
4972 x_return_status := FND_API.G_RET_STS_ERROR;
4973 ROLLBACK TO insert_hold_release;
4974 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4975 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4976 ROLLBACK TO insert_hold_release;
4977 WHEN OTHERS THEN
4978 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4979 OE_MSG_PUB.Add_Exc_Msg
4980 (G_PKG_NAME
4981 ,'Insert_Hold_Release');
4982 END IF;
4983 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4984 ROLLBACK TO insert_hold_release;
4985
4986 END Create_Release_Source;
4987
4988 Procedure Release_Hold_Source (
4989 p_hold_source_rec IN OE_HOLDS_PVT.Hold_source_Rec_Type,
4990 p_hold_release_rec IN OE_HOLDS_PVT.hold_release_rec_type,
4991 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
4992 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
4993 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
4994 )
4995 IS
4996 l_hold_release_rec OE_HOLDS_PVT.hold_release_rec_type;
4997 l_hold_release_id oe_hold_releases.HOLD_RELEASE_ID%type;
4998 --
4999 CURSOR hold_source IS
5000 SELECT HS.HOLD_SOURCE_ID
5001 FROM OE_HOLD_SOURCES HS
5002 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
5003 AND HS.RELEASED_FLAG = 'N'
5004 --AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE
5005 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
5006 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
5007 AND nvl(HS.HOLD_ENTITY_CODE2, 'NO_ENTITY_CODE2') =
5008 nvl(p_hold_source_rec.hold_entity_code2, 'NO_ENTITY_CODE2')
5009 AND nvl(HS.HOLD_ENTITY_ID2, -99) =
5010 nvl(p_hold_source_rec.hold_entity_id2, -99);
5011
5012 CURSOR order_hold_source IS
5013 SELECT HS.HOLD_SOURCE_ID
5014 FROM OE_HOLD_SOURCES HS
5015 WHERE HS.HOLD_ID = p_hold_source_rec.hold_id
5016 AND HS.RELEASED_FLAG = 'N'
5017 --AND NVL(HS.HOLD_UNTIL_DATE, SYSDATE + 1) > SYSDATE
5018 AND HS.HOLD_ENTITY_CODE = p_hold_source_rec.hold_entity_code
5019 AND HS.HOLD_ENTITY_ID = p_hold_source_rec.hold_entity_id
5020 AND HS.HOLD_ENTITY_CODE2 is null
5021 AND HS.HOLD_ENTITY_ID2 is null
5022 -- AND nvl(HS.HOLD_ENTITY_CODE2, 'NO_ENTITY_CODE2') =
5023 -- nvl(p_hold_source_rec.hold_entity_code2, 'NO_ENTITY_CODE2')
5024 -- AND nvl(HS.HOLD_ENTITY_ID2, -99) =
5025 -- nvl(p_hold_source_rec.hold_entity_id2, -99)
5026 AND EXISTS (select 1
5027 from oe_order_holds oh
5028 where oh.hold_source_id = hs.hold_source_id
5029 and oh.header_id =
5030 nvl(p_hold_source_rec.header_id, oh.header_id)
5031 and nvl(oh.line_id, -99) =
5032 nvl(p_hold_source_rec.line_id, -99));
5033 BEGIN
5034 x_return_status := FND_API.G_RET_STS_SUCCESS;
5035 l_hold_release_rec := p_hold_release_rec;
5036
5037 -- Retrieving hold source ID if not passed
5038 IF p_hold_source_rec.hold_source_id IS NULL THEN
5039 IF p_hold_source_rec.hold_entity_code = 'O' AND
5040 p_hold_source_rec.hold_entity_code2 is null THEN
5041 oe_debug_pub.add('Releasing Order based holds', 1);
5042 OPEN order_hold_source;
5043 FETCH order_hold_source INTO l_hold_release_rec.hold_source_id;
5044 IF (order_hold_source%NOTFOUND) THEN
5045 /* Note:Fix for bug#2669137 */
5046 /*
5047 oe_debug_pub.add('Missing Order Hold Source ID...',1);
5048 oe_debug_pub.add('Entity Code/ID/Header_id/Line_id' ||
5049 p_hold_source_rec.hold_entity_code || '/' ||
5050 to_char(p_hold_source_rec.hold_entity_id) || '/' ||
5051 p_hold_source_rec.header_id || '/' ||
5052 p_hold_source_rec.line_id,1);
5053 oe_debug_pub.add('Entity Code2/ID2' ||
5054 p_hold_source_rec.hold_entity_code2 || '/' ||
5055 to_char(p_hold_source_rec.hold_entity_id2) ,1);
5056 FND_MESSAGE.SET_NAME('ONT', 'OE_MISSING_HOLD_SOURCE');
5057 OE_MSG_PUB.ADD;
5058 RAISE FND_API.G_EXC_ERROR;
5059 */
5060 CLOSE order_hold_source;
5061 RETURN;
5062 END IF; -- order_hold_source%NOTFOUND
5063 CLOSE order_hold_source;
5064 ELSE
5065 OPEN hold_source;
5066 FETCH hold_source INTO l_hold_release_rec.hold_source_id;
5067 IF (hold_source%NOTFOUND) THEN
5068 oe_debug_pub.add('Missing Hold Source ID...',1);
5069 oe_debug_pub.add('Entity Code/ID' ||
5070 p_hold_source_rec.hold_entity_code || '/' ||
5071 to_char(p_hold_source_rec.hold_entity_id) ,1);
5072 oe_debug_pub.add('Entity Code2/ID2' ||
5073 p_hold_source_rec.hold_entity_code2 || '/' ||
5074 to_char(p_hold_source_rec.hold_entity_id2) ,1);
5075 FND_MESSAGE.SET_NAME('ONT', 'OE_MISSING_HOLD_SOURCE');
5076 OE_MSG_PUB.ADD;
5077 RAISE FND_API.G_EXC_ERROR;
5078 END IF; -- hold_source%NOTFOUND
5079 CLOSE hold_source;
5080 END IF; -- p_hold_source_rec.hold_entity_code = 'O'
5081 ELSE
5082 l_hold_release_rec.hold_source_id := p_hold_source_rec.hold_source_id;
5083 oe_debug_pub.add('Using Hold Source ID:' ||
5084 to_char(l_hold_release_rec.hold_source_id) ,1);
5085 END IF;
5086
5087 OE_HOLDS_PVT.Create_Release_Source(p_hold_release_rec => l_hold_release_rec,
5088 x_hold_release_id => l_hold_release_id,
5089 x_return_status => x_return_status,
5090 x_msg_count => x_msg_count,
5091 x_msg_data => x_msg_data);
5092
5093 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5094 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5095 RAISE FND_API.G_EXC_ERROR;
5096 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
5097 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5098 END IF;
5099 END IF;
5100 oe_debug_pub.add('Calling Release_Order_holds using l_hold_release_id' ||
5101 to_char(l_hold_release_id) ,1);
5102 l_hold_release_rec.hold_release_id := l_hold_release_id;
5103
5104 OE_HOLDS_PVT.Release_Order_holds(
5105 p_hold_release_rec => l_hold_release_rec,
5106 x_return_status => x_return_status,
5107 x_msg_count => x_msg_count,
5108 x_msg_data => x_msg_data);
5109
5110 EXCEPTION
5111 WHEN FND_API.G_EXC_ERROR THEN
5112 x_return_status := FND_API.G_RET_STS_ERROR;
5113 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5114 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5115 WHEN OTHERS THEN
5116 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5117 OE_MSG_PUB.Add_Exc_Msg (G_PKG_NAME
5118 ,'Insert_Hold_Release');
5119 END IF;
5120 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5121
5122 END Release_Hold_Source;
5123
5124
5125
5126
5127 Procedure Validate_Order(p_header_id IN OE_ORDER_HEADERS.header_id%type,
5128 p_line_id IN OE_ORDER_LINES.line_id%type,
5129 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5130 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5131 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
5132 IS
5133 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Order';
5134 l_dummy VARCHAR2(30);
5135 l_header_id OE_ORDER_HEADERS.header_id%type;
5136 BEGIN
5137 x_return_status := FND_API.G_RET_STS_SUCCESS;
5138
5139 IF p_line_id IS NULL AND p_header_id IS NULL THEN
5140 FND_MESSAGE.SET_NAME('ONT', 'OE_ENTER_HEADER_OR_LINE_ID');
5141 OE_MSG_PUB.ADD;
5142 RAISE FND_API.G_EXC_ERROR;
5143 ELSIF p_header_id IS NULL THEN
5144 l_dummy := 'LINE'; -- Added for bug 7112725
5145 SELECT header_id
5146 INTO l_header_id
5147 FROM OE_ORDER_LINES
5148 WHERE LINE_ID = p_line_id;
5149 ELSE
5150 l_dummy := 'HEADER'; -- Added for bug 7112725
5151 SELECT 'Valid Entity'
5152 INTO l_dummy
5153 FROM OE_ORDER_HEADERS
5154 WHERE HEADER_ID = p_header_id;
5155 END IF;
5156 EXCEPTION
5157 WHEN NO_DATA_FOUND THEN
5158 -- Modified below code for bug 7112725
5159 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5160 IF l_dummy = 'HEADER' THEN
5161 FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_HEADER_ID');
5162 FND_MESSAGE.SET_TOKEN('HEADER_ID',p_header_id);
5163 OE_MSG_PUB.ADD;
5164 ELSIF l_dummy = 'LINE' THEN
5165 FND_MESSAGE.SET_NAME('ONT', 'OE_COGS_INVALID_LINE_ID');
5166 FND_MESSAGE.SET_TOKEN('LINE_ID',p_line_id);
5167 OE_MSG_PUB.ADD;
5168 END IF;
5169 oe_debug_pub.add('Return Status : ' || x_return_status, 5);
5170 -- RAISE FND_API.G_EXC_ERROR; -- Commented for bug 7112725
5171 END Validate_Order;
5172
5173
5174 Procedure Validate (
5175 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_type,
5176 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5177 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5178 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
5179 IS
5180 BEGIN
5181 Validate_Hold_source ( p_hold_source_rec => p_hold_source_rec,
5182 x_return_status => x_return_status,
5183 x_msg_count => x_msg_count,
5184 x_msg_data => x_msg_data
5185 );
5186 /*
5187 ** Call Validate_Hold() only if Validate_Hold_Source() was successful
5188 */
5189 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
5190
5191 Validate_Hold ( p_hold_id => p_hold_source_rec.hold_id,
5192 x_return_status => x_return_status,
5193 x_msg_count => x_msg_count,
5194 x_msg_data => x_msg_data
5195 );
5196 ELSE
5197 RETURN;
5198 END IF;
5199 END Validate;
5200
5201
5202 ----------------------------------------------------------------------------
5203 -- Delete Holds
5204 -- Deletes from OE_ORDER_HOLDS all hold records for an order (p_header_id)
5205 -- or for a line (p_line_id).
5206 -- Also, if there are ORDER hold sources (hold_entity_code = 'O') for this
5207 -- order, deletes hold source records from OE_HOLD_SOURCES.
5208 -- If the hold or hold source was released and the same release record is
5209 -- not used by an existing hold or hold source, then deletes the
5210 -- release record also from OE_HOLD_RELEASES;
5211 ----------------------------------------------------------------------------
5212 PROCEDURE Delete_Holds (
5213 p_order_rec IN OE_HOLDS_PVT.order_rec_Type,
5214 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5215 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5216 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
5217 )
5218 IS
5219 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_HOLDS';
5220 l_api_version CONSTANT NUMBER := 1.0;
5221 l_order_hold_id NUMBER;
5222 l_hold_source_id NUMBER;
5223 l_hold_release_id NUMBER := 0;
5224 CURSOR order_hold IS
5225 SELECT order_hold_id, NVL(hold_release_id,0)
5226 FROM OE_ORDER_HOLDS_all
5227 WHERE HEADER_ID = p_order_rec.header_id;
5228 CURSOR hold_source IS
5229 SELECT hold_source_id, NVL(hold_release_id,0)
5230 FROM OE_HOLD_SOURCES_all
5231 WHERE HOLD_ENTITY_CODE = 'O'
5232 AND HOLD_ENTITY_ID = p_order_rec.header_id;
5233 CURSOR line_hold IS
5234 SELECT order_hold_id, NVL(hold_release_id,0)
5235 FROM OE_ORDER_HOLDS_all
5236 WHERE LINE_ID = p_order_rec.line_id;
5237
5238 BEGIN
5239 -- Standard Start of API savepoint
5240
5241 SAVEPOINT DELETE_HOLDS_PUB;
5242
5243 -- Initialize API return status to success
5244 x_return_status := FND_API.G_RET_STS_SUCCESS;
5245
5246 -- Missing Input arguments
5247
5248 IF (p_order_rec.header_id = FND_API.G_MISS_NUM
5249 AND p_order_rec.line_id = FND_API.G_MISS_NUM) THEN
5250
5251 FND_MESSAGE.SET_NAME('ONT', 'OE_ENTER_HEADER_OR_LINE_ID');
5252 OE_MSG_PUB.ADD;
5253 RAISE FND_API.G_EXC_ERROR;
5254
5255 END IF;
5256
5257 -- Delete the hold records corr. to this order or line in OE_ORDER_HOLDS
5258
5259 IF p_order_rec.line_id = FND_API.G_MISS_NUM THEN
5260
5261 -- Delete order hold records
5262
5263 OPEN order_hold;
5264
5265 LOOP
5266 FETCH order_hold INTO l_order_hold_id, l_hold_release_id;
5267 IF (order_hold%notfound) THEN
5268 EXIT;
5269 END IF;
5270
5271 OE_Debug_PUB.Add('Deleting order hold record',1);
5272
5273 DELETE FROM OE_ORDER_HOLDS_all
5274 WHERE order_hold_id = l_order_hold_id;
5275
5276 OE_Debug_PUB.Add('Deleting hold release record',1);
5277 DELETE FROM OE_HOLD_RELEASES
5278 WHERE HOLD_RELEASE_ID = l_hold_release_id
5279 AND HOLD_RELEASE_ID NOT IN (SELECT NVL(HOLD_RELEASE_ID,0)
5280 FROM OE_ORDER_HOLDS_all
5281 UNION
5282 SELECT NVL(HOLD_RELEASE_ID,0)
5283 FROM OE_HOLD_SOURCES_all
5284 );
5285 END LOOP;
5286
5287 CLOSE order_hold;
5288
5289 -- Delete hold source records
5290 OPEN hold_source;
5291 LOOP
5292 FETCH hold_source INTO l_hold_source_id, l_hold_release_id;
5293 IF (hold_source%notfound) THEN
5294 EXIT;
5295 END IF;
5296 OE_Debug_PUB.Add('Deleting hold source record',1);
5297
5298 DELETE FROM OE_HOLD_SOURCES_all
5299 WHERE HOLD_SOURCE_ID = l_hold_source_id;
5300
5301 OE_Debug_PUB.Add('Deleting hold release record',1);
5302 DELETE FROM OE_HOLD_RELEASES
5303 WHERE HOLD_RELEASE_ID = l_hold_release_id
5304 AND HOLD_RELEASE_ID NOT IN
5305 ( SELECT NVL(HOLD_RELEASE_ID,0)
5306 FROM OE_ORDER_HOLDS_all
5307 UNION
5308 SELECT NVL(HOLD_RELEASE_ID,0)
5309 FROM OE_HOLD_SOURCES_all
5310 );
5311
5312 END LOOP;
5313
5314 CLOSE hold_source;
5315
5316
5317 ELSE
5318
5319 -- Delete line hold records
5320
5321 OPEN line_hold;
5322
5323 LOOP
5324
5325 FETCH line_hold INTO l_order_hold_id, l_hold_release_id;
5326 IF (line_hold%notfound) THEN
5327 EXIT;
5328 END IF;
5329
5330 OE_Debug_PUB.Add('Deleting order hold record',1);
5331
5332 DELETE FROM OE_ORDER_HOLDS
5333 WHERE order_hold_id = l_order_hold_id;
5334
5335 DELETE FROM OE_HOLD_RELEASES
5336 WHERE HOLD_RELEASE_ID = l_hold_release_id
5337 AND HOLD_RELEASE_ID NOT IN
5338 (SELECT NVL(HOLD_RELEASE_ID,0)
5339 FROM OE_ORDER_HOLDS_all
5340 UNION
5341 SELECT NVL(HOLD_RELEASE_ID,0)
5342 FROM OE_HOLD_SOURCES_all
5343 );
5344
5345 END LOOP;
5346
5347 CLOSE line_hold;
5348
5349 END IF;
5350
5351
5352 EXCEPTION
5353 WHEN FND_API.G_EXC_ERROR THEN
5354 IF (order_hold%isopen) THEN
5355 CLOSE order_hold;
5356 END IF;
5357 IF (hold_source%isopen) THEN
5358 CLOSE hold_source;
5359 END IF;
5360 IF (line_hold%isopen) THEN
5361 CLOSE line_hold;
5362 END IF;
5363 ROLLBACK TO DELETE_HOLDS_PUB;
5364 x_return_status := FND_API.G_RET_STS_ERROR;
5365 OE_MSG_PUB.Count_And_Get
5366 ( p_count => x_msg_count
5367 , p_data => x_msg_data
5368 );
5369 WHEN OTHERS THEN
5370 IF (order_hold%isopen) THEN
5371 CLOSE order_hold;
5372 END IF;
5373 IF (hold_source%isopen) THEN
5374 CLOSE hold_source;
5375 END IF;
5376 IF (line_hold%isopen) THEN
5377 CLOSE line_hold;
5378 END IF;
5379 ROLLBACK TO DELETE_HOLDS_PUB;
5380 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5381 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5382 THEN
5383 OE_MSG_PUB.Add_Exc_Msg
5384 ( G_PKG_NAME
5385 , l_api_name
5386 );
5387 END IF;
5388 OE_MSG_PUB.Count_And_Get
5389 ( p_count => x_msg_count
5390 , p_data => x_msg_data
5391 );
5392 END Delete_Holds;
5393
5394
5395 --------------------
5396 Procedure Apply_Holds (
5397 p_order_tbl IN OE_HOLDS_PVT.order_tbl_type,
5398 p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE,
5399 p_hold_until_date IN OE_HOLD_SOURCES.HOLD_UNTIL_DATE%TYPE,
5400 p_hold_comment IN OE_HOLD_SOURCES.HOLD_COMMENT%TYPE,
5401 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5402 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5403 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2 )
5404 IS
5405 j NUMBER;
5406 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
5407 l_hold_source_id OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE;
5408 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
5409 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
5410 l_hold_exists VARCHAR2(1) :='N'; --bug 5548778
5411 /*Added the Following Variables for WF_HOLDS ER (bug 6449458)*/
5412 l_wf_item_type OE_HOLD_DEFINITIONS.ITEM_TYPE%TYPE := NULL;
5413 l_wf_activity_name OE_HOLD_DEFINITIONS.ACTIVITY_NAME%TYPE := NULL;
5414 l_is_hold_applied BOOLEAN;
5415 l_count_of_holds_applied NUMBER := 0;
5416 l_user_activity_name VARCHAR2(80);
5417
5418 BEGIN
5419 x_return_status := FND_API.G_RET_STS_SUCCESS;
5420 OE_DEBUG_PUB.Add('IN Apply Holds..Orders',1);
5421
5422 for j in 1..p_order_tbl.COUNT loop
5423 OE_DEBUG_PUB.Add('IN Apply Holds Loop',3);
5424 l_hold_exists := 'N'; --bug 5548778
5425 x_return_status := FND_API.G_RET_STS_SUCCESS;
5426 l_hold_source_rec.hold_entity_code := 'O';
5427 l_hold_source_rec.hold_entity_id := p_order_tbl(j).header_id;
5428 l_hold_source_rec.line_id := p_order_tbl(j).line_id;
5429
5430 l_hold_source_rec.hold_id := p_hold_id;
5431 l_hold_source_rec.hold_until_date := p_hold_until_date;
5432 l_hold_source_rec.hold_comment := p_hold_comment;
5433
5434 --dbms_output.put_line ('p_order_tbl.header_id'||p_order_tbl(j).header_id);
5435 --dbms_output.put_line ('Hold_id'|| l_hold_source_rec.hold_id);
5436
5437 OE_DEBUG_PUB.Add('headerID'|| to_char(p_order_tbl(j).header_id),3);
5438 OE_DEBUG_PUB.Add('HoldID:' || to_char(l_hold_source_rec.hold_id),3 );
5439
5440 OE_DEBUG_PUB.Add('Validating ORder',1);
5441 Validate_Order (p_order_tbl(j).header_id,
5442 p_order_tbl(j).line_id,
5443 x_return_status => x_return_status,
5444 x_msg_count => x_msg_count,
5445 x_msg_data => x_msg_data
5446 );
5447 --dbms_output.put_line ('Validate_Order:x_return_status' || x_return_status );
5448 --dbms_output.put_line ('Validate_Order:x_msg_count' || to_char(x_msg_count) );
5449 --dbms_output.put_line ('Validate_Order:x_msg_data' || x_msg_data );
5450
5451 OE_DEBUG_PUB.Add('After Validate_Order',2);
5452 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,1);
5453 OE_DEBUG_PUB.Add('x_msg_count:' || to_char(x_msg_count),2 );
5454 OE_DEBUG_PUB.Add('x_msg_data:' || x_msg_data,2 );
5455
5456 -- Added for bug 7112725
5457 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5458 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5459 RAISE FND_API.G_EXC_ERROR;
5460 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5461 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5462 END IF;
5463 END IF;
5464
5465 /* Don't need this, cos just putting orders on hold
5466 ** Uncommenting this for ER # 2662206
5467 */
5468 Validate ( p_hold_source_rec => l_hold_source_rec,
5469 x_return_status => x_return_status,
5470 x_msg_count => x_msg_count,
5471 x_msg_data => x_msg_data
5472 );
5473 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5474 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5475 RAISE FND_API.G_EXC_ERROR;
5476 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
5477 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5478 END IF;
5479 END IF;
5480 --bug 5548778 call overloaded method
5481 Create_Hold_Source (
5482 p_hold_source_rec => l_hold_source_rec,
5483 x_hold_source_id => l_hold_source_id,
5484 x_hold_exists => l_hold_exists,
5485 x_return_status => x_return_status,
5486 x_msg_count => x_msg_count,
5487 x_msg_data => x_msg_data
5488 );
5489 OE_DEBUG_PUB.Add('After Create_Hold_Source, x_return_status:' ||
5490 x_return_status,1);
5491 OE_DEBUG_PUB.Add('x_msg_count:' || to_char(x_msg_count),3 );
5492 OE_DEBUG_PUB.Add('x_msg_data:' || x_msg_data ,3);
5493 OE_DEBUG_PUB.Add('l_hold_exists:' || l_hold_exists ,3);
5494 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5495 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5496 RAISE FND_API.G_EXC_ERROR;
5497 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
5498 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5499 END IF;
5500 END IF;
5501
5502 OE_DEBUG_PUB.Add('l_hold_source_id->' || to_char(l_hold_source_id) ,1);
5503 l_hold_source_rec.hold_source_id := l_hold_source_id;
5504 IF l_hold_exists = 'N' THEN --bug 5548778
5505 /*Added the Select query and IF Condition below and calling overloaded create_order_holds procedure
5506 for WF_HOLDS ER (bug 6449458)*/
5507 IF l_wf_item_type IS NULL AND l_wf_activity_name IS NULL THEN
5508 select item_type, activity_name
5509 into l_wf_item_type, l_wf_activity_name
5510 from oe_hold_definitions
5511 where hold_id = l_hold_source_rec.hold_id;
5512 END IF;
5513
5514 IF l_wf_item_type IS NOT NULL AND l_wf_activity_name IS NOT
5515 NULL THEN
5516 OE_DEBUG_PUB.Add ('Calling Overloaded Create_Order_Holds Based on Workflow',1);
5517 Create_Order_Holds (
5518 p_hold_source_rec => l_hold_source_rec
5519 ,p_item_type => l_wf_item_type
5520 ,p_activity_name => l_wf_activity_name
5521 ,x_return_status => x_return_status
5522 ,x_msg_count => x_msg_count
5523 ,x_msg_data => x_msg_data
5524 ,x_is_hold_applied => l_is_hold_applied);
5525
5526 ELSE
5527
5528 OE_DEBUG_PUB.Add ('Calling Create_Order_Holds',1);
5529 Create_Order_Holds (
5530 p_hold_source_rec => l_hold_source_rec
5531 ,x_return_status => x_return_status
5532 ,x_msg_count => x_msg_count
5533 ,x_msg_data => x_msg_data
5534 );
5535 OE_DEBUG_PUB.Add('After Create_Order_Holds',1);
5536 END IF; -- l_item_type and l_activity_name
5537
5538 IF NVL(l_is_hold_applied,FALSE) THEN
5539 l_count_of_holds_applied := l_count_of_holds_applied + 1;
5540 OE_DEBUG_PUB.Add('Hold is applied :',2);
5541 END IF;
5542 l_is_hold_applied := FALSE;
5543 /* OE_DEBUG_PUB.Add ('Calling Create_Order_Holds',1);
5544 Create_Order_Holds (
5545 p_hold_source_rec => l_hold_source_rec
5546 ,x_return_status => x_return_status
5547 ,x_msg_count => x_msg_count
5548 ,x_msg_data => x_msg_data
5549 );
5550 OE_DEBUG_PUB.Add('After Create_Order_Holds',1);*/
5551 END IF;
5552 end loop;
5553 /*Added the query and IF Condition below for WF_HOLDS ER (bug 6449458)*/
5554 IF l_wf_item_type is not null and l_wf_activity_name is not null THEN
5555 select meaning into l_user_activity_name
5556 from oe_lookups
5557 where lookup_type = DECODE(l_wf_item_type,
5558 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
5559 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
5560 and lookup_code = l_wf_activity_name;
5561
5562 IF p_order_tbl.COUNT = 1 AND l_count_of_holds_applied = 0 THEN
5563 fnd_message.set_name('ONT', 'OE_NO_HOLD_FOR_ACTIVITY');
5564 fnd_message.set_token('WF_ACT',l_user_activity_name);
5565 OE_MSG_PUB.ADD;
5566 oe_debug_pub.add(' Hold Not applied for the requested line');
5567 RAISE FND_API.G_EXC_ERROR;
5568 ELSIF l_count_of_holds_applied = 0
5569 AND p_order_tbl.COUNT > 1 THEN
5570 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
5571 fnd_message.set_token('WF_ACT',l_user_activity_name);
5572 OE_MSG_PUB.ADD;
5573 oe_debug_pub.add('Hold Not applied for ALL requested lines');
5574 RAISE FND_API.G_EXC_ERROR;
5575 ELSIF p_order_tbl.COUNT > l_count_of_holds_applied
5576 AND p_order_tbl.COUNT > 1 THEN
5577 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
5578 fnd_message.set_token('WF_ACT',l_user_activity_name);
5579 OE_MSG_PUB.ADD;
5580 oe_debug_pub.add('Hold Not applied for FEW requested lines');
5581 ELSE
5582 NULL; -- No messages are required to be logged.
5583 END IF;
5584 END IF;
5585
5586 EXCEPTION
5587 WHEN OTHERS THEN
5588 --dbms_output.put_line ('ApplyHolds-EXCEPTION');
5589 OE_DEBUG_PUB.Add('Error:Apply Holds',1);
5590 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,1);
5591 OE_DEBUG_PUB.Add('x_msg_count:' || to_char(x_msg_count),1 );
5592 OE_DEBUG_PUB.Add('x_msg_data:' || x_msg_data ,1);
5593 END Apply_Holds;
5594
5595
5596 Procedure Apply_Holds(
5597 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type,
5598 p_hold_existing_flg IN VARCHAR2,
5599 p_hold_future_flg IN VARCHAR2,
5600 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5601 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5602 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2 )
5603 IS
5604 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
5605 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
5606 l_hold_source_id OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE;
5607 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
5608 l_hold_exists VARCHAR2(1) :='N'; --bug 5548778
5609 /* Commented OLD Processing and added the lines below for WF_HOLS ER (bug 6449458)*/
5610 l_hold_msg_applied BOOLEAN DEFAULT NULL;
5611 l_wf_item_type OE_HOLD_DEFINITIONS.ITEM_TYPE%TYPE := NULL;
5612 l_wf_activity_name OE_HOLD_DEFINITIONS.ACTIVITY_NAME%TYPE := NULL;
5613
5614 BEGIN
5615
5616
5617 Begin
5618 select item_type, activity_name
5619 into l_wf_item_type, l_wf_activity_name
5620 from oe_hold_definitions
5621 where hold_id = p_hold_source_rec.hold_id;
5622 Exception
5623 When NO_DATA_FOUND Then
5624 NULL; -- OE_Holds_Pvt.Validate has not yet been called.
5625 End;
5626
5627 Apply_Holds(
5628 p_hold_source_rec => p_hold_source_rec,
5629 p_hold_existing_flg => p_hold_existing_flg,
5630 p_hold_future_flg => p_hold_future_flg,
5631 p_wf_item_type => l_wf_item_type,
5632 p_wf_activity_name => l_wf_activity_name,
5633 x_return_status => x_return_status,
5634 x_msg_count => x_msg_count,
5635 x_msg_data => x_msg_data,
5636 x_is_hold_applied => l_hold_msg_applied);
5637 /*BEGIN
5638 OE_DEBUG_PUB.Add('In OE_Holds_pvt.Apply Holds, Creating Hold Source',1);
5639
5640 x_return_status := FND_API.G_RET_STS_SUCCESS;
5641 l_hold_source_rec := p_hold_source_rec;
5642 Validate (p_hold_source_rec => p_hold_source_rec,
5643 x_return_status => x_return_status,
5644 x_msg_count => x_msg_count,
5645 x_msg_data => x_msg_data );
5646 OE_DEBUG_PUB.Add('Validate return status:' || x_return_status,1);
5647 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5648 OE_Debug_PUB.Add('Validate not successful',1);
5649 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5650 RAISE FND_API.G_EXC_ERROR;
5651 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5652 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5653 END IF;
5654 ELSE
5655 OE_DEBUG_PUB.Add ('Calling Create_Hold_Source bug 5548778 overload',1);
5656 Create_Hold_Source (
5657 p_hold_source_rec => p_hold_source_rec,
5658 x_hold_source_id => l_hold_source_id,
5659 x_hold_exists => l_hold_exists,
5660 x_return_status => x_return_status,
5661 x_msg_count => x_msg_count,
5662 x_msg_data => x_msg_data
5663 );
5664 OE_DEBUG_PUB.Add('x_return_status->' || x_return_status,1);
5665 OE_DEBUG_PUB.Add('x_msg_count->' || x_msg_count,1);
5666 OE_DEBUG_PUB.Add('x_msg_data' || x_msg_data,1);
5667 OE_DEBUG_PUB.Add('l_hold_exists' || l_hold_exists,1);
5668 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5669 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5670 RAISE FND_API.G_EXC_ERROR;
5671 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
5672 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5673 END IF;
5674 END IF;
5675 OE_DEBUG_PUB.Add('l_hold_source_id->' || to_char(l_hold_source_id) ,1);
5676 l_hold_source_rec.hold_source_id := l_hold_source_id;
5677 --bug 5548778
5678 IF l_hold_exists = 'N' THEN
5679 OE_DEBUG_PUB.Add ('Calling Create_Order_Holds',1);
5680 Create_Order_Holds (
5681 p_hold_source_rec => l_hold_source_rec
5682 ,x_return_status => x_return_status
5683 ,x_msg_count => x_msg_count
5684 ,x_msg_data => x_msg_data
5685 );
5686 OE_DEBUG_PUB.Add('After Create_Order_Holds',1);
5687 END IF;
5688 END IF;*/
5689 END Apply_Holds;
5690
5691
5692 ---------------------
5693 Procedure Release_Holds (
5694 p_hold_source_rec IN OE_HOLDS_PVT.hold_source_rec_type,
5695 p_hold_release_rec IN OE_HOLDS_PVT.Hold_Release_Rec_Type,
5696 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5697 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5698 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
5699 IS
5700 l_order_rec OE_HOLDS_PVT.order_rec_type;
5701 --bug 5051532
5702 l_hold_source_rec OE_HOLDS_PVT.hold_source_rec_type;
5703
5704 BEGIN
5705 x_return_status := FND_API.G_RET_STS_SUCCESS;
5706 --bug 5051532
5707 l_hold_source_rec := p_hold_source_rec;
5708 -- replaced the occurences of p_hold_source_rec with l_hold_source_rec in theIF part of the IF-ELSE block below, for bug 5051532
5709
5710 --bug 3977747 start--
5711 if (l_hold_source_rec.header_id is not null or
5712 l_hold_source_rec.line_id is not null )
5713 then
5714 l_order_rec.line_id := l_hold_source_rec.line_id;
5715
5716 --bug 5051532
5717 If l_hold_source_rec.header_id is null then
5718 select header_id
5719 into l_hold_source_rec.header_id
5720 from oe_order_lines_all
5721 where line_id = l_hold_source_rec.line_id;
5722 end if;
5723
5724 oe_debug_pub.add('l_hold_source_rec.header_id ' || l_hold_source_rec.header_id);
5725 oe_debug_pub.add('l_hold_source_rec.line_id ' || l_hold_source_rec.line_id);
5726 l_order_rec.header_id := l_hold_source_rec.header_id;
5727 -- bug 5051532
5728
5729 Validate_Order (l_hold_source_rec.header_id,
5730 l_hold_source_rec.line_id,
5731 x_return_status => x_return_status,
5732 x_msg_count => x_msg_count,
5733 x_msg_data => x_msg_data
5734 );
5735 oe_debug_pub.add('After Validate_Order with x_return_status'||x_return_status,2);
5736
5737 -- Added for bug 7112725
5738 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5739 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5740 RAISE FND_API.G_EXC_ERROR;
5741 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5742 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5743 END IF;
5744 END IF;
5745
5746 Release_orders ( p_hold_release_rec => p_hold_release_rec,
5747 p_order_rec => l_order_rec,
5748 p_hold_source_rec => l_hold_source_rec,
5749 x_return_status => x_return_status,
5750 x_msg_count => x_msg_count,
5751 x_msg_data => x_msg_data );
5752 oe_debug_pub.add('After oe_holds_pvt.release_orders with x_return_status' || x_return_status, 1);
5753 --bug 3977747 ends--
5754 else
5755
5756 if (p_hold_source_rec.hold_source_id is null )then
5757 Validate (p_hold_source_rec => p_hold_source_rec,
5758 x_return_status => x_return_status,
5759 x_msg_count => x_msg_count,
5760 x_msg_data => x_msg_data
5761 );
5762 --dbms_output.put_line ('After ValidateRS->' || x_return_status);
5763 end if;
5764
5765 Release_Hold_Source (p_hold_source_rec => p_hold_source_rec,
5766 p_hold_release_rec => p_hold_release_rec,
5767 x_return_status => x_return_status,
5768 x_msg_count => x_msg_count,
5769 x_msg_data => x_msg_data );
5770 --dbms_output.put_line ('After ReleaseRS->' || x_return_status);
5771
5772 end if;
5773
5774 END Release_Holds;
5775
5776
5777 ---------------------
5778 Procedure Release_Holds (
5779 p_order_tbl IN OE_HOLDS_PVT.order_tbl_type,
5780 p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE,
5781 p_release_reason_code IN OE_HOLD_RELEASES.RELEASE_REASON_CODE%TYPE,
5782 p_release_comment IN OE_HOLD_RELEASES.RELEASE_COMMENT%TYPE,
5783 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5784 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5785 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
5786 IS
5787 j NUMBER;
5788 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
5789 l_order_rec OE_HOLDS_PVT.order_rec_type;
5790 l_hold_release_rec OE_HOLDS_PVT.hold_release_rec_type;
5791 BEGIN
5792 x_return_status := FND_API.G_RET_STS_SUCCESS;
5793 oe_debug_pub.add('In Release Holds..Orders',1);
5794 for j in 1..p_order_tbl.COUNT loop
5795 -- IF p_order_tbl(j).header_id IS NULL AND
5796 -- p_order_tbl(j).line_id NULL THEN ERROR
5797 l_order_rec.header_id := p_order_tbl(j).header_id;
5798 l_order_rec.line_id := p_order_tbl(j).line_id;
5799 l_hold_release_rec.release_reason_code := p_release_reason_code;
5800 l_hold_release_rec.release_comment := p_release_comment;
5801 l_hold_source_rec.hold_id := p_hold_id;
5802 oe_debug_pub.add('HeaderID:' || l_order_rec.header_id );
5803 oe_debug_pub.add('LineID:' || l_order_rec.Line_id );
5804 -- XXX Need some analysis
5805 -- When release holds for orders, check to see if this order was put on
5806 -- hold as an
5807 -- Order based hold. If yes, then release the Hold_Source from hold and
5808 -- also order
5809 -- from hold in oe_order_holds and insert record in oe_hold_releases with
5810 -- order_hold_id(No with Hold Source ID).
5811 -- IF the order being releasesed is part of a different hold source (e.g. 'C')
5812 -- then don't release the hold source(what if its the last order)
5813 -- and only release the order from hold in
5814 -- OE_ORDER_HOLDS and create a record in OE_HOLD_RELEASES with the
5815 -- Order_Hold_ID.
5816 Validate_Order (p_order_tbl(j).header_id,
5817 p_order_tbl(j).line_id,
5818 x_return_status => x_return_status,
5819 x_msg_count => x_msg_count,
5820 x_msg_data => x_msg_data
5821 );
5822 oe_debug_pub.add('After Validate_Order with x_return_status'|| x_return_status);
5823
5824 -- Added for bug 7112725
5825 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5826 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
5827 RAISE FND_API.G_EXC_ERROR;
5828 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5829 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5830 END IF;
5831 END IF;
5832
5833 oe_debug_pub.add('l_order_rec.header_id'||l_order_rec.header_id);
5834 oe_debug_pub.add('lhldrlsrec.rel_reas_code' || l_hold_release_rec.release_reason_code);
5835 oe_holds_pvt.release_orders (
5836 p_hold_release_rec => l_hold_release_rec,
5837 p_order_rec => l_order_rec,
5838 p_hold_source_rec => l_hold_source_rec,
5839 x_return_status => x_return_status,
5840 x_msg_count => x_msg_count,
5841 x_msg_data => x_msg_data );
5842 oe_debug_pub.add('After oe_holds_pvt.release_orders:' ||
5843 x_return_status);
5844 -- If the entity code is order, then release hold source also, if no
5845 -- other order hold records exist for this hold source. This would
5846 -- be the case if selected lines of an order were put on hold.
5847 -- Decided not to release source XX
5848 /*
5849 IF entity_code = 'O' THEN
5850 BEGIN
5851 SELECT 'NO HOLDS'
5852 INTO l_dummy
5853 FROM OE_ORDER_HOLDS
5854 WHERE HOLD_SOURCE_ID = l_hold_source_id
5855 AND HOLD_RELEASE_ID IS NULL
5856 AND ROWNUM = 1;
5857
5858 EXCEPTION
5859 WHEN NO_DATA_FOUND THEN
5860 OE_Debug_PUB.Add('Setting hold source status to released');
5861 UPDATE OE_HOLD_SOURCES
5862 SET RELEASED_FLAG = 'Y'
5863 , HOLD_RELEASE_ID = l_hold_release_id
5864 , LAST_UPDATED_BY = l_user_id
5865 , LAST_UPDATE_DATE = SYSDATE
5866 WHERE HOLD_SOURCE_ID = l_hold_source_id;
5867
5868 END;
5869 END IF;
5870 */
5871
5872 end loop;
5873 oe_debug_pub.add('After release_orders with x_return_status'|| x_return_status,3);
5874 END Release_Holds;
5875
5876 function check_system_holds(
5877 p_hold_id IN NUMBER,
5878 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
5879 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
5880 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
5881 )
5882 RETURN varchar2
5883 IS
5884 l_authorized_or_not varchar2(1) := 'Y';
5885 l_return_status Varchar2(1) := FND_API.G_RET_STS_SUCCESS;
5886 BEGIN
5887
5888 x_return_status := l_return_status;
5889 x_msg_count := 0;
5890 x_msg_data := NULL;
5891
5892
5893 /* 7576948: IR ISO Change Management project Start */
5894
5895 -- In the below IF check for system holds, Hold_id 17 is added
5896 -- for IR ISO change management project. This is a seeded system
5897 -- hold, responsible for applying and release IR ISO hold, which
5898 -- can be applied/released only by the Purchasing product, while
5899 -- internal requisition / requisition line gets changed by the
5900 -- requesting organization user. The judiciously application
5901 -- and releasing of this hold will be done by Purchasing APIs.
5902 -- OM has no APIs for calling the direct Application or Releasing
5903 -- of this seeded system hold for any business flow other than
5904 -- Internal Sales Order flow.
5905 --
5906 -- The application of this seeded hold can be done via OM API
5907 -- OE_Internal_Requisition_Pvt.Apply_Hold_for_IReq, while it can
5908 -- be released via OE_Internal_Requisition_Pvt.Release_Hold_for_IReq
5909 -- The call to both these APIs will be done from Purchasing APIs only.
5910 --
5911 -- For details on IR ISO CMS project, please refer to FOL >
5912 -- OM Development > OM GM > 12.1.1 > TDD > IR_ISO_CMS_TDD.doc
5913
5914 IF p_hold_id in (13,14,15,17) THEN
5915
5916 /* ============================= */
5917 /* IR ISO Change Management Ends */
5918
5919 oe_debug_pub.add('renga: hold not authorized - ');
5920 l_authorized_or_not := 'N';
5921
5922 END IF;
5923
5924 return l_authorized_or_not;
5925
5926 END check_system_holds;
5927
5928 procedure process_apply_holds_lines (
5929 p_num_of_records IN NUMBER
5930 , p_sel_rec_tbl IN OE_GLOBALS.Selected_Record_Tbl
5931 , p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE
5932 , p_hold_until_date IN OE_HOLD_SOURCES.HOLD_UNTIL_DATE%TYPE
5933 , p_hold_comment IN OE_HOLD_SOURCES.HOLD_COMMENT%TYPE
5934 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
5935 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
5936 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
5937 )
5938 IS
5939
5940 l_header_rec OE_ORDER_PUB.Header_Rec_Type;
5941 l_line_rec OE_ORDER_PUB.line_rec_type;
5942 l_api_name CONSTANT VARCHAR2(30) := 'process_apply_holds_lines';
5943 l_line_id NUMBER;
5944 l_return_status VARCHAR2(30);
5945 l_order_tbl OE_HOLDS_PVT.order_tbl_type;
5946 l_error_count NUMBER :=0;
5947 l_ordered_quantity NUMBER ;
5948 j INTEGER;
5949 initial INTEGER;
5950 nextpos INTEGER;
5951
5952 l_prev_org_id number;
5953 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
5954 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
5955 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
5956 l_msg_token VARCHAR2(100);
5957 /*Added the following variables for WF_HOLDS ER (bug 6449458)*/
5958 l_item_type OE_HOLD_DEFINITIONS.ITEM_TYPE%TYPE := NULL;
5959 l_activity_name OE_HOLD_DEFINITIONS.ACTIVITY_NAME%TYPE := NULL;
5960 l_is_hold_applied BOOLEAN;
5961 l_count_of_holds_applied NUMBER := 0;
5962 l_user_activity_name VARCHAR2(80);
5963
5964
5965 BEGIN
5966 oe_msg_pub.initialize;
5967
5968 OE_DEBUG_PUB.Add('Entering OE_Holds_PVT.process_apply_holds_lines',1);
5969
5970 IF check_system_holds(
5971 p_hold_id => p_hold_id,
5972 x_return_status => x_return_status,
5973 x_msg_count => x_msg_count,
5974 x_msg_data => x_msg_data) = 'N' THEN
5975
5976 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
5977 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
5978 OE_MSG_PUB.ADD;
5979 x_return_status := FND_API.G_RET_STS_ERROR;
5980 OE_MSG_PUB.Count_And_Get
5981 ( p_count => x_msg_count
5982 , p_data => x_msg_data
5983 );
5984 RETURN;
5985 END IF;
5986 OE_DEBUG_PUB.Add('After calling Check_System_Holds');
5987
5988 IF check_authorization ( p_hold_id => p_hold_id
5989 ,p_authorized_action_code => 'APPLY'
5990 ,p_responsibility_id => l_resp_id
5991 ,p_application_id => l_application_id
5992 ,x_return_status => x_return_status
5993 ,x_msg_count => x_msg_count
5994 ,x_msg_data => x_msg_data
5995 ) = 'N' THEN
5996 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
5997
5998 fnd_message.set_name('ONT','ONT_APPLY');
5999 l_msg_token := fnd_message.get;
6000
6001 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
6002 fnd_message.set_token('ACTION', l_msg_token);
6003
6004 OE_MSG_PUB.ADD;
6005 --RAISE FND_API.G_EXC_ERROR;
6006 x_return_status := FND_API.G_RET_STS_ERROR;
6007 OE_MSG_PUB.Count_And_Get
6008 ( p_count => x_msg_count
6009 , p_data => x_msg_data
6010 );
6011 RETURN;
6012 END IF;
6013
6014 OE_DEBUG_PUB.Add('After calling Check_Authorization');
6015
6016 SAVEPOINT process_apply_holds_lines;
6017
6018 l_prev_org_id := null;
6019 FOR j in 1.. p_sel_rec_tbl.COUNT LOOP
6020 IF p_sel_rec_tbl(j).org_id <> nvl(l_prev_org_id, -99)
6021 THEN
6022 OE_DEBUG_PUB.Add('Mo_Global.Set_Policy_Context to:' || p_sel_rec_tbl(j).Org_Id );
6023 Mo_Global.Set_Policy_Context (p_access_mode => 'S',
6024 p_org_id => p_sel_rec_tbl(j).Org_Id);
6025 l_prev_org_id := p_sel_rec_tbl(j).org_id;
6026 END IF;
6027
6028 l_line_id := p_sel_rec_tbl(j).id1;
6029 OE_LINE_UTIL.Query_Row
6030 ( p_line_id => l_line_id,
6031 x_line_rec => l_line_rec
6032 );
6033
6034 OE_DEBUG_PUB.Add('Header_id: '||l_line_rec.header_id);
6035 OE_DEBUG_PUB.Add('Line_id: '||to_char(l_line_rec.line_id));
6036
6037 l_hold_source_rec.hold_entity_code := 'O';
6038 l_hold_source_rec.hold_entity_id := l_line_rec.header_id;
6039 l_hold_source_rec.LINE_ID := l_line_rec.line_id;
6040 l_hold_source_rec.hold_id := p_hold_id;
6041 l_hold_source_rec.hold_until_date := p_hold_until_date;
6042 l_hold_source_rec.hold_comment := p_hold_comment;
6043 /*Added the IF condition for WF_HOLDS ER (bug 6449458)*/
6044 IF l_item_type IS NULL AND l_activity_name IS NULL THEN
6045 select item_type, activity_name
6046 into l_item_type, l_activity_name
6047 from oe_hold_definitions
6048 where hold_id = l_hold_source_rec.hold_id;
6049 END IF;
6050
6051 OE_DEBUG_PUB.Add('Before calling oe_holds_pvt.apply_holds');
6052 /*Calling overloaded procedure apply_holds, modified for WF_HOLDS ER (bug 6449458)*/
6053 /*oe_holds_pvt.apply_Holds(
6054 p_hold_source_rec => l_hold_source_rec
6055 ,p_hold_existing_flg => 'Y'
6056 ,p_hold_future_flg => 'Y'
6057 ,x_return_status => x_return_status
6058 ,x_msg_count => x_msg_count
6059 ,x_msg_data => x_msg_data);*/
6060 oe_holds_pvt.apply_Holds(
6061 p_hold_source_rec => l_hold_source_rec
6062 ,p_hold_existing_flg => 'Y'
6063 ,p_hold_future_flg => 'Y'
6064 ,p_org_id =>p_sel_rec_tbl(j).org_id --ER#7479609
6065 ,p_wf_item_type => l_item_type
6066 ,p_wf_activity_name => l_activity_name
6067 ,x_return_status => x_return_status
6068 ,x_msg_count => x_msg_count
6069 ,x_msg_data => x_msg_data
6070 ,x_is_hold_applied => l_is_hold_applied);
6071
6072 IF NVL(l_is_hold_applied,FALSE) THEN
6073 l_count_of_holds_applied := l_count_of_holds_applied + 1;
6074 OE_DEBUG_PUB.Add('Hold is applied : TRUE',2);
6075 END IF;
6076 l_is_hold_applied := FALSE;
6077
6078
6079 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,2);
6080 OE_DEBUG_PUB.Add('x_msg_count:' || to_char(x_msg_count),2);
6081 OE_DEBUG_PUB.Add('x_msg_data:' || x_msg_data,2);
6082
6083 /*OE_DEBUG_PUB.Add('Before calling OE_Holds_PVT.Apply_Holds');
6084 oe_holds_pvt.apply_Holds(
6085 p_hold_source_rec => l_hold_source_rec
6086 ,p_hold_existing_flg => 'Y'
6087 ,p_hold_future_flg => 'Y'
6088 ,x_return_status => x_return_status
6089 ,x_msg_count => x_msg_count
6090 ,x_msg_data => x_msg_data);*/
6091
6092 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6093 oe_debug_pub.add('process_apply_holds_lines unexpected failure',1);
6094 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6095 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
6096 oe_debug_pub.add('process_apply_holds_lines expected failure',1);
6097 RAISE FND_API.G_EXC_ERROR;
6098 END IF;
6099
6100 END LOOP;
6101 /*Added the Select query and IF Condition below for WF_HOLDS ER (bug 6449458)*/
6102 IF l_item_type IS NOT NULL AND l_activity_name IS NOT NULL THEN
6103 select meaning into l_user_activity_name
6104 from oe_lookups
6105 where lookup_type = DECODE(l_item_type,
6106 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
6107 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES',
6108 '-XX')
6109 and lookup_code = l_activity_name;
6110
6111 IF p_sel_rec_tbl.COUNT = 1 AND l_count_of_holds_applied = 0
6112 THEN
6113 fnd_message.set_name('ONT', 'OE_NO_HOLD_FOR_ACTIVITY');
6114 fnd_message.set_token('WF_ACT',l_user_activity_name);
6115 OE_MSG_PUB.ADD;
6116 oe_debug_pub.add(' Hold Not applied for the requested line');
6117 RAISE FND_API.G_EXC_ERROR;
6118 ELSIF l_count_of_holds_applied = 0
6119 AND p_sel_rec_tbl.COUNT > 1 THEN
6120 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
6121 fnd_message.set_token('WF_ACT',l_user_activity_name);
6122 OE_MSG_PUB.ADD;
6123 oe_debug_pub.add('Hold Not applied for ALL requested lines');
6124 RAISE FND_API.G_EXC_ERROR;
6125 ELSIF p_sel_rec_tbl.COUNT > l_count_of_holds_applied
6126 AND p_sel_rec_tbl.COUNT > 1 THEN
6127 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
6128 fnd_message.set_token('WF_ACT',l_user_activity_name);
6129 OE_MSG_PUB.ADD;
6130 oe_debug_pub.add('Hold Not applied for FEW requested lines');
6131 ELSE
6132 NULL; -- No messages are required to be logged.
6133 END IF;
6134 END IF; -- End of WF_HOLDS ER (bug 6449458) IF Condition
6135
6136 x_return_status := FND_API.G_RET_STS_SUCCESS;
6137 -- Get message count and data
6138 OE_MSG_PUB.Count_And_Get
6139 ( p_count => x_msg_count
6140 , p_data => x_msg_data
6141 );
6142
6143 OE_DEBUG_PUB.Add('Exiting OE_Holds_PVT.process_apply_holds_lines',1);
6144
6145 EXCEPTION /* Procedure exception handler */
6146
6147 WHEN FND_API.G_EXC_ERROR THEN
6148 x_return_status := FND_API.G_RET_STS_ERROR ;
6149 OE_MSG_PUB.Count_And_Get
6150 ( p_count => x_msg_count,
6151 p_data => x_msg_data
6152 );
6153 ROLLBACK TO SAVEPOINT process_apply_holds_lines;
6154
6155 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6156 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6157 OE_MSG_PUB.Count_And_Get
6158 ( p_count => x_msg_count,
6159 p_data => x_msg_data
6160 );
6161 ROLLBACK TO SAVEPOINT process_apply_holds_lines;
6162
6163 WHEN OTHERS THEN
6164 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6165 IF OE_MSG_PUB.Check_Msg_Level
6166 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6167 THEN
6168 OE_MSG_PUB.Add_Exc_Msg
6169 (G_PKG_NAME,
6170 l_api_name
6171 );
6172 END IF;
6173 OE_MSG_PUB.Count_And_Get
6174 ( p_count => x_msg_count,
6175 p_data => x_msg_data);
6176 ROLLBACK TO SAVEPOINT process_apply_holds_lines;
6177
6178 end process_apply_holds_lines;
6179
6180 /*=================================*/
6181 procedure process_apply_holds_orders (
6182 p_num_of_records IN NUMBER
6183 , p_sel_rec_tbl IN OE_GLOBALS.Selected_Record_Tbl
6184 , p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE
6185 , p_hold_until_date IN OE_HOLD_SOURCES.HOLD_UNTIL_DATE%TYPE
6186 , p_hold_comment IN OE_HOLD_SOURCES.HOLD_COMMENT%TYPE
6187 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6188 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
6189 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6190 )
6191 IS
6192 --l_header_rec OE_ORDER_PUB.Header_Rec_Type;
6193 l_line_rec OE_ORDER_PUB.line_rec_type;
6194 --l_old_header_rec OE_ORDER_PUB.Header_Rec_Type;
6195 l_api_name CONSTANT VARCHAR2(30) := 'process_apply_holds_orders';
6196 l_header_id NUMBER;
6197 l_return_status VARCHAR2(30);
6198 l_order_tbl OE_HOLDS_PVT.order_tbl_type;
6199 l_error_count NUMBER :=0;
6200 j INTEGER;
6201
6202 L_prev_org_id number;
6203 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
6204 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
6205 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
6206 l_msg_token VARCHAR2(100);
6207 /*Added the following variables for WF_HOLDS ER (bug 6449458)*/
6208 l_item_type OE_HOLD_DEFINITIONS.ITEM_TYPE%TYPE := NULL;
6209 l_activity_name OE_HOLD_DEFINITIONS.ACTIVITY_NAME%TYPE := NULL;
6210 l_is_hold_applied BOOLEAN;
6211 l_count_of_holds_applied NUMBER := 0;
6212 l_user_activity_name VARCHAR2(80);
6213
6214 BEGIN
6215 oe_msg_pub.initialize;
6216
6217 OE_DEBUG_PUB.Add('Entering OE_Holds_PVT.process_apply_holds_orders',1);
6218
6219 IF check_system_holds( p_hold_id => p_hold_id
6220 , x_return_status => x_return_status
6221 , x_msg_count => x_msg_count
6222 , x_msg_data => x_msg_data
6223 ) = 'N' THEN
6224 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
6225 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
6226 OE_MSG_PUB.ADD;
6227 x_return_status := FND_API.G_RET_STS_ERROR;
6228 OE_MSG_PUB.Count_And_Get
6229 ( p_count => x_msg_count
6230 , p_data => x_msg_data
6231 );
6232 RETURN;
6233 END IF;
6234
6235 OE_DEBUG_PUB.Add('After calling Check_System_Holds');
6236
6237 IF check_authorization ( p_hold_id => p_hold_id
6238 , p_authorized_action_code => 'APPLY'
6239 , p_responsibility_id => l_resp_id
6240 , p_application_id => l_application_id
6241 , x_return_status => x_return_status
6242 , x_msg_count => x_msg_count
6243 , x_msg_data => x_msg_data
6244 ) = 'N' THEN
6245 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
6246
6247 fnd_message.set_name('ONT','ONT_APPLY');
6248 l_msg_token := fnd_message.get;
6249
6250 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
6251 fnd_message.set_token('ACTION', l_msg_token);
6252
6253 OE_MSG_PUB.ADD;
6254 -- RAISE FND_API.G_EXC_ERROR;
6255 x_return_status := FND_API.G_RET_STS_ERROR;
6256 OE_MSG_PUB.Count_And_Get
6257 ( p_count => x_msg_count
6258 , p_data => x_msg_data
6259 );
6260 RETURN;
6261 END IF;
6262
6263 OE_DEBUG_PUB.Add('After calling Check_Authorization');
6264
6265 SAVEPOINT process_apply_holds_orders;
6266 l_prev_org_id := null;
6267 FOR j in 1.. p_sel_rec_tbl.COUNT LOOP
6268 OE_DEBUG_PUB.Add('p_sel_rec_tbl orgID:' || p_sel_rec_tbl(j).org_id ||
6269 ', l_prev_org_id:' || l_prev_org_id);
6270
6271 IF p_sel_rec_tbl(j).org_id <> nvl(l_prev_org_id, -99)
6272 THEN
6273 OE_DEBUG_PUB.Add('Mo_Global.Set_Policy_Context to:' || p_sel_rec_tbl(j).Org_Id );
6274 Mo_Global.Set_Policy_Context (p_access_mode => 'S',
6275 p_org_id => p_sel_rec_tbl(j).Org_Id);
6276 OE_DEBUG_PUB.Add('After the ORG is :' || MO_GLOBAL.get_current_org_id);
6277 l_prev_org_id := p_sel_rec_tbl(j).org_id;
6278 END IF;
6279
6280 l_hold_source_rec.hold_entity_code := 'O';
6281 l_hold_source_rec.hold_entity_id := p_sel_rec_tbl(j).id1;
6282 l_hold_source_rec.hold_id := p_hold_id;
6283 l_hold_source_rec.hold_until_date := p_hold_until_date;
6284 l_hold_source_rec.hold_comment := p_hold_comment;
6285
6286 /*Added the IF condition for WF_HOLDS ER (bug 6449458)*/
6287 IF l_item_type IS NULL AND l_activity_name IS NULL THEN
6288 select item_type, activity_name
6289 into l_item_type, l_activity_name
6290 from oe_hold_definitions
6291 where hold_id = l_hold_source_rec.hold_id;
6292 END IF;
6293
6294 OE_DEBUG_PUB.Add('Before calling oe_holds_pvt.apply_holds');
6295 /*oe_holds_pvt.apply_Holds(
6296 p_hold_source_rec => l_hold_source_rec
6297 ,p_hold_existing_flg => 'Y'
6298 ,p_hold_future_flg => 'Y'
6299 ,x_return_status => x_return_status
6300 ,x_msg_count => x_msg_count
6301 ,x_msg_data => x_msg_data);*/
6302
6303 oe_holds_pvt.apply_Holds(
6304 p_hold_source_rec => l_hold_source_rec
6305 ,p_hold_existing_flg => 'Y'
6306 ,p_hold_future_flg => 'Y'
6307 ,p_org_id =>p_sel_rec_tbl(j).org_id --ER#7479609
6308 ,p_wf_item_type => l_item_type
6309 ,p_wf_activity_name => l_activity_name
6310 ,x_return_status => x_return_status
6311 ,x_msg_count => x_msg_count
6312 ,x_msg_data => x_msg_data
6313 ,x_is_hold_applied => l_is_hold_applied);
6314
6315 IF NVL(l_is_hold_applied,FALSE) THEN
6316 l_count_of_holds_applied := l_count_of_holds_applied + 1;
6317 OE_DEBUG_PUB.Add('Hold is applied : TRUE',2);
6318 END IF;
6319 l_is_hold_applied := FALSE;
6320
6321 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,2);
6322 OE_DEBUG_PUB.Add('x_msg_count:' || to_char(x_msg_count),2);
6323 OE_DEBUG_PUB.Add('x_msg_data:' || x_msg_data,2);
6324
6325 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6326 Oe_debug_pub.add('process_apply_holds_orders unexpected failure',3);
6327 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6328 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
6329 oe_debug_pub.add('process_apply_holds_orders expected failure',3);
6330 RAISE FND_API.G_EXC_ERROR;
6331 END IF;
6332
6333 END LOOP;
6334 /*Added the Select query and IF Condition below for WF_HOLDS ER (bug 6449458)*/
6335 IF l_item_type IS NOT NULL AND l_activity_name IS NOT NULL THEN
6336 select meaning into l_user_activity_name
6337 from oe_lookups
6338 where lookup_type = DECODE(l_item_type,
6339 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
6340 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES',
6341 '-XX')
6342 and lookup_code = l_activity_name;
6343
6344 IF p_sel_rec_tbl.COUNT = 1 AND l_count_of_holds_applied = 0
6345 THEN
6346 fnd_message.set_name('ONT', 'OE_NO_HOLD_FOR_ACTIVITY');
6347 fnd_message.set_token('WF_ACT',l_user_activity_name);
6348 OE_MSG_PUB.ADD;
6349 oe_debug_pub.add(' Hold Not applied for the requested line');
6350 RAISE FND_API.G_EXC_ERROR;
6351 ELSIF l_count_of_holds_applied = 0
6352 AND p_sel_rec_tbl.COUNT > 1 THEN
6353 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
6354 fnd_message.set_token('WF_ACT',l_user_activity_name);
6355 OE_MSG_PUB.ADD;
6356 oe_debug_pub.add('Hold Not applied for ALL requested lines');
6357 RAISE FND_API.G_EXC_ERROR;
6358 ELSIF p_sel_rec_tbl.COUNT > l_count_of_holds_applied
6359 AND p_sel_rec_tbl.COUNT > 1 THEN
6360 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
6361 fnd_message.set_token('WF_ACT',l_user_activity_name);
6362 OE_MSG_PUB.ADD;
6363 oe_debug_pub.add('Hold Not applied for FEW requested lines');
6364 ELSE
6365 NULL; -- No messages are required to be logged.
6366 END IF;
6367 END IF; -- End of WF_HOLDS ER (bug 6449458) IF Condition
6368
6369 x_return_status := FND_API.G_RET_STS_SUCCESS;
6370 -- Get message count and data
6371 OE_MSG_PUB.Count_And_Get
6372 ( p_count => x_msg_count
6373 , p_data => x_msg_data
6374 );
6375
6376 OE_DEBUG_PUB.Add('Exiting OE_Holds_PVT.process_apply_holds_orders',1);
6377
6378 EXCEPTION /* Procedure exception handler */
6379
6380 WHEN FND_API.G_EXC_ERROR THEN
6381 x_return_status := FND_API.G_RET_STS_ERROR ;
6382 OE_MSG_PUB.Count_And_Get
6383 ( p_count => x_msg_count,
6384 p_data => x_msg_data
6385 );
6386 ROLLBACK TO SAVEPOINT process_apply_holds_orders;
6387
6388 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6389 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6390 OE_MSG_PUB.Count_And_Get
6391 ( p_count => x_msg_count,
6392 p_data => x_msg_data
6393 );
6394 ROLLBACK TO SAVEPOINT process_apply_holds_orders;
6395
6396 WHEN OTHERS THEN
6397 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6398 IF OE_MSG_PUB.Check_Msg_Level
6399 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6400 THEN
6401 OE_MSG_PUB.Add_Exc_Msg
6402 (G_PKG_NAME,
6403 l_api_name
6404 );
6405 END IF;
6406 OE_MSG_PUB.Count_And_Get
6407 ( p_count => x_msg_count,
6408 p_data => x_msg_data);
6409 ROLLBACK TO SAVEPOINT process_apply_holds_orders;
6410
6411 end process_apply_holds_orders;
6412
6413 /***********************************************/
6414 /* Releasing Orders from Sales Order Form - Old*/
6415 /***********************************************/
6416
6417 -- Kept for backward compatibility with third party applications
6418 -- using the holds framework. The new overloaded version will be
6419 -- called after ER 1373910
6420
6421 procedure process_release_holds_lines (
6422 p_num_of_records IN NUMBER
6423 , p_sel_rec_tbl IN OE_GLOBALS.Selected_Record_Tbl
6424 , p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE
6425 , p_release_reason_code IN OE_HOLD_RELEASES.RELEASE_REASON_CODE%TYPE
6426 , p_release_comment IN OE_HOLD_RELEASES.RELEASE_COMMENT%TYPE
6427 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6428 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
6429 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6430 )
6431 IS
6432
6433 --l_header_rec OE_ORDER_PUB.Header_Rec_Type;
6434 l_line_rec OE_ORDER_PUB.line_rec_type;
6435 l_api_name CONSTANT VARCHAR2(30) := 'process_release_holds_lines';
6436 l_line_id NUMBER;
6437 l_return_status VARCHAR2(30);
6438 l_order_tbl OE_HOLDS_PVT.order_tbl_type;
6439 l_error_count NUMBER :=0;
6440 l_ordered_quantity NUMBER ;
6441 j INTEGER;
6442 initial INTEGER;
6443 nextpos INTEGER;
6444
6445 l_prev_org_id number;
6446 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
6447 l_hold_release_rec OE_HOLDS_PVT.Hold_Release_Rec_Type;
6448 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
6449 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
6450 l_msg_token VARCHAR2(100);
6451 BEGIN
6452 oe_msg_pub.initialize;
6453
6454 OE_DEBUG_PUB.Add('Entering OE_Holds_PVT.process_release_holds_lines',1);
6455
6456 IF check_system_holds( p_hold_id => p_hold_id
6457 ,x_return_status => x_return_status
6458 ,x_msg_count => x_msg_count
6459 ,x_msg_data => x_msg_data
6460 ) = 'N' THEN
6461 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
6462 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
6463 OE_MSG_PUB.ADD;
6464 x_return_status := FND_API.G_RET_STS_ERROR;
6465 OE_MSG_PUB.Count_And_Get
6466 ( p_count => x_msg_count
6467 , p_data => x_msg_data
6468 );
6469 RETURN;
6470 END IF;
6471
6472 OE_DEBUG_PUB.Add('After calling Check_System_Holds');
6473
6474 IF check_authorization ( p_hold_id => p_hold_id
6475 ,p_authorized_action_code => 'REMOVE'
6476 ,p_responsibility_id => l_resp_id
6477 ,p_application_id => l_application_id
6478 ,x_return_status => x_return_status
6479 ,x_msg_count => x_msg_count
6480 ,x_msg_data => x_msg_data
6481 ) = 'N' THEN
6482 OE_DEBUG_PUB.Add('Not authorize to Release this Hold:'||to_char(p_hold_id));
6483 fnd_message.set_name('ONT','ONT_RELEASE');
6484 l_msg_token := fnd_message.get;
6485
6486 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
6487 fnd_message.set_token('ACTION', l_msg_token);
6488
6489 OE_MSG_PUB.ADD;
6490 -- RAISE FND_API.G_EXC_ERROR;
6491 x_return_status := FND_API.G_RET_STS_ERROR;
6492 OE_MSG_PUB.Count_And_Get
6493 ( p_count => x_msg_count
6494 , p_data => x_msg_data
6495 );
6496 RETURN;
6497 END IF;
6498
6499 OE_DEBUG_PUB.Add('After calling Check_Authorization');
6500
6501 SAVEPOINT process_release_holds_lines;
6502
6503 l_prev_org_id := null;
6504 FOR j in 1.. p_sel_rec_tbl.COUNT LOOP
6505 IF p_sel_rec_tbl(j).org_id <> nvl(l_prev_org_id, -99)
6506 THEN
6507 OE_DEBUG_PUB.Add('Mo_Global.Set_Policy_Context to:' || p_sel_rec_tbl(j).Org_Id );
6508 Mo_Global.Set_Policy_Context (p_access_mode => 'S',
6509 p_org_id => p_sel_rec_tbl(j).Org_Id);
6510 l_prev_org_id := p_sel_rec_tbl(j).org_id;
6511 END IF;
6512
6513
6514 L_line_id := p_sel_rec_tbl(j).id1;
6515 OE_LINE_UTIL.Query_Row
6516 ( p_line_id => l_line_id,
6517 x_line_rec => l_line_rec
6518 );
6519 OE_DEBUG_PUB.Add('header_id: '||l_line_rec.header_id);
6520 OE_DEBUG_PUB.Add('Line_id: '||to_char(l_line_rec.line_id));
6521 l_order_tbl(1).header_id := l_line_rec.header_id;
6522 l_order_tbl(1).line_id := l_line_rec.line_id;
6523
6524
6525 OE_DEBUG_PUB.Add('B4 Calling oe_holds_pvt.release_holds:HeaderID'
6526 || l_order_tbl(1).header_id || ', LineID:' || l_order_tbl(1).line_id);
6527 oe_holds_pvt.release_holds(
6528 p_order_tbl => l_order_tbl,
6529 p_hold_id => p_hold_id,
6530 p_release_reason_code => p_release_reason_code,
6531 p_release_comment => p_release_comment,
6532 x_return_status => x_return_status,
6533 x_msg_count => x_msg_count,
6534 x_msg_data => x_msg_data
6535 );
6536
6537 OE_DEBUG_PUB.Add('After oe_holds_pvt.release_holds:' || x_return_status,3);
6538
6539
6540 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6541 oe_debug_pub.add('process_release_holds_lines unexpected failure',3);
6542 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6543 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
6544 oe_debug_pub.add('process_release_holds_lines failure',3);
6545 RAISE FND_API.G_EXC_ERROR;
6546 END IF;
6547
6548 END LOOP;
6549
6550 x_return_status := FND_API.G_RET_STS_SUCCESS;
6551 -- Get message count and data
6552 OE_MSG_PUB.Count_And_Get
6553 ( p_count => x_msg_count
6554 , p_data => x_msg_data
6555 );
6556
6557 OE_DEBUG_PUB.Add('Exiting OE_Holds_PVT.process_release_holds_lines',1);
6558
6559 EXCEPTION /* Procedure exception handler */
6560
6561 WHEN FND_API.G_EXC_ERROR THEN
6562 x_return_status := FND_API.G_RET_STS_ERROR ;
6563 OE_MSG_PUB.Count_And_Get
6564 ( p_count => x_msg_count,
6565 p_data => x_msg_data
6566 );
6567 ROLLBACK TO SAVEPOINT process_release_holds_lines;
6568
6569 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6570 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6571 OE_MSG_PUB.Count_And_Get
6572 ( p_count => x_msg_count,
6573 p_data => x_msg_data
6574 );
6575 ROLLBACK TO SAVEPOINT process_release_holds_lines;
6576
6577 WHEN OTHERS THEN
6578 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6579 IF OE_MSG_PUB.Check_Msg_Level
6580 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6581 THEN
6582 OE_MSG_PUB.Add_Exc_Msg
6583 (G_PKG_NAME,
6584 l_api_name
6585 );
6586 END IF;
6587 OE_MSG_PUB.Count_And_Get
6588 ( p_count => x_msg_count,
6589 p_data => x_msg_data);
6590 ROLLBACK TO SAVEPOINT process_release_holds_lines;
6591
6592 end process_release_holds_lines;
6593
6594 /*
6595 PROCESS_RELEASE_HOLDS_ORDERS
6596 */
6597 procedure process_release_holds_orders (
6598 p_num_of_records IN NUMBER
6599 , p_sel_rec_tbl IN OE_GLOBALS.Selected_Record_Tbl
6600 , p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE
6601 , p_release_reason_code IN OE_HOLD_RELEASES.RELEASE_REASON_CODE%TYPE
6602 , p_release_comment IN OE_HOLD_RELEASES.RELEASE_COMMENT%TYPE
6603 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6604 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
6605 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6606 )
6607 IS
6608 l_line_rec OE_ORDER_PUB.line_rec_type;
6609 l_api_name CONSTANT VARCHAR2(30) := 'process_release_holds_orders';
6610 l_header_id NUMBER;
6611 l_return_status VARCHAR2(30);
6612 l_order_tbl OE_HOLDS_PVT.order_tbl_type;
6613 l_error_count NUMBER :=0;
6614 j INTEGER;
6615 initial INTEGER;
6616 nextpos INTEGER;
6617 L_prev_org_id number; -- MOAC
6618 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
6619 l_hold_release_rec OE_HOLDS_PVT.Hold_Release_Rec_Type;
6620 --l_record_ids varchar2(2000) := p_record_ids || ',';
6621 --l_num_of_records number;
6622
6623 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
6624 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
6625 l_msg_token VARCHAR2(100);
6626 BEGIN
6627 oe_msg_pub.initialize;
6628
6629 OE_DEBUG_PUB.Add('Entering OE_Holds_PVT.process_release_holds_orders',1);
6630
6631 IF check_system_holds( p_hold_id => p_hold_id
6632 ,x_return_status => x_return_status
6633 ,x_msg_count => x_msg_count
6634 ,x_msg_data => x_msg_data
6635 ) = 'N' THEN
6636 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
6637 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
6638 OE_MSG_PUB.ADD;
6639 x_return_status := FND_API.G_RET_STS_ERROR;
6640 OE_MSG_PUB.Count_And_Get
6641 ( p_count => x_msg_count
6642 , p_data => x_msg_data
6643 );
6644 RETURN;
6645 END IF;
6646
6647 OE_DEBUG_PUB.Add('After calling Check_System_Holds');
6648
6649 IF check_authorization ( p_hold_id => p_hold_id
6650 ,p_authorized_action_code => 'REMOVE'
6651 ,p_responsibility_id => l_resp_id
6652 ,p_application_id => l_application_id
6653 ,x_return_status => x_return_status
6654 ,x_msg_count => x_msg_count
6655 ,x_msg_data => x_msg_data
6656 ) = 'N' THEN
6657 OE_DEBUG_PUB.Add('Not authorize to Release this Hold:'|| to_char(p_hold_id),1);
6658 fnd_message.set_name('ONT','ONT_RELEASE');
6659 l_msg_token := fnd_message.get;
6660
6661 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
6662 fnd_message.set_token('ACTION', l_msg_token);
6663
6664 OE_MSG_PUB.ADD;
6665 -- RAISE FND_API.G_EXC_ERROR;
6666 x_return_status := FND_API.G_RET_STS_ERROR;
6667
6668 OE_MSG_PUB.Count_And_Get
6669 ( p_count => x_msg_count
6670 , p_data => x_msg_data
6671 );
6672
6673 RETURN;
6674 END IF;
6675
6676 OE_DEBUG_PUB.Add('After calling Check_Authorization');
6677
6678 SAVEPOINT process_release_holds_orders;
6679
6680 OE_DEBUG_PUB.Add('Release_Reason_Code: '||p_release_reason_code);
6681
6682 l_prev_org_id := null;
6683 FOR j in 1.. p_sel_rec_tbl.COUNT LOOP
6684 IF p_sel_rec_tbl(j).org_id <> nvl(l_prev_org_id, -99)
6685 THEN
6686 OE_DEBUG_PUB.Add('Mo_Global.Set_Policy_Context to:' || p_sel_rec_tbl(j).Org_Id );
6687 Mo_Global.Set_Policy_Context (p_access_mode => 'S',
6688 p_org_id => p_sel_rec_tbl(j).Org_Id);
6689 l_prev_org_id := p_sel_rec_tbl(j).org_id;
6690 END IF;
6691 l_order_tbl(1).header_id := p_sel_rec_tbl(j).Id1;
6692
6693 OE_DEBUG_PUB.Add('B4 Calling oe_holds_pvt.release_holds 4 HeaderID' || l_order_tbl(1).header_id);
6694 oe_holds_pvt.release_holds(
6695 p_order_tbl => l_order_tbl,
6696 p_hold_id => p_hold_id,
6697 p_release_reason_code => p_release_reason_code,
6698 p_release_comment => p_release_comment,
6699 x_return_status => x_return_status,
6700 x_msg_count => x_msg_count,
6701 x_msg_data => x_msg_data
6702 );
6703
6704 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,2);
6705 OE_DEBUG_PUB.Add('x_msg_count:' || to_char(x_msg_count),2);
6706 OE_DEBUG_PUB.Add('x_msg_data:' || x_msg_data,2);
6707
6708 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6709 oe_debug_pub.add('process_release_holds_orders unexpected failure',3);
6710 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6711 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
6712 oe_debug_pub.add('process_release_holds_orders failure',3);
6713 RAISE FND_API.G_EXC_ERROR;
6714 END IF;
6715
6716
6717 END LOOP;
6718
6719 x_return_status := FND_API.G_RET_STS_SUCCESS;
6720 -- Get message count and data
6721 OE_MSG_PUB.Count_And_Get
6722 ( p_count => x_msg_count
6723 , p_data => x_msg_data
6724 );
6725
6726 OE_DEBUG_PUB.Add('Exiting OE_Holds_PVT.process_release_holds_orders',1);
6727
6728 EXCEPTION /* Procedure exception handler */
6729
6730 WHEN FND_API.G_EXC_ERROR THEN
6731 x_return_status := FND_API.G_RET_STS_ERROR ;
6732 OE_MSG_PUB.Count_And_Get
6733 ( p_count => x_msg_count,
6734 p_data => x_msg_data
6735 );
6736 ROLLBACK TO SAVEPOINT process_release_holds_orders;
6737
6738 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6739 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6740 OE_MSG_PUB.Count_And_Get
6741 ( p_count => x_msg_count,
6742 p_data => x_msg_data
6743 );
6744 ROLLBACK TO SAVEPOINT process_release_holds_orders;
6745
6746 WHEN OTHERS THEN
6747 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6748 IF OE_MSG_PUB.Check_Msg_Level
6749 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6750 THEN
6751 OE_MSG_PUB.Add_Exc_Msg
6752 (G_PKG_NAME,
6753 l_api_name
6754 );
6755 END IF;
6756 OE_MSG_PUB.Count_And_Get
6757 ( p_count => x_msg_count,
6758 p_data => x_msg_data);
6759 ROLLBACK TO SAVEPOINT process_release_holds_orders;
6760
6761
6762 end process_release_holds_orders;
6763
6764 /*******************************/
6765 /* process_create_source */
6766 /*******************************/
6767 /* This procedure gets called when Create Holds Source is selected
6768 from the special menu.
6769 */
6770 procedure process_create_source(
6771 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type
6772 ,p_hold_existing_flg IN varchar2
6773 ,p_hold_future_flg IN varchar2
6774 ,p_org_id IN NUMBER DEFAULT MO_GLOBAL.get_current_org_id --ER#7479609
6775 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6776 ,x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
6777 ,x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
6778 )
6779 IS
6780 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
6781 l_hold_source_id OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE;
6782 l_hold_release_rec OE_HOLDS_PVT.hold_release_rec_type;
6783 l_hold_release_id oe_hold_releases.HOLD_RELEASE_ID%type;
6784 l_api_name CONSTANT VARCHAR2(30) := 'process_create_holds';
6785 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
6786 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
6787 l_msg_token VARCHAR2(100);
6788 /*Added the following variables for WF_HOLDS ER (bug 6449458)*/
6789 l_item_type OE_HOLD_DEFINITIONS.ITEM_TYPE%TYPE := NULL;
6790 l_activity_name OE_HOLD_DEFINITIONS.ACTIVITY_NAME%TYPE := NULL;
6791 l_is_hold_applied BOOLEAN;
6792 l_count_of_holds_applied NUMBER := 0;
6793
6794 --
6795 BEGIN
6796 oe_debug_pub.add('In process_create_holds', 1);
6797 oe_msg_pub.initialize; --bug 5548778
6798 l_hold_source_rec := p_hold_source_rec;
6799
6800 if check_system_holds( p_hold_id => l_hold_source_rec.hold_id
6801 ,x_return_status => x_return_status
6802 ,x_msg_count => x_msg_count
6803 ,x_msg_data => x_msg_data
6804 ) = 'N' THEN
6805 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(l_hold_source_rec.hold_id));
6806 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
6807 OE_MSG_PUB.ADD;
6808 x_return_status := FND_API.G_RET_STS_ERROR;
6809 OE_MSG_PUB.Count_And_Get
6810 ( p_count => x_msg_count
6811 , p_data => x_msg_data
6812 );
6813 return;
6814 END IF;
6815
6816 if check_authorization ( p_hold_id => l_hold_source_rec.hold_id
6817 ,p_authorized_action_code => 'APPLY'
6818 ,p_responsibility_id => l_resp_id
6819 ,p_application_id => l_application_id
6820 ,x_return_status => x_return_status
6821 ,x_msg_count => x_msg_count
6822 ,x_msg_data => x_msg_data
6823 ) = 'N' THEN
6824 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'||
6825 to_char(l_hold_source_rec.hold_id));
6826
6827 fnd_message.set_name('ONT','ONT_APPLY');
6828 l_msg_token := fnd_message.get;
6829
6830 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
6831 fnd_message.set_token('ACTION', l_msg_token);
6832
6833 OE_MSG_PUB.ADD;
6834 RAISE FND_API.G_EXC_ERROR;
6835 x_return_status := FND_API.G_RET_STS_ERROR;
6836 OE_MSG_PUB.Count_And_Get
6837 ( p_count => x_msg_count
6838 , p_data => x_msg_data
6839 );
6840 return;
6841 END IF;
6842
6843
6844 oe_debug_pub.add('p_hold_existing_flg->' || p_hold_existing_flg,3);
6845 oe_debug_pub.add('p_hold_future_flg->' || p_hold_future_flg,3);
6846 /*added the select statement for WF_HOLDS ER (bug 6449458)*/
6847 select item_type, activity_name
6848 into l_item_type, l_activity_name
6849 from oe_hold_definitions
6850 where hold_id = l_hold_source_rec.hold_id;
6851
6852 if (p_hold_existing_flg = 'Y' AND p_hold_future_flg = 'Y') then
6853 oe_debug_pub.add('Calling oe_holds_pvt.apply_Holds',3);
6854 /*oe_holds_pvt.apply_Holds(
6855 p_hold_source_rec => l_hold_source_rec
6856 ,x_return_status => x_return_status
6857 ,x_msg_count => x_msg_count
6858 ,x_msg_data => x_msg_data
6859 );*/
6860 /*Calling Overloaded Apply_hold Procedure for WF_HOLDS ER (bug 6449458)*/
6861 oe_holds_pvt.apply_Holds(
6862 p_hold_source_rec => l_hold_source_rec
6863 ,p_hold_existing_flg => 'Y'
6864 ,p_hold_future_flg => 'Y'
6865 ,p_org_id => p_org_id --ER#7479609
6866 ,p_wf_item_type => l_item_type
6867 ,p_wf_activity_name => l_activity_name
6868 ,x_return_status => x_return_status
6869 ,x_msg_count => x_msg_count
6870 ,x_msg_data => x_msg_data
6871 ,x_is_hold_applied => l_is_hold_applied
6872 );
6873
6874 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,2);
6875 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6876 oe_debug_pub.add('process_create_holds unexpected failure',1);
6877 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6878 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
6879 oe_debug_pub.add('process_create_holds expected failure',1);
6880 RAISE FND_API.G_EXC_ERROR;
6881 END IF;
6882 x_return_status := FND_API.G_RET_STS_SUCCESS;
6883 elsif (p_hold_existing_flg = 'Y' AND p_hold_future_flg = 'N') then
6884 -- Create_Hold_Source (Create the Hold Source)
6885 -- Create_Order_Holds (Put the existing Orders on Hold)
6886 -- Create_Release_Source (Release the source.Do not release orders from hold)
6887 oe_debug_pub.add('Calling Create_Hold_Source',3);
6888 Create_Hold_Source (
6889 p_hold_source_rec => l_hold_source_rec,
6890 p_org_id =>p_org_id, --ER#7479609
6891 x_hold_source_id => l_hold_source_id,
6892 x_return_status => x_return_status,
6893 x_msg_count => x_msg_count,
6894 x_msg_data => x_msg_data
6895 );
6896
6897 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6898 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
6899 RAISE FND_API.G_EXC_ERROR;
6900 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
6901 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6902 END IF;
6903 END IF;
6904 OE_DEBUG_PUB.Add('l_hold_source_id->' || to_char(l_hold_source_id) ,3);
6905 l_hold_source_rec.hold_source_id := l_hold_source_id;
6906 OE_DEBUG_PUB.Add ('Calling Create_Order_Holds',3);
6907 Create_Order_Holds (
6908 p_hold_source_rec => l_hold_source_rec
6909 ,p_org_id =>p_org_id --ER#7479609
6910 ,x_return_status => x_return_status
6911 ,x_msg_count => x_msg_count
6912 ,x_msg_data => x_msg_data
6913 );
6914 OE_DEBUG_PUB.Add('After Create_Order_Holds',3);
6915 -- XX Should be a new reason code
6916 l_hold_release_rec.hold_source_id := l_hold_source_id;
6917 l_hold_release_rec.release_reason_code := 'EXPIRE';
6918 l_hold_release_rec.release_comment := 'Released automatically by System';
6919 oe_debug_pub.add('Calling Create_Release_Source',3);
6920 OE_HOLDS_PVT.Create_Release_Source(p_hold_release_rec => l_hold_release_rec,
6921 x_hold_release_id => l_hold_release_id,
6922 x_return_status => x_return_status,
6923 x_msg_count => x_msg_count,
6924 x_msg_data => x_msg_data);
6925 OE_DEBUG_PUB.Add('Create_Order_Holds Status' || x_return_status,3);
6926
6927 elsif (p_hold_existing_flg = 'N' AND p_hold_future_flg = 'Y') then
6928 -- call create_hold_source for only future holds to go on hold.
6929 OE_DEBUG_PUB.Add('Calling Create_Hold_Source',3);
6930 Create_Hold_Source (
6931 p_hold_source_rec => l_hold_source_rec,
6932 p_org_id =>p_org_id, --ER#7479609
6933 x_hold_source_id => l_hold_source_id,
6934 x_return_status => x_return_status,
6935 x_msg_count => x_msg_count,
6936 x_msg_data => x_msg_data
6937 );
6938 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6939 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
6940 RAISE FND_API.G_EXC_ERROR;
6941 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
6942 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6943 END IF;
6944 END IF;
6945 else
6946 -- Should not get here
6947 oe_debug_pub.add ('Both of Hold Future and Existing Flag are unset',3);
6948 oe_debug_pub.add ('Do nothing',3);
6949 end if; -- (p_hold_existing_flg = 'Y' AND p_hold_future_flg 'Y')
6950 -- Get message count and data
6951
6952 OE_MSG_PUB.Count_And_Get
6953 ( p_count => x_msg_count
6954 , p_data => x_msg_data
6955 );
6956
6957
6958 EXCEPTION /* Procedure exception handler */
6959
6960 WHEN FND_API.G_EXC_ERROR THEN
6961 x_return_status := FND_API.G_RET_STS_ERROR ;
6962 OE_MSG_PUB.Count_And_Get
6963 ( p_count => x_msg_count,
6964 p_data => x_msg_data
6965 );
6966
6967 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6968 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6969 OE_MSG_PUB.Count_And_Get
6970 ( p_count => x_msg_count,
6971 p_data => x_msg_data
6972 );
6973
6974 WHEN OTHERS THEN
6975 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6976 IF OE_MSG_PUB.Check_Msg_Level
6977 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6978 THEN
6979 OE_MSG_PUB.Add_Exc_Msg
6980 (G_PKG_NAME,
6981 l_api_name
6982 );
6983 END IF;
6984 OE_MSG_PUB.Count_And_Get
6985 ( p_count => x_msg_count,
6986 p_data => x_msg_data);
6987
6988
6989 end process_create_source;
6990
6991
6992 /*******************************/
6993 /* process_release_source */
6994 /*******************************/
6995 /* This procedure gets called when Release Source button is pressed
6996 from the Release Source window.
6997 */
6998 procedure process_release_source(
6999 p_hold_source_id IN OE_Hold_Sources_ALL.HOLD_SOURCE_ID%TYPE
7000 ,p_hold_release_rec IN OE_HOLDS_PVT.Hold_Release_Rec_Type
7001 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7002 ,x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
7003 ,x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7004 )
7005 IS
7006 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
7007 l_hold_release_rec OE_HOLDS_PVT.Hold_Release_Rec_Type;
7008 l_api_name CONSTANT VARCHAR2(30) := 'process_release_source';
7009 l_hold_id OE_HOLD_DEFINITIONS.HOLD_ID%TYPE;
7010 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
7011 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
7012 --ER#7479609 l_hold_entity_code varchar2(1); /* Added for Bug 1946783 */
7013 l_hold_entity_code OE_HOLD_SOURCES_ALL.HOLD_ENTITY_CODE%TYPE; --ER#7479609
7014 l_msg_token VARCHAR2(100);
7015 BEGIN
7016
7017 BEGIN
7018 select hold_id, hold_entity_code
7019 into l_hold_id, l_hold_entity_code
7020 from OE_HOLD_SOURCES_all
7021 where hold_source_id = p_hold_source_id;
7022 EXCEPTION
7023 WHEN NO_DATA_FOUND THEN
7024 null;
7025 END;
7026
7027
7028 /* Bug 1946783 - Added Check for credit hold created from AR */
7029
7030 If l_hold_id = 1 AND (l_hold_entity_code ='C' OR l_hold_entity_code = 'B') then
7031 OE_DEBUG_PUB.Add('Bug 1946783 Credit Hold should be released from AR',1);
7032
7033 fnd_message.set_name('ONT', 'OE_CC_AR_HOLD_NOT_RELEASED');
7034 OE_MSG_PUB.ADD;
7035 RAISE FND_API.G_EXC_ERROR;
7036 x_return_status := FND_API.G_RET_STS_ERROR;
7037 OE_MSG_PUB.Count_And_Get
7038 ( p_count => x_msg_count
7039 , p_data => x_msg_data
7040 );
7041 return;
7042 end if;
7043
7044 /* End of code added for Bug 1946783 */
7045
7046
7047 if check_system_holds( p_hold_id => l_hold_id
7048 ,x_return_status => x_return_status
7049 ,x_msg_count => x_msg_count
7050 ,x_msg_data => x_msg_data
7051 ) = 'N' THEN
7052 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(l_hold_id));
7053 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
7054 fnd_message.set_token('ACTION', 'Release');
7055 OE_MSG_PUB.ADD;
7056 x_return_status := FND_API.G_RET_STS_ERROR;
7057 OE_MSG_PUB.Count_And_Get
7058 ( p_count => x_msg_count
7059 , p_data => x_msg_data
7060 );
7061 return;
7062 END IF;
7063
7064 if check_authorization ( p_hold_id => l_hold_id
7065 ,p_authorized_action_code => 'REMOVE'
7066 ,p_responsibility_id => l_resp_id
7067 ,p_application_id => l_application_id
7068 ,x_return_status => x_return_status
7069 ,x_msg_count => x_msg_count
7070 ,x_msg_data => x_msg_data
7071 ) = 'N' THEN
7072 OE_DEBUG_PUB.Add('Not authorize to Release this Hold:'|| to_char(l_hold_id));
7073
7074 fnd_message.set_name('ONT','ONT_RELEASE');
7075 l_msg_token := fnd_message.get;
7076
7077 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
7078 fnd_message.set_token('ACTION', l_msg_token);
7079
7080 OE_MSG_PUB.ADD;
7081 RAISE FND_API.G_EXC_ERROR;
7082 x_return_status := FND_API.G_RET_STS_ERROR;
7083 OE_MSG_PUB.Count_And_Get
7084 ( p_count => x_msg_count
7085 , p_data => x_msg_data
7086 );
7087 return;
7088 END IF;
7089
7090 l_hold_source_rec.hold_source_id := p_hold_source_id;
7091 l_hold_release_rec := p_hold_release_rec;
7092 --l_hold_release_rec.RELEASE_REASON_CODE := p_release_reason_code;
7093 --l_hold_release_rec.RELEASE_COMMENT := p_release_comment;
7094
7095 oe_holds_pvt.Release_Holds(
7096 p_hold_source_rec => l_hold_source_rec
7097 ,p_hold_release_rec => l_hold_release_rec
7098 ,x_return_status => x_return_status
7099 ,x_msg_count => x_msg_count
7100 ,x_msg_data => x_msg_data
7101 );
7102 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,1);
7103
7104 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7105 oe_debug_pub.add('process_release_source unexpected failure',3);
7106 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7107 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
7108 oe_debug_pub.add('process_release_source expected failure',3);
7109 RAISE FND_API.G_EXC_ERROR;
7110 END IF;
7111
7112 x_return_status := FND_API.G_RET_STS_SUCCESS;
7113 -- Get message count and data
7114 OE_MSG_PUB.Count_And_Get
7115 ( p_count => x_msg_count
7116 , p_data => x_msg_data
7117 );
7118
7119
7120 EXCEPTION /* Procedure exception handler */
7121
7122 WHEN FND_API.G_EXC_ERROR THEN
7123 x_return_status := FND_API.G_RET_STS_ERROR ;
7124 OE_MSG_PUB.Count_And_Get
7125 ( p_count => x_msg_count,
7126 p_data => x_msg_data
7127 );
7128
7129 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7130 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7131 OE_MSG_PUB.Count_And_Get
7132 ( p_count => x_msg_count,
7133 p_data => x_msg_data
7134 );
7135
7136 WHEN OTHERS THEN
7137 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7138 IF OE_MSG_PUB.Check_Msg_Level
7139 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7140 THEN
7141 OE_MSG_PUB.Add_Exc_Msg
7142 (G_PKG_NAME,
7143 l_api_name
7144 );
7145 END IF;
7146 OE_MSG_PUB.Count_And_Get
7147 ( p_count => x_msg_count,
7148 p_data => x_msg_data);
7149
7150 end process_release_source;
7151
7152 /* ========================================== */
7153 /* Overloaded procedures for ER 1373910 begin */
7154 /* ========================================== */
7155
7156 /*
7157 NAME :
7158 process_release_holds_lines
7159 BRIEF DESCRIPTION :
7160 This API is called when workflow based hold on lines is released from
7161 the sales order form.
7162 CALLER :
7163 1. Oe_holds_release_window.action_release
7164 RELEASE LEVEL :
7165 12.1.1 and higher.
7166 PARAMETERS :
7167 p_num_of_records Number of records affected by the hold release.
7168 p_sel_rec_tbl Table of lines affected by hold release.
7169 p_hold_id Hold being released
7170 p_release_reason_code Hold release reason code
7171 p_release_comment Hold release comments
7172 p_wf_release_action Decides if workflow is to be progressed if hold
7173 being released is workflow based.
7174 x_return_status Return status
7175 */
7176
7177 procedure process_release_holds_lines (
7178 p_num_of_records IN NUMBER
7179 , p_sel_rec_tbl IN OE_GLOBALS.Selected_Record_Tbl
7180 , p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE
7181 , p_release_reason_code IN OE_HOLD_RELEASES.RELEASE_REASON_CODE%TYPE
7182 , p_release_comment IN OE_HOLD_RELEASES.RELEASE_COMMENT%TYPE
7183 , p_wf_release_action IN VARCHAR2
7184 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7185 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
7186 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7187 )
7188 IS
7189
7190 --l_header_rec OE_ORDER_PUB.Header_Rec_Type;
7191 l_line_rec OE_ORDER_PUB.line_rec_type;
7192 l_api_name CONSTANT VARCHAR2(30) := 'process_release_holds_lines';
7193 l_line_id NUMBER;
7194 l_return_status VARCHAR2(30);
7195 l_order_tbl OE_HOLDS_PVT.order_tbl_type;
7196 l_error_count NUMBER :=0;
7197 l_ordered_quantity NUMBER ;
7198 j INTEGER;
7199 initial INTEGER;
7200 nextpos INTEGER;
7201
7202 l_prev_org_id number;
7203 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
7204 l_hold_release_rec OE_HOLDS_PVT.Hold_Release_Rec_Type;
7205 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
7206 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
7207 l_msg_token VARCHAR2(100);
7208 BEGIN
7209 oe_msg_pub.initialize;
7210
7211 OE_DEBUG_PUB.Add('Entering OE_Holds_PVT.process_release_holds_lines',1);
7212
7213 IF check_system_holds( p_hold_id => p_hold_id
7214 ,x_return_status => x_return_status
7215 ,x_msg_count => x_msg_count
7216 ,x_msg_data => x_msg_data
7217 ) = 'N' THEN
7218 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
7219 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
7220 OE_MSG_PUB.ADD;
7221 x_return_status := FND_API.G_RET_STS_ERROR;
7222 OE_MSG_PUB.Count_And_Get
7223 ( p_count => x_msg_count
7224 , p_data => x_msg_data
7225 );
7226 RETURN;
7227 END IF;
7228
7229 OE_DEBUG_PUB.Add('After calling Check_System_Holds');
7230
7231 IF check_authorization ( p_hold_id => p_hold_id
7232 ,p_authorized_action_code => 'REMOVE'
7233 ,p_responsibility_id => l_resp_id
7234 ,p_application_id => l_application_id
7235 ,x_return_status => x_return_status
7236 ,x_msg_count => x_msg_count
7237 ,x_msg_data => x_msg_data
7238 ) = 'N' THEN
7239 OE_DEBUG_PUB.Add('Not authorize to Release this Hold:'||to_char(p_hold_id));
7240 fnd_message.set_name('ONT','ONT_RELEASE');
7241 l_msg_token := fnd_message.get;
7242
7243 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
7244 fnd_message.set_token('ACTION', l_msg_token);
7245
7246 OE_MSG_PUB.ADD;
7247 -- RAISE FND_API.G_EXC_ERROR;
7248 x_return_status := FND_API.G_RET_STS_ERROR;
7249 OE_MSG_PUB.Count_And_Get
7250 ( p_count => x_msg_count
7251 , p_data => x_msg_data
7252 );
7253 RETURN;
7254 END IF;
7255
7256 OE_DEBUG_PUB.Add('After calling Check_Authorization');
7257
7258 SAVEPOINT process_release_holds_lines;
7259
7260 l_prev_org_id := null;
7261 FOR j in 1.. p_sel_rec_tbl.COUNT LOOP
7262 IF p_sel_rec_tbl(j).org_id <> nvl(l_prev_org_id, -99)
7263 THEN
7264 OE_DEBUG_PUB.Add('Mo_Global.Set_Policy_Context to:' || p_sel_rec_tbl(j).Org_Id );
7265 Mo_Global.Set_Policy_Context (p_access_mode => 'S',
7266 p_org_id => p_sel_rec_tbl(j).Org_Id);
7267 l_prev_org_id := p_sel_rec_tbl(j).org_id;
7268 END IF;
7269
7270 L_line_id := p_sel_rec_tbl(j).id1;
7271 OE_LINE_UTIL.Query_Row
7272 ( p_line_id => l_line_id,
7273 x_line_rec => l_line_rec
7274 );
7275 OE_DEBUG_PUB.Add('header_id: '||l_line_rec.header_id);
7276 OE_DEBUG_PUB.Add('Line_id: '||to_char(l_line_rec.line_id));
7277 l_order_tbl(1).header_id := l_line_rec.header_id;
7278 l_order_tbl(1).line_id := l_line_rec.line_id;
7279
7280
7281 OE_DEBUG_PUB.Add('B4 Calling oe_holds_pvt.release_holds:HeaderID'
7282 || l_order_tbl(1).header_id || ', LineID:' || l_order_tbl(1).line_id);
7283 oe_holds_pvt.release_holds(
7284 p_order_tbl => l_order_tbl,
7285 p_hold_id => p_hold_id,
7286 p_release_reason_code => p_release_reason_code,
7287 p_release_comment => p_release_comment,
7288 x_return_status => x_return_status,
7289 x_msg_count => x_msg_count,
7290 x_msg_data => x_msg_data
7291 );
7292
7293 OE_DEBUG_PUB.Add('After oe_holds_pvt.release_holds:' || x_return_status,3);
7294
7295 -- Changes begin : ER 1373910
7296 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
7297
7298 IF p_wf_release_action = 'Y' THEN
7299 OE_DEBUG_PUB.Add('Before calling Oe_holds_pvt.progress_order');
7300 progress_order( p_hold_id,
7301 p_num_of_records,
7302 l_order_tbl,
7303 x_return_status,
7304 x_msg_count,
7305 x_msg_data );
7306 OE_DEBUG_PUB.Add('After Oe_holds_pvt.progress_order : ' || x_return_status,3);
7307 END IF;
7308 END IF;
7309 -- Changes End : ER 1373910
7310
7311 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7312 oe_debug_pub.add('process_release_holds_lines unexpected failure',3);
7313 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7314 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
7315 oe_debug_pub.add('process_release_holds_lines failure',3);
7316 RAISE FND_API.G_EXC_ERROR;
7317 END IF;
7318
7319 END LOOP;
7320
7321 x_return_status := FND_API.G_RET_STS_SUCCESS;
7322 -- Get message count and data
7323 OE_MSG_PUB.Count_And_Get
7324 ( p_count => x_msg_count
7325 , p_data => x_msg_data
7326 );
7327
7328 OE_DEBUG_PUB.Add('Exiting OE_Holds_PVT.process_release_holds_lines',1);
7329
7330 EXCEPTION /* Procedure exception handler */
7331
7332 WHEN FND_API.G_EXC_ERROR THEN
7333 x_return_status := FND_API.G_RET_STS_ERROR ;
7334 OE_MSG_PUB.Count_And_Get
7335 ( p_count => x_msg_count,
7336 p_data => x_msg_data
7337 );
7338 ROLLBACK TO SAVEPOINT process_release_holds_lines;
7339
7340 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7341 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7342 OE_MSG_PUB.Count_And_Get
7343 ( p_count => x_msg_count,
7344 p_data => x_msg_data
7345 );
7346 ROLLBACK TO SAVEPOINT process_release_holds_lines;
7347
7348 WHEN OTHERS THEN
7349 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7350 IF OE_MSG_PUB.Check_Msg_Level
7351 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7352 THEN
7353 OE_MSG_PUB.Add_Exc_Msg
7354 (G_PKG_NAME,
7355 l_api_name
7356 );
7357 END IF;
7358 OE_MSG_PUB.Count_And_Get
7359 ( p_count => x_msg_count,
7360 p_data => x_msg_data);
7361 ROLLBACK TO SAVEPOINT process_release_holds_lines;
7362
7363 end process_release_holds_lines;
7364
7365 /*
7366 NAME :
7367 process_release_holds_orders
7368 BRIEF DESCRIPTION :
7369 This API is called when workflow based hold on orders is released from
7370 the sales order form.
7371 CALLER :
7372 1. Oe_holds_release_window.action_release
7373 RELEASE LEVEL :
7374 12.1.1 and higher.
7375 PARAMETERS :
7376 p_num_of_records Number of records affected by the hold release.
7377 p_sel_rec_tbl Table of orders affected by hold release.
7378 p_hold_id Hold being released
7379 p_release_reason_code Hold release reason code
7380 p_release_comment Hold release comments
7381 p_wf_release_action Decides if workflow is to be progressed if hold
7382 being released is workflow based.
7383 x_return_status Return status
7384 */
7385
7386 procedure process_release_holds_orders (
7387 p_num_of_records IN NUMBER
7388 , p_sel_rec_tbl IN OE_GLOBALS.Selected_Record_Tbl
7389 , p_hold_id IN OE_HOLD_DEFINITIONS.HOLD_ID%TYPE
7390 , p_release_reason_code IN OE_HOLD_RELEASES.RELEASE_REASON_CODE%TYPE
7391 , p_release_comment IN OE_HOLD_RELEASES.RELEASE_COMMENT%TYPE
7392 , p_wf_release_action IN VARCHAR2
7393 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7394 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
7395 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7396 )
7397 IS
7398 l_line_rec OE_ORDER_PUB.line_rec_type;
7399 l_api_name CONSTANT VARCHAR2(30) := 'process_release_holds_orders';
7400 l_header_id NUMBER;
7401 l_return_status VARCHAR2(30);
7402 l_order_tbl OE_HOLDS_PVT.order_tbl_type;
7403 l_error_count NUMBER :=0;
7404 j INTEGER;
7405 initial INTEGER;
7406 nextpos INTEGER;
7407 l_prev_org_id number; -- MOAC
7408 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
7409 l_hold_release_rec OE_HOLDS_PVT.Hold_Release_Rec_Type;
7410 --l_record_ids varchar2(2000) := p_record_ids || ',';
7411 --l_num_of_records number;
7412
7413 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
7414 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
7415 l_msg_token VARCHAR2(100);
7416 BEGIN
7417 oe_msg_pub.initialize;
7418
7419 OE_DEBUG_PUB.Add('Entering OE_Holds_PVT.process_release_holds_orders',1);
7420
7421 IF check_system_holds( p_hold_id => p_hold_id
7422 ,x_return_status => x_return_status
7423 ,x_msg_count => x_msg_count
7424 ,x_msg_data => x_msg_data
7425 ) = 'N' THEN
7426 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(p_hold_id));
7427 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
7428 OE_MSG_PUB.ADD;
7429 x_return_status := FND_API.G_RET_STS_ERROR;
7430 OE_MSG_PUB.Count_And_Get
7431 ( p_count => x_msg_count
7432 , p_data => x_msg_data
7433 );
7434 RETURN;
7435 END IF;
7436
7437 OE_DEBUG_PUB.Add('After calling Check_System_Holds');
7438
7439 IF check_authorization ( p_hold_id => p_hold_id
7440 ,p_authorized_action_code => 'REMOVE'
7441 ,p_responsibility_id => l_resp_id
7442 ,p_application_id => l_application_id
7443 ,x_return_status => x_return_status
7444 ,x_msg_count => x_msg_count
7445 ,x_msg_data => x_msg_data
7446 ) = 'N' THEN
7447 OE_DEBUG_PUB.Add('Not authorize to Release this Hold:'|| to_char(p_hold_id),1);
7448 fnd_message.set_name('ONT','ONT_RELEASE');
7449 l_msg_token := fnd_message.get;
7450
7451 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
7452 fnd_message.set_token('ACTION', l_msg_token);
7453
7454 OE_MSG_PUB.ADD;
7455 -- RAISE FND_API.G_EXC_ERROR;
7456 x_return_status := FND_API.G_RET_STS_ERROR;
7457
7458 OE_MSG_PUB.Count_And_Get
7459 ( p_count => x_msg_count
7460 , p_data => x_msg_data
7461 );
7462
7463 RETURN;
7464 END IF;
7465
7466 OE_DEBUG_PUB.Add('After calling Check_Authorization');
7467
7468 SAVEPOINT process_release_holds_orders;
7469
7470 OE_DEBUG_PUB.Add('Release_Reason_Code: '||p_release_reason_code);
7471
7472 l_prev_org_id := null;
7473 FOR j in 1.. p_sel_rec_tbl.COUNT LOOP
7474 IF p_sel_rec_tbl(j).org_id <> nvl(l_prev_org_id, -99) THEN
7475 OE_DEBUG_PUB.Add('Mo_Global.Set_Policy_Context to:' || p_sel_rec_tbl(j).Org_Id );
7476 Mo_Global.Set_Policy_Context (p_access_mode => 'S',
7477 p_org_id => p_sel_rec_tbl(j).Org_Id);
7478 l_prev_org_id := p_sel_rec_tbl(j).org_id;
7479 END IF;
7480 l_order_tbl(1).header_id := p_sel_rec_tbl(j).Id1;
7481
7482 OE_DEBUG_PUB.Add('B4 Calling oe_holds_pvt.release_holds 4 HeaderID' || l_order_tbl(1).header_id);
7483 oe_holds_pvt.release_holds(
7484 p_order_tbl => l_order_tbl,
7485 p_hold_id => p_hold_id,
7486 p_release_reason_code => p_release_reason_code,
7487 p_release_comment => p_release_comment,
7488 x_return_status => x_return_status,
7489 x_msg_count => x_msg_count,
7490 x_msg_data => x_msg_data
7491 );
7492
7493 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,2);
7494 OE_DEBUG_PUB.Add('x_msg_count:' || to_char(x_msg_count),2);
7495 OE_DEBUG_PUB.Add('x_msg_data:' || x_msg_data,2);
7496
7497 -- Changes begin : ER 1373910
7498 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
7499 IF p_wf_release_action = 'Y' THEN
7500 OE_DEBUG_PUB.Add('Before calling Oe_holds_pvt.progress_order');
7501 progress_order( p_hold_id,
7502 p_num_of_records,
7503 l_order_tbl,
7504 x_return_status,
7505 x_msg_count,
7506 x_msg_data);
7507 OE_DEBUG_PUB.Add('After Oe_holds_pvt.progress_order : ' || x_return_status,3);
7508 END IF;
7509 END IF;
7510 -- Changes end : ER 1373910
7511
7512 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7513 oe_debug_pub.add('process_release_holds_orders unexpected failure',3);
7514 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7515 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
7516 oe_debug_pub.add('process_release_holds_orders failure',3);
7517 RAISE FND_API.G_EXC_ERROR;
7518 END IF;
7519
7520
7521 END LOOP;
7522
7523 x_return_status := FND_API.G_RET_STS_SUCCESS;
7524 -- Get message count and data
7525 OE_MSG_PUB.Count_And_Get
7526 ( p_count => x_msg_count
7527 , p_data => x_msg_data
7528 );
7529
7530 OE_DEBUG_PUB.Add('Exiting OE_Holds_PVT.process_release_holds_orders',1);
7531
7532 EXCEPTION /* Procedure exception handler */
7533
7534 WHEN FND_API.G_EXC_ERROR THEN
7535 x_return_status := FND_API.G_RET_STS_ERROR ;
7536 OE_MSG_PUB.Count_And_Get
7537 ( p_count => x_msg_count,
7538 p_data => x_msg_data
7539 );
7540 ROLLBACK TO SAVEPOINT process_release_holds_orders;
7541
7542 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7543 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7544 OE_MSG_PUB.Count_And_Get
7545 ( p_count => x_msg_count,
7546 p_data => x_msg_data
7547 );
7548 ROLLBACK TO SAVEPOINT process_release_holds_orders;
7549
7550 WHEN OTHERS THEN
7551 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7552 IF OE_MSG_PUB.Check_Msg_Level
7553 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7554 THEN
7555 OE_MSG_PUB.Add_Exc_Msg
7556 (G_PKG_NAME,
7557 l_api_name
7558 );
7559 END IF;
7560 OE_MSG_PUB.Count_And_Get
7561 ( p_count => x_msg_count,
7562 p_data => x_msg_data);
7563 ROLLBACK TO SAVEPOINT process_release_holds_orders;
7564
7565
7566 end process_release_holds_orders;
7567
7568 /*
7569 NAME :
7570 process_release_source
7571 BRIEF DESCRIPTION :
7572 This API is called when Release Source button is pressed
7573 from the Release Source window.
7574 CALLER :
7575 1. Oe_holds_release_window.create_release_source
7576 RELEASE LEVEL :
7577 12.1.1 and higher.
7578 PARAMETERS :
7579 p_hold_source_id Hold source being released.
7580 p_hold_release_rec Hold source release record.
7581 p_wf_release_action Decides if workflow is to be progressed if hold
7582 source being released is defined on a workflow
7583 based hold.
7584 x_return_status Return status
7585 */
7586
7587 procedure process_release_source(
7588 p_hold_source_id IN OE_Hold_Sources_ALL.HOLD_SOURCE_ID%TYPE
7589 ,p_hold_release_rec IN OE_HOLDS_PVT.Hold_Release_Rec_Type
7590 ,p_wf_release_action IN VARCHAR2
7591 ,x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7592 ,x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
7593 ,x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7594 )
7595 IS
7596 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
7597 l_hold_release_rec OE_HOLDS_PVT.Hold_Release_Rec_Type;
7598 l_api_name CONSTANT VARCHAR2(30) := 'process_release_source';
7599 l_hold_id OE_HOLD_DEFINITIONS.HOLD_ID%TYPE;
7600 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE := FND_GLOBAL.RESP_APPL_ID;
7601 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE := FND_GLOBAL.RESP_ID;
7602 --ER#7479609 l_hold_entity_code VARCHAR2(1); /* Added for Bug 1946783 */
7603 l_hold_entity_code OE_HOLD_SOURCES_ALL.HOLD_ENTITY_CODE%TYPE; --ER#7479609
7604 l_msg_token VARCHAR2(100);
7605 BEGIN
7606
7607
7608 BEGIN
7609 select hold_id, hold_entity_code
7610 into l_hold_id, l_hold_entity_code
7611 from OE_HOLD_SOURCES_all
7612 where hold_source_id = p_hold_source_id;
7613 EXCEPTION
7614 WHEN NO_DATA_FOUND THEN
7615 null;
7616 END;
7617
7618 /* Bug 1946783 - Added Check for credit hold created from AR */
7619
7620 If l_hold_id = 1 AND (l_hold_entity_code ='C' OR l_hold_entity_code = 'B') then
7621 OE_DEBUG_PUB.Add('Bug 1946783 Credit Hold should be released from AR',1);
7622
7623 fnd_message.set_name('ONT', 'OE_CC_AR_HOLD_NOT_RELEASED');
7624 OE_MSG_PUB.ADD;
7625 RAISE FND_API.G_EXC_ERROR;
7626 x_return_status := FND_API.G_RET_STS_ERROR;
7627 OE_MSG_PUB.Count_And_Get
7628 ( p_count => x_msg_count
7629 , p_data => x_msg_data
7630 );
7631 return;
7632 end if;
7633
7634 /* End of code added for Bug 1946783 */
7635
7636
7637 if check_system_holds( p_hold_id => l_hold_id
7638 ,x_return_status => x_return_status
7639 ,x_msg_count => x_msg_count
7640 ,x_msg_data => x_msg_data
7641 ) = 'N' THEN
7642 OE_DEBUG_PUB.Add('Not authorize to Apply this Hold:'|| to_char(l_hold_id));
7643 fnd_message.set_name('ONT', 'ONT_HOLDS_SYSTEM_CHECK');
7644 fnd_message.set_token('ACTION', 'Release');
7645 OE_MSG_PUB.ADD;
7646 x_return_status := FND_API.G_RET_STS_ERROR;
7647 OE_MSG_PUB.Count_And_Get
7648 ( p_count => x_msg_count
7649 , p_data => x_msg_data
7650 );
7651 return;
7652 END IF;
7653
7654
7655 if check_authorization ( p_hold_id => l_hold_id
7656 ,p_authorized_action_code => 'REMOVE'
7657 ,p_responsibility_id => l_resp_id
7658 ,p_application_id => l_application_id
7659 ,x_return_status => x_return_status
7660 ,x_msg_count => x_msg_count
7661 ,x_msg_data => x_msg_data
7662 ) = 'N' THEN
7663 OE_DEBUG_PUB.Add('Not authorize to Release this Hold:'|| to_char(l_hold_id));
7664
7665 fnd_message.set_name('ONT','ONT_RELEASE');
7666 l_msg_token := fnd_message.get;
7667
7668 fnd_message.set_name('ONT', 'OE_HOLDS_AUTHORIZATION_FAILED');
7669 fnd_message.set_token('ACTION', l_msg_token);
7670
7671 OE_MSG_PUB.ADD;
7672 RAISE FND_API.G_EXC_ERROR;
7673 x_return_status := FND_API.G_RET_STS_ERROR;
7674 OE_MSG_PUB.Count_And_Get
7675 ( p_count => x_msg_count
7676 , p_data => x_msg_data
7677 );
7678 return;
7679 END IF;
7680
7681 l_hold_source_rec.hold_source_id := p_hold_source_id;
7682 l_hold_release_rec := p_hold_release_rec;
7683 --l_hold_release_rec.RELEASE_REASON_CODE := p_release_reason_code;
7684 --l_hold_release_rec.RELEASE_COMMENT := p_release_comment;
7685
7686 oe_holds_pvt.Release_Holds(
7687 p_hold_source_rec => l_hold_source_rec
7688 ,p_hold_release_rec => l_hold_release_rec
7689 ,x_return_status => x_return_status
7690 ,x_msg_count => x_msg_count
7691 ,x_msg_data => x_msg_data
7692 );
7693
7694
7695 OE_DEBUG_PUB.Add('x_return_status:' || x_return_status,1);
7696
7697 -- Changes begin : ER 1373910
7698 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
7699 IF p_wf_release_action = 'Y' THEN
7700 Oe_debug_pub.Add('Before calling Oe_holds_pvt.progress_order');
7701 progress_order( p_hold_source_id,
7702 x_return_status,
7703 x_msg_count,
7704 x_msg_data);
7705 Oe_debug_pub.ADD('Oe_holds_pvt.progress order returned with : ' || x_return_status);
7706 END IF;
7707 END IF;
7708 -- Changes end : ER 1373910
7709
7710 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7711 oe_debug_pub.add('process_release_source unexpected failure',3);
7712 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7713 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
7714 oe_debug_pub.add('process_release_source expected failure',3);
7715 RAISE FND_API.G_EXC_ERROR;
7716 END IF;
7717
7718 x_return_status := FND_API.G_RET_STS_SUCCESS;
7719 -- Get message count and data
7720 OE_MSG_PUB.Count_And_Get
7721 ( p_count => x_msg_count
7722 , p_data => x_msg_data
7723 );
7724
7725
7726 EXCEPTION /* Procedure exception handler */
7727
7728 WHEN FND_API.G_EXC_ERROR THEN
7729 x_return_status := FND_API.G_RET_STS_ERROR ;
7730 OE_MSG_PUB.Count_And_Get
7731 ( p_count => x_msg_count,
7732 p_data => x_msg_data
7733 );
7734
7735 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7736 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7737 OE_MSG_PUB.Count_And_Get
7738 ( p_count => x_msg_count,
7739 p_data => x_msg_data
7740 );
7741
7742 WHEN OTHERS THEN
7743 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7744 IF OE_MSG_PUB.Check_Msg_Level
7745 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7746 THEN
7747 OE_MSG_PUB.Add_Exc_Msg
7748 (G_PKG_NAME,
7749 l_api_name
7750 );
7751 END IF;
7752 OE_MSG_PUB.Count_And_Get
7753 ( p_count => x_msg_count,
7754 p_data => x_msg_data);
7755
7756 end process_release_source;
7757
7758 /* ========================================== */
7759 /* Overloaded procedures for ER 1373910 end */
7760 /* ========================================== */
7761
7762
7763 ------------------------------------
7764 -- SPLIT_HOLDS --
7765 ------------------------------------
7766 procedure split_hold (
7767 p_line_id IN NUMBER,
7768 p_split_from_line_id IN NUMBER,
7769 x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
7770 x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
7771 x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
7772 )
7773 IS
7774 l_user_id NUMBER;
7775 l_org_id NUMBER;
7776 l_api_name CONSTANT VARCHAR2(30) := 'SPLIT_HOLD';
7777
7778 l_line_number NUMBER;
7779 l_hold_source_id OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE;
7780 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
7781
7782 CURSOR c_order_holds IS
7783 SELECT oh.HOLD_SOURCE_ID
7784 , oh.HEADER_ID
7785 , hs.hold_entity_code
7786 , hs.hold_id
7787 , hs.hold_until_date
7788 , hs.hold_comment
7789 , hs.CONTEXT
7790 , hs.ATTRIBUTE1
7791 , hs.ATTRIBUTE2
7792 , hs.ATTRIBUTE3
7793 , hs.ATTRIBUTE4
7794 , hs.ATTRIBUTE5
7795 , hs.ATTRIBUTE6
7796 , hs.ATTRIBUTE7
7797 , hs.ATTRIBUTE8
7798 , hs.ATTRIBUTE9
7799 , hs.ATTRIBUTE10
7800 , hs.ATTRIBUTE11
7801 , hs.ATTRIBUTE12
7802 , hs.ATTRIBUTE13
7803 , hs.ATTRIBUTE14
7804 , hs.ATTRIBUTE15
7805 , oh.org_id
7806 FROM OE_ORDER_HOLDS_all oh,
7807 OE_HOLD_SOURCES_all hs
7808 WHERE oh.line_id = p_split_from_line_id
7809 AND oh.RELEASED_FLAG = 'N'
7810 AND OH.HOLD_SOURCE_ID = HS.HOLD_SOURCE_ID;
7811
7812
7813 BEGIN
7814 x_return_status := FND_API.G_RET_STS_SUCCESS;
7815
7816 l_user_id := OE_HOLDS_PVT.get_user_id;
7817 l_org_id := OE_GLOBALS.G_ORG_ID;
7818 if l_org_id IS NULL THEN
7819 OE_GLOBALS.Set_Context;
7820 l_org_id := OE_GLOBALS.G_ORG_ID;
7821 end if;
7822
7823 for c_rec IN c_order_holds
7824 loop
7825 IF c_rec.HOLD_ENTITY_CODE = 'O' THEN
7826 l_hold_source_rec.hold_entity_code := c_rec.HOLD_ENTITY_CODE;
7827 l_hold_source_rec.hold_entity_id := c_rec.header_id;
7828 l_hold_source_rec.line_id := p_line_id;
7829 l_hold_source_rec.hold_id := c_rec.hold_id;
7830 l_hold_source_rec.hold_until_date := c_rec.hold_until_date;
7831 l_hold_source_rec.hold_comment := c_rec.hold_comment;
7832 l_hold_source_rec.CONTEXT := c_rec.CONTEXT;
7833 l_hold_source_rec.ATTRIBUTE1 := c_rec.ATTRIBUTE1;
7834 l_hold_source_rec.ATTRIBUTE2 := c_rec.ATTRIBUTE2;
7835 l_hold_source_rec.ATTRIBUTE3 := c_rec.ATTRIBUTE3;
7836 l_hold_source_rec.ATTRIBUTE4 := c_rec.ATTRIBUTE4;
7837 l_hold_source_rec.ATTRIBUTE5 := c_rec.ATTRIBUTE5;
7838 l_hold_source_rec.ATTRIBUTE6 := c_rec.ATTRIBUTE6;
7839 l_hold_source_rec.ATTRIBUTE7 := c_rec.ATTRIBUTE7;
7840 l_hold_source_rec.ATTRIBUTE8 := c_rec.ATTRIBUTE8;
7841 l_hold_source_rec.ATTRIBUTE9 := c_rec.ATTRIBUTE9;
7842 l_hold_source_rec.ATTRIBUTE10 := c_rec.ATTRIBUTE10;
7843 l_hold_source_rec.ATTRIBUTE11 := c_rec.ATTRIBUTE11;
7844 l_hold_source_rec.ATTRIBUTE12 := c_rec.ATTRIBUTE12;
7845 l_hold_source_rec.ATTRIBUTE13 := c_rec.ATTRIBUTE13;
7846 l_hold_source_rec.ATTRIBUTE14 := c_rec.ATTRIBUTE14;
7847 l_hold_source_rec.ATTRIBUTE15 := c_rec.ATTRIBUTE15;
7848 l_hold_source_rec.org_id := c_rec.org_id;
7849
7850 oe_holds_pvt.Create_Hold_Source (
7851 p_hold_source_rec => l_hold_source_rec,
7852 p_org_id =>l_org_id, --ER#7479609
7853 x_hold_source_id => l_hold_source_id,
7854 x_return_status => x_return_status,
7855 x_msg_count => x_msg_count,
7856 x_msg_data => x_msg_data
7857 );
7858 --l_hold_source_rec.hold_source_id := l_hold_source_id;
7859 ELSE
7860 l_hold_source_id := c_rec.hold_source_id;
7861 --l_hold_source_rec.hold_source_id := c_rec.hold_source_id;
7862 END IF;
7863
7864 INSERT INTO OE_ORDER_HOLDS_all
7865 ( ORDER_HOLD_ID
7866 , LAST_UPDATE_DATE
7867 , LAST_UPDATED_BY
7868 , CREATION_DATE
7869 , CREATED_BY
7870 , LAST_UPDATE_LOGIN
7871 , HOLD_SOURCE_ID
7872 , HEADER_ID
7873 , LINE_ID
7874 , RELEASED_FLAG
7875 , ORG_ID
7876 )
7877 VALUES (
7878 OE_ORDER_HOLDS_S.NEXTVAL
7879 , SYSDATE
7880 , l_user_id
7881 , SYSDATE
7882 , l_user_id
7883 , NULL
7884 , l_HOLD_SOURCE_ID
7885 , c_rec.HEADER_ID
7886 , p_line_id
7887 , 'N'
7888 , c_rec.org_id);
7889
7890 end loop;
7891
7892 exception
7893 WHEN NO_DATA_FOUND then
7894 null; -- its ok if there is not holds on the orignal line
7895 WHEN FND_API.G_EXC_ERROR THEN
7896 x_return_status := FND_API.G_RET_STS_ERROR;
7897 OE_MSG_PUB.Count_And_Get
7898 ( p_count => x_msg_count
7899 , p_data => x_msg_data
7900 );
7901 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7902 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7903 OE_MSG_PUB.Count_And_Get
7904 ( p_count => x_msg_count
7905 , p_data => x_msg_data
7906 );
7907 WHEN OTHERS THEN
7908 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7909 IF OE_MSG_PUB.Check_Msg_Level
7910 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7911 THEN
7912 OE_MSG_PUB.Add_Exc_Msg
7913 ( G_PKG_NAME,
7914 l_api_name);
7915 END IF;
7916 OE_MSG_PUB.Count_And_Get
7917 ( p_count => x_msg_count
7918 , p_data => x_msg_data
7919 );
7920
7921 END split_hold;
7922
7923 /*Added Overloaded procedure apply_holds for WF_HOLDS ER (bug 6449458)*/
7924 Procedure Apply_Holds(
7925 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type,
7926 p_hold_existing_flg IN VARCHAR2,
7927 p_hold_future_flg IN VARCHAR2,
7928 p_org_id IN NUMBER DEFAULT MO_GLOBAL.get_current_org_id, --ER#7479609
7929 p_wf_item_type IN VARCHAR2 DEFAULT NULL,
7930 p_wf_activity_name IN VARCHAR2 DEFAULT NULL,
7931 x_return_status OUT NOCOPY VARCHAR2,
7932 x_msg_count OUT NOCOPY NUMBER,
7933 x_msg_data OUT NOCOPY VARCHAR2,
7934 x_is_hold_applied OUT NOCOPY BOOLEAN )
7935
7936 IS
7937
7938 l_application_id OE_HOLD_AUTHORIZATIONS.APPLICATION_ID%TYPE :=
7939 FND_GLOBAL.RESP_APPL_ID;
7940 l_resp_id OE_HOLD_AUTHORIZATIONS.RESPONSIBILITY_ID%TYPE
7941 := FND_GLOBAL.RESP_ID;
7942 l_hold_source_id OE_HOLD_SOURCES_ALL.HOLD_SOURCE_ID%TYPE;
7943 l_hold_source_rec OE_HOLDS_PVT.Hold_Source_Rec_Type;
7944 l_hold_exists VARCHAR2(1) :='N'; --bug 5548778
7945
7946 l_is_hold_applied BOOLEAN;
7947
7948 BEGIN
7949
7950 OE_DEBUG_PUB.Add('In OE_Holds_pvt.Apply Holds, Creating Hold Source',1);
7951
7952 x_return_status := FND_API.G_RET_STS_SUCCESS;
7953 l_hold_source_rec := p_hold_source_rec;
7954
7955 Validate (p_hold_source_rec => p_hold_source_rec,
7956 x_return_status => x_return_status,
7957 x_msg_count => x_msg_count,
7958 x_msg_data => x_msg_data );
7959 OE_DEBUG_PUB.Add('Validate return status:' || x_return_status,1);
7960
7961 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7962 OE_Debug_PUB.Add('Validate not successful',1);
7963 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
7964 RAISE FND_API.G_EXC_ERROR;
7965 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7966 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7967 END IF;
7968 ELSE
7969 OE_DEBUG_PUB.Add ('Calling Create_Hold_Source bug 5548778 overload',1);
7970 Create_Hold_Source (
7971 p_hold_source_rec => p_hold_source_rec,
7972 p_org_id => p_org_id, --ER#7479609
7973 x_hold_source_id => l_hold_source_id,
7974 x_hold_exists => l_hold_exists,
7975 x_return_status => x_return_status,
7976 x_msg_count => x_msg_count,
7977 x_msg_data => x_msg_data);
7978
7979 OE_DEBUG_PUB.Add('x_return_status->' || x_return_status,1);
7980 OE_DEBUG_PUB.Add('x_msg_count->' || x_msg_count,1);
7981 OE_DEBUG_PUB.Add('x_msg_data' || x_msg_data,1);
7982 OE_DEBUG_PUB.Add('l_hold_exists' || l_hold_exists,1);
7983 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7984 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
7985 RAISE FND_API.G_EXC_ERROR;
7986 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
7987 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7988 END IF;
7989 END IF;
7990
7991 OE_DEBUG_PUB.Add('l_hold_source_id->' ||
7992 to_char(l_hold_source_id) ,1);
7993 l_hold_source_rec.hold_source_id := l_hold_source_id;
7994 --bug 5548778
7995
7996 IF l_hold_exists = 'N' THEN
7997 IF p_wf_item_type IS NOT NULL AND p_wf_activity_name IS NOT
7998 NULL THEN
7999 OE_DEBUG_PUB.Add ('Calling Overloaded Create_Order_Holds Based on Workflow',1);
8000 Create_Order_Holds (
8001 p_hold_source_rec => l_hold_source_rec
8002 ,p_org_id => p_org_id --ER#7479609
8003 ,p_item_type => p_wf_item_type
8004 ,p_activity_name => p_wf_activity_name
8005 ,x_return_status => x_return_status
8006 ,x_msg_count => x_msg_count
8007 ,x_msg_data => x_msg_data
8008 ,x_is_hold_applied => l_is_hold_applied);
8009
8010 ELSE
8011 OE_DEBUG_PUB.Add ('Calling Create_Order_Holds',1);
8012 Create_Order_Holds (
8013 p_hold_source_rec => l_hold_source_rec
8014 ,p_org_id =>p_org_id --ER#7479609
8015 ,x_return_status => x_return_status
8016 ,x_msg_count => x_msg_count
8017 ,x_msg_data => x_msg_data);
8018
8019 END IF; -- l_item_type and l_activity_name
8020
8021 x_is_hold_applied := l_is_hold_applied;
8022
8023 OE_DEBUG_PUB.Add('After Create_Order_Holds',1);
8024 END IF;
8025 END IF;
8026
8027 END Apply_Holds;
8028
8029 /*Added New Overloaded Procedure Create_Order_hols for WF_HOLDS ER (bug 6449458)*/
8030 Procedure Create_Order_Holds(
8031 p_hold_source_rec IN OE_HOLDS_PVT.Hold_Source_Rec_Type,
8032 p_org_id IN NUMBER DEFAULT MO_GLOBAL.get_current_org_id, --ER#7479609
8033 p_item_type IN VARCHAR2,
8034 p_activity_name IN VARCHAR2,
8035 x_return_status OUT NOCOPY VARCHAR2,
8036 x_msg_count OUT NOCOPY NUMBER,
8037 x_msg_data OUT NOCOPY VARCHAR2,
8038 x_is_hold_applied OUT NOCOPY BOOLEAN)
8039
8040 IS
8041 l_user_id NUMBER;
8042 l_org_id NUMBER;
8043 l_api_name CONSTANT VARCHAR2(30) := 'Create_Order_Holds';
8044 l_site_use_code VARCHAR2(30);
8045 l_act_status VARCHAR2(30):= 'COMPLETE';
8046 l_additional_where_clause VARCHAR2(30) := 'XXX';
8047 l_hold_entity_where_clause VARCHAR2(1000); --ER#7479609
8048 l_sqlmt VARCHAR2(3000);
8049 l_parent_count NUMBER;
8050 l_user_activity_name VARCHAR2(80);
8051 l_activity_name VARCHAR2(80);
8052 l_sql_rowcount NUMBER;
8053 -- GENESIS --
8054 l_check_hold VARCHAR2(1) := 'N';
8055
8056 --ER#7479609 start
8057 TYPE line_id_tab is TABLE OF NUMBER INDEX BY binary_integer;
8058 l_line_id_tab line_id_tab;
8059 --ER#7479609 end
8060
8061 /*ER#7479609
8062 CURSOR check_line_hold_type_cur(p_line_id IN NUMBER) IS
8063 SELECT 'Y'
8064 FROM DUAL
8065 WHERE EXISTS (SELECT NULL
8066 FROM oe_order_holds ooh,
8067 oe_hold_sources ohs,
8068 oe_hold_definitions ohd,
8069 oe_order_headers_all h,
8070 oe_order_sources oos
8071 WHERE ohd.hold_id = ohs.hold_id
8072 -- AND ohd.activity_name IS NULL Bug 6791587
8073 AND ooh.header_id = h.header_id
8074 AND h.order_source_id = oos.order_source_id
8075 AND oos.aia_enabled_flag = 'Y'
8076 AND ohs.hold_source_id = ooh.hold_source_id
8077 AND ooh.line_id = p_line_id);
8078
8079 CURSOR check_hdr_hold_type_cur(p_hdr_id IN NUMBER) IS
8080 SELECT 'Y'
8081 FROM DUAL
8082 WHERE EXISTS (SELECT NULL
8083 FROM oe_order_holds ooh,
8084 oe_hold_sources ohs,
8085 oe_hold_definitions ohd,
8086 oe_order_headers_all h,
8087 oe_order_sources oos
8088 WHERE ohd.hold_id = ohs.hold_id
8089 -- AND ohd.activity_name IS NULL Bug 6791587
8090 AND h.order_source_id = oos.order_source_id
8091 AND oos.aia_enabled_flag = 'Y'
8092 AND ooh.header_id = h.header_id
8093 AND ohs.hold_source_id = ooh.hold_source_id
8094 AND ooh.header_id = p_hdr_id);
8095
8096 CURSOR check_src_hold_type_cur(p_hld_src_id IN NUMBER) IS
8097 SELECT 'Y'
8098 FROM DUAL
8099 WHERE EXISTS (SELECT NULL
8100 FROM oe_hold_sources ohs,
8101 oe_hold_definitions ohd
8102 WHERE ohd.hold_id = ohs.hold_id
8103 --AND ohd.activity_name IS NULL Bug 6791587
8104 AND ohs.hold_source_id = p_hld_src_id);
8105 ER#7479609*/
8106
8107 --ER#7479609 start
8108 CURSOR check_line_hold_type_cur(p_line_id IN NUMBER) IS
8109 SELECT 'Y'
8110 FROM DUAL
8111 WHERE EXISTS (SELECT NULL
8112 FROM oe_order_holds_all ooh,
8113 oe_hold_sources_all ohs,
8114 oe_hold_definitions ohd,
8115 oe_order_headers_all h,
8116 oe_order_sources oos
8117 WHERE ohd.hold_id = ohs.hold_id
8118 AND ooh.header_id = h.header_id
8119 AND ooh.org_id = p_org_id
8120 AND ooh.org_id = ohs.org_id
8121 AND ooh.org_id = h.org_id
8122 AND h.order_source_id = oos.order_source_id
8123 AND oos.aia_enabled_flag = 'Y'
8124 AND ohs.hold_source_id = ooh.hold_source_id
8125 AND ooh.line_id = p_line_id);
8126
8127 CURSOR check_hdr_hold_type_cur(p_hdr_id IN NUMBER) IS
8128 SELECT 'Y'
8129 FROM DUAL
8130 WHERE EXISTS (SELECT NULL
8131 FROM oe_order_holds_all ooh,
8132 oe_hold_sources_all ohs,
8133 oe_hold_definitions ohd,
8134 oe_order_headers_all h,
8135 oe_order_sources oos
8136 WHERE ohd.hold_id = ohs.hold_id
8137 AND ooh.org_id = p_org_id
8138 AND ooh.org_id = ohs.org_id
8139 AND ooh.org_id = h.org_id
8140 AND h.order_source_id = oos.order_source_id
8141 AND oos.aia_enabled_flag = 'Y'
8142 AND ooh.header_id = h.header_id
8143 AND ohs.hold_source_id = ooh.hold_source_id
8144 AND ooh.header_id = p_hdr_id);
8145
8146 CURSOR check_src_hold_type_cur(p_hld_src_id IN NUMBER) IS
8147 SELECT 'Y'
8148 FROM DUAL
8149 WHERE EXISTS (SELECT NULL
8150 FROM oe_hold_sources_all ohs,
8151 oe_hold_definitions ohd
8152 WHERE ohd.hold_id = ohs.hold_id
8153 AND ohs.org_id = p_org_id
8154 AND ohs.hold_source_id = p_hld_src_id);
8155 --ER#7479609 end
8156
8157 l_header_rec OE_Order_PUB.Header_Rec_Type;
8158 l_line_rec OE_Order_PUB.Line_Rec_Type;
8159 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8160 -- GENESIS --
8161 BEGIN
8162 x_return_status := FND_API.G_RET_STS_SUCCESS;
8163 l_user_id := OE_HOLDS_PVT.get_user_id;
8164 l_org_id := MO_GLOBAL.get_current_org_id;
8165 x_is_hold_applied := NULL;
8166 IF l_org_id IS NULL THEN
8167 -- org_id is null, raise an error.
8168 oe_debug_pub.add('Org_Id is NULL',1);
8169 x_return_status := FND_API.G_RET_STS_ERROR;
8170 FND_MESSAGE.SET_NAME('FND','MO_ORG_REQUIRED');
8171 FND_MSG_PUB.ADD;
8172 RAISE FND_API.G_EXC_ERROR;
8173 END IF;
8174
8175 oe_debug_pub.add('p_hold_source_rec.hold_source_id:' ||
8176 p_hold_source_rec.hold_source_id);
8177 oe_debug_pub.add('Hold_entity_code/Hold_entity_id/' ||
8178 'Hold_entity_code2/Hold_entity_id2:' ||
8179 p_hold_source_rec.Hold_entity_code || '/' ||
8180 p_hold_source_rec.Hold_entity_id || '/' ||
8181 p_hold_source_rec.Hold_entity_code2 || '/' ||
8182 p_hold_source_rec.Hold_entity_id2);
8183 oe_debug_pub.add('p_hold_source_rec.header_id:' || p_hold_source_rec.header_id);
8184 oe_debug_pub.add('p_hold_source_rec.line_id:' || p_hold_source_rec.line_id);
8185 oe_debug_pub.add('Org Id:' || p_org_id);
8186 -- Insert a hold record for the order header or the order line.
8187 IF p_item_type = 'OEOH' and p_activity_name = 'CLOSE_ORDER' THEN
8188 l_activity_name := 'CLOSE_HEADER';
8189 ELSIF p_item_type = 'OEOL' and p_activity_name = 'PICK_LINE' THEN
8190 l_activity_name := 'SHIP_LINE';
8191 l_additional_where_clause := 'PICK_TRUE';
8192 ELSIF p_item_type = 'OEOL' and p_activity_name = 'PACK_LINE' THEN
8193 l_activity_name := 'SHIP_LINE';
8194 l_additional_where_clause := 'PACK_TRUE';
8195 ELSE
8196 l_activity_name := p_activity_name;
8197 END IF;
8198
8199 /*********************************************************
8200 HOLD CRITERIA 1 : ITEM
8201 *********************************************************/
8202 IF p_hold_source_rec.hold_entity_code = 'I' and
8203 p_hold_source_rec.hold_entity_code2 = 'C' THEN
8204
8205 --ER#7479609 start
8206 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8207 ||' and h.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8208
8209
8210 oe_debug_pub.add('Calling InsertTable_OOH_Line for I and C');
8211 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8212 ,p_line_id => p_hold_source_rec.line_id
8213 ,p_org_id => p_org_id
8214 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8215 ,p_item_type => p_item_type
8216 ,p_activity_name => l_activity_name
8217 ,p_activity_status => l_act_status
8218 ,p_additional_where_clause => l_additional_where_clause
8219 ,x_is_hold_applied => x_is_hold_applied);
8220 oe_debug_pub.add('After Calling InsertTable_OOH_Line for I and C');
8221 --ER#7479609 end
8222
8223
8224 /*ER#7479609 start
8225 IF p_hold_source_rec.line_id IS NOT NULL THEN
8226 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
8227 ( ORDER_HOLD_ID
8228 , LAST_UPDATE_DATE
8229 , LAST_UPDATED_BY
8230 , CREATION_DATE
8231 , CREATED_BY
8232 , LAST_UPDATE_LOGIN
8233 , HOLD_SOURCE_ID
8234 , HEADER_ID
8235 , LINE_ID
8236 , RELEASED_FLAG
8237 , ORG_ID
8238 )
8239 SELECT
8240 OE_ORDER_HOLDS_S.NEXTVAL
8241 , SYSDATE
8242 , :l_user_id
8243 , SYSDATE
8244 , :l_user_id
8245 , NULL
8246 , :hold_source_id
8247 , h.HEADER_ID
8248 , ol.line_id
8249 , ''N''
8250 , h.org_id --ER#7479609 :l_org_id
8251 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
8252 WHERE h.OPEN_FLAG = ''Y''
8253 --and nvl(h.CANCELLED_FLAG, ''N'') = ''N''
8254 and h.SOLD_TO_ORG_ID = :hold_entity_id2
8255 and h.header_id = ol.header_id
8256 and h.header_id = :l_org_id --ER#7479609
8257 and ol.line_id = :line_id
8258 and ol.INVENTORY_ITEM_ID = :hold_entity_id
8259 and ol.OPEN_FLAG = ''Y''
8260 -- QUOTING change
8261 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
8262 and not exists ( select ''x''
8263 from oe_order_holds_ALL oh
8264 where oh.header_id = h.header_id
8265 and oh.line_id = ol.line_id
8266 and oh.hold_source_id = :hold_source_id )';
8267 IF p_item_type is not null and p_activity_name is not null then
8268 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
8269 , wf_process_activities wpa
8270 where was.process_activity = wpa.instance_id
8271 and item_type = :p_item_type
8272 and item_key = to_char(ol.line_id)
8273 and activity_name = :l_activity_name
8274 and activity_status = :l_activity_status)';
8275 END IF;
8276
8277 IF l_additional_where_clause = 'PICK_TRUE' THEN
8278 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
8279 where w.source_line_id = ol.line_id
8280 and w.source_code = ''OE''
8281 and w.released_status in (''Y'', ''C''))';
8282 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
8283 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
8284 where wdd.source_line_id = ol.LINE_ID
8285 and wdd.source_code = ''OE''
8286 and wda.delivery_detail_id = wdd.delivery_detail_id
8287 and wda.parent_delivery_detail_id is not null)';
8288 END IF;
8289 IF p_item_type is null and p_activity_name is null then
8290 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_hold_source_rec.hold_entity_id2,p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
8291 ELSE
8292 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_hold_source_rec.hold_entity_id2,p_org_id , p_hold_source_rec.line_id,
8293 p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
8294
8295 IF sql%rowcount = 0 THEN
8296 x_is_hold_applied := FALSE;
8297 ELSIF sql%rowcount = 1 THEN
8298 x_is_hold_applied := TRUE;
8299 END IF;
8300 END IF;
8301
8302 ELSE
8303 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
8304 ( ORDER_HOLD_ID
8305 , LAST_UPDATE_DATE
8306 , LAST_UPDATED_BY
8307 , CREATION_DATE
8308 , CREATED_BY
8309 , LAST_UPDATE_LOGIN
8310 , HOLD_SOURCE_ID
8311 , HEADER_ID
8312 , LINE_ID
8313 , RELEASED_FLAG
8314 , ORG_ID
8315 )
8316 SELECT
8317 OE_ORDER_HOLDS_S.NEXTVAL
8318 , SYSDATE
8319 , :l_user_id
8320 , SYSDATE
8321 , :l_user_id
8322 , NULL
8323 , :hold_source_id
8324 , h.HEADER_ID
8325 , ol.line_id
8326 , ''N''
8327 , h.org_id --ER#7479609 :l_org_id
8328 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
8329 WHERE h.OPEN_FLAG = ''Y''
8330 --and nvl(h.CANCELLED_FLAG, ''N'') = ''N''
8331 and h.SOLD_TO_ORG_ID = :hold_entity_id2
8332 and h.header_id = ol.header_id
8333 and h.org_ud = :l_org_id --ER#7479609
8334 and ol.INVENTORY_ITEM_ID = :hold_entity_id
8335 and ol.OPEN_FLAG = ''Y''
8336 -- QUOTING change
8337 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
8338 and not exists ( select ''x''
8339 from oe_order_holds_ALL oh
8340 where oh.header_id = h.header_id
8341 and oh.line_id = ol.line_id
8342 and oh.hold_source_id =:hold_source_id )';
8343
8344 IF p_item_type is not null and p_activity_name is not null then
8345 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
8346 , wf_process_activities wpa
8347 where was.process_activity = wpa.instance_id
8348 and item_type = :p_item_type
8349 and item_key = to_char(ol.line_id)
8350 and activity_name = :l_activity_name
8351 and activity_status = :l_activity_status)';
8352 END IF;
8353
8354 IF l_additional_where_clause = 'PICK_TRUE' THEN
8355 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
8356 where w.source_line_id = ol.line_id and w.source_code = ''OE''
8357 and w.released_status in (''Y'', ''C''))';
8358 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
8359 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
8360 where wdd.source_line_id = ol.LINE_ID and wdd.source_code = ''OE''
8361 and wda.delivery_detail_id = wdd.delivery_detail_id
8362 and wda.parent_delivery_detail_id is not null)';
8363 END IF;
8364 IF p_item_type is null and p_activity_name is null then
8365 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id,p_hold_source_rec.hold_entity_id2,p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
8366 ELSE
8367 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id,
8368 p_hold_source_rec.hold_entity_id2,p_org_id ,
8369 p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
8370 l_sql_rowcount := sql%rowcount;
8371 IF l_sql_rowcount = 0 THEN
8372
8373 select meaning into l_user_activity_name
8374 from oe_lookups
8375 where lookup_type = DECODE(p_item_type,
8376 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
8377 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
8378 and lookup_code = p_activity_name;
8379
8380 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
8381 fnd_message.set_token('WF_ACT', l_user_activity_name);
8382 OE_MSG_PUB.ADD;
8383 oe_debug_pub.add(' Hold Not applied for All requested records');
8384 RAISE FND_API.G_EXC_ERROR;
8385 ELSIF l_sql_rowcount > 0 THEN
8386 SELECT count(*)
8387 into l_parent_count
8388 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
8389 WHERE h.OPEN_FLAG = 'Y'
8390 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
8391 and h.header_id = ol.header_id
8392 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
8393 and ol.OPEN_FLAG = 'Y'
8394 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
8395 and not exists ( select 'x'
8396 from oe_order_holds_ALL oh
8397 where oh.header_id = h.header_id
8398 and oh.line_id = ol.line_id
8399 and oh.hold_source_id =
8400 p_hold_source_rec.hold_source_id );
8401 oe_debug_pub.add('l_parent_count/sql_count'||l_parent_count||sql%rowcount);
8402 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
8403
8404 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
8405
8406 select meaning into l_user_activity_name
8407 from oe_lookups
8408 where lookup_type = DECODE(p_item_type,
8409 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
8410 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
8411 and lookup_code = p_activity_name;
8412
8413 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
8414 fnd_message.set_token('WF_ACT', l_user_activity_name);
8415 OE_MSG_PUB.ADD;
8416 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
8417 END IF;
8418 END IF;
8419 END IF;
8420 END IF;
8421 ER#7479609 end */
8422 /* Only used by Credit checking */
8423 --ER#7479609 start
8424 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
8425 p_hold_source_rec.hold_entity_code2 = 'SM' THEN
8426
8427 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8428 ||' and ol.SHIPPING_METHOD_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8429
8430
8431 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and SM');
8432 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8433 ,p_line_id => p_hold_source_rec.line_id
8434 ,p_org_id => p_org_id
8435 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8436 ,p_item_type => p_item_type
8437 ,p_activity_name => l_activity_name
8438 ,p_activity_status => l_act_status
8439 ,p_additional_where_clause => l_additional_where_clause
8440 ,x_is_hold_applied => x_is_hold_applied);
8441 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and SM');
8442 --ER#7479609 end
8443
8444
8445 --ER#7479609 start
8446 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
8447 p_hold_source_rec.hold_entity_code2 = 'D' THEN
8448
8449 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8450 ||' and ol.DELIVER_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8451
8452
8453 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and D');
8454 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8455 ,p_line_id => p_hold_source_rec.line_id
8456 ,p_org_id => p_org_id
8457 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8458 ,p_item_type => p_item_type
8459 ,p_activity_name => l_activity_name
8460 ,p_activity_status => l_act_status
8461 ,p_additional_where_clause => l_additional_where_clause
8462 ,x_is_hold_applied => x_is_hold_applied);
8463 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and D');
8464 --ER#7479609 end
8465
8466 --ER#7479609 start
8467 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
8468 p_hold_source_rec.hold_entity_code2 = 'PL' THEN
8469
8470 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8471 ||' and ol.PRICE_LIST_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8472
8473
8474 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and PL');
8475 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8476 ,p_line_id => p_hold_source_rec.line_id
8477 ,p_org_id => p_org_id
8478 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8479 ,p_item_type => p_item_type
8480 ,p_activity_name => l_activity_name
8481 ,p_activity_status => l_act_status
8482 ,p_additional_where_clause => l_additional_where_clause
8483 ,x_is_hold_applied => x_is_hold_applied);
8484 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and PL');
8485 --ER#7479609 end
8486
8487 --ER#7479609 start
8488 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
8489 p_hold_source_rec.hold_entity_code2 = 'LT' THEN
8490
8491 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8492 ||' and ol.LINE_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8493
8494
8495 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and LT');
8496 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8497 ,p_line_id => p_hold_source_rec.line_id
8498 ,p_org_id => p_org_id
8499 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8500 ,p_item_type => p_item_type
8501 ,p_activity_name => l_activity_name
8502 ,p_activity_status => l_act_status
8503 ,p_additional_where_clause => l_additional_where_clause
8504 ,x_is_hold_applied => x_is_hold_applied);
8505 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and LT');
8506 --ER#7479609 end
8507
8508 --ER#7479609 start
8509 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
8510 p_hold_source_rec.hold_entity_code2 = 'PR' THEN
8511
8512 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8513 ||' and ol.PROJECT_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8514
8515
8516 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and PR');
8517 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8518 ,p_line_id => p_hold_source_rec.line_id
8519 ,p_org_id => p_org_id
8520 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8521 ,p_item_type => p_item_type
8522 ,p_activity_name => l_activity_name
8523 ,p_activity_status => l_act_status
8524 ,p_additional_where_clause => l_additional_where_clause
8525 ,x_is_hold_applied => x_is_hold_applied);
8526 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and PR');
8527 --ER#7479609 end
8528
8529 ELSIF p_hold_source_rec.hold_entity_code = 'B' and
8530 p_hold_source_rec.hold_entity_code2 = 'O' THEN
8531
8532 --ER#7479609 start
8533 l_hold_entity_where_clause := 'and ol.INVOICE_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8534 ||' and h.HEADER_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8535
8536
8537 oe_debug_pub.add('Calling InsertTable_OOH_Line for B and O');
8538 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8539 ,p_line_id => p_hold_source_rec.line_id
8540 ,p_org_id => p_org_id
8541 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8542 ,p_item_type => p_item_type
8543 ,p_activity_name => l_activity_name
8544 ,p_activity_status => l_act_status
8545 ,p_additional_where_clause => l_additional_where_clause
8546 ,x_is_hold_applied => x_is_hold_applied);
8547 oe_debug_pub.add('After Calling InsertTable_OOH_Line for B and O');
8548 --ER#7479609 end
8549
8550 /*ER#7479609 start
8551 IF p_hold_source_rec.line_id IS NOT NULL THEN
8552 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
8553 ( ORDER_HOLD_ID
8554 , LAST_UPDATE_DATE
8555 , LAST_UPDATED_BY
8556 , CREATION_DATE
8557 , CREATED_BY
8558 , LAST_UPDATE_LOGIN
8559 , HOLD_SOURCE_ID
8560 , HEADER_ID
8561 , LINE_ID
8562 , RELEASED_FLAG
8563 , ORG_ID
8564 )
8565 SELECT
8566 OE_ORDER_HOLDS_S.NEXTVAL
8567 , SYSDATE
8568 , :l_user_id
8569 , SYSDATE
8570 , :l_user_id
8571 , NULL
8572 , :hold_source_id
8573 , h.HEADER_ID
8574 , ol.line_id
8575 , ''N''
8576 , h.org_id --ER#7479609 :l_org_id
8577 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol,
8578 ra_terms_b rt
8579 WHERE h.OPEN_FLAG = ''Y''
8580 and h.header_id = :hold_entity_id2
8581 and h.header_id = ol.header_id
8582 and h.org_id =:l_org_id --ER#7479609
8583 and ol.INVOICE_TO_ORG_ID = :hold_entity_id
8584 and ol.line_id = :line_id
8585 and ol.OPEN_FLAG = ''Y''
8586 and ol.PAYMENT_TERM_ID = rt.TERM_ID
8587 and rt.CREDIT_CHECK_FLAG = ''Y''
8588 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
8589 and not exists ( select ''x''
8590 from oe_order_holds_ALL oh
8591 where oh.header_id = h.header_id
8592 and oh.line_id = ol.line_id
8593 and oh.hold_source_id =:hold_source_id )';
8594 IF p_item_type is not null and p_activity_name is not null then
8595 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
8596 , wf_process_activities wpa
8597 where was.process_activity = wpa.instance_id
8598 and item_type = :p_item_type
8599 and item_key = to_char(ol.line_id)
8600 and activity_name = :l_activity_name
8601 and activity_status = :l_activity_status)';
8602 END IF;
8603 IF l_additional_where_clause = 'PICK_TRUE' THEN
8604 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w where w.source_line_id = ol.line_id and w.source_code = ''OE'' and w.released_status in (''Y'', ''C''))';
8605 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
8606 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
8607 where wdd.source_line_id = ol.LINE_ID and wdd.source_code = ''OE''
8608 and wda.delivery_detail_id = wdd.delivery_detail_id
8609 and wda.parent_delivery_detail_id is not null)';
8610 END IF;
8611 IF p_item_type is null and p_activity_name is null then
8612 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_hold_source_rec.hold_entity_id2,p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_source_id;
8613 ELSE
8614 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id,
8615 p_hold_source_rec.hold_entity_id2,p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.line_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
8616 IF sql%rowcount = 0 THEN
8617 x_is_hold_applied := FALSE;
8618 ELSIF sql%rowcount = 1 THEN
8619 x_is_hold_applied := TRUE;
8620 END IF;
8621 END IF;
8622
8623 ELSE
8624 l_sqlmt :='INSERT INTO OE_ORDER_HOLDS_ALL
8625 ( ORDER_HOLD_ID
8626 , LAST_UPDATE_DATE
8627 , LAST_UPDATED_BY
8628 , CREATION_DATE
8629 , CREATED_BY
8630 , LAST_UPDATE_LOGIN
8631 , HOLD_SOURCE_ID
8632 , HEADER_ID
8633 , LINE_ID
8634 , RELEASED_FLAG
8635 , ORG_ID
8636 )
8637 SELECT
8638 OE_ORDER_HOLDS_S.NEXTVAL
8639 , SYSDATE
8640 , :l_user_id
8641 , SYSDATE
8642 , :l_user_id
8643 , NULL
8644 , :hold_source_id
8645 , h.HEADER_ID
8646 , ol.line_id
8647 , ''N''
8648 , h.org_id --ER#7479609 :l_org_id
8649 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol,
8650 ra_terms_b rt
8651 WHERE h.OPEN_FLAG = ''Y''
8652 and h.header_id = :hold_entity_id2
8653 and h.header_id = ol.header_id
8654 and h.org_id = :l_org_id --ER#7479609
8655 and ol.INVOICE_TO_ORG_ID = :hold_entity_id
8656 and ol.OPEN_FLAG = ''Y''
8657 and ol.PAYMENT_TERM_ID = rt.TERM_ID
8658 and rt.CREDIT_CHECK_FLAG = ''Y''
8659 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
8660 and not exists ( select ''x''
8661 from oe_order_holds_ALL oh
8662 where oh.header_id = h.header_id
8663 and oh.line_id = ol.line_id
8664 and oh.hold_source_id =:hold_source_id )';
8665 IF p_item_type is not null and p_activity_name is not null then
8666 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
8667 , wf_process_activities wpa
8668 where was.process_activity = wpa.instance_id
8669 and item_type = :p_item_type
8670 and item_key = to_char(ol.line_id)
8671 and activity_name = :l_activity_name
8672 and activity_status = :l_activity_status)';
8673 END IF;
8674
8675 IF l_additional_where_clause = 'PICK_TRUE' THEN
8676 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
8677 where w.source_line_id = ol.line_id
8678 and w.source_code = ''OE''
8679 and w.released_status in (''Y'', ''C''))';
8680 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
8681 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
8682 where wdd.source_line_id = ol.LINE_ID
8683 and wdd.source_code = ''OE''
8684 and wda.delivery_detail_id = wdd.delivery_detail_id
8685 and wda.parent_delivery_detail_id is not null)';
8686 END IF;
8687 IF p_item_type is null and p_activity_name is null then
8688 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, l_org_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
8689 ELSE
8690 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, l_org_id, p_hold_source_rec.hold_entity_id2,
8691 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
8692 l_sql_rowcount := sql%rowcount;
8693 IF l_sql_rowcount = 0 THEN
8694
8695 select meaning into l_user_activity_name
8696 from oe_lookups
8697 where lookup_type = DECODE(p_item_type,
8698 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
8699 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
8700 and lookup_code = p_activity_name;
8701
8702 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
8703 fnd_message.set_token('WF_ACT', l_user_activity_name);
8704 OE_MSG_PUB.ADD;
8705 oe_debug_pub.add(' Hold Not applied for All requested records');
8706 RAISE FND_API.G_EXC_ERROR;
8707 ELSIF l_sql_rowcount > 0 THEN
8708 SELECT count(*)
8709 into l_parent_count
8710 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol , ra_terms_b rt
8711 WHERE h.OPEN_FLAG = 'Y'
8712 and h.header_id = p_hold_source_rec.hold_entity_id2
8713 and h.header_id = ol.header_id
8714 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id
8715 and ol.OPEN_FLAG = 'Y'
8716 and ol.PAYMENT_TERM_ID = rt.TERM_ID
8717 and rt.CREDIT_CHECK_FLAG = 'Y'
8718 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
8719 and not exists ( select 'x'
8720 from oe_order_holds_ALL oh
8721 where oh.header_id = h.header_id
8722 and oh.line_id = ol.line_id
8723 and oh.hold_source_id =
8724 p_hold_source_rec.hold_source_id );
8725
8726 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
8727
8728 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
8729
8730 select meaning into l_user_activity_name
8731 from oe_lookups
8732 where lookup_type = DECODE(p_item_type,
8733 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
8734 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
8735 and lookup_code = p_activity_name;
8736
8737 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
8738 fnd_message.set_token('WF_ACT', l_user_activity_name);
8739 OE_MSG_PUB.ADD;
8740 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
8741 END IF;
8742 END IF;
8743 END IF;
8744 END IF;
8745 ER#7479609 end*/
8746 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
8747 p_hold_source_rec.hold_entity_code2 = 'B' THEN
8748
8749 --ER#7479609 start
8750 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8751 ||' and ol.INVOICE_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8752
8753
8754 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and B');
8755 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8756 ,p_line_id => p_hold_source_rec.line_id
8757 ,p_org_id => p_org_id
8758 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8759 ,p_item_type => p_item_type
8760 ,p_activity_name => l_activity_name
8761 ,p_activity_status => l_act_status
8762 ,p_additional_where_clause => l_additional_where_clause
8763 ,x_is_hold_applied => x_is_hold_applied);
8764 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and B');
8765 --ER#7479609 end
8766
8767 /*ER#7479609 start
8768 IF p_hold_source_rec.line_id IS NOT NULL THEN
8769 l_sqlmt :='INSERT INTO OE_ORDER_HOLDS_ALL
8770 ( ORDER_HOLD_ID
8771 , LAST_UPDATE_DATE
8772 , LAST_UPDATED_BY
8773 , CREATION_DATE
8774 , CREATED_BY
8775 , LAST_UPDATE_LOGIN
8776 , HOLD_SOURCE_ID
8777 , HEADER_ID
8778 , LINE_ID
8779 , RELEASED_FLAG
8780 , ORG_ID
8781 )
8782 SELECT
8783 OE_ORDER_HOLDS_S.NEXTVAL
8784 , SYSDATE
8785 , :l_user_id
8786 , SYSDATE
8787 , :l_user_id
8788 , NULL
8789 , :hold_source_id
8790 , h.HEADER_ID
8791 , ol.line_id
8792 , ''N''
8793 , h.org_id --ER#7479609 :l_org_id
8794 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
8795 WHERE h.OPEN_FLAG = ''Y''
8796
8797 and h.header_id = ol.header_id
8798 and h.org_id = :l_org_id --ER#7479609
8799 and ol.INVOICE_TO_ORG_ID = :hold_entity_id2
8800 and ol.line_id = :line_id
8801 and ol.INVENTORY_ITEM_ID = :hold_entity_id
8802 and ol.OPEN_FLAG = ''Y''
8803 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
8804 and not exists ( select ''x''
8805 from oe_order_holds_ALL oh
8806 where oh.header_id = h.header_id
8807 and oh.line_id = ol.line_id
8808 and oh.hold_source_id = :hold_source_id )';
8809 IF p_item_type is not null and p_activity_name is not null then
8810 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
8811 , wf_process_activities wpa
8812 where was.process_activity = wpa.instance_id
8813 and item_type = :p_item_type
8814 and item_key = to_char(ol.line_id)
8815 and activity_name = :l_activity_name
8816 and activity_status = :l_activity_status)';
8817 END IF;
8818
8819 IF l_additional_where_clause = 'PICK_TRUE' THEN
8820 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
8821 where w.source_line_id = ol.line_id
8822 and w.source_code = ''OE''
8823 and w.released_status in (''Y'', ''C''))';
8824 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
8825 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
8826 where wdd.source_line_id = ol.LINE_ID
8827 and wdd.source_code = ''OE''
8828 and wda.delivery_detail_id = wdd.delivery_detail_id
8829 and wda.parent_delivery_detail_id is not null)';
8830 END IF;
8831 IF p_item_type is null and p_activity_name is null then
8832 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
8833 ELSE
8834 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id,
8835 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
8836 IF sql%rowcount = 0 THEN
8837 x_is_hold_applied := FALSE;
8838 ELSIF sql%rowcount = 1 THEN
8839 x_is_hold_applied := TRUE;
8840 END IF;
8841 END IF;
8842 ELSE
8843 l_sqlmt := 'Insert into oe_order_holds_all
8844 ( ORDER_HOLD_ID
8845 , LAST_UPDATE_DATE
8846 , LAST_UPDATED_BY
8847 , CREATION_DATE
8848 , CREATED_BY
8849 , LAST_UPDATE_LOGIN
8850 , HOLD_SOURCE_ID
8851 , HEADER_ID
8852 , LINE_ID
8853 , RELEASED_FLAG
8854 , ORG_ID
8855 )
8856 SELECT
8857 OE_ORDER_HOLDS_S.NEXTVAL
8858 , SYSDATE
8859 , :l_user_id
8860 , SYSDATE
8861 , :l_user_id
8862 , NULL
8863 , :hold_source_id
8864 , h.HEADER_ID
8865 , ol.line_id
8866 , ''N''
8867 , h.org_id --ER#7479609 :l_org_id
8868 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
8869 WHERE h.OPEN_FLAG = ''Y''
8870
8871 and h.header_id = ol.header_id
8872 and h.org_id = :l_org_id --ER#7479609
8873 and ol.INVOICE_TO_ORG_ID = :hold_entity_id2
8874 and ol.INVENTORY_ITEM_ID = :hold_entity_id
8875 and ol.OPEN_FLAG = ''Y''
8876 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
8877 and not exists ( select ''x''
8878 from oe_order_holds_ALL oh
8879 where oh.header_id = h.header_id
8880 and oh.line_id = ol.line_id
8881 and oh.hold_source_id = :hold_source_id )';
8882 IF p_item_type is not null and p_activity_name is not null then
8883 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
8884 , wf_process_activities wpa
8885 where was.process_activity = wpa.instance_id
8886 and item_type = :p_item_type
8887 and item_key = to_char(ol.line_id)
8888 and activity_name = :l_activity_name
8889 and activity_status = :l_activity_status)';
8890 END IF;
8891
8892 IF l_additional_where_clause = 'PICK_TRUE' THEN
8893 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
8894 where w.source_line_id = ol.line_id
8895 and w.source_code = ''OE''
8896 and w.released_status in (''Y'', ''C''))';
8897 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
8898 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
8899 where wdd.source_line_id = ol.LINE_ID
8900 and wdd.source_code = ''OE''
8901 and wda.delivery_detail_id = wdd.delivery_detail_id
8902 and wda.parent_delivery_detail_id is not null)';
8903 END IF;
8904 IF p_item_type is null and p_activity_name is null then
8905 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
8906 ELSE
8907 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
8908 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
8909 l_sql_rowcount := sql%rowcount;
8910 IF l_sql_rowcount = 0 THEN
8911
8912 select meaning into l_user_activity_name
8913 from oe_lookups
8914 where lookup_type = DECODE(p_item_type,
8915 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
8916 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
8917 and lookup_code = p_activity_name;
8918
8919 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
8920 fnd_message.set_token('WF_ACT', l_user_activity_name);
8921 OE_MSG_PUB.ADD;
8922 oe_debug_pub.add(' Hold Not applied for All requested records');
8923 RAISE FND_API.G_EXC_ERROR;
8924 ELSIF l_sql_rowcount > 0 THEN
8925 SELECT count(*)
8926 into l_parent_count
8927 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
8928 WHERE h.OPEN_FLAG = 'Y'
8929 and h.header_id = ol.header_id
8930 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
8931 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
8932 and ol.OPEN_FLAG = 'Y'
8933 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
8934 and not exists ( select 'x'
8935 from oe_order_holds_ALL oh
8936 where oh.header_id = h.header_id
8937 and oh.line_id = ol.line_id
8938 and oh.hold_source_id =
8939 p_hold_source_rec.hold_source_id );
8940
8941 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
8942
8943 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
8944
8945 select meaning into l_user_activity_name
8946 from oe_lookups
8947 where lookup_type = DECODE(p_item_type,
8948 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
8949 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
8950 and lookup_code = p_activity_name;
8951
8952 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
8953 fnd_message.set_token('WF_ACT', l_user_activity_name);
8954 OE_MSG_PUB.ADD;
8955 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
8956 END IF;
8957 END IF;
8958 END IF;
8959 END IF;
8960
8961 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
8962 p_hold_source_rec.hold_entity_code2 = 'S' THEN
8963
8964 --ER#7479609 start
8965 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
8966 ||' and ol.SHIP_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
8967
8968
8969 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and S');
8970 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
8971 ,p_line_id => p_hold_source_rec.line_id
8972 ,p_org_id => p_org_id
8973 ,p_hold_entity_where_clause => l_hold_entity_where_clause
8974 ,p_item_type => p_item_type
8975 ,p_activity_name => l_activity_name
8976 ,p_activity_status => l_act_status
8977 ,p_additional_where_clause => l_additional_where_clause
8978 ,x_is_hold_applied => x_is_hold_applied);
8979 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and S');
8980 --ER#7479609 end
8981
8982 /*ER#7479609 start
8983 IF p_hold_source_rec.line_id IS NOT NULL THEN
8984 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
8985 ( ORDER_HOLD_ID
8986 , LAST_UPDATE_DATE
8987 , LAST_UPDATED_BY
8988 , CREATION_DATE
8989 , CREATED_BY
8990 , LAST_UPDATE_LOGIN
8991 , HOLD_SOURCE_ID
8992 , HEADER_ID
8993 , LINE_ID
8994 , RELEASED_FLAG
8995 , ORG_ID
8996 )
8997 SELECT
8998 OE_ORDER_HOLDS_S.NEXTVAL
8999 , SYSDATE
9000 , :l_user_id
9001 , SYSDATE
9002 , :l_user_id
9003 , NULL
9004 , :hold_source_id
9005 , h.HEADER_ID
9006 , ol.line_id
9007 , ''N''
9008 , h.org_id --ER#7479609 :l_org_id
9009 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9010 WHERE h.OPEN_FLAG = ''Y''
9011
9012 and h.header_id = ol.header_id
9013 and h.org_id = :l_org_id --ER#7479609
9014 and ol.SHIP_TO_ORG_ID = :hold_entity_id2
9015 and ol.line_id = :line_id
9016 and ol.INVENTORY_ITEM_ID = :hold_entity_id
9017 and ol.OPEN_FLAG = ''Y''
9018 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9019 and not exists ( select ''x''
9020 from oe_order_holds_ALL oh
9021 where oh.header_id = h.header_id
9022 and oh.line_id = ol.line_id
9023 and oh.hold_source_id =:hold_source_id )';
9024 IF p_item_type is not null and p_activity_name is not null then
9025 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9026 , wf_process_activities wpa
9027 where was.process_activity = wpa.instance_id
9028 and item_type = :p_item_type
9029 and item_key = to_char(ol.line_id)
9030 and activity_name = :l_activity_name
9031 and activity_status = :l_activity_status)';
9032 END IF;
9033 IF l_additional_where_clause = 'PICK_TRUE' THEN
9034 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9035 where w.source_line_id = ol.line_id
9036 and w.source_code = ''OE''
9037 and w.released_status in (''Y'', ''C''))';
9038 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9039 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9040 where wdd.source_line_id = ol.LINE_ID
9041 and wdd.source_code = ''OE''
9042 and wda.delivery_detail_id = wdd.delivery_detail_id
9043 and wda.parent_delivery_detail_id is not null)';
9044 END IF;
9045 IF p_item_type is null and p_activity_name is null then
9046 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_source_id;
9047 ELSE
9048 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
9049 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id,p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9050 IF sql%rowcount = 0 THEN
9051 x_is_hold_applied := FALSE;
9052 ELSIF sql%rowcount = 1 THEN
9053 x_is_hold_applied := TRUE;
9054 END IF;
9055 END IF;
9056 ELSE
9057 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9058 ( ORDER_HOLD_ID
9059 , LAST_UPDATE_DATE
9060 , LAST_UPDATED_BY
9061 , CREATION_DATE
9062 , CREATED_BY
9063 , LAST_UPDATE_LOGIN
9064 , HOLD_SOURCE_ID
9065 , HEADER_ID
9066 , LINE_ID
9067 , RELEASED_FLAG
9068 , ORG_ID
9069 )
9070 SELECT
9071 OE_ORDER_HOLDS_S.NEXTVAL
9072 , SYSDATE
9073 , :l_user_id
9074 , SYSDATE
9075 , :l_user_id
9076 , NULL
9077 , :hold_source_id
9078 , h.HEADER_ID
9079 , ol.line_id
9080 , ''N''
9081 , h.org_id --ER#7479609 :l_org_id
9082 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9083 WHERE h.OPEN_FLAG = ''Y''
9084
9085 and h.header_id = ol.header_id
9086 and h.org_id = :l_org_id --ER#7479609
9087 and ol.SHIP_TO_ORG_ID = :hold_entity_id2
9088 and ol.INVENTORY_ITEM_ID = :hold_entity_id
9089 and ol.OPEN_FLAG = ''Y''
9090 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9091 and not exists ( select ''x''
9092 from oe_order_holds_ALL oh
9093 where oh.header_id = h.header_id
9094 and oh.line_id = ol.line_id
9095 and oh.hold_source_id =:hold_source_id )';
9096 IF p_item_type is not null and p_activity_name is not null then
9097 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9098 , wf_process_activities wpa
9099 where was.process_activity = wpa.instance_id
9100 and item_type = :p_item_type
9101 and item_key = to_char(ol.line_id)
9102 and activity_name = :l_activity_name
9103 and activity_status = :l_activity_status)';
9104 END IF;
9105 IF l_additional_where_clause = 'PICK_TRUE' THEN
9106 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9107 where w.source_line_id = ol.line_id
9108 and w.source_code = ''OE''
9109 and w.released_status in (''Y'', ''C''))';
9110 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9111 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9112 where wdd.source_line_id = ol.LINE_ID
9113 and wdd.source_code = ''OE''
9114 and wda.delivery_detail_id = wdd.delivery_detail_id
9115 and wda.parent_delivery_detail_id is not null)';
9116 END IF;
9117 IF p_item_type is null and p_activity_name is null then
9118 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
9119 ELSE
9120 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
9121 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9122 l_sql_rowcount := sql%rowcount;
9123 IF l_sql_rowcount = 0 THEN
9124
9125 select meaning into l_user_activity_name
9126 from oe_lookups
9127 where lookup_type = DECODE(p_item_type,
9128 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9129 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9130 and lookup_code = p_activity_name;
9131
9132 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
9133 fnd_message.set_token('WF_ACT', l_user_activity_name);
9134 OE_MSG_PUB.ADD;
9135 oe_debug_pub.add(' Hold Not applied for All requested records');
9136 RAISE FND_API.G_EXC_ERROR;
9137 ELSIF l_sql_rowcount > 0 THEN
9138 SELECT count(*)
9139 into l_parent_count
9140 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9141 WHERE h.OPEN_FLAG = 'Y'
9142 and h.header_id = ol.header_id
9143 and ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
9144 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
9145 and ol.OPEN_FLAG = 'Y' and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
9146 and not exists ( select 'x'
9147 from oe_order_holds_ALL oh
9148 where oh.header_id = h.header_id
9149 and oh.line_id = ol.line_id
9150 and oh.hold_source_id =
9151 p_hold_source_rec.hold_source_id );
9152
9153 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
9154
9155 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
9156
9157 select meaning into l_user_activity_name
9158 from oe_lookups
9159 where lookup_type = DECODE(p_item_type,
9160 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9161 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9162 and lookup_code = p_activity_name;
9163
9164 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
9165 fnd_message.set_token('WF_ACT', l_user_activity_name);
9166 OE_MSG_PUB.ADD;
9167 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
9168 END IF;
9169 END IF;
9170 END IF;
9171 END IF;
9172 ER#7479609 end*/
9173
9174 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
9175 p_hold_source_rec.hold_entity_code2 = 'W' THEN
9176
9177 --ER#7479609 start
9178 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9179 ||' and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9180
9181
9182 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and W');
9183 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9184 ,p_line_id => p_hold_source_rec.line_id
9185 ,p_org_id => p_org_id
9186 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9187 ,p_item_type => p_item_type
9188 ,p_activity_name => l_activity_name
9189 ,p_activity_status => l_act_status
9190 ,p_additional_where_clause => l_additional_where_clause
9191 ,x_is_hold_applied => x_is_hold_applied);
9192 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and W');
9193 --ER#7479609 end
9194
9195 /*ER#7479609 start
9196 IF p_hold_source_rec.line_id IS NOT NULL THEN
9197 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9198 ( ORDER_HOLD_ID
9199 , LAST_UPDATE_DATE
9200 , LAST_UPDATED_BY
9201 , CREATION_DATE
9202 , CREATED_BY
9203 , LAST_UPDATE_LOGIN
9204 , HOLD_SOURCE_ID
9205 , HEADER_ID
9206 , LINE_ID
9207 , RELEASED_FLAG
9208 , ORG_ID
9209 )
9210 SELECT
9211 OE_ORDER_HOLDS_S.NEXTVAL
9212 , SYSDATE
9213 , :l_user_id
9214 , SYSDATE
9215 , :l_user_id
9216 , NULL
9217 , :hold_source_id
9218 , h.HEADER_ID
9219 , ol.line_id
9220 , ''N''
9221 , h.org_id --ER#7479609 :l_org_id
9222 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9223 WHERE h.OPEN_FLAG = ''Y''
9224
9225 and h.header_id = ol.header_id
9226 and h.org_id = :l_org_id --ER#7479609
9227 and ol.SHIP_FROM_ORG_ID = :hold_entity_id2
9228 and ol.line_id = :line_id
9229 and ol.INVENTORY_ITEM_ID = :hold_entity_id
9230 and ol.OPEN_FLAG = ''Y''
9231 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9232 and not exists ( select ''x''
9233 from oe_order_holds_ALL oh
9234 where oh.header_id = h.header_id
9235 and oh.line_id = ol.line_id
9236 and oh.hold_source_id =:hold_source_id )';
9237 IF p_item_type is not null and p_activity_name is not null then
9238 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9239 , wf_process_activities wpa
9240 where was.process_activity = wpa.instance_id
9241 and item_type = :p_item_type
9242 and item_key = to_char(ol.line_id)
9243 and activity_name = :l_activity_name
9244 and activity_status = :l_activity_status)';
9245 END IF;
9246 IF l_additional_where_clause = 'PICK_TRUE' THEN
9247 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9248 where w.source_line_id = ol.line_id
9249 and w.source_code = ''OE''
9250 and w.released_status in (''Y'', ''C''))';
9251 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9252 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9253 where wdd.source_line_id = ol.LINE_ID
9254 and wdd.source_code = ''OE''
9255 and wda.delivery_detail_id = wdd.delivery_detail_id
9256 and wda.parent_delivery_detail_id is not null)';
9257 END IF;
9258 IF p_item_type is null and p_activity_name is null then
9259 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
9260 ELSE
9261 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
9262 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9263
9264 IF sql%rowcount = 0 THEN
9265 x_is_hold_applied := FALSE;
9266 ELSIF sql%rowcount = 1 THEN
9267 x_is_hold_applied := TRUE;
9268 END IF;
9269 END IF;
9270 ELSE
9271 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9272 ( ORDER_HOLD_ID
9273 , LAST_UPDATE_DATE
9274 , LAST_UPDATED_BY
9275 , CREATION_DATE
9276 , CREATED_BY
9277 , LAST_UPDATE_LOGIN
9278 , HOLD_SOURCE_ID
9279 , HEADER_ID
9280 , LINE_ID
9281 , RELEASED_FLAG
9282 , ORG_ID
9283 )
9284 SELECT
9285 OE_ORDER_HOLDS_S.NEXTVAL
9286 , SYSDATE
9287 , :l_user_id
9288 , SYSDATE
9289 , :l_user_id
9290 , NULL
9291 , :hold_source_id
9292 , h.HEADER_ID
9293 , ol.line_id
9294 , ''N''
9295 , h.org_id --ER#7479609 :l_org_id
9296 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9297 WHERE h.OPEN_FLAG = ''Y''
9298
9299 and h.header_id = ol.header_id
9300 and h.org_id = :l_org_id --ER#7479609
9301 and ol.SHIP_FROM_ORG_ID = :hold_entity_id2
9302 and ol.INVENTORY_ITEM_ID = :hold_entity_id
9303 and ol.OPEN_FLAG = ''Y''
9304 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9305 and not exists ( select ''x''
9306 from oe_order_holds_ALL oh
9307 where oh.header_id = h.header_id
9308 and oh.line_id = ol.line_id
9309 and oh.hold_source_id =:hold_source_id )';
9310 IF p_item_type is not null and p_activity_name is not null then
9311 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9312 , wf_process_activities wpa
9313 where was.process_activity = wpa.instance_id
9314 and item_type = :p_item_type
9315 and item_key = to_char(ol.line_id)
9316 and activity_name = :l_activity_name
9317 and activity_status = :l_activity_status)';
9318 END IF;
9319 IF l_additional_where_clause = 'PICK_TRUE' THEN
9320 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9321 where w.source_line_id = ol.line_id
9322 and w.source_code = ''OE''
9323 and w.released_status in (''Y'', ''C''))';
9324 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9325 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9326 where wdd.source_line_id = ol.LINE_ID
9327 and wdd.source_code = ''OE''
9328 and wda.delivery_detail_id = wdd.delivery_detail_id
9329 and wda.parent_delivery_detail_id is not null)';
9330 END IF;
9331 IF p_item_type is null and p_activity_name is null then
9332 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
9333 ELSE
9334 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
9335 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9336 l_sql_rowcount := sql%rowcount;
9337 IF l_sql_rowcount = 0 THEN
9338
9339 select meaning into l_user_activity_name
9340 from oe_lookups
9341 where lookup_type = DECODE(p_item_type,
9342 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9343 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9344 and lookup_code = p_activity_name;
9345
9346 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
9347 fnd_message.set_token('WF_ACT', l_user_activity_name);
9348 OE_MSG_PUB.ADD;
9349 oe_debug_pub.add(' Hold Not applied for All requested records');
9350 RAISE FND_API.G_EXC_ERROR;
9351 ELSIF l_sql_rowcount > 0 THEN
9352 SELECT count(*)
9353 into l_parent_count
9354 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9355 WHERE h.OPEN_FLAG = 'Y'
9356 and h.header_id = ol.header_id
9357 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id2
9358 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
9359 and ol.OPEN_FLAG = 'Y'
9360 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
9361 and not exists ( select 'x'
9362 from oe_order_holds_ALL oh
9363 where oh.header_id = h.header_id
9364 and oh.line_id = ol.line_id
9365 and oh.hold_source_id =
9366 p_hold_source_rec.hold_source_id );
9367
9368 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
9369
9370 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
9371
9372 select meaning into l_user_activity_name
9373 from oe_lookups
9374 where lookup_type = DECODE(p_item_type,
9375 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9376 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9377 and lookup_code = p_activity_name;
9378
9379 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
9380 fnd_message.set_token('WF_ACT', l_user_activity_name);
9381 OE_MSG_PUB.ADD;
9382 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
9383 END IF;
9384 END IF;
9385 END IF;
9386 END IF;
9387 ER#7479609 end*/
9388
9389 ELSIF p_hold_source_rec.hold_entity_code = 'I' and
9390 p_hold_source_rec.hold_entity_code2 = 'H' THEN
9391
9392 --ER#7479609 start
9393 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9394 ||' and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9395
9396
9397 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I and H');
9398 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9399 ,p_line_id => p_hold_source_rec.line_id
9400 ,p_org_id => p_org_id
9401 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9402 ,p_item_type => p_item_type
9403 ,p_activity_name => l_activity_name
9404 ,p_activity_status => l_act_status
9405 ,p_additional_where_clause => l_additional_where_clause
9406 ,x_is_hold_applied => x_is_hold_applied);
9407 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I and H');
9408 --ER#7479609 end
9409
9410 /*ER#7479609 start
9411 IF p_hold_source_rec.line_id IS NOT NULL THEN
9412 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9413 ( ORDER_HOLD_ID
9414 , LAST_UPDATE_DATE
9415 , LAST_UPDATED_BY
9416 , CREATION_DATE
9417 , CREATED_BY
9418 , LAST_UPDATE_LOGIN
9419 , HOLD_SOURCE_ID
9420 , HEADER_ID
9421 , LINE_ID
9422 , RELEASED_FLAG
9423 , ORG_ID
9424 )
9425 SELECT
9426 OE_ORDER_HOLDS_S.NEXTVAL
9427 , SYSDATE
9428 , :l_user_id
9429 , SYSDATE
9430 , :l_user_id
9431 , NULL
9432 , :hold_source_id
9433 , h.HEADER_ID
9434 , ol.line_id
9435 , ''N''
9436 , h.org_id --ER#7479609 :l_org_id
9437 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9438 WHERE h.OPEN_FLAG = ''Y''
9439
9440 and h.header_id = ol.header_id
9441 and h.org_id = :l_org_id --ER#7479609
9442 and ol.BLANKET_NUMBER = :hold_entity_id2
9443 and ol.line_id = :line_id
9444 and ol.INVENTORY_ITEM_ID = :hold_entity_id
9445 and ol.OPEN_FLAG = ''Y''
9446 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9447 and not exists ( select ''x''
9448 from oe_order_holds_ALL oh
9449 where oh.header_id = h.header_id
9450 and oh.line_id = ol.line_id
9451 and oh.hold_source_id =:hold_source_id )';
9452 IF p_item_type is not null and p_activity_name is not null then
9453 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9454 , wf_process_activities wpa
9455 where was.process_activity = wpa.instance_id
9456 and item_type = :p_item_type
9457 and item_key = to_char(ol.line_id)
9458 and activity_name = :l_activity_name
9459 and activity_status = :l_activity_status)';
9460 END IF;
9461 IF l_additional_where_clause = 'PICK_TRUE' THEN
9462 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9463 where w.source_line_id = ol.line_id
9464 and w.source_code = ''OE''
9465 and w.released_status in (''Y'', ''C''))';
9466 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9467 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9468 where wdd.source_line_id = ol.LINE_ID
9469 and wdd.source_code = ''OE''
9470 and wda.delivery_detail_id = wdd.delivery_detail_id
9471 and wda.parent_delivery_detail_id is not null)';
9472 END IF;
9473 IF p_item_type is null and p_activity_name is null then
9474 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
9475 ELSE
9476 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
9477 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9478 IF sql%rowcount = 0 THEN
9479 x_is_hold_applied := FALSE;
9480 ELSIF sql%rowcount = 1 THEN
9481 x_is_hold_applied := TRUE;
9482 END IF;
9483 END IF;
9484 ELSE
9485 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9486 ( ORDER_HOLD_ID
9487 , LAST_UPDATE_DATE
9488 , LAST_UPDATED_BY
9489 , CREATION_DATE
9490 , CREATED_BY
9491 , LAST_UPDATE_LOGIN
9492 , HOLD_SOURCE_ID
9493 , HEADER_ID
9494 , LINE_ID
9495 , RELEASED_FLAG
9496 , ORG_ID
9497 )
9498 SELECT
9499 OE_ORDER_HOLDS_S.NEXTVAL
9500 , SYSDATE
9501 , :l_user_id
9502 , SYSDATE
9503 , :l_user_id
9504 , NULL
9505 , :hold_source_id
9506 , h.HEADER_ID
9507 , ol.line_id
9508 , ''N''
9509 , h.org_id --ER#7479609 :l_org_id
9510 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9511 WHERE h.OPEN_FLAG = ''Y''
9512
9513 and h.header_id = ol.header_id
9514 and h.org_id = :l_org_id --ER#7479609
9515 and ol.BLANKET_NUMBER = :hold_entity_id2
9516 and ol.INVENTORY_ITEM_ID = :hold_entity_id
9517 and ol.OPEN_FLAG = ''Y''
9518 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9519 and not exists ( select ''x''
9520 from oe_order_holds_ALL oh
9521 where oh.header_id = h.header_id
9522 and oh.line_id = ol.line_id
9523 and oh.hold_source_id =:hold_source_id )';
9524 IF p_item_type is not null and p_activity_name is not null then
9525 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9526 , wf_process_activities wpa
9527 where was.process_activity = wpa.instance_id
9528 and item_type = :p_item_type
9529 and item_key = to_char(ol.line_id)
9530 and activity_name = :l_activity_name
9531 and activity_status = :l_activity_status)';
9532 END IF;
9533 IF l_additional_where_clause = 'PICK_TRUE' THEN
9534 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9535 where w.source_line_id = ol.line_id
9536 and w.source_code = ''OE''
9537 and w.released_status in (''Y'', ''C''))';
9538 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9539 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9540 where wdd.source_line_id = ol.LINE_ID
9541 and wdd.source_code = ''OE''
9542 and wda.delivery_detail_id = wdd.delivery_detail_id
9543 and wda.parent_delivery_detail_id is not null)';
9544 END IF;
9545 IF p_item_type is null and p_activity_name is null then
9546 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
9547 ELSE
9548 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2,
9549 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9550 l_sql_rowcount := sql%rowcount;
9551 IF l_sql_rowcount = 0 THEN
9552
9553 select meaning into l_user_activity_name
9554 from oe_lookups
9555 where lookup_type = DECODE(p_item_type,
9556 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9557 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9558 and lookup_code = p_activity_name;
9559
9560 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
9561 fnd_message.set_token('WF_ACT', l_user_activity_name);
9562 OE_MSG_PUB.ADD;
9563 oe_debug_pub.add(' Hold Not applied for All requested records');
9564 RAISE FND_API.G_EXC_ERROR;
9565 ELSIF l_sql_rowcount > 0 THEN
9566 SELECT count(*)
9567 into l_parent_count
9568 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9569 WHERE h.OPEN_FLAG = 'Y'
9570 and h.header_id = ol.header_id
9571 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id2
9572 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
9573 and ol.OPEN_FLAG = 'Y'
9574 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
9575 and not exists ( select 'x'
9576 from oe_order_holds_ALL oh
9577 where oh.header_id = h.header_id
9578 and oh.line_id = ol.line_id
9579 and oh.hold_source_id =
9580 p_hold_source_rec.hold_source_id );
9581
9582 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
9583
9584 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
9585
9586 select meaning into l_user_activity_name
9587 from oe_lookups
9588 where lookup_type = DECODE(p_item_type,
9589 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9590 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9591 and lookup_code = p_activity_name;
9592
9593 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
9594 fnd_message.set_token('WF_ACT', l_user_activity_name);
9595 OE_MSG_PUB.ADD;
9596 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
9597 END IF;
9598 END IF;
9599 END IF;
9600 END IF;
9601 ER#7479609 end*/
9602
9603 /*********************************************************
9604 HOLD CRITERIA 1 : WAREHOUSE
9605 *********************************************************/
9606 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
9607 p_hold_source_rec.hold_entity_code2 = 'C' THEN
9608
9609 --ER#7479609 start
9610 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9611 ||' and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9612
9613
9614 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W and C');
9615 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9616 ,p_line_id => p_hold_source_rec.line_id
9617 ,p_org_id => p_org_id
9618 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9619 ,p_item_type => p_item_type
9620 ,p_activity_name => l_activity_name
9621 ,p_activity_status => l_act_status
9622 ,p_additional_where_clause => l_additional_where_clause
9623 ,x_is_hold_applied => x_is_hold_applied);
9624 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W and C');
9625 --ER#7479609 end
9626
9627 /*ER#7479609 start
9628 IF p_hold_source_rec.line_id IS NOT NULL THEN
9629 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9630 ( ORDER_HOLD_ID
9631 , LAST_UPDATE_DATE
9632 , LAST_UPDATED_BY
9633 , CREATION_DATE
9634 , CREATED_BY
9635 , LAST_UPDATE_LOGIN
9636 , HOLD_SOURCE_ID
9637 , HEADER_ID
9638 , LINE_ID
9639 , RELEASED_FLAG
9640 , ORG_ID
9641 )
9642 SELECT
9643 OE_ORDER_HOLDS_S.NEXTVAL
9644 , SYSDATE
9645 , :l_user_id
9646 , SYSDATE
9647 , :l_user_id
9648 , NULL
9649 , :hold_source_id
9650 , h.HEADER_ID
9651 , ol.line_id
9652 , ''N''
9653 , h.org_id --ER#7479609 :l_org_id
9654 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9655 WHERE h.OPEN_FLAG = ''Y''
9656
9657 and h.header_id = ol.header_id
9658 and h.org_id = :l_org_id
9659 and ol.SHIP_FROM_ORG_ID = :hold_entity_id
9660 and ol.line_id = :line_id
9661 and h.SOLD_TO_ORG_ID = :hold_entity_id2
9662 and ol.OPEN_FLAG = ''Y''
9663 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9664 and not exists ( select ''x''
9665 from oe_order_holds_ALL oh
9666 where oh.header_id = h.header_id
9667 and oh.line_id = ol.line_id
9668 and oh.hold_source_id =:hold_source_id )';
9669 IF p_item_type is not null and p_activity_name is not null then
9670 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9671 , wf_process_activities wpa
9672 where was.process_activity = wpa.instance_id
9673 and item_type = :p_item_type
9674 and item_key = to_char(ol.line_id)
9675 and activity_name = :l_activity_name
9676 and activity_status = :l_activity_status)';
9677 END IF;
9678 IF l_additional_where_clause = 'PICK_TRUE' THEN
9679 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9680 where w.source_line_id = ol.line_id
9681 and w.source_code = ''OE''
9682 and w.released_status in (''Y'', ''C''))';
9683 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9684 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9685 where wdd.source_line_id = ol.LINE_ID
9686 and wdd.source_code = ''OE''
9687 and wda.delivery_detail_id = wdd.delivery_detail_id
9688 and wda.parent_delivery_detail_id is not null)';
9689 END IF;
9690 IF p_item_type is null and p_activity_name is null then
9691 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_source_id;
9692 ELSE
9693 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id,
9694 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9695 IF sql%rowcount = 0 THEN
9696 x_is_hold_applied := FALSE;
9697 ELSIF sql%rowcount = 1 THEN
9698 x_is_hold_applied := TRUE;
9699 END IF;
9700 END IF;
9701 ELSE
9702 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9703 ( ORDER_HOLD_ID
9704 , LAST_UPDATE_DATE
9705 , LAST_UPDATED_BY
9706 , CREATION_DATE
9707 , CREATED_BY
9708 , LAST_UPDATE_LOGIN
9709 , HOLD_SOURCE_ID
9710 , HEADER_ID
9711 , LINE_ID
9712 , RELEASED_FLAG
9713 , ORG_ID
9714 )
9715 SELECT
9716 OE_ORDER_HOLDS_S.NEXTVAL
9717 , SYSDATE
9718 , :l_user_id
9719 , SYSDATE
9720 , :l_user_id
9721 , NULL
9722 , :hold_source_id
9723 , h.HEADER_ID
9724 , ol.line_id
9725 , ''N''
9726 , p_org_id --ER#7479609 :l_org_id
9727 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9728 WHERE h.OPEN_FLAG = ''Y''
9729
9730 and h.header_id = ol.header_id
9731 and h.org_id = :l_org_id --ER#7479609
9732 and ol.SHIP_FROM_ORG_ID = :hold_entity_id
9733 and h.SOLD_TO_ORG_ID = :hold_entity_id2
9734 and ol.OPEN_FLAG = ''Y''
9735 -- QUOTING change
9736 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9737 and not exists ( select ''x''
9738 from oe_order_holds_ALL oh
9739 where oh.header_id = h.header_id
9740 and oh.line_id = ol.line_id
9741 and oh.hold_source_id =:hold_source_id )';
9742 IF p_item_type is not null and p_activity_name is not null then
9743 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9744 , wf_process_activities wpa
9745 where was.process_activity = wpa.instance_id
9746 and item_type = :p_item_type
9747 and item_key = to_char(ol.line_id)
9748 and activity_name = :l_activity_name
9749 and activity_status = :l_activity_status)';
9750 END IF;
9751 IF l_additional_where_clause = 'PICK_TRUE' THEN
9752 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9753 where w.source_line_id = ol.line_id
9754 and w.source_code = ''OE''
9755 and w.released_status in (''Y'', ''C''))';
9756 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9757 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9758 where wdd.source_line_id = ol.LINE_ID
9759 and wdd.source_code = ''OE''
9760 and wda.delivery_detail_id = wdd.delivery_detail_id
9761 and wda.parent_delivery_detail_id is not null)';
9762 END IF;
9763 IF p_item_type is null and p_activity_name is null then
9764 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_source_id;
9765 ELSE
9766 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id,
9767 p_hold_source_rec.hold_entity_id2 , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
9768 l_sql_rowcount := sql%rowcount;
9769 IF l_sql_rowcount = 0 THEN
9770
9771 select meaning into l_user_activity_name
9772 from oe_lookups
9773 where lookup_type = DECODE(p_item_type,
9774 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9775 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9776 and lookup_code = p_activity_name;
9777
9778 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
9779 fnd_message.set_token('WF_ACT', l_user_activity_name);
9780 OE_MSG_PUB.ADD;
9781 oe_debug_pub.add(' Hold Not applied for All requested records');
9782 RAISE FND_API.G_EXC_ERROR;
9783 ELSIF l_sql_rowcount > 0 THEN
9784 SELECT count(*)
9785 into l_parent_count
9786 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9787 WHERE h.OPEN_FLAG = 'Y'
9788 and h.header_id = ol.header_id
9789 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
9790 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
9791 and ol.OPEN_FLAG = 'Y'
9792 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
9793 and not exists ( select 'x'
9794 from oe_order_holds_ALL oh
9795 where oh.header_id = h.header_id
9796 and oh.line_id = ol.line_id
9797 and oh.hold_source_id =
9798 p_hold_source_rec.hold_source_id );
9799
9800 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
9801
9802 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
9803
9804 select meaning into l_user_activity_name
9805 from oe_lookups
9806 where lookup_type = DECODE(p_item_type,
9807 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
9808 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
9809 and lookup_code = p_activity_name;
9810
9811 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
9812 fnd_message.set_token('WF_ACT', l_user_activity_name);
9813 OE_MSG_PUB.ADD;
9814 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
9815 END IF;
9816 END IF;
9817 END IF;
9818 END IF;
9819 ER#7479609 end*/
9820
9821 --ER#7479609 start
9822 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
9823 p_hold_source_rec.hold_entity_code2 = 'SM' THEN
9824
9825
9826 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9827 ||' and ol.SHIPPING_METHOD_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9828
9829
9830 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W and SM');
9831 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9832 ,p_line_id => p_hold_source_rec.line_id
9833 ,p_org_id => p_org_id
9834 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9835 ,p_item_type => p_item_type
9836 ,p_activity_name => l_activity_name
9837 ,p_activity_status => l_act_status
9838 ,p_additional_where_clause => l_additional_where_clause
9839 ,x_is_hold_applied => x_is_hold_applied);
9840 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W and SM');
9841 --ER#7479609 end
9842
9843 --ER#7479609 start
9844 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
9845 p_hold_source_rec.hold_entity_code2 = 'ST' THEN
9846
9847
9848 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9849 ||' and ol.SOURCE_TYPE_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9850
9851
9852 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W and ST');
9853 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9854 ,p_line_id => p_hold_source_rec.line_id
9855 ,p_org_id => p_org_id
9856 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9857 ,p_item_type => p_item_type
9858 ,p_activity_name => l_activity_name
9859 ,p_activity_status => l_act_status
9860 ,p_additional_where_clause => l_additional_where_clause
9861 ,x_is_hold_applied => x_is_hold_applied);
9862 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W and ST');
9863 --ER#7479609 end
9864
9865
9866 --ER#7479609 start
9867 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
9868 p_hold_source_rec.hold_entity_code2 = 'LT' THEN
9869
9870
9871 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9872 ||' and ol.LINE_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9873
9874
9875 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W and LT');
9876 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9877 ,p_line_id => p_hold_source_rec.line_id
9878 ,p_org_id => p_org_id
9879 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9880 ,p_item_type => p_item_type
9881 ,p_activity_name => l_activity_name
9882 ,p_activity_status => l_act_status
9883 ,p_additional_where_clause => l_additional_where_clause
9884 ,x_is_hold_applied => x_is_hold_applied);
9885 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W and LT');
9886 --ER#7479609 end
9887
9888 --ER#7479609 start
9889 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
9890 p_hold_source_rec.hold_entity_code2 = 'D' THEN
9891
9892 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9893 ||' and ol.DELIVER_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9894
9895
9896 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W and D');
9897 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9898 ,p_line_id => p_hold_source_rec.line_id
9899 ,p_org_id => p_org_id
9900 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9901 ,p_item_type => p_item_type
9902 ,p_activity_name => l_activity_name
9903 ,p_activity_status => l_act_status
9904 ,p_additional_where_clause => l_additional_where_clause
9905 ,x_is_hold_applied => x_is_hold_applied);
9906 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W and D');
9907 --ER#7479609 end
9908
9909
9910 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
9911 p_hold_source_rec.hold_entity_code2 = 'B' THEN
9912
9913 --ER#7479609 start
9914 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
9915 ||' and ol.INVOICE_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
9916
9917
9918 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W and B');
9919 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
9920 ,p_line_id => p_hold_source_rec.line_id
9921 ,p_org_id => p_org_id
9922 ,p_hold_entity_where_clause => l_hold_entity_where_clause
9923 ,p_item_type => p_item_type
9924 ,p_activity_name => l_activity_name
9925 ,p_activity_status => l_act_status
9926 ,p_additional_where_clause => l_additional_where_clause
9927 ,x_is_hold_applied => x_is_hold_applied);
9928 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W and B');
9929 --ER#7479609 end
9930
9931 /*ER#7479609 start
9932 IF p_hold_source_rec.line_id IS NOT NULL THEN
9933 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
9934 ( ORDER_HOLD_ID
9935 , LAST_UPDATE_DATE
9936 , LAST_UPDATED_BY
9937 , CREATION_DATE
9938 , CREATED_BY
9939 , LAST_UPDATE_LOGIN
9940 , HOLD_SOURCE_ID
9941 , HEADER_ID
9942 , LINE_ID
9943 , RELEASED_FLAG
9944 , ORG_ID
9945 )
9946 SELECT
9947 OE_ORDER_HOLDS_S.NEXTVAL
9948 , SYSDATE
9949 , :l_user_id
9950 , SYSDATE
9951 , :l_user_id
9952 , NULL
9953 , :hold_source_id
9954 , h.HEADER_ID
9955 , ol.line_id
9956 , ''N''
9957 , h.org_id --ER#7479609 :l_org_id
9958 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
9959 WHERE h.OPEN_FLAG = ''Y''
9960
9961 AND h.header_id = ol.header_id
9962 and h.org_id = :l_org_id --ER#7479609
9963 AND ol.SHIP_FROM_ORG_ID = :hold_entity_id
9964 and ol.line_id = :line_id
9965 AND ol.INVOICE_TO_ORG_ID = :hold_entity_id2
9966 and ol.OPEN_FLAG = ''Y''
9967 -- QUOTING change
9968 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
9969 AND NOT EXISTS ( select ''x''
9970 FROM oe_order_holds_ALL oh
9971 WHERE oh.header_id = h.header_id
9972 AND oh.line_id = ol.line_id
9973 AND oh.hold_source_id =:hold_source_id )';
9974 IF p_item_type is not null and p_activity_name is not null then
9975 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
9976 , wf_process_activities wpa
9977 where was.process_activity = wpa.instance_id
9978 and item_type = :p_item_type
9979 and item_key = to_char(ol.line_id)
9980 and activity_name = :l_activity_name
9981 and activity_status = :l_activity_status)';
9982 END IF;
9983 IF l_additional_where_clause = 'PICK_TRUE' THEN
9984 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
9985 where w.source_line_id = ol.line_id
9986 and w.source_code = ''OE''
9987 and w.released_status in (''Y'', ''C''))';
9988 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
9989 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
9990 where wdd.source_line_id = ol.LINE_ID
9991 and wdd.source_code = ''OE''
9992 and wda.delivery_detail_id = wdd.delivery_detail_id
9993 and wda.parent_delivery_detail_id is not null)';
9994 END IF;
9995 IF p_item_type is null and p_activity_name is null then
9996 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_source_id;
9997 ELSE
9998 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id,
9999 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id2 , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10000 IF sql%rowcount = 0 THEN
10001 x_is_hold_applied := FALSE;
10002 ELSIF sql%rowcount = 1 THEN
10003 x_is_hold_applied := TRUE;
10004 END IF;
10005 END IF;
10006 ELSE
10007 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10008 ( ORDER_HOLD_ID
10009 , LAST_UPDATE_DATE
10010 , LAST_UPDATED_BY
10011 , CREATION_DATE
10012 , CREATED_BY
10013 , LAST_UPDATE_LOGIN
10014 , HOLD_SOURCE_ID
10015 , HEADER_ID
10016 , LINE_ID
10017 , RELEASED_FLAG
10018 , ORG_ID
10019 )
10020 SELECT
10021 OE_ORDER_HOLDS_S.NEXTVAL
10022 , SYSDATE
10023 , :l_user_id
10024 , SYSDATE
10025 , :l_user_id
10026 , NULL
10027 , :hold_source_id
10028 , h.HEADER_ID
10029 , ol.line_id
10030 , ''N''
10031 , p_org_id --ER#7479609 :l_org_id
10032 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10033 WHERE h.OPEN_FLAG = ''Y''
10034
10035 AND h.header_id = ol.header_id
10036 and h.org_id = :l_org_id --ER#7479609
10037 AND ol.SHIP_FROM_ORG_ID = :hold_entity_id
10038 AND ol.INVOICE_TO_ORG_ID = :hold_entity_id2
10039 and ol.OPEN_FLAG = ''Y''
10040 -- QUOTING change
10041 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10042 AND NOT EXISTS ( select ''x''
10043 FROM oe_order_holds_ALL oh
10044 WHERE oh.header_id = h.header_id
10045 AND oh.line_id = ol.line_id
10046 AND oh.hold_source_id =:hold_source_id )';
10047 IF p_item_type is not null and p_activity_name is not null then
10048 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10049 , wf_process_activities wpa
10050 where was.process_activity = wpa.instance_id
10051 and item_type = :p_item_type
10052 and item_key = to_char(ol.line_id)
10053 and activity_name = :l_activity_name
10054 and activity_status = :l_activity_status)';
10055 END IF;
10056 IF l_additional_where_clause = 'PICK_TRUE' THEN
10057 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10058 where w.source_line_id = ol.line_id
10059 and w.source_code = ''OE''
10060 and w.released_status in (''Y'', ''C''))';
10061 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10062 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10063 where wdd.source_line_id = ol.LINE_ID
10064 and wdd.source_code = ''OE''
10065 and wda.delivery_detail_id = wdd.delivery_detail_id
10066 and wda.parent_delivery_detail_id is not null)';
10067 END IF;
10068 IF p_item_type is null and p_activity_name is null then
10069 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_source_id;
10070 ELSE
10071 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id,
10072 p_hold_source_rec.hold_entity_id2 , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10073 l_sql_rowcount := sql%rowcount;
10074 IF l_sql_rowcount = 0 THEN
10075
10076 select meaning into l_user_activity_name
10077 from oe_lookups
10078 where lookup_type = DECODE(p_item_type,
10079 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10080 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10081 and lookup_code = p_activity_name;
10082
10083 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
10084 fnd_message.set_token('WF_ACT', l_user_activity_name);
10085 OE_MSG_PUB.ADD;
10086 oe_debug_pub.add(' Hold Not applied for All requested records');
10087 RAISE FND_API.G_EXC_ERROR;
10088 ELSIF l_sql_rowcount > 0 THEN
10089 SELECT count(*)
10090 into l_parent_count
10091 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10092 WHERE h.OPEN_FLAG = 'Y'
10093 AND h.header_id = ol.header_id
10094 AND ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
10095 AND ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
10096 and ol.OPEN_FLAG = 'Y'
10097 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
10098 and not exists ( select 'x'
10099 from oe_order_holds_ALL oh
10100 where oh.header_id = h.header_id
10101 and oh.line_id = ol.line_id
10102 and oh.hold_source_id =
10103 p_hold_source_rec.hold_source_id );
10104
10105 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
10106
10107 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
10108
10109 select meaning into l_user_activity_name
10110 from oe_lookups
10111 where lookup_type = DECODE(p_item_type,
10112 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10113 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10114 and lookup_code = p_activity_name;
10115
10116 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
10117 fnd_message.set_token('WF_ACT', l_user_activity_name);
10118 OE_MSG_PUB.ADD;
10119 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
10120 END IF;
10121 END IF;
10122 END IF;
10123 END IF;
10124 ER#7479609 end*/
10125
10126 ELSIF p_hold_source_rec.hold_entity_code = 'W' and
10127 p_hold_source_rec.hold_entity_code2 = 'S' THEN
10128
10129 --ER#7479609 start
10130 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
10131 ||' and ol.SHIP_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10132
10133
10134 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W and S');
10135 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10136 ,p_line_id => p_hold_source_rec.line_id
10137 ,p_org_id => p_org_id
10138 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10139 ,p_item_type => p_item_type
10140 ,p_activity_name => l_activity_name
10141 ,p_activity_status => l_act_status
10142 ,p_additional_where_clause => l_additional_where_clause
10143 ,x_is_hold_applied => x_is_hold_applied);
10144 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W and S');
10145 --ER#7479609 end
10146
10147 /*ER#7479609 start
10148 IF p_hold_source_rec.line_id IS NOT NULL THEN
10149 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10150 ( ORDER_HOLD_ID
10151 , LAST_UPDATE_DATE
10152 , LAST_UPDATED_BY
10153 , CREATION_DATE
10154 , CREATED_BY
10155 , LAST_UPDATE_LOGIN
10156 , HOLD_SOURCE_ID
10157 , HEADER_ID
10158 , LINE_ID
10159 , RELEASED_FLAG
10160 , ORG_ID
10161 )
10162 SELECT
10163 OE_ORDER_HOLDS_S.NEXTVAL
10164 , SYSDATE
10165 , :l_user_id
10166 , SYSDATE
10167 , :l_user_id
10168 , NULL
10169 , :hold_source_id
10170 , h.HEADER_ID
10171 , ol.line_id
10172 , ''N''
10173 , h.org_id --ER#7479609 :l_org_id
10174 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10175 WHERE h.OPEN_FLAG = ''Y''
10176 AND h.org_id = :l_org_id --ER#7479609
10177 AND ol.SHIP_FROM_ORG_ID = :hold_entity_id
10178 and ol.line_id = :line_id
10179 AND h.header_id = ol.header_id
10180 AND ol.SHIP_TO_ORG_ID = :hold_entity_id2
10181 and ol.OPEN_FLAG = ''Y''
10182 -- QUOTING change
10183 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10184 AND NOT EXISTS ( select ''x''
10185 FROM oe_order_holds_ALL oh
10186 WHERE oh.header_id = h.header_id
10187 AND oh.line_id = ol.line_id
10188 AND oh.hold_source_id =:hold_source_id )';
10189 IF p_item_type is not null and p_activity_name is not null then
10190 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10191 , wf_process_activities wpa
10192 where was.process_activity = wpa.instance_id
10193 and item_type = :p_item_type
10194 and item_key = to_char(ol.line_id)
10195 and activity_name = :l_activity_name
10196 and activity_status = :l_activity_status)';
10197 END IF;
10198 IF l_additional_where_clause = 'PICK_TRUE' THEN
10199 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10200 where w.source_line_id = ol.line_id
10201 and w.source_code = ''OE''
10202 and w.released_status in (''Y'', ''C''))';
10203 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10204 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10205 where wdd.source_line_id = ol.LINE_ID
10206 and wdd.source_code = ''OE''
10207 and wda.delivery_detail_id = wdd.delivery_detail_id
10208 and wda.parent_delivery_detail_id is not null)';
10209 END IF;
10210 IF p_item_type is null and p_activity_name is null then
10211 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_source_id;
10212 ELSE
10213 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id,
10214 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id2 , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10215 IF sql%rowcount = 0 THEN
10216 x_is_hold_applied := FALSE;
10217 ELSIF sql%rowcount = 1 THEN
10218 x_is_hold_applied := TRUE;
10219 END IF;
10220 END IF;
10221 ELSE
10222 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10223 ( ORDER_HOLD_ID
10224 , LAST_UPDATE_DATE
10225 , LAST_UPDATED_BY
10226 , CREATION_DATE
10227 , CREATED_BY
10228 , LAST_UPDATE_LOGIN
10229 , HOLD_SOURCE_ID
10230 , HEADER_ID
10231 , LINE_ID
10232 , RELEASED_FLAG
10233 , ORG_ID
10234 )
10235 SELECT
10236 OE_ORDER_HOLDS_S.NEXTVAL
10237 , SYSDATE
10238 , :l_user_id
10239 , SYSDATE
10240 , :l_user_id
10241 , NULL
10242 , :hold_source_id
10243 , h.HEADER_ID
10244 , ol.line_id
10245 , ''N''
10246 , h.org_id --ER#7479609 :l_org_id
10247 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10248 WHERE h.OPEN_FLAG = ''Y''
10249 AND h.org_id = :l_org_id --ER#7479609
10250 AND ol.SHIP_FROM_ORG_ID = :hold_entity_id
10251 AND h.header_id = ol.header_id
10252 AND ol.SHIP_TO_ORG_ID = :hold_entity_id2
10253 and ol.OPEN_FLAG = ''Y''
10254 -- QUOTING change
10255 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10256 AND NOT EXISTS ( select ''x''
10257 FROM oe_order_holds_ALL oh
10258 WHERE oh.header_id = h.header_id
10259 AND oh.line_id = ol.line_id
10260 AND oh.hold_source_id =:hold_source_id )';
10261 IF p_item_type is not null and p_activity_name is not null then
10262 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10263 , wf_process_activities wpa
10264 where was.process_activity = wpa.instance_id
10265 and item_type = :p_item_type
10266 and item_key = to_char(ol.line_id)
10267 and activity_name = :l_activity_name
10268 and activity_status = :l_activity_status)';
10269 END IF;
10270 IF l_additional_where_clause = 'PICK_TRUE' THEN
10271 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10272 where w.source_line_id = ol.line_id
10273 and w.source_code = ''OE''
10274 and w.released_status in (''Y'', ''C''))';
10275 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10276 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10277 where wdd.source_line_id = ol.LINE_ID
10278 and wdd.source_code = ''OE''
10279 and wda.delivery_detail_id = wdd.delivery_detail_id
10280 and wda.parent_delivery_detail_id is not null)';
10281 END IF;
10282 IF p_item_type is null and p_activity_name is null then
10283 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_source_id;
10284 ELSE
10285 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id,
10286 p_hold_source_rec.hold_entity_id2 , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10287 l_sql_rowcount := sql%rowcount;
10288 IF l_sql_rowcount = 0 THEN
10289
10290 select meaning into l_user_activity_name
10291 from oe_lookups
10292 where lookup_type = DECODE(p_item_type,
10293 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10294 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10295 and lookup_code = p_activity_name;
10296
10297 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
10298 fnd_message.set_token('WF_ACT', l_user_activity_name);
10299 OE_MSG_PUB.ADD;
10300 oe_debug_pub.add(' Hold Not applied for All requested records');
10301 RAISE FND_API.G_EXC_ERROR;
10302 ELSIF l_sql_rowcount > 0 THEN
10303 SELECT count(*)
10304 into l_parent_count
10305 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10306 WHERE h.OPEN_FLAG = 'Y'
10307 AND ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
10308 AND h.header_id = ol.header_id
10309 AND ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id2
10310 and ol.OPEN_FLAG = 'Y'
10311 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
10312 and not exists ( select 'x'
10313 from oe_order_holds_ALL oh
10314 where oh.header_id = h.header_id
10315 and oh.line_id = ol.line_id
10316 and oh.hold_source_id =
10317 p_hold_source_rec.hold_source_id );
10318
10319 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
10320
10321 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
10322
10323 select meaning into l_user_activity_name
10324 from oe_lookups
10325 where lookup_type = DECODE(p_item_type,
10326 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10327 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10328 and lookup_code = p_activity_name;
10329
10330 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
10331 fnd_message.set_token('WF_ACT', l_user_activity_name);
10332 OE_MSG_PUB.ADD;
10333 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
10334 END IF;
10335 END IF;
10336 END IF;
10337 END IF;
10338 ER#7479609 end*/
10339 /*********************************************************
10340 HOLD CRITERIA 1 : SALES AGREEMENT
10341 *********************************************************/
10342
10343 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10344 p_hold_source_rec.hold_entity_code2 = 'B' THEN
10345
10346 --ER#7479609 start
10347 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10348 ||' and ol.INVOICE_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10349
10350
10351 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and B');
10352 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10353 ,p_line_id => p_hold_source_rec.line_id
10354 ,p_org_id => p_org_id
10355 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10356 ,p_item_type => p_item_type
10357 ,p_activity_name => l_activity_name
10358 ,p_activity_status => l_act_status
10359 ,p_additional_where_clause => l_additional_where_clause
10360 ,x_is_hold_applied => x_is_hold_applied);
10361 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and B');
10362 --ER#7479609 end
10363
10364 /*ER#7479609 start
10365 IF p_hold_source_rec.line_id IS NOT NULL THEN
10366 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10367 ( ORDER_HOLD_ID
10368 , LAST_UPDATE_DATE
10369 , LAST_UPDATED_BY
10370 , CREATION_DATE
10371 , CREATED_BY
10372 , LAST_UPDATE_LOGIN
10373 , HOLD_SOURCE_ID
10374 , HEADER_ID
10375 , LINE_ID
10376 , RELEASED_FLAG
10377 , ORG_ID
10378 )
10379 SELECT
10380 OE_ORDER_HOLDS_S.NEXTVAL
10381 , SYSDATE
10382 , :l_user_id
10383 , SYSDATE
10384 , :l_user_id
10385 , NULL
10386 , :hold_source_id
10387 , h.HEADER_ID
10388 , ol.line_id
10389 , ''N''
10390 , h.org_id --ER#7479609 :l_org_id
10391 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10392 WHERE h.OPEN_FLAG = ''Y''
10393 and h.org_id = :l_org_id --ER#7479609
10394 and h.header_id = ol.header_id
10395 and ol.INVOICE_TO_ORG_ID = :hold_entity_id2
10396 and ol.line_id = :line_id
10397 and ol.BLANKET_NUMBER = :hold_entity_id
10398 and ol.OPEN_FLAG = ''Y''
10399 -- QUOTING change
10400 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10401 and not exists ( select ''x''
10402 from oe_order_holds_ALL oh
10403 where oh.header_id = h.header_id
10404 and oh.line_id = ol.line_id
10405 and oh.hold_source_id =:hold_source_id )';
10406 IF p_item_type is not null and p_activity_name is not null then
10407 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10408 , wf_process_activities wpa
10409 where was.process_activity = wpa.instance_id
10410 and item_type = :p_item_type
10411 and item_key = to_char(ol.line_id)
10412 and activity_name = :l_activity_name
10413 and activity_status = :l_activity_status)';
10414 END IF;
10415 IF l_additional_where_clause = 'PICK_TRUE' THEN
10416 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10417 where w.source_line_id = ol.line_id
10418 and w.source_code = ''OE''
10419 and w.released_status in (''Y'', ''C''))';
10420 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10421 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10422 where wdd.source_line_id = ol.LINE_ID
10423 and wdd.source_code = ''OE''
10424 and wda.delivery_detail_id = wdd.delivery_detail_id
10425 and wda.parent_delivery_detail_id is not null)';
10426 END IF;
10427 IF p_item_type is null and p_activity_name is null then
10428 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
10429 ELSE
10430 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2,
10431 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10432 IF sql%rowcount = 0 THEN
10433 x_is_hold_applied := FALSE;
10434 ELSIF sql%rowcount = 1 THEN
10435 x_is_hold_applied := TRUE;
10436 END IF;
10437 END IF;
10438 ELSE
10439 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10440 ( ORDER_HOLD_ID
10441 , LAST_UPDATE_DATE
10442 , LAST_UPDATED_BY
10443 , CREATION_DATE
10444 , CREATED_BY
10445 , LAST_UPDATE_LOGIN
10446 , HOLD_SOURCE_ID
10447 , HEADER_ID
10448 , LINE_ID
10449 , RELEASED_FLAG
10450 , ORG_ID
10451 )
10452 SELECT
10453 OE_ORDER_HOLDS_S.NEXTVAL
10454 , SYSDATE
10455 , :l_user_id
10456 , SYSDATE
10457 , :l_user_id
10458 , NULL
10459 , :hold_source_id
10460 , h.HEADER_ID
10461 , ol.line_id
10462 , ''N''
10463 , h.org_id --ER#7479609 :l_org_id
10464 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10465 WHERE h.OPEN_FLAG = ''Y''
10466 and h.org_id = :l_org_id --ER#7479609
10467 and h.header_id = ol.header_id
10468 and ol.INVOICE_TO_ORG_ID= :hold_entity_id2
10469 and ol.BLANKET_NUMBER = :hold_entity_id
10470 and ol.OPEN_FLAG = ''Y''
10471 -- QUOTING change
10472 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10473 and not exists ( select ''x''
10474 from oe_order_holds_ALL oh
10475 where oh.header_id = h.header_id
10476 and oh.line_id = ol.line_id
10477 and oh.hold_source_id =:hold_source_id )';
10478 IF p_item_type is not null and p_activity_name is not null then
10479 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10480 , wf_process_activities wpa
10481 where was.process_activity = wpa.instance_id
10482 and item_type = :p_item_type
10483 and item_key = to_char(ol.line_id)
10484 and activity_name = :l_activity_name
10485 and activity_status = :l_activity_status)';
10486 END IF;
10487 IF l_additional_where_clause = 'PICK_TRUE' THEN
10488 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10489 where w.source_line_id = ol.line_id
10490 and w.source_code = ''OE''
10491 and w.released_status in (''Y'', ''C''))';
10492 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10493 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10494 where wdd.source_line_id = ol.LINE_ID
10495 and wdd.source_code = ''OE''
10496 and wda.delivery_detail_id = wdd.delivery_detail_id
10497 and wda.parent_delivery_detail_id is not null)';
10498 END IF;
10499 IF p_item_type is null and p_activity_name is null then
10500 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
10501 ELSE
10502 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2,
10503 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10504 l_sql_rowcount := sql%rowcount;
10505 IF l_sql_rowcount = 0 THEN
10506
10507 select meaning into l_user_activity_name
10508 from oe_lookups
10509 where lookup_type = DECODE(p_item_type,
10510 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10511 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10512 and lookup_code = p_activity_name;
10513
10514 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
10515 fnd_message.set_token('WF_ACT', l_user_activity_name);
10516 OE_MSG_PUB.ADD;
10517 oe_debug_pub.add(' Hold Not applied for All requested records');
10518 RAISE FND_API.G_EXC_ERROR;
10519 ELSIF l_sql_rowcount > 0 THEN
10520 SELECT count(*)
10521 into l_parent_count
10522 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10523 WHERE h.OPEN_FLAG = 'Y'
10524 and h.header_id = ol.header_id
10525 and ol.INVOICE_TO_ORG_ID= p_hold_source_rec.hold_entity_id2
10526 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
10527 and ol.OPEN_FLAG = 'Y'
10528 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
10529 and not exists ( select 'x'
10530 from oe_order_holds_ALL oh
10531 where oh.header_id = h.header_id
10532 and oh.line_id = ol.line_id
10533 and oh.hold_source_id =
10534 p_hold_source_rec.hold_source_id );
10535
10536 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
10537
10538 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
10539
10540 select meaning into l_user_activity_name
10541 from oe_lookups
10542 where lookup_type = DECODE(p_item_type,
10543 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10544 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10545 and lookup_code = p_activity_name;
10546
10547 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
10548 fnd_message.set_token('WF_ACT', l_user_activity_name);
10549 OE_MSG_PUB.ADD;
10550 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
10551 END IF;
10552 END IF;
10553 END IF;
10554 END IF;
10555 ER#7479609 end*/
10556
10557
10558 --ER#7479609 start
10559 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10560 p_hold_source_rec.hold_entity_code2 = 'PT' THEN
10561
10562 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10563 ||' and ol.PAYMENT_TERM_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10564
10565
10566 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and PT');
10567 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10568 ,p_line_id => p_hold_source_rec.line_id
10569 ,p_org_id => p_org_id
10570 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10571 ,p_item_type => p_item_type
10572 ,p_activity_name => l_activity_name
10573 ,p_activity_status => l_act_status
10574 ,p_additional_where_clause => l_additional_where_clause
10575 ,x_is_hold_applied => x_is_hold_applied);
10576 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and PT');
10577 --ER#7479609 end
10578
10579
10580 --ER#7479609 start
10581 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10582 p_hold_source_rec.hold_entity_code2 = 'PL' THEN
10583
10584 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10585 ||' and ol.PRICE_LIST_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10586
10587
10588 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and PL');
10589 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10590 ,p_line_id => p_hold_source_rec.line_id
10591 ,p_org_id => p_org_id
10592 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10593 ,p_item_type => p_item_type
10594 ,p_activity_name => l_activity_name
10595 ,p_activity_status => l_act_status
10596 ,p_additional_where_clause => l_additional_where_clause
10597 ,x_is_hold_applied => x_is_hold_applied);
10598 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and PL');
10599 --ER#7479609 end
10600
10601
10602 --ER#7479609 start
10603 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10604 p_hold_source_rec.hold_entity_code2 = 'D' THEN
10605
10606 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10607 ||' and ol.DELIVER_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10608
10609
10610 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and D');
10611 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10612 ,p_line_id => p_hold_source_rec.line_id
10613 ,p_org_id => p_org_id
10614 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10615 ,p_item_type => p_item_type
10616 ,p_activity_name => l_activity_name
10617 ,p_activity_status => l_act_status
10618 ,p_additional_where_clause => l_additional_where_clause
10619 ,x_is_hold_applied => x_is_hold_applied);
10620 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and D');
10621 --ER#7479609 end
10622
10623
10624 --ER#7479609 start
10625 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10626 p_hold_source_rec.hold_entity_code2 = 'LT' THEN
10627
10628 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10629 ||' and ol.LINE_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10630
10631
10632 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and LT');
10633 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10634 ,p_line_id => p_hold_source_rec.line_id
10635 ,p_org_id => p_org_id
10636 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10637 ,p_item_type => p_item_type
10638 ,p_activity_name => l_activity_name
10639 ,p_activity_status => l_act_status
10640 ,p_additional_where_clause => l_additional_where_clause
10641 ,x_is_hold_applied => x_is_hold_applied);
10642 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and LT');
10643 --ER#7479609 end
10644
10645 --ER#7479609 start
10646 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10647 p_hold_source_rec.hold_entity_code2 = 'SM' THEN
10648
10649 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10650 ||' and ol.SHIPPING_METHOD_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10651
10652
10653 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and SM');
10654 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10655 ,p_line_id => p_hold_source_rec.line_id
10656 ,p_org_id => p_org_id
10657 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10658 ,p_item_type => p_item_type
10659 ,p_activity_name => l_activity_name
10660 ,p_activity_status => l_act_status
10661 ,p_additional_where_clause => l_additional_where_clause
10662 ,x_is_hold_applied => x_is_hold_applied);
10663 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and SM');
10664 --ER#7479609 end
10665
10666
10667 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10668 p_hold_source_rec.hold_entity_code2 = 'S' THEN
10669
10670 --ER#7479609 start
10671 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10672 ||' and ol.SHIP_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10673
10674
10675 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and S');
10676 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10677 ,p_line_id => p_hold_source_rec.line_id
10678 ,p_org_id => p_org_id
10679 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10680 ,p_item_type => p_item_type
10681 ,p_activity_name => l_activity_name
10682 ,p_activity_status => l_act_status
10683 ,p_additional_where_clause => l_additional_where_clause
10684 ,x_is_hold_applied => x_is_hold_applied);
10685 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and S');
10686 --ER#7479609 end
10687
10688 /*ER#7479609 start
10689 IF p_hold_source_rec.line_id IS NOT NULL THEN
10690 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10691 ( ORDER_HOLD_ID
10692 , LAST_UPDATE_DATE
10693 , LAST_UPDATED_BY
10694 , CREATION_DATE
10695 , CREATED_BY
10696 , LAST_UPDATE_LOGIN
10697 , HOLD_SOURCE_ID
10698 , HEADER_ID
10699 , LINE_ID
10700 , RELEASED_FLAG
10701 , ORG_ID
10702 )
10703 SELECT
10704 OE_ORDER_HOLDS_S.NEXTVAL
10705 , SYSDATE
10706 , :l_user_id
10707 , SYSDATE
10708 , :l_user_id
10709 , NULL
10710 , :hold_source_id
10711 , h.HEADER_ID
10712 , ol.line_id
10713 , ''N''
10714 , h.org_id --ER#7479609 :l_org_id
10715 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10716 WHERE h.OPEN_FLAG = ''Y''
10717 and h.org_id = :l_org_id --ER#7479609
10718 and h.header_id = ol.header_id
10719 and ol.SHIP_TO_ORG_ID = :hold_entity_id2
10720 and ol.line_id = :line_id
10721 and ol.BLANKET_NUMBER = :hold_entity_id
10722 and ol.OPEN_FLAG = ''Y''
10723 -- QUOTING change
10724 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10725 and not exists ( select ''x''
10726 from oe_order_holds_ALL oh
10727 where oh.header_id = h.header_id
10728 and oh.line_id = ol.line_id
10729 and oh.hold_source_id =:hold_source_id )';
10730 IF p_item_type is not null and p_activity_name is not null then
10731 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10732 , wf_process_activities wpa
10733 where was.process_activity = wpa.instance_id
10734 and item_type = :p_item_type
10735 and item_key = to_char(ol.line_id)
10736 and activity_name = :l_activity_name
10737 and activity_status = :l_activity_status)';
10738 END IF;
10739 IF l_additional_where_clause = 'PICK_TRUE' THEN
10740 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10741 where w.source_line_id = ol.line_id
10742 and w.source_code = ''OE''
10743 and w.released_status in (''Y'', ''C''))';
10744 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10745 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10746 where wdd.source_line_id = ol.LINE_ID
10747 and wdd.source_code = ''OE''
10748 and wda.delivery_detail_id = wdd.delivery_detail_id
10749 and wda.parent_delivery_detail_id is not null)';
10750 END IF;
10751 IF p_item_type is null and p_activity_name is null then
10752 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
10753 ELSE
10754 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2,
10755 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10756 IF sql%rowcount = 0 THEN
10757 x_is_hold_applied := FALSE;
10758 ELSIF sql%rowcount = 1 THEN
10759 x_is_hold_applied := TRUE;
10760 END IF;
10761 END IF;
10762 ELSE
10763 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10764 ( ORDER_HOLD_ID
10765 , LAST_UPDATE_DATE
10766 , LAST_UPDATED_BY
10767 , CREATION_DATE
10768 , CREATED_BY
10769 , LAST_UPDATE_LOGIN
10770 , HOLD_SOURCE_ID
10771 , HEADER_ID
10772 , LINE_ID
10773 , RELEASED_FLAG
10774 , ORG_ID
10775 )
10776 SELECT
10777 OE_ORDER_HOLDS_S.NEXTVAL
10778 , SYSDATE
10779 , :l_user_id
10780 , SYSDATE
10781 , :l_user_id
10782 , NULL
10783 , :hold_source_id
10784 , h.HEADER_ID
10785 , ol.line_id
10786 , ''N''
10787 , h.org_id --ER#7479609 :l_org_id
10788 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10789 WHERE h.OPEN_FLAG = ''Y''
10790 and h.org_id = :l_org_id --ER#7479609
10791 and h.header_id = ol.header_id
10792 and ol.SHIP_TO_ORG_ID= :hold_entity_id2
10793 and ol.BLANKET_NUMBER = :hold_entity_id
10794 and ol.OPEN_FLAG = ''Y''
10795 -- QUOTING change
10796 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10797 and not exists ( select ''x''
10798 from oe_order_holds_ALL oh
10799 where oh.header_id = h.header_id
10800 and oh.line_id = ol.line_id
10801 and oh.hold_source_id =:hold_source_id )';
10802 IF p_item_type is not null and p_activity_name is not null then
10803 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10804 , wf_process_activities wpa
10805 where was.process_activity = wpa.instance_id
10806 and item_type = :p_item_type
10807 and item_key = to_char(ol.line_id)
10808 and activity_name = :l_activity_name
10809 and activity_status = :l_activity_status)';
10810 END IF;
10811 IF l_additional_where_clause = 'PICK_TRUE' THEN
10812 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10813 where w.source_line_id = ol.line_id
10814 and w.source_code = ''OE''
10815 and w.released_status in (''Y'', ''C''))';
10816 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10817 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10818 where wdd.source_line_id = ol.LINE_ID
10819 and wdd.source_code = ''OE''
10820 and wda.delivery_detail_id = wdd.delivery_detail_id
10821 and wda.parent_delivery_detail_id is not null)';
10822 END IF;
10823 IF p_item_type is null and p_activity_name is null then
10824 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
10825 ELSE
10826 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2,
10827 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10828 l_sql_rowcount := sql%rowcount;
10829
10830 IF l_sql_rowcount = 0 THEN
10831
10832 select meaning into l_user_activity_name
10833 from oe_lookups
10834 where lookup_type = DECODE(p_item_type,
10835 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10836 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10837 and lookup_code = p_activity_name;
10838
10839 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
10840 fnd_message.set_token('WF_ACT', l_user_activity_name);
10841 OE_MSG_PUB.ADD;
10842 oe_debug_pub.add(' Hold Not applied for All requested records');
10843 RAISE FND_API.G_EXC_ERROR;
10844 ELSIF l_sql_rowcount > 0 THEN
10845 SELECT count(*)
10846 into l_parent_count
10847 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10848 WHERE h.OPEN_FLAG = 'Y'
10849 and h.header_id = ol.header_id
10850 and ol.SHIP_TO_ORG_ID= p_hold_source_rec.hold_entity_id2
10851 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
10852 and ol.OPEN_FLAG = 'Y'
10853 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
10854 and not exists ( select 'x'
10855 from oe_order_holds_ALL oh
10856 where oh.header_id = h.header_id
10857 and oh.line_id = ol.line_id
10858 and oh.hold_source_id =
10859 p_hold_source_rec.hold_source_id );
10860
10861 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
10862
10863 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
10864
10865 select meaning into l_user_activity_name
10866 from oe_lookups
10867 where lookup_type = DECODE(p_item_type,
10868 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
10869 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
10870 and lookup_code = p_activity_name;
10871
10872 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
10873 fnd_message.set_token('WF_ACT', l_user_activity_name);
10874 OE_MSG_PUB.ADD;
10875 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
10876 END IF;
10877 END IF;
10878 END IF;
10879 END IF;
10880 ER#7479609 end*/
10881
10882 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
10883 p_hold_source_rec.hold_entity_code2 = 'W' THEN
10884
10885 --ER#7479609 start
10886 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
10887 ||' and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
10888
10889
10890 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and W');
10891 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
10892 ,p_line_id => p_hold_source_rec.line_id
10893 ,p_org_id => p_org_id
10894 ,p_hold_entity_where_clause => l_hold_entity_where_clause
10895 ,p_item_type => p_item_type
10896 ,p_activity_name => l_activity_name
10897 ,p_activity_status => l_act_status
10898 ,p_additional_where_clause => l_additional_where_clause
10899 ,x_is_hold_applied => x_is_hold_applied);
10900 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and W');
10901 --ER#7479609 end
10902
10903 /*ER#7479609 start
10904 IF p_hold_source_rec.line_id IS NOT NULL THEN
10905 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10906 ( ORDER_HOLD_ID
10907 , LAST_UPDATE_DATE
10908 , LAST_UPDATED_BY
10909 , CREATION_DATE
10910 , CREATED_BY
10911 , LAST_UPDATE_LOGIN
10912 , HOLD_SOURCE_ID
10913 , HEADER_ID
10914 , LINE_ID
10915 , RELEASED_FLAG
10916 , ORG_ID
10917 )
10918 SELECT
10919 OE_ORDER_HOLDS_S.NEXTVAL
10920 , SYSDATE
10921 , :l_user_id
10922 , SYSDATE
10923 , :l_user_id
10924 , NULL
10925 , :hold_source_id
10926 , h.HEADER_ID
10927 , ol.line_id
10928 , ''N''
10929 , h.org_id --ER#7479609 :l_org_id
10930 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
10931 WHERE h.OPEN_FLAG = ''Y''
10932 and h.org_id = :l_org_id --ER#7479609
10933 and h.header_id = ol.header_id
10934 and ol.SHIP_FROM_ORG_ID = :hold_entity_id2
10935 and ol.line_id = :line_id
10936 and ol.BLANKET_NUMBER = :hold_entity_id
10937 and ol.OPEN_FLAG = ''Y''
10938 -- QUOTING change
10939 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
10940 and not exists ( select ''x''
10941 from oe_order_holds_ALL oh
10942 where oh.header_id = h.header_id
10943 and oh.line_id = ol.line_id
10944 and oh.hold_source_id =:hold_source_id )';
10945 IF p_item_type is not null and p_activity_name is not null then
10946 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
10947 , wf_process_activities wpa
10948 where was.process_activity = wpa.instance_id
10949 and item_type = :p_item_type
10950 and item_key = to_char(ol.line_id)
10951 and activity_name = :l_activity_name
10952 and activity_status = :l_activity_status)';
10953 END IF;
10954 IF l_additional_where_clause = 'PICK_TRUE' THEN
10955 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
10956 where w.source_line_id = ol.line_id
10957 and w.source_code = ''OE''
10958 and w.released_status in (''Y'', ''C''))';
10959 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
10960 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
10961 where wdd.source_line_id = ol.LINE_ID
10962 and wdd.source_code = ''OE''
10963 and wda.delivery_detail_id = wdd.delivery_detail_id
10964 and wda.parent_delivery_detail_id is not null)';
10965 END IF;
10966 IF p_item_type is null and p_activity_name is null then
10967 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
10968 ELSE
10969 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2,
10970 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
10971 IF sql%rowcount = 0 THEN
10972 x_is_hold_applied := FALSE;
10973 ELSIF sql%rowcount = 1 THEN
10974 x_is_hold_applied := TRUE;
10975 END IF;
10976 END IF;
10977 ELSE
10978 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
10979 ( ORDER_HOLD_ID
10980 , LAST_UPDATE_DATE
10981 , LAST_UPDATED_BY
10982 , CREATION_DATE
10983 , CREATED_BY
10984 , LAST_UPDATE_LOGIN
10985 , HOLD_SOURCE_ID
10986 , HEADER_ID
10987 , LINE_ID
10988 , RELEASED_FLAG
10989 , ORG_ID
10990 )
10991 SELECT
10992 OE_ORDER_HOLDS_S.NEXTVAL
10993 , SYSDATE
10994 , :l_user_id
10995 , SYSDATE
10996 , :l_user_id
10997 , NULL
10998 , :hold_source_id
10999 , h.HEADER_ID
11000 , ol.line_id
11001 , ''N''
11002 , h.org_id --ER#7479609 :l_org_id
11003 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11004 WHERE h.OPEN_FLAG = ''Y''
11005 and h.org_id = :l_org_id --ER#7479609
11006 and h.header_id = ol.header_id
11007 and ol.SHIP_FROM_ORG_ID= :hold_entity_id2
11008 and ol.BLANKET_NUMBER = :hold_entity_id
11009 and ol.OPEN_FLAG = ''Y''
11010 -- QUOTING change
11011 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11012 and not exists ( select ''x''
11013 from oe_order_holds_ALL oh
11014 where oh.header_id = h.header_id
11015 and oh.line_id = ol.line_id
11016 and oh.hold_source_id =:hold_source_id )';
11017 IF p_item_type is not null and p_activity_name is not null then
11018 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11019 , wf_process_activities wpa
11020 where was.process_activity = wpa.instance_id
11021 and item_type = :p_item_type
11022 and item_key = to_char(ol.line_id)
11023 and activity_name = :l_activity_name
11024 and activity_status = :l_activity_status)';
11025 END IF;
11026 IF l_additional_where_clause = 'PICK_TRUE' THEN
11027 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
11028 where w.source_line_id = ol.line_id
11029 and w.source_code = ''OE''
11030 and w.released_status in (''Y'', ''C''))';
11031 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
11032 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
11033 where wdd.source_line_id = ol.LINE_ID
11034 and wdd.source_code = ''OE''
11035 and wda.delivery_detail_id = wdd.delivery_detail_id
11036 and wda.parent_delivery_detail_id is not null)';
11037 END IF;
11038 IF p_item_type is null and p_activity_name is null then
11039 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
11040 ELSE
11041 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
11042 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
11043 l_sql_rowcount := sql%rowcount;
11044 IF l_sql_rowcount = 0 THEN
11045
11046 select meaning into l_user_activity_name
11047 from oe_lookups
11048 where lookup_type = DECODE(p_item_type,
11049 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11050 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11051 and lookup_code = p_activity_name;
11052
11053 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
11054 fnd_message.set_token('WF_ACT', l_user_activity_name);
11055 OE_MSG_PUB.ADD;
11056 oe_debug_pub.add(' Hold Not applied for All requested records');
11057 RAISE FND_API.G_EXC_ERROR;
11058 ELSIF l_sql_rowcount > 0 THEN
11059 SELECT count(*)
11060 into l_parent_count
11061 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11062 WHERE h.OPEN_FLAG = 'Y'
11063 and h.header_id = ol.header_id
11064 and ol.SHIP_FROM_ORG_ID= p_hold_source_rec.hold_entity_id2
11065 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
11066 and ol.OPEN_FLAG = 'Y'
11067 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
11068 and not exists ( select 'x'
11069 from oe_order_holds_ALL oh
11070 where oh.header_id = h.header_id
11071 and oh.line_id = ol.line_id
11072 and oh.hold_source_id =
11073 p_hold_source_rec.hold_source_id );
11074
11075 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
11076
11077 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
11078
11079 select meaning into l_user_activity_name
11080 from oe_lookups
11081 where lookup_type = DECODE(p_item_type,
11082 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11083 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11084 and lookup_code = p_activity_name;
11085
11086 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
11087 fnd_message.set_token('WF_ACT', l_user_activity_name);
11088 OE_MSG_PUB.ADD;
11089 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
11090 END IF;
11091 END IF;
11092 END IF;
11093 END IF;
11094 ER#7479609 end*/
11095
11096 ELSIF p_hold_source_rec.hold_entity_code = 'H' and
11097 p_hold_source_rec.hold_entity_code2 = 'L' THEN
11098
11099 --ER#7479609 start
11100 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||''''
11101 ||' and ol.BLANKET_LINE_NUMBER = '||''''||p_hold_source_rec.hold_entity_id2||'''';
11102
11103
11104 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H and L');
11105 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
11106 ,p_line_id => p_hold_source_rec.line_id
11107 ,p_org_id => p_org_id
11108 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11109 ,p_item_type => p_item_type
11110 ,p_activity_name => l_activity_name
11111 ,p_activity_status => l_act_status
11112 ,p_additional_where_clause => l_additional_where_clause
11113 ,x_is_hold_applied => x_is_hold_applied);
11114 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H and L');
11115 --ER#7479609 end
11116
11117 /*ER#7479609 start
11118 IF p_hold_source_rec.line_id IS NOT NULL THEN
11119 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11120 ( ORDER_HOLD_ID
11121 , LAST_UPDATE_DATE
11122 , LAST_UPDATED_BY
11123 , CREATION_DATE
11124 , CREATED_BY
11125 , LAST_UPDATE_LOGIN
11126 , HOLD_SOURCE_ID
11127 , HEADER_ID
11128 , LINE_ID
11129 , RELEASED_FLAG
11130 , ORG_ID
11131 )
11132 SELECT
11133 OE_ORDER_HOLDS_S.NEXTVAL
11134 , SYSDATE
11135 , :l_user_id
11136 , SYSDATE
11137 , :l_user_id
11138 , NULL
11139 , :hold_source_id
11140 , h.HEADER_ID
11141 , ol.line_id
11142 , ''N''
11143 , h.org_id --ER#7479609 :l_org_id
11144 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11145 WHERE h.OPEN_FLAG = ''Y''
11146 and h.org_id = :l_org_id --ER#7479609
11147 and h.header_id = ol.header_id
11148 and ol.BLANKET_LINE_NUMBER = :hold_entity_id2
11149 and ol.line_id = :line_id
11150 and ol.BLANKET_NUMBER = :hold_entity_id
11151 and ol.OPEN_FLAG = ''Y''
11152 -- QUOTING change
11153 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11154 and not exists ( select ''x''
11155 from oe_order_holds_ALL oh
11156 where oh.header_id = h.header_id
11157 and oh.line_id = ol.line_id
11158 and oh.hold_source_id =:hold_source_id )';
11159 IF p_item_type is not null and p_activity_name is not null then
11160 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11161 , wf_process_activities wpa
11162 where was.process_activity = wpa.instance_id
11163 and item_type = :p_item_type
11164 and item_key = to_char(ol.line_id)
11165 and activity_name = :l_activity_name
11166 and activity_status = :l_activity_status)';
11167 END IF;
11168 IF l_additional_where_clause = 'PICK_TRUE' THEN
11169 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
11170 where w.source_line_id = ol.line_id
11171 and w.source_code = ''OE''
11172 and w.released_status in (''Y'', ''C''))';
11173 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
11174 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
11175 where wdd.source_line_id = ol.LINE_ID
11176 and wdd.source_code = ''OE''
11177 and wda.delivery_detail_id = wdd.delivery_detail_id
11178 and wda.parent_delivery_detail_id is not null)';
11179 END IF;
11180 IF p_item_type is null and p_activity_name is null then
11181 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
11182 ELSE
11183 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2,
11184 p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
11185 IF sql%rowcount = 0 THEN
11186 x_is_hold_applied := FALSE;
11187 ELSIF sql%rowcount = 1 THEN
11188 x_is_hold_applied := TRUE;
11189 END IF;
11190 END IF;
11191 ELSE
11192 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11193 ( ORDER_HOLD_ID
11194 , LAST_UPDATE_DATE
11195 , LAST_UPDATED_BY
11196 , CREATION_DATE
11197 , CREATED_BY
11198 , LAST_UPDATE_LOGIN
11199 , HOLD_SOURCE_ID
11200 , HEADER_ID
11201 , LINE_ID
11202 , RELEASED_FLAG
11203 , ORG_ID
11204 )
11205 SELECT
11206 OE_ORDER_HOLDS_S.NEXTVAL
11207 , SYSDATE
11208 , :l_user_id
11209 , SYSDATE
11210 , :l_user_id
11211 , NULL
11212 , :hold_source_id
11213 , h.HEADER_ID
11214 , ol.line_id
11215 , ''N''
11216 , h.org_id --ER#7479609 :l_org_id
11217 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11218 WHERE h.OPEN_FLAG = ''Y''
11219 and h.org_id = :l_org_id --ER#7479609
11220 and h.header_id = ol.header_id
11221 and ol.BLANKET_LINE_NUMBER = :hold_entity_id2
11222 and ol.BLANKET_NUMBER = :hold_entity_id
11223 and ol.OPEN_FLAG = ''Y''
11224 -- QUOTING change
11225 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11226 and not exists ( select ''x''
11227 from oe_order_holds_ALL oh
11228 where oh.header_id = h.header_id
11229 and oh.line_id = ol.line_id
11230 and oh.hold_source_id =:hold_source_id )';
11231 IF p_item_type is not null and p_activity_name is not null then
11232 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11233 , wf_process_activities wpa
11234 where was.process_activity = wpa.instance_id
11235 and item_type = :p_item_type
11236 and item_key = to_char(ol.line_id)
11237 and activity_name = :l_activity_name
11238 and activity_status = :l_activity_status)';
11239 END IF;
11240 IF l_additional_where_clause = 'PICK_TRUE' THEN
11241 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
11242 where w.source_line_id = ol.line_id
11243 and w.source_code = ''OE''
11244 and w.released_status in (''Y'', ''C''))';
11245 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
11246 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
11247 where wdd.source_line_id = ol.LINE_ID
11248 and wdd.source_code = ''OE''
11249 and wda.delivery_detail_id = wdd.delivery_detail_id
11250 and wda.parent_delivery_detail_id is not null)';
11251 END IF;
11252 IF p_item_type is null and p_activity_name is null then
11253 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id2, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
11254 ELSE
11255 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id2,
11256 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
11257 l_sql_rowcount := sql%rowcount;
11258 IF l_sql_rowcount = 0 THEN
11259
11260 select meaning into l_user_activity_name
11261 from oe_lookups
11262 where lookup_type = DECODE(p_item_type,
11263 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11264 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11265 and lookup_code = p_activity_name;
11266
11267 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
11268 fnd_message.set_token('WF_ACT', l_user_activity_name);
11269 OE_MSG_PUB.ADD;
11270 oe_debug_pub.add(' Hold Not applied for All requested records');
11271 RAISE FND_API.G_EXC_ERROR;
11272 ELSIF l_sql_rowcount > 0 THEN
11273 SELECT count(*)
11274 into l_parent_count
11275 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11276 WHERE h.OPEN_FLAG = 'Y'
11277 and h.header_id = ol.header_id
11278 and ol.BLANKET_LINE_NUMBER = p_hold_source_rec.hold_entity_id2
11279 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
11280 and ol.OPEN_FLAG = 'Y'
11281 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
11282 and not exists ( select 'x'
11283 from oe_order_holds_ALL oh
11284 where oh.header_id = h.header_id
11285 and oh.line_id = ol.line_id
11286 and oh.hold_source_id =
11287 p_hold_source_rec.hold_source_id );
11288
11289 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
11290
11291 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
11292
11293 select meaning into l_user_activity_name
11294 from oe_lookups
11295 where lookup_type = DECODE(p_item_type,
11296 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11297 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11298 and lookup_code = p_activity_name;
11299
11300 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
11301 fnd_message.set_token('WF_ACT', l_user_activity_name);
11302 OE_MSG_PUB.ADD;
11303 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
11304 END IF;
11305 END IF;
11306 END IF;
11307 END IF;
11308 ER#7479609 end*/
11309
11310 ELSIF p_hold_source_rec.hold_entity_code = 'H'
11311 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
11312
11313 --ER#7479609 start
11314 l_hold_entity_where_clause := 'and ol.BLANKET_NUMBER = '||''''||p_hold_source_rec.hold_entity_id||'''';
11315
11316
11317 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for H');
11318 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
11319 ,p_line_id => p_hold_source_rec.line_id
11320 ,p_org_id => p_org_id
11321 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11322 ,p_item_type => p_item_type
11323 ,p_activity_name => l_activity_name
11324 ,p_activity_status => l_act_status
11325 ,p_additional_where_clause => l_additional_where_clause
11326 ,x_is_hold_applied => x_is_hold_applied);
11327 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for H');
11328 --ER#7479609 end
11329
11330 /*ER#7479609 start
11331 IF p_hold_source_rec.line_id IS NOT NULL THEN
11332 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11333 ( ORDER_HOLD_ID
11334 , LAST_UPDATE_DATE
11335 , LAST_UPDATED_BY
11336 , CREATION_DATE
11337 , CREATED_BY
11338 , LAST_UPDATE_LOGIN
11339 , HOLD_SOURCE_ID
11340 , HEADER_ID
11341 , LINE_ID
11342 , RELEASED_FLAG
11343 , ORG_ID
11344 )
11345 SELECT
11346 OE_ORDER_HOLDS_S.NEXTVAL
11347 , SYSDATE
11348 , :l_user_id
11349 , SYSDATE
11350 , :l_user_id
11351 , NULL
11352 , :hold_source_id
11353 , h.HEADER_ID
11354 , ol.line_id
11355 , ''N''
11356 , h.org_id --ER#7479609 :l_org_id
11357 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11358 WHERE h.OPEN_FLAG = ''Y''
11359 and h.org_id = :l_org_id --ER#7479609
11360 and h.header_id = ol.header_id
11361 and ol.line_id = :line_id
11362 and ol.BLANKET_NUMBER = :hold_entity_id
11363 and ol.OPEN_FLAG = ''Y''
11364 -- QUOTING change
11365 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11366 and not exists ( select ''x''
11367 from oe_order_holds_ALL oh
11368 where oh.header_id = h.header_id
11369 and oh.line_id = ol.line_id
11370 and oh.hold_source_id =:hold_source_id )';
11371 IF p_item_type is not null and p_activity_name is not null then
11372 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11373 , wf_process_activities wpa
11374 where was.process_activity = wpa.instance_id
11375 and item_type = :p_item_type
11376 and item_key = to_char(ol.line_id)
11377 and activity_name = :l_activity_name
11378 and activity_status = :l_activity_status)';
11379 END IF;
11380 IF l_additional_where_clause = 'PICK_TRUE' THEN
11381 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
11382 where w.source_line_id = ol.line_id
11383 and w.source_code = ''OE''
11384 and w.released_status in (''Y'', ''C''))';
11385 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
11386 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
11387 where wdd.source_line_id = ol.LINE_ID
11388 and wdd.source_code = ''OE''
11389 and wda.delivery_detail_id = wdd.delivery_detail_id
11390 and wda.parent_delivery_detail_id is not null)';
11391 END IF;
11392 IF p_item_type is null and p_activity_name is null then
11393 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
11394 ELSE
11395 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.line_id,
11396 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
11397 IF sql%rowcount = 0 THEN
11398 x_is_hold_applied := FALSE;
11399 ELSIF sql%rowcount = 1 THEN
11400 x_is_hold_applied := TRUE;
11401 END IF;
11402 END IF;
11403 ELSE
11404 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11405 ( ORDER_HOLD_ID
11406 , LAST_UPDATE_DATE
11407 , LAST_UPDATED_BY
11408 , CREATION_DATE
11409 , CREATED_BY
11410 , LAST_UPDATE_LOGIN
11411 , HOLD_SOURCE_ID
11412 , HEADER_ID
11413 , LINE_ID
11414 , RELEASED_FLAG
11415 , ORG_ID
11416 )
11417 SELECT
11418 OE_ORDER_HOLDS_S.NEXTVAL
11419 , SYSDATE
11420 , :l_user_id
11421 , SYSDATE
11422 , :l_user_id
11423 , NULL
11424 , :hold_source_id
11425 , h.HEADER_ID
11426 , ol.line_id
11427 , ''N''
11428 , h.org_id --ER#7479609 :l_org_id
11429 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11430 WHERE h.OPEN_FLAG = ''Y''
11431 and h.org_id = :l_org_id --ER#7479609
11432 and h.header_id = ol.header_id
11433 and ol.BLANKET_NUMBER = :hold_entity_id
11434 and ol.OPEN_FLAG = ''Y''
11435 -- QUOTING change
11436 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11437 and not exists ( select ''x''
11438 from oe_order_holds_ALL oh
11439 where oh.header_id = h.header_id
11440 and oh.line_id = ol.line_id
11441 and oh.hold_source_id =:hold_source_id )';
11442 IF p_item_type is not null and p_activity_name is not null then
11443 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11444 , wf_process_activities wpa
11445 where was.process_activity = wpa.instance_id
11446 and item_type = :p_item_type
11447 and item_key = to_char(ol.line_id)
11448 and activity_name = :l_activity_name
11449 and activity_status = :l_activity_status)';
11450 END IF;
11451 IF l_additional_where_clause = 'PICK_TRUE' THEN
11452 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
11453 where w.source_line_id = ol.line_id
11454 and w.source_code = ''OE''
11455 and w.released_status in (''Y'', ''C''))';
11456 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
11457 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
11458 where wdd.source_line_id = ol.LINE_ID
11459 and wdd.source_code = ''OE''
11460 and wda.delivery_detail_id = wdd.delivery_detail_id
11461 and wda.parent_delivery_detail_id is not null)';
11462 END IF;
11463 IF p_item_type is null and p_activity_name is null then
11464 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
11465 ELSE
11466 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.hold_entity_id ,
11467 p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
11468 l_sql_rowcount := sql%rowcount;
11469 IF l_sql_rowcount = 0 THEN
11470
11471 select meaning into l_user_activity_name
11472 from oe_lookups
11473 where lookup_type = DECODE(p_item_type,
11474 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11475 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11476 and lookup_code = p_activity_name;
11477
11478 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
11479 fnd_message.set_token('WF_ACT', l_user_activity_name);
11480 OE_MSG_PUB.ADD;
11481 oe_debug_pub.add(' Hold Not applied for All requested records');
11482 RAISE FND_API.G_EXC_ERROR;
11483 ELSIF l_sql_rowcount > 0 THEN
11484 SELECT count(*)
11485 into l_parent_count
11486 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11487 WHERE h.OPEN_FLAG = 'Y'
11488 and h.header_id = ol.header_id
11489 and ol.BLANKET_NUMBER = p_hold_source_rec.hold_entity_id
11490 and ol.OPEN_FLAG = 'Y'
11491 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
11492 and not exists ( select 'x'
11493 from oe_order_holds_ALL oh
11494 where oh.header_id = h.header_id
11495 and oh.line_id = ol.line_id
11496 and oh.hold_source_id =
11497 p_hold_source_rec.hold_source_id );
11498
11499 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
11500
11501 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
11502
11503 select meaning into l_user_activity_name
11504 from oe_lookups
11505 where lookup_type = DECODE(p_item_type,
11506 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11507 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11508 and lookup_code = p_activity_name;
11509
11510 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
11511 fnd_message.set_token('WF_ACT', l_user_activity_name);
11512 OE_MSG_PUB.ADD;
11513 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
11514 END IF;
11515 END IF;
11516 END IF;
11517 END IF;
11518 ER#7479609 end*/
11519 /******************************************************************************************************
11520 HOLD CRITERIA 1 : ORDER (EVEN FOR HOLD FOR A SPECIFIC ORDER LIKE ACTION->APPLY HOLDS OR ONLINE HOLDS)
11521 ******************************************************************************************************/
11522
11523 ELSIF p_hold_source_rec.hold_entity_code = 'O' THEN
11524 IF p_hold_source_rec.line_id is NULL THEN
11525 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11526 ( ORDER_HOLD_ID
11527 , LAST_UPDATE_DATE
11528 , LAST_UPDATED_BY
11529 , CREATION_DATE
11530 , CREATED_BY
11531 , LAST_UPDATE_LOGIN
11532 , HOLD_SOURCE_ID
11533 , HEADER_ID
11534 , LINE_ID
11535 , RELEASED_FLAG
11536 , ORG_ID
11537 )
11538 SELECT
11539 OE_ORDER_HOLDS_S.NEXTVAL
11540 , SYSDATE
11541 , :l_user_id
11542 , SYSDATE
11543 , :l_user_id
11544 , NULL
11545 , :hold_source_id
11546 , h.HEADER_ID
11547 , NULL
11548 , ''N''
11549 , h.org_id --ER#7479609 :l_org_id
11550 FROM OE_ORDER_HEADERS_ALL h
11551 WHERE h.OPEN_FLAG = ''Y''
11552 and h.org_id = :l_org_id --ER#7479609
11553 and h.header_id = :hold_entity_id
11554 -- QUOTING change
11555 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11556 and not exists ( select ''x''
11557 from oe_order_holds_ALL oh
11558 where oh.header_id = h.header_id
11559 and oh.hold_source_id =:hold_source_id2 )';
11560 IF p_item_type is not null and p_activity_name is not null then
11561 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11562 , wf_process_activities wpa
11563 where was.process_activity = wpa.instance_id
11564 and item_type = :p_item_type
11565 and item_key = to_char(h.header_id)
11566 and activity_name = :l_activity_name
11567 and activity_status = :l_activity_status)';
11568 END IF;
11569
11570 IF p_item_type is null and p_activity_name is null then
11571 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id /*ER#7479609 start l_org_id*/, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
11572 ELSE
11573 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id /*ER#7479609 start l_org_id*/, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOH', l_activity_name, l_act_status;
11574 IF sql%rowcount = 0 THEN
11575 x_is_hold_applied := FALSE;
11576 ELSIF sql%rowcount = 1 THEN
11577 x_is_hold_applied := TRUE;
11578 END IF;
11579 END IF;
11580 ELSE
11581 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11582 ( ORDER_HOLD_ID
11583 , LAST_UPDATE_DATE
11584 , LAST_UPDATED_BY
11585 , CREATION_DATE
11586 , CREATED_BY
11587 , LAST_UPDATE_LOGIN
11588 , HOLD_SOURCE_ID
11589 , HEADER_ID
11590 , LINE_ID
11591 , RELEASED_FLAG
11592 , ORG_ID
11593 )
11594 SELECT
11595 OE_ORDER_HOLDS_S.NEXTVAL
11596 , SYSDATE
11597 , :l_user_id
11598 , SYSDATE
11599 , :l_user_id
11600 , NULL
11601 , :hold_source_id
11602 , h.HEADER_ID
11603 , :line_id
11604 , ''N''
11605 , h.org_id --ER#7479609 :l_org_id
11606 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11607 WHERE h.OPEN_FLAG = ''Y''
11608 and h.org_id = :l_org_id --ER#7479609
11609 and h.header_id = :hold_entity_id
11610 and h.header_id = ol.header_id
11611 and ol.line_id = :line_id
11612 and ol.OPEN_FLAG = ''Y''
11613 -- QUOTING change
11614 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11615 and not exists ( select ''x''
11616 from oe_order_holds_ALL oh
11617 where oh.header_id = h.header_id
11618 and oh.line_id = ol.line_id
11619 and oh.hold_source_id =:hold_source_id )';
11620 IF p_item_type is not null and p_activity_name is not null then
11621 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11622 , wf_process_activities wpa
11623 where was.process_activity = wpa.instance_id
11624 and item_type = :p_item_type
11625 and item_key = to_char(ol.line_id)
11626 and activity_name = :l_activity_name
11627 and activity_status = :l_activity_status)';
11628 END IF;
11629 IF l_additional_where_clause = 'PICK_TRUE' THEN
11630 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
11631 where w.source_line_id = ol.line_id
11632 and w.source_code = ''OE''
11633 and w.released_status in (''Y'', ''C''))';
11634 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
11635 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
11636 where wdd.source_line_id = ol.LINE_ID
11637 and wdd.source_code = ''OE''
11638 and wda.delivery_detail_id = wdd.delivery_detail_id
11639 and wda.parent_delivery_detail_id is not null)';
11640 END IF;
11641 IF p_item_type is null and p_activity_name is null then
11642 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_hold_source_rec.line_id,
11643 p_org_id /*ER#7479609 start l_org_id*/, p_hold_source_rec.hold_entity_id,
11644 p_hold_source_rec.line_id, p_hold_source_rec.hold_source_id;
11645 ELSE
11646 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_hold_source_rec.line_id, p_org_id /*ER#7479609 start l_org_id*/,
11647 p_hold_source_rec.hold_entity_id, p_hold_source_rec.line_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
11648 l_sql_rowcount := sql%rowcount;
11649 IF l_sql_rowcount = 0 THEN
11650
11651 select meaning into l_user_activity_name
11652 from oe_lookups
11653 where lookup_type = DECODE(p_item_type,
11654 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11655 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11656 and lookup_code = p_activity_name;
11657
11658 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
11659 fnd_message.set_token('WF_ACT', l_user_activity_name);
11660 OE_MSG_PUB.ADD;
11661 oe_debug_pub.add(' Hold Not applied for All requested records');
11662 RAISE FND_API.G_EXC_ERROR;
11663 ELSIF l_sql_rowcount > 0 THEN
11664 x_is_hold_applied := TRUE;
11665 SELECT count(*)
11666 into l_parent_count
11667 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
11668 WHERE h.OPEN_FLAG = 'Y'
11669 and h.header_id = p_hold_source_rec.hold_entity_id
11670 and h.header_id = ol.header_id
11671 and ol.line_id = p_hold_source_rec.line_id
11672 and ol.open_flag = 'Y'
11673 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
11674 and not exists ( select 'x'
11675 from oe_order_holds_ALL oh
11676 where oh.header_id = h.header_id
11677 and oh.line_id = ol.line_id
11678 and oh.hold_source_id =
11679 p_hold_source_rec.hold_source_id );
11680
11681 /* Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables. */
11682
11683 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
11684
11685 select meaning into l_user_activity_name
11686 from oe_lookups
11687 where lookup_type = DECODE(p_item_type,
11688 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11689 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11690 and lookup_code = p_activity_name;
11691
11692 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
11693 fnd_message.set_token('WF_ACT', l_user_activity_name);
11694 OE_MSG_PUB.ADD;
11695 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
11696 END IF;
11697 END IF;
11698 END IF;
11699 END IF;
11700
11701 /*********************************************************
11702 HOLD CRITERIA 1 : CUSTOMER
11703 *********************************************************/
11704
11705 ELSIF p_hold_source_rec.hold_entity_code = 'C'
11706 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
11707 -- Use header_id for Customer based hold source
11708
11709 --ER#7479609 start
11710 l_hold_entity_where_clause := 'and h.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
11711
11712 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Header for C');
11713
11714 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
11715 ,p_header_id =>p_hold_source_rec.header_id
11716 ,p_org_id => p_org_id
11717 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11718 ,p_item_type => p_item_type
11719 ,p_activity_name => l_activity_name
11720 ,p_activity_status => l_act_status
11721 ,p_additional_where_clause => l_additional_where_clause
11722 ,x_is_hold_applied => x_is_hold_applied);
11723
11724 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Header for C');
11725 --ER#7479609 end
11726
11727
11728 /*ER#7479609 start
11729 IF p_hold_source_rec.header_id IS NOT NULL THEN
11730 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11731 ( ORDER_HOLD_ID
11732 , LAST_UPDATE_DATE
11733 , LAST_UPDATED_BY
11734 , CREATION_DATE
11735 , CREATED_BY
11736 , LAST_UPDATE_LOGIN
11737 , HOLD_SOURCE_ID
11738 , HEADER_ID
11739 , LINE_ID
11740 , RELEASED_FLAG
11741 , ORG_ID
11742 )
11743 SELECT
11744 OE_ORDER_HOLDS_S.NEXTVAL
11745 , SYSDATE
11746 , :l_user_id
11747 , SYSDATE
11748 , :l_user_id
11749 , NULL
11750 , :hold_source_id
11751 , h.HEADER_ID
11752 , NULL
11753 , ''N''
11754 , h.org_id --ER#7479609 :l_org_id
11755 FROM OE_ORDER_HEADERS_ALL h
11756 WHERE h.OPEN_FLAG = ''Y''
11757 and h.org_id = :l_org_id --ER#7479609
11758 and h.header_id = :header_id
11759 and h.SOLD_TO_ORG_ID = :hold_entity_id
11760 -- QUOTING change
11761 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11762 and not exists ( select ''x''
11763 from oe_order_holds_ALL oh
11764 where oh.header_id = h.header_id
11765 and oh.hold_source_id =:hold_source_id )';
11766 IF p_item_type is not null and p_activity_name is not null then
11767 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11768 , wf_process_activities wpa
11769 where was.process_activity = wpa.instance_id
11770 and item_type = :p_item_type
11771 and item_key = to_char(h.header_id)
11772 and activity_name = :l_activity_name
11773 and activity_status = :l_activity_status)';
11774 END IF;
11775
11776 IF p_item_type is null and p_activity_name is null then
11777 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.header_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
11778 ELSE
11779 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id , p_hold_source_rec.header_id,
11780 p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOH', l_activity_name, l_act_status;
11781 IF sql%rowcount = 0 THEN
11782 x_is_hold_applied := FALSE;
11783 ELSIF sql%rowcount = 1 THEN
11784 x_is_hold_applied := TRUE;
11785 END IF;
11786 END IF;
11787 ELSE
11788 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
11789 ( ORDER_HOLD_ID
11790 , LAST_UPDATE_DATE
11791 , LAST_UPDATED_BY
11792 , CREATION_DATE
11793 , CREATED_BY
11794 , LAST_UPDATE_LOGIN
11795 , HOLD_SOURCE_ID
11796 , HEADER_ID
11797 , LINE_ID
11798 , RELEASED_FLAG
11799 , ORG_ID
11800 )
11801 SELECT
11802 OE_ORDER_HOLDS_S.NEXTVAL
11803 , SYSDATE
11804 , :l_user_id
11805 , SYSDATE
11806 , :l_user_id
11807 , NULL
11808 , :hold_source_id
11809 , h.HEADER_ID
11810 , NULL
11811 , ''N''
11812 , h.org_id --ER#7479609 :l_org_id
11813 FROM OE_ORDER_HEADERS_ALL h
11814 WHERE h.OPEN_FLAG = ''Y''
11815
11816 and h.SOLD_TO_ORG_ID = :hold_entity_id
11817 and h.org_id = :l_org_id --ER#7479609
11818 -- QUOTING change
11819 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
11820 and not exists ( select ''x''
11821 from oe_order_holds_ALL oh
11822 where oh.header_id = h.header_id
11823 and oh.hold_source_id =:hold_source_id )';
11824 IF p_item_type is not null and p_activity_name is not null then
11825 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
11826 , wf_process_activities wpa
11827 where was.process_activity = wpa.instance_id
11828 and item_type = :p_item_type
11829 and item_key = to_char(h.header_id)
11830 and activity_name = :l_activity_name
11831 and activity_status = :l_activity_status)';
11832 END IF;
11833
11834 IF p_item_type is null and p_activity_name is null then
11835 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_hold_source_rec.hold_entity_id,p_org_id, p_hold_source_rec.hold_source_id;
11836 ELSE
11837
11838 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_hold_source_rec.hold_entity_id,p_org_id, p_hold_source_rec.hold_source_id, 'OEOH', l_activity_name, l_act_status;
11839
11840 l_sql_rowcount := sql%rowcount;
11841 oe_debug_pub.add('l_sql_rowcount - '||l_sql_rowcount);
11842 IF l_sql_rowcount = 0 THEN
11843
11844 select meaning into l_user_activity_name
11845 from oe_lookups
11846 where lookup_type = DECODE(p_item_type,
11847 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11848 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11849 and lookup_code = p_activity_name;
11850
11851 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
11852 fnd_message.set_token('WF_ACT', l_user_activity_name);
11853 OE_MSG_PUB.ADD;
11854 oe_debug_pub.add(' Hold Not applied for All requested records');
11855 RAISE FND_API.G_EXC_ERROR;
11856 ELSIF l_sql_rowcount > 0 THEN
11857 SELECT count(*)
11858 into l_parent_count
11859 FROM OE_ORDER_HEADERS_ALL h
11860 WHERE h.OPEN_FLAG = 'Y'
11861
11862 and h.SOLD_TO_ORG_ID = p_hold_source_rec.hold_entity_id
11863 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
11864 and not exists ( select 'x'
11865 from oe_order_holds_ALL oh
11866 where oh.header_id = h.header_id
11867 and oh.hold_source_id =
11868 p_hold_source_rec.hold_source_id );
11869
11870 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow -- or Shipping product tables.
11871 oe_debug_pub.add('l_parent_count - '||l_parent_count);
11872 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
11873
11874 select meaning into l_user_activity_name
11875 from oe_lookups
11876 where lookup_type = DECODE(p_item_type,
11877 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
11878 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
11879 and lookup_code = p_activity_name;
11880
11881 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
11882 fnd_message.set_token('WF_ACT', l_user_activity_name);
11883 OE_MSG_PUB.ADD;
11884 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
11885 END IF;
11886 END IF;
11887 END IF;
11888 END IF;
11889 ER#7479609 end*/
11890
11891 --ER#7479609 start
11892 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
11893 p_hold_source_rec.hold_entity_code2 = 'B' THEN
11894
11895
11896 l_hold_entity_where_clause := 'and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
11897 ||' and ol.INVOICE_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
11898
11899
11900 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for C and B');
11901 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
11902 ,p_line_id => p_hold_source_rec.line_id
11903 ,p_org_id => p_org_id
11904 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11905 ,p_item_type => p_item_type
11906 ,p_activity_name => l_activity_name
11907 ,p_activity_status => l_act_status
11908 ,p_additional_where_clause => l_additional_where_clause
11909 ,x_is_hold_applied => x_is_hold_applied);
11910 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for C and B');
11911 --ER#7479609 end
11912
11913
11914 --ER#7479609 start
11915 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
11916 p_hold_source_rec.hold_entity_code2 = 'S' THEN
11917
11918
11919 l_hold_entity_where_clause := 'and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
11920 ||' and ol.SHIP_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
11921
11922
11923 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for C and S');
11924 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
11925 ,p_line_id => p_hold_source_rec.line_id
11926 ,p_org_id => p_org_id
11927 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11928 ,p_item_type => p_item_type
11929 ,p_activity_name => l_activity_name
11930 ,p_activity_status => l_act_status
11931 ,p_additional_where_clause => l_additional_where_clause
11932 ,x_is_hold_applied => x_is_hold_applied);
11933 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for C and S');
11934 --ER#7479609 end
11935
11936
11937 --ER#7479609 start
11938 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
11939 p_hold_source_rec.hold_entity_code2 = 'D' THEN
11940
11941
11942 l_hold_entity_where_clause := 'and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
11943 ||' and ol.DELIVER_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
11944
11945
11946 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for C and D');
11947 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
11948 ,p_line_id => p_hold_source_rec.line_id
11949 ,p_org_id => p_org_id
11950 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11951 ,p_item_type => p_item_type
11952 ,p_activity_name => l_activity_name
11953 ,p_activity_status => l_act_status
11954 ,p_additional_where_clause => l_additional_where_clause
11955 ,x_is_hold_applied => x_is_hold_applied);
11956 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for C and D');
11957 --ER#7479609 end
11958
11959
11960 --ER#7479609 start
11961 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
11962 p_hold_source_rec.hold_entity_code2 = 'PL' THEN
11963
11964
11965 l_hold_entity_where_clause := 'and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
11966 ||' and ol.PRICE_LIST_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
11967
11968
11969 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for C and PL');
11970 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
11971 ,p_line_id => p_hold_source_rec.line_id
11972 ,p_org_id => p_org_id
11973 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11974 ,p_item_type => p_item_type
11975 ,p_activity_name => l_activity_name
11976 ,p_activity_status => l_act_status
11977 ,p_additional_where_clause => l_additional_where_clause
11978 ,x_is_hold_applied => x_is_hold_applied);
11979 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for C and PL');
11980 --ER#7479609 end
11981
11982
11983 --ER#7479609 start
11984 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
11985 p_hold_source_rec.hold_entity_code2 = 'LT' THEN
11986
11987
11988 l_hold_entity_where_clause := 'and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
11989 ||' and ol.LINE_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
11990
11991
11992 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for C and LT');
11993 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
11994 ,p_line_id => p_hold_source_rec.line_id
11995 ,p_org_id => p_org_id
11996 ,p_hold_entity_where_clause => l_hold_entity_where_clause
11997 ,p_item_type => p_item_type
11998 ,p_activity_name => l_activity_name
11999 ,p_activity_status => l_act_status
12000 ,p_additional_where_clause => l_additional_where_clause
12001 ,x_is_hold_applied => x_is_hold_applied);
12002 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for C and LT');
12003 --ER#7479609 end
12004
12005
12006 --ER#7479609 start
12007 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
12008 p_hold_source_rec.hold_entity_code2 = 'PT' THEN
12009
12010
12011 l_hold_entity_where_clause := 'and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
12012 ||' and ol.PAYMENT_TERM_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
12013
12014
12015 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for C and PT');
12016 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
12017 ,p_line_id => p_hold_source_rec.line_id
12018 ,p_org_id => p_org_id
12019 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12020 ,p_item_type => p_item_type
12021 ,p_activity_name => l_activity_name
12022 ,p_activity_status => l_act_status
12023 ,p_additional_where_clause => l_additional_where_clause
12024 ,x_is_hold_applied => x_is_hold_applied);
12025 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for C and PT');
12026 --ER#7479609 end
12027
12028
12029 --ER#7479609 start
12030 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
12031 p_hold_source_rec.hold_entity_code2 = 'OT' THEN
12032
12033
12034 l_hold_entity_where_clause := 'and h.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
12035 ||' and h.ORDER_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
12036
12037 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Header for C and OT');
12038 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
12039 ,p_header_id =>p_hold_source_rec.header_id
12040 ,p_org_id => p_org_id
12041 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12042 ,p_item_type => p_item_type
12043 ,p_activity_name => l_activity_name
12044 ,p_activity_status => l_activity_name
12045 ,p_additional_where_clause => l_additional_where_clause
12046 ,x_is_hold_applied => x_is_hold_applied);
12047
12048 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Header for C and OT');
12049 --ER#7479609 end
12050
12051 --ER#7479609 start
12052 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
12053 p_hold_source_rec.hold_entity_code2 = 'P' THEN
12054
12055
12056 OE_DEBUG_PUB.ADD('Calling PaymentType_Hold for C and P');
12057 PaymentType_Hold (p_hold_source_rec => p_hold_source_rec
12058 ,p_org_id => p_org_id
12059 ,p_item_type => p_item_type
12060 ,p_activity_name => l_activity_name
12061 ,p_activity_status => l_activity_name
12062 ,p_additional_where_clause => l_additional_where_clause
12063 ,x_is_hold_applied => x_is_hold_applied);
12064
12065 --ER#7479609 start
12066 IF NOT x_is_hold_applied THEN
12067 x_return_status := 'PAY_HOLD_NA';
12068 END IF;
12069 --ER#7479609 end
12070
12071 OE_DEBUG_PUB.ADD('After Calling InsePaymentType_Hold for C and P');
12072 --ER#7479609 end
12073
12074 --ER#7479609 start
12075 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
12076 p_hold_source_rec.hold_entity_code2 = 'TC' THEN
12077
12078
12079 l_hold_entity_where_clause := 'and h.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
12080 ||' and h.TRANSACTIONAL_CURR_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
12081
12082 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Header for C and TC');
12083 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
12084 ,p_header_id =>p_hold_source_rec.header_id
12085 ,p_org_id => p_org_id
12086 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12087 ,p_item_type => p_item_type
12088 ,p_activity_name => l_activity_name
12089 ,p_activity_status => l_act_status
12090 ,p_additional_where_clause => l_additional_where_clause
12091 ,x_is_hold_applied => x_is_hold_applied);
12092
12093 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Header for C and TC');
12094 --ER#7479609 end
12095
12096 --ER#7479609 start
12097 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
12098 p_hold_source_rec.hold_entity_code2 = 'ST' THEN
12099
12100
12101 l_hold_entity_where_clause := 'and ol.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
12102 ||' and ol.SOURCE_TYPE_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
12103
12104
12105 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for C and ST');
12106 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
12107 ,p_line_id => p_hold_source_rec.line_id
12108 ,p_org_id => p_org_id
12109 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12110 ,p_item_type => p_item_type
12111 ,p_activity_name => l_activity_name
12112 ,p_activity_status => l_act_status
12113 ,p_additional_where_clause => l_additional_where_clause
12114 ,x_is_hold_applied => x_is_hold_applied);
12115 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for C and ST');
12116 --ER#7479609 end
12117
12118
12119 --ER#7479609 start
12120 ELSIF p_hold_source_rec.hold_entity_code = 'C' and
12121 p_hold_source_rec.hold_entity_code2 = 'SC' THEN
12122
12123
12124 l_hold_entity_where_clause := 'and h.SOLD_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
12125 ||' and h.SALES_CHANNEL_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
12126
12127 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Header for C and SC');
12128 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
12129 ,p_header_id =>p_hold_source_rec.header_id
12130 ,p_org_id => p_org_id
12131 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12132 ,p_item_type => p_item_type
12133 ,p_activity_name => l_activity_name
12134 ,p_activity_status => l_act_status
12135 ,p_additional_where_clause => l_additional_where_clause
12136 ,x_is_hold_applied => x_is_hold_applied);
12137
12138 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Header for C and SC');
12139 --ER#7479609 end
12140
12141
12142 /*********************************************************
12143 HOLD CRITERIA 1 : BILL TO SITE
12144 *********************************************************/
12145
12146 ELSIF p_hold_source_rec.hold_entity_code = 'B'
12147 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
12148
12149 --ER#7479609 start
12150 l_hold_entity_where_clause := 'and ol.INVOICE_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
12151
12152
12153 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for B');
12154 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
12155 ,p_line_id => p_hold_source_rec.line_id
12156 ,p_org_id => p_org_id
12157 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12158 ,p_item_type => p_item_type
12159 ,p_activity_name => l_activity_name
12160 ,p_activity_status => l_act_status
12161 ,p_additional_where_clause => l_additional_where_clause
12162 ,x_is_hold_applied => x_is_hold_applied);
12163 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for B');
12164 --ER#7479609 end
12165
12166 /*ER#7479609 start
12167 IF p_hold_source_rec.line_id IS NOT NULL THEN
12168 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12169 ( ORDER_HOLD_ID
12170 , LAST_UPDATE_DATE
12171 , LAST_UPDATED_BY
12172 , CREATION_DATE
12173 , CREATED_BY
12174 , LAST_UPDATE_LOGIN
12175 , HOLD_SOURCE_ID
12176 , HEADER_ID
12177 , LINE_ID
12178 , RELEASED_FLAG
12179 , ORG_ID
12180 )
12181 SELECT
12182 OE_ORDER_HOLDS_S.NEXTVAL
12183 , SYSDATE
12184 , :l_user_id
12185 , SYSDATE
12186 , :l_user_id
12187 , NULL
12188 , :hold_source_id
12189 , h.HEADER_ID
12190 , ol.line_id
12191 , ''N''
12192 , h.org_id --ER#7479609 :l_org_id
12193 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12194 WHERE h.OPEN_FLAG = ''Y''
12195 and h.org_id = :l_org_id
12196 and h.header_id = ol.header_id
12197 and ol.line_id = :line_id
12198 and ol.INVOICE_TO_ORG_ID = :hold_entity_id
12199 and ol.OPEN_FLAG = ''Y''
12200 -- QUOTING change
12201 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12202 and not exists ( select ''x''
12203 from oe_order_holds_ALL oh
12204 where oh.header_id = h.header_id
12205 and oh.line_id = ol.line_id
12206 and oh.hold_source_id =:hold_source_id )';
12207 IF p_item_type is not null and p_activity_name is not null then
12208 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12209 , wf_process_activities wpa
12210 where was.process_activity = wpa.instance_id
12211 and item_type = :p_item_type
12212 and item_key = to_char(ol.line_id)
12213 and activity_name = :l_activity_name
12214 and activity_status = :l_activity_status)';
12215 END IF;
12216 IF l_additional_where_clause = 'PICK_TRUE' THEN
12217 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12218 where w.source_line_id = ol.line_id
12219 and w.source_code = ''OE''
12220 and w.released_status in (''Y'', ''C''))';
12221 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12222 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12223 where wdd.source_line_id = ol.LINE_ID
12224 and wdd.source_code = ''OE''
12225 and wda.delivery_detail_id = wdd.delivery_detail_id
12226 and wda.parent_delivery_detail_id is not null)';
12227 END IF;
12228 IF p_item_type is null and p_activity_name is null then
12229 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12230 ELSE
12231 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12232 IF sql%rowcount = 0 THEN
12233 x_is_hold_applied := FALSE;
12234 ELSIF sql%rowcount = 1 THEN
12235 x_is_hold_applied := TRUE;
12236 END IF;
12237 END IF;
12238
12239 ELSE
12240 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12241 ( ORDER_HOLD_ID
12242 , LAST_UPDATE_DATE
12243 , LAST_UPDATED_BY
12244 , CREATION_DATE
12245 , CREATED_BY
12246 , LAST_UPDATE_LOGIN
12247 , HOLD_SOURCE_ID
12248 , HEADER_ID
12249 , LINE_ID
12250 , RELEASED_FLAG
12251 , ORG_ID
12252 )
12253 SELECT
12254 OE_ORDER_HOLDS_S.NEXTVAL
12255 , SYSDATE
12256 , :l_user_id
12257 , SYSDATE
12258 , :l_user_id
12259 , NULL
12260 , :hold_source_id
12261 , h.HEADER_ID
12262 , ol.line_id
12263 , ''N''
12264 , h.org_id --ER#7479609 :l_org_id
12265 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12266 WHERE h.OPEN_FLAG = ''Y''
12267 and h.org_id = :l_org_id --ER#7479609
12268 and h.header_id = ol.header_id
12269 and ol.INVOICE_TO_ORG_ID = :hold_entity_id
12270 and ol.OPEN_FLAG = ''Y''
12271 -- QUOTING change
12272 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12273 and not exists ( select ''x''
12274 from oe_order_holds_ALL oh
12275 where oh.header_id = h.header_id
12276 and oh.line_id = ol.line_id
12277 and oh.hold_source_id =:hold_source_id )';
12278 IF p_item_type is not null and p_activity_name is not null then
12279 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12280 , wf_process_activities wpa
12281 where was.process_activity = wpa.instance_id
12282 and item_type = :p_item_type
12283 and item_key = to_char(ol.line_id)
12284 and activity_name = :l_activity_name
12285 and activity_status = :l_activity_status)';
12286 END IF;
12287 IF l_additional_where_clause = 'PICK_TRUE' THEN
12288 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12289 where w.source_line_id = ol.line_id
12290 and w.source_code = ''OE''
12291 and w.released_status in (''Y'', ''C''))';
12292 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12293 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12294 where wdd.source_line_id = ol.LINE_ID
12295 and wdd.source_code = ''OE''
12296 and wda.delivery_detail_id = wdd.delivery_detail_id
12297 and wda.parent_delivery_detail_id is not null)';
12298 END IF;
12299 IF p_item_type is null and p_activity_name is null then
12300 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12301 ELSE
12302 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12303 l_sql_rowcount := sql%rowcount;
12304 IF l_sql_rowcount = 0 THEN
12305
12306 select meaning into l_user_activity_name
12307 from oe_lookups
12308 where lookup_type = DECODE(p_item_type,
12309 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12310 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12311 and lookup_code = p_activity_name;
12312
12313 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
12314 fnd_message.set_token('WF_ACT', l_user_activity_name);
12315 OE_MSG_PUB.ADD;
12316 oe_debug_pub.add(' Hold Not applied for All requested records');
12317 RAISE FND_API.G_EXC_ERROR;
12318 ELSIF l_sql_rowcount > 0 THEN
12319 SELECT count(*)
12320 into l_parent_count
12321 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12322 WHERE h.OPEN_FLAG = 'Y'
12323 and h.header_id = ol.header_id
12324 and ol.INVOICE_TO_ORG_ID = p_hold_source_rec.hold_entity_id
12325 and ol.OPEN_FLAG = 'Y'
12326 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
12327 and not exists ( select 'x'
12328 from oe_order_holds_ALL oh
12329 where oh.header_id = h.header_id
12330 and oh.line_id = ol.line_id
12331 and oh.hold_source_id =
12332 p_hold_source_rec.hold_source_id );
12333
12334 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
12335
12336 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
12337
12338 select meaning into l_user_activity_name
12339 from oe_lookups
12340 where lookup_type = DECODE(p_item_type,
12341 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12342 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12343 and lookup_code = p_activity_name;
12344
12345 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
12346 fnd_message.set_token('WF_ACT', l_user_activity_name);
12347 OE_MSG_PUB.ADD;
12348 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
12349 END IF;
12350 END IF;
12351 END IF;
12352 END IF;
12353 ER#7479609 end*/
12354
12355 /*********************************************************
12356 HOLD CRITERIA 1 : SHIP TO SITE
12357 *********************************************************/
12358
12359 ELSIF p_hold_source_rec.hold_entity_code = 'S'
12360 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
12361
12362 --ER#7479609 start
12363 l_hold_entity_where_clause := 'and ol.SHIP_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
12364
12365
12366 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for S');
12367 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
12368 ,p_line_id => p_hold_source_rec.line_id
12369 ,p_org_id => p_org_id
12370 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12371 ,p_item_type => p_item_type
12372 ,p_activity_name => l_activity_name
12373 ,p_activity_status => l_act_status
12374 ,p_additional_where_clause => l_additional_where_clause
12375 ,x_is_hold_applied => x_is_hold_applied);
12376 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for S');
12377 --ER#7479609 end
12378
12379 /*ER#7479609 start
12380 IF p_hold_source_rec.line_id IS NOT NULL THEN
12381 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12382 ( ORDER_HOLD_ID
12383 , LAST_UPDATE_DATE
12384 , LAST_UPDATED_BY
12385 , CREATION_DATE
12386 , CREATED_BY
12387 , LAST_UPDATE_LOGIN
12388 , HOLD_SOURCE_ID
12389 , HEADER_ID
12390 , LINE_ID
12391 , RELEASED_FLAG
12392 , ORG_ID
12393 )
12394 SELECT
12395 OE_ORDER_HOLDS_S.NEXTVAL
12396 , SYSDATE
12397 , :l_user_id
12398 , SYSDATE
12399 , :l_user_id
12400 , NULL
12401 , :hold_source_id
12402 , h.HEADER_ID
12403 , ol.line_id
12404 , ''N''
12405 , h.org_id --ER#7479609 :l_org_id
12406 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12407 WHERE h.OPEN_FLAG = ''Y''
12408 and h.org_id = :l_org_id --ER#7479609
12409 and h.header_id = ol.header_id
12410 and ol.line_id = :line_id
12411 and ol.SHIP_TO_ORG_ID = :hold_entity_id
12412 and ol.OPEN_FLAG = ''Y''
12413 -- QUOTING change
12414 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12415 and not exists ( select ''x''
12416 from oe_order_holds_ALL oh
12417 where oh.header_id = h.header_id
12418 and oh.line_id = ol.line_id
12419 and oh.hold_source_id =:hold_source_id )';
12420 IF p_item_type is not null and p_activity_name is not null then
12421 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12422 , wf_process_activities wpa
12423 where was.process_activity = wpa.instance_id
12424 and item_type = :p_item_type
12425 and item_key = to_char(ol.line_id)
12426 and activity_name = :l_activity_name
12427 and activity_status = :l_activity_status)';
12428 END IF;
12429 IF l_additional_where_clause = 'PICK_TRUE' THEN
12430 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12431 where w.source_line_id = ol.line_id
12432 and w.source_code = ''OE''
12433 and w.released_status in (''Y'', ''C''))';
12434 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12435 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12436 where wdd.source_line_id = ol.LINE_ID
12437 and wdd.source_code = ''OE''
12438 and wda.delivery_detail_id = wdd.delivery_detail_id
12439 and wda.parent_delivery_detail_id is not null)';
12440 END IF;
12441 IF p_item_type is null and p_activity_name is null then
12442 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12443 ELSE
12444 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12445 IF sql%rowcount = 0 THEN
12446 x_is_hold_applied := FALSE;
12447 ELSIF sql%rowcount = 1 THEN
12448 x_is_hold_applied := TRUE;
12449 END IF;
12450 END IF;
12451 ELSE
12452 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12453 ( ORDER_HOLD_ID
12454 , LAST_UPDATE_DATE
12455 , LAST_UPDATED_BY
12456 , CREATION_DATE
12457 , CREATED_BY
12458 , LAST_UPDATE_LOGIN
12459 , HOLD_SOURCE_ID
12460 , HEADER_ID
12461 , LINE_ID
12462 , RELEASED_FLAG
12463 , ORG_ID
12464 )
12465 SELECT
12466 OE_ORDER_HOLDS_S.NEXTVAL
12467 , SYSDATE
12468 , :l_user_id
12469 , SYSDATE
12470 , :l_user_id
12471 , NULL
12472 , :hold_source_id
12473 , h.HEADER_ID
12474 , ol.line_id
12475 , ''N''
12476 , h.org_id --ER#7479609 :l_org_id
12477 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12478 WHERE h.OPEN_FLAG = ''Y''
12479 and h.org_id = :l_org_id --ER#7479609
12480 and h.header_id = ol.header_id
12481 and ol.SHIP_TO_ORG_ID = :hold_entity_id
12482 and ol.OPEN_FLAG = ''Y''
12483 -- QUOTING change
12484 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12485 and not exists ( select ''x''
12486 from oe_order_holds_ALL oh
12487 where oh.header_id = h.header_id
12488 and oh.line_id = ol.line_id
12489 and oh.hold_source_id =:hold_source_id )';
12490 IF p_item_type is not null and p_activity_name is not null then
12491 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12492 , wf_process_activities wpa
12493 where was.process_activity = wpa.instance_id
12494 and item_type = :p_item_type
12495 and item_key = to_char(ol.line_id)
12496 and activity_name = :l_activity_name
12497 and activity_status = :l_activity_status)';
12498 END IF;
12499 IF l_additional_where_clause = 'PICK_TRUE' THEN
12500 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12501 where w.source_line_id = ol.line_id
12502 and w.source_code = ''OE''
12503 and w.released_status in (''Y'', ''C''))';
12504 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12505 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12506 where wdd.source_line_id = ol.LINE_ID
12507 and wdd.source_code = ''OE''
12508 and wda.delivery_detail_id = wdd.delivery_detail_id
12509 and wda.parent_delivery_detail_id is not null)';
12510 END IF;
12511 IF p_item_type is null and p_activity_name is null then
12512 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12513 ELSE
12514 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12515 l_sql_rowcount := sql%rowcount;
12516 IF l_sql_rowcount = 0 THEN
12517
12518 select meaning into l_user_activity_name
12519 from oe_lookups
12520 where lookup_type = DECODE(p_item_type,
12521 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12522 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12523 and lookup_code = p_activity_name;
12524
12525 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
12526 fnd_message.set_token('WF_ACT', l_user_activity_name);
12527 OE_MSG_PUB.ADD;
12528 oe_debug_pub.add(' Hold Not applied for All requested records');
12529 RAISE FND_API.G_EXC_ERROR;
12530 ELSIF l_sql_rowcount > 0 THEN
12531 SELECT count(*)
12532 into l_parent_count
12533 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12534 WHERE h.OPEN_FLAG = 'Y'
12535 and h.header_id = ol.header_id
12536 and ol.SHIP_TO_ORG_ID = p_hold_source_rec.hold_entity_id
12537 and ol.OPEN_FLAG = 'Y'
12538 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
12539 and not exists ( select 'x'
12540 from oe_order_holds_ALL oh
12541 where oh.header_id = h.header_id
12542 and oh.line_id = ol.line_id
12543 and oh.hold_source_id =
12544 p_hold_source_rec.hold_source_id );
12545
12546 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
12547
12548 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
12549
12550 select meaning into l_user_activity_name
12551 from oe_lookups
12552 where lookup_type = DECODE(p_item_type,
12553 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12554 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12555 and lookup_code = p_activity_name;
12556
12557 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
12558 fnd_message.set_token('WF_ACT', l_user_activity_name);
12559 OE_MSG_PUB.ADD;
12560 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
12561 END IF;
12562 END IF;
12563 END IF;
12564 END IF;
12565 ER#7479609 end*/
12566 /*********************************************************
12567 HOLD CRITERIA 1 : WAREHOUSE
12568 *********************************************************/
12569
12570 ELSIF p_hold_source_rec.hold_entity_code = 'W'
12571 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
12572
12573 --ER#7479609 start
12574 l_hold_entity_where_clause := 'and ol.SHIP_FROM_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
12575
12576
12577 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for W');
12578 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
12579 ,p_line_id => p_hold_source_rec.line_id
12580 ,p_org_id => p_org_id
12581 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12582 ,p_item_type => p_item_type
12583 ,p_activity_name => l_activity_name
12584 ,p_activity_status => l_act_status
12585 ,p_additional_where_clause => l_additional_where_clause
12586 ,x_is_hold_applied => x_is_hold_applied);
12587 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for W');
12588 --ER#7479609 end
12589
12590 /*ER#7479609 start
12591 IF p_hold_source_rec.line_id IS NOT NULL THEN
12592 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12593 ( ORDER_HOLD_ID
12594 , LAST_UPDATE_DATE
12595 , LAST_UPDATED_BY
12596 , CREATION_DATE
12597 , CREATED_BY
12598 , LAST_UPDATE_LOGIN
12599 , HOLD_SOURCE_ID
12600 , HEADER_ID
12601 , LINE_ID
12602 , RELEASED_FLAG
12603 , ORG_ID
12604 )
12605 SELECT
12606 OE_ORDER_HOLDS_S.NEXTVAL
12607 , SYSDATE
12608 , :l_user_id
12609 , SYSDATE
12610 , :l_user_id
12611 , NULL
12612 , :hold_source_id
12613 , h.HEADER_ID
12614 , ol.line_id
12615 , ''N''
12616 , h.org_id --ER#7479609 :l_org_id
12617 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12618 WHERE h.OPEN_FLAG = ''Y''
12619 and h.org_id = :l_org_id --ER#7479609
12620 and h.header_id = ol.header_id
12621 and ol.line_id = :line_id
12622 and ol.SHIP_FROM_ORG_ID = :hold_entity_id
12623 and ol.OPEN_FLAG = ''Y''
12624 -- QUOTING change
12625 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12626 and not exists ( select ''x''
12627 from oe_order_holds_ALL oh
12628 where oh.header_id = h.header_id
12629 and oh.line_id = ol.line_id
12630 and oh.hold_source_id =:hold_source_id )';
12631 IF p_item_type is not null and p_activity_name is not null then
12632 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12633 , wf_process_activities wpa
12634 where was.process_activity = wpa.instance_id
12635 and item_type = :p_item_type
12636 and item_key = to_char(ol.line_id)
12637 and activity_name = :l_activity_name
12638 and activity_status = :l_activity_status)';
12639 END IF;
12640 IF l_additional_where_clause = 'PICK_TRUE' THEN
12641 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12642 where w.source_line_id = ol.line_id
12643 and w.source_code = ''OE''
12644 and w.released_status in (''Y'', ''C''))';
12645 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12646 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12647 where wdd.source_line_id = ol.LINE_ID
12648 and wdd.source_code = ''OE''
12649 and wda.delivery_detail_id = wdd.delivery_detail_id
12650 and wda.parent_delivery_detail_id is not null)';
12651 END IF;
12652 IF p_item_type is null and p_activity_name is null then
12653 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12654 ELSE
12655 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12656 IF sql%rowcount = 0 THEN
12657 x_is_hold_applied := FALSE;
12658 ELSIF sql%rowcount = 1 THEN
12659 x_is_hold_applied := TRUE;
12660 END IF;
12661 END IF;
12662 ELSE
12663 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12664 ( ORDER_HOLD_ID
12665 , LAST_UPDATE_DATE
12666 , LAST_UPDATED_BY
12667 , CREATION_DATE
12668 , CREATED_BY
12669 , LAST_UPDATE_LOGIN
12670 , HOLD_SOURCE_ID
12671 , HEADER_ID
12672 , LINE_ID
12673 , RELEASED_FLAG
12674 , ORG_ID
12675 )
12676 SELECT
12677 OE_ORDER_HOLDS_S.NEXTVAL
12678 , SYSDATE
12679 , :l_user_id
12680 , SYSDATE
12681 , :l_user_id
12682 , NULL
12683 , :hold_source_id
12684 , h.HEADER_ID
12685 , ol.line_id
12686 , ''N''
12687 , h.org_id --ER#7479609 :l_org_id
12688 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12689 WHERE h.OPEN_FLAG = ''Y''
12690 and h.org_id = :l_org_id --ER#7479609
12691 and h.header_id = ol.header_id
12692 and ol.SHIP_FROM_ORG_ID = :hold_entity_id
12693 and ol.OPEN_FLAG = ''Y''
12694 -- QUOTING change
12695 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12696 and not exists ( select ''x''
12697 from oe_order_holds_ALL oh
12698 where oh.header_id = h.header_id
12699 and oh.line_id = ol.line_id
12700 and oh.hold_source_id =:hold_source_id )';
12701 IF p_item_type is not null and p_activity_name is not null then
12702 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12703 , wf_process_activities wpa
12704 where was.process_activity = wpa.instance_id
12705 and item_type = :p_item_type
12706 and item_key = to_char(ol.line_id)
12707 and activity_name = :l_activity_name
12708 and activity_status = :l_activity_status)';
12709 END IF;
12710 IF l_additional_where_clause = 'PICK_TRUE' THEN
12711 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12712 where w.source_line_id = ol.line_id
12713 and w.source_code = ''OE''
12714 and w.released_status in (''Y'', ''C''))';
12715 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12716 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12717 where wdd.source_line_id = ol.LINE_ID
12718 and wdd.source_code = ''OE''
12719 and wda.delivery_detail_id = wdd.delivery_detail_id
12720 and wda.parent_delivery_detail_id is not null)';
12721 END IF;
12722 IF p_item_type is null and p_activity_name is null then
12723 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12724 ELSE
12725 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12726 l_sql_rowcount := sql%rowcount;
12727 IF l_sql_rowcount = 0 THEN
12728
12729 select meaning into l_user_activity_name
12730 from oe_lookups
12731 where lookup_type = DECODE(p_item_type,
12732 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12733 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12734 and lookup_code = p_activity_name;
12735
12736 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
12737 fnd_message.set_token('WF_ACT', l_user_activity_name);
12738 OE_MSG_PUB.ADD;
12739 oe_debug_pub.add(' Hold Not applied for All requested records');
12740 RAISE FND_API.G_EXC_ERROR;
12741 ELSIF l_sql_rowcount > 0 THEN
12742 SELECT count(*)
12743 into l_parent_count
12744 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12745 WHERE h.OPEN_FLAG = 'Y'
12746 and h.header_id = ol.header_id
12747 and ol.SHIP_FROM_ORG_ID = p_hold_source_rec.hold_entity_id
12748 and ol.OPEN_FLAG = 'Y'
12749 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
12750 and not exists ( select 'x'
12751 from oe_order_holds_ALL oh
12752 where oh.header_id = h.header_id
12753 and oh.line_id = ol.line_id
12754 and oh.hold_source_id =
12755 p_hold_source_rec.hold_source_id );
12756
12757 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
12758
12759 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
12760
12761 select meaning into l_user_activity_name
12762 from oe_lookups
12763 where lookup_type = DECODE(p_item_type,
12764 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12765 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12766 and lookup_code = p_activity_name;
12767
12768 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
12769 fnd_message.set_token('WF_ACT', l_user_activity_name);
12770 OE_MSG_PUB.ADD;
12771 oe_debug_pub.add(' Hold Not applied for FEW of the requested records');
12772 END IF;
12773 END IF;
12774 END IF;
12775 END IF;
12776 ER#7479609 end*/
12777 /*********************************************************
12778 HOLD CRITERIA 1 : ITEM
12779 *********************************************************/
12780
12781 ELSIF p_hold_source_rec.hold_entity_code = 'I'
12782 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
12783
12784 --ER#7479609 start
12785 l_hold_entity_where_clause := 'and ol.INVENTORY_ITEM_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
12786
12787
12788 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for I');
12789 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
12790 ,p_line_id => p_hold_source_rec.line_id
12791 ,p_org_id => p_org_id
12792 ,p_hold_entity_where_clause => l_hold_entity_where_clause
12793 ,p_item_type => p_item_type
12794 ,p_activity_name => l_activity_name
12795 ,p_activity_status => l_act_status
12796 ,p_additional_where_clause => l_additional_where_clause
12797 ,x_is_hold_applied => x_is_hold_applied);
12798 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for I');
12799 --ER#7479609 end
12800
12801 /*ER#7479609 start
12802 IF p_hold_source_rec.line_id IS NOT NULL THEN
12803 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12804 ( ORDER_HOLD_ID
12805 , LAST_UPDATE_DATE
12806 , LAST_UPDATED_BY
12807 , CREATION_DATE
12808 , CREATED_BY
12809 , LAST_UPDATE_LOGIN
12810 , HOLD_SOURCE_ID
12811 , HEADER_ID
12812 , LINE_ID
12813 , RELEASED_FLAG
12814 , ORG_ID
12815 )
12816 SELECT
12817 OE_ORDER_HOLDS_S.NEXTVAL
12818 , SYSDATE
12819 , :l_user_id
12820 , SYSDATE
12821 , :l_user_id
12822 , NULL
12823 , :hold_source_id
12824 , h.HEADER_ID
12825 , ol.line_id
12826 , ''N''
12827 , h.org_id --ER#7479609 :l_org_id
12828 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12829 WHERE h.OPEN_FLAG = ''Y''
12830 and h.org_id = :l_org_id --ER#7479609
12831 and h.header_id = ol.header_id
12832 and ol.line_id = :line_id
12833 and ol.INVENTORY_ITEM_ID = :hold_entity_id
12834 and ol.OPEN_FLAG = ''Y''
12835 -- QUOTING change
12836 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12837 and not exists ( select ''x''
12838 from oe_order_holds_ALL oh
12839 where oh.header_id = h.header_id
12840 and oh.line_id = ol.line_id
12841 and oh.hold_source_id =:hold_source_id )';
12842 IF p_item_type is not null and p_activity_name is not null then
12843 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12844 , wf_process_activities wpa
12845 where was.process_activity = wpa.instance_id
12846 and item_type = :p_item_type
12847 and item_key = to_char(ol.line_id)
12848 and activity_name = :l_activity_name
12849 and activity_status = :l_activity_status)';
12850 END IF;
12851 IF l_additional_where_clause = 'PICK_TRUE' THEN
12852 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12853 where w.source_line_id = ol.line_id
12854 and w.source_code = ''OE''
12855 and w.released_status in (''Y'', ''C''))';
12856 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12857 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12858 where wdd.source_line_id = ol.LINE_ID
12859 and wdd.source_code = ''OE''
12860 and wda.delivery_detail_id = wdd.delivery_detail_id
12861 and wda.parent_delivery_detail_id is not null)';
12862 END IF;
12863 IF p_item_type is null and p_activity_name is null then
12864 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12865 ELSE
12866 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.line_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12867 IF sql%rowcount = 0 THEN
12868 x_is_hold_applied := FALSE;
12869 ELSIF sql%rowcount = 1 THEN
12870 x_is_hold_applied := TRUE;
12871 END IF;
12872 END IF;
12873
12874 ELSE
12875 l_sqlmt := 'INSERT INTO OE_ORDER_HOLDS_ALL
12876 ( ORDER_HOLD_ID
12877 , LAST_UPDATE_DATE
12878 , LAST_UPDATED_BY
12879 , CREATION_DATE
12880 , CREATED_BY
12881 , LAST_UPDATE_LOGIN
12882 , HOLD_SOURCE_ID
12883 , HEADER_ID
12884 , LINE_ID
12885 , RELEASED_FLAG
12886 , ORG_ID
12887 )
12888 SELECT
12889 OE_ORDER_HOLDS_S.NEXTVAL
12890 , SYSDATE
12891 , :l_user_id
12892 , SYSDATE
12893 , :l_user_id
12894 , NULL
12895 , :hold_source_id
12896 , h.HEADER_ID
12897 , ol.line_id
12898 , ''N''
12899 , h.org_id --ER#7479609 :l_org_id
12900 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12901 WHERE h.OPEN_FLAG = ''Y''
12902 and h.org_id = :l_org_id --ER#7479609
12903 and h.header_id = ol.header_id
12904 and ol.INVENTORY_ITEM_ID = :hold_entity_id
12905 and ol.OPEN_FLAG = ''Y''
12906 -- QUOTING change
12907 and nvl(h.TRANSACTION_PHASE_CODE,''F'') = ''F''
12908 and not exists ( select ''x''
12909 from oe_order_holds_ALL oh
12910 where oh.header_id = h.header_id
12911 and oh.line_id = ol.line_id
12912 and oh.hold_source_id =:hold_source_id )';
12913 IF p_item_type is not null and p_activity_name is not null then
12914 l_sqlmt := l_sqlmt||' and not exists (select 1 from wf_item_activity_statuses was
12915 , wf_process_activities wpa
12916 where was.process_activity = wpa.instance_id
12917 and item_type = :p_item_type
12918 and item_key = to_char(ol.line_id)
12919 and activity_name = :l_activity_name
12920 and activity_status = :l_activity_status)';
12921 END IF;
12922 IF l_additional_where_clause = 'PICK_TRUE' THEN
12923 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details w
12924 where w.source_line_id = ol.line_id
12925 and w.source_code = ''OE''
12926 and w.released_status in (''Y'', ''C''))';
12927 ELSIF l_additional_where_clause = 'PACK_TRUE' THEN
12928 l_sqlmt := l_sqlmt||' and not exists (select 1 from wsh_delivery_details wdd, wsh_delivery_assignments wda
12929 where wdd.source_line_id = ol.LINE_ID
12930 and wdd.source_code = ''OE''
12931 and wda.delivery_detail_id = wdd.delivery_detail_id
12932 and wda.parent_delivery_detail_id is not null)';
12933 END IF;
12934 IF p_item_type is null and p_activity_name is null then
12935 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id, p_hold_source_rec.hold_source_id;
12936 ELSE
12937 execute immediate l_sqlmt using l_user_id, l_user_id, p_hold_source_rec.hold_source_id, p_org_id, p_hold_source_rec.hold_entity_id , p_hold_source_rec.hold_source_id, 'OEOL', l_activity_name, l_act_status;
12938 l_sql_rowcount := sql%rowcount;
12939 IF l_sql_rowcount = 0 THEN
12940
12941 select meaning into l_user_activity_name
12942 from oe_lookups
12943 where lookup_type = DECODE(p_item_type,
12944 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12945 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12946 and lookup_code = p_activity_name;
12947
12948 fnd_message.set_name('ONT', 'OE_NO_HOLD_ALL_LINES');
12949 fnd_message.set_token('WF_ACT', l_user_activity_name);
12950 OE_MSG_PUB.ADD;
12951 RAISE FND_API.G_EXC_ERROR;
12952 ELSIF l_sql_rowcount > 0 THEN
12953 SELECT count(*)
12954 into l_parent_count
12955 FROM OE_ORDER_HEADERS_ALL h, OE_ORDER_LINES_ALL ol
12956 WHERE h.OPEN_FLAG = 'Y'
12957 and h.header_id = ol.header_id
12958 and ol.INVENTORY_ITEM_ID = p_hold_source_rec.hold_entity_id
12959 and ol.OPEN_FLAG = 'Y'
12960 and nvl(h.TRANSACTION_PHASE_CODE,'F') = 'F'
12961 and not exists ( select 'x'
12962 from oe_order_holds_ALL oh
12963 where oh.header_id = h.header_id
12964 and oh.line_id = ol.line_id
12965 and oh.hold_source_id =
12966 p_hold_source_rec.hold_source_id );
12967
12968 -- Note: The above query is used based on WHERE clause of the l_sqlmt but without any query on Workflow or Shipping product tables.
12969
12970 IF l_sql_rowcount < (l_parent_count+l_sql_rowcount) THEN
12971
12972 select meaning into l_user_activity_name
12973 from oe_lookups
12974 where lookup_type = DECODE(p_item_type,
12975 OE_GLOBALS.G_WFI_HDR, 'HOLDABLE_HEADER_ACTIVITIES',
12976 OE_GLOBALS.G_WFI_LIN, 'HOLDABLE_LINE_ACTIVITIES', '-XX')
12977 and lookup_code = p_activity_name;
12978
12979 fnd_message.set_name('ONT', 'OE_NO_HOLD_FEW_LINES');
12980 fnd_message.set_token('WF_ACT', l_user_activity_name);
12981 OE_MSG_PUB.ADD;
12982
12983 END IF;
12984 END IF;
12985 END IF;
12986 END IF;
12987 ER#7479609 end*/
12988
12989 --ER#7479609 start
12990 ELSIF p_hold_source_rec.hold_entity_code = 'PR' and
12991 p_hold_source_rec.hold_entity_code2 = 'T' THEN
12992
12993 l_hold_entity_where_clause := 'and ol.PROJECT_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
12994 ||' and ol.TASK_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
12995
12996
12997 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for PR and T');
12998 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
12999 ,p_line_id => p_hold_source_rec.line_id
13000 ,p_org_id => p_org_id
13001 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13002 ,p_item_type => p_item_type
13003 ,p_activity_name => l_activity_name
13004 ,p_activity_status => l_act_status
13005 ,p_additional_where_clause => l_additional_where_clause
13006 ,x_is_hold_applied => x_is_hold_applied);
13007 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for PR and T');
13008 --ER#7479609 end
13009
13010 --ER#7479609 start
13011 ELSIF p_hold_source_rec.hold_entity_code = 'PR' and
13012 p_hold_source_rec.hold_entity_code2 IS NULL THEN
13013
13014 l_hold_entity_where_clause := 'and ol.PROJECT_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
13015
13016
13017 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for PR and T');
13018 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13019 ,p_line_id => p_hold_source_rec.line_id
13020 ,p_org_id => p_org_id
13021 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13022 ,p_item_type => p_item_type
13023 ,p_activity_name => l_activity_name
13024 ,p_activity_status => l_act_status
13025 ,p_additional_where_clause => l_additional_where_clause
13026 ,x_is_hold_applied => x_is_hold_applied);
13027 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for PR and T');
13028 --ER#7479609 end
13029
13030
13031 --ER#7479609 start
13032 ELSIF p_hold_source_rec.hold_entity_code = 'PL' and
13033 p_hold_source_rec.hold_entity_code2 = 'TC' THEN
13034
13035 l_hold_entity_where_clause := 'and h.PRICE_LIST_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
13036 ||' and h.TRANSACTIONAL_CURR_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
13037
13038
13039 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for PL and TC');
13040 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
13041 ,p_header_id =>p_hold_source_rec.header_id
13042 ,p_org_id => p_org_id
13043 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13044 ,p_item_type => p_item_type
13045 ,p_activity_name => l_activity_name
13046 ,p_activity_status => l_act_status
13047 ,p_additional_where_clause => l_additional_where_clause
13048 ,x_is_hold_applied => x_is_hold_applied);
13049 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for PR and T');
13050 --ER#7479609 end
13051
13052
13053 --ER#7479609 start
13054 ELSIF p_hold_source_rec.hold_entity_code = 'PL' and
13055 p_hold_source_rec.hold_entity_code2 IS NULL THEN
13056
13057 l_hold_entity_where_clause := 'and h.PRICE_LIST_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
13058
13059
13060 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for PL and TC');
13061 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
13062 ,p_header_id =>p_hold_source_rec.header_id
13063 ,p_org_id => p_org_id
13064 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13065 ,p_item_type => p_item_type
13066 ,p_activity_name => l_activity_name
13067 ,p_activity_status => l_act_status
13068 ,p_additional_where_clause => l_additional_where_clause
13069 ,x_is_hold_applied => x_is_hold_applied);
13070 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for PR and T');
13071 --ER#7479609 end
13072
13073 --ER#7479609 start
13074 ELSIF p_hold_source_rec.hold_entity_code = 'OT' and
13075 p_hold_source_rec.hold_entity_code2 = 'LT' THEN
13076
13077 l_hold_entity_where_clause := 'and h.ORDER_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
13078 ||' and ol.LINE_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id2||'''';
13079
13080
13081 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for OT and LT');
13082 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13083 ,p_line_id => p_hold_source_rec.line_id
13084 ,p_org_id => p_org_id
13085 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13086 ,p_item_type => p_item_type
13087 ,p_activity_name => l_activity_name
13088 ,p_activity_status => l_act_status
13089 ,p_additional_where_clause => l_additional_where_clause
13090 ,x_is_hold_applied => x_is_hold_applied);
13091 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for OT and LT');
13092 --ER#7479609 end
13093
13094 --ER#7479609 start
13095 ELSIF p_hold_source_rec.hold_entity_code = 'OT' and
13096 p_hold_source_rec.hold_entity_code2 = 'TC' THEN
13097
13098 l_hold_entity_where_clause := 'and h.ORDER_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id||''''
13099 ||' and h.TRANSACTIONAL_CURR_CODE = '||''''||p_hold_source_rec.hold_entity_id2||'''';
13100
13101
13102 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Header for OT and TC');
13103 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
13104 ,p_header_id =>p_hold_source_rec.header_id
13105 ,p_org_id => p_org_id
13106 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13107 ,p_item_type => p_item_type
13108 ,p_activity_name => l_activity_name
13109 ,p_activity_status => l_act_status
13110 ,p_additional_where_clause => l_additional_where_clause
13111 ,x_is_hold_applied => x_is_hold_applied);
13112 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Header for OT and TC');
13113 --ER#7479609 end
13114
13115 --ER#7479609 start
13116 ELSIF p_hold_source_rec.hold_entity_code = 'OT' and
13117 p_hold_source_rec.hold_entity_code2 IS NULL THEN
13118
13119 l_hold_entity_where_clause := 'and h.ORDER_TYPE_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
13120
13121
13122 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Header for OT and TC');
13123 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
13124 ,p_header_id =>p_hold_source_rec.header_id
13125 ,p_org_id => p_org_id
13126 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13127 ,p_item_type => p_item_type
13128 ,p_activity_name => l_activity_name
13129 ,p_activity_status => l_act_status
13130 ,p_additional_where_clause => l_additional_where_clause
13131 ,x_is_hold_applied => x_is_hold_applied);
13132 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Header for OT and TC');
13133 --ER#7479609 end
13134
13135
13136 --ER#7479609 start
13137 ELSIF p_hold_source_rec.hold_entity_code = 'CD' and
13138 p_hold_source_rec.hold_entity_code2 = 'CB' THEN
13139
13140 l_hold_entity_where_clause := 'and to_char(ol.CREATION_DATE,''DD-MON-RRRR'') = '||''''||p_hold_source_rec.hold_entity_id||''''
13141 ||' and ol.CREATED_BY = '||''''||p_hold_source_rec.hold_entity_id2||'''';
13142
13143
13144 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for CD and CB');
13145 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13146 ,p_line_id => p_hold_source_rec.line_id
13147 ,p_org_id => p_org_id
13148 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13149 ,p_item_type => p_item_type
13150 ,p_activity_name => l_activity_name
13151 ,p_activity_status => l_act_status
13152 ,p_additional_where_clause => l_additional_where_clause
13153 ,x_is_hold_applied => x_is_hold_applied);
13154 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for CD and CB');
13155 --ER#7479609 end
13156
13157 --ER#7479609 start
13158 ELSIF p_hold_source_rec.hold_entity_code = 'CD' and
13159 p_hold_source_rec.hold_entity_code2 IS NULL THEN
13160
13161 l_hold_entity_where_clause := 'and to_char(ol.CREATION_DATE,''DD-MON-RRRR'') = '||''''||p_hold_source_rec.hold_entity_id||'''';
13162
13163
13164 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for CD');
13165 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13166 ,p_line_id => p_hold_source_rec.line_id
13167 ,p_org_id => p_org_id
13168 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13169 ,p_item_type => p_item_type
13170 ,p_activity_name => l_activity_name
13171 ,p_activity_status => l_act_status
13172 ,p_additional_where_clause => l_additional_where_clause
13173 ,x_is_hold_applied => x_is_hold_applied);
13174 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for CD');
13175 --ER#7479609 end
13176
13177
13178 --ER#7479609 start
13179 ELSIF p_hold_source_rec.hold_entity_code = 'SC'
13180 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
13181
13182 l_hold_entity_where_clause := 'and h.SALES_CHANNEL_CODE = '||''''||p_hold_source_rec.hold_entity_id||'''';
13183
13184
13185 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for SC');
13186 InsertTable_OOH_Header (p_hold_source_id => p_hold_source_rec.hold_source_id
13187 ,p_header_id =>p_hold_source_rec.header_id
13188 ,p_org_id => p_org_id
13189 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13190 ,p_item_type => p_item_type
13191 ,p_activity_name => l_activity_name
13192 ,p_activity_status => l_act_status
13193 ,p_additional_where_clause => l_additional_where_clause
13194 ,x_is_hold_applied => x_is_hold_applied);
13195 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for SC');
13196 --ER#7479609 end
13197
13198 --ER#7479609 start
13199 ELSIF p_hold_source_rec.hold_entity_code = 'P'
13200 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
13201
13202
13203 OE_DEBUG_PUB.ADD('Calling PaymentType_Hold for P');
13204 PaymentType_Hold (p_hold_source_rec => p_hold_source_rec
13205 ,p_org_id => p_org_id
13206 ,p_item_type => p_item_type
13207 ,p_activity_name => l_activity_name
13208 ,p_activity_status => l_activity_name
13209 ,p_additional_where_clause => l_additional_where_clause
13210 ,x_is_hold_applied => x_is_hold_applied);
13211
13212 --ER#7479609 start
13213 IF NOT x_is_hold_applied THEN
13214 x_return_status := 'PAY_HOLD_NA';
13215 END IF;
13216 --ER#7479609 end
13217
13218 OE_DEBUG_PUB.ADD('After Calling PaymentType_Hold for P');
13219 --ER#7479609 end
13220
13221 --ER#7479609 start
13222 ELSIF p_hold_source_rec.hold_entity_code = 'SM'
13223 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
13224
13225 l_hold_entity_where_clause := 'and ol.SHIPPING_METHOD_CODE = '||''''||p_hold_source_rec.hold_entity_id||'''';
13226
13227
13228 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for SM');
13229 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13230 ,p_line_id => p_hold_source_rec.line_id
13231 ,p_org_id => p_org_id
13232 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13233 ,p_item_type => p_item_type
13234 ,p_activity_name => l_activity_name
13235 ,p_activity_status => l_act_status
13236 ,p_additional_where_clause => l_additional_where_clause
13237 ,x_is_hold_applied => x_is_hold_applied);
13238 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for SM');
13239 --ER#7479609 end
13240
13241 --ER#7479609 start
13242 ELSIF p_hold_source_rec.hold_entity_code = 'D'
13243 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
13244
13245 --ER#7479609 start
13246 l_hold_entity_where_clause := 'and ol.DELIVER_TO_ORG_ID = '||''''||p_hold_source_rec.hold_entity_id||'''';
13247
13248
13249 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for D');
13250 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13251 ,p_line_id => p_hold_source_rec.line_id
13252 ,p_org_id => p_org_id
13253 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13254 ,p_item_type => p_item_type
13255 ,p_activity_name => l_activity_name
13256 ,p_activity_status => l_act_status
13257 ,p_additional_where_clause => l_additional_where_clause
13258 ,x_is_hold_applied => x_is_hold_applied);
13259 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for D');
13260 --ER#7479609 end
13261
13262
13263 --ER#7479609 start
13264 ELSIF p_hold_source_rec.hold_entity_code = 'TM'
13265 AND p_hold_source_rec.hold_entity_code2 IS NULL THEN
13266
13267 BEGIN
13268 l_line_id_tab.delete;
13269
13270 IF p_hold_source_rec.line_id IS NULL THEN
13271
13272 select line_id
13273 BULK COLLECT INTO l_line_id_tab
13274 from oe_order_lines_all
13275 where inventory_item_id=p_hold_source_rec.hold_entity_id
13276 and line_id=top_model_line_id
13277 and top_model_line_id IS NOT NULL;
13278
13279 ELSE
13280
13281 select line_id
13282 BULK COLLECT INTO l_line_id_tab
13283 from oe_order_lines_all
13284 where inventory_item_id=p_hold_source_rec.hold_entity_id
13285 and line_id=top_model_line_id
13286 and line_id=p_hold_source_rec.line_id
13287 and top_model_line_id IS NOT NULL;
13288
13289 END IF;
13290
13291 EXCEPTION
13292 WHEN OTHERS THEN
13293 NULL;
13294 END;
13295
13296
13297
13298 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for TM:'||l_line_id_tab.count);
13299
13300 FOR i in 1 .. l_line_id_tab.count LOOP
13301
13302 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13303 ,p_line_id => l_line_id_tab(i)
13304 ,p_org_id => p_org_id
13305 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13306 ,p_item_type => p_item_type
13307 ,p_activity_name => l_activity_name
13308 ,p_activity_status => l_act_status
13309 ,p_additional_where_clause => l_additional_where_clause
13310 ,x_is_hold_applied => x_is_hold_applied);
13311 END LOOP;
13312
13313 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for TM');
13314
13315 ELSIF p_hold_source_rec.hold_entity_code = 'TM'
13316 AND p_hold_source_rec.hold_entity_code2 = 'OI' THEN
13317
13318 BEGIN
13319 l_line_id_tab.delete;
13320
13321 IF p_hold_source_rec.line_id IS NULL THEN
13322
13323 select top_model_line_id
13324 BULK COLLECT INTO l_line_id_tab
13325 from oe_order_lines_all line_opt
13326 where line_opt.inventory_item_id=p_hold_source_rec.hold_entity_id2
13327 and line_opt.item_type_code in ('OPTION','CLASS','INCLUDED')
13328 and EXISTS (select 1 from oe_order_lines_all line_mod
13329 where line_mod.inventory_item_id=p_hold_source_rec.hold_entity_id
13330 and line_mod.line_id=line_opt.top_model_line_id);
13331 ELSE
13332
13333 select top_model_line_id
13334 BULK COLLECT INTO l_line_id_tab
13335 from oe_order_lines_all line_opt
13336 where line_opt.inventory_item_id=p_hold_source_rec.hold_entity_id2
13337 and line_opt.line_id=p_hold_source_rec.line_id
13338 and line_opt.item_type_code in ('OPTION','CLASS','INCLUDED')
13339 and EXISTS (select 1 from oe_order_lines_all line_mod
13340 where line_mod.inventory_item_id=p_hold_source_rec.hold_entity_id
13341 and line_mod.line_id=line_opt.top_model_line_id);
13342 END IF;
13343
13344 EXCEPTION
13345 WHEN OTHERS THEN
13346 NULL;
13347 END;
13348
13349
13350
13351 OE_DEBUG_PUB.ADD('Calling InsertTable_OOH_Line for TM and OI:'||l_line_id_tab.count);
13352
13353 FOR i in 1 .. l_line_id_tab.count LOOP
13354
13355 InsertTable_OOH_Line (p_hold_source_id => p_hold_source_rec.hold_source_id
13356 ,p_line_id => l_line_id_tab(i)
13357 ,p_org_id => p_org_id
13358 ,p_hold_entity_where_clause => l_hold_entity_where_clause
13359 ,p_item_type => p_item_type
13360 ,p_activity_name => l_activity_name
13361 ,p_activity_status => l_act_status
13362 ,p_additional_where_clause => l_additional_where_clause
13363 ,x_is_hold_applied => x_is_hold_applied);
13364 END LOOP;
13365
13366 OE_DEBUG_PUB.ADD('After Calling InsertTable_OOH_Line for TM and OI');
13367 --ER#7479609 end
13368
13369
13370 END IF;
13371
13372
13373 -- GENESIS --
13374 IF p_hold_source_rec.line_id IS NOT NULL THEN
13375
13376 IF l_debug_level > 0 THEN
13377 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - p_hold_source_rec.line_id IS NOT NULL');
13378 END IF;
13379
13380 OPEN check_line_hold_type_cur(p_hold_source_rec.line_id);
13381 FETCH check_line_hold_type_cur INTO l_check_hold;
13382 CLOSE check_line_hold_type_cur;
13383 IF l_debug_level > 0 THEN
13384 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - l_check_hold' || l_check_hold);
13385 END IF;
13386
13387 ELSIF p_hold_source_rec.line_id IS NULL AND
13388 p_hold_source_rec.header_id IS NOT NULL THEN
13389 IF l_debug_level > 0 THEN
13390 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - p_hold_source_rec.header_id IS NOT NULL');
13391 END IF;
13392 OPEN check_hdr_hold_type_cur(p_hold_source_rec.header_id);
13393 FETCH check_hdr_hold_type_cur INTO l_check_hold;
13394 CLOSE check_hdr_hold_type_cur;
13395 IF l_debug_level > 0 THEN
13396 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - l_check_hold' || l_check_hold);
13397 END IF;
13398
13399 ELSIF p_hold_source_rec.line_id IS NULL AND
13400 p_hold_source_rec.header_id IS NULL AND
13401 p_hold_source_rec.hold_source_id IS NOT NULL THEN
13402 IF l_debug_level > 0 THEN
13403 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - p_hold_source_rec.hold_source_id IS NOT NULL');
13404 END IF;
13405 OPEN check_src_hold_type_cur(p_hold_source_rec.hold_source_id);
13406 FETCH check_src_hold_type_cur INTO l_check_hold;
13407 CLOSE check_src_hold_type_cur;
13408
13409 IF l_debug_level > 0 THEN
13410 oe_debug_pub.add('OE_HOLDS_PVT-CREATE ORDER HOLDS - l_check_hold :' || l_check_hold);
13411 END IF;
13412
13413 END IF;
13414
13415 IF l_debug_level > 0 THEN
13416 oe_debug_pub.add( 'OE_HOLDS_PVT - CREATE ORDER HOLDS - BEFORE SYNC_HEADER_LINE');
13417 END IF;
13418
13419 IF NVL(l_check_hold, 'N') = 'Y' THEN
13420 IF l_debug_level > 0 THEN
13421 oe_debug_pub.add( 'OE_HOLDS_PVT - CREATE ORDER HOLDS - l_check_hold: ' || l_check_hold);
13422 END IF;
13423
13424 IF p_hold_source_rec.hold_entity_code = 'O' THEN
13425 IF l_debug_level > 0 THEN
13426 oe_debug_pub.add(' p_hold_source_rec.hold_entity_code ' || p_hold_source_rec.hold_entity_code);
13427 END IF;
13428 IF p_hold_source_rec.hold_entity_id is NOT NULL THEN
13429 IF l_debug_level > 0 THEN
13430 oe_debug_pub.add(' p_hold_source_rec.hold_entity_id : ' || p_hold_source_rec.hold_entity_id);
13431 END IF;
13432 oe_header_util.query_row ( p_header_id => p_hold_source_rec.hold_entity_id,
13433 x_header_rec => l_header_rec);
13434 END IF; -- p_hold_source_rec.hold_entity_id is NOT NULL
13435
13436 IF p_hold_source_rec.line_id is not NULL THEN
13437 IF l_debug_level > 0 THEN
13438 oe_debug_pub.add(' p_hold_source_rec.line_id : ' || p_hold_source_rec.line_id );
13439 END IF;
13440 oe_line_util.query_row(
13441 p_line_id => p_hold_source_rec.line_id
13442 ,x_line_rec => l_line_rec
13443 );
13444 END IF;
13445
13446 -- XXXX Do we need to generate req_id here
13447 OE_SYNC_ORDER_PVT.SYNC_HEADER_LINE(p_header_rec => l_header_rec
13448 ,p_line_rec => l_line_rec
13449 ,p_hold_source_id => p_hold_source_rec.hold_source_id
13450 ,p_change_type => 'APPLY');
13451
13452 ELSE --p_hold_source_rec.hold_entity_code = 'O'
13453
13454 IF l_debug_level > 0 THEN
13455 oe_debug_pub.add(' p_hold_source_rec.hold_entity_code ' || p_hold_source_rec.hold_entity_code);
13456 END IF;
13457
13458 IF p_hold_source_rec.header_id is NOT NULL THEN
13459 oe_header_util.query_row ( p_header_id => p_hold_source_rec.header_id,
13460 x_header_rec => l_header_rec);
13461 END IF;
13462 IF p_hold_source_rec.line_id is not NULL THEN
13463 oe_line_util.query_row(
13464 p_line_id => p_hold_source_rec.line_id
13465 ,x_line_rec => l_line_rec
13466 );
13467 END IF;
13468
13469 -- XXXX Do we need to generate req_id here
13470 OE_SYNC_ORDER_PVT.SYNC_HEADER_LINE(p_header_rec => l_header_rec
13471 ,p_line_rec => l_line_rec
13472 ,p_hold_source_id => p_hold_source_rec.hold_source_id
13473 ,p_change_type => 'APPLY');
13474 END IF; --p_hold_source_rec.hold_entity_code = 'O'
13475 END IF;
13476 -- GENESIS --
13477
13478 EXCEPTION
13479 WHEN FND_API.G_EXC_ERROR THEN
13480 --ROLLBACK TO APPLY_HOLDS_PUB;
13481 x_return_status := FND_API.G_RET_STS_ERROR;
13482 OE_MSG_PUB.Count_And_Get
13483 ( p_count => x_msg_count
13484 , p_data => x_msg_data
13485 );
13486 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
13487 --ROLLBACK TO APPLY_HOLDS_PUB;
13488 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13489 OE_MSG_PUB.Count_And_Get
13490 ( p_count => x_msg_count
13491 , p_data => x_msg_data
13492 );
13493 WHEN OTHERS THEN
13494 --ROLLBACK TO APPLY_HOLDS_PUB;
13495 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
13496 IF OE_MSG_PUB.Check_Msg_Level
13497 (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
13498 THEN
13499 OE_MSG_PUB.Add_Exc_Msg
13500 ( G_PKG_NAME
13501 , l_api_name
13502 );
13503 END IF;
13504 OE_MSG_PUB.Count_And_Get
13505 ( p_count => x_msg_count
13506 , p_data => x_msg_data
13507 );
13508
13509 END Create_Order_Holds;
13510
13511
13512 END OE_HOLDS_PVT;
13513