3:
4:
5: procedure ADD_CONTROL_ITEM(
6: p_api_version IN NUMBER := 1.0
7: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
8: ,p_commit IN VARCHAR2 := FND_API.g_false
9: ,p_validate_only IN VARCHAR2 := FND_API.g_true
10: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
11: ,p_ci_type_id IN NUMBER
4:
5: procedure ADD_CONTROL_ITEM(
6: p_api_version IN NUMBER := 1.0
7: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
8: ,p_commit IN VARCHAR2 := FND_API.g_false
9: ,p_validate_only IN VARCHAR2 := FND_API.g_true
10: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
11: ,p_ci_type_id IN NUMBER
12: ,p_summary IN VARCHAR2
5: procedure ADD_CONTROL_ITEM(
6: p_api_version IN NUMBER := 1.0
7: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
8: ,p_commit IN VARCHAR2 := FND_API.g_false
9: ,p_validate_only IN VARCHAR2 := FND_API.g_true
10: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
11: ,p_ci_type_id IN NUMBER
12: ,p_summary IN VARCHAR2
13: ,p_status_code IN VARCHAR2
6: p_api_version IN NUMBER := 1.0
7: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
8: ,p_commit IN VARCHAR2 := FND_API.g_false
9: ,p_validate_only IN VARCHAR2 := FND_API.g_true
10: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
11: ,p_ci_type_id IN NUMBER
12: ,p_summary IN VARCHAR2
13: ,p_status_code IN VARCHAR2
14: ,p_owner_id IN NUMBER
114: BEGIN
115:
116: -- Initialize the Error Stack
117: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Add_Control_Item');
118: x_return_status := FND_API.G_RET_STS_SUCCESS;
119:
120: -- Issue API savepoint if the transaction is to be committed
121: IF p_commit = FND_API.G_TRUE THEN
122: SAVEPOINT add_control_item;
117: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Add_Control_Item');
118: x_return_status := FND_API.G_RET_STS_SUCCESS;
119:
120: -- Issue API savepoint if the transaction is to be committed
121: IF p_commit = FND_API.G_TRUE THEN
122: SAVEPOINT add_control_item;
123: END IF;
124:
125:
143: ,p_status_code
144: ,p_owner_id
145: -- ,l_ci_number_char
146: ,p_summary) THEN
147: x_return_status := FND_API.G_RET_STS_ERROR;
148: PA_DEBUG.Reset_Err_Stack;
149: RETURN;
150: END IF;
151:
156: if (c_item_type%notfound) then
157: close c_item_type;
158: PA_UTILS.Add_Message( p_app_short_name => 'PA'
159: ,p_msg_name => 'PA_CI_INVALID_TYPE_ID');
160: x_return_status := FND_API.G_RET_STS_ERROR;
161: --PA_DEBUG.RESET_ERR_STACK;
162: -- return;
163: end if;
164: l_type_class_code := cp_type.ci_type_class_code;
173: if (c_system_stat%notfound) then
174: close c_system_stat;
175: PA_UTILS.Add_Message( p_app_short_name => 'PA'
176: ,p_msg_name => 'PA_CI_INVALID_STATUS_CODE');
177: x_return_status := FND_API.G_RET_STS_ERROR;
178: -- PA_DEBUG.RESET_ERR_STACK;
179: -- return;
180: end if;
181: l_system_status_code := cp_stat_code.project_system_status_code;
199: ,x_return_status => x_return_status
200: ,x_msg_count => x_msg_count
201: ,x_msg_data => x_msg_data);
202:
203: IF x_return_status <> FND_API.g_ret_sts_success THEN
204: PA_DEBUG.Reset_Err_Stack;
205: raise API_ERROR;
206: END IF;
207: l_ci_number_char := TO_CHAR(l_ci_number_num);
225:
226: if ci_number_exists(p_project_id, l_ci_number_char ,p_ci_type_id) = TRUE then
227: PA_UTILS.Add_Message( p_app_short_name => 'PA'
228: ,p_msg_name => 'PA_CI_DUPLICATE_CI_NUMBER');
229: x_return_status := FND_API.G_RET_STS_ERROR;
230: PA_DEBUG.RESET_ERR_STACK;
231: return;
232:
233: end if;
236:
237: IF l_ci_number_char is NULL and l_system_status_code <> DRAFT_STATUS THEN
238: PA_UTILS.Add_Message( p_app_short_name => 'PA'
239: ,p_msg_name => 'PA_CI_NO_CI_NUMBER');
240: x_return_status := FND_API.G_RET_STS_ERROR;
241: PA_DEBUG.Reset_Err_Stack;
242: RETURN;
243:
244: END IF;
333: END IF;
334:
335: -- Launch the workflow notification if it is not validate only mode and no errors occured till now.
336: -- Bug 3297238. FP M changes.
337: IF ( p_validate_only = FND_API.G_FALSE AND x_return_status = FND_API.g_ret_sts_success )THEN
338: pa_control_items_workflow.START_NOTIFICATION_WF
339: ( p_item_type => 'PAWFCISC'
340: ,p_process_name => 'PA_CI_OWNER_CHANGE_FYI'
341: ,p_ci_id => px_ci_id
344: ,x_return_status => x_return_status
345: ,x_msg_count => x_msg_count
346: ,x_msg_data => x_msg_data );
347:
348: IF x_return_status <> FND_API.g_ret_sts_success THEN
349: PA_DEBUG.Reset_Err_Stack;
350: raise API_ERROR;
351: END IF;
352: END IF;
351: END IF;
352: END IF;
353:
354: -- Commit if the flag is set and there is no error
355: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
356: COMMIT;
357: END IF;
358:
359:
365: WHEN API_ERROR THEN
366: x_return_status := x_return_status;
367:
368: WHEN OTHERS THEN
369: IF p_commit = FND_API.G_TRUE THEN
370: ROLLBACK TO add_control_item;
371: END IF;
372:
373: -- Set the excetption Message and the stack
374: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.add_control_item'
375: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
376:
377:
378: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
379: RAISE;
380:
381: end ADD_CONTROL_ITEM;
382:
381: end ADD_CONTROL_ITEM;
382:
383: procedure UPDATE_CONTROL_ITEM (
384: p_api_version IN NUMBER := 1.0
385: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
386: ,p_commit IN VARCHAR2 := FND_API.g_false
387: ,p_validate_only IN VARCHAR2 := FND_API.g_true
388: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
389:
382:
383: procedure UPDATE_CONTROL_ITEM (
384: p_api_version IN NUMBER := 1.0
385: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
386: ,p_commit IN VARCHAR2 := FND_API.g_false
387: ,p_validate_only IN VARCHAR2 := FND_API.g_true
388: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
389:
390: ,p_ci_id IN NUMBER
383: procedure UPDATE_CONTROL_ITEM (
384: p_api_version IN NUMBER := 1.0
385: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
386: ,p_commit IN VARCHAR2 := FND_API.g_false
387: ,p_validate_only IN VARCHAR2 := FND_API.g_true
388: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
389:
390: ,p_ci_id IN NUMBER
391: ,p_ci_type_id IN NUMBER
384: p_api_version IN NUMBER := 1.0
385: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
386: ,p_commit IN VARCHAR2 := FND_API.g_false
387: ,p_validate_only IN VARCHAR2 := FND_API.g_true
388: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
389:
390: ,p_ci_id IN NUMBER
391: ,p_ci_type_id IN NUMBER
392: ,p_summary IN VARCHAR2
499:
500: -- Initialize the Error Stack
501: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Update_Control_Item');
502:
503: x_return_status := FND_API.G_RET_STS_SUCCESS;
504:
505: -- Issue API savepoint if the transaction is to be committed
506: IF p_commit = FND_API.G_TRUE THEN
507: SAVEPOINT update_control_item;
502:
503: x_return_status := FND_API.G_RET_STS_SUCCESS;
504:
505: -- Issue API savepoint if the transaction is to be committed
506: IF p_commit = FND_API.G_TRUE THEN
507: SAVEPOINT update_control_item;
508: END IF;
509:
510: OPEN curr_row;
512: if curr_row%NOTFOUND then
513: close curr_row;
514: PA_UTILS.Add_Message( p_app_short_name => 'PA'
515: ,p_msg_name => 'PA_CI_INVALID_ITEM');
516: x_return_status := FND_API.G_RET_STS_ERROR;
517: return;
518: PA_DEBUG.Reset_Err_Stack;
519: end if;
520:
603: else
604: close C;
605: PA_UTILS.Add_Message( p_app_short_name => 'PA'
606: ,p_msg_name => 'PA_CI_DUPLICATE_CI_NUMBER');
607: x_return_status := FND_API.G_RET_STS_ERROR;
608: PA_DEBUG.Reset_Err_Stack;
609: return;
610: end if;
611: else
613: l_ci_system_status := PA_CONTROL_ITEMS_UTILS.getSystemStatus(l_status_code);
614: if l_ci_system_status is NULL then
615: PA_UTILS.Add_Message( p_app_short_name => 'PA'
616: ,p_msg_name => 'PA_CI_NO_STATUS');
617: x_return_status := FND_API.G_RET_STS_ERROR;
618: PA_DEBUG.Reset_Err_Stack;
619: return;
620: end if;
621: if 'CI_DRAFT' <> l_ci_system_status then
620: end if;
621: if 'CI_DRAFT' <> l_ci_system_status then
622: PA_UTILS.Add_Message( p_app_short_name => 'PA'
623: ,p_msg_name => 'PA_CI_NO_CI_NUMBER');
624: x_return_status := FND_API.G_RET_STS_ERROR;
625: PA_DEBUG.Reset_Err_Stack;
626: return;
627: end if;
628: end if;
704:
705: -- Launch the workflow notification if it is not validate only mode and no errors occured till now and
706: -- the owner is getting changed.
707: -- Bug 3297238. FP M Changes.
708: IF ( p_validate_only = FND_API.G_FALSE AND
709: x_return_status = FND_API.g_ret_sts_success AND
710: l_prev_owner_id <> p_owner_id )THEN -- owner id cannot be null as it is validated in public API.
711:
712: pa_control_items_workflow.START_NOTIFICATION_WF
705: -- Launch the workflow notification if it is not validate only mode and no errors occured till now and
706: -- the owner is getting changed.
707: -- Bug 3297238. FP M Changes.
708: IF ( p_validate_only = FND_API.G_FALSE AND
709: x_return_status = FND_API.g_ret_sts_success AND
710: l_prev_owner_id <> p_owner_id )THEN -- owner id cannot be null as it is validated in public API.
711:
712: pa_control_items_workflow.START_NOTIFICATION_WF
713: ( p_item_type => 'PAWFCISC'
721:
722: END IF;
723:
724: -- Commit if the flag is set and there is no error
725: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
726: COMMIT;
727: END IF;
728:
729:
732:
733:
734: EXCEPTION
735: WHEN OTHERS THEN
736: IF p_commit = FND_API.G_TRUE THEN
737: ROLLBACK TO update_control_item;
738: END IF;
739:
740: -- Set the excetption Message and the stack
741: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.update_control_item'
742: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
743:
744:
745: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
746: RAISE;
747: end UPDATE_CONTROL_ITEM;
748:
749:
749:
750:
751: procedure DELETE_CONTROL_ITEM (
752: p_api_version IN NUMBER := 1.0
753: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
754: ,p_commit IN VARCHAR2 := FND_API.g_false
755: ,p_validate_only IN VARCHAR2 := FND_API.g_true
756: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
757:
750:
751: procedure DELETE_CONTROL_ITEM (
752: p_api_version IN NUMBER := 1.0
753: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
754: ,p_commit IN VARCHAR2 := FND_API.g_false
755: ,p_validate_only IN VARCHAR2 := FND_API.g_true
756: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
757:
758: ,p_ci_id IN NUMBER
751: procedure DELETE_CONTROL_ITEM (
752: p_api_version IN NUMBER := 1.0
753: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
754: ,p_commit IN VARCHAR2 := FND_API.g_false
755: ,p_validate_only IN VARCHAR2 := FND_API.g_true
756: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
757:
758: ,p_ci_id IN NUMBER
759: ,p_record_version_number IN NUMBER
752: p_api_version IN NUMBER := 1.0
753: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
754: ,p_commit IN VARCHAR2 := FND_API.g_false
755: ,p_validate_only IN VARCHAR2 := FND_API.g_true
756: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
757:
758: ,p_ci_id IN NUMBER
759: ,p_record_version_number IN NUMBER
760: ,x_return_status OUT NOCOPY VARCHAR2
773:
774: -- Initialize the Error Stack
775: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Delete_Control_Item');
776:
777: x_return_status := FND_API.G_RET_STS_SUCCESS;
778: -- Issue API savepoint if the transaction is to be committed
779: IF p_commit = FND_API.G_TRUE THEN
780: SAVEPOINT delete_control_item;
781: END IF;
775: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Delete_Control_Item');
776:
777: x_return_status := FND_API.G_RET_STS_SUCCESS;
778: -- Issue API savepoint if the transaction is to be committed
779: IF p_commit = FND_API.G_TRUE THEN
780: SAVEPOINT delete_control_item;
781: END IF;
782:
783: IF p_ci_id is NULL THEN
782:
783: IF p_ci_id is NULL THEN
784: PA_UTILS.Add_Message( p_app_short_name => 'PA'
785: ,p_msg_name => 'PA_CI_INVALID_ITEM');
786: x_return_status := FND_API.G_RET_STS_ERROR;
787: ELSE
788: open valid_ci;
789: fetch valid_ci into l_status_code;
790: if (valid_ci%notfound) then
790: if (valid_ci%notfound) then
791: --- invalid ci_id error
792: PA_UTILS.Add_Message( p_app_short_name => 'PA'
793: ,p_msg_name => 'PA_CI_INVALID_ITEM');
794: x_return_status := FND_API.G_RET_STS_ERROR;
795: else
796: if (l_status_code <> 'CI_DRAFT') then
797: --- invalid status error
798: PA_UTILS.Add_Message( p_app_short_name => 'PA'
796: if (l_status_code <> 'CI_DRAFT') then
797: --- invalid status error
798: PA_UTILS.Add_Message( p_app_short_name => 'PA'
799: ,p_msg_name => 'PA_CI_ONLY_DRAFT_DEL');
800: x_return_status := FND_API.G_RET_STS_ERROR;
801: end if;
802: end if;
803: close valid_ci;
804: END IF;
801: end if;
802: end if;
803: close valid_ci;
804: END IF;
805: IF x_return_status = FND_API.g_ret_sts_success THEN
806: --- delete all actions
807: pa_ci_actions_pvt.delete_all_actions(p_validate_only => 'F',
808: p_init_msg_list => 'F',
809: p_ci_id => p_ci_id,
858: ,x_msg_data
859: );
860: END IF;
861: -- Commit if the flag is set and there is no error
862: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
863: COMMIT;
864: END IF;
865:
866: -- Reset the error stack when returning to the calling program
868:
869:
870: EXCEPTION
871: WHEN OTHERS THEN
872: IF p_commit = FND_API.G_TRUE THEN
873: ROLLBACK TO delete_control_item;
874: END IF;
875:
876: -- Set the excetption Message and the stack
877: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.delete_control_item'
878: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
879:
880:
881: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
882: RAISE;
883: end DELETE_CONTROL_ITEM;
884:
885: procedure DELETE_ALL_CONTROL_ITEMS(
883: end DELETE_CONTROL_ITEM;
884:
885: procedure DELETE_ALL_CONTROL_ITEMS(
886: p_api_version IN NUMBER := 1.0
887: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
888: ,p_commit IN VARCHAR2 := FND_API.g_false
889: ,p_validate_only IN VARCHAR2 := FND_API.g_true
890: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
891:
884:
885: procedure DELETE_ALL_CONTROL_ITEMS(
886: p_api_version IN NUMBER := 1.0
887: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
888: ,p_commit IN VARCHAR2 := FND_API.g_false
889: ,p_validate_only IN VARCHAR2 := FND_API.g_true
890: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
891:
892: ,p_project_id IN NUMBER
885: procedure DELETE_ALL_CONTROL_ITEMS(
886: p_api_version IN NUMBER := 1.0
887: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
888: ,p_commit IN VARCHAR2 := FND_API.g_false
889: ,p_validate_only IN VARCHAR2 := FND_API.g_true
890: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
891:
892: ,p_project_id IN NUMBER
893: ,x_return_status OUT NOCOPY VARCHAR2
886: p_api_version IN NUMBER := 1.0
887: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
888: ,p_commit IN VARCHAR2 := FND_API.g_false
889: ,p_validate_only IN VARCHAR2 := FND_API.g_true
890: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
891:
892: ,p_project_id IN NUMBER
893: ,x_return_status OUT NOCOPY VARCHAR2
894: ,x_msg_count OUT NOCOPY NUMBER
900: BEGIN
901:
902: -- Initialize the Error Stack
903: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Delete_ALL_Control_Items');
904: x_return_status := FND_API.G_RET_STS_SUCCESS;
905:
906: -- Issue API savepoint if the transaction is to be committed
907: IF p_commit = FND_API.G_TRUE THEN
908: SAVEPOINT delete_all_control_items;
903: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Delete_ALL_Control_Items');
904: x_return_status := FND_API.G_RET_STS_SUCCESS;
905:
906: -- Issue API savepoint if the transaction is to be committed
907: IF p_commit = FND_API.G_TRUE THEN
908: SAVEPOINT delete_all_control_items;
909: END IF;
910:
911: --Clear the global PL/SQL message table
908: SAVEPOINT delete_all_control_items;
909: END IF;
910:
911: --Clear the global PL/SQL message table
912: IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
913: FND_MSG_PUB.initialize;
914: END IF;
915:
916: FOR ci_rec IN( SELECT ci_id, record_version_number
928: ,x_return_status
929: ,x_msg_count
930: ,x_msg_data );
931:
932: EXIT WHEN x_return_status <> FND_API.g_ret_sts_success;
933: END LOOP;
934:
935: -- IF the number of messaages is 1 then fetch the message code from the stack
936: -- and return its text
935: -- IF the number of messaages is 1 then fetch the message code from the stack
936: -- and return its text
937: x_msg_count := FND_MSG_PUB.Count_Msg;
938: IF x_msg_count = 1 THEN
939: pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
940: ,p_msg_index => 1
941: ,p_data => x_msg_data
942: ,p_msg_index_out => l_msg_index_out
943: );
942: ,p_msg_index_out => l_msg_index_out
943: );
944: END IF;
945: -- Commit if the flag is set and there is no error
946: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
947: COMMIT;
948: END IF;
949:
950: -- Reset the error stack when returning to the calling program
951: PA_DEBUG.Reset_Err_Stack;
952:
953: EXCEPTION
954: WHEN NO_DATA_FOUND THEN
955: x_return_status := FND_API.G_RET_STS_SUCCESS;
956:
957: WHEN OTHERS THEN
958: IF p_commit = FND_API.G_TRUE THEN
959: ROLLBACK TO delete_all_control_items;
954: WHEN NO_DATA_FOUND THEN
955: x_return_status := FND_API.G_RET_STS_SUCCESS;
956:
957: WHEN OTHERS THEN
958: IF p_commit = FND_API.G_TRUE THEN
959: ROLLBACK TO delete_all_control_items;
960: END IF;
961:
962: -- Set the excetption Message and the stack
963: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.delete_all_control_items'
964: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
965:
966:
967: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
968: RAISE;
969: end DELETE_ALL_CONTROL_ITEMS;
970:
971:
970:
971:
972: procedure COPY_CONTROL_ITEM (
973: p_api_version IN NUMBER := 1.0
974: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
975: ,p_commit IN VARCHAR2 := FND_API.g_false
976: ,p_validate_only IN VARCHAR2 := FND_API.g_true
977: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
978: ,p_project_id IN NUMBER
971:
972: procedure COPY_CONTROL_ITEM (
973: p_api_version IN NUMBER := 1.0
974: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
975: ,p_commit IN VARCHAR2 := FND_API.g_false
976: ,p_validate_only IN VARCHAR2 := FND_API.g_true
977: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
978: ,p_project_id IN NUMBER
979: ,p_ci_id_from IN NUMBER -- copy from this
972: procedure COPY_CONTROL_ITEM (
973: p_api_version IN NUMBER := 1.0
974: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
975: ,p_commit IN VARCHAR2 := FND_API.g_false
976: ,p_validate_only IN VARCHAR2 := FND_API.g_true
977: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
978: ,p_project_id IN NUMBER
979: ,p_ci_id_from IN NUMBER -- copy from this
980: ,p_ci_type_id IN NUMBER -- copy to this
973: p_api_version IN NUMBER := 1.0
974: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
975: ,p_commit IN VARCHAR2 := FND_API.g_false
976: ,p_validate_only IN VARCHAR2 := FND_API.g_true
977: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
978: ,p_project_id IN NUMBER
979: ,p_ci_id_from IN NUMBER -- copy from this
980: ,p_ci_type_id IN NUMBER -- copy to this
981: ,p_classification_code_id IN NUMBER
1067: -- Initialize the Error Stack
1068: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PUB.COPY_CONTROL_ITEM');
1069:
1070: -- Initialize the return status to success
1071: x_return_status := FND_API.G_RET_STS_SUCCESS;
1072:
1073: --Clear the global PL/SQL message table
1074: IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
1075: FND_MSG_PUB.initialize;
1070: -- Initialize the return status to success
1071: x_return_status := FND_API.G_RET_STS_SUCCESS;
1072:
1073: --Clear the global PL/SQL message table
1074: IF FND_API.TO_BOOLEAN( p_init_msg_list ) THEN
1075: FND_MSG_PUB.initialize;
1076: END IF;
1077:
1078: OPEN c_from_item;
1080: if c_from_item%NOTFOUND then
1081: close c_from_item;
1082: PA_UTILS.Add_Message( p_app_short_name => 'PA'
1083: ,p_msg_name => 'PA_CI_NO_FROM_ITEM');
1084: x_return_status := FND_API.G_RET_STS_ERROR;
1085: end if;
1086:
1087: ---- check that impacts of source ci_id_from should be less than or equalto the
1088: ---- impacts of the destination ci_type_id. (i.e. new ci)
1089: if (x_return_status = 'S' and p_include = 'Y') then
1090: if (pa_control_items_utils.IsImpactOkToInclude(p_ci_type_id, null, p_ci_id_from) <> 'Y') then
1091: PA_UTILS.Add_Message( p_app_short_name => 'PA'
1092: ,p_msg_name => 'PA_CI_NO_IMP_INCLUDE');
1093: x_return_status := FND_API.G_RET_STS_ERROR;
1094: end if;
1095: end if;
1096:
1097: if p_validate_only=fnd_api.g_false AND
1093: x_return_status := FND_API.G_RET_STS_ERROR;
1094: end if;
1095: end if;
1096:
1097: if p_validate_only=fnd_api.g_false AND
1098: x_return_status = FND_API.G_RET_STS_SUCCESS then
1099:
1100: --- only copy clasification and reason if the source classification and reason
1101: --- code is in classificationa and reason category of the destination ci
1094: end if;
1095: end if;
1096:
1097: if p_validate_only=fnd_api.g_false AND
1098: x_return_status = FND_API.G_RET_STS_SUCCESS then
1099:
1100: --- only copy clasification and reason if the source classification and reason
1101: --- code is in classificationa and reason category of the destination ci
1102: l_from_type_id := copy_from_row.ci_type_id;
1160: -- Bug#13475251 Changes end.
1161: PA_CONTROL_ITEMS_PVT.ADD_CONTROL_ITEM(
1162: p_api_version => p_api_version
1163: ,p_init_msg_list => p_init_msg_list
1164: ,p_commit => FND_API.g_false
1165: ,p_validate_only => p_validate_only
1166: ,p_max_msg_count => p_max_msg_count
1167:
1168: ,p_ci_type_id => p_ci_type_id
1246: x_ci_id := l_ci_id;
1247: close c_from_item;
1248:
1249: ------- copy impacts
1250: if (x_return_status = FND_API.g_ret_sts_success and p_include = 'N') then
1251: pa_ci_impacts_util.copy_impact(p_validate_only => 'F',
1252: p_init_msg_list => 'F',
1253: P_DEST_CI_ID => x_ci_id,
1254: P_SOURCE_CI_ID => p_ci_id_from,
1257: x_msg_count => x_msg_count,
1258: x_msg_data => x_msg_data);
1259: end if;
1260:
1261: if x_return_status = FND_API.g_ret_sts_success and p_include = 'Y' THEN
1262: PA_CONTROL_ITEMS_PVT.INCLUDE_CONTROL_ITEM(
1263: p_api_version => p_api_version
1264: ,p_init_msg_list => p_init_msg_list
1265: ,p_commit => 'F'
1304: -- IF the number of messages is 1 then fetch the message code from the stack
1305: -- and return its text
1306: x_msg_count := FND_MSG_PUB.Count_Msg;
1307: IF x_msg_count = 1 THEN
1308: pa_interface_utils_pub.get_messages ( p_encoded => FND_API.G_TRUE
1309: ,p_msg_index => 1
1310: ,p_data => x_msg_data
1311: ,p_msg_index_out => l_msg_index_out
1312: );
1326: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PUB.COPY_CONTROL_ITEM'
1327: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1328:
1329:
1330: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1331: RAISE;
1332: end COPY_CONTROL_ITEM;
1333:
1334: procedure INCLUDE_CONTROL_ITEM(
1332: end COPY_CONTROL_ITEM;
1333:
1334: procedure INCLUDE_CONTROL_ITEM(
1335: p_api_version IN NUMBER := 1.0
1336: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1337: ,p_commit IN VARCHAR2 := FND_API.g_false
1338: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1339: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1340:
1333:
1334: procedure INCLUDE_CONTROL_ITEM(
1335: p_api_version IN NUMBER := 1.0
1336: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1337: ,p_commit IN VARCHAR2 := FND_API.g_false
1338: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1339: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1340:
1341: ,p_from_ci_id IN NUMBER
1334: procedure INCLUDE_CONTROL_ITEM(
1335: p_api_version IN NUMBER := 1.0
1336: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1337: ,p_commit IN VARCHAR2 := FND_API.g_false
1338: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1339: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1340:
1341: ,p_from_ci_id IN NUMBER
1342: ,p_to_ci_id IN NUMBER
1335: p_api_version IN NUMBER := 1.0
1336: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1337: ,p_commit IN VARCHAR2 := FND_API.g_false
1338: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1339: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1340:
1341: ,p_from_ci_id IN NUMBER
1342: ,p_to_ci_id IN NUMBER
1343: ,p_record_version_number_to IN NUMBER
1371:
1372: -- Initialize the Error Stack
1373: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Include_Control_Item');
1374:
1375: x_return_status := FND_API.G_RET_STS_SUCCESS;
1376: -- Issue API savepoint if the transaction is to be committed
1377: IF p_commit = FND_API.G_TRUE THEN
1378: SAVEPOINT include_control_item;
1379: END IF;
1373: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Include_Control_Item');
1374:
1375: x_return_status := FND_API.G_RET_STS_SUCCESS;
1376: -- Issue API savepoint if the transaction is to be committed
1377: IF p_commit = FND_API.G_TRUE THEN
1378: SAVEPOINT include_control_item;
1379: END IF;
1380:
1381: -------Included in
1476: FROM PA_CONTROL_ITEMS
1477: WHERE ci_id = p_to_ci_id;
1478:
1479: PA_CONTROL_ITEMS_UTILS.ChangeCIStatus (
1480: p_init_msg_list => FND_API.G_TRUE
1481: ,p_validate_only => FND_API.G_FALSE
1482: ,p_ci_id => p_to_ci_id
1483: ,p_status => 'CI_CLOSED'
1484: ,p_record_version_number => l_record_version_number
1477: WHERE ci_id = p_to_ci_id;
1478:
1479: PA_CONTROL_ITEMS_UTILS.ChangeCIStatus (
1480: p_init_msg_list => FND_API.G_TRUE
1481: ,p_validate_only => FND_API.G_FALSE
1482: ,p_ci_id => p_to_ci_id
1483: ,p_status => 'CI_CLOSED'
1484: ,p_record_version_number => l_record_version_number
1485: ,x_num_of_actions => l_open_actions_num
1503: END IF;
1504:
1505:
1506: -- Commit if the flag is set and there is no error
1507: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
1508: COMMIT;
1509: END IF;
1510:
1511: -- Reset the error stack when returning to the calling program
1513:
1514:
1515: EXCEPTION
1516: WHEN OTHERS THEN
1517: IF p_commit = FND_API.G_TRUE THEN
1518: ROLLBACK TO include_control_item;
1519: END IF;
1520:
1521: -- Set the excetption Message and the stack
1522: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.include_control_item'
1523: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1524:
1525:
1526: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1527: RAISE;
1528: end INCLUDE_CONTROL_ITEM;
1529:
1530: procedure UPDATE_NUMBER_OF_ACTIONS (
1528: end INCLUDE_CONTROL_ITEM;
1529:
1530: procedure UPDATE_NUMBER_OF_ACTIONS (
1531: p_api_version IN NUMBER := 1.0
1532: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1533: ,p_commit IN VARCHAR2 := FND_API.g_false
1534: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1535: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1536:
1529:
1530: procedure UPDATE_NUMBER_OF_ACTIONS (
1531: p_api_version IN NUMBER := 1.0
1532: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1533: ,p_commit IN VARCHAR2 := FND_API.g_false
1534: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1535: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1536:
1537: ,p_ci_id IN NUMBER
1530: procedure UPDATE_NUMBER_OF_ACTIONS (
1531: p_api_version IN NUMBER := 1.0
1532: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1533: ,p_commit IN VARCHAR2 := FND_API.g_false
1534: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1535: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1536:
1537: ,p_ci_id IN NUMBER
1538: ,p_num_of_actions IN NUMBER
1531: p_api_version IN NUMBER := 1.0
1532: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1533: ,p_commit IN VARCHAR2 := FND_API.g_false
1534: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1535: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1536:
1537: ,p_ci_id IN NUMBER
1538: ,p_num_of_actions IN NUMBER
1539: ,p_record_version_number IN NUMBER
1559:
1560: -- Initialize the Error Stack
1561: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.UPDATE_NUMBER_OF_ACTIONS');
1562:
1563: x_return_status := FND_API.G_RET_STS_SUCCESS;
1564: -- Issue API savepoint if the transaction is to be committed
1565: IF p_commit = FND_API.G_TRUE THEN
1566: SAVEPOINT UPDATE_NUMBER_OF_ACTIONS;
1567: END IF;
1561: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.UPDATE_NUMBER_OF_ACTIONS');
1562:
1563: x_return_status := FND_API.G_RET_STS_SUCCESS;
1564: -- Issue API savepoint if the transaction is to be committed
1565: IF p_commit = FND_API.G_TRUE THEN
1566: SAVEPOINT UPDATE_NUMBER_OF_ACTIONS;
1567: END IF;
1568:
1569: x_return_status := 'S';
1668: end if;
1669:
1670:
1671: -- Commit if the flag is set and there is no error
1672: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
1673: COMMIT;
1674: END IF;
1675:
1676: -- Reset the error stack when returning to the calling program
1678:
1679:
1680: EXCEPTION
1681: WHEN OTHERS THEN
1682: IF p_commit = FND_API.G_TRUE THEN
1683: ROLLBACK TO UPDATE_NUMBER_OF_ACTIONS;
1684: END IF;
1685:
1686: -- Set the excetption Message and the stack
1687: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.UPDATE_NUMBER_OF_ACTIONS'
1688: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1689:
1690:
1691: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1692: RAISE;
1693: end UPDATE_NUMBER_OF_ACTIONS;
1694:
1695: procedure UPDATE_CONTROL_ITEM_STATUS (
1693: end UPDATE_NUMBER_OF_ACTIONS;
1694:
1695: procedure UPDATE_CONTROL_ITEM_STATUS (
1696: p_api_version IN NUMBER := 1.0
1697: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1698: ,p_commit IN VARCHAR2 := FND_API.g_false
1699: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1700: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1701:
1694:
1695: procedure UPDATE_CONTROL_ITEM_STATUS (
1696: p_api_version IN NUMBER := 1.0
1697: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1698: ,p_commit IN VARCHAR2 := FND_API.g_false
1699: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1700: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1701:
1702: ,p_ci_id IN NUMBER
1695: procedure UPDATE_CONTROL_ITEM_STATUS (
1696: p_api_version IN NUMBER := 1.0
1697: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1698: ,p_commit IN VARCHAR2 := FND_API.g_false
1699: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1700: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1701:
1702: ,p_ci_id IN NUMBER
1703: ,p_status_code IN VARCHAR2
1696: p_api_version IN NUMBER := 1.0
1697: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
1698: ,p_commit IN VARCHAR2 := FND_API.g_false
1699: ,p_validate_only IN VARCHAR2 := FND_API.g_true
1700: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
1701:
1702: ,p_ci_id IN NUMBER
1703: ,p_status_code IN VARCHAR2
1704: ,p_record_version_number IN NUMBER
1742:
1743: -- Initialize the Error Stack
1744: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.UPDATE_CONTROL_ITEM_STATUS');
1745:
1746: x_return_status := FND_API.G_RET_STS_SUCCESS;
1747: -- Issue API savepoint if the transaction is to be committed
1748: IF p_commit = FND_API.G_TRUE THEN
1749: SAVEPOINT UPDATE_CONTROL_ITEM_STATUS;
1750: END IF;
1744: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.UPDATE_CONTROL_ITEM_STATUS');
1745:
1746: x_return_status := FND_API.G_RET_STS_SUCCESS;
1747: -- Issue API savepoint if the transaction is to be committed
1748: IF p_commit = FND_API.G_TRUE THEN
1749: SAVEPOINT UPDATE_CONTROL_ITEM_STATUS;
1750: END IF;
1751:
1752: x_return_status := 'S';
1816: ,x_return_status => x_return_status
1817: ,x_msg_count => x_msg_count
1818: ,x_msg_data => x_msg_data);
1819:
1820: IF x_return_status <> FND_API.g_ret_sts_success THEN
1821: PA_DEBUG.Reset_Err_Stack;
1822: raise API_ERROR;
1823: END IF;
1824: l_ci_number_char := TO_CHAR(l_ci_number_num);
1940: );
1941:
1942:
1943: -- Commit if the flag is set and there is no error
1944: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
1945: COMMIT;
1946: END IF;
1947:
1948: -- Reset the error stack when returning to the calling program
1952: WHEN API_ERROR THEN
1953: x_return_status := x_return_status;
1954:
1955: WHEN OTHERS THEN
1956: IF p_commit = FND_API.G_TRUE THEN
1957: ROLLBACK TO UPDATE_CONTROL_ITEM_STATUS;
1958: END IF;
1959:
1960: -- Set the excetption Message and the stack
1961: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.UPDATE_CONTROL_ITEM_STATUS'
1962: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
1963:
1964:
1965: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1966: RAISE;
1967: end UPDATE_CONTROL_ITEM_STATUS;
1968:
1969: FUNCTION ASSIGN_CONTROL_ITEM_NUMBER(
2069: end if;
2070:
2071: EXCEPTION
2072: WHEN OTHERS THEN
2073: --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2074: RAISE;
2075: END ci_number_exists;
2076:
2077: -- Validates pa_lookups which has p_lookup_type and p_lookup_code
2120: AND obj.object_id_from1 = p_ci_id
2121: AND obj.object_id_to1 = ci.ci_id;
2122: BEGIN
2123:
2124: x_return_status := FND_API.G_RET_STS_SUCCESS;
2125:
2126: FOR cur in items_c LOOP
2127: PA_CONTROL_ITEMS_UTILS.ChangeCIStatus (
2128: p_init_msg_list => FND_API.G_TRUE
2124: x_return_status := FND_API.G_RET_STS_SUCCESS;
2125:
2126: FOR cur in items_c LOOP
2127: PA_CONTROL_ITEMS_UTILS.ChangeCIStatus (
2128: p_init_msg_list => FND_API.G_TRUE
2129: ,p_validate_only => FND_API.G_FALSE
2130: ,p_ci_id => cur.included_ci_id
2131: ,p_status => 'CI_APPROVED'
2132: ,p_record_version_number => cur.record_version_number
2125:
2126: FOR cur in items_c LOOP
2127: PA_CONTROL_ITEMS_UTILS.ChangeCIStatus (
2128: p_init_msg_list => FND_API.G_TRUE
2129: ,p_validate_only => FND_API.G_FALSE
2130: ,p_ci_id => cur.included_ci_id
2131: ,p_status => 'CI_APPROVED'
2132: ,p_record_version_number => cur.record_version_number
2133: ,x_num_of_actions => l_open_actions_num
2134: ,x_return_status => x_return_status
2135: ,x_msg_count => x_msg_count
2136: ,x_msg_data => x_msg_data);
2137:
2138: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2139: PA_UTILS.Add_Message (p_app_short_name => 'PA'
2140: ,p_msg_name => x_msg_data);
2141: RAISE FND_API.G_EXC_ERROR;
2142: END IF;
2137:
2138: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2139: PA_UTILS.Add_Message (p_app_short_name => 'PA'
2140: ,p_msg_name => x_msg_data);
2141: RAISE FND_API.G_EXC_ERROR;
2142: END IF;
2143: END LOOP;
2144:
2145: END change_included_cr_status;
2146:
2147:
2148: PROCEDURE add_related_item (
2149: p_api_version IN NUMBER := 1.0,
2150: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2151: p_commit IN VARCHAR2 := FND_API.g_false,
2152: p_validate_only IN VARCHAR2 := FND_API.g_true,
2153: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2154: p_ci_id IN NUMBER,
2147:
2148: PROCEDURE add_related_item (
2149: p_api_version IN NUMBER := 1.0,
2150: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2151: p_commit IN VARCHAR2 := FND_API.g_false,
2152: p_validate_only IN VARCHAR2 := FND_API.g_true,
2153: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2154: p_ci_id IN NUMBER,
2155: p_related_ci_id IN NUMBER,
2148: PROCEDURE add_related_item (
2149: p_api_version IN NUMBER := 1.0,
2150: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2151: p_commit IN VARCHAR2 := FND_API.g_false,
2152: p_validate_only IN VARCHAR2 := FND_API.g_true,
2153: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2154: p_ci_id IN NUMBER,
2155: p_related_ci_id IN NUMBER,
2156: x_return_status OUT NOCOPY VARCHAR2,
2149: p_api_version IN NUMBER := 1.0,
2150: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2151: p_commit IN VARCHAR2 := FND_API.g_false,
2152: p_validate_only IN VARCHAR2 := FND_API.g_true,
2153: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2154: p_ci_id IN NUMBER,
2155: p_related_ci_id IN NUMBER,
2156: x_return_status OUT NOCOPY VARCHAR2,
2157: x_msg_count OUT NOCOPY NUMBER,
2161: l_object_relationship_id NUMBER;
2162: BEGIN
2163: pa_debug.set_err_stack ('PA_CONTROL_ITEMS_PVT.ADD_RELATED_ITEM');
2164:
2165: IF p_commit = FND_API.G_TRUE THEN
2166: SAVEPOINT add_related_item;
2167: END IF;
2168:
2169: IF p_init_msg_list = FND_API.G_TRUE THEN
2165: IF p_commit = FND_API.G_TRUE THEN
2166: SAVEPOINT add_related_item;
2167: END IF;
2168:
2169: IF p_init_msg_list = FND_API.G_TRUE THEN
2170: fnd_msg_pub.initialize;
2171: END IF;
2172:
2173: x_return_status := 'S';
2173: x_return_status := 'S';
2174: x_msg_count := 0;
2175: x_msg_data := '';
2176:
2177: IF p_validate_only = FND_API.G_TRUE THEN
2178: RETURN;
2179: END IF;
2180:
2181: PA_OBJECT_RELATIONSHIPS_PKG.INSERT_ROW(
2200: p_pm_product_code => NULL,
2201: x_object_relationship_id => l_object_relationship_id,
2202: x_return_status => x_return_status);
2203:
2204: IF p_commit = fnd_api.g_true THEN
2205: IF x_return_status = 'S' THEN
2206: COMMIT;
2207: ELSE
2208: ROLLBACK TO add_related_item;
2215: pa_debug.reset_err_stack;
2216:
2217: EXCEPTION
2218: WHEN OTHERS THEN
2219: IF p_commit = fnd_api.g_true THEN
2220: ROLLBACK TO add_related_item;
2221: END IF;
2222:
2223: x_return_status := 'U';
2231:
2232:
2233: PROCEDURE delete_related_item (
2234: p_api_version IN NUMBER := 1.0,
2235: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2236: p_commit IN VARCHAR2 := FND_API.g_false,
2237: p_validate_only IN VARCHAR2 := FND_API.g_true,
2238: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2239: p_ci_id IN NUMBER,
2232:
2233: PROCEDURE delete_related_item (
2234: p_api_version IN NUMBER := 1.0,
2235: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2236: p_commit IN VARCHAR2 := FND_API.g_false,
2237: p_validate_only IN VARCHAR2 := FND_API.g_true,
2238: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2239: p_ci_id IN NUMBER,
2240: p_related_ci_id IN NUMBER,
2233: PROCEDURE delete_related_item (
2234: p_api_version IN NUMBER := 1.0,
2235: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2236: p_commit IN VARCHAR2 := FND_API.g_false,
2237: p_validate_only IN VARCHAR2 := FND_API.g_true,
2238: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2239: p_ci_id IN NUMBER,
2240: p_related_ci_id IN NUMBER,
2241: x_return_status OUT NOCOPY VARCHAR2,
2234: p_api_version IN NUMBER := 1.0,
2235: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2236: p_commit IN VARCHAR2 := FND_API.g_false,
2237: p_validate_only IN VARCHAR2 := FND_API.g_true,
2238: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2239: p_ci_id IN NUMBER,
2240: p_related_ci_id IN NUMBER,
2241: x_return_status OUT NOCOPY VARCHAR2,
2242: x_msg_count OUT NOCOPY NUMBER,
2247: l_record_version_number NUMBER;
2248: BEGIN
2249: pa_debug.set_err_stack ('PA_CONTROL_ITEMS_PVT.DELETE_RELATED_ITEM');
2250:
2251: IF p_commit = FND_API.G_TRUE THEN
2252: SAVEPOINT delete_related_item;
2253: END IF;
2254:
2255: IF p_init_msg_list = FND_API.G_TRUE THEN
2251: IF p_commit = FND_API.G_TRUE THEN
2252: SAVEPOINT delete_related_item;
2253: END IF;
2254:
2255: IF p_init_msg_list = FND_API.G_TRUE THEN
2256: fnd_msg_pub.initialize;
2257: END IF;
2258:
2259: x_return_status := 'S';
2270: AND object_id_from1 = p_ci_id)
2271: OR ( object_id_to1 = p_ci_id
2272: AND object_id_from1 = p_related_ci_id));
2273:
2274: IF p_validate_only = FND_API.G_TRUE THEN
2275: RETURN;
2276: END IF;
2277:
2278: pa_object_relationships_pkg.delete_row(
2292: p_pm_product_code => NULL,
2293: p_record_version_number => l_record_version_number,
2294: x_return_status => x_return_status);
2295:
2296: IF p_commit = fnd_api.g_true THEN
2297: IF x_return_status = 'S' THEN
2298: COMMIT;
2299: ELSE
2300: ROLLBACK TO delete_related_item;
2307: pa_debug.reset_err_stack;
2308:
2309: EXCEPTION
2310: WHEN OTHERS THEN
2311: IF p_commit = fnd_api.g_true THEN
2312: ROLLBACK TO delete_related_item;
2313: END IF;
2314:
2315: x_return_status := 'U';
2322: END delete_related_item;
2323:
2324: PROCEDURE delete_all_related_items (
2325: p_api_version IN NUMBER := 1.0,
2326: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2327: p_commit IN VARCHAR2 := FND_API.g_false,
2328: p_validate_only IN VARCHAR2 := FND_API.g_true,
2329: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2330: p_ci_id IN NUMBER,
2323:
2324: PROCEDURE delete_all_related_items (
2325: p_api_version IN NUMBER := 1.0,
2326: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2327: p_commit IN VARCHAR2 := FND_API.g_false,
2328: p_validate_only IN VARCHAR2 := FND_API.g_true,
2329: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2330: p_ci_id IN NUMBER,
2331: x_return_status OUT NOCOPY VARCHAR2,
2324: PROCEDURE delete_all_related_items (
2325: p_api_version IN NUMBER := 1.0,
2326: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2327: p_commit IN VARCHAR2 := FND_API.g_false,
2328: p_validate_only IN VARCHAR2 := FND_API.g_true,
2329: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2330: p_ci_id IN NUMBER,
2331: x_return_status OUT NOCOPY VARCHAR2,
2332: x_msg_count OUT NOCOPY NUMBER,
2325: p_api_version IN NUMBER := 1.0,
2326: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2327: p_commit IN VARCHAR2 := FND_API.g_false,
2328: p_validate_only IN VARCHAR2 := FND_API.g_true,
2329: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2330: p_ci_id IN NUMBER,
2331: x_return_status OUT NOCOPY VARCHAR2,
2332: x_msg_count OUT NOCOPY NUMBER,
2333: x_msg_data OUT NOCOPY VARCHAR2
2352:
2353: BEGIN
2354: pa_debug.set_err_stack ('PA_CONTROL_ITEMS_PVT.DELETE_ALL_RELATED_ITEMS');
2355:
2356: IF p_commit = FND_API.G_TRUE THEN
2357: SAVEPOINT delete_all_related_items;
2358: END IF;
2359:
2360: IF p_init_msg_list = FND_API.G_TRUE THEN
2356: IF p_commit = FND_API.G_TRUE THEN
2357: SAVEPOINT delete_all_related_items;
2358: END IF;
2359:
2360: IF p_init_msg_list = FND_API.G_TRUE THEN
2361: fnd_msg_pub.initialize;
2362: END IF;
2363:
2364: x_return_status := 'S';
2364: x_return_status := 'S';
2365: x_msg_count := 0;
2366: x_msg_data := '';
2367:
2368: IF p_validate_only = FND_API.G_TRUE THEN
2369: RETURN;
2370: END IF;
2371:
2372: FOR cur in items_c LOOP
2370: END IF;
2371:
2372: FOR cur in items_c LOOP
2373: delete_related_item(
2374: p_init_msg_list => FND_API.G_FALSE,
2375: p_commit => FND_API.G_FALSE,
2376: p_validate_only => FND_API.G_FALSE,
2377: p_max_msg_count => p_max_msg_count,
2378: p_ci_id => p_ci_id,
2371:
2372: FOR cur in items_c LOOP
2373: delete_related_item(
2374: p_init_msg_list => FND_API.G_FALSE,
2375: p_commit => FND_API.G_FALSE,
2376: p_validate_only => FND_API.G_FALSE,
2377: p_max_msg_count => p_max_msg_count,
2378: p_ci_id => p_ci_id,
2379: p_related_ci_id => cur.related_ci_id,
2372: FOR cur in items_c LOOP
2373: delete_related_item(
2374: p_init_msg_list => FND_API.G_FALSE,
2375: p_commit => FND_API.G_FALSE,
2376: p_validate_only => FND_API.G_FALSE,
2377: p_max_msg_count => p_max_msg_count,
2378: p_ci_id => p_ci_id,
2379: p_related_ci_id => cur.related_ci_id,
2380: x_return_status => x_return_status,
2381: x_msg_count => x_msg_count,
2382: x_msg_data => x_msg_data);
2383: END LOOP;
2384:
2385: IF p_commit = fnd_api.g_true THEN
2386: IF x_return_status = 'S' THEN
2387: COMMIT;
2388: ELSE
2389: ROLLBACK TO delete_all_related_items;
2396: pa_debug.reset_err_stack;
2397:
2398: EXCEPTION
2399: WHEN OTHERS THEN
2400: IF p_commit = fnd_api.g_true THEN
2401: ROLLBACK TO delete_all_related_items;
2402: END IF;
2403:
2404: x_return_status := 'U';
2412:
2413:
2414: PROCEDURE delete_all_included_crs (
2415: p_api_version IN NUMBER := 1.0,
2416: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2417: p_commit IN VARCHAR2 := FND_API.g_false,
2418: p_validate_only IN VARCHAR2 := FND_API.g_true,
2419: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2420: p_ci_id IN NUMBER,
2413:
2414: PROCEDURE delete_all_included_crs (
2415: p_api_version IN NUMBER := 1.0,
2416: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2417: p_commit IN VARCHAR2 := FND_API.g_false,
2418: p_validate_only IN VARCHAR2 := FND_API.g_true,
2419: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2420: p_ci_id IN NUMBER,
2421: x_return_status OUT NOCOPY VARCHAR2,
2414: PROCEDURE delete_all_included_crs (
2415: p_api_version IN NUMBER := 1.0,
2416: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2417: p_commit IN VARCHAR2 := FND_API.g_false,
2418: p_validate_only IN VARCHAR2 := FND_API.g_true,
2419: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2420: p_ci_id IN NUMBER,
2421: x_return_status OUT NOCOPY VARCHAR2,
2422: x_msg_count OUT NOCOPY NUMBER,
2415: p_api_version IN NUMBER := 1.0,
2416: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2417: p_commit IN VARCHAR2 := FND_API.g_false,
2418: p_validate_only IN VARCHAR2 := FND_API.g_true,
2419: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2420: p_ci_id IN NUMBER,
2421: x_return_status OUT NOCOPY VARCHAR2,
2422: x_msg_count OUT NOCOPY NUMBER,
2423: x_msg_data OUT NOCOPY VARCHAR2
2433:
2434: BEGIN
2435: pa_debug.set_err_stack ('PA_CONTROL_ITEMS_PVT.DELETE_ALL_INCLUDED_CRS');
2436:
2437: IF p_commit = FND_API.G_TRUE THEN
2438: SAVEPOINT delete_all_included_crs;
2439: END IF;
2440:
2441: IF p_init_msg_list = FND_API.G_TRUE THEN
2437: IF p_commit = FND_API.G_TRUE THEN
2438: SAVEPOINT delete_all_included_crs;
2439: END IF;
2440:
2441: IF p_init_msg_list = FND_API.G_TRUE THEN
2442: fnd_msg_pub.initialize;
2443: END IF;
2444:
2445: x_return_status := 'S';
2445: x_return_status := 'S';
2446: x_msg_count := 0;
2447: x_msg_data := '';
2448:
2449: IF p_validate_only = FND_API.G_TRUE THEN
2450: RETURN;
2451: END IF;
2452:
2453: FOR cur in items_c LOOP
2471: x_return_status => x_return_status);
2472:
2473: END LOOP;
2474:
2475: IF p_commit = fnd_api.g_true THEN
2476: IF x_return_status = 'S' THEN
2477: COMMIT;
2478: ELSE
2479: ROLLBACK TO delete_all_included_crs;
2486: pa_debug.reset_err_stack;
2487:
2488: EXCEPTION
2489: WHEN OTHERS THEN
2490: IF p_commit = fnd_api.g_true THEN
2491: ROLLBACK TO delete_all_included_crs;
2492: END IF;
2493:
2494: x_return_status := 'U';
2501: END delete_all_included_crs;
2502:
2503: PROCEDURE copy_related_items (
2504: p_api_version IN NUMBER := 1.0,
2505: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2506: p_commit IN VARCHAR2 := FND_API.g_false,
2507: p_validate_only IN VARCHAR2 := FND_API.g_true,
2508: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2509: p_from_ci_id IN NUMBER,
2502:
2503: PROCEDURE copy_related_items (
2504: p_api_version IN NUMBER := 1.0,
2505: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2506: p_commit IN VARCHAR2 := FND_API.g_false,
2507: p_validate_only IN VARCHAR2 := FND_API.g_true,
2508: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2509: p_from_ci_id IN NUMBER,
2510: p_to_ci_id IN NUMBER,
2503: PROCEDURE copy_related_items (
2504: p_api_version IN NUMBER := 1.0,
2505: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2506: p_commit IN VARCHAR2 := FND_API.g_false,
2507: p_validate_only IN VARCHAR2 := FND_API.g_true,
2508: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2509: p_from_ci_id IN NUMBER,
2510: p_to_ci_id IN NUMBER,
2511: x_return_status OUT NOCOPY VARCHAR2,
2504: p_api_version IN NUMBER := 1.0,
2505: p_init_msg_list IN VARCHAR2 := fnd_api.g_true,
2506: p_commit IN VARCHAR2 := FND_API.g_false,
2507: p_validate_only IN VARCHAR2 := FND_API.g_true,
2508: p_max_msg_count IN NUMBER := FND_API.g_miss_num,
2509: p_from_ci_id IN NUMBER,
2510: p_to_ci_id IN NUMBER,
2511: x_return_status OUT NOCOPY VARCHAR2,
2512: x_msg_count OUT NOCOPY NUMBER,
2531:
2532: BEGIN
2533: pa_debug.set_err_stack ('PA_CONTROL_ITEMS_PVT.COPY_RELATED_ITEMS');
2534:
2535: IF p_commit = FND_API.G_TRUE THEN
2536: SAVEPOINT copy_related_items;
2537: END IF;
2538:
2539: IF p_init_msg_list = FND_API.G_TRUE THEN
2535: IF p_commit = FND_API.G_TRUE THEN
2536: SAVEPOINT copy_related_items;
2537: END IF;
2538:
2539: IF p_init_msg_list = FND_API.G_TRUE THEN
2540: fnd_msg_pub.initialize;
2541: END IF;
2542:
2543: x_return_status := 'S';
2543: x_return_status := 'S';
2544: x_msg_count := 0;
2545: x_msg_data := '';
2546:
2547: IF p_validate_only = FND_API.G_TRUE THEN
2548: RETURN;
2549: END IF;
2550:
2551: FOR cur in items_c LOOP
2549: END IF;
2550:
2551: FOR cur in items_c LOOP
2552: pa_control_items_pvt.add_related_item(
2553: p_init_msg_list => FND_API.G_FALSE,
2554: p_commit => FND_API.G_FALSE,
2555: p_validate_only => FND_API.G_FALSE,
2556: p_max_msg_count => p_max_msg_count,
2557: p_ci_id => p_to_ci_id,
2550:
2551: FOR cur in items_c LOOP
2552: pa_control_items_pvt.add_related_item(
2553: p_init_msg_list => FND_API.G_FALSE,
2554: p_commit => FND_API.G_FALSE,
2555: p_validate_only => FND_API.G_FALSE,
2556: p_max_msg_count => p_max_msg_count,
2557: p_ci_id => p_to_ci_id,
2558: p_related_ci_id => cur.related_ci_id,
2551: FOR cur in items_c LOOP
2552: pa_control_items_pvt.add_related_item(
2553: p_init_msg_list => FND_API.G_FALSE,
2554: p_commit => FND_API.G_FALSE,
2555: p_validate_only => FND_API.G_FALSE,
2556: p_max_msg_count => p_max_msg_count,
2557: p_ci_id => p_to_ci_id,
2558: p_related_ci_id => cur.related_ci_id,
2559: x_return_status => x_return_status,
2560: x_msg_count => x_msg_count,
2561: x_msg_data => x_msg_data);
2562: END LOOP;
2563:
2564: IF p_commit = fnd_api.g_true THEN
2565: IF x_return_status = 'S' THEN
2566: COMMIT;
2567: ELSE
2568: ROLLBACK TO copy_related_items;
2575: pa_debug.reset_err_stack;
2576:
2577: EXCEPTION
2578: WHEN OTHERS THEN
2579: IF p_commit = fnd_api.g_true THEN
2580: ROLLBACK TO copy_related_items;
2581: END IF;
2582:
2583: x_return_status := 'U';
2591:
2592: -- start: 26-Jun-2009 cklee Modified for the Bug# 8633676
2593: procedure LOCK_CONTROL_ITEM (
2594: p_api_version IN NUMBER := 1.0
2595: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
2596: ,p_commit IN VARCHAR2 := FND_API.g_false
2597: ,p_validate_only IN VARCHAR2 := FND_API.g_true
2598: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
2599: ,p_ci_id IN NUMBER
2592: -- start: 26-Jun-2009 cklee Modified for the Bug# 8633676
2593: procedure LOCK_CONTROL_ITEM (
2594: p_api_version IN NUMBER := 1.0
2595: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
2596: ,p_commit IN VARCHAR2 := FND_API.g_false
2597: ,p_validate_only IN VARCHAR2 := FND_API.g_true
2598: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
2599: ,p_ci_id IN NUMBER
2600: ,x_return_status OUT NOCOPY VARCHAR2
2593: procedure LOCK_CONTROL_ITEM (
2594: p_api_version IN NUMBER := 1.0
2595: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
2596: ,p_commit IN VARCHAR2 := FND_API.g_false
2597: ,p_validate_only IN VARCHAR2 := FND_API.g_true
2598: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
2599: ,p_ci_id IN NUMBER
2600: ,x_return_status OUT NOCOPY VARCHAR2
2601: ,x_msg_count OUT NOCOPY NUMBER
2594: p_api_version IN NUMBER := 1.0
2595: ,p_init_msg_list IN VARCHAR2 := fnd_api.g_true
2596: ,p_commit IN VARCHAR2 := FND_API.g_false
2597: ,p_validate_only IN VARCHAR2 := FND_API.g_true
2598: ,p_max_msg_count IN NUMBER := FND_API.g_miss_num
2599: ,p_ci_id IN NUMBER
2600: ,x_return_status OUT NOCOPY VARCHAR2
2601: ,x_msg_count OUT NOCOPY NUMBER
2602: ,x_msg_data OUT NOCOPY VARCHAR2
2691:
2692: -- Initialize the Error Stack
2693: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Lock_Control_Item');
2694:
2695: x_return_status := FND_API.G_RET_STS_SUCCESS;
2696: -- Issue API savepoint if the transaction is to be committed
2697: IF p_commit = FND_API.G_TRUE THEN
2698: SAVEPOINT lock_control_item;
2699: END IF;
2693: PA_DEBUG.init_err_stack('PA_CONTROL_ITEMS_PVT.Lock_Control_Item');
2694:
2695: x_return_status := FND_API.G_RET_STS_SUCCESS;
2696: -- Issue API savepoint if the transaction is to be committed
2697: IF p_commit = FND_API.G_TRUE THEN
2698: SAVEPOINT lock_control_item;
2699: END IF;
2700:
2701: IF p_ci_id is NULL THEN
2700:
2701: IF p_ci_id is NULL THEN
2702: PA_UTILS.Add_Message( p_app_short_name => 'PA'
2703: ,p_msg_name => 'PA_CI_INVALID_ITEM');
2704: x_return_status := FND_API.G_RET_STS_ERROR;
2705: ELSE
2706: open valid_ci;
2707: fetch valid_ci into l_status_code;
2708: if (valid_ci%notfound) then
2708: if (valid_ci%notfound) then
2709: --- invalid ci_id error
2710: PA_UTILS.Add_Message( p_app_short_name => 'PA'
2711: ,p_msg_name => 'PA_CI_INVALID_ITEM');
2712: x_return_status := FND_API.G_RET_STS_ERROR;
2713: end if;
2714: close valid_ci;
2715: END IF;
2716: IF x_return_status = FND_API.g_ret_sts_success THEN
2712: x_return_status := FND_API.G_RET_STS_ERROR;
2713: end if;
2714: close valid_ci;
2715: END IF;
2716: IF x_return_status = FND_API.g_ret_sts_success THEN
2717:
2718: OPEN curr_row;
2719: FETCH curr_row INTO cp;
2720: if curr_row%NOTFOUND then
2720: if curr_row%NOTFOUND then
2721: close curr_row;
2722: PA_UTILS.Add_Message( p_app_short_name => 'PA'
2723: ,p_msg_name => 'PA_CI_INVALID_ITEM');
2724: x_return_status := FND_API.G_RET_STS_ERROR;
2725: return;
2726: PA_DEBUG.Reset_Err_Stack;
2727: end if;
2728:
2797: );
2798:
2799: END IF;
2800: -- Commit if the flag is set and there is no error
2801: IF (p_commit = FND_API.G_TRUE AND x_return_status = FND_API.g_ret_sts_success )THEN
2802: COMMIT;
2803: END IF;
2804:
2805: -- Reset the error stack when returning to the calling program
2807:
2808:
2809: EXCEPTION
2810: WHEN OTHERS THEN
2811: IF p_commit = FND_API.G_TRUE THEN
2812: ROLLBACK TO locked_control_item;
2813: END IF;
2814:
2815: -- Set the excetption Message and the stack
2816: FND_MSG_PUB.add_exc_msg ( p_pkg_name => 'PA_CONTROL_ITEMS_PVT.lock_control_item'
2817: ,p_procedure_name => PA_DEBUG.G_Err_Stack );
2818:
2819:
2820: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2821: RAISE;
2822: end LOCK_CONTROL_ITEM;
2823: -- end 26-Jun-2009 cklee Modified for the Bug# 8633676
2824: