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