[Home] [Help]
PACKAGE BODY: APPS.PAY_JP_MAGTAPE_FORMAT_PKG
Source
1 package body pay_jp_magtape_format_pkg as
2 /* $Header: payjpmgf.pkb 120.0.12020000.3 2012/07/09 08:15:56 mdubasi ship $ */
3 --
4 -- Global variables.
5 --
6 g_bank_code pay_jp_banks.bank_code%TYPE;
7 g_transaction_type hr_lookups.lookup_code%TYPE;
8 g_delimiter_type hr_lookups.lookup_code%TYPE;
9 --------------------------------------------------------------------------------
10 function header_record(
11 p_data in pay_jp_magtape_pkg.header) return varchar2
12 --------------------------------------------------------------------------------
13 is
14 l_delimiter VARCHAR2(40);
15 l_product_release VARCHAR2(50);
16 begin
17 --
18 -- Set global variable G_BANK_CODE and G_TRANSACTION_TYPE.
19 --
20 g_bank_code := p_data.bank_code;
21 g_transaction_type := p_data.transaction_type;
22
23 /* Bug#14142779 - Added code to support delimiters from R12.1+ releases*/
24 SELECT 'Y' into l_product_release
25 FROM fnd_application a, fnd_application_tl t, fnd_product_installations p
26 WHERE a.application_id = p.application_id
27 AND a.application_id = t.application_id
28 AND t.language = Userenv ('LANG')
29 AND Substr (a.application_short_name, 1, 5) = 'PAY'
30 and substr(p.patch_level,1,7) = 'R12.PAY'
31 and substr(p.patch_level,9,1) <> 'A';
32
33 IF (l_product_release = 'Y') THEN
34 select nvl(PMETH_INFORMATION4,'NONE') into l_delimiter
35 from pay_org_payment_methods_f
36 where EXTERNAL_ACCOUNT_ID = p_data.external_account_id
37 and p_data.direct_deposit_date between effective_start_date and effective_end_date;
38
39 g_delimiter_type:= delimiter_type(l_delimiter);
40 ELSE
41 g_delimiter_type := '';
42 END IF;
43 -- When source account is post office, not bank.
44 --
45 if g_bank_code = '9900' then
46 return '1' ||
47 p_data.transaction_type ||
48 ' ' ||
49 /* Bug#2657901 p_data.character_set_code || */
50 p_data.company_code ||
51 rpad(p_data.company_name,40,' ') ||
52 to_char(p_data.direct_deposit_date,'MMDD') ||
53 p_data.bank_code ||
54 rpad(p_data.bank_name_kana,15,' ') ||
55 rpad(' ',20,' ') ||
56 substr(p_data.account_number,-6,6) ||
57 rpad(' ',17,' ') ;
58 --
59 -- When source account is bank.
60 --
61 else
62 return '1' ||
63 p_data.transaction_type ||
64 p_data.character_set_code ||
65 p_data.company_code ||
66 rpad(p_data.company_name,40,' ') ||
67 to_char(p_data.direct_deposit_date,'MMDD') ||
68 p_data.bank_code ||
69 rpad(p_data.bank_name_kana,15,' ') ||
70 p_data.branch_code ||
71 rpad(p_data.branch_name_kana,15,' ') ||
72 p_data.account_type ||
73 p_data.account_number ||
74 rpad(' ',17,' ') ||
75 g_delimiter_type;
76 end if;
77 end header_record;
78 --------------------------------------------------------------------------------
79 function data_record(
80 p_data in pay_jp_magtape_pkg.data) return varchar2
81 --------------------------------------------------------------------------------
82 is
83 begin
84 --
85 -- When source account is post office, not bank.
86 --
87 if g_bank_code = '9900' then
88 return '2' ||
89 p_data.bank_code ||
90 rpad(p_data.bank_name_kana,15,' ') ||
91 p_data.branch_code ||
92 rpad(' ',17,' ') ||
93 g_transaction_type ||
94 ' ' ||
95 p_data.account_number ||
96 rpad(p_data.account_name,30,' ') ||
97 to_char(p_data.payment,'FM0000000000') ||
98 lpad(' ',30,' ') ;
99 --
100 -- When source account is bank.
101 --
102 else
103 if g_transaction_type = 21 then
104 return '2' ||
105 p_data.bank_code ||
106 rpad(p_data.bank_name_kana,15,' ') ||
107 p_data.branch_code ||
108 rpad(p_data.branch_name_kana,15,' ') ||
109 rpad(' ',4,' ') ||
110 p_data.account_type ||
111 p_data.account_number ||
112 rpad(p_data.account_name,30,' ') ||
113 to_char(p_data.payment,'FM0000000000') ||
114 '0' ||
115 lpad('0',20,'0') ||
116 ' ' ||
117 ' ' ||
118 rpad(' ',7,' ') ||
119 g_delimiter_type;
120 else
121 return '2' ||
122 p_data.bank_code ||
123 rpad(p_data.bank_name_kana,15,' ') ||
124 p_data.branch_code ||
125 rpad(p_data.branch_name_kana,15,' ') ||
126 rpad(' ',4,' ') ||
127 p_data.account_type ||
128 p_data.account_number ||
129 rpad(p_data.account_name,30,' ') ||
130 to_char(p_data.payment,'FM0000000000') ||
131 '0' ||
132 lpad('0',20,'0') ||
133 rpad(' ',9,' ') ||
134 g_delimiter_type;
135 end if;
136 end if;
137 end data_record;
138 --------------------------------------------------------------------------------
139 function trailer_record(
140 p_data in pay_jp_magtape_pkg.trailer) return varchar2
141 --------------------------------------------------------------------------------
142 is
143 begin
144 --
145 -- When source account is post office, not bank.
146 --
147 if g_bank_code = '9900' then
148 return '8' ||
149 to_char(p_data.total_count,'FM000000') ||
150 to_char(p_data.total_payment,'FM000000000000') ||
151 rpad(' ',36,' ') ||
152 lpad('0',6,'0') ||
153 rpad(' ',59,' ') ;
154 --
155 -- When source account is bank.
156 --
157 else
158 return '8' ||
159 to_char(p_data.total_count,'FM000000') ||
160 to_char(p_data.total_payment,'FM000000000000') ||
161 rpad(' ',101,' ') ||
162 g_delimiter_type;
163 end if;
164 end trailer_record;
165 --------------------------------------------------------------------------------
166 function end_record return varchar2
167 --------------------------------------------------------------------------------
168 is
169 begin
170 return '9' ||
171 rpad(' ',119,' ')||
172 g_delimiter_type;
173 end end_record;
174 ---------------------------------------------------------------------------------
175 function delimiter_type(p_delimiter varchar2) return varchar2
176 ---------------------------------------------------------------------------------
177 is
178 l_delimiter varchar2(4000);
179 begin
180 IF p_delimiter = 'CR' then
181 l_delimiter := fnd_global.local_chr(13.0);
182 ELSIF p_delimiter = 'LF' then
183 l_delimiter := fnd_global.local_chr(10.0);
184 ELSIF p_delimiter = 'CRLF' then
185 l_delimiter := fnd_global.local_chr(13.0)||fnd_global.local_chr(10.0);
186 ELSE
187 l_delimiter := '';
188 END IF;
189 return l_delimiter;
190 end delimiter_type;
191 -----------------------------------------------------------------------------------
192 end pay_jp_magtape_format_pkg;