DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_DELAYED_REQUESTS_PVT

Source


1 PACKAGE BODY OE_Delayed_Requests_PVT AS
2 /* $Header: OEXVREQB.pls 120.25.12010000.5 2008/11/20 14:00:36 vbkapoor ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Delayed_Requests_PVT';
7 
8 g_requesting_entities  		OE_Order_PUB.Requesting_Entity_Tbl_Type;
9 G_MAX_REQUESTS                  NUMBER := 10000;
10 
11 /* Local Procedures */
12 /* Local procedure to check if a request exists for a given entity, request
13    return the result in p_request_search_result which is set to FND_API.G_TRUE
14    if the request exists. The index of the request in request table is returned
15    in parameter x_request_ind
16 
17    BUG 1794544 -
18    05/30/01: Changes to improve scalability of this search when there
19    is a large number of requests:
20 
21    The index value where the request is stored is a function of the
22    entity_id value (the function  was chosen to be 'mod' as this has
23    a high probability of resulting in a unique value as line ids are
24    generated sequentially). Therefore, this check would search only
25    through requests for the entity_id that resolves to the same
26    mod value.
27 
28    If the request does NOT exist, then x_result is set to FND_API.G_FALSE
29    and the parameter x_request_ind has the index value where this request
30    should be inserted.
31 */
32 
33 PROCEDURE Process_Scheduling_Request
34 ( p_request_ind    IN  NUMBER
35  ,p_request_rec    IN  OE_Order_PUB.request_rec_type
36 ,x_return_status OUT NOCOPY VARCHAR2);
37 
38 PROCEDURE Check_Pricing_Request
39 ( p_request_ind    IN  NUMBER
40  ,p_request_rec    IN  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.request_rec_type
41  ,x_log_request    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 );
43 
44 Procedure  Check_for_Request( p_entity_code    in Varchar2
45 			      ,p_entity_id     in Number
46 			      ,p_request_type  in Varchar2
47 			      ,p_request_unique_key1 	IN VARCHAR2
48 			      ,p_request_unique_key2 	IN VARCHAR2
49 			      ,p_request_unique_key3 	IN VARCHAR2
50 			      ,p_request_unique_key4 	IN VARCHAR2
51 			      ,p_request_unique_key5 	IN VARCHAR2
52 ,x_request_ind OUT NOCOPY Number
53 
54 ,x_result OUT NOCOPY Varchar2
55 
56 ,x_return_status OUT NOCOPY Varchar2)
57 
58 IS
59      l_ind	PLS_INTEGER;
60      l_max_ind  PLS_INTEGER;
61 --
62 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
63 --
64 BEGIN
65    x_return_status	:= FND_API.G_RET_STS_SUCCESS;
66    x_result		:= FND_API.G_FALSE;
67    IF l_debug_level > 0 THEN
68    oe_debug_pub.add('Entering Procedure Check_for_Request in Package OE_Delayed_Requests_Pvt');
69    END IF;
70    -- l_ind to l_max_ind is the range of index positions that can
71    -- hold requests for this entity id - for e.g. if entity_id is
72    -- 2341 and G_MAX_REQUESTS is 10000 then the range would be:
73    -- 23410001 - 23420000
74 
75    l_ind := (mod(p_entity_id,100000) * G_MAX_REQUESTS)+1;
76    l_max_ind := l_ind + G_MAX_REQUESTS - 1;
77 
78    --oe_debug_pub.add('Max Ind :'||l_max_ind);
79 
80    -- Starting from l_ind, search for the first index position
81    -- with a request. This is required as requests can be
82    -- deleted later which will result in indexes without any
83    -- requests. However, the search should still go over the
84    -- requests in the range from l_ind to l_max_ind.
85 
86    IF NOT G_Delayed_Requests.Exists(l_ind) THEN
87       x_request_ind := l_ind;
88       l_ind := G_Delayed_Requests.Next(l_ind);
89    END IF;
90 
91    WHILE G_Delayed_Requests.Exists(l_ind)
92          AND l_ind <= l_max_ind LOOP
93 
94         x_request_ind := l_ind+1;
95 
96         --oe_debug_pub.add('Index :'||l_ind);
97         --oe_debug_pub.add('Entity :'||G_Delayed_Requests(l_ind).Entity_code);
98         --oe_debug_pub.add('Entity ID:'||G_Delayed_Requests(l_ind).entity_id);
99         --oe_debug_pub.add('Request:'||G_Delayed_Requests(l_ind).request_type);
100 
101 	IF G_Delayed_Requests(l_ind).Entity_code = p_entity_code
102 	  AND
103 	  G_Delayed_Requests(l_ind).Entity_id = p_entity_id
104 	  AND
105 	  G_Delayed_Requests(l_ind).Request_Type = p_request_type
106 	  AND
107 	  NVL(G_Delayed_Requests(l_ind).request_unique_key1, FND_API.G_MISS_CHAR) =
108 	  	NVL(p_request_unique_key1, FND_API.G_MISS_CHAR)
109 	  AND
110 	  NVL(G_Delayed_Requests(l_ind).request_unique_key2, FND_API.G_MISS_CHAR) =
111 	  	NVL(p_request_unique_key2, FND_API.G_MISS_CHAR)
112 	  AND
113 	  NVL(G_Delayed_Requests(l_ind).request_unique_key3, FND_API.G_MISS_CHAR) =
114 	  	NVL(p_request_unique_key3, FND_API.G_MISS_CHAR)
115 	  AND
116 	  NVL(G_Delayed_Requests(l_ind).request_unique_key4, FND_API.G_MISS_CHAR) =
117 	  	NVL(p_request_unique_key4, FND_API.G_MISS_CHAR)
118 	  AND
119 	  NVL(G_Delayed_Requests(l_ind).request_unique_key5, FND_API.G_MISS_CHAR) =
120 	  	NVL(p_request_unique_key5, FND_API.G_MISS_CHAR)
121           AND NVL(G_Delayed_Requests(l_ind).processed,'N') = 'N'
122 	THEN
123 	   x_request_ind := l_ind;
124 	   x_result := FND_API.G_TRUE;
125 	   EXIT;
126 	END IF;
127 
128         l_ind := G_Delayed_Requests.Next(l_ind);
129 
130      END LOOP;
131 
132      IF x_request_ind > l_max_ind THEN
133         FND_MESSAGE.SET_NAME('ONT','OE_MAX_REQUESTS_EXCEEDED');
134         OE_MSG_PUB.ADD;
135         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
136      END IF;
137 
138 EXCEPTION
139    WHEN OTHERS THEN
140       IF OE_MSG_PUB.Check_MSg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
141 	THEN
142 	 OE_MSG_PUB.Add_Exc_Msg
143 	   (G_PKG_NAME
144 	    ,'CheckForRequest');
145       END IF;
146       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
147 
148 End Check_For_Request;
149 
150 FUNCTION Requests_Count
151 RETURN NUMBER
152 IS
153 BEGIN
154 
155 	RETURN G_Delayed_Requests.COUNT;
156 
157 END Requests_Count;
158 
159 PROCEDURE Process_Request_Pvt
160    (p_request_ind	IN Number
161    ,p_delete            IN Varchar2 default  FND_API.G_FALSE
162 ,x_return_status OUT NOCOPY VARCHAR2)
163 
164 IS
165 cursor included_lines_cur(p_header_id in number) is
166 select line_id
167 from oe_order_lines_all
168 where header_id = p_header_id
169 and item_type_code = 'INCLUDED';
170 
171 l_request_rec       OE_Order_PUB.request_rec_type;
172 l_request_type	VARCHAR2(30);
173 l_return_status	VARCHAR2(1);
174 l_entity_id	NUMBER;
175 l_entity_code	Varchar2(30);
176 l_req_entity_ind		number;
177 l_set_index     NUMBER;
178 l_set_request  OE_Order_PUB.request_tbl_type;
179 l_sch_set_tbl          OE_Order_PUB.request_tbl_type;
180 l_deleted_options_tbl  OE_Order_PUB.request_tbl_type;
181 l_updated_options_tbl  OE_Order_PUB.request_tbl_type;
182 l_index                NUMBER;
183 l_d_index              NUMBER;
184 l_u_index              NUMBER;
185 l_set                  VARCHAR2(2000);
186 K                      NUMBER;
187 l_cto_request_rec      OE_Order_PUB.request_rec_type;
188 l_cto_request_tbl      OE_Order_PUB.request_tbl_type;
189 l_cto_split_tbl        OE_Order_PUB.request_tbl_type;
190 l_cto_decimal_tbl      OE_Order_PUB.request_tbl_type;
191 l_line_Tbl 			OE_ORDER_PUB.line_Tbl_type;
192 l_prc_adj_request      OE_ORDER_PUB.request_tbl_type;
193 l_prc_adj_index NUMBER := 1;
194 I                      NUMBER := 1;
195 l_price_control_rec		QP_PREQ_GRP.control_record_type;
196 l_msg_count			NUMBER;
197 l_msg_data			VARCHAR2(2000);
198 l_entity_id_tbl    		Entity_Id_Tbl_Type;
199 j   number := 1;
200 l_unit_cost                     number; --MRG
201 l_count               NUMBER; --2391781
202 l_set_id              NUMBER := NULL; -- 2391781
203 payment_line_id       NUMBER;
204 payment_header_id     NUMBER;
205 old_invoice_to_org_id NUMBER; --R12 CC Encryption
206 
207 l_header_id      NUMBER; -- For IR ISO CMS Project
208 l_line_id        NUMBER; -- For IR ISO CMS Project
209 l_cancel_order   BOOLEAN := FALSE; -- For IR ISO CMS Project
210 --
211 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
212 --
213 
214 BEGIN
215  IF l_debug_level > 0 THEN
216       oe_debug_pub.add('Entering Procedure Process_Request_Pvt ',1);
217       oe_debug_pub.add('Request processed  '||G_Delayed_Requests(p_request_ind).processed);
218  END IF;
219       x_return_status := FND_API.G_RET_STS_SUCCESS;
220 
221 
222       -- if request has already been processed ('Y') or if the request is
223       -- being processed ('I'): this would occur if request resulted in
224       -- to a recursive call to process order (bug#1003821)
225       if  (G_Delayed_Requests(p_request_ind).processed = 'Y'
226 		OR G_Delayed_Requests(p_request_ind).processed = 'I')
227 	 then
228           RETURN;
229       end if;
230       l_request_rec :=  G_Delayed_Requests(p_request_ind);
231       l_entity_code    := l_request_rec.entity_code;
232       l_entity_Id      := l_request_rec.entity_Id;
233       l_request_type   := l_request_rec.request_type;
234  IF l_debug_level > 0 THEN
235       oe_debug_pub.add('Request type  '||l_request_type,1);
236       oe_debug_pub.add('Entity id     '||l_entity_id, 5);
237       oe_debug_pub.add('param1        '||l_request_rec.param1, 5);
238       oe_debug_pub.add('param2        '||l_request_rec.param2, 5);
239       oe_debug_pub.add('param3        '||l_request_rec.param3, 5);
240  END IF;
241           G_Delayed_Requests(p_request_ind).processed := 'I';
242 
243  IF l_debug_level > 0 THEN
244       IF OE_GLOBALS.G_CASCADING_REQUEST_LOGGED THEN
245          oe_debug_pub.add('cascade flag set to true');
246       ELSE
247          oe_debug_pub.add('cascade flag set to false');
248       END IF;
249  END IF;
250       -- Fix Bug 2062937: Do not set the cascade flag blindly for certain
251       -- delayed requests.
252       -- This will improve the performance of sales order form as lines
253       -- would not be re-queried if cascade flag is not set.
254       -- Requests for which cascade flag is not set:
255       -- 1) Pricing Integration will set the cascade flag only if order level
256       -- modifiers result in a change to attributes on any lines on this order.
257       -- 2) Verify Payment will set the cascade flag only if there are updates
258       -- back to the header for credit card payments.
259       -- 3) Apply Automatic Attachments: never results in an update back to order/lines.
260       -- NOTE: All other delayed requests also need to be evaluated so
261       -- that cascade flag is set in the request and not here.
262       IF OE_GLOBALS.G_PROCESS_OBJECTS_FLAG = TRUE THEN
263 
264          IF l_Request_type NOT IN ('RECORD_HISTORY'
265                             ,OE_GLOBALS.G_PRICE_ORDER
266                             ,OE_GLOBALS.G_PRICE_ADJ
267                             ,OE_GLOBALS.G_APPLY_AUTOMATIC_ATCHMT
268                             ,OE_GLOBALS.G_VERIFY_PAYMENT
269                             ,OE_GLOBALS.G_DFLT_HSCREDIT_FOR_SREP
270                             ,OE_GLOBALS.G_CHECK_HSC_QUOTA_TOTAL
271 			    ,OE_GLOBALS.G_GENERATE_XML_REQ_HDR
272 			    ,OE_GLOBALS.G_GENERATE_XML_REQ_LN)
273          THEN
274             IF l_debug_level > 0 THEN
275             oe_debug_pub.add('****** process_obj=>delayed req execution ****', 1);
276             END IF;
277             OE_GLOBALS.G_CASCADING_REQUEST_LOGGED := TRUE;
278          END IF;
279 
280       END IF;
281 
282 
283      IF l_Request_type = 'RECORD_HISTORY' THEN
284          NULL;
285      ELSIF l_request_type = OE_GLOBALS.G_CHECK_PERCENTAGE
286 	 THEN
287 
288 	 OE_DELAYED_REQUESTS_UTIL.check_percentage
289 			(p_request_rec	     => l_request_rec,
290 			 x_return_status     => l_return_status);
291 
292        ELSIF l_request_type = OE_GLOBALS.G_CHECK_DUPLICATE THEN
293 
294 	 OE_DELAYED_REQUESTS_UTIL.check_duplicate
295 			(p_request_rec	     => l_request_rec,
296 			 x_return_status     => l_return_status);
297 
298        ELSIF l_request_type = OE_GLOBALS.G_CANCEL_WF THEN
299 
300 	 OE_SALES_CAN_UTIL.Cancel_Wf
301 			(x_request_rec	     => l_request_rec,
302 			 x_return_status     => l_return_status);
303 
304        ELSIF l_request_type = OE_GLOBALS.G_CHECK_FIXED_PRICE
305 	 THEN
306 
307 	 OE_DELAYED_REQUESTS_UTIL.check_fixed_price
308 			(p_request_rec	     => l_request_rec,
309 			 x_return_status     => l_return_status);
310 
311        ELSIF l_request_type = OE_GLOBALS.G_PRICE_ADJ THEN
312  IF l_debug_level > 0 THEN
313 	   Oe_Debug_pub.Add('Before Executing Delayed request Price Adjustment for '||l_request_rec.entity_id);
314  END IF;
315 		/* 1905650
316 	           G_PRICE_ADJ request is now logged against LINE entity
317 	        */
318 	 	If l_entity_code = OE_GLOBALS.G_ENTITY_LINE Then
319 
320 			oe_order_adj_pvt.Price_Adjustments(
321 				X_Return_Status     => l_Return_Status
322 				,p_Header_id        => Null
323 				,p_Line_id          => l_request_rec.entity_id
324 				,p_request_type_code=> 'ONT'
325 				,p_request_rec      => l_request_rec
326 				);
327 		Else
328 			oe_order_adj_pvt.Price_Adjustments(
329 				X_Return_Status     => l_Return_Status
330 				,p_Header_id        => l_request_rec.entity_id
331 				,p_Line_id          => null
332 				,p_request_type_code=> 'ONT'
333 				,p_request_rec      => l_request_rec
334 				);
335 		End if;
336      IF l_debug_level > 0 THEN
337 	   	Oe_Debug_pub.Add('After Executing Delayed request Price Adj for '||l_request_rec.entity_id);
338      END IF;
339        ELSIF l_request_type =
340                         OE_GLOBALS.G_CHECK_HSC_QUOTA_TOTAL then
341            if l_entity_code = OE_GLOBALS.G_ENTITY_HEADER_SCREDIT
342             OR l_entity_code = OE_GLOBALS.G_ENTITY_ALL then   -- bug 5746190
343              OE_DELAYED_REQUESTS_UTIL.Validate_HSC_QUOTA_TOTAL
344                  ( x_return_status =>l_return_status
345                   ,p_header_id     =>to_number(l_request_rec.param1)
346                  );
347            end if;
348 
349        ELSIF l_request_type =
350                          OE_GLOBALS.G_CHECK_LSC_QUOTA_TOTAL then
351            if l_entity_code = OE_GLOBALS.G_ENTITY_Line_SCREDIT then
352              OE_DELAYED_REQUESTS_UTIL.Validate_LSC_QUOTA_TOTAL
353                  ( x_return_status =>l_return_status
354                   ,p_line_id     =>to_number(l_request_rec.param1)
355                  );
356            end if;
357 
358        ELSIF l_request_type =
359                          OE_GLOBALS.G_CHECK_LSC_QUOTA_TOTAL then
360            if l_entity_code = OE_GLOBALS.G_ENTITY_Line_SCREDIT then
361              OE_DELAYED_REQUESTS_UTIL.Validate_LSC_QUOTA_TOTAL
362                  ( x_return_status =>l_return_status
363                   ,p_line_id     =>to_number(l_request_rec.param1)
364                  );
365            end if;
366 
367        ELSIF l_request_type =
368                          OE_GLOBALS.G_CASCADE_SERVICE_SCREDIT then
369            IF l_entity_code = OE_GLOBALS.G_ENTITY_Line_SCREDIT THEN
370              OE_DELAYED_REQUESTS_UTIL.Cascade_Service_Scredit
371                  ( x_return_status =>l_return_status
372                   ,p_request_rec   =>l_request_rec
373                  );
374            end if;
375 
376 
377        ELSIF  (l_request_type = OE_GLOBALS.G_CREATE_SETS) then
378                OE_DELAYED_REQUESTS_UTIL.Insert_Set
379 			(p_request_rec  => l_request_rec,
380 			 x_return_status     => l_return_status);
381        ELSIF  l_request_type = OE_GLOBALS.G_INSERT_INTO_SETS then
382            IF l_entity_code = OE_GLOBALS.G_ENTITY_LINE then
383 /* Commenting out nocopy per Rupal */
384 
385 		 null;
386            /*  OE_Process_Models.Insert_Into_Line_Sets
387                   (p_line_id            =>l_entity_id
388                    ,p_top_model_line_id =>l_request_rec.param2
389                    ,p_set_type          => 'ALL'
390                    ,x_return_status     =>l_return_status
391                  ); */
392            END IF;
393        ELSIF  l_request_type = OE_GLOBALS.G_VALIDATE_LINE_SET then
394 			oe_delayed_requests_util.validate_line_set(
395 				p_line_set_id => l_request_rec.entity_id,
396 				x_return_status => l_return_status);
397        ELSIF l_request_type =
398                         OE_GLOBALS.G_DFLT_HSCREDIT_FOR_SREP then
399              OE_DELAYED_REQUESTS_UTIL.DFLT_Hscredit_Primary_Srep
400                  ( x_return_status =>l_return_status
401                   ,p_header_id     =>to_number(l_request_rec.param1)
402                   ,p_salesrep_id   =>to_number(l_request_rec.param2)
403                  );
404 
405 
406        ELSIF l_request_type =
407                         OE_GLOBALS.G_VERIFY_PAYMENT then
408                OE_DELAYED_REQUESTS_UTIL.Verify_Payment
409                  ( x_return_status      =>l_return_status
410                   ,p_header_id     => l_entity_id
411                  );
412 
413        ELSIF l_request_type =
414                         OE_GLOBALS.G_INSERT_RMA then
415                OE_DELAYED_REQUESTS_UTIL.INSERT_RMA_SCREDIT_ADJUSTMENT
416                  ( x_return_status      =>l_return_status
417                   ,p_line_id     => l_entity_id
418                  );
419                OE_DELAYED_REQUESTS_UTIL.INSERT_RMA_OPTIONS_INCLUDED
420                  ( x_return_status      =>l_return_status
421                   ,p_line_id     => l_entity_id
422                  );
423                -- Do not call INSERT_RMA_LOT_SERIAL for system split.
424                -- Bug 4651421
425                IF NOT((l_request_rec.param1 = OE_GLOBALS.G_OPR_UPDATE and
426                    nvl(l_request_rec.param2,'USER') = 'SYSTEM' and
427                    NVL(l_request_rec.param3,'X') = 'SPLIT')
428                    OR
429                    (l_request_rec.param1 = OE_GLOBALS.G_OPR_CREATE AND
430                     l_request_rec.param4 IS NOT NULL AND
431                     nvl(l_request_rec.param2, 'USER') = 'SYSTEM'))
432                THEN
433                    OE_DELAYED_REQUESTS_UTIL.INSERT_RMA_LOT_SERIAL
434                    ( x_return_status      =>l_return_status
435                     ,p_line_id     => l_entity_id
436                    );
437                END IF;
438        ELSIF l_request_type = OE_GLOBALS.G_TAX_LINE then
439 
440          -- Renga - changed so that we call Process_Tax
441          l_entity_id_tbl(1).entity_id := l_entity_id;
442          -- l_entity_id_tbl(l_count).request_ind := 1;
443 
444          l_entity_id_tbl(1).request_ind := p_request_ind;
445 
446           /*
447 	      OE_DELAYED_REQUESTS_UTIL.TAX_LINE
448              (  x_return_status => l_return_status
449 	           , p_line_id  =>  l_entity_id
450 		    );
451            */
452 
453            OE_Delayed_Requests_UTIL.Process_Tax
454              (p_Entity_id_tbl      => l_entity_id_tbl
455               ,x_return_status     => l_return_status
456              );
457 
458 	  ELSIF l_request_type = OE_GLOBALS.G_SPLIT_HOLD then
459               OE_DELAYED_REQUESTS_UTIL.Split_hold
460 			    ( p_entity_code        => l_request_rec.entity_code
461 				,p_entity_id          => l_request_rec.entity_id
462 				,p_split_from_line_id => l_request_rec.param1
463 				,x_return_status      => l_return_status
464 			    );
465        ELSIF l_request_type =
466                         OE_GLOBALS.G_EVAL_HOLD_SOURCE then
467                OE_DELAYED_REQUESTS_UTIL.Eval_Hold_Source
468                  ( x_return_status      => l_return_status
469                   ,p_entity_code	=> l_request_rec.entity_code
470                   ,p_entity_id		=> l_request_rec.entity_id
471                   ,p_hold_entity_code   => l_request_rec.param1
472                   ,p_hold_entity_id	=> l_request_rec.param2
473                  );
474 
475       /* 1739574 */
476       ELSIF  l_request_type = OE_GLOBALS.G_COMPLETE_ACTIVITY THEN
477   IF l_debug_level > 0 THEN
478 	    oe_debug_pub.ADD('Calling wf_engine.CompleteActivityInternalName for '||l_request_rec.param1 || '/'||l_request_rec.param2||'/'||l_request_rec.param3 ||'/'||'/'||l_request_rec.param4, 3);
479   END IF;
480        	    wf_engine.CompleteActivityInternalName(l_request_rec.param1,l_request_rec.param2,l_request_rec.param3,l_request_rec.param4);
481   IF l_debug_level > 0 THEN
482 	    oe_debug_pub.ADD('Returned from wf_engine.CompleteActivityInternalName ',3);
483   END IF;
484       ELSIF l_request_rec.request_type = OE_GLOBALS.G_UPDATE_SHIPPING THEN
485 
486 		OE_Delayed_Requests_UTIL.Update_Shipping
487 			( p_update_shipping_tbl => g_delayed_requests
488 			, p_line_id		    => l_request_rec.entity_id
489 			, p_operation           => l_request_rec.request_unique_key1
490 			, x_return_status       => l_return_status
491 		  );
492 
493 	   ELSIF l_request_rec.request_type = OE_GLOBALS.G_SHIP_CONFIRMATION THEN
494 
495 		OE_Delayed_Requests_UTIL.Ship_Confirmation
496 			( p_ship_confirmation_tbl => g_delayed_requests
497 			, p_line_id		      => l_request_rec.entity_id
498 			, p_process_type	      => l_request_rec.request_unique_key1
499 			, p_process_id			 => l_request_rec.param1
500 			, x_return_status         => l_return_status
501 		  );
502 
503 
504 /* 7576948: IR ISO Change Management project Start */
505 -- This code is hooked up for IR ISO project so as to trigger
506 -- the new procedure OE_Delated_Requests_Util.Update_Requisition_Info
507 -- for update of internal requisition based on changes offered by
508 -- sales order user w.r.t Ordered Quantity, Schedule Ship/Arrival
509 -- Date or Line/Header cancellation
510 
511 -- For details on IR ISO CMS project, please refer to FOL >
512 -- OM Development > OM GM > 12.1.1 > TDD > IR_ISO_CMS_TDD.doc
513 
514 
515  ELSIF l_request_rec.request_type = OE_GLOBALS.G_UPDATE_REQUISITION THEN
516 
517    IF NVL(l_request_rec.param2,'N') = 'Y' THEN
518      IF l_debug_level > 0 THEN
519        oe_debug_pub.add('Requisition Header Cancellation is TRUE',5);
520      END IF;
521      l_cancel_order := TRUE;
522 
523      -- For Requisition Header Cancellation, following information is not needed -
524      l_request_rec.param1 := NULL;
525      l_request_rec.date_param1 := NULL;
526    ELSE
527      IF l_debug_level > 0 THEN
528        oe_debug_pub.add('Requisition Header Cancellation is FALSE',5);
529      END IF;
530      l_cancel_order := FALSE;
531    END IF;
532 
533    IF l_request_rec.entity_code = OE_Globals.G_Entity_Header THEN
534      l_header_id := l_request_rec.entity_id;
535      l_line_id   := NULL;
536    ELSIF l_request_rec.entity_code = OE_Globals.G_Entity_Line THEN
537      l_header_id := l_request_rec.request_unique_key1;
538      l_line_id   := l_request_rec.entity_id;
539    END IF;
540 
541    OE_Delayed_Requests_UTIL.Update_Requisition_Info
542          ( P_Requisition_Header_id  => l_request_rec.request_unique_key2
543          , P_Requisition_Line_id    => l_request_rec.request_unique_key3
544          , P_Header_id              => l_header_id
545          , p_Line_id                => l_line_id
546          , p_Line_ids               => l_request_rec.long_param1
547          , p_num_records            => l_request_rec.param3
548          , P_Quantity_Change        => l_request_rec.param1
549          , P_New_Schedule_Ship_Date => l_request_rec.date_param1
550          , P_Cancel_order           => l_cancel_order  -- Param2
551          , X_Return_Status          => l_return_status
552          );
553 
554 
555 /* ============================= */
556 /* IR ISO Change Management Ends */
557 
558 
559        ELSIF l_request_type =
560                         OE_GLOBALS.G_CASCADE_CHANGES then
561            IF l_debug_level > 0 THEN
562             oe_debug_pub.add('Performing Delayed Req for Cascade Changes',1);
563            END IF;
564 
565             OE_CONFIG_UTIL.CASCADE_CHANGES
566                       ( p_parent_line_id   => l_request_rec.entity_id
567                       , p_request_rec      => l_request_rec
568                       , x_return_status    => l_return_status
569                       );
570           IF l_debug_level > 0 THEN
571             oe_debug_pub.add('done Delayed Req for Cascade Changes',1);
572           END IF;
573 
574        ELSIF l_request_type =
575                         OE_GLOBALS.G_CHANGE_CONFIGURATION then
576 
577             oe_debug_pub.add('Performing Delayed Req for Change Config',1);
578 
579             OE_CONFIG_UTIL.CHANGE_CONFIGURATION
580                       ( p_request_rec      => l_request_rec
581                       , x_return_status    => l_return_status
582                       );
583           IF l_debug_level > 0 THEN
584             oe_debug_pub.add('Done Delayed Req for Change Config',1);
585           END IF;
586 
587        ELSIF l_request_type =
588                         OE_GLOBALS.G_CREATE_RESERVATIONS then
589              OE_DELAYED_REQUESTS_UTIL.SPLIT_RESERVATIONS
590                       ( p_reserved_line_id   => l_request_rec.entity_id
591                       , p_ordered_quantity   => to_number(l_request_rec.param1)
592                       , p_reserved_quantity  => to_number(l_request_rec.param2)
593                       , x_return_status      => l_return_status
594                       );
595 
596        ELSIF l_request_type =
597                         OE_GLOBALS.G_COPY_CONFIGURATION then
598              OE_Config_Pvt.Copy_Config
599                      ( p_top_model_line_id  => l_request_rec.entity_id ,
600                        p_config_hdr_id      => l_request_rec.param1 ,
601                        p_config_rev_nbr     => l_request_rec.param2 ,
602                        p_configuration_id   => l_request_rec.param4 ,
603                        p_remnant_flag       => l_request_rec.param3 ,
604                        x_return_status      => l_return_status
605                      );
606 
607        ELSIF l_request_type =
608                         OE_GLOBALS.G_COMPLETE_CONFIGURATION then
609              OE_DELAYED_REQUESTS_UTIL.COMPLETE_CONFIGURATION
610                       ( p_top_model_line_id  => l_request_rec.entity_id
611                       , x_return_status      => l_return_status
612                       );
613        -- No Processing here. The processing will be done in
614        -- Process_Delayed_Requests at the Commit Time.
615 
616        ELSIF l_request_type = OE_GLOBALS.G_DROPSHIP_CMS THEN
617           RETURN;
618 
619     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
620           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
621     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
622           RAISE FND_API.G_EXC_ERROR;
623     END IF;
624        ELSIF l_request_type = OE_GLOBALS.G_UPDATE_OPTION THEN
625          IF l_debug_level > 0 THEN
626             oe_debug_pub.add('upd: processed with cfg val', 3);
627          END IF;
628          RETURN;
629 
630        ELSIF l_request_type = OE_GLOBALS.G_DELETE_OPTION THEN
631          IF l_debug_level > 0 THEN
632             oe_debug_pub.add('del: processed with cfg val', 3);
633          END IF;
634          RETURN;
635 
636        ELSIF l_request_type =
637                         OE_GLOBALS.G_VALIDATE_CONFIGURATION
638        THEN
639 
640          -- Get the delayed requests logged for deletions and updatations
641          -- which needs to be passed to validate_configuration.
642 
643          l_d_index := 0;
644          l_u_index := 0;
645          K         := G_Delayed_Requests.FIRST;
646 
647          WHILE K is not null -- while loop safe that tbl.first to last
648          LOOP
649 
650             IF G_Delayed_Requests(K).request_type = OE_GLOBALS.G_DELETE_OPTION  OR
651                G_Delayed_Requests(K).request_type = OE_GLOBALS.G_UPDATE_OPTION
652             THEN
653 
654                 IF G_Delayed_Requests(K).request_type = OE_GLOBALS.G_DELETE_OPTION
655                    AND G_Delayed_Requests(K).param1 = l_request_rec.entity_id
656                 THEN
657                     l_d_index := l_d_index + 1;
658 	    	      l_deleted_options_tbl(l_d_index) :=
659                                    g_delayed_requests(K);
660                 END IF;
661 
662                 IF G_Delayed_Requests(K).request_type = OE_GLOBALS.G_UPDATE_OPTION
663                    AND G_Delayed_Requests(K).param1 = l_request_rec.entity_id
664                 THEN
665                     l_u_index := l_u_index + 1;
666 	  	        l_updated_options_tbl(l_u_index) :=
667                                    g_delayed_requests(K);
668                 END IF;
669                 -- delete after both updete and delete checks,
670                 -- if deleted in the inside if, no_data_found exceptiion
671                 -- g_delayed_requests.delete(K);
672             END IF;
673             K :=  G_Delayed_Requests.NEXT(K);
674          END LOOP;
675          IF l_debug_level > 0 THEN
676              oe_debug_pub.add('out of loop for upd/del options table', 1);
677          END IF;
678 
679          OE_DELAYED_REQUESTS_UTIL.VALIDATE_CONFIGURATION
680                 ( p_top_model_line_id   => l_request_rec.entity_id
681                 , p_deleted_options_tbl => l_deleted_options_tbl
682                 , p_updated_options_tbl => l_updated_options_tbl
683                 , x_return_status       => l_return_status
684                 );
685          IF l_debug_level > 0 THEN
686              oe_debug_pub.add('ret sts: '|| x_return_status, 4);
687          END IF;
688 
689          IF l_return_status =  FND_API.G_RET_STS_SUCCESS THEN
690            oe_debug_pub.add('deleteing after success ', 3);
691            K         := G_Delayed_Requests.FIRST;
692 
693            WHILE K is not null
694            LOOP
695              IF (G_Delayed_Requests(K).request_type =
696                    OE_GLOBALS.G_DELETE_OPTION  OR
697                  G_Delayed_Requests(K).request_type =
698                    OE_GLOBALS.G_UPDATE_OPTION ) AND
699                  G_Delayed_Requests(K).param1 = l_request_rec.entity_id
700              THEN
701                G_Delayed_Requests.delete(K);
702              END IF;
703 
704              K := G_Delayed_Requests.NEXT(K);
705 
706            END LOOP;
707          END IF;
708 
709 
710        ELSIF l_request_type = OE_GLOBALS.G_CTO_CHANGE THEN
711          IF l_debug_level > 0 THEN
712             oe_debug_pub.add('cto: processed with notification', 3);
713          END IF;
714          RETURN;
715 
716        ELSIF l_request_type =
717                         OE_GLOBALS.G_CTO_NOTIFICATION then
718          -- loop over and call cto
719          IF l_debug_level > 0 THEN
720              oe_debug_pub.add('cto notification excecution', 2);
721          END IF;
722 
723          K := G_Delayed_Requests.FIRST;
724 
725          WHILE K is not null
726          LOOP
727            IF G_Delayed_Requests(K).request_type =
728                      OE_GLOBALS.G_CTO_CHANGE AND
729               G_Delayed_Requests(K).param3 = l_request_rec.entity_id
730            THEN
731               IF l_debug_level > 0 THEN
732                  oe_debug_pub.add(K || 'cto change req ', 3);
733               END IF;
734              IF G_Delayed_Requests(K).request_unique_key1 = 'Quantity'
735              THEN
736                l_cto_request_rec.param1 := G_Delayed_Requests(K).param1;
737                l_cto_request_rec.param2 := G_Delayed_Requests(K).param2;
738 
739              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Req Date'
740              THEN
741                l_cto_request_rec.param3 := G_Delayed_Requests(K).param1;
742                l_cto_request_rec.param4 := G_Delayed_Requests(K).param2;
743 
744              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Ship Date'
745              THEN
746                l_cto_request_rec.param5 := G_Delayed_Requests(K).param1;
747                l_cto_request_rec.param6 := G_Delayed_Requests(K).param2;
748 
749              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Arr Date'
750              THEN
751                l_cto_request_rec.param7 := G_Delayed_Requests(K).param1;
752                l_cto_request_rec.param8 := G_Delayed_Requests(K).param2;
753 
754              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Config Chg'
755              THEN
756                l_cto_request_rec.param9 := 'Y';
757 
758              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Warehouse'
759              THEN
760                l_cto_request_rec.param10 := G_Delayed_Requests(K).param1;
761                l_cto_request_rec.param11 := G_Delayed_Requests(K).param2;
762                          -- INVCONV
763              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Quantity2'
764              THEN
765                l_cto_request_rec.param12 := G_Delayed_Requests(K).param1;
766                l_cto_request_rec.param13 := G_Delayed_Requests(K).param2;
767 
768              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Uom2'
769              THEN
770                l_cto_request_rec.param14 := G_Delayed_Requests(K).param1;
771                l_cto_request_rec.param15 := G_Delayed_Requests(K).param2;
772 
773              ELSIF G_Delayed_Requests(K).request_unique_key1 = 'Uom'
774              THEN
775                l_cto_request_rec.param16 := G_Delayed_Requests(K).param1;
776                l_cto_request_rec.param17 := G_Delayed_Requests(K).param2;
777 
778 						-- INVCONV
779 
780              ELSIF G_Delayed_Requests(K).request_unique_key1 =
781                                       'Config Chg pto_ato'
782              THEN
783                  IF l_debug_level > 0 THEN
784                  oe_debug_pub.add('ptoato '|| G_Delayed_Requests(K).param4, 1);
785                  END IF;
786                  l_cto_request_tbl(K).param1 := G_Delayed_Requests(K).param4;
787                  l_cto_request_tbl(K).param2 := G_Delayed_Requests(K).param5;
788 
789              ELSIF G_Delayed_Requests(K).request_unique_key1 =
790                                       'Decimal Chg'
791              THEN
792                  IF l_debug_level > 0 THEN
793                  oe_debug_pub.add('for decimal '||G_Delayed_Requests(K).entity_id, 1);
794                  END IF;
795                  l_cto_decimal_tbl(K) := G_Delayed_Requests(K);
796 
797              ELSIF G_Delayed_Requests(K).request_unique_key1 =
798                                       'Split Create'
799              THEN
800                 IF l_debug_level > 0 THEN
801                  oe_debug_pub.add('split '|| G_Delayed_Requests(K).param4, 1);
802                 END IF;
803                  l_cto_split_tbl(K) := G_Delayed_Requests(K);
804              END IF;
805              IF l_debug_level > 0 THEN
806                oe_debug_pub.add(G_Delayed_Requests(K).request_unique_key1, 4);
807              END IF;
808              --G_Delayed_Requests.delete(K);
809            END IF;
810 
811            IF l_debug_level > 0 THEN
812               oe_debug_pub.add('cto looping', 4);
813            END IF;
814 
815            K := G_Delayed_Requests.NEXT(K);
816          END LOOP;
817 
818          OE_CONFIG_UTIL.Notify_CTO
819          ( p_ato_line_id        => l_request_rec.entity_id
820          , p_request_rec        => l_cto_request_rec
821          , p_request_tbl        => l_cto_request_tbl
822          , p_split_tbl          => l_cto_split_tbl
823          , p_decimal_tbl        => l_cto_decimal_tbl
824          , x_return_status      => l_return_status);
825 
826          IF l_return_status =  FND_API.G_RET_STS_SUCCESS THEN
827            IF l_debug_level > 0 THEN
828              oe_debug_pub.add('deleteing after success ', 3);
829            END IF;
830            K := G_Delayed_Requests.FIRST;
831 
832            WHILE K is not null
833            LOOP
834              IF G_Delayed_Requests(K).request_type =
835                        OE_GLOBALS.G_CTO_CHANGE AND
836                 G_Delayed_Requests(K).param3 = l_request_rec.entity_id
837              THEN
838                G_Delayed_Requests.delete(K);
839              END IF;
840 
841              K := G_Delayed_Requests.NEXT(K);
842 
843            END LOOP;
844          END IF;
845        ELSIF l_request_type =
846                  OE_GLOBALS.G_GROUP_SET THEN
847 
848 
849          l_index  := 0;
850          K        := G_Delayed_Requests.FIRST;
851 
852          WHILE K is not null -- while loop safer than tbl.first to last
853          LOOP
854 
855             IF (G_Delayed_Requests(K).request_type =
856                            OE_GLOBALS.G_GROUP_SET)
857             THEN
858 
859                 l_index := l_index + 1;
860 	    	    l_sch_set_tbl(l_index) := g_delayed_requests(K);
861                 g_delayed_requests(K).processed := 'I';
862             END IF;
863 
864             K :=  G_Delayed_Requests.NEXT(K);
865          END LOOP;
866 
867          OE_GROUP_SCH_UTIL.Group_Schedule_sets
868            ( p_sch_set_tbl     => l_sch_set_tbl
869            , x_return_status   => l_return_status);
870 
871           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
872 
873                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
874 
875           END IF;
876 
877           K         := G_Delayed_Requests.FIRST;
878           WHILE K is not null -- while loop safer than tbl.first to last
879           LOOP
880 
881            IF G_Delayed_Requests(K).request_type =
882                            OE_GLOBALS.G_GROUP_SET
883            THEN
884                   g_delayed_requests(K).processed := 'Y';
885            END IF;
886 
887             K :=  G_Delayed_Requests.NEXT(K);
888 
889           END LOOP;
890          l_sch_set_tbl.delete;
891        ELSIF l_request_type =
892                  OE_GLOBALS.G_SPLIT_SCHEDULE THEN
893 
894 
895          l_index  := 0;
896          K        := G_Delayed_Requests.FIRST;
897 
898          WHILE K is not null -- while loop safer than tbl.first to last
899          LOOP
900 
901             IF (G_Delayed_Requests(K).request_type =
902                            OE_GLOBALS.G_SPLIT_SCHEDULE)
903             THEN
904 
905                 l_index := l_index + 1;
906 	    	    l_sch_set_tbl(l_index) := g_delayed_requests(K);
907                 g_delayed_requests(K).processed := 'I';
908             END IF;
909 
910             K :=  G_Delayed_Requests.NEXT(K);
911          END LOOP;
912 
913          OE_SCHEDULE_UTIL.Schedule_split_lines
914            ( p_sch_set_tbl     => l_sch_set_tbl
915            , x_return_status   => l_return_status);
916 
917          K         := G_Delayed_Requests.FIRST;
918          WHILE K is not null -- while loop safer than tbl.first to last
919          LOOP
920 
921            IF G_Delayed_Requests(K).request_type =
922                            OE_GLOBALS.G_SPLIT_SCHEDULE
923            THEN
924                IF l_return_status <> FND_API.G_RET_STS_UNEXP_ERROR
925                THEN
926                   g_delayed_requests(K).processed := 'Y';
927                ELSE
928                   g_delayed_requests(K).processed := Null;
929                END IF;
930            END IF;
931 
932             K :=  G_Delayed_Requests.NEXT(K);
933 
934          END LOOP;
935          l_sch_set_tbl.delete;
936        ELSIF l_request_type =
937 					   OE_GLOBALS.G_INSERT_SERVICE then
938               OE_DELAYED_REQUESTS_UTIL.INSERT_SERVICE_FOR_OPTIONS
939 			  ( x_return_status    => l_return_status
940 			  , p_serviced_line_id => l_entity_id
941 			  );
942 
943        /* BUG 2013611 - Increment promotional balances in response to cancellations */
944        ELSIF l_request_rec.request_type = OE_GLOBALS.G_REVERSE_LIMITS THEN
945             IF l_debug_level > 0 THEN
946             oe_debug_pub.add('About to PERFORM Delayed Request for Reverse Limits',1);
947             END IF;
948 
949             OE_DELAYED_REQUESTS_UTIL.REVERSE_LIMITS
950 			  ( x_return_status           => l_return_status
951                           , p_action_code             => l_request_rec.param1
952                           , p_cons_price_request_code => l_request_rec.param2
953                           , p_orig_ordered_qty        => to_number(l_request_rec.param3)
954                           , p_amended_qty             => to_number(l_request_rec.param4)
955                           , p_ret_price_request_code  => l_request_rec.param5
956                           , p_returned_qty            => to_number(l_request_rec.param6)
957                           , p_line_id                 => l_request_rec.entity_id
958 			  );
959             IF l_debug_level > 0 THEN
960             oe_debug_pub.add('Call Issued to OE_DELAYED_REQUESTS_UTIL.Reverse_Limits',1);
961             END IF;
962        /* BUG 2013611 END */
963 
964        -- Freight Rating.
965        ELSIF l_request_rec.request_type = OE_GLOBALS.G_FREIGHT_RATING THEN
966        IF l_debug_level > 0 THEN
967 	 Oe_Debug_pub.Add('Before Executing Delayed request Freight Rating for header: '||l_request_rec.entity_id, 3);
968        END IF;
969          OE_FTE_INTEGRATION_PVT.Process_FTE_Action
970                     ( p_header_id           => l_request_rec.entity_id
971                      ,p_line_id             => null
972                      ,p_ui_flag             => 'N'
973                      ,p_action              => 'R'
974                      ,p_call_pricing_for_FR => l_request_rec.param1
975                      ,x_return_status       => l_return_status
976                      ,x_msg_count           => l_msg_count
977                      ,x_msg_data            => l_msg_data
978                      );
979 
980 
981        ELSIF l_request_rec.request_type = OE_GLOBALS.G_PRICE_LINE THEN
982        IF l_debug_level > 0 THEN
983 	   Oe_Debug_pub.Add('Before Executing Delayed request Price line for '||l_request_rec.entity_id);
984 	   Oe_Debug_pub.Add('The Event is '||l_request_rec.param2);
985        END IF;
986 		l_Price_Control_Rec.pricing_event := l_request_rec.param2;
987 		l_Price_Control_Rec.calculate_flag :=  QP_PREQ_GRP.G_SEARCH_N_CALCULATE;
988 		l_Price_Control_Rec.Simulation_Flag := 'N';
989 
990                --RT{
991                 If l_Price_Control_Rec.pricing_event IN ('BATCH','RETROBILL')
992                 Then
993                    l_price_control_rec.source_order_amount_flag := 'Y';
994                 End If;
995                 --RT}
996              IF l_debug_level > 0 THEN
997 			 Oe_Debug_pub.Add('Before Line Price');
998              END IF;
999 		    	oe_order_adj_pvt.Price_line(
1000 					X_Return_Status	=> l_Return_Status
1001 					,p_Line_id		=> l_request_rec.entity_id
1002 					,p_Request_Type_code=> 'ONT'
1003 					,p_Control_rec		=> l_Price_Control_Rec
1004 					,p_write_to_db      => TRUE
1005 					,p_request_rec      => l_request_rec
1006 					,x_line_Tbl         => l_Line_Tbl
1007 					);
1008              IF l_debug_level > 0 THEN
1009 	   Oe_Debug_pub.Add('After Executing Delayed request Price line for '||l_request_rec.entity_id);
1010              END IF;
1011        ELSIF l_request_rec.request_type = OE_GLOBALS.G_PRICE_ORDER THEN
1012          IF l_debug_level > 0 THEN
1013 	       Oe_Debug_pub.Add('Before Executing Delayed request Price line for '||l_request_rec.entity_id);
1014 	       Oe_Debug_pub.Add('Before Header Price');
1015 	       Oe_Debug_pub.Add('The Event is '||l_request_rec.param2);
1016            Oe_Debug_pub.Add('The Action is '||l_request_rec.param3);
1017            Oe_Debug_pub.Add('The get freight flag is: '||l_request_rec.request_unique_key2, 3);
1018         END IF;
1019 		l_Price_Control_Rec.pricing_event := l_request_rec.param2;
1020 		l_Price_Control_Rec.calculate_flag :=  QP_PREQ_GRP.G_SEARCH_N_CALCULATE;
1021 		l_Price_Control_Rec.Simulation_Flag := 'N';
1022                 l_Price_Control_Rec.get_freight_flag := nvl(l_request_rec.request_unique_key2, 'N');
1023 
1024                 If l_Price_Control_Rec.pricing_event = 'BATCH' Then
1025                    l_price_control_rec.source_order_amount_flag := 'Y';
1026                 End If;
1027 
1028                --Bug 2619506, Added p_action_code
1029 		oe_order_adj_pvt.Price_line(
1030 					X_Return_Status	=> l_Return_Status
1031 					,p_Header_id		=> l_request_rec.entity_id
1032 					,p_Request_Type_code=> 'ONT'
1033 					,p_Control_rec		=> l_Price_Control_Rec
1034 					,p_write_to_db      => TRUE
1035 					,p_request_rec      => l_request_rec
1036 					,x_line_Tbl         => l_Line_Tbl
1037                                         ,p_action_code      => l_request_rec.param3
1038 					);
1039              IF l_debug_level > 0 THEN
1040 			    Oe_Debug_pub.Add('After Header Price');
1041 	            Oe_Debug_pub.Add('After Executing Delayed request Price line for '||l_request_rec.entity_id);
1042              END IF;
1043 
1044        /* Customer Acceptance - Start */
1045        ELSIF l_request_rec.request_type = OE_GLOBALS.G_DFLT_CONTINGENCY_ATTRIBUTES THEN
1046           IF l_debug_level > 0 THEN
1047 	         Oe_Debug_pub.Add('Before Defaulting Contingency Attributes ');
1048           END IF;
1049 	   OE_ACCEPTANCE_UTIL.Default_contingency_Attributes();
1050 	     IF l_debug_level > 0 THEN
1051 	       Oe_Debug_pub.Add('After Defaulting Contingency Attributes ');
1052          END IF;
1053        /* Customer Acceptance - End */
1054 
1055        ELSIF  (l_request_type = OE_GLOBALS.G_PROCESS_ADJUSTMENTS) then
1056          if l_entity_code = OE_GLOBALS.G_ENTITY_LINE then
1057           IF l_debug_level > 0 THEN
1058           oe_debug_pub.add('count is : ' || G_Delayed_Requests.count );
1059           END IF;
1060           l_prc_adj_index := G_Delayed_Requests.first;
1061 
1062          WHILE l_prc_adj_index is NOT NULL LOOP
1063                 IF l_debug_level > 0 THEN
1064                    oe_debug_pub.add('Ren 0: Param1 :' || l_request_rec.param1);
1065                 END IF;
1066                 IF G_Delayed_Requests(l_prc_adj_index).request_type = l_request_type THEN
1067                 IF l_debug_level > 0 THEN
1068                     oe_debug_pub.add('REN: SUCCESS - FOUND THE REQUEST');
1069 
1070                      oe_debug_pub.add('Ren 1: Param2 :' || g_delayed_requests(l_prc_adj_index).param2);
1071                 END IF;
1072 
1073 		  l_prc_adj_request(I) := g_delayed_requests(l_prc_adj_index);
1074                    oe_debug_pub.add('Ren 2: Param2 :' || l_prc_adj_request(I).param2);
1075 		  g_delayed_requests.delete(l_prc_adj_index);
1076           IF l_debug_level > 0 THEN
1077             oe_debug_pub.add('Ren 3: Param2 :' || l_prc_adj_request(I).param2);
1078           END IF;
1079                   I := I + 1;
1080 
1081                 ELSE
1082                     IF l_debug_level > 0 THEN
1083                    oe_debug_pub.add('Ren: Req not found ' || l_prc_adj_index);
1084                     END IF;
1085 
1086                 END IF;
1087 
1088 	   l_prc_adj_index := G_Delayed_Requests.Next(l_prc_adj_index);
1089 
1090           END LOOP;
1091 
1092              IF l_prc_adj_request.count > 0 THEN
1093                 IF l_debug_level > 0 THEN
1094                    oe_debug_pub.add('before calling process_adjustments ');
1095                 END IF;
1096 
1097                OE_DELAYED_REQUESTS_UTIL.Process_Adjustments
1098 			(p_adjust_tbl	     => l_prc_adj_request,
1099 			 x_return_status     => l_return_status);
1100 
1101              END IF; /* if count > 0 */
1102 
1103          end if; /* entity_code = G_ENTITY_LINE */
1104 
1105 	  -- Delayed Request to Apply Automatic Attachments
1106        ELSIF  l_request_type = OE_GLOBALS.G_APPLY_AUTOMATIC_ATCHMT THEN
1107 
1108                OE_DELAYED_REQUESTS_UTIL.Apply_Automatic_Attachments
1109 					( p_entity_code 		=> l_request_rec.entity_code
1110 					, p_entity_id 			=> l_request_rec.entity_id
1111 					, p_is_user_action		=> 'N'
1112 					, x_return_status		=> l_return_status
1113 					);
1114 
1115        ELSIF  l_request_type = OE_GLOBALS.G_COPY_ATCHMT THEN
1116 
1117                OE_DELAYED_REQUESTS_UTIL.Copy_Attachments
1118                     (p_entity_code             => l_request_rec.entity_code
1119                     ,p_from_entity_id          =>
1120                                             to_number(l_request_rec.param1)
1121                     ,p_to_entity_id            => l_request_rec.entity_id
1122                     ,p_manual_attachments_only => l_request_rec.param2
1123                     ,x_return_status           => l_return_status
1124                     );
1125 
1126        ELSIF  l_request_type = OE_GLOBALS.G_COPY_ADJUSTMENTS THEN
1127 
1128 			OE_Line_Adj_Util.copy_adjustment_lines
1129                     (p_from_line_id        => to_number(l_request_rec.param2)
1130                      ,p_to_line_id         => l_request_rec.entity_id
1131                      ,p_from_Header_id     => to_number(l_request_rec.param3)
1132                      ,p_to_Header_id       => to_number(l_request_rec.param1)
1133                      ,p_line_category_code => l_request_rec.param4
1134                      ,p_split_by           => l_request_rec.param5
1135                      ,p_booked_flag        => l_request_rec.param6
1136                      --RT{
1137                      ,p_mode               => l_request_rec.param7
1138                      ,p_retrobill_request_id=>l_request_rec.param8
1139                      --RT}
1140                      ,x_return_status      => l_return_status
1141                      );
1142        /* Added for Bug # 1559906 */
1143        ELSIF  l_request_type = OE_GLOBALS.G_COPY_FREIGHT_CHARGES THEN
1144 
1145               OE_Header_Adj_Util.copy_freight_charges
1146                     ( p_from_header_id    => to_number(l_request_rec.param2)
1147                     , p_to_header_id      => l_request_rec.entity_id
1148                     , p_to_order_category => l_request_rec.param1
1149                     , x_return_status     => l_return_status
1150                     );
1151 
1152 
1153        /* Added the new delayed req for Bug # 2170086 */
1154        ELSIF  l_request_type = OE_GLOBALS.G_COPY_HEADER_ADJUSTMENTS THEN
1155 
1156               OE_Header_Adj_Util.copy_header_adjustments
1157                     ( p_from_header_id    => to_number(l_request_rec.param2)
1158                     , p_to_header_id      => l_request_rec.entity_id
1159                     , p_to_order_category => l_request_rec.param1
1160                     , x_return_status     => l_return_status
1161                     );
1162 
1163 
1164 
1165  /* csheu added for bug #1533658 */
1166 
1167        ELSIF  l_request_type = OE_GLOBALS.G_UPDATE_SERVICE THEN
1168            IF l_debug_level > 0 THEN
1169               oe_debug_pub.add('CSH-- Before calls OE_Service_Util.cascade_changes', 1);
1170            END IF;
1171 
1172 	 OE_Service_Util.cascade_changes
1173                     ( p_parent_line_id   => l_request_rec.entity_id
1174                      ,p_request_rec      => l_request_rec
1175                      ,x_return_status    => l_return_status
1176                      );
1177         IF l_debug_level > 0 THEN
1178         oe_debug_pub.add('CSH-- After calls OE_Service_Util.cascade_changes', 1);
1179         END IF;
1180 
1181   /* lchen added for bug #1761154 */
1182 
1183        ELSIF l_request_type = OE_GLOBALS.G_CASCADE_OPTIONS_SERVICE then
1184        IF l_debug_level > 0 THEN
1185       oe_debug_pub.add('lchen-- Before calls OE_DELAYED_REQUESTS_UTIL.CASCADE_SERVICE_FOR_OPTIONS', 1);
1186        END IF;
1187        OE_DELAYED_REQUESTS_UTIL.CASCADE_SERVICE_FOR_OPTIONS
1188 			  ( x_return_status    => l_return_status
1189 			  , p_option_line_id => l_entity_id
1190 			  );
1191       IF l_debug_level > 0 THEN
1192       oe_debug_pub.add('lchen-- After calls OE_DELAYED_REQUESTS_UTIL.CASCADE_SERVICE_FOR_OPTIONS', 1);
1193       END IF;
1194 
1195        -- added by lkxu: to copy pricing attributes
1196        ELSIF  l_request_type = OE_GLOBALS.G_COPY_PRICING_ATTRIBUTES THEN
1197 
1198 			OE_Line_PAttr_Util.copy_pricing_attributes
1199                     (p_from_line_id        => to_number(l_request_rec.param2)
1200                      ,p_to_line_id         => l_request_rec.entity_id
1201                      ,p_to_Header_id       => to_number(l_request_rec.param1)
1202                      ,x_return_status      => l_return_status
1203                      );
1204 
1205        ELSIF  l_request_type = OE_GLOBALS.G_COPY_MODEL_PATTR THEN
1206 
1207 	/* bug 1857538
1208            copy_model_pattr now takes only the line_id as parameter
1209 	   Corresponding changes are in OEXULPAS and OEXULPAB
1210 	*/
1211 			OE_Line_PAttr_Util.copy_model_pattr
1212                     (
1213 		     --p_model_line_id       => l_request_rec.entity_id
1214                       p_to_line_id         => to_number(l_request_rec.param1)
1215                      ,x_return_status      => l_return_status
1216                      );
1217 
1218         ELSIF l_request_type = OE_GLOBALS.G_DELETE_CHARGES THEN
1219           OE_Header_Util.cancel_header_charges
1220                      (
1221                       p_header_id       => l_request_rec.entity_id,
1222                       --p_x_line_id         => to_number(l_request_rec.param1),
1223                       x_return_status      => l_return_status
1224                      );
1225 
1226        ELSIF l_request_type = OE_GLOBALS.G_CASCADE_SCH_ATTRBS THEN
1227 
1228           G_Delayed_Requests(p_request_ind).processed := 'Y';
1229 
1230       ELSIF l_request_type =
1231                         OE_GLOBALS.G_CASCADE_SHIP_SET_ATTR then
1232 
1233          l_index  := 0;
1234          l_set_id    := l_request_rec.param2;
1235 
1236          K         := G_Delayed_Requests.FIRST;
1237 
1238          WHILE K is not null
1239          LOOP
1240 
1241             IF (G_Delayed_Requests(K).request_type =
1242                            OE_GLOBALS.G_CASCADE_SHIP_SET_ATTR) AND
1243                 G_Delayed_Requests(K).param2 = l_set_id AND
1244                 K <> p_request_ind
1245             THEN
1246 
1247                 g_delayed_requests.delete(K);
1248 
1249             END IF;
1250 
1251             K :=  G_Delayed_Requests.NEXT(K);
1252 
1253          END LOOP;
1254 
1255         OE_SCHEDULE_UTIL.Cascade_ship_set_attr
1256                ( p_request_rec      => l_request_rec
1257                , x_return_status    => l_return_status);
1258 
1259        ELSIF l_request_type =
1260                         OE_GLOBALS.G_GROUP_SCHEDULE then
1261 
1262          l_index  := 0;
1263          l_set_id    := l_request_rec.param1;
1264 
1265          K         := G_Delayed_Requests.FIRST;
1266 
1267          WHILE K is not null
1268          LOOP
1269 
1270             IF (G_Delayed_Requests(K).request_type =
1271                            OE_GLOBALS.G_GROUP_SCHEDULE) AND
1272                 G_Delayed_Requests(K).param1 = l_set_id AND
1273                 K <> p_request_ind
1274             THEN
1275 
1276                 l_index := l_index + 1;
1277 
1278                 IF nvl(g_delayed_requests(K).param12,'N') = 'Y' THEN
1279                    l_request_rec.param12 := 'Y';
1280                 END IF;
1281 
1282                 g_delayed_requests.delete(K);
1283 
1284             END IF;
1285 
1286             K :=  G_Delayed_Requests.NEXT(K);
1287 
1288          END LOOP;
1289 
1290          -- Removed the below code -Bug4504362
1291             -- Start 2391781
1292             -- Storing Cascade Warehouse records
1293             l_set_id := l_request_rec.param1;
1294             l_count := G_Delayed_Requests.FIRST;
1295             WHILE l_count is not null
1296             LOOP
1297 
1298                IF G_Delayed_Requests(l_count).request_type =
1299                                       OE_GLOBALS.G_CASCADE_SCH_ATTRBS AND
1300                   G_Delayed_Requests(l_count).param1 = l_set_id
1301                THEN
1302                   oe_schedule_util.OE_sch_Attrb_Tbl
1303                    (G_Delayed_Requests(l_count).entity_id).set_id :=
1304                                     G_Delayed_Requests(l_count).param1;
1305                   oe_schedule_util.OE_sch_Attrb_Tbl
1306                    (G_Delayed_Requests(l_count).entity_id).line_id :=
1307                                      G_Delayed_Requests(l_count).entity_id;
1308                   oe_schedule_util.OE_sch_Attrb_Tbl
1309                    (G_Delayed_Requests(l_count).entity_id).attribute1 :=
1310                        G_Delayed_Requests(l_count).param2;
1311                   oe_schedule_util.OE_sch_Attrb_Tbl
1312                    (G_Delayed_Requests(l_count).entity_id).date_attribute1 :=
1313                                 G_Delayed_Requests(l_count).date_param1;
1314 
1315                   g_delayed_requests.delete(l_count);
1316                END IF;
1317 
1318                l_count :=  G_Delayed_Requests.NEXT(l_count);
1319 
1320            END LOOP;
1321            -- End 2391781
1322 
1323            OE_GROUP_SCH_UTIL.Schedule_Set
1324                ( p_request_rec      => l_request_rec
1325                , x_return_status    => l_return_status);
1326 
1327          IF l_debug_level > 0 THEN
1328          oe_debug_pub.add('Group Schedule Return Status ' || l_return_status,1);
1329 	 END IF;
1330        -- 4026758
1331        ELSIF l_request_type =
1332                         OE_GLOBALS.G_DELETE_SET THEN
1333           l_set_id := l_request_rec.param1;
1334 
1335           K := G_Delayed_Requests.FIRST;
1336 
1337           WHILE K is not null
1338           LOOP
1339 
1340              IF (G_Delayed_Requests(K).request_type =
1341                            OE_GLOBALS.G_DELETE_SET)
1342                AND G_Delayed_Requests(K).param1 = l_set_id
1343                AND K <> p_request_ind THEN
1344 
1345                 g_delayed_requests.delete(K);
1346 
1347              END IF;
1348 
1349              K :=  G_Delayed_Requests.NEXT(K);
1350 
1351           END LOOP;
1352 
1353           oe_set_util.Delete_Set(p_request_rec      => l_request_rec
1354                                , x_return_status    => l_return_status);
1355           oe_debug_pub.add('Delete Set Return Status ' || l_return_status,1);
1356        ELSIF (l_request_type =
1357                         OE_GLOBALS.G_SCHEDULE_LINE OR
1358               l_request_type =
1359                         OE_GLOBALS.G_RESCHEDULE_LINE) then
1360 
1361          l_index  := 0;
1362          l_set    := l_request_rec.param1;
1363 
1364          K        := G_Delayed_Requests.FIRST;
1365 
1366          WHILE K is not null -- while loop safer than tbl.first to last
1367          LOOP
1368 
1369             IF (G_Delayed_Requests(K).request_type =
1370                            OE_GLOBALS.G_SCHEDULE_LINE OR
1371                 G_Delayed_Requests(K).request_type =
1372                            OE_GLOBALS.G_RESCHEDULE_LINE) AND
1373                 G_Delayed_Requests(K).param1 = l_set
1374             THEN
1375 
1376                 l_index := l_index + 1;
1377 	    	l_sch_set_tbl(l_index) := g_delayed_requests(K);
1378                 g_delayed_requests(K).processed := 'I';
1379             END IF;
1380 
1381             K :=  G_Delayed_Requests.NEXT(K);
1382          END LOOP;
1383          IF l_debug_level > 0 THEN
1384          oe_debug_pub.add('Calling Sch_Line with '|| l_sch_set_tbl.count,1);
1385          END IF;
1386 
1387          -- Commented out the below code -Bug4504362
1388              OE_GROUP_SCH_UTIL.Schedule_Set_lines
1389                ( p_sch_set_tbl     => l_sch_set_tbl
1390                , x_return_status   => l_return_status);
1391 
1392 
1393          IF l_debug_level > 0 THEN
1394          oe_debug_pub.add('After Calling Sch_Line: '|| l_return_status,1);
1395          END IF;
1396 
1397          -- If Schedule_Line is success for all the lines, mark
1398          -- the request for others lines as processed.
1399 
1400          K         := G_Delayed_Requests.FIRST;
1401          WHILE K is not null -- while loop safer than tbl.first to last
1402          LOOP
1403 
1404            IF (G_Delayed_Requests(K).request_type =
1405                            OE_GLOBALS.G_SCHEDULE_LINE OR
1406                G_Delayed_Requests(K).request_type =
1407                            OE_GLOBALS.G_RESCHEDULE_LINE) AND
1408                 G_Delayed_Requests(K).param1 = l_set
1409            THEN
1410                 l_index := l_index + 1;
1411                IF l_return_status <> FND_API.G_RET_STS_UNEXP_ERROR
1412                THEN
1413                   g_delayed_requests(K).processed := 'Y';
1414                ELSE
1415                   g_delayed_requests(K).processed := Null;
1416                END IF;
1417            END IF;
1418 
1419             K :=  G_Delayed_Requests.NEXT(K);
1420 
1421          END LOOP;
1422 
1423        -- bug 1829201, commitment related changes.
1424        ELSIF  l_request_type = OE_GLOBALS.G_CALCULATE_COMMITMENT THEN
1425         IF l_debug_level > 0 THEN
1426 	    oe_debug_pub.add('Calling procedure calculate_commtment!',1);
1427         END IF;
1428 
1429                      --bug 3560198
1430 			OE_Commitment_Pvt.calculate_commitment(
1431                             p_request_rec        => l_request_rec
1432                            ,x_return_status      => l_return_status
1433                           );
1434 
1435        ELSIF  l_request_type = OE_GLOBALS.G_UPDATE_COMMITMENT THEN
1436 
1437 			OE_Commitment_Pvt.update_commitment
1438                           ( p_line_id       => l_request_rec.entity_id
1439                            ,x_return_status => l_return_status
1440                           );
1441        -- multiple payments
1442        ELSIF  l_request_type = OE_GLOBALS.G_UPDATE_COMMITMENT_APPLIED THEN
1443          IF l_debug_level > 0 THEN
1444          oe_debug_pub.add('OEXVREQB param1 is: '||l_request_rec.param1,3);
1445          oe_debug_pub.add('OEXVREQB param2 is: '||l_request_rec.param2,3);
1446          oe_debug_pub.add('OEXVREQB param3 is: '||l_request_rec.param3,3);
1447          END IF;
1448 			OE_Commitment_Pvt.update_commitment_applied
1449                           ( p_line_id       => l_request_rec.entity_id
1450                            ,p_amount	    => l_request_rec.param1
1451                            ,p_header_id     => l_request_rec.param2
1452                            ,p_commitment_id => l_request_rec.param3
1453                            ,x_return_status => l_return_status
1454                           );
1455 
1456        -- Included for the Spares Management (ikon) project  mshenoy
1457        -- For the delayed request type of Create Internal Req call the procedure
1458       ELSIF  l_request_type = OE_GLOBALS.G_CREATE_INTERNAL_REQ THEN
1459          IF l_debug_level > 0 THEN
1460 	     oe_debug_pub.add(' Calling auto_create_internal_req hdr id '|| l_entity_id,1);
1461          END IF;
1462              OE_DELAYED_REQUESTS_UTIL.auto_create_internal_req
1463                      ( p_ord_header_id     => l_entity_id
1464                       ,x_return_status   => l_return_status);
1465            IF l_debug_level > 0 THEN
1466          oe_debug_pub.add('After Calling auto_create_internal_req ret_status : '|| l_return_status,1);
1467            END IF;
1468 
1469 /* Modified the following condition to fix the bug 6663462 */
1470 
1471        ELSIF l_request_type = OE_GLOBALS.G_SCHEDULE_ATO OR
1472              l_request_type = OE_GLOBALS.G_SCHEDULE_SMC OR
1473              l_request_type = OE_GLOBALS.G_SCHEDULE_NONSMC  OR
1474              l_request_type = OE_GLOBALS.G_DELAYED_SCHEDULE THEN
1475          IF l_debug_level > 0 THEN
1476          oe_debug_pub.add('calling Process_Scheduling_Request');
1477          END IF;
1478          Process_Scheduling_Request
1479          ( p_request_ind   => p_request_ind
1480           ,p_request_rec   => l_request_rec
1481           ,x_return_status => l_return_status);
1482          IF l_debug_level > 0 THEN
1483          oe_debug_pub.add('Scheduling_Request '|| l_return_status);
1484          END IF;
1485        ---------
1486        -- Added by rsreeniv
1487        ----------
1488       ELSIF l_request_rec.request_type = OE_GLOBALS.G_FREIGHT_FOR_INCLUDED THEN
1489         IF l_debug_level > 0 THEN
1490              Oe_Debug_pub.Add('Before Executing Delayed request Freight for included for '||l_request_rec.entity_id);
1491 			 Oe_Debug_pub.Add('Before Order Price - Freight');
1492 	         Oe_Debug_pub.Add('The Event is '||l_request_rec.param2);
1493         END IF;
1494 		l_Price_Control_Rec.pricing_event := l_request_rec.param2;
1495 		l_Price_Control_Rec.calculate_flag :=  QP_PREQ_GRP.G_SEARCH_N_CALCULATE;
1496 		l_Price_Control_Rec.Simulation_Flag := 'N';
1497 
1498                 If l_Price_Control_Rec.pricing_event = 'BATCH' Then
1499                    l_price_control_rec.source_order_amount_flag := 'Y';
1500                 End If;
1501 
1502                 j := 1;
1503 
1504              /*
1505 
1506               FOR inclinesrec in included_lines_cur(l_request_rec.entity_id) LOOP
1507 
1508                  IF OE_LINE_ADJ_UTIL.G_CHANGED_LINE_TBL.exists(inclinesrec.line_id) THEN
1509 
1510                  l_line_tbl(j) := OE_LINE_UTIL.QUERY_ROW(p_line_id => inclinesrec.line_id);
1511 
1512                  END IF;
1513 
1514                  j := j + 1;
1515 
1516               END LOOP; */
1517 
1518 
1519 		oe_order_adj_pvt.Price_line(
1520 					X_Return_Status	=> l_Return_Status
1521 					,p_Request_Type_code=> 'ONT'
1522 					,p_Control_rec		=> l_Price_Control_Rec
1523                                         ,p_Header_id            => l_request_rec.entity_id
1524 					,p_write_to_db      => TRUE
1525 					,p_request_rec      => l_request_rec
1526 					,x_line_Tbl         => l_Line_Tbl
1527 					);
1528         IF l_debug_level > 0 THEN
1529 			 Oe_Debug_pub.Add('After Header Price');
1530 	         Oe_Debug_pub.Add('After Executing Delayed request Price line for '||l_request_rec.entity_id);
1531         END IF;
1532        --MRG BGN
1533       ELSIF l_request_type = OE_GLOBALS.G_MARGIN_HOLD THEN
1534          IF l_debug_level > 0 THEN
1535          oe_debug_pub.add('From delayed request: executing Oe_Margin_Pvt.Margin_Hold');
1536          END IF;
1537          Oe_Margin_Pvt.Margin_Hold(p_header_id => l_request_rec.entity_id);
1538        --MRG END
1539        -------------
1540        --Added btea
1541        -------------
1542 
1543 
1544        --MRG BGN
1545        ELSIF l_request_type = OE_GLOBALS.G_GET_COST THEN
1546           IF l_debug_level > 0 THEN
1547          oe_debug_pub.add('From delayed request: executing Oe_Margin_Pvt.Get_Cost');
1548           END IF;
1549          l_unit_cost := Oe_Margin_Pvt.Get_Cost(p_request_rec => l_request_rec);
1550        --MRG END
1551 
1552 
1553        ELSIF l_request_type = OE_GLOBALS.G_DEL_CHG_LINES Then
1554            IF l_debug_level > 0 THEN
1555           oe_debug_pub.add('Executing Delete_Changed_Lines delayed request');
1556            END IF;
1557 
1558           Oe_Line_Adj_Util.Delete_Changed_Lines_Tbl;
1559           IF l_debug_level > 0 THEN
1560           oe_debug_pub.add('After Delete_Changed_Lines delayed request');
1561           END IF;
1562 
1563        ELSIF l_request_type = OE_GLOBALS.G_VERSION_AUDIT THEN
1564 
1565           OE_Versioning_Util.Execute_Versioning_Request(p_header_id => l_request_rec.entity_id,
1566         p_document_type => l_request_rec.entity_code,
1567         p_changed_attribute => l_request_rec.param1,
1568         x_msg_count => l_msg_count,
1569         x_msg_data => l_msg_data,
1570         x_return_status => x_return_status);
1571 
1572        -- BLANKETS: Ignore process release related requests here. These
1573        -- will be executed with all requests in process_delayed_requests call.
1574        ELSIF l_request_type = OE_GLOBALS.G_PROCESS_RELEASE THEN
1575          RETURN;
1576        ELSIF l_request_type = OE_GLOBALS.G_VALIDATE_RELEASE_SHIPMENTS THEN
1577          RETURN;
1578 
1579        -- Delayed requests logged by blankets business object APIs.
1580        ELSIF l_request_type = 'VALIDATE_BLANKET_LINE_NUMBER' THEN
1581           OE_BLANKET_UTIL.VALIDATE_LINE_NUMBER( p_req_ind => p_request_ind,
1582                             x_return_status => l_return_status);
1583 
1584        ELSIF l_request_type = 'VALIDATE_BLANKET_INV_ITEM' THEN
1585           OE_BLANKET_UTIL.VALIDATE_ITEM_UNIQUENESS( p_req_ind => p_request_ind,
1586                             x_return_status => l_return_status);
1587        ELSIF l_request_type = 'CREATE_BLANKET_PRICE_LIST' THEN
1588           OE_BLANKET_UTIL.create_price_list( p_index => p_request_ind,
1589                             x_return_status => l_return_status);
1590        ELSIF l_request_type = 'ADD_BLANKET_PRICE_LIST_LINE' THEN
1591           OE_BLANKET_UTIL.add_price_list_line( p_req_ind => p_request_ind,
1592                             x_return_status => l_return_status);
1593        -- for bug 3309427
1594        ELSIF l_request_type = OE_GLOBALS.G_CLEAR_BLKT_PRICE_LIST_LINE THEN
1595           OE_BLANKET_UTIL.clear_price_list_line( p_req_ind => p_request_ind,
1596                             x_return_status => l_return_status);
1597        ELSIF l_request_type = 'RECORD_BLANKET_HISTORY' THEN
1598           OE_BLANKET_UTIL.record_blanket_history(
1599                             x_return_status => l_return_status);
1600        ELSIF l_request_type = 'VALIDATE_BLANKET_SOLD_TO' THEN
1601           OE_BLANKET_UTIL.validate_sold_to( p_header_id => l_entity_id,
1602                             p_sold_To_org_id => l_request_rec.param1,
1603                             x_return_status => l_return_status);
1604        -- End of requests logged by blankets business object APIs.
1605        -- Begin of Multiple Payments
1606        	ELSIF l_request_type = OE_GLOBALS.G_SPLIT_PAYMENT then
1607 	    OE_PrePayment_Pvt.split_payment (
1608 	                    p_line_id               	  => l_request_rec.entity_id
1609 	                  , p_header_id               	  => l_request_rec.param2
1610 	                  , p_split_from_line_id  	  => l_request_rec.param1
1611 	                  , x_return_status        	 => l_return_status
1612 	                  , x_msg_count           	  => l_msg_count
1613 	                  , x_msg_data             	 => l_msg_data
1614 	                  );
1615        -- End of Multiple Payments
1616 
1617        ELSIF l_request_type = OE_GLOBALS.G_UPDATE_HDR_PAYMENT then
1618 
1619          IF l_debug_level > 0 THEN
1620            oe_debug_pub.add('param1 is : ' || l_request_rec.param1);
1621            oe_debug_pub.add('param2 is : ' || l_request_rec.param2);
1622            oe_debug_pub.add('entity id is : ' || l_request_rec.entity_id);
1623            oe_debug_pub.add('entity code is : ' || l_request_rec.entity_code);
1624          END IF;
1625 
1626             IF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_LINE_PAYMENT
1627             AND l_request_rec.param1 = 'UPDATE_LINE' THEN
1628                payment_line_id := l_request_rec.entity_id;
1629                payment_header_id := l_request_rec.param2;
1630 
1631             ELSE
1632                payment_header_id := l_request_rec.entity_id;
1633                payment_line_id := NULL;
1634             END IF;
1635 
1636             IF l_debug_level  > 0 THEN
1637               oe_debug_pub.add('header id for update_hdr_payment is : ' || payment_header_id,3);
1638               oe_debug_pub.add('line id for update_hdr_payment is : ' || payment_line_id,3);
1639             END IF;
1640 
1641 	    OE_PrePayment_Pvt.Update_Hdr_Payment (
1642 	                    p_header_id             => payment_header_id
1643                           , p_action                => l_request_rec.param1
1644                           , p_line_id               => payment_line_id
1645 	                  , x_return_status         => l_return_status
1646 	                  , x_msg_count             => l_msg_count
1647 	                  , x_msg_data              => l_msg_data
1648 	                  );
1649 
1650        ELSIF l_request_type = OE_GLOBALS.G_APPLY_PPP_HOLD  THEN
1651 	    --bug3507871 start
1652         IF l_debug_level > 0 THEN
1653 	    oe_debug_pub.add('Before calling Process_Payments for applying PPP hold');
1654         END IF;
1655 
1656 	    OE_PREPAYMENT_PVT.Process_Payments(
1657              	       p_header_id 	=> l_request_rec.entity_id,
1658                        p_calling_action => 'UPDATE',
1659                        p_amount         => null,
1660                        p_delayed_request=> FND_API.G_TRUE,
1661                        x_msg_data	=> l_msg_data,
1662                        x_msg_count	=> l_msg_count,
1663                        x_return_status	=> l_return_status);
1664 	    --bug3507871 end
1665 --bug3625027 start
1666       ELSIF l_request_type = OE_GLOBALS.G_PROCESS_PAYMENT THEN
1667         IF l_debug_level > 0 THEN
1668 	    oe_debug_pub.add('Request Type: '||l_request_type);
1669         END IF;
1670 	 IF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_HEADER_PAYMENT THEN
1671         IF l_debug_level > 0 THEN
1672 	       oe_debug_pub.add('Before calling Process_Payments Procedure at the header level');
1673         END IF;
1674 
1675 	    OE_PREPAYMENT_PVT.Process_Payments(
1676              	       p_header_id 	=> l_request_rec.entity_id,
1677                        p_calling_action => null,
1678                        p_amount         => null,
1679                        p_delayed_request=> FND_API.G_TRUE,
1680 		       p_process_prepayment=>'N',
1681 	               p_process_authorization=>'N',
1682                        x_msg_data	=> l_msg_data,
1683                        x_msg_count	=> l_msg_count,
1684                        x_return_status	=> l_return_status);
1685 	 ELSIF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_LINE_PAYMENT THEN
1686         IF l_debug_level > 0 THEN
1687 	    oe_debug_pub.add('Before calling Process_Payments Procedure at the line level');
1688         END IF;
1689 
1690 	    OE_PREPAYMENT_PVT.Process_Payments(
1691              	       p_header_id 	=> l_request_rec.entity_id,
1692 		       p_line_id        => l_request_rec.param1,
1693                        p_calling_action => null,
1694                        p_amount         => null,
1695                        p_delayed_request=> FND_API.G_TRUE,
1696 		       p_process_prepayment=>'N',
1697 	               p_process_authorization=>'N',
1698 		       x_msg_data	=> l_msg_data,
1699                        x_msg_count	=> l_msg_count,
1700                        x_return_status	=> l_return_status);
1701 	END IF;
1702 --bug3625027 end
1703 
1704        ELSIF l_request_type = OE_GLOBALS.G_DELETE_PAYMENT_HOLD  THEN
1705          IF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_LINE_PAYMENT THEN
1706             payment_line_id := l_request_rec.entity_id;
1707             payment_header_id := l_request_rec.param2;
1708          ELSE
1709             payment_header_id := l_request_rec.entity_id;
1710             payment_line_id := NULL;
1711          END IF;
1712 
1713          IF l_debug_level  > 0 THEN
1714            oe_debug_pub.add('header id for delete_payment_hold is : ' || payment_header_id,3);
1715            oe_debug_pub.add('line id for delete_payment_hold is : ' || payment_line_id,3);
1716          END IF;
1717 
1718 	 OE_PrePayment_Pvt.Delete_Payment_Hold
1719                           ( p_line_id          	  => payment_line_id
1720 	                  , p_header_id           => payment_header_id
1721 	                  , p_hold_type           => l_request_rec.param1
1722 	                  , x_return_status       => l_return_status
1723 	                  , x_msg_count           => l_msg_count
1724 	                  , x_msg_data            => l_msg_data
1725 	                  );
1726 
1727        -- End of Multiple Payments
1728 
1729        -- 11i10 Work Flow Changes
1730        ELSIF l_request_type = 'BLANKET_DATE_CHANGE' THEN
1731           OE_BLANKET_WF_UTIL.Blanket_Date_Changed(p_header_id => l_entity_id,
1732                                                   x_return_status => l_return_status);
1733         -- End of Work Flow Changes.
1734        -- 11i10 Pricing Changes for blankets
1735        ELSIF l_request_type IN ('CREATE_MODIFIER_LIST'
1736                                ,'ADD_MODIFIER_LIST_LINE'
1737                                )
1738        THEN
1739           OE_BLANKET_PRICING_UTIL.Create_Modifiers(
1740                             p_index         => p_request_ind,
1741                             x_return_status => l_return_status);
1742 
1743        ELSIF l_request_type IN (OE_GLOBALS.G_GENERATE_XML_REQ_HDR, OE_GLOBALS.G_GENERATE_XML_REQ_LN) THEN
1744         -- only do processing on header-level requests
1745 
1746         IF l_request_type = OE_GLOBALS.G_GENERATE_XML_REQ_HDR THEN
1747         OE_DELAYED_REQUESTS_UTIL.process_xml_delayed_request(p_request_ind => p_request_ind,
1748                                                                x_return_status  => l_return_status);
1749         END IF;
1750 	--R12 CC Encryption
1751 	ELSIF l_request_type = OE_GLOBALS.G_DELETE_PAYMENTS  THEN
1752 		IF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_LINE_PAYMENT THEN
1753 			payment_line_id := l_request_rec.entity_id;
1754 			payment_header_id := l_request_rec.param1;
1755 			old_invoice_to_org_id := to_number(l_request_rec.param2);
1756 		ELSE
1757 			payment_header_id := l_request_rec.entity_id;
1758 			payment_line_id := NULL;
1759 			old_invoice_to_org_id := to_number(l_request_rec.param1);
1760 		END IF;
1761 
1762                 IF l_debug_level  > 0 THEN
1763                   oe_debug_pub.add('header id for delete_payments is : ' || payment_header_id,3);
1764                   oe_debug_pub.add('line id for delete_payments is : ' || payment_line_id,3);
1765                 END IF;
1766 
1767 		OE_PrePayment_Pvt.Delete_Payments
1768 		 ( p_line_id             => payment_line_id
1769 		, p_header_id           => payment_header_id
1770 		, p_invoice_to_org_id	=> old_invoice_to_org_id
1771 		, x_return_status       => l_return_status
1772                 , x_msg_count           => l_msg_count
1773 		, x_msg_data            => l_msg_data
1774 		);
1775        --R12 CC Encryption
1776        -- End of requests logged by blankets business object APIs.
1777        ELSE
1778             FND_MESSAGE.SET_NAME('ONT','ONT_INVALID_REQUEST');
1779 		  FND_MESSAGE.SET_TOKEN('ACTION',l_request_type);
1780             OE_MSG_PUB.Add;
1781             l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1782 
1783        END IF;
1784 
1785        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1786               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1787        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1788               RAISE FND_API.G_EXC_ERROR;
1789        END IF;
1790 
1791        IF (p_delete = FND_API.G_TRUE) then
1792 
1793              G_Delayed_Requests.Delete(p_request_ind);
1794 
1795 /*
1796        BUG 1794544 - do not delete from req entities table
1797        , delete table in the end when all requests are processed
1798        This to improve performance as this search loops through
1799        the entire pl/sql table which becomes very large with
1800        greater number of lines being processed
1801 	-- Delete all the records in the requesting entities table
1802 	-- that have this request.
1803 
1804 	l_req_entity_ind := G_Requesting_Entities.First;
1805 
1806 
1807           WHILE l_req_entity_ind IS NOT NULL LOOP
1808 	   IF G_Requesting_Entities(l_req_entity_ind).request_index = p_request_ind
1809 	   THEN
1810 		G_Requesting_Entities.Delete(l_req_entity_ind);
1811 	   END IF;
1812 	   l_req_entity_ind := G_Requesting_Entities.Next(l_req_entity_ind);
1813 	  END LOOP;
1814 */
1815 
1816        ELSE
1817 
1818           G_Delayed_Requests(p_request_ind).processed := 'Y';
1819 
1820        END IF;
1821 
1822 /*       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1823 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1824        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1825 	    RAISE FND_API.G_EXC_ERROR;
1826        END IF;*/
1827 /* The request  is not removed if return_status is error  Rajeev*/
1828        --IF (p_delete = FND_API.G_TRUE) then
1829         --  G_Delayed_Requests.Delete(p_request_ind);
1830        --ELSE
1831         --  G_Delayed_Requests(p_request_ind).processed := 'Y';
1832        --END IF;
1833        IF l_debug_level > 0 THEN
1834            oe_debug_pub.add('leaving Process_Request_Pvt', 1);
1835        END IF;
1836 EXCEPTION
1837 
1838     WHEN FND_API.G_EXC_ERROR THEN
1839            oe_debug_pub.add('exe error Process_Request_Pvt', 1);
1840 	   G_Delayed_Requests(p_request_ind).processed := 'N';
1841            oe_debug_pub.add
1842            ('1 type----- '|| G_Delayed_Requests(p_request_ind).request_type, 1);
1843            oe_debug_pub.add
1844            ('1 ind----- '|| p_request_ind, 1);
1845         x_return_status := FND_API.G_RET_STS_ERROR;
1846 
1847     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1848            oe_debug_pub.add('unexp error Process_Request_Pvt', 1);
1849            oe_debug_pub.add('SQL ERROR MESSAGE:'||SQLERRM);
1850 	   G_Delayed_Requests(p_request_ind).processed := 'N';
1851         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1852 
1853    WHEN NO_DATA_FOUND THEN
1854         oe_debug_pub.add('Exiting  Process_Request_Pvt no_data_found exception ');
1855         G_Delayed_Requests(p_request_ind).processed := 'N';
1856         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1857 
1858 
1859         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1860         THEN
1861             OE_MSG_PUB.Add_Exc_Msg
1862             (   G_PKG_NAME
1863             ,   'Process_Request_Pvt'
1864             );
1865         END IF;
1866 
1867     WHEN OTHERS THEN
1868 	   G_Delayed_Requests(p_request_ind).processed := 'N';
1869            oe_debug_pub.add('SQL ERROR MESSAGE FOR WHEN OTHRES:'||SQLERRM);
1870         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1871 
1872         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1873         THEN
1874             OE_MSG_PUB.Add_Exc_Msg
1875             (   G_PKG_NAME
1876             ,   'Process_Request_Pvt'
1877             );
1878         END IF;
1879 
1880    oe_debug_pub.add('Exiting  Process_Request_Pvt with others exception ');
1881 
1882 
1883 End Process_Request_Pvt;
1884 
1885 /** End Local Procedures **/
1886 
1887 /** Global Procedures **/
1888 Procedure  Log_Request
1889 (   p_entity_code	IN VARCHAR2
1890 ,   p_entity_id		IN NUMBER
1891 ,   p_requesting_entity_code IN VARCHAR2
1892 ,   p_requesting_entity_id   IN NUMBER
1893 ,   p_request_type	IN VARCHAR2
1894 ,   p_request_unique_key1	IN VARCHAR2 := NULL
1895 ,   p_request_unique_key2	IN VARCHAR2 := NULL
1896 ,   p_request_unique_key3	IN VARCHAR2 := NULL
1897 ,   p_request_unique_key4	IN VARCHAR2 := NULL
1898 ,   p_request_unique_key5	IN VARCHAR2 := NULL
1899 ,   p_param1		IN VARCHAR2 := NULL
1900 ,   p_param2		IN VARCHAR2 := NULL
1901 ,   p_param3		IN VARCHAR2 := NULL
1902 ,   p_param4		IN VARCHAR2 := NULL
1903 ,   p_param5		IN VARCHAR2 := NULL
1904 ,   p_param6		IN VARCHAR2 := NULL
1905 ,   p_param7		IN VARCHAR2 := NULL
1906 ,   p_param8		IN VARCHAR2 := NULL
1907 ,   p_param9		IN VARCHAR2 := NULL
1908 ,   p_param10		IN VARCHAR2 := NULL
1909 ,   p_param11		IN VARCHAR2 := NULL
1910 ,   p_param12		IN VARCHAR2 := NULL
1911 ,   p_param13		IN VARCHAR2 := NULL
1912 ,   p_param14 		IN VARCHAR2 := NULL
1913 ,   p_param15		IN VARCHAR2 := NULL
1914 ,   p_param16		IN VARCHAR2 := NULL
1915 ,   p_param17		IN VARCHAR2 := NULL
1916 ,   p_param18		IN VARCHAR2 := NULL
1917 ,   p_param19		IN VARCHAR2 := NULL
1918 ,   p_param20		IN VARCHAR2 := NULL
1919 ,   p_param21		IN VARCHAR2 := NULL
1920 ,   p_param22		IN VARCHAR2 := NULL
1921 ,   p_param23		IN VARCHAR2 := NULL
1922 ,   p_param24		IN VARCHAR2 := NULL
1923 ,   p_param25		IN VARCHAR2 := NULL
1924 ,   p_date_param1   IN DATE := NULL
1925 ,   p_date_param2   IN DATE := NULL
1926 ,   p_date_param3   IN DATE := NULL
1927 ,   p_date_param4   IN DATE := NULL
1928 ,   p_date_param5   IN DATE := NULL
1929 ,   p_date_param6   IN DATE := NULL
1930 ,   p_date_param7   IN DATE := NULL
1931 ,   p_date_param8   IN DATE := NULL
1932 ,   p_long_param1	IN VARCHAR2 := NULL
1933 , x_return_status OUT NOCOPY VARCHAR2
1934 
1935 )
1936   IS
1937      l_request_search_rslt	VARCHAR2(1);
1938      l_return_status		VARCHAR2(1);
1939      l_request_ind		NUMBER;
1940      l_req_entity_ind		NUMBER;
1941      l_request			OE_Order_PUB.REQUEST_REC_TYPE;
1942      l_req_entity		OE_Order_PUB.Requesting_Entity_Rec_Type;
1943      l_log_request              VARCHAR2(1);
1944      l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1945 BEGIN
1946 
1947    IF l_debug_level  > 0 THEN
1948       oe_debug_pub.add('Entering Procedure Log_Request in Package OE_Delayed_Requests_Pvt, entity id: '||p_entity_id||', request type:'||p_request_type);
1949    END IF;
1950 
1951     -- Initialize the request_record
1952    l_request.request_type		:= p_request_type;
1953    l_request.entity_id			:= p_entity_id;
1954    l_request.entity_code		:= p_entity_code;
1955    l_request.request_unique_key1 	:= p_request_unique_key1;
1956    l_request.request_unique_key2 	:= p_request_unique_key2;
1957    l_request.request_unique_key3 	:= p_request_unique_key3;
1958    l_request.request_unique_key4 	:= p_request_unique_key4;
1959    l_request.request_unique_key5 	:= p_request_unique_key5;
1960    l_request.param1			:= p_param1;
1961    l_request.param2			:= p_param2;
1962    l_request.param3			:= p_param3;
1963    l_request.param4			:= p_param4;
1964    l_request.param5			:= p_param5;
1965    l_request.param6			:= p_param6;
1966    l_request.param7			:= p_param7;
1967    l_request.param8			:= p_param8;
1968    l_request.param9			:= p_param9;
1969    l_request.param10			:= p_param10;
1970    l_request.param11			:= p_param11;
1971    l_request.param12			:= p_param12;
1972    l_request.param13			:= p_param13;
1973    l_request.param14			:= p_param14;
1974    l_request.param15			:= p_param15;
1975    l_request.param16			:= p_param16;
1976    l_request.param17			:= p_param17;
1977    l_request.param18			:= p_param18;
1978    l_request.param19			:= p_param19;
1979    l_request.param20			:= p_param20;
1980    l_request.param21			:= p_param21;
1981    l_request.param22			:= p_param22;
1982    l_request.param23			:= p_param23;
1983    l_request.param24			:= p_param24;
1984    l_request.param25			:= p_param25;
1985    l_request.date_param1           := p_date_param1;
1986    l_request.date_param2           := p_date_param2;
1987    l_request.date_param3           := p_date_param3;
1988    l_request.date_param4           := p_date_param4;
1989    l_request.date_param5           := p_date_param5;
1990    l_request.date_param6           := p_date_param6;
1991    l_request.date_param7           := p_date_param7;
1992    l_request.date_param8           := p_date_param8;
1993    l_request.long_param1		:= p_long_param1;
1994 
1995    -- Initialize the return variable
1996    x_return_status := FND_API.G_RET_STS_SUCCESS;
1997 
1998    Check_For_Request(p_entity_code,
1999 		     p_entity_id,
2000 		     p_request_type,
2001 		     p_request_unique_key1,
2002 		     p_request_unique_key2,
2003 		     p_request_unique_key3,
2004 		     p_request_unique_key4,
2005 		     p_request_unique_key5,
2006 		     l_request_ind,
2007 		     l_request_search_rslt,
2008 		     l_return_status);
2009 
2010        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2011 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2012        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2013 	    RAISE FND_API.G_EXC_ERROR;
2014        END IF;
2015 
2016      l_request.processed := 'N';
2017 
2018      IF l_request.request_type = OE_GLOBALS.G_PRICE_ORDER
2019         AND (l_request.request_unique_key1 = 'BATCH'
2020               AND nvl(l_request.request_unique_key2,'N') = 'Y'
2021               OR l_request.request_unique_key1 = 'ORDER'
2022               AND nvl(l_request.request_unique_key2,'N') = 'N'
2023               OR l_request.request_unique_key1 = 'BATCH'
2024               AND nvl(l_request.request_unique_key2,'N') = 'N'
2025               OR l_request.request_unique_key1 = 'BATCH,BOOK'
2026               AND nvl(l_request.request_unique_key2,'N') = 'Y'
2027               OR l_request.request_unique_key1 = 'ORDER,BOOK'
2028               AND nvl(l_request.request_unique_key2,'N') = 'N'
2029               OR l_request.request_unique_key1 = 'BATCH,BOOK'
2030               AND nvl(l_request.request_unique_key2,'N') = 'N')
2031          AND l_request_search_rslt = FND_API.g_false THEN
2032 
2033          IF l_debug_level  > 0 THEN
2034            oe_debug_pub.add('In log_request, calling check_pricing_request.',3);
2035            oe_debug_pub.add('request_unique_key1 is: '||l_request.request_unique_key1,3);
2036            oe_debug_pub.add('request_unique_key2 is: '||l_request.request_unique_key2,3);
2037          END IF;
2038          Check_Pricing_Request
2039          ( p_request_ind   => l_request_ind
2040           ,p_request_rec   => l_request
2041           ,x_log_request   => l_log_request);
2042 
2043          -- no need to log this delayed request.
2044          IF l_log_request = 'N' THEN
2045             RETURN;
2046          END IF;
2047 
2048          --Bug 7566697
2049          IF oe_mass_change_pvt.Lines_Remaining = 'Y'
2050          THEN
2051             oe_debug_pub.add('Called from Mass Change, line remaining, NOT logging pricing request');
2052             RETURN;
2053          ELSE
2054             oe_debug_pub.add('Called from Mass Change, last line reached, logging pricing request');
2055          END IF;
2056 
2057       END IF;
2058 
2059       /* Added the following code to fix the fp bug 3498435 */
2060 
2061          IF l_request.request_type = OE_GLOBALS.G_PRICE_LINE
2062            AND (nvl(l_request.request_unique_key1, l_request.param2) = 'BATCH'
2063                  AND nvl(l_request.request_unique_key2,'N') = 'N'
2064                  OR nvl(l_request.request_unique_key1,l_request.param2) = 'BATCH,BOOK'
2065                  AND nvl(l_request.request_unique_key2,'N') = 'N')
2066                  OR nvl(l_request.request_unique_key1, l_request.param2) = 'LINE'
2067             AND l_request_search_rslt = FND_API.g_false THEN
2068             Check_Pricing_Request
2069             ( p_request_ind   => l_request_ind
2070              ,p_request_rec   => l_request
2071              ,x_log_request   => l_log_request);
2072                  -- no need to log this delayed request.
2073             IF l_log_request = 'N' THEN
2074                RETURN;
2075             END IF;
2076 
2077          END IF;
2078 
2079      /* End of the code added to fix the fp bug 3498435  */
2080 
2081       IF l_request_search_rslt = FND_API.g_true       -- replace the request
2082       THEN
2083     IF l_debug_level > 0 THEN
2084 	    OE_Debug_PUB.ADD('Request replaced');
2085     END IF;
2086 
2087         IF g_delayed_requests(l_request_ind).request_type =
2088            OE_GLOBALS.G_CASCADE_CHANGES THEN
2089           IF l_debug_level > 0 THEN
2090              OE_Debug_PUB.ADD('cascade changes, orig qty '||
2091           g_delayed_requests(l_request_ind).param1, 3);
2092           END IF;
2093           l_request.param1 := g_delayed_requests(l_request_ind).param1;
2094 
2095         ELSIF g_delayed_requests(l_request_ind).request_type =
2096            OE_GLOBALS.G_UPDATE_OPTION THEN
2097           IF l_debug_level > 0 THEN
2098           OE_Debug_PUB.ADD('update option, orig qty '||
2099           g_delayed_requests(l_request_ind).param4, 3);
2100           END IF;
2101 
2102           l_request.param4 := g_delayed_requests(l_request_ind).param4;
2103 
2104         -- Added 09-DEC-2002
2105         -- BLANKETS: exception for blankets to retain old parameters
2106         ELSIF p_request_type = OE_GLOBALS.G_PROCESS_RELEASE
2107         THEN
2108             IF l_debug_level > 0 THEN
2109             oe_debug_pub.add('Retain parameters for old values');
2110             END IF;
2111             l_request.param1 := g_delayed_requests(l_request_ind).param1;
2112             l_request.param2 := g_delayed_requests(l_request_ind).param2;
2113             l_request.param3 := g_delayed_requests(l_request_ind).param3;
2114             l_request.param4 := g_delayed_requests(l_request_ind).param4;
2115             l_request.param5 := g_delayed_requests(l_request_ind).param5;
2116             l_request.param6 := g_delayed_requests(l_request_ind).param6;
2117 
2118         ELSIF p_request_type = OE_GLOBALS.G_DROPSHIP_CMS
2119         THEN
2120             l_request.param1  :=  g_delayed_requests(l_request_ind).param1;
2121             l_request.param2  :=  g_delayed_requests(l_request_ind).param2;
2122             l_request.param3  :=  g_delayed_requests(l_request_ind).param3;
2123             l_request.param4  :=  g_delayed_requests(l_request_ind).param4;
2124             l_request.param5  :=  g_delayed_requests(l_request_ind).param5;
2125             l_request.param6  :=  g_delayed_requests(l_request_ind).param6;
2126 /*****Begin changes for bug#6918700*********/
2127 --          l_request.param7  :=  g_delayed_requests(l_request_ind).param7;
2128             l_request.date_param1  :=  g_delayed_requests(l_request_ind).date_param1;
2129 /*****End changes for bug#6918700*********/
2130 
2131         ELSIF p_request_type = OE_GLOBALS.G_GROUP_SCHEDULE
2132         THEN
2133             --2819258 -- Retain the operation
2134             l_request.param14  :=  g_delayed_requests(l_request_ind).param14;
2135         -- 4052648
2136         ELSIF p_request_type = OE_GLOBALS.G_SCHEDULE_ATO
2137         THEN
2138             -- Retain old parameter values.
2139             l_request.param7  :=  g_delayed_requests(l_request_ind).param7; -- Ship From
2140             l_request.param8  :=  g_delayed_requests(l_request_ind).param8; -- Demand Class
2141             l_request.param14  :=  g_delayed_requests(l_request_ind).param14; -- Ship To
2142             l_request.param15  :=  g_delayed_requests(l_request_ind).param15; -- Ship Method
2143             l_request.param16  :=  g_delayed_requests(l_request_ind).param16; -- Planning Priority
2144             l_request.param17  :=  g_delayed_requests(l_request_ind).param17; -- Delivery Lead Time
2145             l_request.date_param4  :=  g_delayed_requests(l_request_ind).date_param4; -- Req Date
2146             l_request.date_param5  :=  g_delayed_requests(l_request_ind).date_param5; -- SSD
2147             l_request.date_param6  :=  g_delayed_requests(l_request_ind).date_param6; -- SAD
2148         ELSIF p_request_type = OE_GLOBALS.G_SCHEDULE_SMC
2149         THEN
2150             -- Retain old parameter values.
2151             l_request.param7  :=  g_delayed_requests(l_request_ind).param7; -- Ship From
2152             l_request.param8  :=  g_delayed_requests(l_request_ind).param8; -- Demand Class
2153             l_request.param14  :=  g_delayed_requests(l_request_ind).param14; -- Ship To
2154             l_request.param15  :=  g_delayed_requests(l_request_ind).param15; -- Ship Method
2155             l_request.param16  :=  g_delayed_requests(l_request_ind).param16; -- Planning Priority
2156             l_request.param17  :=  g_delayed_requests(l_request_ind).param17; -- Delivery Lead Time
2157             l_request.date_param4  :=  g_delayed_requests(l_request_ind).date_param4; -- Req Date
2158             l_request.date_param5  :=  g_delayed_requests(l_request_ind).date_param5; -- SSD
2159             l_request.date_param6  :=  g_delayed_requests(l_request_ind).date_param6; -- SAD
2160         ELSIF p_request_type = OE_GLOBALS.G_SCHEDULE_NONSMC
2161         THEN
2162             -- Retain old parameter values.
2163             l_request.param7  :=  g_delayed_requests(l_request_ind).param7; -- Ship From
2164             l_request.param8  :=  g_delayed_requests(l_request_ind).param8; -- Demand Class
2165             l_request.param14  :=  g_delayed_requests(l_request_ind).param14; -- Ship To
2166             l_request.param15  :=  g_delayed_requests(l_request_ind).param15; -- Ship Method
2167             l_request.param16  :=  g_delayed_requests(l_request_ind).param16; -- Planning Priority
2168             l_request.param17  :=  g_delayed_requests(l_request_ind).param17; -- Delivery Lead Time
2169             l_request.date_param4  :=  g_delayed_requests(l_request_ind).date_param4; -- Req Date
2170             l_request.date_param5  :=  g_delayed_requests(l_request_ind).date_param5; -- SSD
2171             l_request.date_param6  :=  g_delayed_requests(l_request_ind).date_param6; -- SAD
2172 
2173 /* 7576948: IR ISO Change Management project Start */
2174 -- This code is hooked for IR ISO project and specific to
2175 -- OE_GLOBALS.G_UPDATE_REQUISITION delayed request, where if this request
2176 -- is getting replaced then certain parameter values should be retained
2177 -- or manipulated. Following parameters are used for this delayed request
2178 -- Please refer them with their meaning -
2179 --
2180 -- P_entity_code        Entity for which delayed request has to be logged.
2181 --                      In this project it can be OE_Globals.G_Entity_Line
2182 --                      or OE_Globals.G_Entity_Header
2183 -- P_entity_id          Primary key of the entity record. In this project,
2184 --                      it can be Order Line_id or Header_id
2185 -- P_requesting_entity_code Which entity has requested this delayed request to
2186 --                          be logged! In this project it will be OE_Globals.
2187 --                          G_Entity_Line or OE_Globals.G_Entity_Header
2188 -- P_requesting_entity_id       Primary key of the requesting entity. In this
2189 --                              project, it is Line_id or Header_id
2190 -- P_request_type       Indicates which business logic (or which procedure)
2191 --                      should be executed. In this project, it is OE_Global
2192 --                      s.G_UPDATE_REQUISITION
2193 -- P_request_unique_key1        Additional argument in form of parameters.
2194 --                              In this project, it will denote the Sales Order
2195 --                              Header id
2196 -- P_request_unique_key2        Additional argument in form of parameters.
2197 --                              In this project, it will denote the Requisition
2198 --                              Header id
2199 -- P_request_unique_key3        Additional argument in form of parameters. In
2200 --                              this project, it will denote the Requistion Line
2201 --                              id
2202 -- P_param1     Additional argument in form of parameters. In this project, it
2203 --              will denote net change in order quantity with respective single
2204 --              requisition line. If it is greater than 0 then it is an increment
2205 --              in the quantity, while if it is less than 0 then it is a decrement
2206 --              in the ordered quantity. If it is 0 then it indicates there is no
2207 --              change in ordered quantity value
2208 -- P_param2     Additional argument in form of parameters. In this project, it
2209 --              will denote whether internal sales order is cancelled or not. If
2210 --              it is cancelled then respective Purchasing api will be called to
2211 --              trigger the requisition header cancellation. It accepts a value of
2212 --              Y indicating requisition header has to be cancelled.
2213 -- P_param3     Additional argument in form of parameters. In this project, it
2214 --              will denote the number of sales order lines cancelled while order
2215 --              header is (Full/Partial) cancelled.
2216 -- p_date_param1        Additional date argument in form of parameters. In this
2217 --                      project, it will denote the change in Schedule Ship Date
2218 --                      with to respect to single requisition line.
2219 -- P_Long_param1        Additional argument in form of parameters. In this project,
2220 --                      it will store all the sales order line_ids, which are getting
2221 --                      cancelled while order header gets cancelled (Full/Partial).
2222 --                      These Line_ids will be separated by a delimiter comma ','
2223 -- x_return_status      The return status of the API (Expected/Unexcepted/Success)
2224 
2225 -- For details on IR ISO CMS project, please refer to FOL >
2226 -- OM Development > OM GM > 12.1.1 > TDD > IR_ISO_CMS_TDD.doc
2227 
2228 
2229    ELSIF p_request_type = OE_GLOBALS.G_UPDATE_REQUISITION THEN
2230      IF l_debug_level > 0 THEN
2231        oe_debug_pub.add('Type: G_UPDATE_REQUISITION, retain old parameter values',5);
2232      END IF;
2233 
2234      IF g_delayed_requests(l_request_ind).param1 IS NOT NULL
2235       AND l_request.param1 IS NULL THEN
2236        IF l_debug_level > 0 THEN
2237          oe_debug_pub.add(' Retaining Delta Quantity change for index '||l_request_ind,5);
2238          oe_debug_pub.add(' Old Delta Quantity change is '||g_delayed_requests(l_request_ind).param1,5);
2239          oe_debug_pub.add(' New Delta Quantity change is NULL',5);
2240        END IF;
2241        l_request.param1 := g_delayed_requests(l_request_ind).param1;
2242        -- Retaining the delta quantity change value if the new delta change is null, which could
2243        -- be typically a case when user will change the order quantity first, and then the
2244        -- schedule ship date
2245      END IF;
2246 
2247      IF NVL(g_delayed_requests(l_request_ind).param2,'N') = 'Y' THEN
2248        IF l_debug_level > 0 THEN
2249          oe_debug_pub.add(' Retaining Header Level Cancellation Flag for index '||l_request_ind,5);
2250          oe_debug_pub.add(' Old Header Level Cancelation flag is '||g_delayed_requests(l_request_ind).param2,5);
2251          oe_debug_pub.add(' New Header Level Cancelation flag is '||l_request.param2,5);
2252        END IF;
2253        l_request.param2 := g_delayed_requests(l_request_ind).param2;
2254        -- Order Header is requested for cancellation
2255      END IF;
2256 
2257      IF g_delayed_requests(l_request_ind).param3 IS NOT NULL THEN
2258        IF l_debug_level > 0 THEN
2259          oe_debug_pub.add(' Incrementing the counter for lines to be cancelled for index  '||l_request_ind,5);
2260          oe_debug_pub.add(' Old counter value is '||g_delayed_requests(l_request_ind).param3,5);
2261        END IF;
2262        l_request.param3 := nvl(l_request.param3,0) + g_delayed_requests(l_request_ind).param3;
2263        IF l_debug_level > 0 THEN
2264          oe_debug_pub.add(' New counter value is '||l_request.param3,5);
2265        END IF;
2266        -- Counter maintaining number of order line records cancelled during
2267        -- the order header level (Full/Partial) cancellation request
2268      END IF;
2269 
2270      IF l_request.long_param1 IS NOT NULL THEN
2271        IF g_delayed_requests(l_request_ind).long_param1 IS NOT NULL THEN
2272          IF l_debug_level > 0 THEN
2273            oe_debug_pub.add(' Line_ids to be cancelled for index '||l_request_ind,5);
2274            oe_debug_pub.add(' Old Line_ids are '||g_delayed_requests(l_request_ind).long_param1,5);
2275          END IF;
2276          l_request.long_param1 := g_delayed_requests(l_request_ind).long_param1||','|| l_request.long_param1;
2277          IF l_debug_level > 0 THEN
2278            oe_debug_pub.add(' New Line_ids are '||l_request.long_param1,5);
2279          END IF;
2280          -- A string variable containing line_ids, which are cancelled during
2281          -- the Order Header level (Full/Partial) cancellation request
2282          -- In this string, the Line_ids will be separated by a delimiter comma ','
2283        END IF;
2284      ELSE
2285        l_request.long_param1 := g_delayed_requests(l_request_ind).long_param1;
2286        IF l_debug_level > 0 THEN
2287          oe_debug_pub.add(' Only old Line_ids are retained '||l_request.long_param1,5);
2288        END IF;
2289        -- Since this request has not passed the line_id, just retain the global
2290      END IF;
2291 
2292      IF g_delayed_requests(l_request_ind).date_param1 IS NOT NULL
2293       AND l_request.date_param1 IS NULL THEN
2294        IF l_debug_level > 0 THEN
2295          oe_debug_pub.add(' Retain Old date_param1 : '||g_delayed_requests(l_request_ind).date_param1,5);
2296        END IF;
2297        l_request.date_param1 := g_delayed_requests(l_request_ind).date_param1;
2298      END IF;
2299 
2300 
2301 /* ============================= */
2302 /* IR ISO Change Management Ends */
2303 
2304 
2305         END IF;
2306 
2307          g_delayed_requests(l_request_ind) := l_request;
2308 
2309        ELSE					   -- insert the new request
2310     IF l_debug_level > 0 THEN
2311 	OE_Debug_PUB.ADD('New request inserted');
2312     END IF;
2313 --         l_request_ind := nvl(g_delayed_requests.LAST, 0) + 1;
2314 
2315         -- 11i10 Pricing Changes for blankets
2316         IF p_request_type = OE_GLOBALS.G_PROCESS_RELEASE
2317            AND OE_Code_Control.Get_Code_Release_Level >= '110510'
2318         THEN
2319            OE_Blkt_Release_Util.Cache_Order_Qty_Amt
2320               (p_request_rec     => l_request
2321               ,x_return_status   => l_return_status
2322               ) ;
2323            if l_return_status = fnd_api.g_ret_sts_error then
2324               raise fnd_api.g_exc_error;
2325            elsif l_return_status = fnd_api.g_ret_sts_error then
2326               raise fnd_api.g_exc_unexpected_error;
2327            end if;
2328         END IF;
2329 
2330          g_delayed_requests(l_request_ind) := l_request;
2331 
2332       END IF;
2333 
2334 	-- Initialize the requesting entity record
2335       l_req_entity.entity_code := p_requesting_entity_code;
2336       l_req_entity.entity_id := p_requesting_entity_id;
2337       l_req_entity.request_index := l_request_ind;
2338 
2339 	l_req_entity_ind := nvl(g_requesting_entities.LAST, 0) + 1;
2340 
2341       -- Insert into the requesting entities table
2342       g_requesting_entities(l_req_entity_ind) := l_req_entity;
2343       IF l_debug_level > 0 THEN
2344       oe_debug_pub.add('!!!!!!! index '|| l_request_ind, 5);
2345       END IF;
2346 EXCEPTION
2347 
2348     WHEN FND_API.G_EXC_ERROR THEN
2349 
2350         x_return_status := FND_API.G_RET_STS_ERROR;
2351 
2352     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2353 
2354         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2355         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2356 
2357    WHEN OTHERS THEN
2358       IF OE_MSG_PUB.Check_MSg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2359 	THEN
2360 	 OE_MSG_PUB.Add_Exc_Msg
2361 	   (G_PKG_NAME
2362 	    ,'LOGREQUEST');
2363       END IF;
2364 
2365         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2366         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2367 
2368 End Log_Request;
2369 
2370 Function Check_for_Request( p_entity_code   IN VARCHAR2,
2371                             p_entity_id     IN NUMBER,
2372                             p_request_type  IN VARCHAR2,
2373                             p_request_unique_key1 	IN VARCHAR2 := NULL,
2374 			    p_request_unique_key2 	IN VARCHAR2 := NULL,
2375 			    p_request_unique_key3 	IN VARCHAR2 := NULL,
2376 			    p_request_unique_key4 	IN VARCHAR2 := NULL,
2377 			    p_request_unique_key5 	IN VARCHAR2 := NULL
2378 			    )
2379 RETURN BOOLEAN IS
2380 l_ind           Number;
2381 x_result        Varchar2(30);
2382 x_return_status Varchar2(30);
2383 Begin
2384     Check_for_Request( p_entity_code    	=> p_entity_code
2385 		       ,p_entity_id    	 	=> p_entity_id
2386 		       ,p_request_type  	=> p_request_type
2387 		       ,p_request_unique_key1 	=> p_request_unique_key1
2388 		       ,p_request_unique_key2 	=> p_request_unique_key2
2389 		       ,p_request_unique_key3 	=> p_request_unique_key3
2390 		       ,p_request_unique_key4 	=> p_request_unique_key4
2391 		       ,p_request_unique_key5	=> p_request_unique_key5
2392 		       ,x_request_ind   	=> l_ind
2393 		       ,x_result        	=> x_result
2394 		       ,x_return_status 	=> x_return_status);
2395 
2396     if x_result = FND_API.G_TRUE then
2397        return(TRUE);
2398     else
2399        return(FALSE);
2400     end if;
2401 
2402 End;
2403 
2404 Procedure Delete_Request(p_entity_code     IN VARCHAR2
2405                         ,p_entity_id       IN NUMBER
2406                         ,p_request_Type    IN VARCHAR2
2407                         ,p_request_unique_key1 	IN VARCHAR2 := NULL
2408 			,p_request_unique_key2 	IN VARCHAR2 := NULL
2409 			,p_request_unique_key3 	IN VARCHAR2 := NULL
2410 			,p_request_unique_key4 	IN VARCHAR2 := NULL
2411 			,p_request_unique_key5 	IN VARCHAR2 := NULL
2412 ,x_return_status OUT NOCOPY VARCHAR2)
2413 
2414   IS
2415      l_request_search_rslt  Varchar2(1);
2416      l_return_status     Varchar2(1);
2417      l_request_ind       number;
2418      l_req_entity_ind    number;
2419 --
2420 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2421 --
2422 BEGIN
2423    IF l_debug_level > 0 THEN
2424    oe_debug_pub.add('Entering Procedure Delete_Request in Package OE_Delayed_Requests_Pvt');
2425    END IF;
2426    x_return_status := FND_API.G_RET_STS_SUCCESS;
2427 
2428     Check_for_Request( p_entity_code    	=> p_entity_code
2429 		       ,p_entity_id    	 	=> p_entity_id
2430 		       ,p_request_type  	=> p_request_type
2431 		       ,p_request_unique_key1 	=> p_request_unique_key1
2432 		       ,p_request_unique_key2 	=> p_request_unique_key2
2433 		       ,p_request_unique_key3 	=> p_request_unique_key3
2434 		       ,p_request_unique_key4 	=> p_request_unique_key4
2435 		       ,p_request_unique_key5	=> p_request_unique_key5
2436 		       ,x_request_ind   	=> l_request_ind
2437 		       ,x_result        	=> l_request_search_rslt
2438 		       ,x_return_status 	=> l_return_status);
2439 
2440 
2441        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2442 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2443        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2444 	    RAISE FND_API.G_EXC_ERROR;
2445        END IF;
2446 
2447    if l_request_search_rslt = FND_API.G_TRUE     -- delete the request
2448      then
2449       G_Delayed_Requests.Delete(l_request_ind);
2450 /*
2451        BUG 1794544 - do not delete from req entities table
2452        , delete table in the end when all requests are processed
2453        This to improve performance as this search loops through
2454        the entire pl/sql table which becomes very large with
2455        greater number of lines being processed
2456       -- Delete all the records in the requesting entities table
2457       -- that have this request.
2458         l_req_entity_ind := G_Requesting_Entities.First;
2459           WHILE l_req_entity_ind IS NOT NULL LOOP
2460            IF G_Requesting_Entities(l_req_entity_ind).request_index = l_request_ind
2461            THEN
2462                 G_Requesting_Entities.Delete(l_req_entity_ind);
2463            END IF;
2464            l_req_entity_ind := G_Requesting_Entities.Next(l_req_entity_ind);
2465           END LOOP;
2466 */
2467    end if;
2468 
2469 EXCEPTION
2470 
2471     WHEN FND_API.G_EXC_ERROR THEN
2472 
2473         x_return_status := FND_API.G_RET_STS_ERROR;
2474 
2475     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2476 
2477         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2478 
2479    when others THEN
2480 
2481       IF OE_MSG_PUB.Check_MSg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2482 	 OE_MSG_PUB.Add_Exc_Msg
2483 	   (G_PKG_NAME
2484 	    ,'DeleteRequest');
2485       END IF;
2486 
2487       x_return_status := FND_API.G_RET_STS_ERROR;
2488 
2489 End Delete_Request;
2490 
2491 Procedure Clear_Request( x_return_status OUT NOCOPY VARCHAR2)
2492 
2493   IS
2494 --
2495 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2496 --
2497 BEGIN
2498    IF l_debug_level > 0 THEN
2499    oe_debug_pub.add('Entering Procedure Clear_Request in Package OE_Delayed_Requests_Pvt');
2500    END IF;
2501 
2502    x_return_status := FND_API.G_RET_STS_SUCCESS;
2503 
2504       G_Delayed_Requests.DELETE;
2505       g_requesting_entities.DELETE;
2506 
2507       --Bug4504362
2508         OE_Config_Schedule_Pvt.Delete_Attribute_Changes;
2509 
2510     --- Bug #2674349
2511      IF(OE_Line_Adj_Util.G_CHANGED_LINE_TBL.count>0) THEN
2512          Oe_Line_Adj_Util.Delete_Changed_Lines_Tbl;
2513       END IF;
2514 
2515    ----Bug #2822222
2516      /*   IF OE_Config_Pvt.OE_MODIFY_INC_ITEMS_TBL.COUNT > 0 THEN
2517                 OE_Config_Pvt.OE_MODIFY_INC_ITEMS_TBL.DELETE;
2518                 END IF;          */
2519 
2520 
2521 EXCEPTION
2522 
2523    WHEN OTHERS THEN
2524 
2525       IF OE_MSG_PUB.Check_MSg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2526 	 OE_MSG_PUB.Add_Exc_Msg
2527 	   (G_PKG_NAME
2528 	    ,'Clear_Request');
2529       END IF;
2530 
2531       x_return_status := FND_API.G_RET_STS_ERROR;
2532 
2533 End Clear_Request;
2534 
2535 Procedure Process_Request( p_entity_code          IN VARCHAR2
2536                         ,p_entity_id              IN Number
2537                         ,p_request_Type           IN VARCHAR2
2538                         ,p_request_unique_key1 	IN VARCHAR2 := NULL
2539                         ,p_request_unique_key2 	IN VARCHAR2 := NULL
2540                         ,p_request_unique_key3 	IN VARCHAR2 := NULL
2541                         ,p_request_unique_key4 	IN VARCHAR2 := NULL
2542                         ,p_request_unique_key5 	IN VARCHAR2 := NULL
2543                         ,p_delete                 IN Varchar2 Default
2544 											FND_API.G_TRUE
2545 ,x_return_status OUT NOCOPY Varchar2)
2546 
2547 IS
2548 l_request_ind          Number;
2549 l_request_search_rslt  Varchar2(30);
2550 l_return_status        Varchar2(30);
2551 --
2552 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2553 --
2554 Begin
2555    x_return_status := FND_API.G_RET_STS_SUCCESS;
2556    IF l_debug_level > 0 THEN
2557    oe_debug_pub.add('Entering Procedure Process_Request in Package OE_Delayed_Requests_Pvt');
2558    END IF;
2559     Check_for_Request( p_entity_code    	=> p_entity_code
2560 		       ,p_entity_id    	 	=> p_entity_id
2561 		       ,p_request_type  	=> p_request_type
2562 		       ,p_request_unique_key1 	=> p_request_unique_key1
2563 		       ,p_request_unique_key2 	=> p_request_unique_key2
2564 		       ,p_request_unique_key3 	=> p_request_unique_key3
2565 		       ,p_request_unique_key4 	=> p_request_unique_key4
2566 		       ,p_request_unique_key5	=> p_request_unique_key5
2567 		       ,x_request_ind   	=> l_request_ind
2568 		       ,x_result        	=> l_request_search_rslt
2569 		       ,x_return_status 	=> l_return_status);
2570 
2571     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2572         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2573     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2574         RAISE FND_API.G_EXC_ERROR;
2575     END IF;
2576 
2577    if l_request_search_rslt = FND_API.G_TRUE then
2578       Process_Request_Pvt
2579          (p_request_ind       => l_request_ind
2580          ,p_delete            => p_delete
2581          ,x_return_status     => l_return_status
2582          );
2583    end if;
2584 
2585    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2586 	    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2587    ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2588 	    RAISE FND_API.G_EXC_ERROR;
2589    END IF;
2590 
2591 EXCEPTION
2592 
2593     WHEN FND_API.G_EXC_ERROR THEN
2594 
2595         x_return_status := FND_API.G_RET_STS_ERROR;
2596 
2597     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2598 
2599         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2600 
2601     WHEN OTHERS THEN
2602 
2603         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2604 
2605         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2606         THEN
2607             OE_MSG_PUB.Add_Exc_Msg
2608             (   G_PKG_NAME
2609             ,   'Process_Request'
2610             );
2611         END IF;
2612 
2613 End Process_Request;
2614 
2615 Procedure Process_Request_for_Entity
2616      ( p_entity_code     in Varchar2
2617      ,p_delete            in Varchar2 Default FND_API.G_TRUE
2618 ,x_return_status OUT NOCOPY Varchar2) IS
2619 
2620 l_return_status        Varchar2(30);
2621 l_ind                  Number;
2622 --
2623 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2624 --
2625 Begin
2626    oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
2627                                    p_In_out  => 1);
2628 
2629    x_return_status := FND_API.G_RET_STS_SUCCESS;
2630    IF l_debug_level > 0 THEN
2631    oe_debug_pub.add('Enter OE_Delayed_Requests_Pvt.Process_Request_for_Entity',1);
2632    END IF;
2633         IF oe_globals.g_recursion_mode = 'N' THEN
2634 
2635 
2636    l_ind := G_Delayed_Requests.first;
2637 
2638    WHILE l_ind IS NOT NULL LOOP
2639      IF G_Delayed_Requests(l_ind).Entity_code = p_entity_code THEN
2640         Process_Request_Pvt
2641            (p_request_ind       => l_ind
2642            ,p_delete            => p_delete
2643            ,x_return_status     => l_return_status
2644            );
2645 
2646         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2647 	         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2648         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2649            IF l_debug_level > 0 THEN
2650            oe_debug_pub.add
2651            ('2 type----- '|| G_Delayed_Requests(l_ind).request_type, 1);
2652            oe_debug_pub.add
2653            ('2 ind----- '|| l_ind, 1);
2654            END IF;
2655 	         RAISE FND_API.G_EXC_ERROR;
2656         END IF;
2657      END IF;
2658      l_ind := G_Delayed_Requests.Next(l_ind);
2659   END LOOP;
2660   END IF; -- Recursion mode
2661 
2662   IF l_debug_level > 0 THEN
2663    oe_debug_pub.add('Exiting Process_Request_for_Entity ');
2664   END IF;
2665 
2666   oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
2667                                    p_In_out  => 0);
2668 EXCEPTION
2669 
2670     WHEN FND_API.G_EXC_ERROR THEN
2671         oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
2672                                    p_In_out  => 0);
2673         x_return_status := FND_API.G_RET_STS_ERROR;
2674 
2675     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2676         oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
2677                                    p_In_out  => 0);
2678         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2679 
2680     WHEN OTHERS THEN
2681         oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
2682                                    p_In_out  => 0);
2683         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2684 
2685         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2686         THEN
2687             OE_MSG_PUB.Add_Exc_Msg
2688             (   G_PKG_NAME
2689             ,   'Process_Request_for_Entity'
2690             );
2691         END IF;
2692    IF l_debug_level > 0 THEN
2693    oe_debug_pub.add('Exiting Process_Request_for_Entity ');
2694    END IF;
2695 
2696 End Process_Request_for_Entity;
2697 
2698 
2699 Procedure Process_Request_for_ReqType
2700           ( p_request_type   in Varchar2
2701            ,p_delete         in Varchar2 Default FND_API.G_TRUE
2702 ,x_return_status OUT NOCOPY Varchar2
2703 
2704           ) IS
2705 l_return_status        Varchar2(30);
2706 l_ind                  Number;
2707 l_count                Number;
2708 l_req_entity_ind       Number;
2709 
2710 l_entity_id_tbl    Entity_Id_Tbl_Type;
2711 --
2712 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2713 --
2714 BEGIN
2715    x_return_status := FND_API.G_RET_STS_SUCCESS;
2716    oe_order_pvt.set_recursion_mode(p_Entity_Code => 11,
2717                                    p_In_out  => 1);
2718    IF l_debug_level > 0 THEN
2719    oe_debug_pub.add('Entering Procedure Process_Request_for_ReqType in Package OE_Delayed_Requests_Pvt');
2720    END IF;
2721 	--IF oe_globals.g_recursion_mode = 'N' THEN
2722    l_ind := G_Delayed_Requests.first;
2723    l_count := 0;
2724    WHILE l_ind IS NOT NULL LOOP
2725      IF G_Delayed_Requests(l_ind).request_type = p_request_type THEN
2726 	   IF p_request_type = OE_GLOBALS.G_TAX_LINE THEN
2727 		 l_count := l_count + 1;
2728            l_entity_id_tbl(l_count).entity_id := G_Delayed_Requests(l_ind).entity_id;
2729            l_entity_id_tbl(l_count).request_ind := l_ind;
2730 	   ELSE
2731             Process_Request_Pvt
2732                (p_request_ind       => l_ind
2733                ,p_delete            => p_delete
2734                ,x_return_status     => l_return_status
2735                );
2736 
2737             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2738 	             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2739             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2740 	             RAISE FND_API.G_EXC_ERROR;
2741             END IF;
2742 	   END IF;
2743      END IF;
2744      l_ind := G_Delayed_Requests.Next(l_ind);
2745   END LOOP;
2746   IF l_entity_id_tbl.COUNT > 0 THEN
2747        OE_Delayed_Requests_UTIL.Process_Tax
2748        (p_Entity_id_tbl       => l_entity_id_tbl
2749        ,x_return_status     => l_return_status
2750         );
2751 
2752        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2753 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2754        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2755 	      RAISE FND_API.G_EXC_ERROR;
2756        END IF;
2757 	  l_count := l_entity_id_tbl.FIRST;
2758 	  WHILE l_count IS NOT NULL LOOP  -- Fixing 1888284
2759 		 G_Delayed_Requests.DELETE(l_entity_id_tbl(l_count).request_ind);
2760 /*
2761        BUG 1794544 - do not delete from req entities table
2762        , delete table in the end when all requests are processed
2763        This to improve performance as this search loops through
2764        the entire pl/sql table which becomes very large with
2765        greater number of lines being processed
2766            l_req_entity_ind := G_Requesting_Entities.First;
2767            WHILE l_req_entity_ind IS NOT NULL LOOP
2768                IF G_Requesting_Entities(l_req_entity_ind).request_index
2769                   = l_entity_id_tbl(l_count).request_ind
2770                THEN
2771                    G_Requesting_Entities.Delete(l_req_entity_ind);
2772                END IF;
2773                l_req_entity_ind := G_Requesting_Entities.Next(l_req_entity_ind);
2774            END LOOP;
2775 */
2776            l_count := l_entity_id_tbl.NEXT(l_count);
2777 	  END LOOP;
2778 
2779   END IF;
2780 	--END IF ; -- Recursion mode
2781    oe_order_pvt.set_recursion_mode(p_Entity_Code => 11,
2782                                    p_In_out  => 0);
2783   IF l_debug_level > 0 THEN
2784   oe_debug_pub.add('leaving process_requenst_for_reqtype', 1);
2785   END IF;
2786 EXCEPTION
2787 
2788     WHEN FND_API.G_EXC_ERROR THEN
2789    oe_order_pvt.set_recursion_mode(p_Entity_Code => 11,
2790                                    p_In_out  => 0);
2791         oe_debug_pub.add('execution error', 1);
2792         x_return_status := FND_API.G_RET_STS_ERROR;
2793 
2794     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2795    oe_order_pvt.set_recursion_mode(p_Entity_Code => 11,
2796                                    p_In_out  => 0);
2797         oe_debug_pub.add('unexp error', 1);
2798         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2799 
2800     WHEN OTHERS THEN
2801    oe_order_pvt.set_recursion_mode(p_Entity_Code => 11,
2802                                    p_In_out  => 0);
2803         oe_debug_pub.add('others error', 1);
2804         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2805 
2806         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2807         THEN
2808             OE_MSG_PUB.Add_Exc_Msg
2809             (   G_PKG_NAME
2810             ,   'Process_Request_for_ReqType'
2811             );
2812         END IF;
2813 
2814 End Process_Request_for_ReqType;
2815 
2816 Procedure Process_Delayed_Requests(
2817 x_return_status OUT NOCOPY Varchar2
2818 
2819           ) IS
2820 l_ind NUMBER;  /* 1739574 */
2821 l_return_status Varchar2(30);
2822 --
2823 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2824 --
2825 Begin
2826    IF l_debug_level > 0 THEN
2827    oe_debug_pub.add('Enter OE_Delayed_Requests_Pvt.Process_Delayed_Requests');
2828    END IF;
2829    oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
2830                                    p_In_out  => 1);
2831 
2832    -- Process requests as per the dependency
2833    -- Process a request to default header sales credit for
2834    -- primary sales person
2835 	IF oe_globals.g_recursion_mode = 'N' THEN
2836 
2837       Process_Request_for_ReqType
2838         (p_request_type   => OE_GLOBALS.G_DFLT_HSCREDIT_FOR_SREP
2839          ,p_delete        => FND_API.G_TRUE
2840          ,x_return_status => l_return_status
2841         );
2842      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2843 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2844      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2845 	           RAISE FND_API.G_EXC_ERROR;
2846      END IF;
2847 
2848    -- Process Header Sales Credits Delayed Requests
2849       Process_Request_for_ReqType
2850         (p_request_type   => OE_GLOBALS.G_CHECK_HSC_QUOTA_TOTAL
2851          ,p_delete        => FND_API.G_TRUE
2852          ,x_return_status => l_return_status
2853         );
2854      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2855 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2856      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2857 	           RAISE FND_API.G_EXC_ERROR;
2858      END IF;
2859 
2860    -- Process Lines Sales Credits Delayed Requests
2861       Process_Request_for_ReqType
2862         (p_request_type   => OE_GLOBALS.G_CHECK_LSC_QUOTA_TOTAL
2863          ,p_delete        => FND_API.G_TRUE
2864          ,x_return_status => l_return_status
2865         );
2866      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2867 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2868      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2869 	           RAISE FND_API.G_EXC_ERROR;
2870      END IF;
2871 
2872      -- Process CREATE_SETS Requests
2873       Process_Request_for_ReqType
2874         (p_request_type   => OE_GLOBALS.G_CREATE_SETS
2875          ,p_delete        => FND_API.G_TRUE
2876          ,x_return_status => l_return_status
2877         );
2878      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2879 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2880      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2881 	           RAISE FND_API.G_EXC_ERROR;
2882      END IF;
2883 
2884 
2885 
2886      -- Process CREATE_CONFIG_ITEM Requests
2887       Process_Request_for_ReqType
2888         (p_request_type   => OE_GLOBALS.G_CREATE_CONFIG_ITEM
2889          ,p_delete        => FND_API.G_TRUE
2890          ,x_return_status => l_return_status
2891         );
2892      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2893 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2894      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2895 	           RAISE FND_API.G_EXC_ERROR;
2896      END IF;
2897 
2898      -- Process INSERT_INTO_SETS Requests
2899      Process_Request_for_ReqType
2900         (p_request_type   => OE_GLOBALS.G_INSERT_INTO_SETS
2901          ,p_delete        => FND_API.G_TRUE
2902          ,x_return_status => l_return_status
2903         );
2904      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2905 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2906      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2907 	           RAISE FND_API.G_EXC_ERROR;
2908      END IF;
2909 
2910      -- Process INS_INCLUDED_ITEM Requests
2911       Process_Request_for_ReqType
2912         (p_request_type   => OE_GLOBALS.G_INS_INCLUDED_ITEMS
2913          ,p_delete        => FND_API.G_TRUE
2914          ,x_return_status => l_return_status
2915         );
2916      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2917 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2918      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2919 	           RAISE FND_API.G_EXC_ERROR;
2920      END IF;
2921 
2922 
2923 
2924      -- Process requests for RMA
2925      Process_Request_for_ReqType
2926         (p_request_type   => OE_GLOBALS.G_INSERT_RMA
2927          ,p_delete        => FND_API.G_TRUE
2928          ,x_return_status => l_return_status
2929         );
2930      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2931                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2932      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2933                    RAISE FND_API.G_EXC_ERROR;
2934      END IF;
2935 
2936      -- Process requests for Split_hold
2937      Process_Request_for_ReqType
2938         (p_request_type   => OE_GLOBALS.G_SPLIT_HOLD
2939          ,p_delete        => FND_API.G_TRUE
2940          ,x_return_status => l_return_status
2941         );
2942      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2943                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2944      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2945                    RAISE FND_API.G_EXC_ERROR;
2946      END IF;
2947 
2948      -- Process requests for Delayed Requests
2949      Process_Request_for_ReqType
2950         (p_request_type   => OE_GLOBALS.G_EVAL_HOLD_SOURCE
2951          ,p_delete        => FND_API.G_TRUE
2952          ,x_return_status => l_return_status
2953         );
2954      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2955                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2956      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2957                    RAISE FND_API.G_EXC_ERROR;
2958      END IF;
2959 
2960      -- Process requests for Quantity Cascade
2961      Process_Request_for_ReqType
2962         (p_request_type   => OE_GLOBALS.G_CASCADE_QUANTITY
2963          ,p_delete        => FND_API.G_TRUE
2964          ,x_return_status => l_return_status
2965         );
2966      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2967                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2968      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2969                    RAISE FND_API.G_EXC_ERROR;
2970      END IF;
2971 
2972 /*** we do not need this, confirm with ashwin
2973      -- Process requests for project Cascade
2974      Process_Request_for_ReqType
2975         (p_request_type   => OE_GLOBALS.G_CASCADE_PROJECT
2976          ,p_delete        => FND_API.G_TRUE
2977          ,x_return_status => l_return_status
2978         );
2979      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2980                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2981      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2982                    RAISE FND_API.G_EXC_ERROR;
2983      END IF;
2984 
2985      -- Process requests for task Cascade
2986      Process_Request_for_ReqType
2987         (p_request_type   => OE_GLOBALS.G_CASCADE_TASK
2988          ,p_delete        => FND_API.G_TRUE
2989          ,x_return_status => l_return_status
2990         );
2991      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2992                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2993      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2994                    RAISE FND_API.G_EXC_ERROR;
2995      END IF;
2996 
2997      -- Process requests for task Cascade
2998 ***/
2999      Process_Request_for_ReqType
3000         (p_request_type   => OE_GLOBALS.G_CASCADE_CHANGES
3001          ,p_delete        => FND_API.G_TRUE
3002          ,x_return_status => l_return_status
3003         );
3004      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3005                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3006      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3007                    RAISE FND_API.G_EXC_ERROR;
3008      END IF;
3009 
3010      -- Process requests to Split Reservations
3011      Process_Request_for_ReqType
3012         (p_request_type   => OE_GLOBALS.G_CREATE_RESERVATIONS
3013          ,p_delete        => FND_API.G_TRUE
3014          ,x_return_status => l_return_status
3015         );
3016      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3017                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3018      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3019                    RAISE FND_API.G_EXC_ERROR;
3020      END IF;
3021 
3022      -- Process requests to Complete Configuration
3023      Process_Request_for_ReqType
3024         (p_request_type   => OE_GLOBALS.G_COMPLETE_CONFIGURATION
3025          ,p_delete        => FND_API.G_TRUE
3026          ,x_return_status => l_return_status
3027         );
3028      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3029                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3030      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3031                    RAISE FND_API.G_EXC_ERROR;
3032      END IF;
3033 
3034      -- Process requests for Validate Configuration
3035      Process_Request_for_ReqType
3036         (p_request_type   => OE_GLOBALS.G_VALIDATE_CONFIGURATION
3037          ,p_delete        => FND_API.G_TRUE
3038          ,x_return_status => l_return_status
3039         );
3040      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3041                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3042      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3043                    RAISE FND_API.G_EXC_ERROR;
3044      END IF;
3045 
3046      -- Process requests for CTO Notification
3047      Process_Request_for_ReqType
3048         (p_request_type   => OE_GLOBALS.G_CTO_NOTIFICATION
3049          ,p_delete        => FND_API.G_TRUE
3050          ,x_return_status => l_return_status
3051         );
3052      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3053                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3054      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3055                    RAISE FND_API.G_EXC_ERROR;
3056      END IF;
3057 
3058      -- Process requests for Service
3059      Process_Request_for_ReqType
3060         (p_request_type   => OE_GLOBALS.G_INSERT_SERVICE
3061          ,p_delete        => FND_API.G_TRUE
3062          ,x_return_status => l_return_status
3063         );
3064      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3065                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3066      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3067                    RAISE FND_API.G_EXC_ERROR;
3068      END IF;
3069 
3070     /* Added the below call for bug 5925600 */
3071     Process_Request_for_ReqType
3072         (p_request_type   => OE_GLOBALS.G_GROUP_SCHEDULE
3073          ,p_delete        => FND_API.G_TRUE
3074          ,x_return_status => l_return_status
3075         );
3076      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3077                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3078      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3079                    RAISE FND_API.G_EXC_ERROR;
3080      END IF;
3081 
3082     Process_Request_for_ReqType
3083         (p_request_type   => OE_GLOBALS.G_CASCADE_OPTIONS_SERVICE
3084          ,p_delete        => FND_API.G_TRUE
3085          ,x_return_status => l_return_status
3086         );
3087      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3088                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3089      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3090                    RAISE FND_API.G_EXC_ERROR;
3091      END IF;
3092     /* End of changes done for bug 5925600 */
3093 
3094 -- bug 5717671/5736696, need to execute copy header adj
3095     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3096          (p_request_type   =>OE_GLOBALS.G_COPY_HEADER_ADJUSTMENTS
3097           ,p_delete        => FND_API.G_TRUE
3098           ,x_return_status => l_return_status
3099           );
3100     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3101           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3102     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3103           RAISE FND_API.G_EXC_ERROR;
3104     END IF;
3105 
3106 
3107     -- bug 1834260, moved this block of code from after processing
3108     -- for request type G_PRICE_LINE to before it.
3109     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3110          (p_request_type   =>OE_GLOBALS.G_COPY_ADJUSTMENTS
3111           ,p_delete        => FND_API.G_TRUE
3112           ,x_return_status => l_return_status
3113           );
3114     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3115           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3116     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3117           RAISE FND_API.G_EXC_ERROR;
3118     END IF;
3119 
3120     -- Process Requests for Freight Rating.
3121     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3122          (p_request_type   =>OE_GLOBALS.G_FREIGHT_RATING
3123           ,p_delete        => FND_API.G_TRUE
3124           ,x_return_status => l_return_status
3125           );
3126     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3127           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3128     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3129           RAISE FND_API.G_EXC_ERROR;
3130     END IF;
3131 
3132     /* Added for Bug # 1559906 */
3133     /* Renga- copy_freight_charges delayed request should be executed
3134        right after copy_adjustments - please do not put any delayed
3135        request in between copy_adjustments and copy_freight_charges */
3136 
3137     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3138          (p_request_type   =>OE_GLOBALS.G_COPY_FREIGHT_CHARGES
3139           ,p_delete        => FND_API.G_TRUE
3140           ,x_return_status => l_return_status
3141           );
3142     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3143           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3144     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3145           RAISE FND_API.G_EXC_ERROR;
3146     END IF;
3147 
3148 
3149     -- Process Requests for Pricing
3150     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3151          (p_request_type   =>OE_GLOBALS.G_PRICE_LINE
3152           ,p_delete        => FND_API.G_TRUE
3153           ,x_return_status => l_return_status
3154           );
3155     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3156           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3157     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3158           RAISE FND_API.G_EXC_ERROR;
3159     END IF;
3160 
3161 
3162    -- Renga - added freight_for_included items call
3163     -- Process Requests for Freight For included items.
3164     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3165          (p_request_type   =>OE_GLOBALS.G_FREIGHT_FOR_INCLUDED
3166           ,p_delete        => FND_API.G_TRUE
3167           ,x_return_status => l_return_status
3168           );
3169     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3170           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3171     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3172           RAISE FND_API.G_EXC_ERROR;
3173     END IF;
3174 
3175  -- Renga - done for freight for included items.
3176 
3177 
3178     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3179          (p_request_type   =>OE_GLOBALS.G_PRICE_ORDER
3180           ,p_delete        => FND_API.G_TRUE
3181           ,x_return_status => l_return_status
3182           );
3183     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3184           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3185     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3186           RAISE FND_API.G_EXC_ERROR;
3187     END IF;
3188 
3189     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3190          (p_request_type   =>OE_GLOBALS.G_PRICE_ADJ
3191           ,p_delete        => FND_API.G_TRUE
3192           ,x_return_status => l_return_status
3193           );
3194     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3195           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3196     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3197           RAISE FND_API.G_EXC_ERROR;
3198     END IF;
3199 
3200     -- added by lkxu
3201     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3202          (p_request_type   =>OE_GLOBALS.G_COPY_PRICING_ATTRIBUTES
3203           ,p_delete        => FND_API.G_TRUE
3204           ,x_return_status => l_return_status
3205           );
3206     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3207           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3208     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3209           RAISE FND_API.G_EXC_ERROR;
3210     END IF;
3211 
3212     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3213          (p_request_type   =>OE_GLOBALS.G_COPY_MODEL_PATTR
3214           ,p_delete        => FND_API.G_TRUE
3215           ,x_return_status => l_return_status
3216           );
3217     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3218           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3219     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3220           RAISE FND_API.G_EXC_ERROR;
3221     END IF;
3222 
3223     -- Process Delete Charges Delayed Requests
3224       Process_Request_for_ReqType
3225         (p_request_type   => OE_GLOBALS.G_DELETE_CHARGES
3226          ,p_delete        => FND_API.G_TRUE
3227          ,x_return_status => l_return_status
3228         );
3229      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3230                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3231      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3232                 RAISE FND_API.G_EXC_ERROR;
3233      END IF;
3234 
3235    -- Process Tax Delayed Requests
3236       Process_Request_for_ReqType
3237         (p_request_type   => OE_GLOBALS.G_TAX_LINE
3238          ,p_delete        => FND_API.G_TRUE
3239          ,x_return_status => l_return_status
3240         );
3241      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3242                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3243      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3244                 RAISE FND_API.G_EXC_ERROR;
3245      END IF;
3246 
3247 
3248       -- Process Commitment Delayed Requests
3249       Process_Request_for_ReqType
3250         (p_request_type   => OE_GLOBALS.G_CALCULATE_COMMITMENT
3251          ,p_delete        => FND_API.G_TRUE
3252          ,x_return_status => l_return_status
3253         );
3254      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3255                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3256      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3257                 RAISE FND_API.G_EXC_ERROR;
3258      END IF;
3259 
3260      -- Process Commitment Delayed Requests
3261      Process_Request_for_ReqType
3262         (p_request_type   => OE_GLOBALS.G_UPDATE_COMMITMENT
3263          ,p_delete        => FND_API.G_TRUE
3264          ,x_return_status => l_return_status
3265         );
3266      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3267                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3268      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3269                 RAISE FND_API.G_EXC_ERROR;
3270      END IF;
3271 
3272      -- for multiple payments
3273      Process_Request_for_ReqType
3274         (p_request_type   => OE_GLOBALS.G_UPDATE_COMMITMENT_APPLIED
3275          ,p_delete        => FND_API.G_TRUE
3276          ,x_return_status => l_return_status
3277         );
3278      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3279                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3280      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3281                 RAISE FND_API.G_EXC_ERROR;
3282      END IF;
3283 
3284     -- for multiple payments
3285     Process_Request_for_ReqType
3286 	        (p_request_type  	=> OE_GLOBALS.G_SPLIT_PAYMENT
3287 	         ,p_delete        	=> FND_API.G_TRUE
3288 	         ,x_return_status 	=> l_return_status
3289 	        );
3290     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3291           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3292     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3293           RAISE FND_API.G_EXC_ERROR;
3294     END IF;
3295 
3296     Process_Request_for_ReqType
3297 	        (p_request_type  	=> OE_GLOBALS.G_UPDATE_HDR_PAYMENT
3298 	         ,p_delete        	=> FND_API.G_TRUE
3299 	         ,x_return_status 	=> l_return_status
3300 	        );
3301     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3302           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3303     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3304           RAISE FND_API.G_EXC_ERROR;
3305     END IF;
3306 
3307      -- Process requests for Payment Verification
3308      Process_Request_for_ReqType
3309         (p_request_type   => OE_GLOBALS.G_VERIFY_PAYMENT
3310          ,p_delete        => FND_API.G_TRUE
3311          ,x_return_status => l_return_status
3312         );
3313      IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3314 	           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3315      ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3316 	           RAISE FND_API.G_EXC_ERROR;
3317      END IF;
3318 
3319      Process_Request_for_ReqType
3320 	        (p_request_type  	=> OE_GLOBALS.G_DELETE_PAYMENT_HOLD
3321 	         ,p_delete        	=> FND_API.G_TRUE
3322 	         ,x_return_status 	=> l_return_status
3323 	        );
3324     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3325           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3326     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3327           RAISE FND_API.G_EXC_ERROR;
3328     END IF;
3329 
3330     -- Process Request to create automatic attachments
3331     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3332          (p_request_type   =>OE_GLOBALS.G_APPLY_AUTOMATIC_ATCHMT
3333           ,p_delete        => FND_API.G_TRUE
3334           ,x_return_status => l_return_status
3335           );
3336     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3337           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3338     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3339           RAISE FND_API.G_EXC_ERROR;
3340     END IF;
3341 
3342     -- Process Request to copy attachments
3343     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3344          (p_request_type   =>OE_GLOBALS.G_COPY_ATCHMT
3345           ,p_delete        => FND_API.G_TRUE
3346           ,x_return_status => l_return_status
3347           );
3348     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3349           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3350     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3351           RAISE FND_API.G_EXC_ERROR;
3352     END IF;
3353 
3354         --added by MShenoy for Spares Management ikon project - Create internal req.
3355      IF l_debug_level > 0 THEN
3356      oe_debug_pub.add(' Entering Procedure process_Delayed_Requests in Package OE_Delayed_Requests_Pvt');
3357      END IF;
3358 
3359       OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3360              (p_request_type   =>OE_GLOBALS.G_CREATE_INTERNAL_REQ
3361               ,p_delete        => FND_API.G_TRUE
3362              ,x_return_status => l_return_status);
3363      IF l_debug_level > 0 THEN
3364      oe_debug_pub.add(' leaving Procedure process_Delayed_Requests in Package
3365                        OE_Delayed_Requests_Pvt ret status '||l_return_status);
3366      END IF;
3367     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3368           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3369     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3370           RAISE FND_API.G_EXC_ERROR;
3371     END IF;
3372 
3373     -- B2013611 reverse promotional limits
3374     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3375          (p_request_type   =>OE_GLOBALS.G_REVERSE_LIMITS
3376           ,p_delete        => FND_API.G_TRUE
3377           ,x_return_status => l_return_status
3378           );
3379     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3380           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3381     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3382           RAISE FND_API.G_EXC_ERROR;
3383     END IF;
3384 
3385     --MRG BGN
3386     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3387          (p_request_type   => OE_GLOBALS.G_MARGIN_HOLD
3388           ,p_delete        => FND_API.G_TRUE
3389           ,x_return_status => l_return_status
3390           );
3391     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3392           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3393     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3394           RAISE FND_API.G_EXC_ERROR;
3395     END IF;
3396     --MRG END
3397 
3398 
3399     ----------
3400     --Btea
3401     ----------
3402 
3403     --MRG BGN
3404     IF l_debug_level > 0 THEN
3405     oe_debug_pub.add('before call to OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype in process_delayed_requests');
3406     END IF;
3407     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3408          (p_request_type   => OE_GLOBALS.G_GET_COST
3409           ,p_delete        => FND_API.G_TRUE
3410           ,x_return_status => l_return_status
3411          );
3412     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3413           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3414     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3415           RAISE FND_API.G_EXC_ERROR;
3416     END IF;
3417     --MRG END
3418 
3419 
3420     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3421          (p_request_type   =>OE_GLOBALS.G_DEL_CHG_LINES
3422           ,p_delete        => FND_API.G_TRUE
3423           ,x_return_status => l_return_status
3424           );
3425     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3426           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3427     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3428           RAISE FND_API.G_EXC_ERROR;
3429     END IF;
3430 
3431 
3432     --process delayed requests for xml generation
3433 
3434     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3435          (p_request_type   =>OE_GLOBALS.G_GENERATE_XML_REQ_HDR
3436           ,p_delete        => FND_API.G_TRUE
3437           ,x_return_status => l_return_status
3438           );
3439     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3440           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3441     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3442           RAISE FND_API.G_EXC_ERROR;
3443     END IF;
3444 
3445 
3446     -- Please do not put any delayed requests that can update qty
3447     -- or price before this point !
3448 
3449     -- BLANKETS: Update released amount/qty on blanket order/line
3450     -- IMPORTANT: This request should be executed after all requests that
3451     -- can result in change to qty or price are executed.
3452     -- This will execute both requests of type: PROCESS_RELEASE
3453     -- and VALIDATE_RELEASE_SHIPMENTS.
3454     OE_Blkt_Release_Util.Process_Releases
3455              (p_request_tbl   => G_Delayed_Requests
3456              ,x_return_status => l_return_status);
3457     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3458           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3459     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3460           RAISE FND_API.G_EXC_ERROR;
3461     END IF;
3462 
3463     -- Changes for Enhanced Dropshipments
3464 
3465     OE_Purchase_Release_PVT.Process_DropShip_CMS_Requests
3466              (p_request_tbl   => G_Delayed_Requests
3467              ,x_return_status => l_return_status);
3468     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3469           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3470     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3471           RAISE FND_API.G_EXC_ERROR;
3472     END IF;
3473 
3474 
3475 /* 7576948: IR ISO Change Management project Start */
3476 -- This code is hooked up for IR ISO project so as to trigger
3477 -- the delayed request processing for update of internal requisition
3478 
3479 -- For details on IR ISO CMS project, please refer to FOL >
3480 -- OM Development > OM GM > 12.1.1 > TDD > IR_ISO_CMS_TDD.doc
3481 
3482 
3483     -- Process Request to Update the Internal Requisition
3484     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3485          ( p_request_type  => OE_GLOBALS.G_UPDATE_REQUISITION
3486          , p_delete        => FND_API.G_TRUE
3487          , x_return_status => l_return_status
3488          );
3489 
3490     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3491           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3492     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3493           RAISE FND_API.G_EXC_ERROR;
3494     END IF;
3495 
3496 /* ============================= */
3497 /* IR ISO Change Management Ends */
3498 
3499 
3500     --process delayed requests for cancel workflow
3501 
3502     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3503          (p_request_type   =>OE_GLOBALS.G_CANCEL_WF
3504           ,p_delete        => FND_API.G_TRUE
3505           ,x_return_status => l_return_status
3506           );
3507     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3508           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3509     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3510           RAISE FND_API.G_EXC_ERROR;
3511     END IF;
3512 
3513 
3514    /* Please do not put execution of any delayed request beyond this point */
3515    l_ind := G_Delayed_Requests.first;
3516 
3517    IF l_debug_level > 0 THEN
3518      oe_debug_pub.add('Global Request count-PDR-E'||G_Delayed_Requests.count,1);
3519      oe_debug_pub.add('*****l_ind :' || l_ind, 1);
3520    END IF;
3521 
3522    WHILE l_ind IS NOT NULL LOOP
3523         Process_Request_Pvt
3524            (p_request_ind       => l_ind
3525            ,p_delete            => FND_API.G_TRUE
3526            ,x_return_status     => l_return_status
3527            );
3528 
3529         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3530 	         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3531         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3532 	         RAISE FND_API.G_EXC_ERROR;
3533         END IF;
3534      l_ind := G_Delayed_Requests.Next(l_ind);
3535   END LOOP;
3536 
3537     -- Process Request to Complete workflow activity
3538     OE_DELAYED_REQUESTS_PVT.Process_Request_for_Reqtype
3539          (p_request_type   =>OE_GLOBALS.G_COMPLETE_ACTIVITY
3540           ,p_delete        => FND_API.G_TRUE
3541           ,x_return_status => l_return_status
3542           );
3543     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3544           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3545     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3546           RAISE FND_API.G_EXC_ERROR;
3547     END IF;
3548      IF l_debug_level > 0 THEN
3549      oe_debug_pub.add('Global Request count-PDR-AL'||G_Delayed_Requests.count,1);
3550      END IF;
3551 
3552      -- clear the delayed request cache
3553      Clear_Request(x_return_status);
3554 	END IF; -- Recursion mode
3555      oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
3556                                    p_In_out  => 0);
3557 
3558 EXCEPTION
3559 
3560     WHEN FND_API.G_EXC_ERROR THEN
3561         oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
3562                                    p_In_out  => 0);
3563         x_return_status := FND_API.G_RET_STS_ERROR;
3564 
3565     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3566         oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
3567                                    p_In_out  => 0);
3568         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3569 
3570     WHEN OTHERS THEN
3571         oe_order_pvt.set_recursion_mode(p_Entity_Code => 9,
3572                                    p_In_out  => 0);
3573         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3574 
3575         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3576         THEN
3577             OE_MSG_PUB.Add_Exc_Msg
3578             (   G_PKG_NAME
3579             ,   'Process_Delayed_Requests'
3580             );
3581         END IF;
3582 End Process_Delayed_Requests;
3583 
3584 /** This procedure is called twice from Process Order.  Once to
3585 **  process action requests that need to be processed before the flows have
3586 ** started and a second time to process action requests that can ONLY be
3587 ** processed after the flow has started (book, LINK, match_and_reserve)
3588 **/
3589 
3590 PROCEDURE Process_Order_Actions
3591 (p_validation_level	IN  NUMBER := FND_API.G_VALID_LEVEL_FULL,
3592  p_x_request_tbl		IN OUT NOCOPY OE_Order_PUB.request_tbl_type,
3593  p_process_WF_requests IN boolean DEFAULT TRUE
3594  )
3595   IS
3596      l_request_rec		OE_Order_PUB.request_rec_type;
3597      l_return_status            VARCHAR2(1);
3598 --
3599 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3600 --
3601 l_header_id                 NUMBER;
3602 l_line_id                   NUMBER;
3603 l_order_source_id           NUMBER;
3604 l_orig_sys_document_ref     VARCHAR2(50);
3605 l_orig_sys_line_ref         VARCHAR2(50);
3606 l_orig_sys_shipment_ref     VARCHAR2(50);
3607 l_change_sequence           VARCHAR2(50);
3608 l_source_document_type_id   NUMBER;
3609 l_source_document_id        NUMBER;
3610 l_source_document_line_id   NUMBER;
3611 --R12 CVV2
3612 --comm rej l_reject_on_auth_failure    VARCHAR2(1);
3613 --comm rej l_reject_on_risk_failure    VARCHAR2(1);
3614 l_msg_count                 NUMBER;
3615 l_msg_data                 VARCHAR2(4000);
3616 l_result_out               VARCHAR2(30);
3617 l_header_rec               OE_ORDER_PUB.Header_Rec_Type;
3618 --R12 CVV2
3619 
3620 -- ER 7243028
3621 l_lines_count               NUMBER;
3622 l_lines_list                VARCHAR2(4000);
3623 
3624 BEGIN
3625    IF l_debug_level > 0 THEN
3626    oe_debug_pub.ADD('Entering OE_ORDER_PUB.PROCESS_ORDER_ACTIONS', 1);
3627    END IF;
3628 
3629    -- added for notification framework
3630    -- check code release leve first, notificaiont framework is at pack H
3631    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
3632    oe_order_pvt.set_recursion_mode(p_Entity_Code => 10,
3633                                    p_In_out  => 1);
3634    END IF;
3635 
3636    FOR i IN 1..p_x_request_tbl.COUNT LOOP
3637    BEGIN
3638       IF l_debug_level > 0 THEN
3639       oe_debug_pub.ADD('Processing delayed requests # = '
3640 		       || To_char(i), 2);
3641       END IF;
3642 
3643       -- If request is already processed then loop around.
3644 
3645 	 IF (p_x_request_tbl(i).processed = 'Y') then
3646 	    goto END_OF_LOOP;
3647       END IF;
3648 
3649       l_request_rec := p_x_request_tbl(i);
3650       IF l_debug_level > 0 THEN
3651       oe_debug_pub.ADD('Request Type =  '
3652 		       || l_request_rec.request_type, 2);
3653       END IF;
3654       IF l_request_rec.entity_code = 'HEADER' THEN
3655          l_header_id := l_request_rec.entity_id;
3656          IF l_request_rec.entity_id IS NOT NULL THEN
3657             BEGIN
3658                IF l_debug_level  > 0 THEN
3659                   oe_debug_pub.add('Getting reference data for header_id:'||l_header_id);
3660                END IF;
3661                SELECT order_source_id, orig_sys_document_ref, change_sequence,
3662                source_document_type_id, source_document_id
3663                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
3664                l_source_document_type_id, l_source_document_id
3665                FROM   OE_ORDER_HEADERS_ALL
3666                WHERE  header_id = l_request_rec.entity_id;
3667             EXCEPTION
3668                WHEN NO_DATA_FOUND THEN
3669                    l_order_source_id := null;
3670                    l_orig_sys_document_ref := null;
3671                    l_change_sequence := null;
3672                    l_source_document_type_id := null;
3673                    l_source_document_id := null;
3674                WHEN OTHERS THEN
3675                    l_order_source_id := null;
3676                    l_orig_sys_document_ref := null;
3677                    l_change_sequence := null;
3678                    l_source_document_type_id := null;
3679                    l_source_document_id := null;
3680             END;
3681          END IF;
3682       ELSIF l_request_rec.entity_code = 'LINE' THEN
3683          l_line_id := l_request_rec.entity_id;
3684          IF l_request_rec.entity_id IS NOT NULL THEN
3685             BEGIN
3686                IF l_debug_level  > 0 THEN
3687                   oe_debug_pub.add('Getting reference data for line_id:'||l_request_rec.entity_id);
3688                END IF;
3689                SELECT order_source_id, orig_sys_document_ref, change_sequence,
3690                source_document_type_id, source_document_id,  orig_sys_line_ref,
3691                source_document_line_id, orig_sys_shipment_ref, header_id
3692                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
3693                l_source_document_type_id, l_source_document_id, l_orig_sys_line_ref,
3694                l_source_document_line_id, l_orig_sys_shipment_ref, l_header_id
3695                FROM   OE_ORDER_LINES_ALL
3696                WHERE  line_id = l_request_rec.entity_id;
3697             EXCEPTION
3698                WHEN NO_DATA_FOUND THEN
3699                    l_header_id := null;
3700                    l_order_source_id := null;
3701                    l_orig_sys_document_ref := null;
3702                    l_change_sequence := null;
3703                    l_source_document_type_id := null;
3704                    l_source_document_id := null;
3705                    l_orig_sys_line_ref := null;
3706                    l_source_document_line_id := null;
3707                    l_orig_sys_shipment_ref := null;
3708                WHEN OTHERS THEN
3709                    l_header_id := null;
3710                    l_order_source_id := null;
3711                    l_orig_sys_document_ref := null;
3712                    l_change_sequence := null;
3713                    l_source_document_type_id := null;
3714                    l_source_document_id := null;
3715                    l_orig_sys_line_ref := null;
3716                    l_source_document_line_id := null;
3717                    l_orig_sys_shipment_ref := null;
3718             END;
3719          END IF;
3720       ELSIF l_request_rec.entity_code = 'HEADER_ADJ' THEN
3721          IF l_request_rec.entity_id IS NOT NULL THEN
3722             BEGIN
3723                IF l_debug_level  > 0 THEN
3724                   oe_debug_pub.add('Getting header_id of the header adjustment:'||l_request_rec.entity_id);
3725                END IF;
3726                SELECT header_id
3727                INTO   l_header_id
3728                FROM   oe_price_adjustments
3729                WHERE  price_adjustment_id = l_request_rec.entity_id;
3730             EXCEPTION
3731                WHEN NO_DATA_FOUND THEN
3732                   l_header_id := null;
3733                WHEN OTHERS THEN
3734                   l_header_id := null;
3735             END;
3736          END IF;
3737          IF l_header_id IS NOT NULL THEN
3738             BEGIN
3739                IF l_debug_level  > 0 THEN
3740                   oe_debug_pub.add('Getting reference data for header_id:'||l_header_id);
3741                END IF;
3742                SELECT order_source_id, orig_sys_document_ref, change_sequence,
3743                source_document_type_id, source_document_id
3744                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
3745                l_source_document_type_id, l_source_document_id
3746                FROM   OE_ORDER_HEADERS_ALL
3747                WHERE  header_id = l_header_id;
3748             EXCEPTION
3749                WHEN NO_DATA_FOUND THEN
3750                    l_order_source_id := null;
3751                    l_orig_sys_document_ref := null;
3752                    l_change_sequence := null;
3753                    l_source_document_type_id := null;
3754                    l_source_document_id := null;
3755                WHEN OTHERS THEN
3756                    l_order_source_id := null;
3757                    l_orig_sys_document_ref := null;
3758                    l_change_sequence := null;
3759                    l_source_document_type_id := null;
3760                    l_source_document_id := null;
3761             END;
3762          END IF;
3763       ELSIF l_request_rec.entity_code = 'LINE_ADJ' THEN
3764          IF l_request_rec.entity_id IS NOT NULL THEN
3765             BEGIN
3766                IF l_debug_level  > 0 THEN
3767                   oe_debug_pub.add('Getting line_id of the line adjustment:'||l_request_rec.entity_id);
3768                END IF;
3769                SELECT line_id
3770                INTO   l_line_id
3771                FROM   oe_price_adjustments
3772                WHERE  price_adjustment_id = l_request_rec.entity_id;
3773             EXCEPTION
3774                WHEN NO_DATA_FOUND THEN
3775                   l_line_id := null;
3776                WHEN OTHERS THEN
3777                   l_line_id := null;
3778             END;
3779          END IF;
3780          IF l_line_id IS NOT NULL THEN
3781             BEGIN
3782                IF l_debug_level  > 0 THEN
3783                   oe_debug_pub.add('Getting reference data for line_id:'||l_line_id);
3784                END IF;
3785                SELECT order_source_id, orig_sys_document_ref, change_sequence,
3786                source_document_type_id, source_document_id,  orig_sys_line_ref,
3787                source_document_line_id, orig_sys_shipment_ref, header_id
3788                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
3789                l_source_document_type_id, l_source_document_id, l_orig_sys_line_ref,
3790                l_source_document_line_id, l_orig_sys_shipment_ref, l_header_id
3791                FROM   OE_ORDER_LINES_ALL
3792                WHERE  line_id = l_line_id;
3793             EXCEPTION
3794                WHEN NO_DATA_FOUND THEN
3795                    l_header_id := null;
3796                    l_order_source_id := null;
3797                    l_orig_sys_document_ref := null;
3798                    l_change_sequence := null;
3799                    l_source_document_type_id := null;
3800                    l_source_document_id := null;
3801                    l_orig_sys_line_ref := null;
3802                    l_source_document_line_id := null;
3803                    l_orig_sys_shipment_ref := null;
3804                WHEN OTHERS THEN
3805                    l_header_id := null;
3806                    l_order_source_id := null;
3807                    l_orig_sys_document_ref := null;
3808                    l_change_sequence := null;
3809                    l_source_document_type_id := null;
3810                    l_source_document_id := null;
3811                    l_orig_sys_line_ref := null;
3812                    l_source_document_line_id := null;
3813                    l_orig_sys_shipment_ref := null;
3814             END;
3815          END IF;
3816       ELSIF l_request_rec.entity_code = 'HEADER_SCREDIT' THEN
3817          IF l_request_rec.entity_id IS NOT NULL THEN
3818             BEGIN
3819                IF l_debug_level  > 0 THEN
3820                   oe_debug_pub.add('Getting header_id of the header scredit:'||l_request_rec.entity_id);
3821                END IF;
3822                SELECT header_id
3823                INTO   l_header_id
3824                FROM   oe_sales_credits
3825                WHERE  sales_credit_id = l_request_rec.entity_id;
3826             EXCEPTION
3827                WHEN NO_DATA_FOUND THEN
3828                   l_header_id := null;
3829                WHEN OTHERS THEN
3830                   l_header_id := null;
3831             END;
3832          END IF;
3833          IF l_header_id IS NOT NULL THEN
3834             BEGIN
3835                IF l_debug_level  > 0 THEN
3836                   oe_debug_pub.add('Getting reference data for header_id:'||l_header_id);
3837                END IF;
3838                SELECT order_source_id, orig_sys_document_ref, change_sequence,
3839                source_document_type_id, source_document_id
3840                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
3841                l_source_document_type_id, l_source_document_id
3842                FROM   OE_ORDER_HEADERS_ALL
3843                WHERE  header_id = l_header_id;
3844             EXCEPTION
3845                WHEN NO_DATA_FOUND THEN
3846                    l_order_source_id := null;
3847                    l_orig_sys_document_ref := null;
3848                    l_change_sequence := null;
3849                    l_source_document_type_id := null;
3850                    l_source_document_id := null;
3851                WHEN OTHERS THEN
3852                    l_order_source_id := null;
3853                    l_orig_sys_document_ref := null;
3854                    l_change_sequence := null;
3855                    l_source_document_type_id := null;
3856                    l_source_document_id := null;
3857             END;
3858          END IF;
3859       ELSIF l_request_rec.entity_code = 'LINE_SCREDIT' THEN
3860          IF l_request_rec.entity_id IS NOT NULL THEN
3861             BEGIN
3862                IF l_debug_level  > 0 THEN
3863                   oe_debug_pub.add('Getting line_id of the line scredit:'||l_request_rec.entity_id);
3864                END IF;
3865                SELECT line_id
3866                INTO   l_line_id
3867                FROM   oe_sales_credits
3868                WHERE  sales_credit_id = l_request_rec.entity_id;
3869             EXCEPTION
3870                WHEN NO_DATA_FOUND THEN
3871                   l_line_id := null;
3872                WHEN OTHERS THEN
3873                   l_line_id := null;
3874             END;
3875          END IF;
3876          IF l_line_id IS NOT NULL THEN
3877             BEGIN
3878                IF l_debug_level  > 0 THEN
3879                   oe_debug_pub.add('Getting reference data for line_id:'||l_line_id);
3880                END IF;
3881                SELECT order_source_id, orig_sys_document_ref, change_sequence,
3882                source_document_type_id, source_document_id,  orig_sys_line_ref,
3883                source_document_line_id, orig_sys_shipment_ref, header_id
3884                INTO l_order_source_id, l_orig_sys_document_ref, l_change_sequence,
3885                l_source_document_type_id, l_source_document_id, l_orig_sys_line_ref,
3886                l_source_document_line_id, l_orig_sys_shipment_ref, l_header_id
3887                FROM   OE_ORDER_LINES_ALL
3888                WHERE  line_id = l_line_id;
3889             EXCEPTION
3890                WHEN NO_DATA_FOUND THEN
3891                    l_header_id := null;
3892                    l_order_source_id := null;
3893                    l_orig_sys_document_ref := null;
3894                    l_change_sequence := null;
3895                    l_source_document_type_id := null;
3896                    l_source_document_id := null;
3897                    l_orig_sys_line_ref := null;
3898                    l_source_document_line_id := null;
3899                    l_orig_sys_shipment_ref := null;
3900                WHEN OTHERS THEN
3901                    l_header_id := null;
3902                    l_order_source_id := null;
3903                    l_orig_sys_document_ref := null;
3904                    l_change_sequence := null;
3905                    l_source_document_type_id := null;
3906                    l_source_document_id := null;
3907                    l_orig_sys_line_ref := null;
3908                    l_source_document_line_id := null;
3909                    l_orig_sys_shipment_ref := null;
3910             END;
3911          END IF;
3912       END IF;
3913 
3914       OE_MSG_PUB.set_msg_context(
3915 	 p_entity_code			=> l_request_rec.entity_code
3916   	,p_entity_id         		=> l_request_rec.entity_id
3917     	,p_header_id         		=> l_header_id
3918     	,p_line_id           		=> l_line_id
3919     	,p_order_source_id  		=> l_order_source_id
3920     	,p_orig_sys_document_ref	=> l_orig_sys_document_ref
3921     	,p_orig_sys_document_line_ref	=> l_orig_sys_line_ref
3922     	,p_orig_sys_shipment_ref	=> l_orig_sys_shipment_ref
3923     	,p_change_sequence  		=> l_change_sequence
3924     	,p_source_document_type_id	=> l_source_document_type_id
3925     	,p_source_document_id		=> l_source_document_id
3926     	,p_source_document_line_id	=> l_source_document_line_id );
3927     IF l_debug_level > 0 THEN
3928 	oe_debug_pub.add('Request Entity:'||l_request_rec.entity_code||
3929 					' Request ID:'||l_request_rec.entity_id);
3930     END IF;
3931 
3932 	   -- Action Request to Apply Automatic Attachments
3933         IF  l_request_rec.request_type = OE_GLOBALS.G_APPLY_AUTOMATIC_ATCHMT THEN
3934 
3935                OE_DELAYED_REQUESTS_UTIL.Apply_Automatic_Attachments
3936 					( p_entity_code 		=> l_request_rec.entity_code
3937 					, p_entity_id 			=> l_request_rec.entity_id
3938 					, p_is_user_action		=> 'Y'
3939 					, x_return_status		=> l_return_status
3940 					);
3941                l_request_rec.processed := 'Y';
3942         ELSIF l_request_rec.request_type = OE_GLOBALS.G_PRICE_ORDER THEN
3943         -- For ER 7243028
3944             IF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_HEADER THEN
3945                 IF l_debug_level > 0 THEN
3946                   oe_debug_pub.add('Before calling Price Order for :' || l_request_rec.entity_id, 5);
3947                 END IF;
3948 		OE_ORDER_ADJ_PVT.price_action
3949 		(
3950 			p_header_count          =>      1,
3951 			p_header_list           =>      l_request_rec.entity_id,
3952 			p_line_count            =>      0,
3953 			p_line_list             =>      NULL,
3954 			p_price_level           =>      'ORDER',
3955 			x_return_status		=>      l_return_status,
3956 			x_msg_count             =>      l_msg_count,
3957 			x_msg_data              =>      l_msg_data
3958 		);
3959             ELSIF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_LINE THEN
3960 
3961                 l_lines_count :=0;
3962 
3963                 for j in i .. p_x_request_tbl.count loop
3964                     if p_x_request_tbl(j).request_type = OE_GLOBALS.G_PRICE_ORDER and
3965                        p_x_request_tbl(j).entity_code = OE_GLOBALS.G_ENTITY_LINE
3966                     then
3967                        l_lines_count := l_lines_count + 1;
3968                        if l_lines_count = 1 then
3969                          l_lines_list := p_x_request_tbl(j).entity_id;
3970                        else
3971                          l_lines_list := l_lines_list || ',' || p_x_request_tbl(j).entity_id;
3972                        end if;
3973                        p_x_request_tbl(j).processed := 'Y';
3974                     end if;
3975                 end loop;
3976 
3977                 IF l_debug_level > 0 THEN
3978                   oe_debug_pub.add('Before calling Price Line for count :' || l_lines_count || '; List : ' || l_lines_list, 5);
3979                 END IF;
3980                 OE_ORDER_ADJ_PVT.price_action
3981                 (
3982                         p_header_count          =>      0,
3983                         p_header_list           =>      null,
3984                         p_line_count            =>      l_lines_count,
3985                         p_line_list             =>      l_lines_list,
3986                         p_price_level           =>      'LINE',
3987                         x_return_status         =>      l_return_status,
3988                         x_msg_count             =>      l_msg_count,
3989                         x_msg_data              =>      l_msg_data
3990                 );
3991             ELSE
3992                 IF l_debug_level > 0 THEN
3993                   oe_debug_pub.add('Invalid entity given for Price Order Action. Entity has to be Header or Line', 5);
3994                 END IF;
3995 
3996 		    FND_MESSAGE.SET_NAME('ONT','ONT_INVALID_REQUEST');
3997 		    FND_MESSAGE.SET_TOKEN('ACTION',l_request_rec.request_type);
3998 		    OE_MSG_PUB.Add;
3999 		    l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4000 
4001 		    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4002             END IF;
4003 
4004             IF l_debug_level > 0 THEN
4005               oe_debug_pub.add('After Price Order, Status : ' || l_return_status, 5);
4006             END IF;
4007 
4008             l_request_rec.processed := 'Y';
4009 
4010             IF l_request_rec.return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4011               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4012             ELSIF l_request_rec.return_status = FND_API.G_RET_STS_ERROR THEN
4013               RAISE FND_API.G_EXC_ERROR;
4014             END IF;
4015 
4016         -- End of ER 7243028
4017 
4018 	   ELSIF l_request_rec.request_type = OE_GLOBALS.G_APPLY_HOLD THEN
4019 		IF l_debug_level > 0 THEN
4020 		OE_Debug_PUB.ADD('Calling Apply_Hold', 2);
4021 		END IF;
4022 		OE_Delayed_Requests_UTIL.Apply_Hold
4023 	           (p_validation_level => p_validation_level,
4024 	            x_request_rec      => l_request_rec);
4025 
4026                 l_request_rec.processed := 'Y';
4027         IF l_debug_level > 0 THEN
4028 		OE_Debug_PUB.ADD('After Calling Apply_hold', 2);
4029         END IF;
4030 
4031 	   ELSIF l_request_rec.request_type = OE_GLOBALS.G_RELEASE_HOLD THEN
4032                IF l_debug_level > 0 THEN
4033                OE_Debug_PUB.ADD('Calling Release_Hold', 2);
4034                END IF;
4035 	       OE_Delayed_Requests_UTIL.Release_Hold
4036 	       	   (p_validation_level => p_validation_level,
4037 	             x_request_rec => l_request_rec);
4038                l_request_rec.processed := 'Y';
4039                IF l_debug_level > 0 THEN
4040                OE_Debug_PUB.ADD('After Calling Release_hold', 2);
4041                END IF;
4042            --R12 CVV2
4043            ELSIF l_request_rec.request_type = OE_GLOBALS.G_VERIFY_PAYMENT THEN
4044                /*comm rej  IF nvl(l_request_rec.param2, 'HOLD') = 'REJECT' THEN
4045                     l_reject_on_auth_failure := 'Y';
4046                  ELSE
4047                     l_reject_on_auth_failure := 'N';
4048                  END IF;
4049 
4050                  IF nvl(l_request_rec.param3, 'HOLD') = 'REJECT' THEN
4051                     l_reject_on_risk_failure := 'Y';
4052                  ELSE
4053                     l_reject_on_risk_failure := 'N';
4054                  END IF; comm rej*/
4055 
4056                  /*
4057                  OE_Verify_Payment_PUB.Verify_Payment
4058                                      ( p_header_id      => l_request_rec.entity_id
4059                                      , p_calling_action => null
4060                                      , p_delayed_request=> null
4061                                      , p_reject_on_auth_failure => l_reject_on_auth_failure
4062                                      , p_reject_on_risk_failure => l_reject_on_risk_failure
4063                                      , p_risk_eval_flag => l_request_rec.param1
4064                                      , p_msg_count      => l_msg_count
4065                                      , p_msg_data       => l_msg_data
4066                                      , p_return_status  => l_return_status
4067                                      );
4068                 l_request_rec.return_status := l_return_status;
4069                 */
4070 
4071                 IF l_debug_level > 0 THEN
4072                    oe_debug_pub.add('Before call to Authrize Payment header_id is: ' || l_header_id);
4073                    oe_debug_pub.add('Before call to Authrize Payment line_id is: ' || l_line_id);
4074                --comm rej    oe_debug_pub.add('reject on auth is: ' || l_reject_on_auth_failure);
4075                --comm rej    oe_debug_pub.add('reject on risk is: ' || l_reject_on_risk_failure);
4076                    oe_debug_pub.add('risk eval flag is: ' || l_request_rec.param1);
4077                 END IF;
4078 
4079                 OE_Header_UTIL.Query_Row
4080         		(p_header_id            => l_header_id
4081         		,x_header_rec           => l_header_rec
4082         		);
4083 
4084                  OE_Verify_Payment_PUB.Authorize_MultiPayments
4085                             ( p_header_rec          => l_header_rec
4086                             , p_line_id             => l_line_id --bug3524209
4087                             , p_calling_action      => null
4088                             --R12 CVV2
4089                           --comm rej  , p_reject_on_auth_failure => l_reject_on_auth_failure
4090                           --comm rej  , p_reject_on_risk_failure => l_reject_on_risk_failure
4091                             , p_risk_eval_flag         => l_request_rec.param1
4092                             --R12 CVV2
4093                             , p_msg_count           => l_msg_count
4094                             , p_msg_data            => l_msg_data
4095                             , p_result_out          => l_result_out
4096                             , p_return_status       => l_return_status
4097                             );
4098 
4099                 l_request_rec.return_status := l_return_status;
4100 
4101                 IF l_debug_level > 0 THEN
4102                    oe_debug_pub.add('After call to Authorizat Payment return status : ' || l_return_status);
4103                 END IF;
4104 
4105                 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
4106                   RAISE FND_API.G_EXC_ERROR;
4107                 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4108                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4109                 END IF;
4110 
4111                 l_request_rec.processed := 'Y';
4112                 -- to ensure verify_payment not getting called again during book_order.
4113                 OE_GLOBALS.G_PAYMENT_PROCESSED := 'Y';
4114            --R12 CVV2
4115 
4116 
4117            ELSIF (l_request_rec.request_type = OE_GLOBALS.G_BOOK_ORDER
4118 			AND p_process_WF_requests) THEN
4119 
4120 		IF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_HEADER THEN
4121                    IF l_debug_level > 0 THEN
4122                         OE_Debug_PUB.ADD('Calling Book Order');
4123                    END IF;
4124 			OE_Delayed_Requests_UTIL.Book_Order
4125 			( p_validation_level => p_validation_level
4126 			, p_header_id       => l_request_rec.entity_id
4127 			, x_return_status   => l_request_rec.return_status
4128 		  	);
4129                         l_request_rec.processed := 'Y';
4130 		END IF;
4131 
4132            ELSIF (l_request_rec.request_type = OE_GLOBALS.G_GET_SHIP_METHOD
4133                   OR l_request_rec.request_type = OE_GLOBALS.G_GET_FREIGHT_RATES
4134                   OR l_request_rec.request_type = OE_GLOBALS.G_GET_SHIP_METHOD_AND_RATES) THEN
4135 
4136                   IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110509' THEN
4137                         IF l_debug_level > 0 THEN
4138                         OE_DEBUG_PUB.Add('Calling Get Ship Method');
4139                         END IF;
4140 
4141                         -- Get_Ship_Method API not only gets ship method
4142                         -- from FTE, but also can get freight rates
4143                         -- from FTE. This API was named as Get_Ship_Method
4144                         -- initially for Carrier Selection, we added the
4145                         -- capability for Freight Rating later, and decided
4146                         -- to not change the API name.
4147                         OE_Delayed_Requests_UTIL.Get_Ship_Method
4148                         ( p_entity_code     => l_request_rec.entity_code
4149                         , p_entity_id       => l_request_rec.entity_id
4150                         , p_action_code     => l_request_rec.request_type
4151                         , x_return_status   => l_request_rec.return_status
4152                         );
4153                         l_request_rec.processed := 'Y';
4154 
4155                   END IF;
4156 
4157           ELSIF (l_request_rec.request_type = OE_GLOBALS.G_ADD_FULFILLMENT_SET OR
4158                  l_request_rec.request_type = OE_GLOBALS.G_REMOVE_FULFILLMENT_SET ) AND
4159                  l_request_rec.param5  IS NOT NULL   THEN
4160 
4161                  IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
4162 
4163                      IF l_request_rec.entity_code = OE_GLOBALS.G_ENTITY_LINE THEN
4164                         OE_Delayed_Requests_UTIL.Fulfillment_Sets
4165                         ( p_entity_code          => l_request_rec.entity_code
4166                         , p_entity_id            => l_request_rec.entity_id
4167                         , p_action_code          => l_request_rec.request_type
4168                         , p_fulfillment_set_name => l_request_rec.param5
4169                         , x_return_status        => l_request_rec.return_status
4170                         );
4171                         l_request_rec.processed := 'Y';
4172                      END IF;
4173                  END IF;
4174 
4175 	   ELSIF l_request_rec.request_type = OE_GLOBALS.G_DELINK_CONFIG
4176            THEN
4177 
4178 		OE_Delayed_Requests_UTIL.DELINK_CONFIG
4179                 ( p_line_id         => l_request_rec.entity_id
4180                  , x_return_status   => l_request_rec.return_status
4181                  );
4182                 l_request_rec.processed := 'Y';
4183 
4184             ELSIF (l_request_rec.request_type = OE_GLOBALS.G_MATCH_AND_RESERVE
4185                     AND p_process_WF_requests) THEN
4186 
4187 		OE_Delayed_Requests_UTIL.MATCH_AND_RESERVE
4188                 ( p_line_id         => l_request_rec.entity_id
4189 		, x_return_status   => l_request_rec.return_status
4190 		  );
4191                  l_request_rec.processed := 'Y';
4192 
4193        ELSIF (l_request_rec.request_type = OE_GLOBALS.G_LINK_CONFIG
4194                   AND p_process_WF_requests)
4195        THEN
4196              OE_Config_UTIL.LINK_CONFIG
4197              ( p_line_id         => l_request_rec.entity_id
4198              , p_config_item_id  => to_number(l_request_rec.param1)
4199              , x_return_status   => l_request_rec.return_status	);
4200               l_request_rec.processed := 'Y';
4201 	--Customer Acceptance Project actions
4202         ELSIF ( l_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT OR
4203 	        l_request_rec.request_type = OE_GLOBALS.G_REJECT_FULFILLMENT) AND
4204                 p_process_WF_requests THEN
4205 
4206 	        OE_ACCEPTANCE_PVT.Process_Acceptance(p_request_tbl => p_x_request_tbl
4207 					      ,x_return_status => l_return_status);
4208 
4209           /*** IMPORTANT ****/
4210 	  /** This has to be the last elsif.  When adding new action requests  **/
4211 	  /** please add above this elsif.  Since process_order_actions is now **/
4212 	  /** called twice, this cannot be an 'else' statement to ensure that  **/
4213 	  /** the WF requests are NOT marked invalid in the first call but     **/
4214 	  /** processed in the second call                                     **/
4215        ELSIF p_process_WF_requests THEN
4216 
4217           IF l_request_rec.entity_code = OE_Globals.G_ENTITY_HEADER THEN
4218              OE_MSG_PUB.update_msg_context(
4219                          p_header_id   => l_request_rec.entity_id);
4220 
4221           ELSIF l_request_rec.entity_code = OE_Globals.G_ENTITY_LINE THEN
4222               OE_MSG_PUB.update_msg_context(
4223   	           p_line_id  	=> l_request_rec.entity_id);
4224           END IF;
4225             FND_MESSAGE.SET_NAME('ONT','ONT_INVALID_REQUEST');
4226             FND_MESSAGE.SET_TOKEN('ACTION',l_request_rec.request_type);
4227             OE_MSG_PUB.Add;
4228             l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4229         END IF;
4230 
4231 	   IF l_request_rec.return_status = FND_API.G_RET_STS_UNEXP_ERROR
4232 	   THEN
4233 	      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4234 	   ELSIF l_request_rec.return_status = FND_API.G_RET_STS_ERROR
4235 	   THEN
4236 	      RAISE FND_API.G_EXC_ERROR;
4237 	   END IF;
4238 
4239            IF ( l_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT OR
4240                 l_request_rec.request_type = OE_GLOBALS.G_REJECT_FULFILLMENT) AND
4241                 p_process_WF_requests THEN
4242                 -- do not override return status set by process acceptance
4243                 null;
4244            else
4245 	        p_x_request_tbl(i) := l_request_rec;
4246            end if;
4247 
4248          OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4249 
4250     EXCEPTION
4251 
4252    	WHEN FND_API.G_EXC_ERROR THEN
4253       		l_request_rec.return_status := FND_API.G_RET_STS_ERROR;
4254                 l_request_rec.processed := 'Y';
4255       		p_x_request_tbl(i):= l_request_rec;
4256          OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4257 
4258    	WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4259       		l_request_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4260                 l_request_rec.processed := 'Y';
4261       		p_x_request_tbl(i):= l_request_rec;
4262          OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4263       		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4264 
4265 
4266       	WHEN OTHERS THEN
4267       		l_request_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4268                 l_request_rec.processed := 'Y';
4269       		p_x_request_tbl(i)		:= l_request_rec;
4270 
4271       	IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4272 		THEN
4273 	 	OE_MSG_PUB.Add_Exc_Msg
4274 	   	(   G_PKG_NAME
4275 	       	,   'Process_Order_Actions'
4276 	       	);
4277       	END IF;
4278 
4279          OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4280       	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4281 
4282     END;
4283      <<END_OF_LOOP>> -- Label for requests that do not need to be processed
4284       null;
4285     END LOOP;
4286 
4287     -- added for notification framework
4288     IF  OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
4289    oe_order_pvt.set_recursion_mode(p_Entity_Code => 10,
4290                                    p_In_out  => 0);
4291    END IF;
4292    IF l_debug_level > 0 THEN
4293    oe_debug_pub.ADD('Exiting OE_ORDER_PUB.PROCESS_ORDER_ACTIONS', 1);
4294    END IF;
4295    OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4296 
4297 EXCEPTION
4298 
4299     WHEN FND_API.G_EXC_ERROR THEN
4300          OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4301         RAISE;
4302 
4303     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4304          OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4305         RAISE;
4306 
4307     WHEN OTHERS THEN
4308 
4309        IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4310 	 THEN
4311             OE_MSG_PUB.Add_Exc_Msg
4312 	      (   G_PKG_NAME
4313 		  ,   'Process_Order_Actions'
4314 		  );
4315        END IF;
4316 
4317          OE_MSG_PUB.reset_msg_context(l_request_rec.entity_code);
4318        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4319 
4320 END Process_Order_Actions;
4321 
4322 -- delete_against defaulting to TRUE to prevent delete
4323 -- of versioning requests for deletes.
4324 -- Bug 3800577
4325 -- Make p_entity_id an optional parameter so if it is null, delete
4326 -- all requests for that entity code
4327 Procedure Delete_Reqs_for_Deleted_Entity ( p_entity_code	IN Varchar2
4328                                         ,  p_delete_against    IN BOOLEAN := TRUE
4329 					,   p_entity_id       in Number := NULL
4330 , x_return_status OUT NOCOPY Varchar2)
4331 
4332 IS
4333      i			       	number;
4334      j			       	number;
4335      req_ind			number;
4336      request_delete		BOOLEAN;
4337      version_request_id		number := 0;
4338 --
4339 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4340 --
4341 BEGIN
4342 
4343 
4344 
4345    x_return_status := FND_API.G_RET_STS_SUCCESS;
4346    IF l_debug_level > 0 THEN
4347    oe_debug_pub.add('In Delete_Reqs_for_Deleted_Entity');
4348    oe_debug_pub.add('p_entity_code/p_entity_id' ||
4349    p_entity_code || '/' || p_entity_id);
4350    END IF;
4351 
4352 -- DELETING REQUESTS LOGGED AGAINST THIS ENTITY
4353 
4354    i := G_Delayed_Requests.first;
4355 
4356    WHILE i IS NOT NULL LOOP
4357      IF l_debug_level > 0 THEN
4358      oe_debug_pub.add('G_Delayed_Requests.entity_code/entity_id' ||
4359                        G_Delayed_Requests(i).entity_code || '/' ||
4360                        G_Delayed_Requests(i).entity_id);
4361      oe_debug_pub.add('G_Delayed_Requests.request_type' ||
4362                        G_Delayed_Requests(i).request_type);
4363 
4364      END IF;
4365 
4366      IF (G_Delayed_Requests(i).request_type = OE_GLOBALS.G_VERSION_AUDIT) THEN --Bug # 5206049
4367 	version_request_id := i;
4368      END IF;
4369 
4370      IF (G_Delayed_Requests(i).entity_code = p_entity_code
4371      	 AND (p_entity_id IS NULL OR
4372               G_Delayed_Requests(i).entity_id = p_entity_id)
4373         )
4374      THEN
4375 	    IF l_debug_level > 0 THEN
4376         oe_debug_pub.add('Delete above request');
4377         END IF;
4378 
4379 	-- delete records in requesting entity tables with this request
4380 	j := G_Requesting_Entities.first;
4381 	WHILE j IS NOT NULL LOOP
4382        	   IF G_Requesting_Entities(j).request_index = i THEN
4383  		  G_Requesting_Entities.Delete(j);
4384 	   END IF;
4385      	j := G_Requesting_Entities.Next(j);
4386 	END LOOP;
4387 
4388 	-- delete the delayed request
4389 	   G_Delayed_Requests.Delete(i);
4390 
4391      END IF;
4392 
4393      i := G_Delayed_Requests.Next(i);
4394 
4395   END LOOP;
4396 
4397 
4398 -- DELETING REQUESTS LOGGED BY THIS ENTITY
4399 -- DO this only if delete agains is false. If true we delete request logged
4400 -- against the given entity.
4401 
4402 IF NOT p_delete_against THEN
4403    IF l_debug_level > 0 THEN
4404    oe_debug_pub.add('Delete against is FALSE');
4405    END IF;
4406 
4407 
4408    i := G_Requesting_Entities.first;
4409 
4410    WHILE i  IS NOT NULL LOOP
4411 
4412    -- search for requests logged by this entity
4413 
4414      IF (G_Requesting_Entities(i).entity_code = p_entity_code
4415      	 AND (p_entity_id IS NULL OR
4416               G_Requesting_Entities(i).entity_id = p_entity_id)
4417         )
4418      THEN
4419 
4420 	req_ind := G_Requesting_Entities(i).request_index;
4421 
4422 	-- initialize request delete to TRUE
4423 	request_delete := TRUE;
4424 
4425 	-- set the delete to FALSE if there are other entities that
4426 	-- logged the same request but if the same entity has logged this
4427 	-- request, then delete in the requesting entities table
4428 
4429 	j := G_Requesting_Entities.first;
4430 	WHILE j IS NOT NULL LOOP
4431        	   IF G_Requesting_Entities(j).request_index = req_ind THEN
4432 		IF ((G_Requesting_Entities(j).entity_code = p_entity_code
4433        		    AND (p_entity_id is null
4434                          OR G_Requesting_Entities(j).entity_id = p_entity_id)
4435                     )AND (G_Requesting_Entities(j).request_index <> version_request_id ) )  --Bug # 5206049
4436                 THEN
4437  		  G_Requesting_Entities.Delete(j);
4438 		ELSE
4439 		  request_delete := FALSE;
4440 		END IF;
4441 	   END IF;
4442      	j := G_Requesting_Entities.Next(j);
4443 	END LOOP;
4444 
4445 	-- deleting the delayed request
4446 	IF request_delete
4447            AND G_Delayed_Requests.Exists(req_ind) THEN
4448               IF l_debug_level > 0 THEN
4449               oe_debug_pub.add('Delete following request =>');
4450               oe_debug_pub.add('G_Delayed_Requests.entity_code/entity_id' ||
4451                        G_Delayed_Requests(req_ind).entity_code || '/' ||
4452                        G_Delayed_Requests(req_ind).entity_id);
4453               oe_debug_pub.add('G_Delayed_Requests.request_type' ||
4454                        G_Delayed_Requests(req_ind).request_type);
4455               END IF;
4456            -- Bug 3800577
4457            -- Reset versioning globals if version request is deleted
4458            IF G_Delayed_Requests(req_ind).request_type
4459               = OE_GLOBALS.G_VERSION_AUDIT
4460            THEN
4461               IF l_debug_level > 0 THEN
4462               oe_debug_pub.add('reset versioning globals');
4463               END IF;
4464               IF (NOT OE_Versioning_Util.Reset_Globals) THEN
4465                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4466               END IF;
4467            END IF;
4468 	   G_Delayed_Requests.Delete(req_ind);
4469 	END IF;
4470 
4471      END IF;
4472 
4473      i := G_Requesting_Entities.Next(i);
4474 
4475   END LOOP;
4476 END IF;
4477 
4478 EXCEPTION
4479 
4480     WHEN FND_API.G_EXC_ERROR THEN
4481 
4482         x_return_status := FND_API.G_RET_STS_ERROR;
4483 
4484     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4485 
4486         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
4487 
4488    when others THEN
4489 
4490       IF OE_MSG_PUB.Check_MSg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4491 	 OE_MSG_PUB.Add_Exc_Msg
4492 	   (G_PKG_NAME
4493 	    ,'Delete_Reqs_for_Deleted_Entity');
4494       END IF;
4495 
4496       x_return_status := FND_API.G_RET_STS_ERROR;
4497 
4498 End Delete_Reqs_for_Deleted_Entity;
4499 
4500 
4501 /*---------------------------------------------------------------
4502 PROCEDURE Process_Scheduling_Request
4503 will be used for configurations scheduling requests.
4504 ----------------------------------------------------------------*/
4505 PROCEDURE Process_Scheduling_Request
4506 ( p_request_ind    IN  NUMBER
4507  ,p_request_rec    IN  OE_Order_PUB.request_rec_type
4508 ,x_return_status OUT NOCOPY VARCHAR2)
4509 
4510 IS
4511   I               NUMBER;
4512   K               NUMBER;
4513   l_ato_line_id   NUMBER;
4514   l_res_changes   VARCHAR2(1);
4515   l_request_tbl   OE_Order_PUB.request_tbl_type;
4516 --
4517 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4518 --
4519 BEGIN
4520   IF l_debug_level > 0 THEN
4521   oe_debug_pub.add('sch request '|| p_request_rec.request_type, 1);
4522   END IF;
4523 
4524   x_return_status := FND_API.G_RET_STS_SUCCESS;
4525 
4526   IF p_request_rec.request_type = OE_GLOBALS.G_SCHEDULE_ATO THEN
4527     IF l_debug_level > 0 THEN
4528     oe_debug_pub.add('.. schedule_ato '|| p_request_rec.entity_id, 1);
4529     END IF;
4530 
4531     IF p_request_rec.param9 = 'Y' THEN
4532       K := p_request_ind;
4533       IF l_debug_level > 0 THEN
4534       oe_debug_pub.add('searh for duplicates '|| K, 3);
4535       END IF;
4536       WHILE K is not null
4537       LOOP
4538         IF G_Delayed_Requests(K).request_type
4539                  = OE_GLOBALS.G_SCHEDULE_ATO AND
4540            G_Delayed_Requests(K).param2 = p_request_rec.param2 AND
4541            G_Delayed_Requests(K).param9 = 'Y'
4542         THEN
4543           IF l_debug_level > 0 THEN
4544           oe_debug_pub.add('another req for same top model', 2);
4545           END IF;
4546           SELECT ato_line_id
4547           INTO   l_ato_line_id
4548           FROM   oe_order_lines
4549           WHERE  line_id = G_Delayed_Requests(K).entity_id;
4550 
4551           IF nvl(l_ato_line_id, -1) <> G_Delayed_Requests(K).entity_id THEN
4552              IF l_debug_level > 0 THEN
4553             oe_debug_pub.add('2 incorrect sch_ato req ', 3);
4554              END IF;
4555             G_Delayed_Requests.DELETE(K);
4556           END IF;
4557         END IF;
4558         K :=  G_Delayed_Requests.NEXT(K);
4559       END LOOP;
4560     END IF; -- pto ato non ui
4561 
4562     IF G_Delayed_Requests.EXISTS(p_request_ind) THEN
4563       OE_Config_Schedule_Pvt.Schedule_ATO
4564       ( p_request_rec    => p_request_rec
4565        ,x_return_status  => x_return_status);
4566     END IF;
4567 
4568   ELSIF p_request_rec.request_type = OE_GLOBALS.G_SCHEDULE_SMC THEN
4569     IF l_debug_level > 0 THEN
4570     oe_debug_pub.add('calling schedule_smc '||  p_request_rec.param24 , 1);
4571     END IF;
4572 
4573     OE_Config_Schedule_Pvt.Schedule_SMC
4574     ( p_request_rec    => p_request_rec
4575      ,x_return_status  => x_return_status);
4576 
4577   ELSIF p_request_rec.request_type = OE_GLOBALS.G_SCHEDULE_NONSMC
4578   THEN
4579     I := 0;
4580     K := p_request_ind;
4581 
4582     WHILE K is not null
4583     LOOP
4584       IF G_Delayed_Requests(K).request_type
4585             = OE_GLOBALS.G_SCHEDULE_NONSMC AND
4586          G_Delayed_Requests(K).param2 = p_request_rec.param2 AND
4587          G_Delayed_Requests(K).param1 = p_request_rec.param1
4588       THEN
4589 
4590         l_ato_line_id := null;
4591 
4592         IF G_Delayed_Requests(K).param9 = 'Y' THEN
4593           SELECT ato_line_id
4594           INTO   l_ato_line_id
4595           FROM   oe_order_lines
4596           WHERE  line_id = G_Delayed_Requests(K).entity_id;
4597         END IF;
4598 
4599         IF l_ato_line_id is NULL THEN
4600           IF l_debug_level > 0 THEN
4601           oe_debug_pub.add('req for same model, same action', 2);
4602           END IF;
4603           I := I + 1;
4604           l_request_tbl(I) := G_Delayed_Requests(K);
4605 
4606           IF l_request_tbl(I).param24 = 'Y' THEN
4607             l_res_changes := 'Y';
4608           END IF;
4609         ELSE
4610           IF l_debug_level > 0 THEN
4611           oe_debug_pub.add('part of ato '|| l_ato_line_id , 3);
4612           END IF;
4613         END IF;
4614 
4615         G_Delayed_Requests.DELETE(K);
4616 
4617       END IF;
4618       K :=  G_Delayed_Requests.NEXT(K);
4619     END LOOP;
4620     IF l_debug_level > 0 THEN
4621     oe_debug_pub.add('calling schedule_nonsmc '||l_res_changes , 1);
4622     END IF;
4623     OE_Config_Schedule_Pvt.Schedule_NONSMC
4624     ( p_request_tbl    => l_request_tbl
4625      ,p_res_changes    => l_res_changes
4626      ,x_return_status  => x_return_status);
4627 
4628     ELSIF p_request_rec.request_type = OE_GLOBALS.G_DELAYED_SCHEDULE THEN
4629       if l_debug_level > 0 then
4630           oe_debug_pub.add('6663462 : calling delayed_schedule ' , 1);
4631       end if;
4632 
4633        OE_SCHEDULE_UTIL.DELAYED_SCHEDULE_LINES
4634        (x_return_status  => x_return_status);
4635 
4636   END IF;
4637   IF l_debug_level > 0 THEN
4638   oe_debug_pub.add('type----- '|| p_request_rec.request_type, 4);
4639   oe_debug_pub.add('leaving sch reqs '|| x_return_status, 1);
4640   END IF;
4641 EXCEPTION
4642   WHEN OTHERS THEN
4643     oe_debug_pub.add('Process_Scheduling_Request error '|| sqlerrm, 1);
4644     RAISE;
4645 END Process_Scheduling_Request;
4646 
4647 /*---------------------------------------------------------------
4648 PROCEDURE Check_Pricing_Request
4649 
4650 ----------------------------------------------------------------*/
4651 PROCEDURE Check_Pricing_Request
4652 ( p_request_ind    IN  NUMBER
4653  ,p_request_rec    IN  OUT NOCOPY /* file.sql.39 change */ OE_Order_PUB.request_rec_type
4654  ,x_log_request    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
4655 )
4656 
4657 IS
4658      l_request_search_rslt1	VARCHAR2(1);
4659      l_request_search_rslt2	VARCHAR2(1);
4660      l_request_search_rslt3	VARCHAR2(1);
4661      l_request_search_rslt4	VARCHAR2(1);
4662      l_return_status		VARCHAR2(1);
4663      l_request_ind		NUMBER;
4664      l_req_entity_ind		NUMBER;
4665      l_request			OE_Order_PUB.REQUEST_REC_TYPE;
4666      l_req_entity		OE_Order_PUB.Requesting_Entity_Rec_Type;
4667      l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4668 
4669 BEGIN
4670 
4671   /* Added the following condition to fix the fp bug 3498435 */
4672 
4673 IF p_request_rec.request_type = OE_GLOBALS.G_PRICE_ORDER THEN
4674 
4675 
4676   IF l_debug_level  > 0 THEN
4677      oe_debug_pub.add('Entering check_pricing_request in Oe_Delayed_Request_PVT.',1);
4678   END IF;
4679   IF (p_request_rec.request_unique_key1 = 'BATCH'
4680       OR p_request_rec.request_unique_key1 = 'BATCH,BOOK')
4681      AND nvl(p_request_rec.request_unique_key2,'N') = 'Y' THEN
4682 
4683      IF p_request_rec.request_unique_key1 = 'BATCH' THEN
4684         Check_For_Request(p_request_rec.entity_code,
4685                        p_request_rec.entity_id,
4686                        p_request_rec.request_type,
4687                        'BATCH,BOOK',
4688                        NULL,
4689                        p_request_rec.request_unique_key3,
4690                        p_request_rec.request_unique_key4,
4691                        p_request_rec.request_unique_key5,
4692                        l_request_ind,
4693                        l_request_search_rslt1,
4694                        l_return_status);
4695        IF l_request_search_rslt1 = FND_API.G_TRUE THEN
4696           -- no need to log request with BATCH and Y if
4697           -- 'BATCH,BOOK' and N already exists.
4698           x_log_request := 'N';
4699           return;
4700        ELSE
4701          Check_For_Request(p_request_rec.entity_code,
4702                        p_request_rec.entity_id,
4703                        p_request_rec.request_type,
4704                        'BATCH',
4705                        NULL,
4706                        p_request_rec.request_unique_key3,
4707                        p_request_rec.request_unique_key4,
4708                        p_request_rec.request_unique_key5,
4709                        l_request_ind,
4710                        l_request_search_rslt1,
4711                        l_return_status);
4712          END IF;
4713       ELSIF p_request_rec.request_unique_key1 = 'BATCH,BOOK' THEN
4714          Check_For_Request(p_request_rec.entity_code,
4715                        p_request_rec.entity_id,
4716                        p_request_rec.request_type,
4717                        'BATCH,BOOK',
4718                        NULL,
4719                        p_request_rec.request_unique_key3,
4720                        p_request_rec.request_unique_key4,
4721                        p_request_rec.request_unique_key5,
4722                        l_request_ind,
4723                        l_request_search_rslt1,
4724                        l_return_status);
4725 
4726       END IF;
4727 
4728       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4729             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4730       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4731             RAISE FND_API.G_EXC_ERROR;
4732       END IF;
4733 
4734        IF l_request_search_rslt1 = FND_API.G_TRUE THEN
4735           -- no need to log request with BATCH and Y if BATCH
4736           -- and N already exists.
4737           IF l_debug_level  > 0 THEN
4738              oe_debug_pub.add('there already exists BATCH + N so no need to log pricing request.', 3);
4739           END IF;
4740           x_log_request := 'N';
4741 
4742        ELSE
4743          IF p_request_rec.request_unique_key1 = 'BATCH' THEN
4744             -- check if there already exists request with
4745             -- pricing event 'ORDER' with get_freight_flag = 'N'.
4746             Check_For_Request(p_request_rec.entity_code,
4747                        p_request_rec.entity_id,
4748                        p_request_rec.request_type,
4749                        'ORDER',
4750                        NULL,
4751                        p_request_rec.request_unique_key3,
4752                        p_request_rec.request_unique_key4,
4753                        p_request_rec.request_unique_key5,
4754                        l_request_ind,
4755                        l_request_search_rslt2,
4756                        l_return_status);
4757          ELSIF p_request_rec.request_unique_key1 = 'BATCH,BOOK' THEN
4758             Check_For_Request(p_request_rec.entity_code,
4759                        p_request_rec.entity_id,
4760                        p_request_rec.request_type,
4761                        'ORDER,BOOK',
4762                        NULL,
4763                        p_request_rec.request_unique_key3,
4764                        p_request_rec.request_unique_key4,
4765                        p_request_rec.request_unique_key5,
4766                        l_request_ind,
4767                        l_request_search_rslt2,
4768                        l_return_status);
4769 
4770          END IF;
4771 
4772 
4773        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4774             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4775        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4776             RAISE FND_API.G_EXC_ERROR;
4777        END IF;
4778 
4779        IF l_request_search_rslt2 = FND_API.G_TRUE THEN
4780           -- check if there already exists request with
4781           -- pricing event 'LINE' with get_freight_flag = 'Y'.
4782           -- If exists, do nothing.
4783           IF l_debug_level  > 0 THEN
4784              oe_debug_pub.add('there already exists request with ORDER + N.',3);
4785           END IF;
4786           Check_For_Request(p_request_rec.entity_code,
4787                        p_request_rec.entity_id,
4788                        p_request_rec.request_type,
4789                        'LINE',
4790                        'Y',
4791                        p_request_rec.request_unique_key3,
4792                        p_request_rec.request_unique_key4,
4793                        p_request_rec.request_unique_key5,
4794                        l_request_ind,
4795                        l_request_search_rslt3,
4796                        l_return_status);
4797           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4798             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4799           ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4800             RAISE FND_API.G_EXC_ERROR;
4801           END IF;
4802 
4803           IF l_request_search_rslt3 = FND_API.G_TRUE THEN
4804              -- If not exists, replace BATCH event with LINE event
4805              -- since request with 'ORDER' event already exists.
4806              IF l_debug_level  > 0 THEN
4807                 oe_debug_pub.add('there exists LINE + Y and ORDER + N so no need to log request for BATCH + Y.', 3);
4808              END IF;
4809              x_log_request := 'N';
4810           ELSE
4811              -- if l_request_search_rslt3 = FND_API.G_FALSE THEN
4812              -- check for LINE and N.
4813              Check_For_Request(p_request_rec.entity_code,
4814                        p_request_rec.entity_id,
4815                        p_request_rec.request_type,
4816                        'LINE',
4817                        NULL,
4818                        p_request_rec.request_unique_key3,
4819                        p_request_rec.request_unique_key4,
4820                        p_request_rec.request_unique_key5,
4821                        l_request_ind,
4822                        l_request_search_rslt4,
4823                        l_return_status);
4824              IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4825                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4826              ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4827                 RAISE FND_API.G_EXC_ERROR;
4828              END IF;
4829 
4830 
4831              IF l_request_search_rslt4 = FND_API.G_TRUE THEN
4832                 -- if already exists request with LINE and N.
4833                 IF l_debug_level  > 0 THEN
4834                    oe_debug_pub.add('there exists LINE + N and ORDER + N so no need to log request for BATCH + Y.', 3);
4835                 END IF;
4836                 x_log_request := 'N';
4837 
4838              ELSE
4839                --  p_request_rec.request_unique_key1 := 'LINE';
4840                -- replace event BATCH with LINE.
4841                IF l_debug_level  > 0 THEN
4842                   oe_debug_pub.add('replace BATCH event with LINE + Y and ORDER + N.', 3);
4843                END IF;
4844                p_request_rec.param2 := 'LINE';
4845                p_request_rec.request_unique_key1 := 'LINE';
4846                p_request_rec.request_unique_key2 := 'Y';
4847              END IF;
4848           END IF;  -- end of l_request_search_rslt3.
4849 
4850 
4851         END IF;  -- end of l_request_search_rslt2
4852       END IF;  -- end of l_request_search_rslt1
4853 
4854   ELSIF p_request_rec.request_unique_key1 = 'ORDER'
4855         AND nvl(p_request_rec.request_unique_key2,'N') = 'N' THEN
4856         Check_For_Request(p_request_rec.entity_code,
4857                        p_request_rec.entity_id,
4858                        p_request_rec.request_type,
4859                        'BATCH',
4860                        NULL,
4861                        p_request_rec.request_unique_key3,
4862                        p_request_rec.request_unique_key4,
4863                        p_request_rec.request_unique_key5,
4864                        l_request_ind,
4865                        l_request_search_rslt1,
4866                        l_return_status);
4867 
4868        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4869             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4870        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4871             RAISE FND_API.G_EXC_ERROR;
4872        END IF;
4873 
4874        IF l_request_search_rslt1 = FND_API.G_TRUE THEN
4875          -- if l_request_search_rslt1 = FND_API.G_TRUE
4876          -- request with event 'BATCH' and get_freight_flag ='N'
4877          -- exists, don't need to log request.
4878          IF l_debug_level  > 0 THEN
4879             oe_debug_pub.add('there exists BATCH + N so no need to log request.', 3);
4880          END IF;
4881          x_log_request := 'N';
4882        ELSE
4883           -- if l_request_search_rslt1 = FND_API.G_FALSE
4884           -- request with event 'BATCH' and get_freight_flag ='N'
4885           -- does not exist.
4886           Check_For_Request(p_request_rec.entity_code,
4887                        p_request_rec.entity_id,
4888                        p_request_rec.request_type,
4889                        'BATCH',
4890                        'Y',
4891                        p_request_rec.request_unique_key3,
4892                        p_request_rec.request_unique_key4,
4893                        p_request_rec.request_unique_key5,
4894                        l_request_ind,
4895                        l_request_search_rslt2,
4896                        l_return_status);
4897           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4898             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4899           ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4900             RAISE FND_API.G_EXC_ERROR;
4901           END IF;
4902 
4903           IF l_request_search_rslt2 = FND_API.G_TRUE THEN
4904 
4905             -- there exists request with BATCH+Y already.
4906             -- need to delete BATCH+Y, log the current request which is
4907             -- ORDER+N and log an additional request LINE+Y.
4908             IF l_debug_level  > 0 THEN
4909                oe_debug_pub.add('need to have two separate requests ORDER + N and LINE + Y',3);
4910             END IF;
4911             delete_request(p_entity_code         => p_request_rec.entity_code,
4912                            p_entity_id           => p_request_rec.entity_id,
4913                            p_request_type        => p_request_rec.request_type,
4914                            p_request_unique_key1 => 'BATCH',
4915                            p_request_unique_key2 => 'Y',
4916                            x_return_status       => l_return_status);
4917 
4918             log_request(p_entity_code  => OE_GLOBALS.G_ENTITY_ALL,
4919          	       p_entity_id         	=> p_request_rec.entity_id,
4920 		       p_requesting_entity_code => p_request_rec.entity_code,
4921 		       p_requesting_entity_id   => p_request_rec.entity_id,
4922 		       p_request_unique_key1  	=> 'LINE',
4923 		       p_request_unique_key2  	=> 'Y',
4924 		       p_param1                 => p_request_rec.entity_id,
4925                        p_param2                 => 'LINE',
4926 		       p_request_type           => p_request_rec.request_type,
4927 		       x_return_status          => l_return_status);
4928 
4929           END IF;
4930 
4931         END IF; -- enf of l_request_search_rslt1.
4932   ELSIF p_request_rec.request_unique_key1 = 'BATCH'
4933         AND nvl(p_request_rec.request_unique_key2,'N') = 'N'
4934         OR  p_request_rec.request_unique_key1 = 'BATCH,BOOK'
4935         AND nvl(p_request_rec.request_unique_key2,'N') = 'N' THEN
4936         -- delete all other request for G_PRICE_ORDER.
4937         IF l_debug_level  > 0 THEN
4938            oe_debug_pub.add('delete all other price_order request.',1);
4939         END IF;
4940         delete_request(p_entity_code   =>OE_GLOBALS.G_ENTITY_ALL,
4941                        p_entity_id     => p_request_rec.entity_id,
4942                        p_request_type  => p_request_rec.request_type,
4943                        p_request_unique_key1 => 'ORDER',
4944                        x_return_status => l_return_status);
4945         delete_request(p_entity_code   =>OE_GLOBALS.G_ENTITY_ALL,
4946                        p_entity_id     => p_request_rec.entity_id,
4947                        p_request_type  => p_request_rec.request_type,
4948                        p_request_unique_key1 => 'BATCH',
4949                        x_return_status => l_return_status);
4950       IF p_request_rec.request_unique_key1 = 'BATCH,BOOK'
4951         AND nvl(p_request_rec.request_unique_key2,'N') = 'N' THEN
4952         -- event is 'BATCH,BOOK'
4953         delete_request(p_entity_code   =>OE_GLOBALS.G_ENTITY_ALL,
4954                        p_entity_id     => p_request_rec.entity_id,
4955                        p_request_type  => p_request_rec.request_type,
4956                        p_request_unique_key1 => 'ORDER,BOOK',
4957                        x_return_status => l_return_status);
4958         delete_request(p_entity_code   =>OE_GLOBALS.G_ENTITY_ALL,
4959                        p_entity_id     => p_request_rec.entity_id,
4960                        p_request_type  => p_request_rec.request_type,
4961                        p_request_unique_key1 => 'BATCH,BOOK',
4962                        x_return_status => l_return_status);
4963       END IF;
4964 
4965   ELSIF p_request_rec.request_unique_key1 = 'ORDER,BOOK'
4966         AND nvl(p_request_rec.request_unique_key2,'N') = 'N' THEN
4967      Check_For_Request(p_request_rec.entity_code,
4968                        p_request_rec.entity_id,
4969                        p_request_rec.request_type,
4970                        'BATCH,BOOK',
4971                        NULL,
4972                        p_request_rec.request_unique_key3,
4973                        p_request_rec.request_unique_key4,
4974                        p_request_rec.request_unique_key5,
4975                        l_request_ind,
4976                        l_request_search_rslt1,
4977                        l_return_status);
4978 
4979        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4980             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4981        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4982             RAISE FND_API.G_EXC_ERROR;
4983        END IF;
4984 
4985        IF l_request_search_rslt1 = FND_API.G_TRUE THEN
4986           -- request with event 'BATCH' and get_freight_flag ='N'
4987           -- already exists, no need to log request.
4988          IF l_debug_level  > 0 THEN
4989             oe_debug_pub.add('there exists BATCH + N so no need to log request.', 3);
4990          END IF;
4991          x_log_request := 'N';
4992        ELSE
4993           -- l_request_search_rslt1 = FND_API.G_FALSE
4994           -- request with event 'BATCH' and get_freight_flag ='N'
4995           -- does not exist.
4996           Check_For_Request(p_request_rec.entity_code,
4997                        p_request_rec.entity_id,
4998                        p_request_rec.request_type,
4999                        'BATCH,BOOK',
5000                        'Y',
5001                        p_request_rec.request_unique_key3,
5002                        p_request_rec.request_unique_key4,
5003                        p_request_rec.request_unique_key5,
5004                        l_request_ind,
5005                        l_request_search_rslt2,
5006                        l_return_status);
5007           IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5008             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5009           ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5010             RAISE FND_API.G_EXC_ERROR;
5011           END IF;
5012 
5013           IF l_request_search_rslt2 = FND_API.G_TRUE THEN
5014 
5015             -- there exists request with BATCH,BOOK+Y already.
5016             -- need to delete BATCH,BOOK+Y, log the current request which is
5017             -- ORDER,BOOK+N and log an additional request LINE+Y.
5018             IF l_debug_level  > 0 THEN
5019                oe_debug_pub.add('need to have two separate requests ORDER,BOOK + N and LINE + Y and delete BATCH,BOOK + Y',1);
5020             END IF;
5021             delete_request(p_entity_code     => p_request_rec.entity_code,
5022                        p_entity_id           => p_request_rec.entity_id,
5023                        p_request_type        => p_request_rec.request_type,
5024                        p_request_unique_key1 => 'BATCH,BOOK',
5025                        p_request_unique_key2 => 'Y',
5026                        x_return_status       => l_return_status);
5027 
5028            log_request(p_entity_code  => OE_GLOBALS.G_ENTITY_ALL,
5029          	       p_entity_id         	=> p_request_rec.entity_id,
5030 		       p_requesting_entity_code => p_request_rec.entity_code,
5031 		       p_requesting_entity_id   => p_request_rec.entity_id,
5032 		       p_request_unique_key1  	=> 'LINE',
5033 		       p_request_unique_key2  	=> 'Y',
5034 		       p_param1                 => p_request_rec.entity_id,
5035                        p_param2                 => 'LINE',
5036 		       p_request_type           => p_request_rec.request_type,
5037 		       x_return_status          => l_return_status);
5038 
5039           END IF;
5040 
5041         END IF;
5042 
5043   END IF;
5044 
5045   /* New code added to fix the fp bug 3498435 */
5046 ELSIF p_request_rec.request_type = OE_GLOBALS.G_PRICE_LINE  THEN
5047      IF l_debug_level > 0 THEN
5048      oe_debug_pub.add('3498435: Entering check_pricing_request '||p_request_rec.request_unique_key1,1);
5049      END IF;
5050        IF p_request_rec.request_unique_key1 = 'LINE' THEN
5051             Check_For_Request(p_request_rec.entity_code,
5052                            p_request_rec.entity_id,
5053                            p_request_rec.request_type,
5054                            'BATCH',
5055                            NULL,
5056                            p_request_rec.request_unique_key3,
5057                            p_request_rec.request_unique_key4,
5058                            p_request_rec.request_unique_key5,
5059                            l_request_ind,
5060                            l_request_search_rslt1,
5061                            l_return_status);
5062            IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5063                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5064            ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5065                 RAISE FND_API.G_EXC_ERROR;
5066            END IF;
5067 
5068            IF l_request_search_rslt1 = FND_API.G_TRUE THEN
5069              IF l_debug_level  > 0 THEN
5070                 oe_debug_pub.add('there exists BATCH + N so no need to log request.', 3);
5071              END IF;
5072              x_log_request := 'N';
5073            ELSE
5074                           IF l_debug_level  > 0 THEN
5075                           oe_debug_pub.add('3498435: Search result is false ',1);
5076                           END IF;
5077                           Check_For_Request(p_request_rec.entity_code,
5078                            p_request_rec.entity_id,
5079                            p_request_rec.request_type,
5080                            'BATCH,BOOK',
5081                            NULL,
5082                            p_request_rec.request_unique_key3,
5083                            p_request_rec.request_unique_key4,
5084                            p_request_rec.request_unique_key5,
5085                            l_request_ind,
5086                            l_request_search_rslt2,
5087                            l_return_status);
5088                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5089                      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5090                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5091                      RAISE FND_API.G_EXC_ERROR;
5092                 END IF;
5093                 IF l_request_search_rslt2 = FND_API.G_TRUE THEN
5094                   IF l_debug_level  > 0 THEN
5095                      oe_debug_pub.add('there exists BATCH,BOOK + N so no need to log request.', 3);
5096                   END IF;
5097                   x_log_request := 'N';
5098                 END IF; --l_request_search_rslt2
5099            END IF; --l_request_search_rslt1
5100        ELSIF (nvl(p_request_rec.request_unique_key1,p_request_rec.param2) = 'BATCH'
5101           OR  nvl(p_request_rec.request_unique_key1,p_request_rec.param2) = 'BATCH,BOOK') THEN
5102                 IF l_debug_level  > 0 THEN
5103                    oe_debug_pub.add('Delete Line',3);
5104                 END IF;
5105                 delete_request(p_entity_code         => p_request_rec.entity_code,
5106                                p_entity_id           => p_request_rec.entity_id,
5107                                p_request_type        => p_request_rec.request_type,
5108                                p_request_unique_key1 => 'LINE',
5109                                p_request_unique_key2 => NULL,
5110                                x_return_status       => l_return_status);
5111        END IF; --p_request_rec.request_unique_key1 check
5112     END IF;  --Price order or price line check
5113 
5114 
5115 /* End of New code added to fix the fp bug 3498435   */
5116 
5117 
5118   IF l_debug_level  > 0 THEN
5119   oe_debug_pub.add('Exiting procedure OE_Delayed_Requests_Pvt.Check_Pricing_Request', 1);
5120   END IF;
5121 
5122 END Check_Pricing_Request;
5123 
5124 END OE_Delayed_Requests_Pvt;