17:
18:
19: PROCEDURE Add_Template_To_Quote(
20: P_API_VERSION_NUMBER IN NUMBER,
21: P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
22: P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
23: P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
24: P_UPDATE_FLAG IN VARCHAR2 := 'Y',
25: P_TEMPLATE_ID_TBL IN ASO_QUOTE_TMPL_INT.LIST_TEMPLATE_TBL_TYPE,
18:
19: PROCEDURE Add_Template_To_Quote(
20: P_API_VERSION_NUMBER IN NUMBER,
21: P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
22: P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
23: P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
24: P_UPDATE_FLAG IN VARCHAR2 := 'Y',
25: P_TEMPLATE_ID_TBL IN ASO_QUOTE_TMPL_INT.LIST_TEMPLATE_TBL_TYPE,
26: P_QTE_HEADER_REC IN ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
19: PROCEDURE Add_Template_To_Quote(
20: P_API_VERSION_NUMBER IN NUMBER,
21: P_INIT_MSG_LIST IN VARCHAR2 := FND_API.G_FALSE,
22: P_COMMIT IN VARCHAR2 := FND_API.G_FALSE,
23: P_VALIDATION_LEVEL IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
24: P_UPDATE_FLAG IN VARCHAR2 := 'Y',
25: P_TEMPLATE_ID_TBL IN ASO_QUOTE_TMPL_INT.LIST_TEMPLATE_TBL_TYPE,
26: P_QTE_HEADER_REC IN ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec,
27: P_CONTROL_REC IN ASO_QUOTE_PUB.CONTROL_REC_TYPE := ASO_QUOTE_PUB.G_MISS_control_REC,
40: L_API_VERSION CONSTANT NUMBER := 1.0;
41:
42: l_template_line_count NUMBER := 0;
43: l_conc_segments VARCHAR2(40);
44: l_top_model_line_id NUMBER := FND_API.G_MISS_NUM;
45: l_dropped_flag VARCHAR2(1) := 'N';
46: l_service_flag VARCHAR2(1) := 'N';
47: l_config_header_id NUMBER;
48: l_config_rev_number NUMBER;
137: aso_debug_pub.add('****** Start of Add_Template_To_Quote API ******', 1, 'Y');
138: END IF;
139:
140: -- Standard call to check for call compatibility.
141: IF NOT FND_API.Compatible_API_Call(
142: L_API_VERSION ,
143: P_API_VERSION_NUMBER,
144: L_API_NAME ,
145: G_PKG_NAME
143: P_API_VERSION_NUMBER,
144: L_API_NAME ,
145: G_PKG_NAME
146: ) THEN
147: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
148: END IF;
149:
150: -- Initialize message list if p_init_msg_list is set to TRUE.
151: IF FND_API.To_Boolean(p_init_msg_list) THEN
147: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
148: END IF;
149:
150: -- Initialize message list if p_init_msg_list is set to TRUE.
151: IF FND_API.To_Boolean(p_init_msg_list) THEN
152: FND_Msg_Pub.initialize;
153: END IF;
154:
155: -- Initialize API return status to success
152: FND_Msg_Pub.initialize;
153: END IF;
154:
155: -- Initialize API return status to success
156: x_return_status := FND_API.G_RET_STS_SUCCESS;
157:
158: -- API body
159: l_qte_header_rec := p_qte_header_rec;
160:
157:
158: -- API body
159: l_qte_header_rec := p_qte_header_rec;
160:
161: IF (p_qte_header_rec.org_id is null or p_qte_header_rec.org_id = fnd_api.g_miss_num ) then
162: IF aso_debug_pub.g_debug_flag = 'Y' THEN
163: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Input ogr_id is null or g_miss', 1, 'Y');
164: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: p_qte_header_rec.quote_header_id: ' || p_qte_header_rec.quote_header_id, 1, 'Y');
165: END IF;
237: END IF;
238:
239: ASO_VALIDATE_PRICING_PVT.Validate_Pricing_Order(
240: p_api_version_number => 1.0,
241: p_init_msg_list => FND_API.G_FALSE,
242: p_commit => FND_API.G_FALSE,
243: p_control_rec => l_pricing_control_rec,
244: p_qte_header_rec => l_qte_header_rec,
245: p_qte_line_tbl => lp_qte_line_tbl,
238:
239: ASO_VALIDATE_PRICING_PVT.Validate_Pricing_Order(
240: p_api_version_number => 1.0,
241: p_init_msg_list => FND_API.G_FALSE,
242: p_commit => FND_API.G_FALSE,
243: p_control_rec => l_pricing_control_rec,
244: p_qte_header_rec => l_qte_header_rec,
245: p_qte_line_tbl => lp_qte_line_tbl,
246: x_qte_header_rec => lpx_qte_header_rec,
257: IF aso_debug_pub.g_debug_flag = 'Y' THEN
258: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Validate_Pricing_Order', 1, 'Y');
259: END IF;
260:
261: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
262: RAISE FND_API.G_EXC_ERROR;
263: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
264: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
265: END IF;
258: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Validate_Pricing_Order', 1, 'Y');
259: END IF;
260:
261: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
262: RAISE FND_API.G_EXC_ERROR;
263: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
264: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
265: END IF;
266:
259: END IF;
260:
261: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
262: RAISE FND_API.G_EXC_ERROR;
263: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
264: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
265: END IF;
266:
267: IF aso_debug_pub.g_debug_flag = 'Y' THEN
260:
261: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
262: RAISE FND_API.G_EXC_ERROR;
263: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
264: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
265: END IF;
266:
267: IF aso_debug_pub.g_debug_flag = 'Y' THEN
268: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: start validated lines loop', 1, 'Y');
268: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: start validated lines loop', 1, 'Y');
269: END IF;
270:
271: FOR i IN 1..lpx_qte_line_tbl.count LOOP
272: IF lpx_qte_line_tbl(i).pricing_status_code <> FND_API.G_RET_STS_SUCCESS THEN
273: l_dropped_line_id_tbl(lpx_qte_line_tbl(i).quote_line_id) := lpx_qte_line_tbl(i).quote_line_id;
274:
275: FOR conc_segments_rec IN c_conc_segments(lpx_qte_line_tbl(i).inventory_item_id) LOOP
276: l_conc_segments := conc_segments_rec.concatenated_segments;
401: FOR i IN 1..l_qte_line_tbl.count LOOP
402: IF l_qte_line_tbl(i).item_type_code = 'MDL' THEN
403: FOR j IN 1..l_qte_line_dtl_tbl.count LOOP
404: IF l_qte_line_dtl_tbl(j).qte_line_index = i THEN
405: IF (l_qte_line_dtl_tbl(j).config_header_id <> FND_API.G_MISS_NUM AND l_qte_line_dtl_tbl(j).config_header_id IS NOT NULL) AND
406: (l_qte_line_dtl_tbl(j).config_revision_num <> FND_API.G_MISS_NUM AND l_qte_line_dtl_tbl(j).config_revision_num IS NOT NULL) THEN
407:
408: l_config_header_id := l_qte_line_dtl_tbl(j).config_header_id;
409: l_config_rev_number := l_qte_line_dtl_tbl(j).config_revision_num;
402: IF l_qte_line_tbl(i).item_type_code = 'MDL' THEN
403: FOR j IN 1..l_qte_line_dtl_tbl.count LOOP
404: IF l_qte_line_dtl_tbl(j).qte_line_index = i THEN
405: IF (l_qte_line_dtl_tbl(j).config_header_id <> FND_API.G_MISS_NUM AND l_qte_line_dtl_tbl(j).config_header_id IS NOT NULL) AND
406: (l_qte_line_dtl_tbl(j).config_revision_num <> FND_API.G_MISS_NUM AND l_qte_line_dtl_tbl(j).config_revision_num IS NOT NULL) THEN
407:
408: l_config_header_id := l_qte_line_dtl_tbl(j).config_header_id;
409: l_config_rev_number := l_qte_line_dtl_tbl(j).config_revision_num;
410:
427: );*/
428:
429: ASO_CFG_INT.Copy_Configuration(
430: p_api_version_number => 1.0,
431: p_init_msg_list => FND_API.G_FALSE,
432: p_commit => FND_API.G_FALSE,
433: p_config_header_id => l_config_header_id,
434: p_config_revision_num => l_config_rev_number,
435: p_copy_mode => CZ_API_PUB.G_NEW_HEADER_COPY_MODE,
428:
429: ASO_CFG_INT.Copy_Configuration(
430: p_api_version_number => 1.0,
431: p_init_msg_list => FND_API.G_FALSE,
432: p_commit => FND_API.G_FALSE,
433: p_config_header_id => l_config_header_id,
434: p_config_revision_num => l_config_rev_number,
435: p_copy_mode => CZ_API_PUB.G_NEW_HEADER_COPY_MODE,
436: p_handle_deleted_flag => NULL,
447: IF aso_debug_pub.g_debug_flag = 'Y' THEN
448: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Copy_Configuration', 1, 'Y');
449: END IF;
450:
451: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
452: RAISE FND_API.G_EXC_ERROR;
453: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
454: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
455: END IF;
448: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Copy_Configuration', 1, 'Y');
449: END IF;
450:
451: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
452: RAISE FND_API.G_EXC_ERROR;
453: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
454: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
455: END IF;
456:
449: END IF;
450:
451: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
452: RAISE FND_API.G_EXC_ERROR;
453: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
454: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
455: END IF;
456:
457: -- Changes for Config item Id
450:
451: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
452: RAISE FND_API.G_EXC_ERROR;
453: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
454: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
455: END IF;
456:
457: -- Changes for Config item Id
458:
483:
484: l_qte_line_tbl(i).quote_header_id := p_qte_header_rec.quote_header_id;
485: l_qte_line_tbl(i).operation_code := 'CREATE';
486: l_qte_line_tbl(i).quote_line_id := NULL;
487: l_qte_line_tbl(i).line_number := FND_API.G_MISS_NUM;
488: END LOOP;
489:
490: -- Template Manager Changes
491: IF p_update_flag = 'N' THEN
501:
502: --mo_global.set_policy_context('S', l_qte_header_rec.org_id);
503: ASO_QUOTE_PUB.Update_Quote(
504: P_Api_Version_Number => 1.0,
505: P_Init_Msg_List => FND_API.G_FALSE,
506: P_Commit => FND_API.G_FALSE,
507: P_Control_Rec => p_control_rec,
508: P_Qte_Header_Rec => l_qte_header_rec,
509: P_Qte_Line_Tbl => l_qte_line_tbL,
502: --mo_global.set_policy_context('S', l_qte_header_rec.org_id);
503: ASO_QUOTE_PUB.Update_Quote(
504: P_Api_Version_Number => 1.0,
505: P_Init_Msg_List => FND_API.G_FALSE,
506: P_Commit => FND_API.G_FALSE,
507: P_Control_Rec => p_control_rec,
508: P_Qte_Header_Rec => l_qte_header_rec,
509: P_Qte_Line_Tbl => l_qte_line_tbL,
510: P_Qte_Line_Dtl_Tbl => l_qte_line_dtl_tbl,
536: IF aso_debug_pub.g_debug_flag = 'Y' THEN
537: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Update_Quote', 1, 'Y');
538: END IF;
539:
540: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
541: RAISE FND_API.G_EXC_ERROR;
542: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
543: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
544: END IF;
537: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Update_Quote', 1, 'Y');
538: END IF;
539:
540: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
541: RAISE FND_API.G_EXC_ERROR;
542: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
543: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
544: END IF;
545:
538: END IF;
539:
540: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
541: RAISE FND_API.G_EXC_ERROR;
542: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
543: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
544: END IF;
545:
546: -- Commented for bug no 6731701 so that only the record for newly inserted line go into relationship table
539:
540: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
541: RAISE FND_API.G_EXC_ERROR;
542: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
543: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
544: END IF;
545:
546: -- Commented for bug no 6731701 so that only the record for newly inserted line go into relationship table
547: /* x_qte_line_tbl := ASO_QUOTE_PUB.G_Miss_Qte_Line_Tbl;
571: end if;
572:
573:
574:
575: IF x_qte_line_dtl_tbl(1).ref_line_id IS NOT NULL AND x_qte_line_dtl_tbl(1).ref_line_id <> FND_API.G_MISS_NUM THEN
576: l_line_rltship_rec.OPERATION_CODE := 'CREATE';
577: l_line_rltship_rec.QUOTE_LINE_ID := x_qte_line_dtl_tbl(1).ref_line_id;
578: l_line_rltship_rec.RELATED_QUOTE_LINE_ID := x_qte_line_dtl_tbl(1).quote_line_id;
579: l_line_rltship_rec.RELATIONSHIP_TYPE_CODE := 'CONFIG';
583: END IF;
584:
585: ASO_LINE_RLTSHIP_PVT.Create_Line_Rltship(
586: P_Api_Version_Number => 1.0,
587: P_Init_Msg_List => FND_API.G_FALSE,
588: P_Commit => FND_API.G_FALSE,
589: P_Validation_Level => p_validation_level,
590: P_Line_Rltship_Rec => l_line_rltship_rec,
591: X_LINE_RELATIONSHIP_ID => lx_line_relationship_id,
584:
585: ASO_LINE_RLTSHIP_PVT.Create_Line_Rltship(
586: P_Api_Version_Number => 1.0,
587: P_Init_Msg_List => FND_API.G_FALSE,
588: P_Commit => FND_API.G_FALSE,
589: P_Validation_Level => p_validation_level,
590: P_Line_Rltship_Rec => l_line_rltship_rec,
591: X_LINE_RELATIONSHIP_ID => lx_line_relationship_id,
592: X_Return_Status => x_return_status,
597: IF aso_debug_pub.g_debug_flag = 'Y' THEN
598: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Create_Line_Rltship: lx_line_relationship_id: '||lx_line_relationship_id, 1, 'Y');
599: END IF;
600:
601: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
602: RAISE FND_API.G_EXC_ERROR;
603: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
604: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
605: END IF;
598: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: after Create_Line_Rltship: lx_line_relationship_id: '||lx_line_relationship_id, 1, 'Y');
599: END IF;
600:
601: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
602: RAISE FND_API.G_EXC_ERROR;
603: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
604: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
605: END IF;
606: END IF;
599: END IF;
600:
601: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
602: RAISE FND_API.G_EXC_ERROR;
603: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
604: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
605: END IF;
606: END IF;
607: END IF;
600:
601: IF x_return_status = FND_API.G_RET_STS_ERROR THEN
602: RAISE FND_API.G_EXC_ERROR;
603: ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
604: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
605: END IF;
606: END IF;
607: END IF;
608: END LOOP;
619: aso_debug_pub.add('****** End of Add_Template_To_Quote API ******', 1, 'Y');
620: END IF;
621:
622: -- Standard check of p_commit
623: IF FND_API.To_Boolean(p_commit) THEN
624: COMMIT WORK;
625: END IF;
626:
627: -- Standard call to get message count and if count is 1, get message info
625: END IF;
626:
627: -- Standard call to get message count and if count is 1, get message info
628: FND_Msg_Pub.Count_And_Get(
629: p_encoded => FND_API.G_FALSE,
630: p_count => x_msg_count ,
631: p_data => x_msg_data
632: );
633:
631: p_data => x_msg_data
632: );
633:
634: EXCEPTION
635: WHEN FND_API.G_EXC_ERROR THEN
636: ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
637: P_API_NAME => L_API_NAME,
638: P_PKG_NAME => G_PKG_NAME,
639: P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
644: X_MSG_DATA => X_MSG_DATA,
645: X_RETURN_STATUS => X_RETURN_STATUS
646: );
647:
648: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
649: ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
650: P_API_NAME => L_API_NAME,
651: P_PKG_NAME => G_PKG_NAME,
652: P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
787: l_orderable_flag := 'Y';
788: IF p_uom_code IS NULL THEN
789: l_uom_code := orderable_items_rec.primary_uom_code;
790:
791: ELSIF p_uom_code IS NOT NULL AND p_uom_code <> FND_API.G_MISS_CHAR THEN
792: l_uom_code := p_uom_code;
793:
794: END IF;
795:
822: l_check_service_rec.service_item_id := p_inventory_item_id;
823: l_check_service_rec.customer_id := l_cust;
824: ASO_SERVICE_CONTRACTS_INT.Is_Service_Available(
825: P_Api_Version_Number => 1.0 ,
826: P_init_msg_list =>FND_API.G_FALSE,
827: X_msg_Count => lx_msg_count ,
828: X_msg_Data => lx_msg_data ,
829: X_Return_Status => lx_return_status ,
830: p_check_service_rec => l_check_service_rec,
849: p_inventory_item_id,
850: l_master_organization_id,
851: SYSDATE,
852: 'APPLET',
853: FND_API.G_MISS_NUM,
854: FND_PROFILE.Value('RESP_ID'),
855: FND_PROFILE.Value('RESP_APPL_ID')
856: );
857:
882: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item:l_output_qty'|| l_output_qty, 1, 'N');
883: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item:l_primary_qty'|| l_primary_qty, 1, 'N');
884: END IF;
885:
886: IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR p_quantity <= 0 THEN
887: IF aso_debug_pub.g_debug_flag = 'Y' THEN
888: aso_debug_pub.add('ASO_QUOTE_TMPL_PVT: Validate_Item: item has invalid quantity:'
889: || p_inventory_item_id, 1, 'N');
890: END IF;