DBA Data[Home] [Help]

PACKAGE BODY: APPS.GL_GLXUSA_XMLP_PKG

Source


1 PACKAGE BODY GL_GLXUSA_XMLP_PKG AS
2 /* $Header: GLXUSAB.pls 120.1 2007/12/28 10:48:37 vijranga noship $ */
3 
4 function AfterReport return boolean is
5 begin
6 
7 /*SRW.USER_EXIT('FND SRWEXIT');*/null;
8   return (TRUE);
9 end;
10 
11 function BeforeReport return boolean is
12 begin
13 
14 /*SRW.USER_EXIT('FND SRWINIT');*/null;
15 
16 
17 DECLARE
18 
19  t_ledger_id                      NUMBER;
20  t_chart_of_accounts_id           NUMBER;
21  t_currency_code                  VARCHAR2(15);
22  t_ledger_name                    VARCHAR2(30);
23 
24  t_to_ledger_id                   NUMBER;
25  t_to_ledger_name                 VARCHAR2(30);
26  t_to_chart_of_accounts_id        NUMBER;
27  t_to_currency_code               VARCHAR2(15);
28 
29  t_from_ledger_id                 NUMBER;
30  t_from_ledger_name               VARCHAR2(30);
31  t_from_chart_of_accounts_id      NUMBER;
32  t_from_currency_code             VARCHAR2(15);
33 
34  t_consolidation_id               NUMBER;
35  t_consolidation_name             VARCHAR2(33);
36  t_consolidation_method           VARCHAR2(30);
37  t_consolidation_currency_code    VARCHAR2(15);
38  t_consolidation_description      VARCHAR2(240);
39  t_consolidation_start_date       DATE;
40  t_consolidation_end_date         DATE;
41 
42  t_error_buffer                   VARCHAR2(400);
43  t_records_present                VARCHAR2(1);
44 
45  P1             VARCHAR2(500);
46  P2             VARCHAR2(500);
47  P3             VARCHAR2(500);
48  P4             VARCHAR2(500);
49  P5             VARCHAR2(500);
50  P6             VARCHAR2(500);
51  P6_ADB         VARCHAR2(500);
52  P7             VARCHAR2(500);
53  P8             VARCHAR2(500);
54  P9             VARCHAR2(500);
55  P10_1          VARCHAR2(500);
56  P10_2          VARCHAR2(500);
57  P10_3          VARCHAR2(500);
58  P10_4          VARCHAR2(500);
59  P10_5          VARCHAR2(500);
60  P10_6          VARCHAR2(500);
61  P10_7          VARCHAR2(500);
62  P11            VARCHAR2(500);
63  P12            VARCHAR2(500);
64  P13            VARCHAR2(500);
65  P14            VARCHAR2(500);
66  P15            VARCHAR2(500);
67  P16            VARCHAR2(500);
68  P17            VARCHAR2(500);
69  P18            VARCHAR2(500);
70  P19            VARCHAR2(500);
71  P20            VARCHAR2(500);
72  P21            VARCHAR2(500);
73  P22            VARCHAR2(500);
74  P23            VARCHAR2(500);
75  P24            VARCHAR2(500);
76  P25            VARCHAR2(500);
77  P26            VARCHAR2(500);
78  P27            VARCHAR2(500);
79  P28            VARCHAR2(500);
80  P29            VARCHAR2(500);
81  P30            VARCHAR2(500);
82  P31            VARCHAR2(500);
83  P32            VARCHAR2(500);
84  P33            VARCHAR2(500);
85  P34            VARCHAR2(500);
86  P35            VARCHAR2(500);
87  P36            VARCHAR2(500);
88  P37            VARCHAR2(500);
89  P38            VARCHAR2(500);
90  P39            VARCHAR2(500);
91  P40            VARCHAR2(500);
92 
93 
94 BEGIN
95 
96   t_consolidation_id := to_number(P_CONSOLIDATION_ID);
97   gl_get_consolidation_info(t_consolidation_id,
98                             t_consolidation_name,
99                             t_consolidation_method,
100                             t_consolidation_currency_code,
101                             t_from_ledger_id,
102                             t_to_ledger_id,
103                             t_consolidation_description,
104                             t_error_buffer);
105 
106  if (t_error_buffer is not NULL) then
107    /*SRW.MESSAGE(0, t_error_buffer);*/null;
108 
109    RAISE_application_error(-20101,null);/*SRW.PROGRAM_ABORT;*/null;
110 
111  else
112    CONSOLIDATION_NAME   := t_consolidation_name;
113    SubsidLedgerId   := t_from_ledger_id;
114  end if;
115 
116     begin
117   SELECT glr.target_ledger_name
118   INTO SubsidLedgerName
119   FROM gl_ledger_relationships glr, gl_consolidation gcs
120   WHERE glr.target_currency_code = gcs.from_currency_code
121   AND glr.source_ledger_id = gcs.from_ledger_id
122   AND glr.target_ledger_id = gcs.from_ledger_id
123   AND gcs.consolidation_id = P_CONSOLIDATION_ID;
124   exception
125     when NO_DATA_FOUND then
126     t_error_buffer := SQLERRM;
127     /*srw.message(0, t_error_buffer);*/null;
128 
129     raise_application_error(-20101,null);/*srw.program_abort;*/null;
130 
131   end;
132 
133 
134  gl_info.gl_get_ledger_info(t_from_ledger_id,
135                           t_from_chart_of_accounts_id,
136                           t_from_ledger_name,
137                           t_from_currency_code,
138                           t_error_buffer);
139 
140  if (t_error_buffer is not NULL) then
141    /*SRW.MESSAGE(0, t_error_buffer);*/null;
142 
143    RAISE_application_error(-20101,null);/*SRW.PROGRAM_ABORT;*/null;
144 
145  else
146    STRUCT_NUM            := to_char(t_from_chart_of_accounts_id);
147    FromCurrencyCode := t_from_currency_code;
148  end if;
149 
150  gl_info.gl_get_ledger_info(t_to_ledger_id,
151                           t_to_chart_of_accounts_id,
152                           t_to_ledger_name,
153                           t_to_currency_code,
154                           t_error_buffer);
155 
156  if (t_error_buffer is not NULL) then
157    /*SRW.MESSAGE(0, t_error_buffer);*/null;
158 
159    RAISE_application_error(-20101,null);/*SRW.PROGRAM_ABORT;*/null;
160 
161  else
162    ParentLedgerName    := t_to_ledger_name;
163    ConsCurrencyCode := t_consolidation_currency_code;
164  end if;
165 
166 
167 
168 P1  := ' EXISTS ( SELECT	sysdate ' ;
169 P2  := '          FROM	 gl_consolidation_accounts	CONS_ACCT, ';
170 P3  := '                 gl_consolidation_history	GLH ';
171 P4  := ' WHERE	GLH.consolidation_id = :P_CONSOLIDATION_ID  ' ;
172 P5  := ' AND	GLH.from_period_name = :P_PERIOD_NAME  ';
173 P6  := ' AND	GLH.average_consolidation_flag = :P_N  ';
174 P7  := ' AND	GLH.actual_flag = :P_A  ';
175 P8  := ' AND	GLH.amount_type = :P_PERIOD_TYPE ';
176 P9  := ' AND	GLH.consolidation_run_id = CONS_ACCT.consolidation_run_id  ';
177 P10_1:=' AND    GLH.consolidation_run_id = ';
178 P10_2:='        (SELECT MAX(glh2.consolidation_run_id) ';
179 P10_3:='         FROM   GL_CONSOLIDATION_HISTORY GLH2 ';
180 P10_4:='         WHERE  glh2.consolidation_id = GLH.consolidation_id ';
181 P10_5:='         AND    glh2.from_period_name = GLH.from_period_name ';
182 P10_6:='         AND    glh2.actual_flag = GLH.actual_flag ';
183 P10_7:='         AND    glh2.amount_type = GLH.amount_type) ';
184 P11 := 'and nvl(GLCC.SEGMENT1,:PZ) between nvl(cons_acct.SEGMENT1_low,:PZ) and nvl(cons_acct.SEGMENT1_high,:PZ) ';
185 P12 := 'and nvl(GLCC.SEGMENT2,:PZ) between nvl(cons_acct.SEGMENT2_low,:PZ) and nvl(cons_acct.SEGMENT2_high,:PZ) ';
186 P13 := 'and nvl(GLCC.SEGMENT3,:PZ) between nvl(cons_acct.SEGMENT3_low,:PZ) and nvl(cons_acct.SEGMENT3_high,:PZ) ';
187 P14 := 'and nvl(GLCC.SEGMENT4,:PZ) between nvl(cons_acct.SEGMENT4_low,:PZ) and nvl(cons_acct.SEGMENT4_high,:PZ) ';
188 P15 := 'and nvl(GLCC.SEGMENT5,:PZ) between nvl(cons_acct.SEGMENT5_low,:PZ) and nvl(cons_acct.SEGMENT5_high,:PZ) ';
189 P16 := 'and nvl(GLCC.SEGMENT6,:PZ) between nvl(cons_acct.SEGMENT6_low,:PZ) and nvl(cons_acct.SEGMENT6_high,:PZ) ';
190 P17 := 'and nvl(GLCC.SEGMENT7,:PZ) between nvl(cons_acct.SEGMENT7_low,:PZ) and nvl(cons_acct.SEGMENT7_high,:PZ) ';
191 P18 := 'and nvl(GLCC.SEGMENT8,:PZ) between nvl(cons_acct.SEGMENT8_low,:PZ) and nvl(cons_acct.SEGMENT8_high,:PZ) ';
192 P19 := 'and nvl(GLCC.SEGMENT9,:PZ) between nvl(cons_acct.SEGMENT9_low,:PZ) and nvl(cons_acct.SEGMENT9_high,:PZ) ';
193 P20 := 'and nvl(GLCC.SEGMENT10,:PZ) between nvl(cons_acct.SEGMENT10_low,:PZ) and nvl(cons_acct.SEGMENT10_high,:PZ) ';
194 P21 := 'and nvl(GLCC.SEGMENT11,:PZ) between nvl(cons_acct.SEGMENT11_low,:PZ) and nvl(cons_acct.SEGMENT11_high,:PZ) ';
195 P22 := 'and nvl(GLCC.SEGMENT12,:PZ) between nvl(cons_acct.SEGMENT12_low,:PZ) and nvl(cons_acct.SEGMENT12_high,:PZ) ';
196 P23 := 'and nvl(GLCC.SEGMENT13,:PZ) between nvl(cons_acct.SEGMENT13_low,:PZ) and nvl(cons_acct.SEGMENT13_high,:PZ) ';
197 P24 := 'and nvl(GLCC.SEGMENT14,:PZ) between nvl(cons_acct.SEGMENT14_low,:PZ) and nvl(cons_acct.SEGMENT14_high,:PZ) ';
198 P25 := 'and nvl(GLCC.SEGMENT15,:PZ) between nvl(cons_acct.SEGMENT15_low,:PZ) and nvl(cons_acct.SEGMENT15_high,:PZ) ';
199 P26 := 'and nvl(GLCC.SEGMENT16,:PZ) between nvl(cons_acct.SEGMENT16_low,:PZ) and nvl(cons_acct.SEGMENT16_high,:PZ) ';
200 P27 := 'and nvl(GLCC.SEGMENT17,:PZ) between nvl(cons_acct.SEGMENT17_low,:PZ) and nvl(cons_acct.SEGMENT17_high,:PZ) ';
201 P28 := 'and nvl(GLCC.SEGMENT18,:PZ) between nvl(cons_acct.SEGMENT18_low,:PZ) and nvl(cons_acct.SEGMENT18_high,:PZ) ';
202 P29 := 'and nvl(GLCC.SEGMENT19,:PZ) between nvl(cons_acct.SEGMENT19_low,:PZ) and nvl(cons_acct.SEGMENT19_high,:PZ) ';
203 P30 := 'and nvl(GLCC.SEGMENT20,:PZ) between nvl(cons_acct.SEGMENT20_low,:PZ) and nvl(cons_acct.SEGMENT20_high,:PZ) ';
204 P31 := 'and nvl(GLCC.SEGMENT21,:PZ) between nvl(cons_acct.SEGMENT21_low,:PZ) and nvl(cons_acct.SEGMENT21_high,:PZ) ';
205 P32 := 'and nvl(GLCC.SEGMENT22,:PZ) between nvl(cons_acct.SEGMENT22_low,:PZ) and nvl(cons_acct.SEGMENT22_high,:PZ) ';
206 P33 := 'and nvl(GLCC.SEGMENT23,:PZ) between nvl(cons_acct.SEGMENT23_low,:PZ) and nvl(cons_acct.SEGMENT23_high,:PZ) ';
207 P34 := 'and nvl(GLCC.SEGMENT24,:PZ) between nvl(cons_acct.SEGMENT24_low,:PZ) and nvl(cons_acct.SEGMENT24_high,:PZ) ';
208 P35 := 'and nvl(GLCC.SEGMENT25,:PZ) between nvl(cons_acct.SEGMENT25_low,:PZ) and nvl(cons_acct.SEGMENT25_high,:PZ) ';
209 P36 := 'and nvl(GLCC.SEGMENT26,:PZ) between nvl(cons_acct.SEGMENT26_low,:PZ) and nvl(cons_acct.SEGMENT26_high,:PZ) ';
210 P37 := 'and nvl(GLCC.SEGMENT27,:PZ) between nvl(cons_acct.SEGMENT27_low,:PZ) and nvl(cons_acct.SEGMENT27_high,:PZ) ';
211 P38 := 'and nvl(GLCC.SEGMENT28,:PZ) between nvl(cons_acct.SEGMENT28_low,:PZ) and nvl(cons_acct.SEGMENT28_high,:PZ) ';
212 P39 := 'and nvl(GLCC.SEGMENT29,:PZ) between nvl(cons_acct.SEGMENT29_low,:PZ) and nvl(cons_acct.SEGMENT29_high,:PZ) ';
213 P40 := 'and nvl(GLCC.SEGMENT30,:PZ) between nvl(cons_acct.SEGMENT30_low,:PZ) and nvl(cons_acct.SEGMENT30_high,:PZ)) ';
214 
215    P_Accounts_Clause := 'N';
216 
217    gl_check_cons_accounts(P_CONSOLIDATION_ID,
218                           'N',
219                           P_A,
220                           P_PERIOD_TYPE,
221                           t_records_present);
222 
223    if ( P_Accounts_Clause = 'Y' ) then
224      P_Accounts := P1 || P2 || P3 || P4 || P5 || P6 || P7 || P8 || P9 ||
225                    P10_1 || P10_2 || P10_3 || P10_4 || P10_5 || P10_6 || P10_7 ||
226                    P11 || P12 || P13 || P14 || P15 || P16 || P17 || P18 || P19 ||
227                    P20 || P21 || P22 || P23 || P24 || P25 || P26 || P27 || P28 || P29 ||
228                    P30 || P31 || P32 || P33 || P34 || P35 || P36 || P37 || P38 || P39 || P40;
229    else
230      P_Accounts := ' 1 = 1 ' ;
231    end if;
232 	IF (P_Accounts IS NULL) then
233 		P_Accounts := '1=1';
234 	END IF;
235    P_Accounts_Clause := 'N';
236    gl_check_cons_accounts(P_CONSOLIDATION_ID,
237                           'Y',
238                           P_A,
239                           P_PERIOD_TYPE,
240                           t_records_present);
241   if (P_Accounts_Clause = 'Y') then
242     P6_ADB  := ' AND	GLH.average_consolidation_flag = :P_Y ';
243     P_Accounts_ADB := P1 || P2 || P3 || P4 || P5 || P6_ADB || P7 || P8 || P9 ||
244                P10_1 || P10_2 || P10_3 || P10_4 || P10_5 || P10_6 || P10_7 ||
245                P11 || P12 || P13 || P14 || P15 || P16 || P17 || P18 || P19 ||
246                P20 || P21 || P22 || P23 || P24 || P25 || P26 || P27 || P28 || P29 ||
247                P30 || P31 || P32 || P33 || P34 || P35 || P36 || P37 || P38 || P39 || P40;
248   else
249     P_Accounts_ADB := ' 1 = 1 ' ;
250   end if;
251 	IF (P_Accounts_Clause IS NULL) then
252 		P_Accounts_Clause := '1=1';
253 	END IF;
254    if ( ConsCurrencyCode = FromCurrencyCode) then
255      if (P_PERIOD_TYPE = 'PTD' ) then
256        P_BALJOIN := '(nvl(glb.period_net_dr,0) <> 0 or nvl(glb.period_net_cr,0) <> 0)';
257      elsif (P_PERIOD_TYPE = 'YTD' ) then
258        P_BALJOIN := '(nvl(glb.begin_balance_dr,0) + nvl(glb.period_net_dr,0) <> 0 or nvl(glb.begin_balance_cr,0) + nvl(glb.period_net_cr,0) <> 0)';
259      elsif (P_PERIOD_TYPE = 'QTD' ) then
260        P_BALJOIN := '(nvl(glb.quarter_to_date_dr,0) + nvl(glb.period_net_dr,0) <> 0 or nvl(glb.quarter_to_date_cr,0) + nvl(glb.period_net_cr,0) <> 0)';
261      elsif  (P_PERIOD_TYPE = 'PJTD' ) then
262        P_BALJOIN := '(nvl(glb.project_to_date_dr,0) + nvl(glb.period_net_dr,0) <> 0 or nvl(glb.project_to_date_cr,0) + nvl(glb.period_net_cr,0) <> 0)';
263       end if;
264 
265    else
266       if (P_PERIOD_TYPE = 'PTD' ) then
267        P_BALJOIN := 'nvl(glb.period_net_dr,0) - nvl(glb.period_net_cr,0) <> 0';
268       elsif (P_PERIOD_TYPE = 'YTD' ) then
269        P_BALJOIN := '(nvl(glb.begin_balance_dr,0) + nvl(glb.period_net_dr,0)) - (nvl(glb.begin_balance_cr,0) + nvl(glb.period_net_cr,0)) <> 0';
270       elsif (P_PERIOD_TYPE = 'QTD' ) then
271        P_BALJOIN := '(nvl(glb.quarter_to_date_dr,0) + nvl(glb.period_net_dr,0)) - (nvl(glb.quarter_to_date_cr,0) + nvl(glb.period_net_cr,0)) <> 0';
272       elsif (P_PERIOD_TYPE = 'PJTD' ) then
273        P_BALJOIN := '(nvl(glb.project_to_date_dr,0) + nvl(glb.period_net_dr,0)) - (nvl(glb.project_to_date_cr,0) + nvl(glb.period_net_cr,0)) <> 0';
274        end if;
275    end if;
276 
277 	IF (P_BALJOIN IS NULL) then
278 		P_BALJOIN := '1=1';
279 	END IF;
280 
281       if (P_PERIOD_TYPE = 'PATD') then
282 	P_BALJOINAB := '(nvl(gdb.period_average_to_date_num, 0) <> 0)';
283    elsif (P_PERIOD_TYPE = 'QATD') then
284 	P_BALJOINAB := '(nvl(gdb.quarter_average_to_date_num, 0) <> 0)';
285    elsif (P_PERIOD_TYPE = 'YATD') then
286 	P_BALJOINAB := '(nvl(gdb.year_average_to_date_num, 0) <> 0)';
287    elsif (P_PERIOD_TYPE = 'EOD') then
288 	P_BALJOINAB := '(nvl(gdb.end_of_date_balance_num, 0) <> 0)';
289    end if;
290 	  IF (P_BALJOINAB IS NULL) then
291 		P_BALJOINAB := '1=1';
292 	END IF;
293       if (P_PERIOD_TYPE = 'PATD' OR P_PERIOD_TYPE = 'QATD' OR
294        P_PERIOD_TYPE = 'YATD' OR P_PERIOD_TYPE = 'EOD') then
295 	SELECT period_set_name INTO PeriodSetName
296 	FROM   GL_LEDGERS
297 	WHERE  ledger_id = SubsidLedgerID;
298    end if;
299 
300 END;
301 
302 /*SRW.REFERENCE(STRUCT_NUM);*/null;
303 
304 
305  null;
306 /*SRW.REFERENCE(STRUCT_NUM);*/null;
307 
308 
309  null;  return (TRUE);
310 end;
311 
312 procedure gl_get_consolidation_info(
313                            cons_id number, cons_name out nocopy varchar2,
314                            method out varchar2, curr_code out nocopy varchar2,
315                            from_ledid out number, to_ledid out nocopy number,
316                            description out nocopy varchar2,
317                            errbuf out nocopy varchar2) is
318   begin
319     select glc.name, glc.method, glc.from_currency_code,
320            glc.from_ledger_id, glc.to_ledger_id,
321            glc.description
322     into cons_name, method, curr_code, from_ledid, to_ledid,
323          description
324     from gl_consolidation glc
325     where glc.consolidation_id = cons_id;
326 
327   EXCEPTION
328     WHEN NO_DATA_FOUND THEN
329       errbuf := gl_message.get_message('GL_PLL_INVALID_CONSOLID_ID', 'Y',
330                                    'CID', to_char(cons_id));
331   end;
332 
333 procedure gl_check_cons_accounts(
334                            cons_id  number,
335                            avg_flag varchar2,
336                            actual_flag varchar2,
337                            amount_type varchar2,
338                            records_present out nocopy varchar2
339                            ) is
340   begin
341     SELECT 'Y' INTO P_Accounts_Clause
342     FROM   GL_CONSOLIDATION_ACCOUNTS CA
343     WHERE  CA.consolidation_id = cons_id
344     AND    CA.consolidation_run_id =
345            ( SELECT max(CH.consolidation_run_id)
346              FROM   GL_CONSOLIDATION_HISTORY CH
347              WHERE  CH.consolidation_id = cons_id
348              AND    CH.average_consolidation_flag = avg_flag
349              AND    CH.actual_flag = actual_flag
350              AND    CH.amount_type = amount_type )
351     AND ROWNUM < 2;
352   EXCEPTION
353     WHEN NO_DATA_FOUND THEN
354       P_Accounts_Clause := 'N';
355   end;
356 
357 --Functions to refer Oracle report placeholders--
358 
359  Function STRUCT_NUM_p return varchar2 is
360 	Begin
361 	 return STRUCT_NUM;
362 	 END;
363  Function CONSOLIDATION_NAME_p return varchar2 is
364 	Begin
365 	 return CONSOLIDATION_NAME;
366 	 END;
367  Function ParentLedgerName_p return varchar2 is
368 	Begin
369 	 return ParentLedgerName;
370 	 END;
371  Function SubsidLedgerName_p return varchar2 is
372 	Begin
373 	 return SubsidLedgerName;
374 	 END;
375  Function ConsCurrencyCode_p return varchar2 is
376 	Begin
377 	 return ConsCurrencyCode;
378 	 END;
379  Function SubsidLedgerId_p return number is
380 	Begin
381 	 return SubsidLedgerId;
382 	 END;
383  Function FromCurrencyCode_p return varchar2 is
384 	Begin
385 	 return FromCurrencyCode;
386 	 END;
387  Function PeriodSetName_p return varchar2 is
388 	Begin
389 	 return PeriodSetName;
390 	 END;
391 END GL_GLXUSA_XMLP_PKG ;
392 
393