DBA Data[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