DBA Data[Home] [Help]

PACKAGE BODY: APPS.AP_REPORTS_MLS_LANG

Source


1 PACKAGE BODY AP_REPORTS_MLS_LANG AS
2 /* $Header: apxlangb.pls 120.4 2004/12/02 02:31:38 pjena noship $ */
3 
4 
5 
6    ---------------------------------------------------------------
7    --  MLS function for "Invalid PO Supplier Notice" report
8    ---------------------------------------------------------------
9    FUNCTION APXVDLET RETURN VARCHAR2 IS
10 
11       lang_str VARCHAR2(500) := NULL;
12       -- Bug 2633773 , to remove cartesian join in cursor languages_cursor
13       l_base   FND_LANGUAGES.LANGUAGE_CODE%TYPE;
14 
15       CURSOR languages_cursor is
16          SELECT DISTINCT(NVL(lang.language_code, l_base)) language_code
17          FROM po_vendor_sites pvs,
18               ap_invoices inv,
19               po_vendors pv,
20               ap_holds h,
21               fnd_languages lang
22          WHERE inv.vendor_site_id = pvs.vendor_site_id
23          AND   inv.payment_status_flag in ('N', 'P')
24          AND   pv.vendor_id = pvs.vendor_id
25          AND   h.invoice_id = inv.invoice_id
26          AND   h.hold_lookup_code = 'INVALID PO'
27          AND   h.release_lookup_code is null
28          AND   lang.nls_language (+) = pvs.language;
29 
30    BEGIN
31 
32      -- Bug 2633773 , select base language code into local variable
33      select language_code
34         INTO l_base
35         from fnd_languages
36         where installed_flag = 'B';
37 
38 
39       FOR languages IN languages_cursor LOOP
40 
41          IF (lang_str IS NULL) THEN
42             lang_str := languages.language_code;
43          ELSE
44             lang_str := lang_str || ',' || languages.language_code;
45          END IF;
46 
47       END LOOP;
48 
49       RETURN (lang_str);
50 
51    END APXVDLET;
52 
53     -------------------------------------------------------------
54    --  MLS function for "Prepayment Remittance Report" report
55    -------------------------------------------------------------
56    FUNCTION APXPPREM RETURN VARCHAR2 IS
57 
58       p_vendor_id 	NUMBER := NULL;
59       p_invoice_id	NUMBER := NULL;
60       p_prepay_id 	NUMBER := NULL;
61       p_start_date 	DATE := NULL;
62       p_end_date 	DATE := NULL;
63 
64       cursor_id		INTEGER;
65       selectstmt 	VARCHAR2(1500);
66       lang_str 		VARCHAR2(500) := NULL;
67       l_language	VARCHAR2(4);
68       dummy		INTEGER;
69 
70    BEGIN
71 
72       p_vendor_id  := to_number(fnd_request_info.get_parameter(1));
73       p_invoice_id := to_number(fnd_request_info.get_parameter(2));
74       p_prepay_id  := to_number(fnd_request_info.get_parameter(3));
75       p_start_date := fnd_date.canonical_to_date(fnd_request_info.get_parameter(4));
76       p_end_date   := fnd_date.canonical_to_date(fnd_request_info.get_parameter(5));
77 
78       -- Create a query string to get languages based on the parameters
79       selectstmt := 'SELECT DISTINCT(NVL(lang.language_code, base.language_code))'||
80                     ' FROM   po_vendors pvd,'||
81                     '        po_vendor_sites pvs,'||
82                     '        ap_invoices ai,'||
83                     '        ap_invoices pp,'||
84                     '        ap_invoice_prepays  aipp,'||
85                     '        fnd_languages base,'||
86                     '        fnd_languages lang'||
87                     ' WHERE  aipp.invoice_id = ai.invoice_id'||
88                     ' AND    aipp.prepay_id  = pp.invoice_id'||
89                     ' AND    ai.vendor_id = pp.vendor_id'||
90                     ' AND    ai.vendor_id = pvd.vendor_id'||
91                     ' AND    pvd.vendor_id  = pvs.vendor_id'||
92                     ' AND    pvs.vendor_site_id = ai.vendor_site_id'||
93                     ' AND    base.installed_flag = ''B'' '||
94                     ' AND    lang.nls_language (+) = pvs.language';
95 
96       -- add to where clause if other parameters are specified
97       IF p_vendor_id IS NOT NULL THEN
98          selectstmt := selectstmt||' AND ai.vendor_id = :p_vendor_id';
99       END IF;
100 
101       IF p_invoice_id IS NOT NULL THEN
102          selectstmt := selectstmt||' AND ai.invoice_id = :p_invoice_id';
103       END IF;
104 
105       IF p_prepay_id IS NOT NULL THEN
106          selectstmt := selectstmt||' AND pp.invoice_id = :p_prepay_id';
107       END IF;
108 
109       IF p_start_date IS NOT NULL THEN
110         selectstmt := selectstmt||' AND aipp.last_update_date >=  :p_start_date';
111       END IF;
112 
113       IF p_end_date IS NOT NULL THEN
114         selectstmt := selectstmt||' AND aipp.last_update_date <= :p_end_date';
115       END IF;
116 
117       -- Added the following as part of the fix for 890934. Since the ap_invoice_prepays is obsolete
118       -- in Release 11i, we need to use ap_invoice_distributions to get the 'PREPAY' information.
119 
120       selectstmt := selectstmt||' UNION SELECT DISTINCT(NVL(lang.language_code, base.language_code))'||
121                     ' FROM   po_vendors pvd,'||
122                     '        po_vendor_sites pvs,'||
123                     '        ap_invoices ai,'||
124                     '        ap_invoice_distributions aid,'||
125 	            '        ap_invoice_distributions aid2,'|| --3984580
126                     '        fnd_languages base,'||
127                     '        fnd_languages lang'||
128                     ' WHERE  aid.invoice_id = ai.invoice_id'||
129                     ' AND    aid.line_type_lookup_code  = ''PREPAY'' '||
130                     ' AND    ai.vendor_id = pvd.vendor_id'||
131                     ' AND    pvd.vendor_id  = pvs.vendor_id'||
132                     ' AND    pvs.vendor_site_id = ai.vendor_site_id'||
133                     ' AND    base.installed_flag = ''B'' '||
134                     ' AND    nvl(aid.reversal_flag,''N'') != ''Y'' '||
135                     ' AND    lang.nls_language (+) = pvs.language'||
136                     ' AND    aid2.invoice_distribution_id = aid.prepay_distribution_id'||--3984580
137                     ' AND    aid2.line_type_lookup_code = ''ITEM'' '; --3984580
138 
139       -- add to where clause if other parameters are specified
140       IF p_vendor_id IS NOT NULL THEN
141          selectstmt := selectstmt||' AND ai.vendor_id = :p_vendor_id';
142       END IF;
143 
144       IF p_invoice_id IS NOT NULL THEN
145          selectstmt := selectstmt||' AND ai.invoice_id = :p_invoice_id';
146       END IF;
147 
148       IF p_prepay_id IS NOT NULL THEN
149          selectstmt := selectstmt||' AND aid2.invoice_id = :p_prepay_id';  --3984580
150       END IF;
151 
152 --1901963, changed it to inv.invoice_date in the 2 statements below
153 --previously it was aipp.last_update_date, which doesn't make any sense
154 --for the second query in the union
155       IF p_start_date IS NOT NULL THEN
156         selectstmt := selectstmt||' AND ai.invoice_date >=  :p_start_date';
157       END IF;
158 
159       IF p_end_date IS NOT NULL THEN
160         selectstmt := selectstmt||' AND ai.last_update_date <= :p_end_date';
161       END IF;
162 
163       -- Open the cursor for processing
164       cursor_id := dbms_sql.open_cursor;
165 
166       -- Parse the query
167       dbms_sql.parse(cursor_id, selectstmt, dbms_sql.v7);
168 
169       -- Bind input variables
170       IF p_vendor_id IS NOT NULL THEN
171          dbms_sql.bind_variable(cursor_id,':p_vendor_id',p_vendor_id);
172       END IF;
173 
174       IF p_invoice_id IS NOT NULL THEN
175          dbms_sql.bind_variable(cursor_id,':p_invoice_id',p_invoice_id);
176       END IF;
177 
178       IF p_prepay_id IS NOT NULL THEN
179          dbms_sql.bind_variable(cursor_id,':p_prepay_id',p_prepay_id);
180       END IF;
181 
182       IF p_start_date IS NOT NULL THEN
183          dbms_sql.bind_variable(cursor_id,':p_start_date',p_start_date);
184       END IF;
185 
186       IF p_end_date IS NOT NULL THEN
187          dbms_sql.bind_variable(cursor_id,':p_end_date',p_end_date);
188       END IF;
189 
190       -- Define the output variable
191       dbms_sql.define_column(cursor_id,1,l_language,4);
192 
193       -- Execute the query
194       dummy := dbms_sql.execute(cursor_id);
195 
196       -- Create string of languages to be returned
197       LOOP
198 
199          IF dbms_sql.fetch_rows(cursor_id) = 0 THEN
200             EXIT;
201          END IF;
202          dbms_sql.column_value( cursor_id, 1, l_language );
203 
204          IF (lang_str IS NULL) THEN
205              lang_str := l_language;
206          ELSE
207              lang_str := lang_str||','||l_language;
208          END IF;
209       END LOOP;
210 
211       dbms_sql.close_cursor(cursor_id);
212 
213       RETURN(lang_str);
214 
215    END APXPPREM;
216 
217 
218    -------------------------------------------------------------
219    --  MLS function for "Print Invoice Report" report
220    -------------------------------------------------------------
221    FUNCTION APXINPRT RETURN VARCHAR2 IS
222 
223       p_vendor_type 	VARCHAR2(25) := NULL;
224       p_pay_group 	VARCHAR2(25) := NULL;
225       p_invoice_type 	VARCHAR2(25) := NULL;
226       p_vendor_id 	NUMBER := NULL;
227       p_invoice_id	NUMBER := NULL;
228       p_start_date 	DATE := NULL;
229       p_end_date 	DATE := NULL;
230 
231       cursor_id		INTEGER;
232       selectstmt 	VARCHAR2(1500);
233       lang_str 		VARCHAR2(500) := NULL;
234       l_language	VARCHAR2(4);
235       dummy		INTEGER;
236 
237    BEGIN
238 
239       p_vendor_type  := fnd_request_info.get_parameter(1);
240       p_vendor_id    := to_number(fnd_request_info.get_parameter(2));
241       p_pay_group    := fnd_request_info.get_parameter(3);
242       p_invoice_type := fnd_request_info.get_parameter(4);
243       p_invoice_id   := to_number(fnd_request_info.get_parameter(5));
244       p_start_date   := fnd_date.canonical_to_date(fnd_request_info.get_parameter(6));
245       p_end_date     := fnd_date.canonical_to_date(fnd_request_info.get_parameter(7));
246 
247       -- Create a query string to get languages based on the parameters
248       selectstmt := 'SELECT DISTINCT(NVL(lang.language_code, base.language_code))'||
249                     ' FROM   po_vendors pvd,'					  ||
250                     '        po_vendor_sites pvs,'				  ||
251                     '        ap_invoices ai,'					  ||
252                     '        fnd_languages base,'                                 ||
253                     '        fnd_languages lang'                                  ||
254                     ' WHERE  ai.vendor_id = pvd.vendor_id'			  ||
255                     ' AND    pvd.vendor_id = pvs.vendor_id'			  ||
256                     ' AND    ai.vendor_site_id  = pvs.vendor_site_id'		  ||
257                     ' AND    base.installed_flag = ''B'' '			  ||
258                     ' AND    lang.nls_language (+) = pvs.language';
259 
260       -- add to where clause if other parameters are specified
261       IF p_vendor_type IS NOT NULL THEN
262          selectstmt := selectstmt||' AND pvd.vendor_type_lookup_code = :p_vendor_type';
263       END IF;
264       IF p_pay_group IS NOT NULL THEN
265          selectstmt := selectstmt||' AND ai.pay_group_lookup_code = :p_pay_group';
266       END IF;
267 
268       IF p_vendor_id IS NOT NULL THEN
269          selectstmt := selectstmt||' AND ai.vendor_id = :p_vendor_id';
270       END IF;
271 
272       IF p_invoice_type IS NOT NULL THEN
273          selectstmt := selectstmt||' AND ai.invoice_type_lookup_code = :p_invoice_type';
274       END IF;
275 
276       IF p_invoice_id IS NOT NULL THEN
277          selectstmt := selectstmt||' AND ai.invoice_id = :p_invoice_id';
278       END IF;
279 
280       IF p_start_date IS NOT NULL THEN
281         selectstmt := selectstmt||' AND ai.invoice_date >=  :p_start_date';
282       END IF;
283 
284       IF p_end_date IS NOT NULL THEN
285         selectstmt := selectstmt||' AND ai.invoice_date <= :p_end_date';
286       END IF;
287 
288       -- Open the cursor for processing
289       cursor_id := dbms_sql.open_cursor;
290 
291       -- Parse the query
292       dbms_sql.parse(cursor_id, selectstmt, dbms_sql.v7);
293 
294       -- Bind input variables
295       IF p_vendor_type IS NOT NULL THEN
296          dbms_sql.bind_variable(cursor_id,':p_vendor_type',p_vendor_type);
297       END IF;
298 
299       IF p_pay_group IS NOT NULL THEN
300          dbms_sql.bind_variable(cursor_id,':p_pay_group',p_pay_group);
301       END IF;
302 
303       IF p_vendor_id IS NOT NULL THEN
304          dbms_sql.bind_variable(cursor_id,':p_vendor_id',p_vendor_id);
305       END IF;
306 
307       IF p_invoice_type IS NOT NULL THEN
308          dbms_sql.bind_variable(cursor_id,':p_invoice_type',p_invoice_type);
309       END IF;
310 
311       IF p_invoice_id IS NOT NULL THEN
312          dbms_sql.bind_variable(cursor_id,':p_invoice_id',p_invoice_id);
313       END IF;
314 
315       IF p_start_date IS NOT NULL THEN
316          dbms_sql.bind_variable(cursor_id,':p_start_date',p_start_date);
317       END IF;
318 
319       IF p_end_date IS NOT NULL THEN
320          dbms_sql.bind_variable(cursor_id,':p_end_date',p_end_date);
321       END IF;
322 
323       -- Define the output variable
324       dbms_sql.define_column(cursor_id,1,l_language,4);
325 
326       -- Execute the query
327       dummy := dbms_sql.execute(cursor_id);
328 
329       -- Create string of languages to be returned
330       LOOP
331 
332          IF dbms_sql.fetch_rows(cursor_id) = 0 THEN
333             EXIT;
334          END IF;
335          dbms_sql.column_value( cursor_id, 1, l_language );
336 
337          IF (lang_str IS NULL) THEN
338              lang_str := l_language;
339          ELSE
340              lang_str := lang_str||','||l_language;
341          END IF;
342       END LOOP;
343 
344       dbms_sql.close_cursor(cursor_id);
345 
346       RETURN(lang_str);
347 
348    END APXINPRT;
349 ---------------------------------------------------------------
350  --MLS function for "Supplier Open Balance Report"
351 -------------------------------------------------------------
352    FUNCTION APXSOBLX RETURN VARCHAR2 IS
353 
354      P_vendor_name_from po_vendors.vendor_name%TYPE;
355      p_vendor_name_to po_vendors.vendor_name%TYPE;
356      cursor_id		INTEGER;
357      selectstmt 	VARCHAR2(1500);
358      lang_str 		VARCHAR2(500) := NULL;
359      l_language	VARCHAR2(4);
360      dummy		INTEGER;
361      retval             INTEGER;
362      parm_number        NUMBER;
363    BEGIN
364    retval := FND_REQUEST_INFO.GET_PARAM_NUMBER('Supplier Name From',parm_number);
365    if retval = -1 then
366       P_VENDOR_NAME_FROM := NULL;
367    else
368      P_VENDOR_NAME_FROM := FND_REQUEST_INFO.GET_PARAMETER(parm_number);
369    end if;
370    retval := FND_REQUEST_INFO.GET_PARAM_NUMBER('Supplier Name To',parm_number);
371    if retval = -1 then
372       P_VENDOR_NAME_TO := NULL;
373    else
374      P_VENDOR_NAME_TO := FND_REQUEST_INFO.GET_PARAMETER(parm_number);
375    end if;
376 
377    -- Create a query string to get languages based on the parameters
378       selectstmt := 'SELECT DISTINCT(NVL(lang.language_code, base.language_code))'||
379                     ' FROM   po_vendors pvd,'					  ||
380                     '        po_vendor_sites pvs,'				  ||
381                     '        ap_invoices ai,'					  ||
382                     '        fnd_languages base,'                                 ||
383                     '        fnd_languages lang'                                  ||
384                     ' WHERE  ai.vendor_id = pvd.vendor_id'			  ||
385                     ' AND    pvd.vendor_id = pvs.vendor_id'			  ||
386                     ' AND    ai.vendor_site_id  = pvs.vendor_site_id'		  ||
387                     ' AND    base.installed_flag = ''B'' '			  ||
388                     ' AND    lang.nls_language (+) = pvs.language'                ||
389                     ' AND    pvd.vendor_name between nvl(:p_vendor_name_from,''A'') and nvl(:p_vendor_name_to,''Z'')';
390 
391      -- add to where clause if other parameters are specified
392      -- Open the cursor for processing
393       cursor_id := dbms_sql.open_cursor;
394 
395       -- Parse the query
396          dbms_sql.parse(cursor_id, selectstmt, dbms_sql.v7);
397          DBMS_SQL.BIND_VARIABLE(cursor_id,':p_vendor_name_from',P_VENDOR_NAME_FROM);
398          DBMS_SQL.BIND_VARIABLE(cursor_id,':p_vendor_name_to',P_VENDOR_NAME_TO);
399       -- Bind input variables
400 
401       -- Define the output variable
402       dbms_sql.define_column(cursor_id,1,l_language,4);
403 
404       -- Execute the query
405       dummy := dbms_sql.execute(cursor_id);
406 
407       -- Create string of languages to be returned
408       LOOP
409 
410          IF dbms_sql.fetch_rows(cursor_id) = 0 THEN
411             EXIT;
412          END IF;
413          dbms_sql.column_value( cursor_id, 1, l_language );
414 
415          IF (lang_str IS NULL) THEN
416              lang_str := l_language;
417          ELSE
418              lang_str := lang_str||','||l_language;
419          END IF;
420       END LOOP;
421 
422       dbms_sql.close_cursor(cursor_id);
423 
424       RETURN(lang_str);
425 
426    END APXSOBLX;
427 END AP_REPORTS_MLS_LANG;