DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_CONTRACT_TERMS_INT

Source


1 PACKAGE BODY ASO_Contract_Terms_INT AS
2 /* $Header: asoiktcb.pls 120.1.12010000.2 2009/08/20 07:35:58 rassharm ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_Contract_Terms_INT
5 -- Purpose          :
6 -- History          :
7 --    10-29-2002 hyang - created
8 -- NOTE             :
9 -- End of Comments
10 
11   g_pkg_name           CONSTANT VARCHAR2 (30) := 'ASO_Contract_Terms_INT';
12   g_file_name          CONSTANT VARCHAR2 (12) := 'asoiktcb.pls';
13 
14   G_ITEMS_CODE                  CONSTANT VARCHAR2(30)   := 'OKC$S_ITEMS';
15   G_ITEM_CATEGORIES_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_ITEM_CATEGORIES';
16   G_PA_NUMBER_CODE              CONSTANT VARCHAR2(30)   := 'OKC$S_PA_NUMBER';
17   G_PA_NAME_CODE                CONSTANT VARCHAR2(30)   := 'OKC$S_PA_NAME';
18   G_QUOTE_NUMBER_CODE           CONSTANT VARCHAR2(30)   := 'OKC$S_QUOTE_NUMBER';
19   G_CUSTOMER_NAME_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CUSTOMER_NAME';
20   G_CUSTOMER_NUMBER_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_CUSTOMER_NUMBER';
21   G_CUST_PO_NUMBER_CODE         CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_PO_NUMBER';
22   G_VERSION_NUMBER_CODE         CONSTANT VARCHAR2(30)   := 'OKC$S_VERSION_NUMBER';
23   G_CUST_CONTACT_NAME_CODE      CONSTANT VARCHAR2(30)   := 'OKC$S_CUST_CONTACT_NAME';
24   G_SALESREP_NAME_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_SALESREP_NAME';
25   G_CURRENCY_CODE_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CURRENCY_CODE';
26   G_FREIGHT_TERMS_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_FREIGHT_TERMS';
27   G_SHIPPING_METHOD_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_SHIPPING_METHOD';
28   G_PAYMENT_TERM_CODE           CONSTANT VARCHAR2(30)   := 'OKC$S_PAYMENT_TERM';
29   G_SUPPLIER_NAME_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_SUPPLIER_NAME';
30   G_CURRENCY_NAME_CODE          CONSTANT VARCHAR2(30)   := 'OKC$S_CURRENCY_NAME';
31   G_CURRENCY_SYMBOL_CODE        CONSTANT VARCHAR2(30)   := 'OKC$S_CURRENCY_SYMBOL';
32 
33 
34   PROCEDURE Get_Article_Variable_Values (
35     p_api_version               IN        NUMBER,
36     p_init_msg_list             IN        VARCHAR2 := fnd_api.g_false,
37     x_return_status             OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
38     x_msg_count                 OUT NOCOPY /* file.sql.39 change */       NUMBER,
39     x_msg_data                  OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
40     p_doc_id                    IN        NUMBER,
41     p_sys_var_value_tbl         IN OUT NOCOPY /* file.sql.39 change */    OKC_TERMS_UTIL_GRP.sys_var_value_tbl_type
42   ) IS
43 
44     l_api_version               NUMBER          := 1.0;
45     l_api_name                  VARCHAR2 (50)   := 'Get_Line_Variable_Values';
46     l_index                     BINARY_INTEGER;
47 
48     l_contract_id               NUMBER;
49     l_quote_number              NUMBER;
50     l_cust_party_id             NUMBER;
51     l_cust_account_id           NUMBER;
52     l_cust_po_number            VARCHAR2 (50);
53     l_quote_version             NUMBER;
54     l_party_id                  NUMBER;
55     l_resource_id               NUMBER;
56     l_currency_code             VARCHAR2 (15);
57     l_freight_terms_code        VARCHAR2 (30);
58     l_ship_method_code          VARCHAR2 (30);
59     l_payment_term_id           NUMBER;
60     l_org_id                    NUMBER;
61 
62     CURSOR c_qte_header_variables
63     IS
64       SELECT quote.contract_id, quote.quote_number, quote.cust_party_id, quote.cust_account_id,
65         quote.quote_version, quote.party_id, quote.resource_id,
66         quote.currency_code, quote.org_id
67       FROM aso_quote_headers_all quote
68       WHERE quote.quote_header_id = p_doc_id;
69 
70    CURSOR c_qte_payments_variable
71    IS
72       SELECT payments.cust_po_number, payments.payment_term_id
73       FROM aso_quote_headers_all quote, aso_payments payments
74       WHERE quote.quote_header_id = payments.quote_header_id
75         AND payments.quote_line_id IS NULL
76         AND quote.quote_header_id = p_doc_id;
77 
78     CURSOR c_qte_shipments_variables
79     IS
80       SELECT shipments.freight_terms_code, shipments.ship_method_code
81       FROM aso_quote_headers_all quote, aso_shipments shipments
82       WHERE quote.quote_header_id = shipments.quote_header_id
83         AND shipments.quote_line_id IS NULL
84         AND quote.quote_header_id = p_doc_id;
85 
86   BEGIN
87 
88     -- Standard call to check for call compatibility.
89     IF NOT fnd_api.compatible_api_call (
90              l_api_version,
91              p_api_version,
92              l_api_name,
93              g_pkg_name
94            )
95     THEN
96       RAISE fnd_api.g_exc_unexpected_error;
97     END IF;
98 
99     -- Initialize message list if p_init_msg_list is set to TRUE.
100     IF fnd_api.to_boolean (
101          p_init_msg_list
102        )
103     THEN
104       fnd_msg_pub.initialize;
105     END IF;
106 
107     -- Initialize API return status to SUCCESS
108     x_return_status := fnd_api.g_ret_sts_success;
109 
110     --
111     -- API body
112     --
113     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
114       aso_debug_pub.ADD (
115         'Get_Line_Variable_Values Begin',
116         1,
117         'Y'
118       );
119       aso_debug_pub.ADD (
120         'Get_Line_Variable_Values: P_API_VERSION '|| p_api_version,
121         1,
122         'Y'
123       );
124       aso_debug_pub.ADD (
125         'Get_Line_Variable_Values: P_INIT_MSG_LIST '|| p_init_msg_list,
126         1,
127         'Y'
128       );
129       aso_debug_pub.ADD (
130         'Get_Line_Variable_Values: p_doc_id '|| p_doc_id,
131         1,
132         'Y'
133       );
134     END IF;
135 
136     OPEN c_qte_header_variables ;
137     FETCH c_qte_header_variables INTO
138       l_contract_id,
139       l_quote_number,
140       l_cust_party_id,
141       l_cust_account_id,
142       l_quote_version,
143       l_party_id,
144       l_resource_id,
145       l_currency_code,
146       l_org_id;
147     CLOSE c_qte_header_variables;
148 
149     OPEN c_qte_payments_variable ;
150     FETCH c_qte_payments_variable INTO
151       l_cust_po_number,
152       l_payment_term_id;
153     CLOSE c_qte_payments_variable;
154 
155     OPEN c_qte_shipments_variables ;
156     FETCH c_qte_shipments_variables INTO
157       l_freight_terms_code,
158       l_ship_method_code;
159     CLOSE c_qte_shipments_variables;
160 
161     l_index := p_sys_var_value_tbl.FIRST;
162 
163     WHILE l_index IS NOT NULL
164     LOOP
165 
166       IF p_sys_var_value_tbl(l_index).Variable_code = G_PA_NUMBER_CODE
167         AND l_contract_id IS NOT NULL
168       THEN
169 
170         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
171           aso_debug_pub.add(
172             'Get_Line_Variable_Values assigning PA_NUMBER: ' || l_contract_id,
173             1,
174             'Y');
175         END IF;
176         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_contract_id);
177 
178       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_PA_NAME_CODE
179         AND l_contract_id IS NOT NULL
180       THEN
181 
182         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
183           aso_debug_pub.add(
184             'Get_Line_Variable_Values assigning PA_NAME: ' || l_contract_id,
185             1,
186             'Y');
187         END IF;
188         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_contract_id);
189 
190       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_QUOTE_NUMBER_CODE
191         AND l_quote_number IS NOT NULL
192       THEN
193 
194         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
195           aso_debug_pub.add(
196             'Get_Line_Variable_Values assigning QUOTE_NUMBER: ' || l_quote_number,
197             1,
198             'Y');
199         END IF;
200         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_quote_number);
201 
202       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_CUSTOMER_NAME_CODE
203         AND l_cust_party_id IS NOT NULL
204       THEN
205 
206         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
207           aso_debug_pub.add(
208             'Get_Line_Variable_Values assigning CUSTOMER_NAME: ' || l_cust_party_id,
209             1,
210             'Y');
211         END IF;
212         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_cust_party_id);
213 
214       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_CUSTOMER_NUMBER_CODE
215         AND l_cust_account_id IS NOT NULL
216       THEN
217 
218         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
219           aso_debug_pub.add(
220             'Get_Line_Variable_Values assigning CUSTOMER_NUMBER: ' || l_cust_account_id,
221             1,
222             'Y');
223         END IF;
224         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_cust_account_id);
225 
226       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_CUST_PO_NUMBER_CODE
227         AND l_cust_po_number IS NOT NULL
228       THEN
229 
230         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
231           aso_debug_pub.add(
232             'Get_Line_Variable_Values assigning CUST_PO_NUMBER: ' || l_cust_po_number,
233             1,
234             'Y');
235         END IF;
236         p_sys_var_value_tbl(l_index).Variable_value_id := l_cust_po_number;
237 
238       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_VERSION_NUMBER_CODE
239         AND l_quote_version IS NOT NULL
240       THEN
241 
242         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
243           aso_debug_pub.add(
244             'Get_Line_Variable_Values assigning VERSION_NUMBER: ' || l_quote_version,
245             1,
246             'Y');
247         END IF;
248         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_quote_version);
249 
250       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_CUST_CONTACT_NAME_CODE
251         AND l_party_id IS NOT NULL
252       THEN
253 
254         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
255           aso_debug_pub.add(
256             'Get_Line_Variable_Values assigning CUST_CONTACT_NAME: ' || l_party_id,
257             1,
258             'Y');
259         END IF;
260         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_party_id);
261 
262       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_SALESREP_NAME_CODE
263         AND l_resource_id IS NOT NULL
264       THEN
265 
266         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
267           aso_debug_pub.add(
268             'Get_Line_Variable_Values assigning SALESREP_NAME: ' || l_resource_id,
269             1,
270             'Y');
271         END IF;
272         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_resource_id);
273 
274       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_CURRENCY_CODE_CODE
275         AND l_currency_code IS NOT NULL
276       THEN
277 
278         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
279           aso_debug_pub.add(
280             'Get_Line_Variable_Values assigning CURRENCY_CODE: ' || l_currency_code,
281             1,
282             'Y');
283         END IF;
284         p_sys_var_value_tbl(l_index).Variable_value_id := l_currency_code;
285 
286       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_FREIGHT_TERMS_CODE
287         AND l_freight_terms_code IS NOT NULL
288       THEN
289 
290         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
291           aso_debug_pub.add(
292             'Get_Line_Variable_Values assigning FREIGHT_TERMS: ' || l_freight_terms_code,
293             1,
294             'Y');
295         END IF;
296         p_sys_var_value_tbl(l_index).Variable_value_id := l_freight_terms_code;
297 
298       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_SHIPPING_METHOD_CODE
299         AND l_ship_method_code IS NOT NULL
300       THEN
301 
302         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
303           aso_debug_pub.add(
304             'Get_Line_Variable_Values assigning SHIPPING_METHOD: ' || l_ship_method_code,
305             1,
306             'Y');
307         END IF;
308         p_sys_var_value_tbl(l_index).Variable_value_id := l_ship_method_code;
309 
310       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_PAYMENT_TERM_CODE
311         AND l_payment_term_id IS NOT NULL
312       THEN
313 
314         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
315           aso_debug_pub.add(
316             'Get_Line_Variable_Values assigning PAYMENT_TERM: ' || l_payment_term_id,
317             1,
318             'Y');
319         END IF;
320         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_payment_term_id);
321 
322       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_SUPPLIER_NAME_CODE
323         AND l_org_id IS NOT NULL
324       THEN
325 
326         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
327           aso_debug_pub.add(
328             'Get_Line_Variable_Values assigning SUPPLIER_NAME: ' || l_org_id,
329             1,
330             'Y');
331         END IF;
332         p_sys_var_value_tbl(l_index).Variable_value_id := TO_CHAR(l_org_id);
333 
334       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_CURRENCY_NAME_CODE
335         AND l_currency_code IS NOT NULL
336       THEN
337 
338         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
339           aso_debug_pub.add(
340             'Get_Line_Variable_Values assigning CURRENCY_NAME: ' || l_currency_code,
341             1,
342             'Y');
343         END IF;
344         p_sys_var_value_tbl(l_index).Variable_value_id := l_currency_code;
345 
346       ELSIF p_sys_var_value_tbl(l_index).Variable_code = G_CURRENCY_SYMBOL_CODE
347         AND l_currency_code IS NOT NULL
348       THEN
349 
350         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
351           aso_debug_pub.add(
352             'Get_Line_Variable_Values assigning CURRENCY_SYMBOL: ' || l_currency_code,
353             1,
354             'Y');
355         END IF;
356         p_sys_var_value_tbl(l_index).Variable_value_id := l_currency_code;
357 
358       END IF;
359 
363     --
360       l_index := p_sys_var_value_tbl.next(l_index);
361     END LOOP;
362 
364     -- End of API body.
365     --
366 
367     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
368       aso_debug_pub.add(
369         'Get_Line_Variable_Values End ',
370         1,
371         'Y');
372     END IF;
373 
374     -- Standard call to get message count and if count is 1, get message info.
375     fnd_msg_pub.count_and_get (
376       p_count                      => x_msg_count,
377       p_data                       => x_msg_data
378     );
379 
380   END Get_Article_Variable_Values;
381 
382   PROCEDURE Get_Line_Variable_Values (
383     p_api_version               IN        NUMBER,
384     p_init_msg_list             IN        VARCHAR2 := fnd_api.g_false,
385     x_return_status             OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
386     x_msg_count                 OUT NOCOPY /* file.sql.39 change */       NUMBER,
387     x_msg_data                  OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
388     p_doc_id                    IN        NUMBER,
389     p_variables_tbl             IN        OKC_TERMS_UTIL_GRP.sys_var_value_tbl_type,
390     x_line_var_value_tbl        OUT NOCOPY /* file.sql.39 change */       OKC_TERMS_UTIL_GRP.item_dtl_tbl
391   ) IS
392 
393     l_api_version               NUMBER          := 1.0;
394     l_api_name                  VARCHAR2 (50)   := 'Get_Line_Variable_Values';
395     l_index                     BINARY_INTEGER;
396     TYPE l_table_type           is table of varchar2(2000);
397     l_table                     l_table_type;
398 
399   BEGIN
400 
401     -- Standard call to check for call compatibility.
402     IF NOT fnd_api.compatible_api_call (
403              l_api_version,
404              p_api_version,
405              l_api_name,
406              g_pkg_name
407            )
408     THEN
409       RAISE fnd_api.g_exc_unexpected_error;
410     END IF;
411 
412     -- Initialize message list if p_init_msg_list is set to TRUE.
413     IF fnd_api.to_boolean (
414          p_init_msg_list
415        )
416     THEN
417       fnd_msg_pub.initialize;
418     END IF;
419 
420     -- Initialize API return status to SUCCESS
421     x_return_status := fnd_api.g_ret_sts_success;
422 
423     --
424     -- API body
425     --
426     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
427       aso_debug_pub.ADD (
428         'Get_Line_Variable_Values Begin',
429         1,
430         'Y'
431       );
432       aso_debug_pub.ADD (
433         'Get_Line_Variable_Values: P_API_VERSION '|| p_api_version,
434         1,
435         'Y'
436       );
437       aso_debug_pub.ADD (
438         'Get_Line_Variable_Values: P_INIT_MSG_LIST '|| p_init_msg_list,
439         1,
440         'Y'
441       );
442       aso_debug_pub.ADD (
443         'Get_Line_Variable_Values: p_doc_id '|| p_doc_id,
444         1,
445         'Y'
446       );
447     END IF;
448 
449     l_index := p_variables_tbl.FIRST;
450 
451     WHILE l_index IS NOT NULL
452     LOOP
453 
454       IF p_variables_tbl(l_index).Variable_code = G_ITEMS_CODE
455       THEN
456 
457         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
458           aso_debug_pub.ADD (
459             'Get_Line_Variable_Values: bulk collecting items',
460             1,
461             'Y'
462           );
463         END IF;
464 
465         SELECT DISTINCT Segment1
466         BULK COLLECT INTO x_line_var_value_tbl.item
467         FROM Mtl_System_Items_b items, Aso_Quote_Lines_All lines
468         WHERE lines.inventory_item_id = items.INVENTORY_ITEM_ID
469           AND lines.organization_id = items.organization_id
470           AND lines.LINE_CATEGORY_CODE = 'ORDER'
471           AND lines.quote_header_id = p_doc_id;
472 
473       ELSIF p_variables_tbl(l_index).Variable_code = G_ITEM_CATEGORIES_CODE
474       THEN
475 
476         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
477           aso_debug_pub.ADD (
478             'Get_Line_Variable_Values: bulk collecting items categories',
479             1,
480             'Y'
481           );
482         END IF;
483 
484         SELECT DISTINCT Category_Concat_Segs
485         BULK COLLECT INTO x_line_var_value_tbl.category
486         FROM Mtl_Item_Categories mic, Aso_Quote_Lines_All lines, Mtl_Categories_V cats
487         WHERE lines.inventory_item_id = mic.INVENTORY_ITEM_ID
488           AND mic.category_id = cats.category_id
489           AND mic.organization_id = lines.organization_id
490           AND mic. category_set_id =
491             (SELECT nvl(FND_PROFILE.VALUE('ASO_CATEGORY_SET'), sets.category_set_id )
492               FROM Mtl_Default_Category_Sets sets
493               WHERE functional_area_id = 7)
494           AND lines.LINE_CATEGORY_CODE = 'ORDER'
495           AND lines.quote_header_id = p_doc_id;
496 
497       END IF;
498 
499       l_index := p_variables_tbl.next(l_index);
500     END LOOP;
501 
502     --
503     -- End of API body.
504     --
505 
506     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
507       aso_debug_pub.add(
508         'Get_Line_Variable_Values End ',
509         1,
510         'Y');
511     END IF;
512 
513     -- Standard call to get message count and if count is 1, get message info.
514     fnd_msg_pub.count_and_get (
515       p_count                      => x_msg_count,
516       p_data                       => x_msg_data
517     );
518 
519   END Get_Line_Variable_Values;
520 
521   FUNCTION OK_To_Commit (
522     p_api_version               IN        NUMBER,
523     p_init_msg_list             IN        VARCHAR2 := fnd_api.g_false,
524     x_return_status             OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
525     x_msg_count                 OUT NOCOPY /* file.sql.39 change */       NUMBER,
526     x_msg_data                  OUT NOCOPY /* file.sql.39 change */       VARCHAR2,
527     p_doc_id                    IN        NUMBER,
528     p_doc_type                  IN        VARCHAR2 := 'QUOTE',
529     p_validation_string         IN        VARCHAR2
530   ) RETURN VARCHAR2 IS
531 
532     l_api_version               NUMBER          := 1.0;
533     l_api_name                  VARCHAR2 (50)   := 'OK_To_Commit';
534     l_max_version_flag          VARCHAR2 (1);
535     l_update_allowed            VARCHAR2 (1);
536     l_quote_version             NUMBER;
537     l_quote_expiration_date     DATE;
538     l_price_request_id          NUMBER;
539     l_return                    VARCHAR2 (1)    := FND_API.G_TRUE;
540 
541     l_status_override	        VARCHAR2(1); -- bug 8811226
542 
543     CURSOR c_quote_header
544     IS
545       SELECT status.update_allowed_flag, quote.quote_expiration_date,
546         quote.max_version_flag, quote.price_request_id
547       FROM aso_quote_headers_all quote, aso_quote_statuses_b status
548       WHERE quote.quote_header_id = p_doc_id
549         AND quote.quote_status_id = status.quote_status_id;
550 
551   BEGIN
552 
553     -- Standard call to check for call compatibility.
554     IF NOT fnd_api.compatible_api_call (
555              l_api_version,
556              p_api_version,
557              l_api_name,
558              g_pkg_name
559            )
560     THEN
561       RAISE fnd_api.g_exc_unexpected_error;
562     END IF;
563 
564     -- Initialize message list if p_init_msg_list is set to TRUE.
565     IF fnd_api.to_boolean (
566          p_init_msg_list
567        )
568     THEN
569       fnd_msg_pub.initialize;
570     END IF;
571 
572     -- Initialize API return status to SUCCESS
573     x_return_status := fnd_api.g_ret_sts_success;
574 
575     --
576     -- API body
577     --
578     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
579       aso_debug_pub.ADD (
580         'OK_To_Commit Begin',
581         1,
582         'Y'
583       );
584       aso_debug_pub.ADD (
585         'OK_To_Commit: P_API_VERSION '|| p_api_version,
586         1,
587         'Y'
588       );
589       aso_debug_pub.ADD (
590         'OK_To_Commit: P_INIT_MSG_LIST '|| p_init_msg_list,
591         1,
592         'Y'
593       );
594       aso_debug_pub.ADD (
595         'OK_To_Commit: p_doc_id '|| p_doc_id,
596         1,
597         'Y'
598       );
599       aso_debug_pub.ADD (
600         'OK_To_Commit: p_doc_type '|| p_doc_type,
601         1,
602         'Y'
603       );
604       aso_debug_pub.ADD (
605         'OK_To_Commit: p_validation_string '|| p_validation_string,
606         1,
607         'Y'
608       );
609     END IF;
610 
611     IF p_doc_type <> 'QUOTE'
612     THEN
613       l_return  := FND_API.G_FALSE;
614     ELSE
615 
616       OPEN c_quote_header ;
617       FETCH c_quote_header INTO l_update_allowed, l_quote_expiration_date,
618         l_max_version_flag, l_price_request_id;
619       IF (c_quote_header%NOTFOUND)
620       THEN
621         l_return  := FND_API.G_FALSE;
622       END IF;
623       CLOSE c_quote_header;
624 
625     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
626       aso_debug_pub.ADD (
627         'OK_To_Commit: l_update_allowed '|| l_update_allowed,
628         1,
629         'Y'
630       );
631       aso_debug_pub.ADD (
632         'OK_To_Commit: l_quote_expiration_date '|| l_quote_expiration_date,
633         1,
634         'Y'
635       );
636       aso_debug_pub.ADD (
637         'OK_To_Commit: l_max_version_flag '|| l_max_version_flag,
638         1,
639         'Y'
640       );
641       aso_debug_pub.ADD (
642         'OK_To_Commit: l_price_request_id '|| l_price_request_id,
643         1,
644         'Y'
645       );
646     END IF;
647 
648 
649      -- bug 8811226
650      l_status_override := nvl(fnd_profile.value('ASO_STATUS_OVERRIDE'),'N');
651 
652      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
653       aso_debug_pub.ADD (
654         'OK_To_Commit: l_status_override '|| l_status_override,
655         1,
656         'Y'
657       );
658 
659      END IF;
660      If l_status_override = 'Y' then
661 	l_update_allowed := 'Y';
662      END IF;
663 
664 
665 
666       IF (trunc(sysdate) > trunc(l_quote_expiration_date))
667         OR l_update_allowed = 'N'
668         OR l_max_version_flag = 'N'
669         OR l_price_request_id IS NOT NULL
670       THEN
671      	    l_return  := FND_API.G_FALSE;
672       END IF;
673 
674     END IF;
675     --
676     -- End of API body.
677     --
678 
679     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
680       aso_debug_pub.add(
681         'OK_To_Commit End ',
682         1,
683         'Y');
684     END IF;
685 
686     -- Standard call to get message count and if count is 1, get message info.
687     fnd_msg_pub.count_and_get (
688       p_count                      => x_msg_count,
689       p_data                       => x_msg_data
690     );
691   RETURN l_return;
692   END OK_To_Commit;
693 
694 END ASO_Contract_Terms_INT;