DBA Data[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;