301: ********************************************************************/
302:
303: PROCEDURE Check_Entity
304: ( x_return_status IN OUT NOCOPY VARCHAR2
305: , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
306: , p_bom_comp_ops_rec IN Bom_Bo_Pub.Bom_Comp_Ops_Rec_Type
307: , p_bom_comp_ops_Unexp_Rec IN Bom_Bo_Pub.Bom_Comp_Ops_Unexp_Rec_Type
308: )
309: IS
308: )
309: IS
310:
311: l_disable_date Date;
312: l_token_tbl Error_Handler.Token_tbl_Type;
313: l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
314: l_Additional_Op_Seq_Number NUMBER;
315: l_temp_var NUMBER :=0;
316: p_dummy NUMBER;
309: IS
310:
311: l_disable_date Date;
312: l_token_tbl Error_Handler.Token_tbl_Type;
313: l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
314: l_Additional_Op_Seq_Number NUMBER;
315: l_temp_var NUMBER :=0;
316: p_dummy NUMBER;
317: l_assy_bom_enabled VARCHAR2(1);
327: AND bill_sequence_id = p_bom_comp_ops_unexp_rec.bill_Sequence_id;
328: END IF;
329: EXCEPTION
330: WHEN NO_DATA_FOUND THEN
331: Error_Handler.Add_Error_Token
332: ( p_Message_Name => 'BOM_COMMON_COMP_OP'
333: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
334: , x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
335: , p_Token_Tbl => l_Token_Tbl
336: );
337: x_Return_Status := FND_API.G_RET_STS_ERROR;
338: END;
339:
340: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Entity Validation for Comp. Operation begins . . .'); END IF;
341:
342:
343: SELECT msi.bom_enabled_flag
344: INTO l_assy_bom_enabled
347: WHERE bbom.bill_sequence_id = p_bom_comp_ops_Unexp_Rec.bill_sequence_id
348: AND bbom.assembly_item_id = msi.inventory_item_id
349: AND bbom.organization_id = msi.organization_id;
350:
351: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Assy Bom Enabled flag : ' || l_assy_bom_enabled); END IF;
352:
353: IF l_assy_bom_enabled <> 'Y'
354: THEN
355: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
355: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
356: l_token_tbl(1).token_name := 'REVISED_ITEM_NAME';
357: l_token_tbl(1).token_value :=
358: p_bom_comp_ops_rec.assembly_Item_Name;
359: Error_Handler.Add_Error_Token
360: ( x_Mesg_Token_tbl => l_Mesg_Token_Tbl
361: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
362: , p_message_name => 'BOM_REV_ITEM_BOM_NOT_ENABLED'
363: , p_token_tbl => l_token_tbl
400: l_token_tbl(1).token_name := 'COMPONENT_ITEM_NAME';
401: l_token_tbl(1).token_value := p_bom_comp_ops_rec.component_item_name;
402: l_token_tbl(2).token_name := 'OPERATION_SEQ_NUM';
403: l_token_tbl(2).token_value := p_bom_comp_ops_rec.additional_operation_seq_num;
404: Error_Handler.Add_Error_Token
405: ( x_Mesg_Token_tbl => l_Mesg_Token_tbl
406: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
407: , p_message_name => 'BOM_COPS_DATES_OVERLAP'
408: , p_token_tbl => l_token_tbl
424: l_token_tbl(1).token_name := 'COMPONENT_ITEM_NAME';
425: l_token_tbl(1).token_value := p_bom_comp_ops_rec.component_item_name;
426: l_token_tbl(2).token_name := 'OPERATION_SEQ_NUM';
427: l_token_tbl(2).token_value := p_bom_comp_ops_rec.additional_operation_seq_num;
428: Error_Handler.Add_Error_Token
429: ( x_Mesg_Token_tbl => l_Mesg_Token_tbl
430: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
431: , p_message_name => 'BOM_COPS_NUMBERS_OVERLAP'
432: , p_token_tbl => l_token_tbl
458: p_bom_comp_ops_rec.new_additional_op_seq_num;
459: l_token_tbl(2).token_name := 'REVISED_COMPONENT_NAME';
460: l_token_tbl(2).token_value := p_bom_comp_ops_rec.component_item_name;
461:
462: Error_Handler.Add_Error_Token
463: ( x_Mesg_token_tbl => l_Mesg_Token_Tbl
464: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
465: , p_message_name => 'BOM_COMP_OPS_ALREADY_EXISTS'
466: , p_token_tbl => l_token_tbl
469: RAISE FND_API.G_EXC_ERROR;
470: END IF;
471: END IF;
472:
473: IF BOm_GlobalS.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Verified New addtional Component operation ... '); END IF;
474:
475: IF Bom_GlobalS.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Verifying Operation Seq Num in Editable common Bills ... '); END IF;
476: --The op seq num being used must be valid for the editable common bills commoning this bill.
477: IF NOT BOMPCMBM.Check_Op_Seq_In_Ref_Boms(p_src_bill_seq_id => p_bom_comp_ops_unexp_rec.bill_sequence_id,
471: END IF;
472:
473: IF BOm_GlobalS.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Verified New addtional Component operation ... '); END IF;
474:
475: IF Bom_GlobalS.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Verifying Operation Seq Num in Editable common Bills ... '); END IF;
476: --The op seq num being used must be valid for the editable common bills commoning this bill.
477: IF NOT BOMPCMBM.Check_Op_Seq_In_Ref_Boms(p_src_bill_seq_id => p_bom_comp_ops_unexp_rec.bill_sequence_id,
478: p_op_seq => nvl(p_bom_comp_ops_rec.new_additional_op_seq_num,
479: p_bom_comp_ops_rec.additional_operation_seq_num)
478: p_op_seq => nvl(p_bom_comp_ops_rec.new_additional_op_seq_num,
479: p_bom_comp_ops_rec.additional_operation_seq_num)
480: )
481: THEN
482: Error_Handler.Add_Error_Token
483: ( p_Message_Name => 'BOM_COMMON_OP_SEQ_INVALID'
484: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
485: , x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
486: , p_Token_Tbl => l_Token_Tbl
494: EXCEPTION
495:
496: WHEN FND_API.G_EXC_ERROR THEN
497:
498: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Expected Error in Comp Operations. Entity Validation '); END IF;
499:
500: x_Mesg_Token_Tbl := l_Mesg_Token_Tbl;
501: x_return_status := FND_API.G_RET_STS_ERROR;
502:
501: x_return_status := FND_API.G_RET_STS_ERROR;
502:
503: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
504:
505: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('UNExpected Error in Comp. Operations Entity Validation '); END IF;
506: x_Mesg_Token_Tbl := l_Mesg_Token_Tbl;
507: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
508:
509: WHEN OTHERS THEN
524: ********************************************************************/
525:
526: PROCEDURE Check_Attributes
527: ( x_return_status IN OUT NOCOPY VARCHAR2
528: , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
529: , p_bom_comp_ops_rec IN Bom_Bo_Pub.Bom_Comp_Ops_Rec_Type
530: , p_bom_comp_ops_unexp_rec IN Bom_Bo_Pub.Bom_Comp_Ops_Unexp_Rec_Type
531: )
532: IS
532: IS
533:
534: l_original_routing VARCHAR2(1) := 'N';
535: l_valid Number := 0;
536: l_token_tbl Error_Handler.Token_tbl_Type;
537: l_Mesg_token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
538: l_err_text VARCHAR2(240);
539:
540: CURSOR OpSeq_In_Original IS
533:
534: l_original_routing VARCHAR2(1) := 'N';
535: l_valid Number := 0;
536: l_token_tbl Error_Handler.Token_tbl_Type;
537: l_Mesg_token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
538: l_err_text VARCHAR2(240);
539:
540: CURSOR OpSeq_In_Original IS
541: SELECT operation_seq_num
565: BEGIN
566:
567: x_return_status := FND_API.G_RET_STS_SUCCESS;
568:
569: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Attribute Validation Starts . . . '); END IF;
570:
571: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Additional Operation Sequence Number is '||to_char(p_bom_comp_ops_rec.additional_operation_seq_num)); END IF;
572:
573: /* Check for the existence of OpSeq in the original routing which is defined for this item */
567: x_return_status := FND_API.G_RET_STS_SUCCESS;
568:
569: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Attribute Validation Starts . . . '); END IF;
570:
571: IF Bom_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug('Additional Operation Sequence Number is '||to_char(p_bom_comp_ops_rec.additional_operation_seq_num)); END IF;
572:
573: /* Check for the existence of OpSeq in the original routing which is defined for this item */
574:
575: FOR r1 IN OpSeq_In_Original
601: THEN
602: l_token_tbl(1).token_name := 'OPERATION_SEQ_NUM';
603: l_token_tbl(1).token_value := p_bom_comp_ops_rec.additional_operation_seq_num;
604:
605: Error_Handler.Add_Error_Token
606: ( x_Mesg_Token_tbl => l_Mesg_Token_tbl
607: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
608: , p_message_name => 'BOM_COPS_OPSEQ_INVALID'
609: , p_token_tbl => l_token_tbl
623: l_err_text := G_PKG_NAME ||
624: 'Attribute Validate (Component Operation)' ||
625: SUBSTR(SQLERRM, 1, 100);
626:
627: Error_Handler.Add_Error_Token
628: ( p_Message_Name => NULL
629: , p_Message_Text => l_err_text
630: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
631: , x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
657: ( p_bom_comp_ops_rec IN Bom_Bo_Pub.Bom_Comp_Ops_Rec_Type
658: , p_bom_comp_ops_unexp_rec IN Bom_Bo_Pub.Bom_Comp_Ops_Unexp_Rec_Type
659: , x_old_bom_comp_ops_rec IN OUT NOCOPY Bom_Bo_Pub.Bom_Comp_Ops_Rec_Type
660: , x_old_bom_comp_ops_unexp_rec IN OUT NOCOPY Bom_Bo_Pub.Bom_Comp_Ops_Unexp_Rec_Type
661: , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
662: , x_Return_Status IN OUT NOCOPY VARCHAR2
663: )
664: IS
665: l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
661: , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
662: , x_Return_Status IN OUT NOCOPY VARCHAR2
663: )
664: IS
665: l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
666: l_Return_Status VARCHAR2(1);
667: l_Token_Tbl Error_Handler.Token_Tbl_Type;
668: BEGIN
669: l_Token_Tbl(1).Token_Name := 'OPERATION_SEQUENCE_NUMBER';
663: )
664: IS
665: l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
666: l_Return_Status VARCHAR2(1);
667: l_Token_Tbl Error_Handler.Token_Tbl_Type;
668: BEGIN
669: l_Token_Tbl(1).Token_Name := 'OPERATION_SEQUENCE_NUMBER';
670: l_Token_Tbl(1).Token_Value :=
671: p_bom_comp_ops_rec.additional_operation_seq_num;
683:
684: IF l_return_status = Bom_Globals.G_RECORD_FOUND AND
685: p_bom_comp_ops_rec.transaction_type = Bom_Globals.G_OPR_CREATE
686: THEN
687: Error_Handler.Add_Error_Token
688: ( x_Mesg_token_tbl => l_Mesg_Token_Tbl
689: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
690: , p_message_name => 'BOM_COMP_OPS_ALREADY_EXISTS'
691: , p_token_tbl => l_token_tbl
694: ELSIF l_return_status = Bom_Globals.G_RECORD_NOT_FOUND AND
695: p_bom_comp_ops_rec.transaction_type IN
696: (Bom_Globals.G_OPR_UPDATE, Bom_Globals.G_OPR_DELETE)
697: THEN
698: Error_Handler.Add_Error_Token
699: ( x_Mesg_token_tbl => l_Mesg_Token_Tbl
700: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
701: , p_message_name => 'BOM_COMP_OPS_DOESNOT_EXIST'
702: , p_token_tbl => l_token_tbl
703: );
704: l_return_status := FND_API.G_RET_STS_ERROR;
705: ELSIF l_Return_status = FND_API.G_RET_STS_UNEXP_ERROR
706: THEN
707: Error_Handler.Add_Error_Token
708: ( x_Mesg_token_tbl => l_Mesg_Token_Tbl
709: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
710: , p_message_name => NULL
711: , p_message_text =>
738:
739: PROCEDURE Check_Lineage
740: ( p_bom_comp_ops_rec IN Bom_Bo_Pub.Bom_Comp_Ops_Rec_Type
741: , p_bom_comp_ops_unexp_rec IN Bom_Bo_Pub.Bom_Comp_Ops_Unexp_Rec_Type
742: , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
743: , x_Return_Status IN OUT NOCOPY VARCHAR2
744: )
745: IS
746: l_token_tbl Error_Handler.Token_Tbl_Type;
742: , x_Mesg_Token_Tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
743: , x_Return_Status IN OUT NOCOPY VARCHAR2
744: )
745: IS
746: l_token_tbl Error_Handler.Token_Tbl_Type;
747: l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
748:
749: CURSOR c_GetComponent IS
750: SELECT component_sequence_id
743: , x_Return_Status IN OUT NOCOPY VARCHAR2
744: )
745: IS
746: l_token_tbl Error_Handler.Token_Tbl_Type;
747: l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
748:
749: CURSOR c_GetComponent IS
750: SELECT component_sequence_id
751: FROM bom_inventory_components
772: 'ASSEMBLY_ITEM_NAME';
773: l_Token_Tbl(3).token_value :=
774: p_bom_comp_ops_rec.assembly_item_name;
775:
776: Error_Handler.Add_Error_Token
777: ( p_Message_Name => 'BOM_COPS_REV_ITEM_MISMATCH'
778: , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
779: , x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
780: , p_Token_Tbl => l_Token_Tbl