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 2005/06/29 12:33:32 appldev 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 
360       l_index := p_sys_var_value_tbl.next(l_index);
361     END LOOP;
362 
363     --
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';
398 
395     l_index                     BINARY_INTEGER;
396     TYPE l_table_type           is table of varchar2(2000);
397     l_table                     l_table_type;
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     CURSOR c_quote_header
542     IS
543       SELECT status.update_allowed_flag, quote.quote_expiration_date,
544         quote.max_version_flag, quote.price_request_id
545       FROM aso_quote_headers_all quote, aso_quote_statuses_b status
546       WHERE quote.quote_header_id = p_doc_id
547         AND quote.quote_status_id = status.quote_status_id;
548 
549   BEGIN
550 
551     -- Standard call to check for call compatibility.
552     IF NOT fnd_api.compatible_api_call (
553              l_api_version,
554              p_api_version,
555              l_api_name,
556              g_pkg_name
557            )
558     THEN
559       RAISE fnd_api.g_exc_unexpected_error;
560     END IF;
561 
562     -- Initialize message list if p_init_msg_list is set to TRUE.
563     IF fnd_api.to_boolean (
564          p_init_msg_list
565        )
566     THEN
567       fnd_msg_pub.initialize;
568     END IF;
569 
570     -- Initialize API return status to SUCCESS
571     x_return_status := fnd_api.g_ret_sts_success;
575     --
572 
573     --
574     -- API body
576     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
577       aso_debug_pub.ADD (
578         'OK_To_Commit Begin',
579         1,
580         'Y'
581       );
582       aso_debug_pub.ADD (
583         'OK_To_Commit: P_API_VERSION '|| p_api_version,
584         1,
585         'Y'
586       );
587       aso_debug_pub.ADD (
588         'OK_To_Commit: P_INIT_MSG_LIST '|| p_init_msg_list,
589         1,
590         'Y'
591       );
592       aso_debug_pub.ADD (
593         'OK_To_Commit: p_doc_id '|| p_doc_id,
594         1,
595         'Y'
596       );
597       aso_debug_pub.ADD (
598         'OK_To_Commit: p_doc_type '|| p_doc_type,
599         1,
600         'Y'
601       );
602       aso_debug_pub.ADD (
603         'OK_To_Commit: p_validation_string '|| p_validation_string,
604         1,
605         'Y'
606       );
607     END IF;
608 
609     IF p_doc_type <> 'QUOTE'
610     THEN
611       l_return  := FND_API.G_FALSE;
612     ELSE
613 
614       OPEN c_quote_header ;
615       FETCH c_quote_header INTO l_update_allowed, l_quote_expiration_date,
616         l_max_version_flag, l_price_request_id;
617       IF (c_quote_header%NOTFOUND)
618       THEN
619         l_return  := FND_API.G_FALSE;
620       END IF;
621       CLOSE c_quote_header;
622 
623     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
624       aso_debug_pub.ADD (
625         'OK_To_Commit: l_update_allowed '|| l_update_allowed,
626         1,
627         'Y'
628       );
629       aso_debug_pub.ADD (
630         'OK_To_Commit: l_quote_expiration_date '|| l_quote_expiration_date,
631         1,
632         'Y'
633       );
634       aso_debug_pub.ADD (
635         'OK_To_Commit: l_max_version_flag '|| l_max_version_flag,
636         1,
637         'Y'
638       );
639       aso_debug_pub.ADD (
640         'OK_To_Commit: l_price_request_id '|| l_price_request_id,
641         1,
642         'Y'
643       );
644     END IF;
645 
646 
647       IF (trunc(sysdate) > trunc(l_quote_expiration_date))
648         OR l_update_allowed = 'N'
649         OR l_max_version_flag = 'N'
650         OR l_price_request_id IS NOT NULL
651       THEN
652      	    l_return  := FND_API.G_FALSE;
653       END IF;
654 
655     END IF;
656     --
657     -- End of API body.
658     --
659 
660     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
661       aso_debug_pub.add(
662         'OK_To_Commit End ',
663         1,
664         'Y');
665     END IF;
666 
667     -- Standard call to get message count and if count is 1, get message info.
668     fnd_msg_pub.count_and_get (
669       p_count                      => x_msg_count,
670       p_data                       => x_msg_data
671     );
672   RETURN l_return;
673   END OK_To_Commit;
674 
675 END ASO_Contract_Terms_INT;