DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_GMS_API

Source


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;