1 PACKAGE BODY pa_gms_api AS
2 -- $Header: PAXGMS1B.pls 120.3 2006/08/26 11:22:54 asubrama noship $
3
4 -- ---------------------------------------------------------
5 -- API for GMS to determine whether to allow adjustments or
6 -- not.
7 -- -----------------------------------------------------------
8 FUNCTION vert_allow_adjustments (
9 x_expenditure_item_id IN NUMBER
10 )
11 RETURN BOOLEAN IS
12 x_return BOOLEAN := FALSE;
13 BEGIN
14 -- -------------------------------------------------
15 -- Vertical application will override the code here.
16 -- If Grants is enabled then only execute grants call.
17 -- -------------------------------------------------
18 -- IF gms_install.enabled THEN -- bug 3002305.
19 IF pa_gms_api.vert_install THEN
20 x_return := gms_pa_api.vert_allow_adjustments (
21 x_expenditure_item_id);
22 END IF ;
23 RETURN x_return;
24 EXCEPTION
25 WHEN OTHERS THEN
26 RAISE;
27 END vert_allow_adjustments;
28
29 -- ------------------------------------------------------
30 -- ------------------------------------------------------
31 -- API to allow vertical application to perform Adjustment
32 -- actions.
33 -- -------------------------------------------------------
34 FUNCTION vert_transfer (
35 x_exp_item_id IN NUMBER,
36 x_error IN OUT NOCOPY VARCHAR2
37 ) RETURN BOOLEAN IS
38 x_return BOOLEAN := FALSE;
39 BEGIN
40 -- --------------------------------------------------
41 -- Vertical application will override the code here.
42 -- If Grants is enabled then only execute grants call.
43 -- -------------------------------------------------
44 -- IF gms_install.enabled THEN -- Bug 3002305
45 IF pa_gms_api.vert_install THEN
46 x_return := gms_pa_api.vert_transfer (
47 x_exp_item_id ,
48 x_error) ;
49 END IF ;
50 RETURN x_return;
51 EXCEPTION
52 WHEN OTHERS THEN
53 RAISE;
54 END vert_transfer;
55
56 -- ------------------------------------------------------
57 -- API to allow vertical application to perform Adjustment
58 -- actions.
59 -- -------------------------------------------------------
60 PROCEDURE vert_adjust_items (
61 x_calling_process IN VARCHAR2,
62 x_rows IN NUMBER,
63 x_status IN OUT NOCOPY NUMBER
64 ) IS
65 BEGIN
66 -- IF x_status IS NOT NULL THEN
67 -- RETURN;
68 -- END IF;
69
70 -- -------------------------------------------------
71 -- Vertical application will override the code here.
72 -- If Grants is enabled then only execute grants call.
73 -- -------------------------------------------------
74 -- IF gms_install.enabled THEN -- Bug 3002305
75 IF pa_gms_api.vert_install THEN
76 gms_pa_api.vert_adjust_items (x_calling_process,
77 x_rows,
78 x_status
79 );
80 END IF ;
81 END vert_adjust_items;
82
83 -- ------------------------------------------------------
84 -- API to allow vertical application to compare awards
85 -- X_ADJUST_ACTION = 'MASSADJUST'
86 -- -------------------------------------------------------
87 FUNCTION vert_allow_action (
88 x_adjust_action IN VARCHAR2
89 )
90 RETURN VARCHAR2 IS
91 x_return VARCHAR2(1);
92 BEGIN
93 x_return := 'N';
94 -- -------------------------------------------------
95 -- Vertical application will override the code here.
96 -- If Grants is enabled then only execute grants call.
97 -- -------------------------------------------------
98 -- IF gms_install.enabled THEN -- Bug 3002305
99 IF pa_gms_api.vert_install THEN
100 x_return := gms_pa_api.vert_allow_action (x_adjust_action);
101 END IF ;
102 RETURN x_return;
103 EXCEPTION
104 WHEN OTHERS THEN
105 RAISE;
106 END vert_allow_action;
107
108 -- --------------------------------------------------------
109 --
110 -- Supplier Invoice Interface logic of creating ADLS.
111 -- LD PA Interface logic of creating ADLS.
112 -- trx_interface - Creates ADLS for the new expenditure items
113 -- created for PA Interface from payables/LD.
114 -- This is called after PA_TRX_IMPORT.NEWexpend.
115 -- -----------------------------------------------------------
116 PROCEDURE vert_trx_interface (
117 x_user IN NUMBER,
118 x_login IN NUMBER,
119 x_module IN VARCHAR2,
120 x_calling_process IN VARCHAR2,
121 rows IN BINARY_INTEGER,
122 x_status IN OUT NOCOPY NUMBER,
123 x_gl_flag IN VARCHAR2
124 ) IS
125 BEGIN
126 -- IF NOT gms_install.enabled THEN -- Bug 3002305
127 IF NOT pa_gms_api.vert_install THEN
128 RETURN ;
129 END IF ;
130 -- -------------------------------------------------
131 -- Vertical application will override the code here.
132 -- -------------------------------------------------
133 gms_pa_api.vert_trx_interface (x_user,
134 x_login,
135 x_module,
136 x_calling_process,
137 rows,
138 x_status,
139 x_gl_flag
140 );
141 END vert_trx_interface;
142
143 -- ----------------------------------------------------------------
144 -- API to allow vertical applications to take actions following the
145 -- creation of AP distribution lines.
146 -- This is called from PA_XFER_ADJ.
147 -- -----------------------------------------------------------------
148 PROCEDURE vert_paap_si_adjustments (
149 x_expenditure_item_id IN NUMBER,
150 x_invoice_id IN NUMBER,
151 x_distribution_line_number IN NUMBER,
152 x_cdl_line_num IN NUMBER,
153 x_project_id IN NUMBER,
154 x_task_id IN NUMBER,
155 status IN OUT NOCOPY NUMBER
156 ) IS
157 BEGIN
158 -- IF NOT gms_install.enabled THEN -- Bug 3002305
159 IF NOT pa_gms_api.vert_install THEN
160 RETURN ;
161 END IF ;
162 -- -------------------------------------------------
163 -- Vertical application will override the code here.
164 -- -------------------------------------------------
165 gms_pa_api.vert_paap_si_adjustments (x_expenditure_item_id,
166 x_invoice_id,
167 x_distribution_line_number,
168 x_cdl_line_num,
169 x_project_id,
170 x_task_id,
171 status
172 );
173
174 END vert_paap_si_adjustments;
175
176 -- -----------------------------------------------------------------
177 -- API to allow vertical applications to validate transaction
178 -- interface. This is called from PA_TRX_IMPORTS just after ValidateItem
179 -- -----------------------------------------------------------------
180 PROCEDURE vert_app_validate (
181 x_transaction_source IN VARCHAR2,
182 x_current_batch IN VARCHAR2,
183 x_txn_interface_id IN NUMBER,
184 x_org_id IN NUMBER,
185 x_status IN OUT NOCOPY VARCHAR2
186 ) IS
187 BEGIN
188 IF x_status IS NOT NULL THEN
189 RETURN;
190 END IF;
191
192 -- -------------------------------------------------
193 -- Vertical application will override the code here.
194 -- -------------------------------------------------
195 -- IF gms_install.enabled (x_org_id) -- do we need org here ? -- Bug 3002305
196 IF pa_gms_api.vert_install
197 OR NVL (x_org_id,
198 0
199 ) = 0 THEN
200 gms_pa_api.vert_app_validate (x_transaction_source,
201 x_current_batch,
202 x_txn_interface_id,
203 x_org_id,
204 x_status
205 );
206 END IF;
207 END vert_app_validate;
208
209 PROCEDURE vert_si_adj (
210 x_expenditure_item_id IN NUMBER,
211 x_invoice_id IN NUMBER,
212 x_distribution_line_number IN NUMBER,
213 x_project_id IN NUMBER,
214 x_task_id IN NUMBER,
215 status IN OUT NOCOPY NUMBER
216 ) IS
217 BEGIN
218 -- IF NOT gms_install.enabled THEN -- Bug 3002305
219 IF NOT pa_gms_api.vert_install THEN
220 RETURN ;
221 END IF ;
222 -- -------------------------------------------------
223 -- Vertical application will override the code here.
224 -- -------------------------------------------------
225 gms_pa_api.vert_si_adj (x_expenditure_item_id,
226 x_invoice_id,
227 x_distribution_line_number,
228 x_project_id,
229 x_task_id,
230 status
231 );
232 END vert_si_adj;
233
234 FUNCTION is_sponsored_project (
235 x_project_id IN NUMBER
236 )
237 RETURN BOOLEAN IS
238 x_return BOOLEAN;
239 BEGIN
240 x_return := FALSE;
241 IF pa_gms_api.vert_install THEN
242 x_return := gms_pa_api.is_sponsored_project (x_project_id
243 );
244 END IF;
245 RETURN x_return;
246 END is_sponsored_project;
247 -- -------------------------------------------------
248 -- Vertical application will override the code here.
249 -- -------------------------------------------------
250 FUNCTION vert_install return BOOLEAN is
251 x_return BOOLEAN := FALSE ;
252 BEGIN
253 x_return := gms_pa_api.vert_install ;
254 RETURN x_return ;
255 END vert_install ;
256
257 -- ----------------------------------------------------------------------
258 -- BUG: 1380464 - Net Zero SI, mixed invoice are not picked up by PA
259 -- Supplier invoice interface process.
260 -- this is called from PAAPIMP_PKG.
261 -- ----------------------------------------------------------------------
262 FUNCTION vert_get_award_id (
263 x_award_set_id IN NUMBER,
264 x_invoice_id IN NUMBER,
265 x_distribution_line_number IN NUMBER
266 )
267 RETURN NUMBER IS
268 l_award_id NUMBER;
269 BEGIN
270 IF NVL(x_award_set_id,0) = 0 THEN
271 l_award_id := 0 ;
272 return l_award_id ;
273 END IF ;
274
275 -- IF gms_install.enabled THEN -- bug 3002305
276 IF pa_gms_api.vert_install THEN
277 l_award_id := gms_pa_api.vert_get_award_id( x_award_set_id,
278 x_invoice_id,
279 x_distribution_line_number ) ;
280 ELSE
281 l_award_id := 0 ;
282 END IF ;
283
284 RETURN nvl(l_award_id,0) ;
285 END vert_get_award_id;
286
287 -- -------------------------------------
288 -- End of Bug Fixes for 1380464
289 -- -------------------------------------
290
291 /* R12 Changes Start */
292 PROCEDURE VERT_SET_ADJUST_ACTION(p_adjust_action IN VARCHAR2) IS
293 BEGIN
294 IF PA_GMS_API.VERT_INSTALL THEN
295 GMS_PA_API.SET_ADJUST_ACTION(p_adjust_action);
296 END IF;
297 END VERT_SET_ADJUST_ACTION;
298
299 PROCEDURE VERT_SET_PROJECT_ID
300 ( p_source_project_id IN VARCHAR2
301 , p_dest_project_id IN VARCHAR2) IS
302 BEGIN
303 IF PA_GMS_API.VERT_INSTALL
304 AND (p_source_project_id IS NOT NULL
305 OR p_dest_project_id IS NOT NULL) THEN
306 GMS_PA_API.GMS_SET_PROJECT_ID(p_source_project_id, p_dest_project_id);
307 END IF;
308 END VERT_SET_PROJECT_ID;
309
310 PROCEDURE VERT_SET_AWARD_ID
311 ( p_source_award_id IN VARCHAR2
312 , p_dest_award_id IN VARCHAR2) IS
313 BEGIN
314 IF PA_GMS_API.VERT_INSTALL
315 AND (p_source_award_id IS NOT NULL
316 OR p_dest_award_id IS NOT NULL) THEN
317 GMS_PA_API.GMS_SET_AWARD(p_source_award_id, p_dest_award_id);
318 END IF;
319 END VERT_SET_AWARD_ID;
320
321 PROCEDURE VERT_GET_SRC_DEST_AWARD_ID
322 ( X_source_award_id OUT NOCOPY VARCHAR2
323 , X_dest_award_id OUT NOCOPY VARCHAR2) IS
324 BEGIN
325 IF PA_GMS_API.VERT_INSTALL THEN
326 X_source_award_id := GMS_PA_API.SOURCE_AWARD_ID;
327 X_dest_award_id := GMS_PA_API.DEST_AWARD_ID;
328 END IF;
329 END VERT_GET_SRC_DEST_AWARD_ID;
330
331 FUNCTION VERT_EI_AWD_EQUALS_SRC_AWD(p_expenditure_item_id NUMBER)
332 RETURN VARCHAR2 IS
333 BEGIN
334 IF PA_GMS_API.VERT_INSTALL THEN
335 IF GMS_PA_API.CHECK_ADJUST_ALLOWED(p_expenditure_item_id) THEN
336 RETURN 'Y';
337 ELSE
338 RETURN 'N';
339 END IF;
340 ELSE
341 RETURN 'Y';
342 END IF;
343 END VERT_EI_AWD_EQUALS_SRC_AWD;
344
345 FUNCTION VERT_GET_EI_AWARD_ID(p_expenditure_item_id NUMBER)
346 RETURN NUMBER IS
347 BEGIN
348 IF PA_GMS_API.VERT_INSTALL THEN
349 RETURN GMS_PA_API.VERT_GET_EI_AWARD_ID(p_expenditure_item_id);
350 ELSE
351 RETURN NULL;
352 END IF;
353 END VERT_GET_EI_AWARD_ID;
354 /* R12 Changes End */
355
356
357 /* Added for Bug 5490120
358 This function accepts the expenditure_item_id as the input and returns the award associated with
359 this expenditure item.
360 The function returns NULL if no award is associated with the expenditure item.
361 */
362 FUNCTION VERT_GET_AWARD_NUMBER(
363 p_expenditure_item_id IN PA_EXPENDITURE_ITEMS_ALL.EXPENDITURE_ITEM_ID%TYPE
364 ) RETURN VARCHAR2 IS
365 BEGIN
366 IF NOT PA_GMS_API.VERT_INSTALL THEN
367 RETURN NULL;
368 ELSE
369 RETURN GMS_PA_API.VERT_GET_AWARD_NUMBER(
370 p_expenditure_item_id
371 );
372 END IF;
373 EXCEPTION
374 WHEN NO_DATA_FOUND THEN
375 RETURN NULL;
376 END VERT_GET_AWARD_NUMBER;
377
378 /* Added for Bug 5490120
379 This function accepts the expenditure_item_id as the input.
380 If grants is not installed then the function returns 'Y'.
381 Else if the exenditure item belongs to a sponsored project:
382 The function determines the Award Number and verifies if the Award Number falls in the specified range.
383 If yes, then the function returns 'Y'.
384 If no, then the funciton returns 'N'.
385 If the expenditure item belongs to a non-sponsored project:
386 If award range is not specified then the function returns 'Y'
387 If award range is specified then the function returns 'N'
388 */
389 FUNCTION VERT_IS_AWARD_WITHIN_RANGE(
390 p_expenditure_item_id IN PA_EXPENDITURE_ITEMS_ALL.EXPENDITURE_ITEM_ID%TYPE
391 ,p_from_award_number IN GMS_AWARDS_ALL.AWARD_NUMBER%TYPE DEFAULT NULL
392 ,p_to_award_number IN GMS_AWARDS_ALL.AWARD_NUMBER%TYPE DEFAULT NULL
393 ) RETURN VARCHAR2 IS
394 BEGIN
395 IF NOT PA_GMS_API.VERT_INSTALL THEN
396 RETURN 'Y';
397 ELSE
398 RETURN GMS_PA_API.VERT_IS_AWARD_WITHIN_RANGE(
399 p_expenditure_item_id
400 ,p_from_award_number
401 ,p_to_award_number
402 );
403 END IF;
404 END VERT_IS_AWARD_WITHIN_RANGE;
405
406 END pa_gms_api;