115: aso_debug_pub.add('ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE '
116: ||ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE,1,'N');
117: END IF;
118: /*FastTrak: Price effective date is assigned to the price frozen unless the price frozen date is null*/
119: if ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE = FND_API.G_MISS_DATE
120: OR ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE is NULL then
121: px_req_line_tbl(1).PRICING_EFFECTIVE_DATE := trunc(sysdate);
122: else
123: px_req_line_tbl(1).PRICING_EFFECTIVE_DATE := trunc(ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE);
149: l_req_line_rec.LINE_TYPE_CODE := 'LINE';
150: l_req_line_rec.LINE_QUANTITY := p_Line_rec.quantity;
151: l_req_line_rec.LINE_UOM_CODE := p_Line_rec.uom_code;
152: l_req_line_rec.CURRENCY_CODE := p_Line_rec.currency_code;
153: If p_Line_rec.line_list_price <> FND_API.G_MISS_NUM Then
154: l_req_line_rec.UNIT_PRICE := p_Line_rec.line_list_price;
155: Else
156: l_req_line_rec.UNIT_PRICE := Null;
157: End If;
156: l_req_line_rec.UNIT_PRICE := Null;
157: End If;
158: -- Added for Service Item after pathcset E
159: If p_line_dtl_rec.service_period is not null
160: AND p_line_dtl_rec.service_period <> fnd_api.g_miss_char then
161: If (p_line_dtl_rec.service_period = p_Line_rec.uom_code) Then
162: l_req_line_rec.UOM_QUANTITY := p_line_dtl_rec.service_duration;
163: Else
164: INV_CONVERT.INV_UM_CONVERSION(
178: l_req_line_rec.UPDATED_ADJUSTED_UNIT_PRICE := p_Line_rec.line_quote_price;
179: End If;
180: l_req_line_rec.PRICE_FLAG := 'Y';
181: /*FastTrak: Price effective date is assigned to the price frozen unless the price frozen date is null*/
182: if ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE = FND_API.G_MISS_DATE
183: OR ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE is NULL then
184: l_req_line_rec.PRICING_EFFECTIVE_DATE := trunc(sysdate);
185: else
186: l_req_line_rec.PRICING_EFFECTIVE_DATE := trunc(ASO_PRICING_INT.g_header_rec.PRICE_FROZEN_DATE);
202: /*Main API*/
203:
204: PROCEDURE Validate_Pricing_Order(
205: P_Api_Version_Number IN NUMBER,
206: P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
207: P_Commit IN VARCHAR2 := FND_API.G_FALSE,
208: p_control_rec IN ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE,
209: p_qte_header_rec IN ASO_QUOTE_PUB.Qte_Header_Rec_Type,
210: p_hd_shipment_rec IN ASO_QUOTE_PUB.Shipment_Rec_Type
203:
204: PROCEDURE Validate_Pricing_Order(
205: P_Api_Version_Number IN NUMBER,
206: P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
207: P_Commit IN VARCHAR2 := FND_API.G_FALSE,
208: p_control_rec IN ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE,
209: p_qte_header_rec IN ASO_QUOTE_PUB.Qte_Header_Rec_Type,
210: p_hd_shipment_rec IN ASO_QUOTE_PUB.Shipment_Rec_Type
211: := ASO_QUOTE_PUB.G_Miss_Shipment_Rec,
287: QP_PREQ_GRP.g_status_invalid_price_list,
288: QP_PREQ_GRP.g_sts_lhs_not_found,
289: QP_PREQ_GRP.g_status_formula_error,
290: QP_PREQ_GRP.g_status_other_errors,
291: fnd_api.g_ret_sts_unexp_error,
292: fnd_api.g_ret_sts_error,
293: QP_PREQ_GRP.g_status_calc_error,
294: QP_PREQ_GRP.g_status_uom_failure,
295: QP_PREQ_GRP.g_status_invalid_uom,
288: QP_PREQ_GRP.g_sts_lhs_not_found,
289: QP_PREQ_GRP.g_status_formula_error,
290: QP_PREQ_GRP.g_status_other_errors,
291: fnd_api.g_ret_sts_unexp_error,
292: fnd_api.g_ret_sts_error,
293: QP_PREQ_GRP.g_status_calc_error,
294: QP_PREQ_GRP.g_status_uom_failure,
295: QP_PREQ_GRP.g_status_invalid_uom,
296: QP_PREQ_GRP.g_status_dup_price_list,
308: -- Standard Start of API savepoint
309: SAVEPOINT PRICING_ORDER_PVT;
310:
311: -- Standard call to check for call compatibility.
312: IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
313: p_api_version_number,
314: l_api_name,
315: G_PKG_NAME)
316: THEN
313: p_api_version_number,
314: l_api_name,
315: G_PKG_NAME)
316: THEN
317: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
318: END IF;
319:
320: -- Initialize message list if p_init_msg_list is set to TRUE.
321: IF FND_API.to_Boolean( p_init_msg_list )
317: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
318: END IF;
319:
320: -- Initialize message list if p_init_msg_list is set to TRUE.
321: IF FND_API.to_Boolean( p_init_msg_list )
322: THEN
323: IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
324: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:Begin FND_API.to_Boolean'||p_init_msg_list, 1, 'Y');
325: END IF;
320: -- Initialize message list if p_init_msg_list is set to TRUE.
321: IF FND_API.to_Boolean( p_init_msg_list )
322: THEN
323: IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
324: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:Begin FND_API.to_Boolean'||p_init_msg_list, 1, 'Y');
325: END IF;
326: FND_MSG_PUB.initialize;
327: END IF;
328:
325: END IF;
326: FND_MSG_PUB.initialize;
327: END IF;
328:
329: x_return_status := FND_API.G_RET_STS_SUCCESS;
330: IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
331: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:p_control_rec.request_type:'
332: ||p_control_rec.request_type,1,'N');
333: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:p_control_rec.pricing_event:'
387: If l_qte_line_tbl.count > 0 Then
388: FOR i IN 1..l_qte_line_tbl.count LOOP
389: /*We store the line_index in quote_line_id before building the l_req_line_tbl */
390: if l_qte_line_tbl(i).quote_line_id is null
391: OR l_qte_line_tbl(i).quote_line_id = fnd_api.g_miss_num Then
392: l_call_flg := 'O';
393: l_qte_line_tbl(i).quote_line_id := i+1;
394: end if;
395: l_qte_line_id := l_qte_line_tbl(i).quote_line_id;
403: /* Default header_level currency_code and price list id to line level*/
404: l_qte_line_tbl(i).currency_code := p_qte_header_rec.currency_code;
405:
406: If (l_qte_line_tbl(i).price_list_id is null
407: OR l_qte_line_tbl(i).price_list_id= FND_API.G_MISS_NUM) Then
408: l_qte_line_tbl(i).price_list_id := p_qte_header_rec.price_list_id;
409: End if;
410:
411: /*Query Detail Line tbl and shipment*/
505: ||l_srv_line_dtl_tbl.count,1,'Y');
506: END IF;
507: For j in 1..l_srv_line_dtl_tbl.count loop
508: If (l_srv_line_dtl_tbl(j).SERVICE_REF_LINE_ID IS NOT NULL
509: OR l_srv_line_dtl_tbl(j).SERVICE_REF_LINE_ID <> FND_API.G_MISS_NUM) Then
510: IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
511: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:quote line id:'||l_srv_line_dtl_tbl(j).quote_line_id,1,'Y');
512: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:service ref line id:'||l_srv_line_dtl_tbl(j).service_ref_line_id,1,'Y');
513: END IF;
542: END IF;
543:
544: /* Change for populating QP_PREQ_GRP.CONTROL_RECORD_TYPE.ORG_ID Yogeshwar (MOAC) */
545:
546: IF ((p_qte_header_rec.org_id IS NULL) OR (p_qte_header_rec.org_id = FND_API.G_MISS_NUM)) THEN
547: IF fnd_msg_pub.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
548: FND_MESSAGE.Set_Name('ASO', 'ASO_MISSING_OU');
549: FND_MSG_PUB.ADD;
550: END IF;
548: FND_MESSAGE.Set_Name('ASO', 'ASO_MISSING_OU');
549: FND_MSG_PUB.ADD;
550: END IF;
551:
552: RAISE FND_API.G_EXC_ERROR;
553: END IF;
554:
555: l_control_rec.ORG_ID := p_qte_header_rec.org_id;
556:
584: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:After PRICE_REQUEST l_return_status_text '
585: ||l_return_status_text,1,'N');
586: END IF;
587:
588: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
589: RAISE FND_API.G_EXC_ERROR;
590: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
591: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
592: END IF;
585: ||l_return_status_text,1,'N');
586: END IF;
587:
588: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
589: RAISE FND_API.G_EXC_ERROR;
590: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
591: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
592: END IF;
593:
586: END IF;
587:
588: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
589: RAISE FND_API.G_EXC_ERROR;
590: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
591: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
592: END IF;
593:
594: /*In lx_Req_line_tbl check for the return status for each line and then populate that status in
587:
588: IF l_return_status = FND_API.G_RET_STS_ERROR THEN
589: RAISE FND_API.G_EXC_ERROR;
590: ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
591: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
592: END IF;
593:
594: /*In lx_Req_line_tbl check for the return status for each line and then populate that status in
595: **x_qte_line_tbl.
607: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT:x_qte_line_tbl.count:'||x_qte_line_tbl.count,1,'N');
608: END IF;
609: k := x_qte_line_tbl.FIRST;
610: While k is not null loop
611: x_qte_line_tbl(k).pricing_status_code := FND_API.G_RET_STS_SUCCESS;
612: k := x_qte_line_tbl.NEXT(k);
613: end loop;
614:
615: /*Update all the errored records*/
629: If C_status_code_rec.line_id = x_qte_line_tbl(j).quote_line_id then
630: IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
631: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT: Updating the quote_line_id: '
632: ||x_qte_line_tbl(j).quote_line_id||' with status_code: '
633: ||FND_API.G_RET_STS_ERROR,1,'N');
634: END IF;
635: x_qte_line_tbl(j).pricing_status_code := FND_API.G_RET_STS_ERROR;
636: x_qte_line_tbl(j).pricing_status_text := C_status_code_rec.pricing_status_text;
637: exit;
631: aso_debug_pub.add('ASO_VALIDATE_PRICING_PVT: Updating the quote_line_id: '
632: ||x_qte_line_tbl(j).quote_line_id||' with status_code: '
633: ||FND_API.G_RET_STS_ERROR,1,'N');
634: END IF;
635: x_qte_line_tbl(j).pricing_status_code := FND_API.G_RET_STS_ERROR;
636: x_qte_line_tbl(j).pricing_status_text := C_status_code_rec.pricing_status_text;
637: exit;
638: End If;
639: j := x_qte_line_tbl.NEXT(j);
642:
643:
644: If l_call_flg = 'O' then
645: For i in 1..x_qte_line_tbl.count loop
646: x_qte_line_tbl(i).quote_line_id := FND_API.G_MISS_NUM;
647: end loop;
648: End If;
649:
650:
655: End If; -- If l_qte_line_tbl.count > 0
656:
657:
658: -- Standard check for p_commit
659: IF FND_API.to_Boolean( p_commit ) THEN
660: COMMIT WORK;
661: END IF;
662:
663: FND_MSG_PUB.Count_And_Get
675: end loop;
676:
677:
678: EXCEPTION
679: WHEN FND_API.G_EXC_ERROR THEN
680: IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
681: aso_debug_pub.add('after inside EXCEPTION return status'||x_return_status, 1, 'Y');
682: END IF;
683: ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
690: ,X_MSG_COUNT => X_MSG_COUNT
691: ,X_MSG_DATA => X_MSG_DATA
692: ,X_RETURN_STATUS => X_RETURN_STATUS);
693:
694: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
695: ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
696: P_API_NAME => L_API_NAME
697: ,P_PKG_NAME => G_PKG_NAME
698: ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR