[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;