DBA Data[Home] [Help]

PACKAGE BODY: APPS.ICX_CAT_POPULATE_STATUS_PVT

Source


1 PACKAGE BODY ICX_CAT_POPULATE_STATUS_PVT AS
2 /* $Header: ICXVPPSB.pls 120.6 2006/10/06 02:44:24 rwidjaja noship $*/
3 
4 FUNCTION getCategoryStatus
5 (       p_end_date_active               IN              DATE            ,
6         p_disable_date                  IN              DATE            ,
7         p_system_date                   IN              DATE
8 )
9   RETURN NUMBER
10 IS
11   l_ret_status  PLS_INTEGER;
12   l_err_loc PLS_INTEGER;
13 BEGIN
14   l_err_loc := 100;
15   l_ret_status := INVALID_FOR_POPULATE;
16 
17   l_err_loc := 200;
18 
19   IF (p_system_date < p_end_date_active AND
20       p_system_date < p_disable_date)
21   THEN
22     l_err_loc := 300;
23     l_ret_status := VALID_FOR_POPULATE;
24   END IF;
25 
26   l_err_loc := 400;
27 
28   RETURN l_ret_status;
29 EXCEPTION
30   WHEN OTHERS THEN
31     l_err_loc := 500;
32     RETURN l_ret_status;
33 END getCategoryStatus;
34 
35 FUNCTION getBPALineStatus
36 (       p_BPA_line_status_rec           IN              g_BPA_line_status_rec_type
37 )
38   RETURN NUMBER
39 IS
40   l_ret_status               PLS_INTEGER;
41   l_err_loc PLS_INTEGER;
42 BEGIN
43   l_err_loc := 100;
44   l_ret_status := INVALID_FOR_POPULATE;
45 
46   l_err_loc := 200;
47 
48   IF (p_BPA_line_status_rec.approved_date        IS NOT NULL                            AND
49       p_BPA_line_status_rec.authorization_status NOT IN ('REJECTED', 'INCOMPLETE')      AND
50       p_BPA_line_status_rec.frozen_flag          = 'N'                                  AND
51       p_BPA_line_status_rec.hdr_cancel_flag      = 'N'                                  AND
52       p_BPA_line_status_rec.line_cancel_flag     = 'N'                                  AND
53       p_BPA_line_status_rec.hdr_closed_code      NOT IN ('CLOSED', 'FINALLY CLOSED')    AND
54       p_BPA_line_status_rec.line_closed_code     NOT IN ('CLOSED', 'FINALLY CLOSED')    AND
55       p_BPA_line_status_rec.end_date             >= p_BPA_line_status_rec.system_date   AND
56       p_BPA_line_status_rec.expiration_date      >= p_BPA_line_status_rec.system_date )
57   THEN
58     l_err_loc := 300;
59     l_ret_status := VALID_FOR_POPULATE;
60   END IF;
61 
62   l_err_loc := 400;
63 
64   RETURN l_ret_status;
65 EXCEPTION
66   WHEN OTHERS THEN
67     l_err_loc := 500;
68     RETURN l_ret_status;
69 END getBPALineStatus;
70 
71 FUNCTION getQuoteLineStatus
72 (       p_po_line_id                    IN              NUMBER
73 )
74   RETURN NUMBER
75 IS
76   l_ret_status               PLS_INTEGER;
77   l_err_loc PLS_INTEGER;
78 BEGIN
79   l_err_loc := 100;
80   l_ret_status := INVALID_FOR_POPULATE;
81 
82   l_err_loc := 200;
83 
84   /* Comments on the Quotation Line status
85   1. status_lookup_code = 'A'
86   -- Checks if the quotation status is 'Active'.
87   -- Quotations can be created in the following status from the form:
88   -- In Process  => I
89   -- Closed      => C
90   -- Active      => A
91   2. ph.quotation_class_code = 'CATALOG'
92   -- Check if the quotation type is 'Catalog Quotation' / 'Standard Quotation'.
93   -- Following types of Quotations can be created from the form:
94   -- Bid Quotation      => BID
95   -- Catalog Quotation  => CATALOG
96   -- Standard Quotation => CATALOG
97   3. Just check for the end date in po_line_locations_all.  Start_date will be checked by the search code
98   4. pqa.approval_type IN ('ALL ORDERS','REQUISITIONS') changed to pqa.approval_type IS NOT NULL to accomodate the SIC rules
99   5. Just check for the end date in po_quotation_approvals_all.  Start_date will be checked by the search code
100   6. Just check for the end date in po_headers_all.  Start_date will be checked by the search code
101   */
102 
103   SELECT VALID_FOR_POPULATE
104   INTO l_ret_status
105   FROM po_headers_all ph,
106        po_lines_all pl
107   WHERE pl.po_line_id = p_po_line_id
108   AND ph.po_header_id = pl.po_header_id
109   AND ph.type_lookup_code = 'QUOTATION'
110   AND ph.status_lookup_code = 'A'
111   AND ph.quotation_class_code = 'CATALOG'
112   AND (NVL(ph.approval_required_flag,'N') = 'N' OR
113        (ph.approval_required_flag ='Y' AND
114         EXISTS (SELECT 'current approved effective price break'
115                 FROM po_line_locations_all pll,
116                      po_quotation_approvals_all pqa
117                   WHERE pl.po_line_id = pll.po_line_id
118                   AND SYSDATE <= NVL(pll.end_date, SYSDATE+1)
119                   AND pqa.line_location_id = pll.line_location_id
120                   AND pqa.approval_type IS NOT NULL
121                   AND SYSDATE <= NVL(pqa.end_date_active, SYSDATE+1) )))
122   AND TRUNC(SYSDATE) <= NVL(TRUNC(ph.end_date), TRUNC(SYSDATE + 1));
123 
124   l_err_loc := 300;
125 
126   RETURN l_ret_status;
127 EXCEPTION
128   WHEN NO_DATA_FOUND THEN
129     l_err_loc := 400;
130     RETURN l_ret_status;
131 END getQuoteLineStatus;
132 
133 FUNCTION getGlobalAgreementStatus
134 (       p_enabled_flag                  IN              VARCHAR2
135 )
136   RETURN NUMBER
137 IS
138   l_ret_status PLS_INTEGER;
139   l_err_loc PLS_INTEGER;
140 BEGIN
141   l_err_loc := 100;
142   l_ret_status := VALID_FOR_POPULATE;
143 
144   l_err_loc := 200;
145 
146   IF NVL(p_enabled_flag, 'N') = 'N' THEN
147     l_err_loc := 300;
148     l_ret_status := GLOBAL_BLANKET_DISABLED;
149   END IF;
150 
151   l_err_loc := 400;
152 
153   -- Following validations for master item
154   -- in purchasing org, enabled org and owning org on a GBPA
155   -- will be done by PO
156   -- 1. purchasing_enabled_flag
157   -- 2. outside_operation_flag
158   -- 3. UOM code/UOM Class
159 
160   RETURN l_ret_status;
161 END getGlobalAgreementStatus;
162 
163 FUNCTION getTemplateLineStatus
164 (       p_inactive_date                 IN              DATE            ,
165         p_contract_line_id	        IN              NUMBER          ,
166         p_BPA_line_status_rec           IN              g_BPA_line_status_rec_type
167 )
168   RETURN NUMBER
169 IS
170   l_ret_status          PLS_INTEGER;
171   l_BPA_line_status_rec g_BPA_line_status_rec_type;
172   l_err_loc PLS_INTEGER;
173 BEGIN
174   l_err_loc := 100;
175   l_ret_status := VALID_FOR_POPULATE;
176 
177   l_err_loc := 200;
178 
179   IF NVL(p_inactive_date, SYSDATE+1) <= SYSDATE THEN
180     l_err_loc := 300;
181     l_ret_status := INACTIVE_TEMPLATE;
182   ELSE
183     l_err_loc := 400;
184     IF (p_contract_line_id IS NOT NULL AND
185         p_contract_line_id <> NULL_NUMBER)
186     THEN
187       l_err_loc := 500;
188       l_ret_status := getBPALineStatus(p_BPA_line_status_rec);
189       IF l_ret_status = VALID_FOR_POPULATE THEN
190         l_err_loc := 600;
191         l_ret_status := VALID_FOR_POPULATE;
192       ELSE
193         l_err_loc := 700;
194         l_ret_status := TEMPLATE_INVALID_BLANKET_LINE;
195       END IF;
196     END IF;
197   END IF;
198 
199   l_err_loc := 800;
200 
201   RETURN l_ret_status;
202 END getTemplateLineStatus;
203 
204 PROCEDURE getMasterItemStatusAndType
205 (       p_internal_order_enabled_flag   IN              VARCHAR2        ,
206         p_outside_operation_flag        IN              VARCHAR2        ,
207         p_item_price                    IN              NUMBER          ,
208         p_item_status                   OUT NOCOPY      NUMBER          ,
209         p_item_type                     OUT NOCOPY      VARCHAR2
210 )
211 IS
212   l_err_loc             PLS_INTEGER;
213   l_is_purchasable      BOOLEAN;
214   l_is_internal         BOOLEAN;
215 BEGIN
216   l_err_loc := 100;
217   p_item_status := VALID_FOR_POPULATE;
218 
219   -- item price is null if purchasing_enabled_flag is not 'Y'. We check this in the cursor,
220   -- so we do not need to check for the purchasing_enabled_flag here.
221   IF (p_item_price IS NOT NULL AND
222       NVL(p_outside_operation_flag, 'N') <> 'Y')
223   THEN
224     l_err_loc := 200;
225     l_is_purchasable := TRUE;
226   ELSE
227     l_err_loc := 300;
228     l_is_purchasable := FALSE;
229   END IF;
230 
231   IF (NVL(p_internal_order_enabled_flag, 'N') = 'Y') THEN
232     l_is_internal := TRUE;
233   ELSE
234     l_is_internal := FALSE;
235   END IF;
236 
237   l_err_loc := 500;
238   IF (l_is_purchasable AND l_is_internal) THEN
239     p_item_type := ICX_CAT_UTIL_PVT.g_both_item_type;
240   ELSE
241     IF (l_is_purchasable) THEN
242       p_item_type := ICX_CAT_UTIL_PVT.g_purchase_item_type;
243     ELSIF (l_is_internal) THEN
244       p_item_type := ICX_CAT_UTIL_PVT.g_internal_item_type;
245     ELSE
246       p_item_type := null;
247       p_item_status := INVALID_FOR_POPULATE;
248     END IF;
249   END IF;
250 
251 END getMasterItemStatusAndType;
252 
253 
254 END ICX_CAT_POPULATE_STATUS_PVT;