DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_SHP_PROCESS

Source


1 PACKAGE BODY OE_SHP_PROCESS AS
2 /* $Header: OEXSHPRB.pls 115.3 99/07/16 08:15:54 porting shi $ */
3 
4 OE_SUCCESS  CONSTANT VARCHAR2(1) := 'Y';
5 OE_FAILURE  CONSTANT VARCHAR2(1) := 'N';
6 OE_SHIPMENT_MISMATCH CONSTANT VARCHAR2(30) :=
7            'SHIPMENT_SCHEDULE_QTY_MISMATCH';
8 
9 PROCEDURE Apply_Ordered_Quantity_Change
10 (
11         P_Lines_Item_Type_Code          IN  VARCHAR2,
12         P_Lines_Ser_Flag                IN  VARCHAR2,
13         P_Ord_Enforce_List_Prices_Flag  IN VARCHAR2,
14         P_Shp_Config_Flag               OUT VARCHAR2,
15         P_Shp_Sch_Flag                  OUT VARCHAR2,
16         P_Shp_Adj_Flag                  OUT VARCHAR2,
17         P_Shp_Apply_Ord_Adj_Flag        OUT VARCHAR2,
18         P_Shp_Credit_Flag               OUT VARCHAR2,
19         P_Shp_Ser_Flag                  IN OUT VARCHAR2,
20         P_Shp_Schedule_Quantity_Tot   IN OUT NUMBER,
21         P_Line_Details_S_Qty_Total   OUT NUMBER,
22         P_Shp_Installation_Quantity   OUT NUMBER,
23         P_Shp_Ordered_Quantity        IN  NUMBER,
24         P_Shp_Open_Quantity           IN OUT NUMBER,
25         P_Shp_Cancelled_Quantity      IN  NUMBER,
26         P_return_Status                 IN OUT VARCHAR2
27 )
28 is
29 
30 begin
31 
32    P_Return_Status:=OE_SUCCESS;
33 
34    OE_SHP_PROCESS.Get_Shipment_Detail_Controls(
35         P_Lines_Item_Type_Code=>P_Lines_Item_Type_Code,
36         P_Lines_Ser_Flag=>P_Lines_Ser_Flag,
37         P_Ord_Enforce_List_Prices_Flag=>P_Ord_Enforce_List_Prices_Flag,
38         P_Shp_Config_Flag=>P_Shp_Config_Flag,
39         P_Shp_Sch_Flag=>P_Shp_Sch_Flag,
40         P_Shp_Adj_Flag=>P_Shp_Adj_Flag,
41         P_Shp_Apply_Ord_Adj_Flag=>P_Shp_Apply_Ord_Adj_Flag,
42         P_Shp_Credit_Flag=>P_Shp_Credit_Flag,
43         P_Shp_Ser_Flag=>P_Shp_Ser_Flag,
44         P_return_Status=>P_return_Status);
45 
46    if ( P_Return_Status = OE_FAILURE ) then
47       return;
48    end if;
49 
50    if (P_Shp_Schedule_Quantity_Tot   is not null ) then
51    	OE_LIN.Calc_Lin_Obj_Open_Quantity(
52         	Lin_Obj_Ordered_Quantity=>P_Shp_Ordered_Quantity,
53         	Lin_Obj_Open_Quantity=>P_Shp_Open_Quantity,
54         	Lin_Obj_Cancelled_Quantity=>P_Shp_Cancelled_Quantity,
55 		P_Return_Status=>P_return_Status
56 		);
57         if ( P_Return_Status = OE_FAILURE ) then
58 	   return;
59 	end if;
60 	P_Shp_Schedule_Quantity_Tot:=P_Shp_Open_Quantity;
61 	P_Line_Details_S_Qty_Total:=P_Shp_Open_Quantity;
62    end if;
63 
64    if (P_Shp_Ser_Flag='Y') then
65 	P_Shp_Installation_Quantity:=null;
66    end if;
67 
68 exception
69 
70  when others then
71       P_Return_Status:=OE_FAILURE;
72       OE_MSG.Internal_Exception(Routine=>
73                                 'OE_OPT_SER_LINES.Apply_Ordered_Quantity_Change',
74                                 Operation=>'',
75 				Object=>'SHIPMENT',
76                                 Message=>' When Others');
77 
78 
79 end Apply_Ordered_Quantity_Change;
80 
81 PROCEDURE Get_Shipment_Detail_Controls
82 (
83         P_Lines_Item_Type_Code          IN  VARCHAR2,
84         P_Lines_Ser_Flag                IN  VARCHAR2,
85         P_Ord_Enforce_List_Prices_Flag  IN VARCHAR2,
86         P_Shp_Config_Flag         	OUT VARCHAR2,
87         P_Shp_Sch_Flag            	OUT VARCHAR2,
88         P_Shp_Adj_Flag            	OUT VARCHAR2,
89         P_Shp_Apply_Ord_Adj_Flag        OUT VARCHAR2,
90         P_Shp_Credit_Flag               OUT VARCHAR2,
91         P_Shp_Ser_Flag                  OUT VARCHAR2,
92         P_return_Status                 OUT VARCHAR2
93 )
94 is
95 
96 begin
97 
98  if ( P_Lines_Item_Type_Code = 'MODEL') then
99     P_Shp_Config_Flag:='Y';
100  else
101     P_Shp_Config_Flag:='N';
102  end if;
103 
104  if ( P_Ord_Enforce_List_Prices_Flag = 'Y' ) then
105     P_Shp_Adj_Flag:='N';
106  else
107     P_Shp_Adj_Flag:='Y';
108  end if;
109 
110  P_Shp_Apply_Ord_Adj_Flag:='Y';
111  P_Shp_Credit_Flag:='Y';
112  P_Shp_Ser_Flag:=P_Lines_Ser_Flag;
113 
114 exception
115 
116  when others then
117       P_Return_Status:=OE_FAILURE;
118       OE_MSG.Internal_Exception(Routine=>
119                                 'OE_SHP_PROCESS.Get_Shipment_Detail_Controls',
120                                 Operation=>'',
121 				Object=>'SHIPMENT',
122                                 Message=>' When Others');
123 
124 
125 end Get_Shipment_Detail_Controls;
126 
127 PROCEDURE Query_Shipment_Total
128 (
129         P_Shp_Row_Id            IN VARCHAR2,
130         P_Shp_Line_Id           IN NUMBER,
131         P_Lines_Line_Id             IN NUMBER,
132         P_Shp_Line_Type_Code    IN VARCHAR2,
133         P_Shp_serviceable_Flag  IN VARCHAR2,
134         P_Order_Currency_Precision  IN NUMBER,
135         P_Shp_Selling_Price     IN NUMBER,
136         P_Shp_Line_Total  	  IN OUT NUMBER,
137         P_Shp_Total             IN OUT NUMBER,
138         P_Shp_Ordered_Quantity  IN NUMBER,
139         P_Shp_Open_Quantity     IN OUT NUMBER,
140         P_Shp_Cancelled_Quantity IN NUMBER,
141         P_Shp_Service_Total     OUT NUMBER,
142         P_Shp_Query_Total       OUT VARCHAR2,
143 	P_Return_Status	          IN OUT VARCHAR2
144 )
145 is
146 
147 begin
148 
149 P_Return_Status:=OE_SUCCESS;
150 
151 if P_Shp_Line_id is not null then
152    if P_Shp_Total is not null then
153        P_Shp_Query_Total:='N';
154    else
155        P_Shp_Total:=0;
156        P_Shp_Line_Total:=0;
157        P_Shp_Service_Total:=0;
158        OE_SHP_PROCESS.Calc_Shipment_Total(
159              P_Shp_Line_Total=>P_Shp_Line_Total,
160              P_Shp_Ordered_Quantity=>P_Shp_Ordered_Quantity,
161              P_Shp_Open_Quantity=>P_Shp_Open_Quantity,
162              P_Shp_Cancelled_Quantity=>P_Shp_Cancelled_Quantity,
163              P_Shp_Selling_Price=>P_Shp_Selling_Price,
164              P_Shp_Line_Type_Code=>P_Shp_Line_Type_Code,
165 	     P_Return_Status=>P_Return_Status );
166         if ( P_return_Status = OE_FAILURE ) then
167             return;
168         end if;
169         if ( P_Shp_Line_Type_Code = 'MODEL' ) then
170 		SELECT NVL(SUM(  ROUND( (NVL( ORDERED_QUANTITY, 0 ) -
171                          NVL( CANCELLED_QUANTITY, 0 )) *
172                          NVL(SELLING_PRICE, 0 ),
173                  P_Order_Currency_Precision))
174                  , 0)
175 		,NVL( SUM( DECODE( SERVICE_PARENT_LINE_ID, P_Lines_LINE_ID,
176                  ROUND( (NVL( ORDERED_QUANTITY, 0 ) -
177                          NVL( CANCELLED_QUANTITY, 0 ) ) *
178                          NVL( SELLING_PRICE, 0 ),
179                   P_Order_Currency_Precision), 0 ) ), 0 )
180 		INTO   P_Shp_Total
181 		,P_Shp_Service_Total
182 		FROM   SO_LINES
183 		WHERE (ROWID = P_Shp_Row_Id
184 		OR  PARENT_LINE_ID = P_Shp_Line_Id
185 		OR SERVICE_PARENT_LINE_ID = P_Shp_Line_Id );
186          elsif ( P_Shp_Serviceable_Flag = 'Y')  then
187                 SELECT NVL(SUM(  ROUND( (NVL( ORDERED_QUANTITY, 0 ) -
188                          NVL( CANCELLED_QUANTITY, 0 )) *
189                          NVL(SELLING_PRICE, 0 ),
190                  P_Order_Currency_Precision))
191                  , 0)
192                 ,NVL( SUM( DECODE( SERVICE_PARENT_LINE_ID, P_Lines_LINE_ID,
193                  ROUND( (NVL( ORDERED_QUANTITY, 0 ) -
194                          NVL( CANCELLED_QUANTITY, 0 ) ) *
195                          NVL( SELLING_PRICE, 0 ),
196                   P_Order_Currency_Precision), 0 ) ), 0 )
197                 INTO   P_Shp_Total
198                 ,P_Shp_Service_Total
199                 FROM   SO_LINES
200                 WHERE (ROWID = P_Shp_Row_Id
201                 OR  SERVICE_PARENT_LINE_ID = P_Shp_Line_Id );
202           else
203                 P_Shp_Total:=P_Shp_Line_Total;
204           end if;
205   end if;
206 end if;
207 
208 exception
209 
210  when no_data_found then
211             null;
212 
213  when others then
214       P_Return_Status:=OE_FAILURE;
215       OE_MSG.Internal_Exception(Routine=>
216                                 'OE_SHP_PROCESS.Query_Shipment_Total',
217                                 Operation=>'',
218 				Object=>'SHIPMENT',
219                                 Message=>' When Others');
220 
221 end Query_Shipment_Total;
222 
223 PROCEDURE Calc_Shipment_Total
224 (
225         P_Shp_Line_Total  	        OUT  NUMBER,
226         P_Shp_Ordered_Quantity        IN   NUMBER,
227         P_Shp_Open_Quantity           IN OUT  NUMBER,
228         P_Shp_Cancelled_Quantity      IN   NUMBER,
229         P_Shp_Selling_Price           IN   NUMBER,
230         P_Shp_Line_Type_Code          IN   VARCHAR2,
231 	P_Return_Status			IN OUT VARCHAR2
232 )
233 is
234 
235 begin
236 
237 P_Return_Status:=OE_SUCCESS;
238 
239    OE_LIN.Calc_Lin_Obj_Open_Quantity(
240         Lin_Obj_Ordered_Quantity=>P_Shp_Ordered_Quantity,
241         Lin_Obj_Open_Quantity=>P_Shp_Open_Quantity,
242         Lin_Obj_Cancelled_Quantity=>P_Shp_Cancelled_Quantity,
243 	P_Return_Status=>P_Return_Status);
244 
245    if ( P_Return_Status = OE_FAILURE ) then
246 	return;
247    end if;
248 
249    if P_Shp_Open_Quantity is null and
250       P_Shp_Selling_Price is null then
251       P_Shp_Line_Total:=0;
252    else
253       P_Shp_Line_Total:=P_Shp_Open_Quantity * P_Shp_Selling_Price;
254    end if;
255 
256 exception
257 
258  when no_data_found then
259             null;
260 
261  when others then
262       P_Return_Status:=OE_FAILURE;
263       OE_MSG.Internal_Exception(Routine=>
264                                 'OE_SHP_PROCESS.Calc_Shipment_Total',
265                                 Operation=>'',
266 				Object=>'SHIPMENT',
267                                 Message=>' When Others');
268 
269 end Calc_Shipment_Total;
270 
271 
272 PROCEDURE Total_Shipment
273 (
274         P_Shp_Total          		IN OUT  NUMBER,
275         P_Shp_Line_Total      		IN OUT  NUMBER,
276         P_Shp_Ordered_Quantity  	IN NUMBER,
277         P_Shp_Open_Quantity   		IN OUT NUMBER,
278         P_Shp_Cancelled_Quantity 	IN NUMBER,
279         P_Shp_Selling_Price   		IN NUMBER,
280         P_Shp_Line_Type_Code  		IN VARCHAR2,
281 	P_return_Status			IN OUT VARCHAR2
282 )
283 is
284 
285 L_Total NUMBER;
286 
287 begin
288 
289 P_Return_Status:=OE_SUCCESS;
290 
291 if P_Shp_Line_Total is null then
292    L_Total:=0;
293 else
294    L_Total:=P_Shp_Line_Total;
295 end if;
296 
297 OE_SHP_PROCESS.Calc_Shipment_Total(
298              P_Shp_Line_Total=>P_Shp_Line_Total,
299              P_Shp_Ordered_Quantity=>P_Shp_Ordered_Quantity,
300              P_Shp_Open_Quantity=>P_Shp_Open_Quantity,
301              P_Shp_Cancelled_Quantity=>P_Shp_Cancelled_Quantity,
302              P_Shp_Selling_Price=>P_Shp_Selling_Price,
303              P_Shp_Line_Type_Code=>P_Shp_Line_Type_Code,
304              P_Return_Status=>P_Return_Status );
305 if ( P_return_Status = OE_FAILURE ) then
306     return;
307 end if;
308 
309 P_Shp_Total := P_Shp_Total + P_Shp_Line_Total - L_Total;
310 
311 exception
312 
313  when no_data_found then
314         null;
315 
316  when others then
317       P_Return_Status:=OE_FAILURE;
318       OE_MSG.Internal_Exception(Routine=>
319                                 'OE_SHP_PROCESS.Total_Shipment',
320                                 Operation=>'',
321 				Object=>'SHIPMENT',
322                                 Message=>' When Others');
323 
324 
325 end Total_Shipment;
326 
327 PROCEDURE Calc_Line_Total
328 (
329         P_Lines_Line_Total  	        OUT  NUMBER,
330         P_Lines_Ordered_Quantity        IN   NUMBER,
331         P_Lines_Open_Quantity           IN OUT  NUMBER,
332         P_Lines_Cancelled_Quantity      IN   NUMBER,
333         P_Lines_Selling_Price           IN   NUMBER,
334         P_Lines_Line_Type_Code          IN   VARCHAR2,
335         P_Lines_Item_Type_Code          IN   VARCHAR2,
336         P_Lines_Service_Duration        IN   NUMBER,
337 	P_Return_Status			IN OUT VARCHAR2
338 )
339 is
340 
341 begin
342 
343 P_Return_Status:=OE_SUCCESS;
344 
345 
346 if P_Lines_Line_Type_Code = 'PARENT' then
347    P_Lines_Line_Total:=0;
348 else
349    OE_LIN.Calc_Lin_Obj_Open_Quantity(
350         Lin_Obj_Ordered_Quantity=>P_Lines_Ordered_Quantity,
351         Lin_Obj_Open_Quantity=>P_Lines_Open_Quantity,
352         Lin_Obj_Cancelled_Quantity=>P_Lines_Cancelled_Quantity,
353 	P_Return_Status=>P_Return_Status);
354 
355    if ( P_Return_Status = OE_FAILURE ) then
356 	return;
357    end if;
358 
359    if P_Lines_Open_Quantity is null and
360       P_Lines_Selling_Price is null then
361       P_Lines_Line_Total:=0;
362    elsif ( P_Lines_Item_Type_Code = 'SERVICE' ) then
363       if ( P_Lines_Service_Duration is null ) then
364          P_Lines_Line_Total:=0;
365       else
366          P_Lines_Line_Total:=P_Lines_Open_Quantity * P_lines_Selling_Price;
367       end if;
368    else
369       P_Lines_Line_Total:=P_Lines_Open_Quantity * P_lines_Selling_Price;
370    end if;
371 end if;
372 
373 exception
374 
375  when no_data_found then
376             null;
377 
378  when others then
379       P_Return_Status:=OE_FAILURE;
380       OE_MSG.Internal_Exception(Routine=>
381                                 'OE_SHP_PROCESS.Calc_Line_Total',
382                                 Operation=>'',
383 				Object=>'SHIPMENT',
384                                 Message=>' When Others');
385 
386 end Calc_Line_Total;
387 
388 PROCEDURE Total_Line
389 (
390         P_Lines_Total          		IN OUT  NUMBER,
391         P_Lines_Line_Total      	IN OUT  NUMBER,
392         P_Lines_Ordered_Quantity  	IN NUMBER,
393         P_Lines_Open_Quantity   	IN OUT NUMBER,
394         P_Lines_Cancelled_Quantity 	IN NUMBER,
395         P_Lines_Selling_Price   	IN NUMBER,
396         P_Lines_Line_Type_Code  	IN VARCHAR2,
397         P_Lines_Item_Type_Code	 	IN VARCHAR2,
398         P_Lines_Service_Duration	IN NUMBER,
399 	P_return_Status			IN OUT VARCHAR2
400 )
401 is
402 
403 L_Total NUMBER;
404 
405 begin
406 
407 P_Return_Status:=OE_SUCCESS;
408 
409 if P_Lines_Line_Total is null then
410    L_Total:=0;
411 else
412    L_Total:=P_Lines_Line_Total;
413 end if;
414 
415 OE_SHP_PROCESS.Calc_Line_Total(
416              P_Lines_Line_Total=>P_Lines_Line_Total,
417              P_Lines_Ordered_Quantity=>P_Lines_Ordered_Quantity,
418              P_Lines_Open_Quantity=>P_Lines_Open_Quantity,
419              P_Lines_Cancelled_Quantity=>P_Lines_Cancelled_Quantity,
420              P_Lines_Selling_Price=>P_Lines_Selling_Price,
421              P_Lines_Line_Type_Code=>P_Lines_Line_Type_Code,
422              P_Lines_Item_Type_Code=>P_Lines_Item_Type_Code,
423              P_Lines_Service_Duration=>P_Lines_Service_Duration,
424              P_Return_Status=>P_Return_Status );
425 if ( P_return_Status = OE_FAILURE ) then
426     return;
427 end if;
428 
429 P_Lines_Total := P_Lines_Total + P_Lines_Line_Total - L_Total;
430 
431 exception
432 
433  when no_data_found then
434         null;
435 
436  when others then
437       P_Return_Status:=OE_FAILURE;
438       OE_MSG.Internal_Exception(Routine=>
439                                 'OE_SHP_PROCESS.Total_Line',
440                                 Operation=>'',
441 				Object=>'SHIPMENT',
442                                 Message=>' When Others');
443 
444 
445 end Total_Line;
446 
447 PROCEDURE  Shipment_Total
448 (
449 	P_Line_Id 		IN NUMBER,
450         P_Line_Total		OUT NUMBER,
451 	P_Return_Status 	OUT VARCHAR2
452 )
453 is
454 
455 begin
456 
457       SELECT NVL(SUM( (NVL( ORDERED_QUANTITY, 0 ) -
458                        NVL( CANCELLED_QUANTITY, 0 )) *
459                       NVL(SELLING_PRICE, 0 ))
460                     , 0)
461       INTO   P_Line_Total
462       FROM   SO_LINES
463          WHERE ( SHIPMENT_SCHEDULE_LINE_ID = P_line_Id
464                  OR SERVICE_PARENT_LINE_ID = P_Line_Id );
465 
466 /*LINE_ID = P_Line_Id
467        OR     PARENT_LINE_ID = P_Line_Id
468        OR     SERVICE_PARENT_LINE_ID =
469               P_Line_Id ); */
470 
471 
472 Exception
473 
474  when no_data_found then
475        P_Line_Total:=0;
476 
477  when others then
481                                 Operation=>'',
478       P_Return_Status:=OE_FAILURE;
479       OE_MSG.Internal_Exception(Routine=>
480                                 'OE_SHP_PROCESS.Shipment_Total',
482                                 Object=>'SHIPMENT',
483                                 Message=>' When Others');
484 
485 
486 end Shipment_Total;
487 
488 PROCEDURE Shipment_Quantity_Total
489 (
490         P_Lines_Line_Id                 IN NUMBER,
491         P_Lines_Shipment_Qty_Total      OUT NUMBER,
492         P_Lines_Shipment_Lines_Count    OUT NUMBER,
493         P_return_Status                 OUT VARCHAR2
494 )
495 is
496 
497 begin
498 
499 SELECT NVL( SUM( NVL( ORDERED_QUANTITY, 0 ) -
500                       NVL( CANCELLED_QUANTITY, 0 ) ), 0 ),
501             COUNT(*)
502      INTO   P_Lines_Shipment_Qty_Total,
503             P_Lines_Shipment_Lines_Count
504      FROM   SO_LINES
505      WHERE  SHIPMENT_SCHEDULE_LINE_ID = P_Lines_Line_Id
506      AND    PARENT_LINE_ID IS NULL
507      AND    SERVICE_PARENT_LINE_ID IS NULL;
508 
509 Exception
510 
511  when no_data_found then
512        P_Lines_Shipment_Qty_Total:=0;
513        P_Lines_Shipment_Lines_Count:=0;
514 
515  when others then
516       P_Return_Status:=OE_FAILURE;
517       OE_MSG.Internal_Exception(Routine=>
518                                 'OE_SHP_PROCESS.Shipment_Quantity_Total',
519                                 Operation=>'',
520                                 Object=>'SHIPMENT',
521                                 Message=>' When Others');
522 
523 
524 end Shipment_Quantity_Total;
525 
526 PROCEDURE  Update_Line_Type_Code
527 (
528         P_Line_Id               IN NUMBER,
529         P_Line_Type_Code        IN VARCHAR2,
530         P_Return_Status         OUT VARCHAR2
531 )
532 is
533 
534 begin
535 
536   if ( P_Line_Type_Code <> 'REGULAR') then
537      UPDATE SO_LINES
538      SET LINE_TYPE_CODE = 'REGULAR'
539      WHERE  LINE_ID = P_Line_Id;
540   elsif ( P_Line_Type_Code <> 'PARENT') then
541      UPDATE SO_LINES
542      SET LINE_TYPE_CODE = 'PARENT'
543      WHERE  LINE_ID = P_Line_Id;
544   end if;
545 
546 
547 Exception
548 
549  when others then
550       P_Return_Status:=OE_FAILURE;
551       OE_MSG.Internal_Exception(Routine=>
552                                 'OE_SHP_PROCESS.Update_Line_Type_Code',
553                                 Operation=>'',
554                                 Object=>'SHIPMENT',
555                                 Message=>' When Others');
556 
557 end Update_Line_Type_Code;
558 
559 
560 PROCEDURE  Match_Shipment_Quantity
561 (
562         P_Ship_Sched_Line_Id       IN OUT NUMBER,
563         P_Line_RowId               IN VARCHAR2,
564         P_Open_Line_Quantity       IN OUT NUMBER,
565         P_Total_Shipment_Quantity  IN OUT NUMBER,
566         P_Return_Status            OUT VARCHAR2
567 )
568 is
569 
570 begin
571 
572  SELECT SUM(NVL(ORDERED_QUANTITY,0) - NVL(CANCELLED_QUANTITY,0))
573      INTO P_Total_Shipment_Quantity
574      FROM SO_LINES
575      WHERE SHIPMENT_SCHEDULE_LINE_ID = P_Ship_Sched_Line_Id
576      AND PARENT_LINE_ID IS NULL
577      AND SERVICE_PARENT_LINE_ID IS NULL;
578 
579  SELECT SUM(NVL(ORDERED_QUANTITY,0) - NVL(CANCELLED_QUANTITY,0))
580      INTO P_Open_Line_Quantity
581      FROM SO_LINES
582      WHERE LINE_ID = P_Ship_Sched_Line_Id;
583  if (Nvl(P_Open_Line_Quantity,0) <> Nvl(P_Total_Shipment_Quantity,0)) ANd
584       nvl(P_Total_Shipment_Quantity,0) <> 0 then
585     P_Return_Status := OE_SHIPMENT_MISMATCH;
586     return;
587  else
588     P_Ship_Sched_Line_Id := null;
589  end if;
590 
591  P_Return_Status:=OE_SUCCESS;
592 
593 Exception
594 
595  when others then
596       P_Return_Status:=OE_FAILURE;
597       OE_MSG.Internal_Exception(Routine=>
598                                 'OE_SHP_PROCESS.Match_Shipment_Quantity',
599                                 Operation=>'',
600                                 Object=>'SHIPMENT',
601                                 Message=>' When Others');
602 
603 end Match_Shipment_Quantity;
604 
605 
606 PROCEDURE  Update_Line_Quantity
607 (
608         P_Ship_Sched_Line_Id       IN OUT NUMBER,
609         P_Total_Shipment_Quantity  IN OUT NUMBER,
610         P_Open_Line_Quantity       IN OUT NUMBER,
611         P_Line_Quantity            IN OUT NUMBER,
612         P_Return_Status            OUT VARCHAR2
613 )
614 is
615 
616 begin
617 
618  SELECT SUM(NVL(ORDERED_QUANTITY,0) - NVL(CANCELLED_QUANTITY,0))
619      INTO P_Open_Line_Quantity
620      FROM SO_LINES
621      WHERE LINE_ID = P_Ship_Sched_Line_Id;
622 
623  UPDATE SO_LINES
624      SET    ORDERED_QUANTITY = NVL(CANCELLED_QUANTITY,0)
625                         + P_Total_Shipment_Quantity
626      WHERE  LINE_ID = P_Ship_Sched_Line_Id;
627 
628  P_Return_Status:=OE_SUCCESS;
629 
630 Exception
631 
632  when others then
633       P_Return_Status:=OE_FAILURE;
634       OE_MSG.Internal_Exception(Routine=>
635                                 'OE_SHP_PROCESS.Update_Line_Quantity',
636                                 Operation=>'',
637                                 Object=>'SHIPMENT',
638                                 Message=>' When Others');
639 
640 end Update_Line_Quantity;
641 
642 PROCEDURE  Update_Parent_Option_Quantity
643 (
644 		P_Line_Id                  IN NUMBER,
645 		P_Total_Shipment_Quantity  IN NUMBER,
646 		P_Ordered_Quantity         IN NUMBER,
647 		P_Cancelled_Quantity       IN NUMBER,
648 		P_Return_Status            OUT VARCHAR2
649 )
650 is
651 
652 x boolean;
653 
654 begin
655 
656  UPDATE SO_LINES
657  SET    ORDERED_QUANTITY = NVL(CANCELLED_QUANTITY,0) +
658 			 (((ORDERED_QUANTITY-NVL(CANCELLED_QUANTITY,0))/
659 		    (P_Ordered_Quantity-NVL(P_Cancelled_Quantity, 0)))
660 		 * P_Total_Shipment_Quantity)
661 	 WHERE  PARENT_LINE_ID  = P_Line_Id;
662 
663  P_Return_Status:=OE_SUCCESS;
664 
665 Exception
666 
667   when others then
668 	   P_Return_Status:=OE_FAILURE;
669 		OE_MSG.Internal_Exception(Routine=>
670 				'OE_SHP_PROCESS.Update_Parent_Option_Quantity',
671 				Operation=>'',
672 				Object=>'SHIPMENT',
673 				Message=>' When Others');
674 
675 end Update_Parent_Option_Quantity;
676 
677 
678 END OE_SHP_PROCESS;