DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_CATEGORIES_SV1

Source


1 PACKAGE BODY PO_CATEGORIES_SV1 AS
2 /* $Header: POXPICTB.pls 120.0.12000000.1 2007/01/16 23:03:11 appldev ship $ */
3 
4 /*================================================================
5 
6   FUNCTION NAME: 	val_item_category_id()
7 
8 ==================================================================*/
9  FUNCTION val_item_category_id(x_category_id      IN NUMBER,
10                                x_item_id          IN NUMBER,
11                                x_organization_id  IN NUMBER) RETURN BOOLEAN
12  IS
13 
14    x_progress   varchar2(3) := null;
15    x_temp       binary_integer := 0;
16 
17  BEGIN
18    x_progress := '010';
19 
20    /* first find out the default category_set_id for function_area of
21       "PURCHASING", then validate if X_category_id belong to the X_item
22     */
23 
24    SELECT count(*)
25      INTO x_temp
26      FROM mtl_item_categories mic,
27           mtl_categories mcs
28     WHERE mic.category_id = mcs.category_id
29       AND mic.category_set_id = (SELECT category_set_id
30                                    FROM mtl_default_category_sets
31                                   WHERE functional_area_id = 2 /* 2=purchasing*/)
32       AND mic.category_id = x_category_id
33       AND mic.inventory_item_id = x_item_id
34       AND mic.organization_id = x_organization_id
35       AND sysdate < nvl(mcs.disable_date, sysdate+1)
36       AND mcs.enabled_flag = 'Y';
37 
38    IF x_temp = 0 THEN
39       RETURN FALSE;   /* validation fails */
40    ELSE
41       RETURN TRUE;    /* validation succeeds */
42    END IF;
43 
44  EXCEPTION
45    WHEN others THEN
46         po_message_s.sql_error
47         ('val_item_category_id', x_progress, sqlcode);
48         raise;
49  END val_item_category_id;
50 
51 /*================================================================
52 
53   FUNCTION NAME: 	derive_category_id()
54 
55 ==================================================================*/
56 FUNCTION  derive_category_id(X_category IN VARCHAR2)
57 return NUMBER IS
58 
59 X_progress        varchar2(3)     := NULL;
60 X_category_id_v   number          := NULL;
61 ret_code          NUMBER         :=  0;
62 x_category_set_id number;
63 x_err_text        VARCHAR2(2000);
64 x_structure_id    number;
65 x_category_id     number;
66 
67 BEGIN
68 
69  X_progress := '010';
70 
71  /* bug 609728 added join to mcs and mdcs to get the default category_set and structure_id */
72 /*Bug1730946
73   Bcos of a performance issue  splitting the below query
74   and calling the BOM api to achieve the same functionality.
75 
76   get the category_id from mtl_categories_kfv based on x_category
77  SELECT category_id
78    INTO X_category_id_v
79    FROM mtl_categories_kfv mck, mtl_category_sets mcs, mtl_default_category_sets mdcs
80   WHERE concatenated_segments = X_category
81     AND mck.structure_id = mcs.structure_id
82     AND mcs.category_set_id = mdcs.category_set_id
83     AND mdcs.functional_area_id = 2;
84 BUG 1760539
85   THE PERFORMANCE WITH THE BOM API WAS NOT GOOD EITHER AND SO
86   USING THE FLEX API INSTEAD
87    ret_code := INVPUOPI.mtl_pr_parse_flex_name
88 
89 */
90    select structure_id
91    into   x_structure_id
92    from   mtl_default_category_sets mdcs,mtl_category_sets_b mcsb
93    where  mdcs.functional_area_id = 2  /* 2 = Purchasing */
94    and    mdcs.category_set_id = mcsb.category_set_id;
95 
96   ret_code := FND_FLEX_EXT.GET_CCID('INV', 'MCAT', x_structure_id, to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),x_category);
97 
98             IF (( ret_code is not null) and (ret_code <> 0 )) THEN
99                X_category_id_v := ret_code;
100             ELSE
101                X_category_id_v := null;
102             END IF;
103 
104 
105  RETURN X_category_id_v;
106 
107 EXCEPTION
108    When no_data_found then
109         RETURN NULL;
110    When others then
111         po_message_s.sql_error('derive_category_id',X_progress, sqlcode);
112         raise;
113 
114 END derive_category_id;
115 
116 /*================================================================
117 
118   FUNCTION NAME: 	get_default_purch_category_id()
119 
120 ==================================================================*/
121 FUNCTION  get_default_purch_category_id return NUMBER IS
122 
123    X_progress     varchar2(3)     := NULL;
124    X_category_id  number;
125 
126 BEGIN
127 
128    X_progress := '010';
129    /* get the default category_id */
130 
131    SELECT	 mcs.default_category_id
132    INTO		 X_category_id
133    FROM		 mtl_category_sets mcs,
134 		 mtl_default_category_sets mdcs
135    WHERE	 mdcs.functional_area_id = 2  /* 2= purchasing */
136    AND		 mdcs.category_set_id = mcs.category_set_id;
137 
138    RETURN X_category_id;
139 
140 EXCEPTION
141    When no_data_found then
142         RETURN NULL;
143    When others then
144         po_message_s.sql_error('get_default_purch_category_id',
145                     X_progress, sqlcode);
146         raise;
147 
148 END get_default_purch_category_id;
149 
150 /*================================================================
151 
152   FUNCTION NAME:        get_default_purch_category_id()
153 
154 ==================================================================*/
155  FUNCTION val_category_id(x_category_id      IN NUMBER)
156  RETURN BOOLEAN IS
157 
158    x_progress   varchar2(3) := null;
159    x_temp       binary_integer := 0;
160 -- Bug# 3129778
161    x_validate_flag   mtl_category_sets_v.validate_flag%TYPE;
162 
163  BEGIN
164    x_progress := '010';
165 
166    /** validate and make sure x_category_id is a valid category
167    within the default category set for Purchasing. **/
168    /* Bug# 3129778,  We will check if the Purchasing Category set
169    has 'Validate flag' ON. If Yes, we will validate the Category
170    to exist in the 'Valid Category List'. If No, we will just validate
171    if the category is Enable and Active */
172 
173    BEGIN
174      SELECT validate_flag
175      INTO x_validate_flag
176      FROM mtl_category_sets_v
177      WHERE category_set_id=
178                 (SELECT   category_set_id
179                  FROM     mtl_default_category_sets
180                  WHERE    functional_area_id = 2   /*** purchasing ***/
181                 ) ;
182    EXCEPTION
183      when others then
184          NULL;
185    END;
186 
187   IF x_validate_flag = 'Y' then
188 
189      SELECT count(*)
190      INTO x_temp
191      FROM mtl_categories_vl mcs,
192           mtl_category_set_valid_cats mcsvc
193     WHERE mcs.category_id = x_category_id
194       AND mcs.category_id = mcsvc.category_id
195       AND mcsvc.category_set_id =
196                 (SELECT   category_set_id
197                  FROM     mtl_default_category_sets
198                  WHERE    functional_area_id = 2   /*** purchasing ***/
199                 )
200       AND sysdate < nvl(mcs.disable_date, sysdate+1)
201       AND mcs.enabled_flag = 'Y';
202 
203       IF x_temp = 0 THEN
204           RETURN FALSE;   /* validation fails */
205       ELSE
206           RETURN TRUE;    /* validation succeeds */
207       END IF;
208 
209    ELSE
210 
211      SELECT count(*)
212      INTO x_temp
213      FROM mtl_categories_vl mcs
214     WHERE mcs.category_id = x_category_id
215       AND sysdate < nvl(mcs.disable_date, sysdate+1)
216       AND mcs.enabled_flag = 'Y';
217 
218       IF x_temp = 0 THEN
219           RETURN FALSE;   /* validation fails */
220       ELSE
221           RETURN TRUE;    /* validation succeeds */
222       END IF;
223 
224    END IF;
225 
226  EXCEPTION
227    WHEN others THEN
228         po_message_s.sql_error
229         ('val_category_id', x_progress, sqlcode);
230         raise;
231  END val_category_id;
232 
233 END PO_CATEGORIES_SV1;