1 package body gms_acc_gen_api as
2 /* $Header: gmsacgnb.pls 120.2 2007/02/06 09:47:27 rshaik ship $ */
3
4
5 -- ================================================================
6 -- Get award_id for Expenditures OR encumbrance items.
7 -- ================================================================
8 FUNCTION GET_AWARD_ID (x_exp_item_id in NUMBER
9 ,x_doc_type IN VARCHAR2
10 ,x_cdl_line_num in NUMBER
11 ,x_err_code out NOCOPY NUMBER
12 ,x_err_msg out NOCOPY varchar2)
13 return NUMBER is
14
15 x_award_id NUMBER ;
16
17
18 CURSOR C_exp_award is
19 SELECT award_id
20 FROM gms_award_distributions
21 WHERE document_type = x_doc_type
22 and expenditure_item_id = x_exp_item_id
23 and nvl(cdl_line_num,1) = NVL(x_cdl_line_num,1)
24 and ADL_STATUS = 'A' ;
25
26 BEGIN
27 x_err_code := 0;
28 x_err_msg := '';
29 x_award_id := 0 ;
30
31 IF x_doc_type not in ( 'EXP', 'ENC' ) THEN
32 x_err_code := 1 ;
33 x_err_msg := 'DOC_TYPE_NOT_EXP_ENC' ;
34 return 0 ;
35 END IF ;
36
37 open C_exp_award ;
38
39 fetch C_exp_award into x_award_id ;
40
41 IF C_exp_award%NOTFOUND THEN
42 x_award_id := -1 ;
43 x_err_code := 1 ;
44 x_err_msg := 'NO_DATA_FOUND' ;
45 END IF ;
46
47 close C_exp_award ;
48
49 IF x_award_id = -1 THEN
50 x_award_id := 0 ;
51 END IF ;
52
53 return x_award_id ;
54
55 EXCEPTION
56 When OTHERS THEN
57 x_err_code := 1;
58
59 IF x_err_msg = '' THEN
60 x_err_msg := 'WHEN-OTHERS-EXCEPTION';
61 END IF ;
62
63 IF C_exp_award%ISOPEN THEN
64 CLOSE C_exp_award ;
65 END IF ;
66
67 app_exception.raise_exception;
68 END get_award_id ;
69
70
71 -- ============================================================
72 -- Get award_id for passed award_set_id or Default award_id
73 -- depending on award_distribution is enabled
74 -- ============================================================
75 FUNCTION GET_AWARD_ID (x_award_set_id in NUMBER
76 ,x_attr_award_id in VARCHAR2
77 ,x_document_type in VARCHAR2
78 ,x_err_code out NOCOPY NUMBER
79 ,x_err_msg out NOCOPY varchar2)
80 return NUMBER is
81
82 -- Bug 2930402 fix : The cursor below is not required.
83 cursor get_award_id_w_doc_type (p_award_set_id in NUMBER, p_document_type in varchar2) is
84 select award_id
85 from gms_award_distributions
86 where award_set_id = p_award_set_id
87 and document_type = p_document_type
88 and adl_status = 'A'
89 and adl_line_num = 1;
90
91 cursor get_award_id_wo_doc_type (p_award_set_id in NUMBER) is
92 select award_id
93 from gms_award_distributions
94 where award_set_id = p_award_set_id
95 -- and adl_status = 'A' -- Bug 2930402 fix.
96 and adl_line_num = 1;
97
98 cursor get_default_dist_award_id is
99 select default_dist_award_id
100 from gms_implementations;
101
102 l_award_id NUMBER;
103 x_default_dist_award_id NUMBER;
104
105 BEGIN
106 x_err_code := 0;
107 x_err_msg := '';
108
109 -- if the first 8 characters of p_attr_award_id is 'SSP-GMS:' then
110 -- anything that follows is the award_id and is coming from SSP.
111
112 open get_default_dist_award_id;
113 fetch get_default_dist_award_id into x_default_dist_award_id;
114 close get_default_dist_award_id;
115
116 if x_award_set_id = x_default_dist_award_id THEN
117 return x_award_set_id ;
118 end if;
119
120 /* Bug 2930402 fix..following is not required.
121
122 if substr(x_attr_award_id,1,8) = 'SSP-GMS:' then
123 return substr(x_attr_award_id,9);
124 end if;
125
126 */
127
128 if x_award_set_id is NULL then
129 x_err_code := 1;
130 x_err_msg := 'GMS_SSP_AWARD_SET_ID_NULL';
131 app_exception.raise_exception;
132 end if;
133
134 open get_award_id_wo_doc_type (x_award_set_id);
135 fetch get_award_id_wo_doc_type into l_award_id;
136
137 IF get_award_id_wo_doc_type%NOTFOUND THEN
138 raise NO_DATA_FOUND ;
139 END IF ;
140
141 close get_award_id_wo_doc_type;
142
143 return l_award_id;
144
145 /* Bug 2930402 fix. The following is not required.
146
147 if nvl(x_document_type, 'REQ') not in ('REQ','PO','AP','APD','ENC','OPI') then
148 x_err_code := 1;
149 x_err_msg := 'GMS_SSP_INVALID_DOC_TYPE';
150 app_exception.raise_exception;
151 end if;
152
153 if x_document_type is NULL then
154 open get_award_id_wo_doc_type (x_award_set_id);
155 fetch get_award_id_wo_doc_type into l_award_id;
156
157 IF get_award_id_wo_doc_type%NOTFOUND THEN
158 raise NO_DATA_FOUND ;
159 END IF ;
160
161 close get_award_id_wo_doc_type;
162 else
163 --x_document_type in ('REQ','PO','AP','APD','ENC','OPI') then
164 open get_award_id_w_doc_type (x_award_set_id, x_document_type);
165 fetch get_award_id_w_doc_type into l_award_id;
166
167 IF get_award_id_w_doc_type%NOTFOUND THEN
168 raise NO_DATA_FOUND ;
169 END IF ;
170
171 close get_award_id_w_doc_type;
172 end if;
173
174 -- Bug 2930402 fix. */
175
176 EXCEPTION
177 when OTHERS then
178
179 IF get_award_id_w_doc_type%ISOPEN THEN
180 CLOSE get_award_id_w_doc_type ;
181 END IF ;
182
183 IF get_award_id_wo_doc_type%ISOPEN THEN
184 CLOSE get_award_id_wo_doc_type ;
185 END IF ;
186
187 IF get_default_dist_award_id%ISOPEN THEN
188 CLOSE get_default_dist_award_id;
189 END IF ;
190
191
192 x_err_code := 1;
193
194 IF x_err_msg = '' THEN
195 x_err_msg := 'GMS_SSP_AWARD_SET_ID_NULL';
196 END IF ;
197
198 app_exception.raise_exception;
199
200 END GET_AWARD_ID;
201 ---------------------------------------------------------------------
202
203
204 -- ==================================================================
205 -- GET_AWARD_ID defined for workflow and account generator.
206 -- ==================================================================
207 FUNCTION GET_AWARD_ID (itemtype IN VARCHAR2
208 , itemkey IN VARCHAR2
209 , actid IN NUMBER
210 , funcmode IN VARCHAR2
211 , resultout OUT NOCOPY VARCHAR2,
212 p_doc_type IN VARCHAR2 )
213
214 return NUMBER
215 IS
216
217 l_award_set_id NUMBER;
218 l_attr_award_id VARCHAR2(30);
219 l_award_id NUMBER;
220 l_err_code NUMBER;
221 l_err_msg VARCHAR2(2000);
222 l_doc_type varchar2(3) ;
223
224 CURSOR GET_DOC_TYPE (p_award_set_id in NUMBER) is
225 select document_type
226 from gms_award_distributions
227 where award_set_id = p_award_set_id
228 and adl_status = 'A'
229 and adl_line_num = 1;
230
231 BEGIN
232
233 if (funcmode <> wf_engine.eng_run) then
234 resultout := 'ERROR';
235 RETURN 0;
236 end if;
237
238 l_award_set_id := wf_engine.GetItemAttrNumber( itemtype => itemtype,
239 itemkey => itemkey,
240 aname => 'AWARD_SET_ID' );
241
242
243 IF l_award_set_id is not NULL AND
244 l_award_set_id > 0 THEN
245 open get_doc_type (l_award_set_id) ;
246 FETCH get_doc_type into l_doc_type ;
247
248 IF get_doc_type%NOTFOUND THEN
249 raise NO_DATA_FOUND ;
250 END IF ;
251
252 CLOSE get_doc_type ;
253
254 END IF ;
255
256 IF NVL(l_doc_type,P_DOC_TYPE) IN ( 'REQ' ) THEN
257
258 l_attr_award_id := wf_engine.GetItemAttrText( itemtype => itemtype,
259 itemkey => itemkey,
260 aname => 'LINE_ATT7' );
261
262 END IF ;
263
264
265 l_award_id := get_award_id (x_award_set_id => l_award_set_id,
266 x_attr_award_id => l_attr_award_id,
267 x_document_type => l_doc_type,
268 x_err_code => l_err_code,
269 x_err_msg => l_err_msg);
270
271 if l_err_code <> 0 then
272 resultout := 'COMPLETE:FAILURE';
273 end if;
274
275 resultout := 'COMPLETE:SUCCESS' ;
276
277 return l_award_id;
278
279 EXCEPTION
280 WHEN OTHERS THEN
281 resultout := 'COMPLETE:FAILURE';
282
283 IF get_doc_type%ISOPEN THEN
284 close get_doc_type ;
285 END IF ;
286
287 RAISE ;
288 END GET_AWARD_ID;
289
290
291 -- ===================================================
292 -- BUG : 1703224 GENERIC API TO GET AWARD FROM ADL.
293 -- ===================================================
294
295 FUNCTION GET_AWARD_ID ( x_award_set_id IN NUMBER,
296 x_doc_type IN varchar2
297 ) return NUMBER IS
298 x_award_id NUMBER ;
299 BEGIN
300
301 IF x_award_set_id is NULL THEN
302 return NULL ;
303 END IF ;
304
305 IF NVL(x_doc_type,'X') in ( 'PO','REQ','AP' ) THEN
306
307 SELECT award_id
308 INTO x_award_id
309 FROM gms_award_distributions
310 WHERE award_set_id = x_award_set_id
311 and document_type = x_doc_type
312 and adl_status = 'A'
313 and adl_line_num = 1 ;
314
315 END IF ;
316
317 return x_award_id ;
318
319 END GET_AWARD_ID ;
320
321 -- ===================================================
322 -- BUG : 1703224 GENERIC API TO GET AWARD FROM ADL.
323 -- ===================================================
324 FUNCTION GET_AWARD_ID ( x_exp_enc_item_id IN NUMBER,
325 x_doc_type IN varchar2,
326 x_cdl_line IN NUMBER
327 ) return NUMBER IS
328 x_award_id NUMBER ;
329 BEGIN
330
331 IF x_exp_enc_item_id is NULL THEN
332 return NULL ;
333 END IF ;
334
335 IF NVL(x_doc_type,'X') in ( 'EXP' , 'ENC' ) THEN
336
337 SELECT award_id
338 INTO x_award_id
339 FROM gms_award_distributions
340 WHERE expenditure_item_id = NVL( x_exp_enc_item_id, 0)
341 AND nvl(cdl_line_num, 1) = NVL(x_cdl_line,1) --Bug 5726575
342 AND document_type = x_doc_type
343 and adl_status = 'A' ;
344
345 END IF ;
346
347 return x_award_id ;
348
349 END GET_AWARD_ID ;
350
351
352 END gms_acc_gen_api;
353