DBA Data[Home] [Help]

PACKAGE BODY: APPS.APRX_PY

Source


1 package body aprx_py as
2 /* $Header: aprxpyb.pls 120.8.12020000.3 2012/08/08 21:33:45 lnilacan ship $ */
3 
4 --
5 -- Structure to hold values of all parameters
6 --
7 type param_t is record (
8 	payment_date_start		date,
9 	payment_date_end			date,
10 	payment_currency_code		varchar2(15),
11 	payment_bank_account_name	varchar2(80),
12 	payment_method			varchar2(25),
13 	payment_type_flag			varchar2(25),
14 	ledger_id            		number,     /* bug8760710 */
15       org_id				number, 	/* bug 13941628 */
16 	payment_actual_date		varchar2(20)
17 );
18 param param_t;
19 
20 --
21 -- Main AP Payment RX Report function
22 --
23 procedure payment_register_run (
24 	p_payment_date_start in date,
25 	p_payment_date_end in date,
26 	p_payment_currency_code in varchar2,
27 	p_payment_bank_account_name in varchar2,
28 	p_payment_method in varchar2,
29 	p_payment_type_flag in varchar2,
30 	p_ledger_id     in      number,         /* bug8760710 */
31       p_org_id	in number, /* bug 13941628 */
32 	request_id	in	number,
33 	retcode	out NOCOPY	number,
34 	errbuf	out NOCOPY	varchar2
35 )
36 is
37 begin
38   fa_rx_util_pkg.debug('aprx_py.payment_register_run()+');
39 
40   --
41   -- Assign parameters to global variable
42   -- These values will be used within the before_report trigger
43   param.payment_date_start := Trunc(p_payment_date_start);
44   param.payment_date_end := Trunc(p_payment_date_end)+1-1/24/60/60;
45   param.payment_currency_code := p_payment_currency_code;
46   param.payment_bank_account_name := p_payment_bank_account_name;
47   param.payment_method := p_payment_method;
48   param.payment_type_flag := p_payment_type_flag;
49   param.ledger_id := p_ledger_id;           /* bug8760710 */
50   param.org_id := p_org_id;			/* bug 13941628 */
51 
52 
53   --
54   -- Initialize request
55   fa_rx_util_pkg.init_request('aprx_py.payment_run', request_id);
56 
57   --
58   -- Assign report triggers for this report.
59   -- This report has one section called PAYMENT
60   -- NOTE:
61   --    before_report is assigned 'aprx_py.register_before_report;'
62   --    bind is assigned 'aprx_py.register_bind(:CURSOR_SELECT);'
63   --    There is no trigger assigned for after_fetch or after_report
64   --  Each trigger event is assigned with the full procedure name (including package name).
65   --  They end with a ';'.
66   --  The bind trigger requires one host variable ':CURSOR_SELECT'.
67   fa_rx_util_pkg.assign_report('PAYMENT',
68 		true,
69 		'aprx_py.register_before_report;',
70 		'aprx_py.register_bind(:CURSOR_SELECT);',
71 		null, null);
72 
73   --
74   -- Run the report. Make sure to pass as parameter the same
75   -- value passed to p_calling_proc in init_request().
76   fa_rx_util_pkg.run_report('aprx_py.payment_run', retcode, errbuf);
77 
81 
78   fa_rx_util_pkg.debug('aprx_py.payment_register_run()-');
79 end payment_register_run;
80 
82 --
83 -- This procedure is a plug-in for the Thailand Payment Actual Report
84 --
85 procedure payment_actual_run (
86 	p_payment_date_start 	in date,
87 	p_payment_date_end 	in date,
88 	p_payment_currency_code in varchar2,
89 	p_payment_bank_account_name in varchar2,
90 	p_payment_method 	in varchar2,
91 	p_payment_type_flag 	in varchar2,
92 	p_ledger_id             in number,         /* bug8760710 */
93 	request_id		in number,
94 	retcode	out NOCOPY	number,
95 	errbuf	out NOCOPY	varchar2
96 )
97 is
98 begin
99   fa_rx_util_pkg.debug('aprx_py.payment_actual_run()+');
100 
101   --
102   -- Initialize the request
103   fa_rx_util_pkg.init_request('aprx_py.payment_actual_run', request_id);
104 
105 
106   --
107   -- Call the main payment report
108   payment_register_run(	p_payment_date_start,
109 		p_payment_date_end,
110 		p_payment_currency_code,
111 		p_payment_bank_account_name,
112 		p_payment_method,
113 		p_payment_type_flag,
114 		p_ledger_id,                   /* bug8760710 */
115             null, 				/* bug 13941628 */
116 		request_id,
117 		retcode,
118 		errbuf);
119 
120   --
121   -- Assign triggers specific to this report
122   -- Make sure that you make your assignment to the correct section ('PAYMENT')
123   fa_rx_util_pkg.assign_report('PAYMENT',
124 		true,
125 		'aprx_py.actual_before_report;',
126 		null, null, null);
127 
128   --
129   -- Run the report.
130   -- Make sure to pass the p_calling_proc assigned from within this procedure ('aprx_py.payment_actual_run')
131   fa_rx_util_pkg.run_report('aprx_py.payment_actual_run', retcode, errbuf);
132 
133   fa_rx_util_pkg.debug('aprx_py.payment_actual_run()-');
134 end payment_actual_run;
135 
136 
137 --
138 -- This is the before report trigger for the main payment_run report.
139 procedure register_before_report
140 is
141   l_param_where varchar2(2000);
142 begin
143   fa_rx_util_pkg.debug('aprx_py.register_before_report()+');
144 
145   --
146   -- Figure out NOCOPY the where clause for the parameters
147   --
148   l_param_where := null;
149 
150   if param.payment_date_start = param.payment_date_end then
151 	l_param_where := l_param_where || '
152 and	ch.check_date = :b_payment_date_start';
153   elsif param.payment_date_start is not null and param.payment_date_end is not null then
154 	l_param_where := l_param_where || '
155 and	ch.check_date between :b_payment_date_start and :b_payment_date_end';
156   elsif param.payment_date_start is not null then
157 	l_param_where := l_param_where || '
158 and	ch.check_date >= :b_payment_date_start';
159   elsif param.payment_date_end is not null then
160 	l_param_where := l_param_where || '
161 and	ch.check_date <= :b_payment_date_end';
162   end if;
163 
164   if param.payment_currency_code is not null then
165 	l_param_where := l_param_where || '
166 and	ch.currency_code = :b_payment_currency_code';
167   end if;
168 
169   if param.payment_bank_account_name is not null then
170 	l_param_where := l_param_where || '
171 and	ch.bank_account_name = :b_payment_bank_account_name';
172   end if;
173 
174   if param.payment_method is not null then
175 	l_param_where := l_param_where ||
176 /* Commented and added for bug 12432604 */
177 /*and	ch.payment_method_lookup_code = :b_payment_method'; */
178 ' and   ch.payment_method_code = :b_payment_method';
179   end if;
180 
181   if param.payment_type_flag is not null then
182 	l_param_where := l_param_where || '
183 and	ch.payment_type_flag = :b_payment_type_flag';
184   end if;
185 
186  /* Start of bug8760710 */
190       l_param_where:=l_param_where||'
187     /* bug13941628, ensure it is not -9999 either*/
188 
189   if  ( nvl(param.ledger_id,-9999) <> -9999) then
191        and sys.set_of_books_id =:b_ledger_id ';
192   end if;
193   /* bug13941628 */
194   /* End of bug8760710 */
195 
196   /* bug13941628, if org_id is not null or -9999, then report is running for OU level*/
197 
198   if  (nvl(param.org_id,-9999) <> -9999) then
199       l_param_where:=l_param_where||'
200        and sys.org_id = :b_org_id ';
201   end if;
202 
203   /* bug13941628 */
204 
205 
206 
207 
208   --
209   -- Assign SELECT list
210   --
211   -- fa_rx_util_pkg.assign_column(#, select, insert, place, type, len);
212 -->>SELECT_START<<--
213 	fa_rx_util_pkg.assign_column('ORGANIZATION_NAME', null, 'ORGANIZATION_NAME', 'aprx_py.var.ORGANIZATION_NAME', '');
217 	fa_rx_util_pkg.assign_column('PAYMENT_DOC_SEQ_NAME', 'CHDOC.NAME', 'PAYMENT_DOC_SEQ_NAME', 'aprx_py.var.PAYMENT_DOC_SEQ_NAME', 'VARCHAR2', 30);
214 	fa_rx_util_pkg.assign_column('FUNCTIONAL_CURRENCY_CODE', null, 'FUNCTIONAL_CURRENCY_CODE', 'aprx_py.var.FUNCTIONAL_CURRENCY_CODE', 'VARCHAR2', 15);
215 	fa_rx_util_pkg.assign_column('PAYMENT_NUMBER', 'CH.CHECK_NUMBER', 'PAYMENT_NUMBER', 'aprx_py.var.PAYMENT_NUMBER', 'NUMBER');
216 	fa_rx_util_pkg.assign_column('PAYMENT_TYPE', 'CHTYPLKP.DISPLAYED_FIELD', 'PAYMENT_TYPE', 'aprx_py.var.PAYMENT_TYPE', 'VARCHAR2', 20);
218 	fa_rx_util_pkg.assign_column('PAYMENT_DOC_SEQ_VALUE', 'CH.DOC_SEQUENCE_VALUE', 'PAYMENT_DOC_SEQ_VALUE', 'aprx_py.var.PAYMENT_DOC_SEQ_VALUE', 'NUMBER');
219 	fa_rx_util_pkg.assign_column('PAYMENT_DATE', 'CH.CHECK_DATE', 'PAYMENT_DATE', 'aprx_py.var.PAYMENT_DATE', 'DATE');
220 	fa_rx_util_pkg.assign_column('PAYMENT_CURRENCY_CODE', 'CH.CURRENCY_CODE', 'PAYMENT_CURRENCY_CODE', 'aprx_py.var.PAYMENT_CURRENCY_CODE', 'VARCHAR2', 15);
221 	fa_rx_util_pkg.assign_column('ORIG_PAYMENT_AMOUNT', 'CH.AMOUNT', 'ORIG_PAYMENT_AMOUNT', 'aprx_py.var.ORIG_PAYMENT_AMOUNT', 'NUMBER');
222 	fa_rx_util_pkg.assign_column('ORIG_PAYMENT_BASE_AMOUNT', 'NVL(CH.BASE_AMOUNT, CH.AMOUNT)', 'ORIG_PAYMENT_BASE_AMOUNT', 'aprx_py.var.ORIG_PAYMENT_BASE_AMOUNT', 'NUMBER');
223 	fa_rx_util_pkg.assign_column('PAYMENT_AMOUNT', 'DECODE(CH.VOID_DATE, NULL, CH.AMOUNT, 0)', 'PAYMENT_AMOUNT', 'aprx_py.var.PAYMENT_AMOUNT', 'NUMBER');
224 	fa_rx_util_pkg.assign_column('PAYMENT_BASE_AMOUNT', 'DECODE(CH.VOID_DATE, NULL, NVL(CH.BASE_AMOUNT, CH.AMOUNT), 0)', 'PAYMENT_BASE_AMOUNT', 'aprx_py.var.PAYMENT_BASE_AMOUNT', 'NUMBER');
225 	fa_rx_util_pkg.assign_column('PAYMENT_EXCHANGE_RATE', 'CH.EXCHANGE_RATE', 'PAYMENT_EXCHANGE_RATE', 'aprx_py.var.PAYMENT_EXCHANGE_RATE', 'NUMBER');
226 	fa_rx_util_pkg.assign_column('PAYMENT_EXCHANGE_DATE', 'CH.EXCHANGE_DATE', 'PAYMENT_EXCHANGE_DATE', 'aprx_py.var.PAYMENT_EXCHANGE_DATE', 'DATE');
227 	fa_rx_util_pkg.assign_column('PAYMENT_EXCHANGE_TYPE', 'CH.EXCHANGE_RATE_TYPE', 'PAYMENT_EXCHANGE_TYPE', 'aprx_py.var.PAYMENT_EXCHANGE_TYPE', 'VARCHAR2', 30);
228 	fa_rx_util_pkg.assign_column('PAYMENT_CLEARED_DATE', 'CH.CLEARED_DATE', 'PAYMENT_CLEARED_DATE', 'aprx_py.var.PAYMENT_CLEARED_DATE', 'DATE');
229 	fa_rx_util_pkg.assign_column('PAYMENT_CLEARED_AMOUNT', 'CH.CLEARED_AMOUNT', 'PAYMENT_CLEARED_AMOUNT', 'aprx_py.var.PAYMENT_CLEARED_AMOUNT', 'NUMBER');
230 	fa_rx_util_pkg.assign_column('PAYMENT_CLEARED_BASE_AMOUNT', 'CH.CLEARED_BASE_AMOUNT', 'PAYMENT_CLEARED_BASE_AMOUNT', 'aprx_py.var.PAYMENT_CLEARED_BASE_AMOUNT', 'NUMBER');
231 	fa_rx_util_pkg.assign_column('PAYMENT_CLEARED_EXC_RATE', 'CH.CLEARED_EXCHANGE_RATE', 'PAYMENT_CLEARED_EXC_RATE', 'aprx_py.var.PAYMENT_CLEARED_EXC_RATE', 'NUMBER');
232 	fa_rx_util_pkg.assign_column('PAYMENT_CLEARED_EXC_DATE', 'CH.CLEARED_EXCHANGE_DATE', 'PAYMENT_CLEARED_EXC_DATE', 'aprx_py.var.PAYMENT_CLEARED_EXC_DATE', 'DATE');
233 	fa_rx_util_pkg.assign_column('PAYMENT_CLEARED_EXC_TYPE', 'CH.CLEARED_EXCHANGE_RATE_TYPE', 'PAYMENT_CLEARED_EXC_TYPE', 'aprx_py.var.PAYMENT_CLEARED_EXC_TYPE', 'VARCHAR2', 30);
234 	fa_rx_util_pkg.assign_column('PAYMENT_FUTURE_PAY_DUE_DATE', 'CH.FUTURE_PAY_DUE_DATE', 'PAYMENT_FUTURE_PAY_DUE_DATE', 'aprx_py.var.PAYMENT_FUTURE_PAY_DUE_DATE', 'DATE');
235 	fa_rx_util_pkg.assign_column('PAYMENT_VOID_FLAG', 'DECODE(CH.VOID_DATE, NULL, :b_nls_no, :b_nls_yes)', 'PAYMENT_VOID_FLAG', 'aprx_py.var.PAYMENT_VOID_FLAG', 'VARCHAR2', 10);
236 	fa_rx_util_pkg.assign_column('PAYMENT_PAY_METHOD', 'PMLKP.PAYMENT_METHOD_NAME', 'PAYMENT_PAY_METHOD', 'aprx_py.var.PAYMENT_PAY_METHOD', 'VARCHAR2', 25);
237 	fa_rx_util_pkg.assign_column('PAYMENT_STATUS', 'PSLKP.DISPLAYED_FIELD', 'PAYMENT_STATUS', 'aprx_py.var.PAYMENT_STATUS', 'VARCHAR2', 50);
238 -- Bug 6967238
239 	fa_rx_util_pkg.assign_column('PAYMENT_DOC_NAME', 'CS1.PAYMENT_DOCUMENT_NAME', 'PAYMENT_DOC_NAME', 'aprx_py.var.PAYMENT_DOC_NAME', 'VARCHAR2', 20);
240 	fa_rx_util_pkg.assign_column('PAYMENT_DISBURSEMENT_TYPE', 'CSLKP.DISPLAYED_FIELD', 'PAYMENT_DISBURSEMENT_TYPE', 'aprx_py.var.PAYMENT_DISBURSEMENT_TYPE', 'VARCHAR2', 25);
241 	fa_rx_util_pkg.assign_column('SUPPLIER_NAME', 'CH.VENDOR_NAME', 'SUPPLIER_NAME', 'aprx_py.var.SUPPLIER_NAME', 'VARCHAR2', 240);
242 	Fa_Rx_Util_Pkg.Assign_Column('SUPPLIER_NAME_ALT', 'V.VENDOR_NAME_ALT', 'SUPPLIER_NAME_ALT', 'aprx_py.var.SUPPLIER_NAME_ALT', 'VARCHAR2', 320);
243 	fa_rx_util_pkg.assign_column('SUPPLIER_SITE_CODE', 'VS.VENDOR_SITE_CODE', 'SUPPLIER_SITE_CODE', 'aprx_py.var.SUPPLIER_SITE_CODE', 'VARCHAR2', 15);
244 	fa_rx_util_pkg.assign_column('SUPPLIER_SITE_CODE_ALT', 'VS.VENDOR_SITE_CODE_ALT', 'SUPPLIER_SITE_CODE_ALT', 'aprx_py.var.SUPPLIER_SITE_CODE_ALT', 'VARCHAR2', 320);
245 	fa_rx_util_pkg.assign_column('SUPPLIER_ADDRESS_LINE1', 'CH.ADDRESS_LINE1', 'SUPPLIER_ADDRESS_LINE1', 'aprx_py.var.SUPPLIER_ADDRESS_LINE1', 'VARCHAR2', 240);
246 	fa_rx_util_pkg.assign_column('SUPPLIER_ADDRESS_LINE2', 'CH.ADDRESS_LINE2', 'SUPPLIER_ADDRESS_LINE2', 'aprx_py.var.SUPPLIER_ADDRESS_LINE2', 'VARCHAR2', 240);
247 	fa_rx_util_pkg.assign_column('SUPPLIER_ADDRESS_LINE3', 'CH.ADDRESS_LINE3', 'SUPPLIER_ADDRESS_LINE3', 'aprx_py.var.SUPPLIER_ADDRESS_LINE3', 'VARCHAR2', 240);
248 	fa_rx_util_pkg.assign_column('SUPPLIER_ADDRESS_ALT', 'VS.ADDRESS_LINES_ALT', 'SUPPLIER_ADDRESS_ALT', 'aprx_py.var.SUPPLIER_ADDRESS_ALT', 'VARCHAR2', 560);
249 	fa_rx_util_pkg.assign_column('SUPPLIER_CITY', 'CH.CITY', 'SUPPLIER_CITY', 'aprx_py.var.SUPPLIER_CITY', 'VARCHAR2', 25);
250 	fa_rx_util_pkg.assign_column('SUPPLIER_STATE', 'CH.STATE', 'SUPPLIER_STATE', 'aprx_py.var.SUPPLIER_STATE', 'VARCHAR2', 150);
251 	fa_rx_util_pkg.assign_column('SUPPLIER_PROVINCE', 'CH.PROVINCE', 'SUPPLIER_PROVINCE', 'aprx_py.var.SUPPLIER_PROVINCE', 'VARCHAR2', 150);
252 	fa_rx_util_pkg.assign_column('SUPPLIER_POSTAL_CODE', 'CH.ZIP', 'SUPPLIER_POSTAL_CODE', 'aprx_py.var.SUPPLIER_POSTAL_CODE', 'VARCHAR2', 20);
253 	fa_rx_util_pkg.assign_column('SUPPLIER_COUNTRY', 'CH.COUNTRY', 'SUPPLIER_COUNTRY', 'aprx_py.var.SUPPLIER_COUNTRY', 'VARCHAR2', 25);
254 	fa_rx_util_pkg.assign_column('SUPPLIER_TERRITORY', 'VSTERR.TERRITORY_SHORT_NAME', 'SUPPLIER_TERRITORY', 'aprx_py.var.SUPPLIER_TERRITORY', 'VARCHAR2', 80);
255 	fa_rx_util_pkg.assign_column('INT_BANK_NAME', 'B.BANK_NAME', 'INT_BANK_NAME', 'aprx_py.var.INT_BANK_NAME', 'VARCHAR2', 60);
256 	fa_rx_util_pkg.assign_column('INT_BANK_NAME_ALT', 'B.BANK_NAME_ALT', 'INT_BANK_NAME_ALT', 'aprx_py.var.INT_BANK_NAME_ALT', 'VARCHAR2', 320);
260 	fa_rx_util_pkg.assign_column('INT_BANK_NUM', 'CH.BANK_NUM', 'INT_BANK_NUM', 'aprx_py.var.INT_BANK_NUM', 'VARCHAR2', 30);
257 	fa_rx_util_pkg.assign_column('INT_BANK_NUMBER', 'B.BANK_NUMBER', 'INT_BANK_NUMBER', 'aprx_py.var.INT_BANK_NUMBER', 'VARCHAR2', 30);
258 	fa_rx_util_pkg.assign_column('INT_BANK_BRANCH_NAME', 'B.BANK_BRANCH_NAME', 'INT_BANK_BRANCH_NAME', 'aprx_py.var.INT_BANK_BRANCH_NAME', 'VARCHAR2', 60);
259 	fa_rx_util_pkg.assign_column('INT_BANK_BRANCH_NAME_ALT', 'B.BANK_BRANCH_NAME_ALT', 'INT_BANK_BRANCH_NAME_ALT', 'aprx_py.var.INT_BANK_BRANCH_NAME_ALT', 'VARCHAR2', 320);
261 	fa_rx_util_pkg.assign_column('INT_BANK_ACCOUNT_NAME', 'CH.BANK_ACCOUNT_NAME', 'INT_BANK_ACCOUNT_NAME', 'aprx_py.var.INT_BANK_ACCOUNT_NAME', 'VARCHAR2', 80);
262 	fa_rx_util_pkg.assign_column('INT_BANK_ACCOUNT_NAME_ALT', 'BA.BANK_ACCOUNT_NAME_ALT', 'INT_BANK_ACCOUNT_NAME_ALT', 'aprx_py.var.INT_BANK_ACCOUNT_NAME_ALT', 'VARCHAR2', 320);
263 	fa_rx_util_pkg.assign_column('INT_BANK_ACCOUNT_NUM', 'BA.BANK_ACCOUNT_NUM', 'INT_BANK_ACCOUNT_NUM', 'aprx_py.var.INT_BANK_ACCOUNT_NUM', 'VARCHAR2', 30); --11831834
264 	fa_rx_util_pkg.assign_column('INT_BANK_CURRENCY_CODE', 'BA.CURRENCY_CODE', 'INT_BANK_CURRENCY_CODE', 'aprx_py.var.INT_BANK_CURRENCY_CODE', 'VARCHAR2', 15);
265 -->>SELECT_END<<--
266 
267 
268   --
269   -- Assign From Clause
270   --
271   fa_rx_util_pkg.From_Clause :=
272 	'AP_CHECKS CH,
273 	FND_DOCUMENT_SEQUENCES CHDOC,
274 	IBY_PAYMENT_METHODS_VL PMLKP,
275 	AP_LOOKUP_CODES PSLKP,
276 	AP_LOOKUP_CODES CSLKP,
277 	AP_LOOKUP_CODES CHTYPLKP,
278 	PO_VENDORS V,
279 	PO_VENDOR_SITES VS,
280 	FND_TERRITORIES_VL VSTERR,
281 	CE_PAYMENT_DOCUMENTS CS1,
282 	CE_BANK_ACCT_USES_ALL CBAU,
283 	CE_BANK_BRANCHES_V B,
284 	CE_BANK_ACCOUNTS ba,
285 	ap_system_parameters sys';           /* bug8760710 */
286 	/*AP_BANK_BRANCHES B,
287 	AP_BANK_ACCOUNTS ba'; Bug 6967238
288 */
289   --
290   -- Assign Where Clause (including the where clause from the parameters)
291   --
292   fa_rx_util_pkg.Where_Clause :=
293 	'CH.DOC_SEQUENCE_ID = CHDOC.DOC_SEQUENCE_ID(+)
294 AND
295 	CH.PAYMENT_DOCUMENT_ID = CS1.PAYMENT_DOCUMENT_ID(+) AND
296 	DECODE(CS1.MANUAL_PAYMENTS_ONLY_FLAG,''Y'', ''RECORDED'', ''N'', ''COMBINED'') = CSLKP.lookup_code(+) AND
297 	CSLKP.lookup_type(+) = ''DISBURSEMENT TYPE'' AND
298 	CH.PAYMENT_METHOD_CODE = PMLKP.PAYMENT_METHOD_CODE AND
299 	CH.STATUS_LOOKUP_CODE = PSLKP.LOOKUP_CODE AND
300 	PSLKP.LOOKUP_TYPE = ''CHECK STATE'' AND
301 	CH.PAYMENT_TYPE_FLAG = CHTYPLKP.LOOKUP_CODE AND
302 	-- bug14406332 VS.org_id =sys.org_id AND       /* 8760710 */
303       CH.org_id = sys.org_id AND                   --added for bug14406332
304 	CHTYPLKP.LOOKUP_TYPE = ''PAYMENT TYPE''
305 AND
306 	CH.VENDOR_ID = V.vendor_id(+) AND
307 	CH.VENDOR_SITE_ID = VS.vendor_site_id(+) AND
308 	CH.COUNTRY = VSTERR.TERRITORY_CODE(+)
309 AND
310 	BA.BANK_BRANCH_ID = B.BRANCH_PARTY_ID AND
311   	CH.CE_BANK_ACCT_USE_ID = cbau.BANK_ACCT_USE_ID AND
312 	cbau.bank_account_id = BA.bank_account_id
313     '|| l_param_where; -- Bug 6967238
314 
315 
316   --
317   -- Initialize some variables
318   -- Commenting for bug8760710
319 /*
320   SELECT sob.name, sob.currency_code
321   INTO aprx_py.var.ORGANIZATION_NAME, aprx_py.var.FUNCTIONAL_CURRENCY_CODE
322   FROM ap_system_parameters sys, gl_sets_of_books sob
323   WHERE sys.set_of_books_id = sob.set_of_books_id;
324 */
325   --Commenting for bug8760710
326 
327 /* Start of bug8760710 */
328   /* bug13941628 Use this sql only if report runs by ledger context */
329   if (nvl(param.ledger_id,-9999) <> -9999) then
330     SELECT sob.name, sob.currency_code
331     INTO aprx_py.var.ORGANIZATION_NAME, aprx_py.var.FUNCTIONAL_CURRENCY_CODE
332     FROM  gl_sets_of_books sob
333     WHERE  sob.set_of_books_id=param.ledger_id ;
334   END IF;
335  /* bug13941628 */
336 /* End of bug8760710 */
337 
338 
339 /* bug13941628 Use this sql only if report runs by OU context */
340   if (nvl(param.org_id,-9999) <> -9999) then
341    SELECT sob.name, sob.currency_code
342     INTO aprx_py.var.ORGANIZATION_NAME, aprx_py.var.FUNCTIONAL_CURRENCY_CODE
343     FROM ap_system_parameters sys, gl_sets_of_books sob
344     WHERE sys.set_of_books_id = sob.set_of_books_id
345     and sys.org_id = param.org_id;
346   END IF;
347  /* bug13941628 */
348 
349   fa_rx_util_pkg.debug('aprx_py.register_before_report()-');
350 end register_before_report;
351 
352 
353 --
354 -- This is the bind trigger for the main payment_run report
355 procedure register_bind(c in integer)
356 is
357   l_nls_yes varchar2(10);
358   l_nls_no varchar2(10);
359 begin
360   fa_rx_util_pkg.debug('aprx_py.register_bind()+');
361 
362   --
363   -- These bind variables were included in the WHERE clause.
364   --
365   if param.payment_date_start is not null then
366 	fa_rx_util_pkg.debug('Binding b_payment_date_start.');
367 	dbms_sql.bind_variable(c, 'b_payment_date_start', param.payment_date_start);
368   end if;
369   if param.payment_date_end is not null and param.payment_date_end <> param.payment_date_start then
370 	fa_rx_util_pkg.debug('Binding b_payment_date_end.');
371 	dbms_sql.bind_variable(c, 'b_payment_date_end', param.payment_date_end);
372   end if;
373 
374   if param.payment_currency_code is not null then
375 	fa_rx_util_pkg.debug('Binding b_payment_currency_code.');
376 	dbms_sql.bind_variable(c, 'b_payment_currency_code', param.payment_currency_code);
377   end if;
378 
379   if param.payment_bank_account_name is not null then
380 	fa_rx_util_pkg.debug('Binding b_payment_bank_account_name.');
381 	dbms_sql.bind_variable(c, 'b_payment_bank_account_name', param.payment_bank_account_name);
382   end if;
383 
384   if param.payment_method is not null then
385 	fa_rx_util_pkg.debug('Binding b_payment_method');
386 	dbms_sql.bind_variable(c, 'b_payment_method', param.payment_method);
390 	fa_rx_util_pkg.debug('Binding b_payment_type_flag.');
387   end if;
388 
389   if param.payment_type_flag is not null then
391 	dbms_sql.bind_variable(c, 'b_payment_type_flag', param.payment_type_flag);
392   end if;
393 
394   /* Start of bug8760710 */
395    /* bug13941628 Also ensure ledger_id is not -9999*/
396     if (nvl(param.ledger_id,-9999) <> -9999) then
397 	fa_rx_util_pkg.debug('Binding b_ledger_id');
398 	dbms_sql.bind_variable(c, 'b_ledger_id', param.ledger_id);
399     end if;
400     /* bug13941628 */
401   /* End of bug8760710 */
402 
403    /* bug13941628 If report is run by OU context*/
404    if (nvl(param.org_id,-9999) <> -9999) then
405 	fa_rx_util_pkg.debug('Binding b_org_id');
406 	dbms_sql.bind_variable(c, 'b_org_id', param.org_id);
407     end if;
408    /* bug13941628 */
409 
410   --
411   -- This bind variable was included in the select list.
412   --
413   select substrb(meaning,1,10) into l_nls_yes from fnd_lookups
414 	where lookup_type='YES_NO' and lookup_code='Y';
415   select substrb(meaning,1,10) into l_nls_no from fnd_lookups
416 	where lookup_type='YES_NO' and lookup_code='N';
417   fa_rx_util_pkg.debug('Binding b_nls_yes and b_nls_no.');
418   dbms_sql.bind_variable(c, 'b_nls_yes', l_nls_yes);
419   dbms_sql.bind_variable(c, 'b_nls_no', l_nls_no);
420 
421   fa_rx_util_pkg.debug('aprx_py.register_bind()-');
422 end register_bind;
423 
424 
425 
426 --
427 -- This is the before report trigger for the payment_actual_run report
428 procedure actual_before_report
429 is
430 begin
431   fa_rx_util_pkg.debug('aprx_py.actual_before_report()+');
432 
433   --
434   -- Assign another column specific to this report
435 	fa_rx_util_pkg.assign_column('INV_PAY_AMOUNT', 'INVPAY.AMOUNT', 'INV_PAY_AMOUNT', 'aprx_py.var.INV_PAY_AMOUNT', 'NUMBER');
436 	fa_rx_util_pkg.assign_column('INV_PAY_BASE_AMOUNT', 'nvl(INVPAY.PAYMENT_BASE_AMOUNT,INVPAY.AMOUNT)', 'INV_PAY_BASE_AMOUNT', 'aprx_py.var.INV_PAY_BASE_AMOUNT', 'NUMBER');
437 	fa_rx_util_pkg.assign_column('INV_PAY_DISCOUNT_TAKEN', 'INVPAY.DISCOUNT_TAKEN', 'INV_PAY_DISCOUNT_TAKEN', 'aprx_py.var.INV_PAY_DISCOUNT_TAKEN', 'NUMBER');
438 	fa_rx_util_pkg.assign_column('INVOICE_NUM', 'INV1.INVOICE_NUM', 'INVOICE_NUM', 'aprx_py.var.INVOICE_NUM', 'VARCHAR2', 50);
439 	fa_rx_util_pkg.assign_column('INVOICE_DATE', 'INV1.INVOICE_DATE', 'INVOICE_DATE', 'aprx_py.var.INVOICE_DATE', 'DATE');
440 	fa_rx_util_pkg.assign_column('INVOICE_CURRENCY_CODE', 'INV1.INVOICE_CURRENCY_CODE', 'INVOICE_CURRENCY_CODE', 'aprx_py.var.INVOICE_CURRENCY_CODE', 'VARCHAR2', 15);
441 	fa_rx_util_pkg.assign_column('INVOICE_AMOUNT', 'INV1.INVOICE_AMOUNT', 'INVOICE_AMOUNT', 'aprx_py.var.INVOICE_AMOUNT', 'NUMBER');
442 	fa_rx_util_pkg.assign_column('INVOICE_BASE_AMOUNT', 'NVL(INV1.BASE_AMOUNT, INV1.INVOICE_AMOUNT)', 'INVOICE_BASE_AMOUNT', 'aprx_py.var.INVOICE_BASE_AMOUNT', 'NUMBER');
443 	fa_rx_util_pkg.assign_column('INVOICE_DESCRIPTION', 'INV1.DESCRIPTION', 'INVOICE_DESCRIPTION', 'aprx_py.var.INVOICE_DESCRIPTION', 'VARCHAR2', 240);
444 
445 
446 
447   -- Add to the  WHERE clause specific to this report
448   fa_rx_util_pkg.From_Clause := fa_rx_util_pkg.From_Clause ||',
449 	AP_INVOICE_PAYMENTS INVPAY,
450 	AP_INVOICES inv1';
451 
452   fa_rx_util_pkg.Where_Clause := fa_rx_util_pkg.Where_Clause || '
453 	and CH.STATUS_LOOKUP_CODE NOT IN (''VOIDED'', ''SET UP'')
454 	and CH.CHECK_ID = INVPAY.CHECK_ID
455 	and INVPAY.INVOICE_ID = INV1.invoice_id';
456 
457     --
458     -- NOTE : Differences compared to original Japanese Actual Payment Report
459     -- The original used the set_of_books_id and included in the where clause a comparison with
460     -- ap_invoices.set_of_books_id
461     -- ap_bank_accounts.set_of_books_id
462     -- po_vendors.set_of_books_id
463     -- While the first two (invoices, bank accounts) do nothing for the select statement either
464     -- way, the last one (vendors) causes a problem in the original. Vendors is a shared entity
465     -- and you should not be looking at the set_of_books_id. I may be missing something, but
466     -- the column seems unnecessary.
467     --
468     -- Additionally, the original compared ap_checks.vendor_name to po_vendors.vendor_name.
469     -- This also is incorrect since users can change the vendor name when entering in a payment.
470     -- You should always compare ap_check.vendor_id to po_vendors.vendor_id when joining these
471     -- two tables.
472     --
473 
474   fa_rx_util_pkg.debug('aprx_py.actual_before_report()-');
475 end actual_before_report;
476 
477 
478 end aprx_py;