DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_SO_II_EXPLODE

Source


1 PACKAGE BODY OE_SO_II_EXPLODE AS
2 /* $Header: oesoiitb.pls 115.4 99/07/16 08:28:14 porting ship  $ */
3 
4   PROCEDURE Copy_Exploded_BOM (
5 
6 		P_II_BOM_Explosion_Group_Id	OUT	NUMBER,
7 		P_II_Session_Id			IN	NUMBER,
8 		P_II_Inventory_Item_Id		IN	NUMBER,
9 		P_II_Top_Component_Code		IN	VARCHAR2,
10 		P_II_Std_Comp_Freeze_Date	IN	DATE,
11 		P_II_Line_Id			IN	NUMBER,
12 		P_Result			OUT	VARCHAR2
13 		) is
14 
15 	bom_err_message	VARCHAR2(255)	:= NULL;
16 	bom_error_code	NUMBER		:= NULL;
17 	org_id 		NUMBER		:= FND_PROFILE.Value('SO_ORGANIZATION_ID');
18 	bom_group_id    NUMBER		:= NULL;
19 
20   begin
21 
22 	P_Result := 'Y';
23 
24 	BOMPNORD.BMXPORDER_Explode_For_Order (
25 		  ORG_ID => org_id
26 		, COPY_FLAG => 1
27 		, EXPL_TYPE => 'INCLUDED'
28 		, ORDER_BY => 2
29 		, GRP_ID => bom_group_id
30 		, SESSION_ID => P_II_Session_ID
31 		, LEVELS_TO_EXPLODE => 60
32 		, ITEM_ID => P_II_Inventory_Item_Id
33 		, COMP_CODE => P_II_Top_Component_Code
34 		, REV_DATE => to_char(nvl(P_II_Std_Comp_Freeze_Date, SYSDATE),
35 				      'YYYY/MM/DD HH24:MI')
36 		, USER_ID => To_Number(FND_PROFILE.Value('USER_ID'))
37 		, ERR_MSG => bom_err_message
38 		, ERROR_CODE => bom_error_code
39 		);
40 
41 	P_II_BOM_Explosion_Group_Id := bom_group_id;
42 
43 	UPDATE 	bom_config_explosions
44 	SET	line_id = P_II_Line_Id
45 	WHERE	session_id = P_II_Session_Id
46 	AND	group_id + 0 = bom_group_id
47 	AND	explosion_type = 'INCLUDED'
48 	AND     component_code <> P_II_Top_Component_Code;
49 
50 	Return;
51 
52   exception
53 	WHEN OTHERS THEN
54 		OE_MSG.Internal_Exception('OE_SO_II_EXPLODE.Copy_Exploded_BOM',
55 					  'Copy_Exploded_BOM', 'INCLUDED_ITEM');
56 		P_Result := 'N';
57 
58   end Copy_Exploded_BOM;
59 
60 
61 
62 /*
63   Does a manual explosion of Included Items into BOM_CONFIG_EXPLOSIONS based on
64   what is in SO_LINE_DETAILS.
65 */
66   PROCEDURE Explode_Manually (
67 		P_II_BOM_Explosion_Group_Id	IN OUT	NUMBER,
68 		P_II_Top_Component_Code		IN	VARCHAR2,
69 		P_II_Session_Id			IN	NUMBER,
70 		P_II_Line_Id			IN	NUMBER,
71 		P_Result			OUT	VARCHAR2
72 		) is
73 
74     length_rtrim NUMBER := NULL;
75 
76   begin
77 
78     P_Result := 'Y';
79 
80     P_II_BOM_Explosion_Group_Id := 0;
81 
82     Length_Rtrim := length(rtrim(P_II_Top_Component_Code, '0123456789')) + 1;
83 
84     if (Length_Rtrim is NULL) then
85 	Length_Rtrim := 1;
86     end if;
87 
88 /* Modified the select statement for fixing bug# 925562, propagated from
89    Rel 11 - 896589. Replaced
90     SUBSTR(MIN(component_code), Length_Rtrim),
91     by  component_code,
92 */
93 
94     INSERT INTO bom_config_explosions (
95 	  line_id,
96 	  session_id,
97 	  group_id,
98 	  component_code,
99 	  component_item_id,
100 	  component_quantity,
101 	  component_sequence_id,
102 	  extended_quantity,
103 	  organization_id,
104 	  primary_uom_code,
105 	  required_for_revenue,
106 	  so_transactions_flag,
107 	  top_bill_sequence_id,
108 	  bill_sequence_id,
109 	  plan_level,
110 	  sort_order,
111 	  explosion_type,
112 	  creation_date,
113 	  created_by	)
114     SELECT
115 	  P_II_Line_Id,
116 	  P_II_Session_Id,
117 	  P_II_BOM_Explosion_Group_Id,
118 --	  SUBSTR(MIN(component_code), Length_Rtrim),
119 	  component_code,
120 	  MIN(inventory_item_id),
121 	  MIN(component_ratio),
122 	  MIN(component_sequence_id),
123 	  SUM(quantity),
124 	  MIN(warehouse_id),
125 	  MIN(unit_code),
126 	  MIN(Decode(required_for_revenue_flag, 'Y', 1, 2)),
127 	  MIN(transactable_flag),
128 	  0,
129 	  0,
130 	  0,
131 	  '0',
132 	  'INCLUDED',
133 	  SYSDATE,
134 	  0
135     FROM so_line_details
136     WHERE line_id = P_II_Line_Id
137     AND included_item_flag = 'Y'
138     GROUP BY component_code;
139 
140     Return;
141 
142   exception
143     WHEN NO_DATA_FOUND THEN
144 	Return;
145 
146     WHEN OTHERS THEN
147 	OE_MSG.Internal_Exception('OE_SO_II_EXPLODE.Copy_Exploded_BOM',
148 					  'Copy_Exploded_BOM', 'INCLUDED_ITEM');
149 	P_Result := 'N';
150 
151   end Explode_Manually;
152 
153 
154 END OE_SO_II_EXPLODE;