DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_CC_GL_TRANS_CCDS

Source


1 PACKAGE BODY PA_CC_GL_TRANS_CCDS
2 --  $Header: PACCGLTB.pls 120.5.12010000.2 2009/06/04 22:48:44 apaul ship $
3 AS
4 
5 -- Declaration of Global variables
6 
7    G_Debug_Mode                 BOOLEAN ;
8    G_User_Id                    NUMBER ;
9    G_Conc_Request_ID            NUMBER ;
10    G_Conc_Prog_Appl_Id          NUMBER ;
11    G_Conc_Program_Id            NUMBER ;
12    G_Conc_Login_Id              NUMBER ;
13    G_EI_Set_Size                NUMBER ;
14    G_Current_SOB_Id		NUMBER ;
15    G_Calling_Module		VARCHAR2(2);
16 
17 PROCEDURE TRANSFER_CCDS_TO_GL (
18           P_Gl_Category          IN     VARCHAR2,
19           P_Expenditure_Batch    IN     VARCHAR2,
20           P_From_Project_Number  IN     VARCHAR2,
21           P_To_Project_Number    IN     VARCHAR2,
22           P_End_Gl_Date          IN     DATE,
23           P_Debug_Mode           IN     VARCHAR2,
24           RET_CODE               IN OUT NOCOPY VARCHAR2,
25           ERRBUF                 IN OUT NOCOPY VARCHAR2)
26 IS
27 
28 Cursor Exp_Items is
29  SELECT expenditure_item_id from pa_expenditure_items_all where expenditure_item_id in
30 (SELECT ei.expenditure_item_id
31            FROM pa_cc_dist_lines ccd,
32                 Pa_expenditure_items ei,
33                 Pa_expenditures exp
34           WHERE ccd.transfer_status_code in ('P','R')
35 	AND  (p_gl_category is null OR ccd.line_type = p_gl_category)
36             AND (ccd.line_type = 'BL' OR
37 		(Ccd.line_type = 'PC' AND EXISTS (SELECT 'X'
38                           		FROM pa_draft_invoices_all di,
39                                      	Pa_draft_invoice_details_all did
40                                		WHERE di.draft_invoice_num = did.draft_invoice_num
41 			                        AND di.project_id = did.project_id /* Added for bug 8505010*/
42 
43                                  		AND ccd.reference_1 = did.draft_invoice_detail_id
44                                  		AND di.transfer_status_code = 'A')))
45 	AND TRUNC (CCD.GL_Date) <= NVL (p_END_GL_DATE, CCD.GL_DATE)
46 	AND NVL (CCD.request_id, G_Conc_Request_ID+1) <> G_Conc_Request_ID
47             AND ei.expenditure_item_id = ccd.expenditure_item_id
48             AND exp.expenditure_id = ei.expenditure_id
49             AND exp.expenditure_group = p_EXPENDITURE_BATCH)
50    AND p_EXPENDITURE_BATCH is NOT NULL
51 UNION ALL
52  SELECT expenditure_item_id from pa_expenditure_items_all where expenditure_item_id in
53  (SELECT ei.expenditure_item_id
54            FROM pa_cc_dist_lines ccd,
55                 pa_expenditure_items ei,
56 	    pa_projects_all proj
57           WHERE ccd.transfer_status_code in ('P','R')
58 	AND  (p_gl_category is null OR ccd.line_type = p_gl_category)
59             AND (ccd.line_type = 'BL' OR
60 		(Ccd.line_type = 'PC' AND EXISTS (SELECT 'X'
61                           		FROM pa_draft_invoices_all di,
62                                      	Pa_draft_invoice_details_all did
63                                		WHERE di.draft_invoice_num = did.draft_invoice_num
64 			                        AND di.project_id = did.project_id /* Added for bug 8505010*/
65                                  		AND ccd.reference_1 = did.draft_invoice_detail_id
66                                  		AND di.transfer_status_code = 'A')))
67 	AND TRUNC (CCD.GL_DATE) <= NVL (p_END_GL_DATE, CCD.GL_DATE)
68 	AND NVL (CCD.request_id, G_Conc_Request_ID+1) <> G_Conc_Request_ID
69             AND ei.expenditure_item_id = ccd.expenditure_item_id
70 	AND ei.project_id = proj.project_id
71 	AND  (((p_FROM_PROJECT_NUMBER is not null and proj. SEGMENT1 >= p_FROM_PROJECT_NUMBER)
72                        AND  (p_TO_PROJECT_NUMBER is not null and proj. SEGMENT1 <= p_TO_PROJECT_NUMBER))
73                     OR
74                       (p_FROM_PROJECT_NUMBER is not null and p_TO_PROJECT_NUMBER is null
75                        and proj.SEGMENT1 >= p_FROM_PROJECT_NUMBER)
76                     OR
77                       (p_TO_PROJECT_NUMBER is not null and p_FROM_PROJECT_NUMBER is null
78                        and proj.SEGMENT1 <= p_TO_PROJECT_NUMBER)))
79   AND (p_FROM_PROJECT_NUMBER is NOT NULL or p_TO_PROJECT_NUMBER is NOT NULL)
80   AND p_EXPENDITURE_BATCH is NULL
81 UNION ALL
82  SELECT expenditure_item_id from pa_expenditure_items_all where expenditure_item_id in
83  (SELECT ccd.expenditure_item_id
84            FROM pa_cc_dist_lines ccd
85           WHERE ccd.transfer_status_code in ('P','R')
86 	AND  (p_gl_category is null OR ccd.line_type = p_gl_category)
87             AND (ccd.line_type = 'BL' OR
88 		(ccd.line_type = 'PC' AND  EXISTS (SELECT 'X'
89                           		FROM pa_draft_invoices_all di,
90                                      	pa_draft_invoice_details_all did
91                                		WHERE di.draft_invoice_num = did.draft_invoice_num
92 			                        AND di.project_id = did.project_id /* Added for bug 8505010*/
93                                  		AND ccd.reference_1 = did.draft_invoice_detail_id
94                                  		AND di.transfer_status_code = 'A')))
95 	AND TRUNC (CCD.GL_DATE) <= NVL (p_END_GL_DATE, CCD.GL_DATE)
96 	AND NVL (CCD.request_id, G_Conc_Request_ID+1) <> G_Conc_Request_ID)
97  AND p_FROM_PROJECT_NUMBER is NULL
98  AND p_TO_PROJECT_NUMBER is NULL
99  AND p_EXPENDITURE_BATCH is NULL;
100 
101  EiIdTab	PA_PLSQL_DATATYPES.IdTabTyp;
102  l_result_code	VARCHAR2(30);
103 
104 BEGIN
105      IF p_debug_mode = 'Y'  THEN
106             g_debug_mode := TRUE;
107      ELSE
108             g_debug_mode := FALSE;
109      END IF;
110 
111      set_curr_function('transfer_ccds_to_gl');
112 
113      log_message('10 : Calling the initialization procedure ');
114 
115      PA_CC_GL_TRANS_CCDS.TRANSFER_CCDS_INITIALIZE ;
116 
117      log_message('20 : After the call to initialization procedure ');
118 
119     If P_Gl_Category is NOT NULL Then
120          pa_cc_gl_trans_ccds.G_Calling_Module := P_Gl_Category;
121     Else
122          pa_cc_gl_trans_ccds.G_Calling_Module := 'CC';
123     End If;
124 
125      log_message('30 : Calling module is '||G_Calling_Module);
126 
127      --
128      -- Check if the profile option PA_EXP_ITEMS_PER_SET is set from the value
129      -- set in G_EI_Set_Size variable by fnd_profile.value() function.
130      -- If the value of G_EI_Set_Size is NULL, then set a default value of 500.
131      --
132 
133      IF G_EI_Set_Size IS NULL THEN
134         G_EI_Set_Size := 500;
135      END IF;
136 
137 	Open Exp_Items;
138 
139 	LOOP
140 
141 	Fetch Exp_Items bulk collect into EiidTab LIMIT G_EI_Set_Size;
142 
143 	IF EiidTab.count > 0 Then
144 
145   	FORALL i IN 1..EiidTab.count
146 	UPDATE pa_expenditure_items
147 	SET last_updated_by = last_updated_by
148 	WHERE expenditure_item_id = EiidTab (i);
149 
150      log_message('40 : EI locked with '||sql%rowcount ||' records');
151 
152   	FORALL i IN 1..EiidTab.count
153   	UPDATE pa_cc_dist_lines ccd
154             SET ccd.transfer_status_code = 'X',
155                 ccd.transfer_rejection_code = NULL,
156                 ccd.request_id = G_conc_request_id
157           WHERE ccd.expenditure_item_id = EiidTab (i)
158           AND CCD.transfer_status_code IN ('P', 'R')
159           AND    (p_gl_category IS NULL OR   CCD.line_type = p_gl_category)
160           AND (CCD.line_type = 'BL'
161                        OR (CCD.line_type = 'PC' AND EXISTS (SELECT 'X'
162                                 FROM pa_draft_invoices_all di,
163                                      Pa_draft_invoice_details_all did
164                                WHERE di.draft_invoice_num = did.draft_invoice_num
165 			         AND di.project_id = did.project_id /* Added for bug 8505010*/
166                                  AND ccd.reference_1 = did.draft_invoice_detail_id
167                                  AND di.transfer_status_code = 'A')))
168           AND    TRUNC (CCD.GL_DATE) <= NVL (p_END_GL_DATE, CCD.GL_DATE)
169           AND    NVL (CCD.request_id, G_Conc_Request_ID+1) <> G_Conc_Request_ID ;
170 
171      log_message('50 : CCDL updated with '||sql%rowcount ||' records');
172 
173 	PA_XLA_INTERFACE_PKG.Create_Events
174 		(P_calling_module => G_Calling_Module,
175 		 P_data_set_id => G_conc_request_id,
176 		 x_result_code => l_result_code);
177 
178 	commit ;
179 
180 	End If;
181 
182 	EXIT WHEN nvl (EiidTab.last,0) < G_EI_Set_Size;
183 
184      END LOOP ;  /** Exp_Items **/
185 
186      log_message('60 : End of the iteration ');
187 
188      Close Exp_Items;
189 
190      log_message('61 : End of the procedure ');
191 
192      reset_curr_function;
193 
194 EXCEPTION
195    WHEN OTHERS THEN
196       reset_curr_function;
197       RAISE ;
198 
199 END TRANSFER_CCDS_TO_GL ;
200 
201 PROCEDURE TRANSFER_CCDS_INITIALIZE
202 IS
203 
204 BEGIN
205 
206     set_curr_function('transfer_ccds_initialize');
207     -- Initialize the User_id (G_User_Id)
208        log_message('10.10 : Initialize the User_id ');
209        pa_cc_gl_trans_ccds.G_User_Id := fnd_profile.value('USER_ID');
210 
211     -- Initialize concurrent request id
212     log_message('10.20 : Initialize concurrent request id ');
213     pa_cc_gl_trans_ccds.G_Conc_Request_ID := fnd_global.conc_request_id ;
214 
215     -- Initialize concurrent program application id
216     log_message('10.30 : Initialize concurrent program application id ');
217     pa_cc_gl_trans_ccds.G_Conc_Prog_Appl_Id := fnd_global.prog_appl_id ;
218 
219     -- Initialize concurrent program application id
220     log_message('10.40 : Initialize concurrent program application id ');
221     pa_cc_gl_trans_ccds.G_Conc_Program_Id := fnd_global.conc_program_id ;
222 
223     -- Initialize login id
224     log_message('10.50 : Initialize login id ');
225     pa_cc_gl_trans_ccds.G_Conc_Login_Id := fnd_profile.value('LOGIN_ID');
226 
227     -- initialize set size
228     log_message('10.60 : Initialize set size ');
229     pa_cc_gl_trans_ccds.G_EI_Set_Size := fnd_profile.value('PA_NUM_EXP_ITEMS_PER_SET');
230 
231     select set_of_books_id
232     into G_Current_SOB_Id
233     from pa_implementations;
234 
235     reset_curr_function;
236 
237 EXCEPTION
238 
239   WHEN OTHERS THEN
240      reset_curr_function;
241      RAISE ;
242 
243 END TRANSFER_CCDS_INITIALIZE ;
244 
245 PROCEDURE log_message( p_message IN VARCHAR2) IS
246 BEGIN
247 
248     pa_cc_utils.log_message(p_message);
249 
250 END log_message;
251 
252 PROCEDURE set_curr_function(p_function IN VARCHAR2) IS
253 BEGIN
254 
255      pa_cc_utils.set_curr_function(p_function);
256 
257 END;
258 
259 PROCEDURE reset_curr_function IS
260 BEGIN
261 
262      pa_cc_utils.reset_curr_function;
263 
264 END;
265 
266 
267 END PA_CC_GL_TRANS_CCDS;