1 PACKAGE BOM_Validate_Bom_Component AUTHID CURRENT_USER AS
2 /* $Header: BOMLCMPS.pls 120.2.12010000.2 2009/07/03 09:43:55 rajaiswa ship $ */
3 /*#
4 * This API contains Attribute and Entity level validation for the Bill of Materials Component Records.
5 * This contains procedures for
6 * Checking the existence of the component record in case of create,update or delete.
7 * Checking the acces rights of the user to the Assembly Item's BOM Item Type.
8 * Checking the validity of all Component Attributes
9 * Checking the required fields in the BOM Component Record.
10 * Checking the Business Logic validation for the BOM Component Entity.
11 * Checking the Delete Constraints for BOM Component.
12 * @rep:scope private
13 * @rep:product BOM
14 * @rep:lifecycle active
15 * @rep:displayname Validate Component
16 * @rep:compatibility S
17 */
18
19 /*************************************************************************
20 --
21 -- Copyright (c) 1996 Oracle Corporation, Redwood Shores, CA, USA
22 -- All rights reserved.
23 --
24 -- FILENAME
25 --
26 -- BOMLCMPS.pls
27 --
28 -- DESCRIPTION
29 --
30 -- Spec of package BOM_Validate_Bom_Component
31 --
32 -- NOTES
33 --
34 -- HISTORY
35 --
36 -- 11-JUN-99 Rahul Chitko Initial Creation
37 --
38 **************************************************************************/
39
40 -- Procedure Entity
41
42 /*#
43 * This is where the whole record is checked. The following are checked
44 * Non-updatable columns (UPDATEs): Certain columns must not be changed by the user when updating the record
45 * Cross-attribute checking: The validity of attributes may be checked, based on factors external to it
46 * Business logic: The record must comply with business logic rules.
47 * It raises
48 * 1 Severe Error IV for Create transaction type.
49 * 2 Standard Error for Update transaction type.
50 * @param x_return_status IN OUT NOCOPY Return Status
51 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
52 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
53 * @param p_bom_component_rec IN BOM component Exposed Column Record
54 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
55 * @param p_bom_Comp_Unexp_Rec IN BOM Component Unexposed Column Record
56 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type}
57 * @param p_old_bom_Component_Rec IN BOM Component Old Record Exposed Column Record
58 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
59 * @param p_old_bom_Comp_Unexp_Rec IN BOM Component Old Record Unexposed Column Record
60 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type}
61 * @rep:scope private
62 * @rep:displayname Check Component Entity
63 * @rep:compatibility S
64 * @rep:lifecycle active
65 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
66 */
67
68 PROCEDURE Check_Entity
69 ( x_return_status IN OUT NOCOPY VARCHAR2
70 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
71 , p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
72 , p_bom_Comp_Unexp_Rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
73 , p_old_bom_Component_Rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
74 , p_old_bom_Comp_Unexp_Rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
75 );
76
77
78 /*#
79 * This procedure will actually check if any component type rule exists
80 * between the two item types of the item which are to be associated.
81 * If such any component type rule exists then the procedure checks
82 * if these items can be associated according to the rule.If not the
83 * procedure returns the error staus and error message.If the items
84 * can be associated then it returns success.
85 * @param x_return_status IN OUT NOCOPY Return Status
86 * @param x_error_message OUT VARCHAR2 Error message
87 * @param p_init_msg_list IN BOOLEAN := TRUE Flag to initialize
88 * error handler
89 * @param p_parent_item_id IN NUMBER parent_item_id
90 * @param p_child_item_id IN NUMBER child_item_id is component_item_id
91 * @param p_organization_id IN NUMBER
92 * @rep:displayname Check Component Type Rules
93 * @rep:compatibility S
94 * @rep:lifecycle active
95 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
96 */
97
98 PROCEDURE Check_Component_Type_Rule
99 (
100 x_return_status IN OUT NOCOPY VARCHAR2
101 , x_error_message IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2
102 , p_init_msg_list IN BOOLEAN := TRUE
103 , p_parent_item_id IN NUMBER
104 , p_child_item_id IN NUMBER
105 , p_organization_id IN NUMBER
106 );
107
108 -- Procedure Attributes
109 /*#
110 * This method checks for each of the attribute/field individually for validity.
111 * Examples of these checks are: range checks, checks against lookups etc.It checks
112 * whether user-entered attributes are valid and it also checks each attribute independently of the others
113 * It raises
114 * 1 Severe Error IV in case of Create transaction type
115 * 2 Standard Error in case of other transaction types.
116 * @param x_return_status IN OUT NOCOPY Return Status
117 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
118 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
119 * @param p_bom_component_Rec IN BOM Component Exposed Column Record
120 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
121 * @param p_bom_Comp_Unexp_Rec IN BOM Component Unexposed Column Record
122 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
123 * @rep:scope private
124 * @rep:displayname Check Component Attributes
125 * @rep:compatibility S
126 * @rep:lifecycle active
127 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
128 */
129
130 PROCEDURE Check_Attributes
131 ( x_return_status IN OUT NOCOPY VARCHAR2
132 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
133 , p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
134 , p_bom_Comp_Unexp_Rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
135 );
136
137 -- Procedure Entity_Delete
138
139 /*#
140 * This method checks for the validity of the delete group entity in the BOM Component Record
141 * This checks whether the delete group is valid,whether it is a duplicate delete group and also
142 * whether the delete group is a newly created one.This procedure will be called before submitting
143 * entities in a delete group for deletion.
144 * @param x_return_status IN OUT NOCOPY Return Status
145 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
146 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
147 * @param p_bom_component_rec IN BOM Component Exposed Column Record
148 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
149 * @param p_bom_Comp_Unexp_Rec IN BOM Component Unexposed Column Record
150 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type}
151 * @rep:scope private
152 * @rep:displayname Check Component Delete Entity
153 * @rep:compatibility S
154 * @rep:lifecycle active
155 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
156 */
157
158 PROCEDURE Check_Entity_Delete
159 ( x_return_status IN OUT NOCOPY VARCHAR2
160 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
161 , p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
162 , p_bom_Comp_Unexp_Rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
163 );
164
165
166 /*#
167 * This method does the required fields checking for the BOM Component Record.
168 * Some fields are required for an operation to be performed. Without them,
169 * the operation cannot go through. The user must enter values for these fields.
170 * This method checks whether the required field columns are NULL or not.It raises
171 * 1 Severe Error IV for create transaction type
172 * 2 Standard Error for other transaction types.
173 * @param x_return_status IN OUT NOCOPY Return Status
174 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
175 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
176 * @param p_bom_component_rec IN BOM Component Exposed Column Record
177 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Head_Rec_Type}
178 * @rep:scope private
179 * @rep:displayname Check Component Required Fields
180 * @rep:compatibility S
181 * @rep:lifecycle active
182 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
183 */
184 PROCEDURE Check_Required
185 ( x_return_status IN OUT NOCOPY VARCHAR2
186 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
187 , p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
188 );
189 /*#
190 * This method checks for the existence of the component record based on the transaction type.
191 * The record being updated or deleted in the database must already exist.
192 * But a record being created must not. Such an error must cause all children
193 * to error out, since they are referencing an invalid parent.This raises a Severe Error III.
194 * It also queries up the database record into the corresponding Old Record.
195 * @param p_bom_component_rec IN BOM Component Exposed Column Record
196 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
197 * @param p_bom_comp_unexp_rec IN BOM Component Unexposed Column Record
198 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
199 * @param x_old_bom_component_rec IN OUT NOCOPY queried BOM Components Old Record Exposed Column Record.
200 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
201 * @param x_old_bom_comp_unexp_rec IN OUT NOCOPY queried BOM Components Old Record Unexposed Column Record.
202 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type}
203 * @param x_Mesg_Token_Tbl IN OUT NOCOPY Message Token Table
204 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
205 * @param x_return_status IN OUT NOCOPY Return Status
206 * @rep:scope private
207 * @rep:displayname Check Component Existence
208 * @rep:compatibility S
209 * @rep:lifecycle active
210 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
211 */
212 PROCEDURE Check_Existence
213 ( p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
214 , p_bom_comp_unexp_rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
215 , x_old_bom_component_rec IN OUT NOCOPY Bom_Bo_Pub.Bom_Comps_Rec_Type
216 , x_old_bom_comp_unexp_rec IN OUT NOCOPY Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
217 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
218 , x_return_status IN OUT NOCOPY VARCHAR2
219 );
220
221 /*#
222 * This method checks whether the linkage of records is correct in the business object.
223 * That is, child records must reference valid parents. A valid parent is one that exists
224 * and is truly the current record's parent in the database.Based on the transaction type
225 * it performs
226 * 1 Create:No check required. (Check to see if parent assembly item exists in bill of
227 * materials production table has already been performed)
228 * 2 Update/Delete: Production table component must reference the same parent item that the business
229 * object component does. Compare parent assembly item unique key in current component
230 * record against assembly item unique key in assembly item record that has already been queried up
231 * It raises Severe Error III.
232 * @param p_bom_component_rec IN BOM Component Exposed Column Record
233 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
234 * @param p_bom_comp_unexp_rec IN BOM Component Unexposed Column Record
235 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type}
236 * @param x_Mesg_Token_Tbl IN OUT NOCOPY Message Token Table
237 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
238 * @param x_Return_Status IN OUT NOCOPY Return Status
239 * @rep:scope private
240 * @rep:displayname Check Component Lineage
241 * @rep:compatibility S
242 * @rep:lifecycle active
243 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
244 */
245 PROCEDURE Check_Lineage
246 ( p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
247 , p_bom_comp_unexp_rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
248 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
249 , x_Return_Status IN OUT NOCOPY VARCHAR2
250 );
251 /*#
252 * This method checks for the access rights of the user.An assembly item and any of its
253 * components cannot be operated upon if the user does not have access to the assembly item type.
254 * The user should have proper access to
255 * the Assembly Item's BOM Item Type and also to component's BOM_Item_Type.
256 * It looks up STD_Item_Access or MDL_Item_Access or PLN_Item_Access
257 * in the System_Information record, depending on item's BOM Item Type
258 * It also checks whether BOM_Item_Type is not Product Family.If the check fails either
259 * Fatal Error III or Fatal Error II is raised depending on the affected entity.
260 * @param p_organization_id IN Organiation Id for the item
261 * @param p_component_item_id IN Component Item Id
262 * @param p_component_name IN Component Item Name
263 * @param p_Mesg_Token_Tbl IN Message Token Table
264 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
265 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table
266 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
267 * @param x_Return_Status IN OUT NOCOPY Return Status
268 * @rep:scope private
269 * @rep:displayname Check Component Access
270 * @rep:compatibility S
271 * @rep:lifecycle active
272 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
273 */
274 PROCEDURE Check_Access
275 ( p_organization_id IN NUMBER
276 , p_component_item_id IN NUMBER
277 , p_component_name IN VARCHAR2
278 , p_Mesg_Token_Tbl IN Error_Handler.Mesg_Token_Tbl_Type :=
279 Error_Handler.G_MISS_MESG_TOKEN_TBL
280 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
281 , x_Return_Status IN OUT NOCOPY VARCHAR2
282 );
283
284 /*#
285 * This method checks the number of componets under a bill.
286 * The total number of components under a bill should not exceed 9999.
287 * When the limit is exceeded it raises proper error messages.
288 * @param p_bom_component_rec IN BOM Component Exposed Column Record
289 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
290 * @param p_bom_comp_unexp_rec IN BOM Component Unexposed Column Record
291 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type}
292 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table
293 * @paramInfo {@rep:innertpye Error_Handler.Mesg_Token_Tbl_Type}
294 * @param x_Return_Status IN OUT NOCOPY Return Status
295 * @rep:scope private
296 * @rep:displayname Check Component Count
297 * @rep:compatibility S
298 * @rep:lifecycle active
299 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
300 */
301 PROCEDURE Check_ComponentCount
302 ( p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
303 , p_bom_comp_unexp_rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
304 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
305 , x_Return_Status IN OUT NOCOPY VARCHAR2
306 );
307
308 /*
309 ** Procedures used by ECO BO and internally called by BOM BO
310 */
311
312 /*#
313 * This method is used by ECO Business Object while keeping track of the revisions and
314 * this is where the whole record is checked. The following are checked
315 * Cross-attribute checking: The validity of attributes may be checked, based on factors external to it
316 * Business logic: The record must comply with business logic rules.
317 * It raises Standard Error.
318 * @param x_return_status IN OUT NOCOPY Return Status
319 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
320 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
321 * @param p_rev_component_rec IN Revision Component Exposed Column Record
322 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
323 * @param p_Rev_Comp_Unexp_Rec IN Revision Component Unexposed Column Record
324 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type}
325 * @param p_Old_Rev_Component_Rec IN Revision Component Old Record Exposed Column Record
326 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
327 * @param p_Old_Rev_Comp_Unexp_Rec IN Revision Component Old Record Unexposed Column Record
328 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type}
329 * @param p_control_rec IN Revision Control Record
330 * @paraminfo {@rep:innertype Bom_Bo_Pub.Control_Rec_Type}
331 * @rep:scope private
332 * @rep:displayname Check Revision Component Entity
333 * @rep:compatibility S
334 * @rep:lifecycle active
335 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
336 */
337 PROCEDURE Check_Entity
338 ( x_return_status IN OUT NOCOPY VARCHAR2
339 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
340 , p_rev_component_rec IN Bom_Bo_Pub.Rev_Component_Rec_Type
341 , p_Rev_Comp_Unexp_Rec IN Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
342 , p_control_rec IN BOM_BO_PUB.Control_Rec_Type
343 := BOM_BO_PUB.G_DEFAULT_CONTROL_REC
344 , p_Old_Rev_Component_Rec IN Bom_Bo_Pub.Rev_Component_Rec_Type
345 , p_Old_Rev_Comp_Unexp_Rec IN Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
346 );
347
348 /*#
349 * This method is used by ECO Business Object while keeping track of the revisions and
350 * checks for Each of the attribute/field individually for validity.
351 * Examples of these checks are: range checks, checks against lookups etc.It checks
352 * whether user-entered attributes are valid and it checks each attribute independently of the others
353 * It raises
354 * 1 Severe Error IV in case of Create transaction type
355 * 2 Standard Error in case of other transaction types.
356 * @param x_return_status IN OUT NOCOPY Return Status
357 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
358 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
359 * @param p_rev_component_Rec IN Revision Component Exposed Column Record
360 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
361 * @param p_Rev_Comp_Unexp_Rec IN Revision Component Unexposed Column Record
362 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
363 * @rep:scope private
364 * @rep:displayname Check Revision Component Attributes
365 * @rep:compatibility S
366 * @rep:lifecycle active
367 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
368 */
369
370 PROCEDURE Check_Attributes
371 ( x_return_status IN OUT NOCOPY VARCHAR2
372 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
373 , p_rev_component_rec IN Bom_Bo_Pub.Rev_Component_Rec_Type
374 , p_Rev_Comp_Unexp_Rec IN Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
375 );
376
377 /*#
378 * This method is used by ECO Business Object while keeping track of the revisions and
379 * checks for the validity of the delete group entity in the BOM Revision Component Record
380 * This checks whether the delete group is valid,whether it is a duplicate delete group and also
381 * whether the delete group is a newly created one.This procedure will be called before submitting
382 * entities in a delete group for deletion.
383 * @param x_return_status IN OUT NOCOPY Return Status
384 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
385 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
386 * @param p_rev_component_rec IN Revision Component Exposed Column Record
387 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
388 * @param p_Rev_Comp_Unexp_Rec IN Revision Component Unexposed Column Record
389 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type}
390 * @rep:scope private
391 * @rep:displayname Check Revision Component Delete Entity
392 * @rep:compatibility S
393 * @rep:lifecycle active
394 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
395 */
396
397 PROCEDURE Check_Entity_Delete
398 ( x_return_status IN OUT NOCOPY VARCHAR2
399 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
400 , p_rev_component_rec IN Bom_Bo_Pub.Rev_Component_Rec_Type
401 , p_Rev_Comp_Unexp_Rec IN Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
402 );
403
404 /*#
405 * This method is used by ECO Business Object while keeping track of the revisions and
406 * does the required fields checking for the Revision Component Record.
407 * Some fields are required for an operation to be performed. Without them,
408 * the operation cannot go through. The user must enter values for these fields.
409 * This procedure checks whether the required field columns are not NULL.It raises
410 * 1 Severe Error IV for create transaction type
411 * 2 Standard Error for other transaction types.
412 * @param x_return_status IN OUT NOCOPY Return Status
413 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table with proper error or warning messages
414 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
415 * @param p_rev_component_rec IN Revision Component Exposed Column Record
416 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
417 * @rep:scope private
418 * @rep:displayname Check Revision Component Required Fields
419 * @rep:compatibility S
420 * @rep:lifecycle active
421 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
422 */
423
424 PROCEDURE Check_Required
425 ( x_return_status IN OUT NOCOPY VARCHAR2
426 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
427 , p_rev_component_rec IN Bom_Bo_Pub.Rev_Component_Rec_Type
428 );
429
430 /*#
431 * This procedure is used by ECO Business Object while keeping track of the revisions and
432 * checks for the existence of the revision record based on the transaction type.
433 * The record being updated or deleted in the database must already exist.
434 * But a record being created must not. Such an error in a record must cause all children
435 * to error out, since they are referencing an invalid parent.This raises a Severe Error III.
436 * It also queries up the database record into the corresponding Old Record.
437 * @param p_rev_component_rec IN Revision Component Exposed Column Record
438 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
439 * @param p_rev_comp_unexp_rec IN Revision Component Unexposed Column Record
440 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type}
441 * @param x_old_rev_component_rec IN OUT NOCOPY queried Revision Components Old Record Exposed Column Record.
442 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
443 * @param x_old_rev_comp_unexp_rec IN OUT NOCOPY queried Revision Components Old Record Unexposed Column Record.
444 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type}
445 * @param x_Mesg_Token_Tbl IN OUT NOCOPY Message Token Table
446 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
447 * @param x_return_status IN OUT NOCOPY Return Status
448 * @rep:scope private
449 * @rep:displayname Check Revision Component Existence
450 * @rep:compatibility S
451 * @rep:lifecycle active
452 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
453 */
454
455 PROCEDURE Check_Existence
456 ( p_rev_component_rec IN Bom_Bo_Pub.Rev_Component_Rec_Type
457 , p_rev_comp_unexp_rec IN Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
458 , x_old_rev_component_rec IN OUT NOCOPY Bom_Bo_Pub.Rev_Component_Rec_Type
459 , x_old_rev_comp_unexp_rec IN OUT NOCOPY Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
460 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
461 , x_return_status IN OUT NOCOPY VARCHAR2
462 );
463
464 /*#
465 * This method is used by ECO Business Object while keeping track of the revisions and
466 * checks whether the linkage of records is correct in the business object.
467 * That is, child records must reference valid parents. A valid parent is one that exists
468 * and is truly the current record's parent in the database.Based on the transaction type
469 * it performs
470 * 1 Create:No check required. (Check to see if parent assembly item exists in bill of
471 * materials production table has already been performed)
472 * 2 Update/Delete: Production table component must reference the same parent item that the business
473 * object component does. Compare parent assembly item unique key in current component
474 * record against assembly item unique key in assembly item record that has already been queried up
475 * It raises Severe Error III.
476 * @param p_rev_component_rec IN Revision Component Exposed Column Record
477 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Component_Rec_Type}
478 * @param p_rev_comp_unexp_rec IN Revision Component Unexposed Column Record
479 * @paraminfo {@rep:innertype Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type}
480 * @param x_Mesg_Token_Tbl IN OUT NOCOPY Message Token Table
481 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
482 * @param x_Return_Status IN OUT NOCOPY Return Status
483 * @rep:scope private
484 * @rep:displayname Check Revision Component Lineage
485 * @rep:compatibility S
486 * @rep:lifecycle active
487 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
488 */
489 PROCEDURE Check_Lineage
490 ( p_rev_component_rec IN Bom_Bo_Pub.Rev_Component_Rec_Type
491 , p_rev_comp_unexp_rec IN Bom_Bo_Pub.Rev_Comp_Unexposed_Rec_Type
492 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
493 , x_Return_Status IN OUT NOCOPY VARCHAR2
494 );
495
496 /*#
497 * This method is used by ECO Business Object while keeping track of the revisions and
498 * checks for the access rights of the user.An assembly item revision and any of its
499 * component revision cannot be operated upon if the user does not have access to the assembly item type.
500 * The user should have proper access to
501 * the Assembly Item's BOM Item Type.It Compare assembly item BOM_Item_Type against the
502 * assembly item access fields in the System_Information record.If the check fails either
503 * Fatal Error III or Fatal Error II is raised depending on the affected entity.
504 * @param p_revised_item_name IN Revised Item Name
505 * @param p_revised_item_id IN Revised Item Id
506 * @param p_organization_id IN Organization Id
507 * @param p_change_notice IN Change Notice
508 * @param p_new_item_revision IN New Item Revision
509 * @param p_effectivity_date IN Component Effectvity Date
510 * @param p_new_routing_revsion IN New Routing Revision
511 * @param p_from_end_item_number End Item Number from which it is revised
512 * @param p_component_item_id IN Component Item Id
513 * @param p_operation_seq_num IN Operation Sequence Id for Routing
514 * @param p_bill_sequence_id IN Bill Sequence Id
515 * @param p_component_name IN Component Name
516 * @param p_Mesg_Token_Tbl IN Message Token Table
517 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
518 * @param p_entity_processed IN Processed Entity
519 * @param p_rfd_sbc_name IN
520 * @param x_Mesg_Token_Tbl IN OUT NOCOPY output Message Token Table
521 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
522 * @param x_Return_Status IN OUT NOCOPY Return Status
523 * @rep:scope private
524 * @rep:displayname Check Revised Component Access
525 * @rep:compatibility S
526 * @rep:lifecycle active
527 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
528 */
529
530 PROCEDURE Check_Access
531 ( p_revised_item_name IN VARCHAR2
532 , p_revised_item_id IN NUMBER
533 , p_organization_id IN NUMBER
534 , p_change_notice IN VARCHAR2
535 , p_new_item_revision IN VARCHAR2
536 , p_effectivity_date IN DATE
537 , p_new_routing_revsion IN VARCHAR2 := NULL -- Added by MK on 11/02/00
538 , p_from_end_item_number IN VARCHAR2 := NULL -- Added by MK on 11/02/00
539 , p_component_item_id IN NUMBER
540 , p_operation_seq_num IN NUMBER
541 , p_bill_sequence_id IN NUMBER
542 , p_component_name IN VARCHAR2
543 , p_Mesg_Token_Tbl IN Error_Handler.Mesg_Token_Tbl_Type :=
544 Error_Handler.G_MISS_MESG_TOKEN_TBL
545 , p_entity_processed IN VARCHAR2 := 'RC'
546 , p_rfd_sbc_name IN VARCHAR2 := NULL
547 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
548 , x_Return_Status IN OUT NOCOPY VARCHAR2
549 );
550
551 /*#
552 * This method will check if a component record is a direct item component its for EAM BOMs only.
553 * It will also verify that the component has correct values for direct item specific
554 * attributes.For normal item components these attributes should be ignored.
555 * @param p_bom_component_rec IN BOM Component Exposed Column Record
556 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
557 * @param p_bom_comp_unexp_rec IN BOM Component Unexposed Column Record
558 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type}
559 * @param x_bom_component_rec IN OUT NOCOPY processed BOM Component Exposed Column Record
560 * @paraminfo {@rep:innertype Bom_Bo_Pub.Bom_Comps_Rec_Type}
561 * @param x_Mesg_Token_Tbl IN OUT NOCOPY Message Token Table
562 * @paraminfo {@rep:innertype Error_Handler.Mesg_Token_Tbl_Type}
563 * @param x_Return_Status IN OUT NOCOPY Return Status
564 * @rep:scope private
565 * @rep:compatibility S
566 * @rep:lifecycle active
567 * @rep:displayname Check Direct Components
568 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
569 */
570
571 PROCEDURE Check_Direct_item_comps
572 ( p_bom_component_rec IN Bom_Bo_Pub.Bom_Comps_Rec_Type
573 , p_bom_comp_unexp_rec IN Bom_Bo_Pub.Bom_Comps_Unexposed_Rec_Type
574 , x_bom_component_rec IN OUT NOCOPY Bom_Bo_Pub.Bom_Comps_Rec_Type
575 , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
576 , x_Return_Status IN OUT NOCOPY VARCHAR2
577 );
578
579 /*#
580 * This method sets the global attribute flags.This is called only by
581 * ECO Form.The Open Interfaces will perform this step in the entity validation
582 * procedure
583 * @param p_RI_bom_item_type IN Revised Item BOM Item Type
584 * @param p_RC_bom_item_type IN Revised COmponent BOM Item Type
585 * @param p_RC_replenish_to_order_flag IN Revsed Component Replenish to Order Flag
586 * @param p_RI_replenish_to_order_flag IN Revsed Item Replenish to Order Flag
587 * @param p_RC_base_item_id Revised IN Component Base Item Id
588 * @param p_RC_pick_components_flag IN Revised Component Pick To Order Flag
589 * @param p_RI_pick_components_flag IN Revised Item Pick To Order Flag
590 * @param p_RC_ato_forecast_control IN
591 * @param p_RI_base_item_id IN Revised Item Base Item Id
592 * @param p_RC_eng_item_flag IN Revised Component Engineering Item Flag
593 * @param p_RI_eng_item_flag IN Revised Item Engineering Item Flag
594 * @param p_RC_atp_components_flag IN Revised Component ATP componetns flag
595 * @param p_RI_atp_components_flag IN Revised Item ATP componetns flag
596 * @param p_RC_atp_flag IN Revised Component ATP flag
597 * @param p_RC_wip_supply_type IN Revised Component WIP Supply Type
598 * @param p_RI_wip_supply_type IN Revised Item WIP Supply Type
599 * @param p_RI_bom_enabled_flag IN Revised Item Bom Enabled Flag
600 * @param p_RC_bom_enabled_flag IN Revised Component Bom Enabled Flag
601 * @rep:scope private
602 * @rep:lifecycle active
603 * @rep:compatibility S
604 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
605 * @rep:displayname Set Item Attribute
606 */
607 PROCEDURE Set_Item_Attributes
608 ( p_RI_bom_item_type NUMBER
609 , p_RC_bom_item_type NUMBER
610 , p_RC_replenish_to_order_flag CHAR
611 , p_RI_replenish_to_order_flag CHAR
612 , p_RC_pick_components_flag CHAR
613 , p_RI_pick_components_flag CHAR
614 , p_RC_base_item_id NUMBER
615 , p_RC_ato_forecast_control NUMBER
616 , p_RI_base_item_id NUMBER
617 , p_RC_eng_item_flag CHAR
618 , p_RI_eng_item_flag CHAR
619 , p_RC_atp_components_flag CHAR
620 , p_RI_atp_components_flag CHAR
621 , p_RC_atp_flag CHAR
622 , p_RI_wip_supply_type NUMBER
623 , p_RC_wip_supply_type NUMBER
624 , p_RI_bom_enabled_flag CHAR
625 , p_RC_bom_enabled_flag CHAR
626 );
627
628 /*#
629 * This method will create Component Record from the attributes given and will
630 * perform Check_Access for both parent and component item.It will also
631 * perform Attribute Validation and Entity Validation for the component
632 * record.
633 * @param p_bo_identifier IN Business Object Identifier
634 * @param p_transaction_type IN Transaction Type
635 * @param p_revised_item_id IN Revised Item Id
636 * @param p_organization_id IN Organization Id
637 * @param p_organization_code IN Organization Code
638 * @param p_alternate_bom_code IN BOM Alternate Designator
639 * @param p_bill_sequence_id IN Bill Sequence Id
640 * @param p_bom_implementation_date IN Implementation Date
641 * @param p_component_sequence_id IN Component Sequence ID
642 * @param p_item_sequence_number IN Item Sequence Number
643 * @param p_operation_sequence_number IN Operation Sequence Number
644 * @param p_new_operation_sequence_num IN New Operation Sequence Number
645 * @param p_component_item_id IN Component Item Id
646 * @param p_from_end_item_unit_number IN From End Item Unit Number
647 * @param p_to_end_item_unit_number IN To End Item Unit Number
648 * @param p_new_from_end_item_unit_num IN New From End Item Unit Number
649 * @param p_start_effective_date IN Effectivity Start Date
650 * @param p_new_effectivity_date IN New Effectivity Date
651 * @param p_disable_date IN Disable Date
652 * @param p_quantity_per_assembly IN Quantity Per Assembly
653 * @param p_projected_yield IN Projected Yield
654 * @param p_planning_percent IN Planning Percent
655 * @param p_quantity_related IN Quantity Related
656 * @param p_include_in_cost_rollup IN Include In Cost Rollup
657 * @param p_check_atp In Check ATP
658 * @param p_acd_type IN ACD Type
659 * @param p_auto_request_material IN Auto Request Material
660 * @param p_wip_supply_type IN WIP Supply Type
661 * @param p_Supply_SubInventory IN Supply Subinventory
662 * @param p_supply_locator_id IN Supply Locator Id
663 * @param p_location_name IN Location Name
664 * @param p_SO_Basis IN SO Basis
665 * @param p_Optional IN Optional
666 * @param p_mutually_exclusive IN Mutually Exclusive
667 * @param p_shipping_allowed IN Shipping Allowed
668 * @param p_required_to_ship IN Required TO Ship
669 * @param p_required_for_revenue IN Required For Revenue
670 * @param p_include_on_ship_docs IN Include On Ship Docs
671 * @param p_enforce_int_reqs_code IN Enforce Int Reqs Code
672 * @param p_revised_item_name IN revised Item Name
673 * @param p_component_item_name IN Component Item Name
674 * @param p_minimum_allowed_quantity IN Minimum Allowed Quantity
675 * @param p_maximum_allowed_quantity IN Maximum Allowed Quanitity
676 * @param p_Delete_Group_Name IN Delete Group Name
677 * @param p_eco_name ECO Name
678 * @param p_comments IN Comments
679 * @param p_pick_components IN Pick Component
680 * @param p_revised_item_sequence_id IN Revised Item Sequence Id
681 * @param p_old_operation_sequence_num IN Old Operation Sequence Number
682 * @param p_old_component_sequence_id IN Old Component Sequence Id
683 * @param p_old_effectivity_date IN Old Effectvity Date
684 * @param p_old_rec_item_sequence_number IN Old Record Item Sequence Number
685 * @param p_Old_Rec_shipping_Allowed IN Old Record Shipping Allowed
686 * @param p_Old_rec_supply_locator_id IN Old Record Supply Locator Id
687 * @param p_Old_rec_supply_subinventory IN Old Record Supply Subinventory
688 * @param p_old_rec_check_atp IN Old Record Check ATP
689 * @param p_old_rec_acd_type IN Old Record acs Type
690 * @param p_old_rec_to_end_item_unit_num IN Old Record To End Item Unit Number
691 * @param p_original_system_reference IN Old Record Original System reference
692 * @param p_rowid IN Rowid
693 * @param x_return_status IN OUT NOCOPY Return Status
694 * @param x_error_message IN OUT NOCOPY Error Message
695 * @rep:scope private
696 * @rep:compatibility S
697 * @rep:lifecycle active
698 * @rep:displayname Validaet All Attribute
699 * @rep:category BUSINESS_ENTITY BOM_BILL_OF_MATERIAL
700 */
701
702 PROCEDURE Validate_All_Attributes
703 ( p_bo_identifier IN VARCHAR2 := 'BOM',
704 p_transaction_type IN VARCHAR2,
705 p_revised_item_id IN NUMBER,
706 p_organization_id IN NUMBER,
707 p_organization_code IN VARCHAR2,
708 p_alternate_bom_code IN VARCHAR2,
709 p_bill_sequence_id IN NUMBER,
710 p_bom_implementation_date IN DATE,
711 p_component_sequence_id IN NUMBER,
712 p_item_sequence_number IN NUMBER,
713 p_operation_sequence_number IN NUMBER,
714 p_new_operation_sequence_num IN NUMBER := NULL,
715 p_component_item_id IN NUMBER,
716 p_from_end_item_unit_number IN VARCHAR2 := NULL,
717 p_to_end_item_unit_number IN VARCHAR2 := NULL,
718 p_new_from_end_item_unit_num IN VARCHAR2 := NULL,
719 p_start_effective_date IN DATE,
720 p_new_effectivity_date IN DATE := NULL,
721 p_disable_date IN DATE := NULL,
722 p_basis_type IN NUMBER := NULL,
723 p_quantity_per_assembly IN NUMBER := NULL,
724 p_projected_yield IN NUMBER := NULL,
725 p_planning_percent IN NUMBER := NULL,
726 p_quantity_related IN NUMBER := NULL,
727 p_include_in_cost_rollup IN NUMBER := NULL,
728 p_check_atp IN NUMBER := NULL,
729 p_acd_type IN NUMBER := NULL,
730 p_auto_request_material IN VARCHAR2 := NULL,
731 p_wip_supply_type IN NUMBER := NULL,
732 p_Supply_SubInventory IN VARCHAR2 := NULL,
733 p_supply_locator_id IN NUMBER := NULL,
734 p_location_name IN VARCHAR2 := NULL,
735 p_SO_Basis IN NUMBER := NULL,
736 p_Optional IN NUMBER := NULL,
737 p_mutually_exclusive IN NUMBER := NULL,
738 p_shipping_allowed IN NUMBER := NULL,
739 p_required_to_ship IN NUMBER := NULL,
740 p_required_for_revenue IN NUMBER := NULL,
741 p_include_on_ship_docs IN NUMBER := NULL,
742 p_enforce_int_reqs_code IN NUMBER := NULL,
743 p_revised_item_name IN VARCHAR2 := NULL,
744 p_component_item_name IN VARCHAR2 := NULL,
745 p_minimum_allowed_quantity IN NUMBER := NULL,
746 p_maximum_allowed_quantity IN NUMBER := NULL,
747 p_Delete_Group_Name IN VARCHAR2 := NULL,
748 p_eco_name IN VARCHAR2 := NULL,
749 p_comments IN VARCHAR2 := NULL,
750 p_pick_components IN NUMBER := NULL,
751 p_revised_item_sequence_id IN NUMBER := NULL,
752 p_old_operation_sequence_num IN NUMBER := NULL,
753 p_old_component_sequence_id IN NUMBER := NULL,
754 p_old_effectivity_date IN DATE := NULL,
755 p_old_rec_item_sequence_number IN NUMBER := NULL,
756 p_Old_Rec_shipping_Allowed IN NUMBER := NULL,
757 p_Old_rec_supply_locator_id IN NUMBER := NULL,
758 p_Old_rec_supply_subinventory IN VARCHAR2 := NULL,
759 p_old_rec_check_atp IN NUMBER := NULL,
760 p_old_rec_acd_type IN NUMBER := NULL,
761 p_old_rec_to_end_item_unit_num IN VARCHAR2 := NULL,
762 p_original_system_reference IN VARCHAR2 := NULL,
763 p_rowid IN VARCHAR2 := NULL,
764 x_return_status IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
765 x_error_message IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2);
766
767
768 /*****************************************************************
769 * Function : Control
770 * Parameter IN : Org Level Control
771 * Subinventory Level Control
772 * Item Level Control
773 * Returns : Number
774 * Purpose : Control procedure will take the various level control
775 * values and decide if the Locator is controlled at the
776 * org,subinventory or item level. It will also decide
777 * if the locator is pre-specified or dynamic.
778 *******************************************************************/
779
780 FUNCTION CONTROL(org_control IN number,
781 sub_control IN number,
782 item_control IN number default NULL)
783 RETURN NUMBER ;
784
785 -- add for Bug 8639519
786 -- Check if the PTO and ATO flags of Assembly and Component for the
787 -- Optional flag to be correct.
788 --
789 FUNCTION Check_PTOATO_For_Optional(p_assembly_org_id IN NUMBER,
790 p_assembly_item_id IN NUMBER,
791 p_comp_org_id IN NUMBER,
792 p_comp_item_id IN NUMBER)
793 RETURN NUMBER;
794
795 END BOM_Validate_Bom_Component;