[Home] [Help]
PACKAGE BODY: APPS.IEX_PAYMENTS_PUB
Source
1 PACKAGE BODY IEX_PAYMENTS_PUB as
2 /* $Header: iexpypyb.pls 120.15.12010000.2 2008/08/29 13:53:38 gnramasa ship $ */
3
4 PG_DEBUG NUMBER; -- := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5
6 G_APP_ID CONSTANT NUMBER := 695;
7 G_PKG_NAME CONSTANT VARCHAR2(30):= 'IEX_PAYMENTS_PUB';
8 G_FILE_NAME CONSTANT VARCHAR2(12) := 'iexpypyb.pls';
9 G_LOGIN_ID NUMBER; -- := FND_GLOBAL.Conc_Login_Id;
10 G_PROGRAM_ID NUMBER; -- := FND_GLOBAL.Conc_Program_Id;
11 G_USER_ID NUMBER; -- := FND_GLOBAL.User_Id;
12 G_REQUEST_ID NUMBER; -- := FND_GLOBAL.Conc_Request_Id;
13 G_ONLINE_CCPAY varchar2(5) := NVL(fnd_profile.value('IEX_ONLINE_CCPAY'),'N'); -- Fix a bug 5897567
14
15
16 procedure validate_input(
17 P_PMT_REC IN IEX_PAYMENTS_PUB.PMT_REC_TYPE,
18 P_PMTDTLS_TBL IN IEX_PAYMENTS_PUB.PMTDTLS_TBL_TYPE,
19 P_PMTINSTR_REC IN IEX_PAYMENTS_PUB.PMTINSTR_REC_TYPE)
20
21 is
22 l_count number; -- := P_PMTDTLS_TBL.COUNT;
23 l_amount number;
24 begin
25 l_count := P_PMTDTLS_TBL.COUNT;
26 /* validate payment target */
27 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
28 iex_debug_pub.LogMessage('validate_input: Validating P_PMT_REC.PAYMENT_TARGET');
29 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.PAYMENT_TARGET = ' || P_PMT_REC.PAYMENT_TARGET);
30 END IF;
31 if P_PMT_REC.PAYMENT_TARGET is null or
32 (P_PMT_REC.PAYMENT_TARGET <> 'ACCOUNTS' and
33 P_PMT_REC.PAYMENT_TARGET <> 'INVOICES' and
34 P_PMT_REC.PAYMENT_TARGET <> 'CNSLD' and
35 P_PMT_REC.PAYMENT_TARGET <> 'CONTRACTS')
36 then
37 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
38 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.PAYMENT_TARGET failed validation');
39 END IF;
40 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
41 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
42 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMT_REC.PAYMENT_TARGET');
43 FND_MSG_PUB.Add;
44 RAISE FND_API.G_EXC_ERROR;
45 end if;
46
47 /* validate total_amount */
48 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
49 iex_debug_pub.LogMessage('validate_input: Validating P_PMT_REC.TOTAL_AMOUNT');
50 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.TOTAL_AMOUNT = ' || P_PMT_REC.TOTAL_AMOUNT);
51 END IF;
52 if P_PMT_REC.TOTAL_AMOUNT is null or P_PMT_REC.TOTAL_AMOUNT <= 0
53 then
54 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
55 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.TOTAL_AMOUNT failed validation');
56 END IF;
57 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
58 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
59 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMT_REC.TOTAL_AMOUNT');
60 FND_MSG_PUB.Add;
61 RAISE FND_API.G_EXC_ERROR;
62 end if;
63
64 /* validate currency */
65 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
66 iex_debug_pub.LogMessage('validate_input: Validating P_PMT_REC.CURRENCY_CODE');
67 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.CURRENCY_CODE = ' || P_PMT_REC.CURRENCY_CODE);
68 END IF;
69 if P_PMT_REC.CURRENCY_CODE is null
70 then
71 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
72 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.CURRENCY_CODE failed validation');
73 END IF;
74 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
75 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
76 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMT_REC.CURRENCY_CODE');
77 FND_MSG_PUB.Add;
78 RAISE FND_API.G_EXC_ERROR;
79 end if;
80
81 /* validate exchange_rate_type */
82 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
83 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.PAYMENT_TARGET = ' || P_PMT_REC.PAYMENT_TARGET);
84 END IF;
85 if P_PMT_REC.PAYMENT_TARGET = 'ACCOUNTS' or P_PMT_REC.PAYMENT_TARGET = 'INVOICES'
86 then
87 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
88 iex_debug_pub.LogMessage('validate_input: Validating P_PMT_REC.EXCHANGE_RATE_TYPE');
89 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.EXCHANGE_RATE_TYPE = ' || P_PMT_REC.EXCHANGE_RATE_TYPE);
90 END IF;
91 if P_PMT_REC.EXCHANGE_RATE_TYPE is null
92 then
93 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
94 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.EXCHANGE_RATE_TYPE failed validation');
95 END IF;
96 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
97 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
98 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMT_REC.EXCHANGE_RATE_TYPE');
99 FND_MSG_PUB.Add;
100 RAISE FND_API.G_EXC_ERROR;
101 end if;
102
103 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
104 iex_debug_pub.LogMessage('validate_input: Validating P_PMT_REC.EXCHANGE_DATE');
105 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.EXCHANGE_DATE = ' || P_PMT_REC.EXCHANGE_DATE);
106 END IF;
107 if P_PMT_REC.EXCHANGE_DATE is null
108 then
109 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
110 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.EXCHANGE_DATE failed validation');
111 END IF;
112 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
113 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
114 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMT_REC.EXCHANGE_DATE');
115 FND_MSG_PUB.Add;
116 RAISE FND_API.G_EXC_ERROR;
117 end if;
118 end if;
119
120 if P_PMT_REC.PAYMENT_TARGET = 'CNSLD' or P_PMT_REC.PAYMENT_TARGET = 'CONTRACTS' then
121 /* validate payee_id */
122 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
123 iex_debug_pub.LogMessage('validate_input: Validating P_PMT_REC.PAYEE_ID');
124 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.PAYEE_ID = ' || P_PMT_REC.PAYEE_ID);
125 END IF;
126 if P_PMT_REC.PAYEE_ID is null
127 then
128 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
129 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.PAYEE_ID failed validation');
130 END IF;
131 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
132 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
133 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMT_REC.PAYEE_ID');
134 FND_MSG_PUB.Add;
135 RAISE FND_API.G_EXC_ERROR;
136 end if;
137 end if;
138
139 /* validate payment details */
140 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
141 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL.COUNT');
142 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL.COUNT = ' || P_PMTDTLS_TBL.COUNT);
143 END IF;
144 if l_count = 0 then
145 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
146 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL.COUNT failed validation');
147 END IF;
148 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
149 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
150 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL.COUNT');
151 FND_MSG_PUB.Add;
152 RAISE FND_API.G_EXC_ERROR;
153 end if;
154
155 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
156 iex_debug_pub.LogMessage('validate_input: Validating payment details');
157 END IF;
158 FOR i IN 1..l_count LOOP
159 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
160 iex_debug_pub.LogMessage('validate_input: Details record ' || i);
161 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL(i).AMOUNT');
162 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).AMOUNT = ' || P_PMTDTLS_TBL(i).AMOUNT);
163 END IF;
164 if P_PMTDTLS_TBL(i).AMOUNT is null or P_PMTDTLS_TBL(i).AMOUNT <= 0 then
165 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
166 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).AMOUNT failed validation');
167 END IF;
168 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
169 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
170 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL(' || i || ').AMOUNT');
171 FND_MSG_PUB.Add;
172 RAISE FND_API.G_EXC_ERROR;
173 end if;
174 l_amount := l_amount + P_PMTDTLS_TBL(i).AMOUNT;
175
176 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
177 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID');
178 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID = ' || P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID);
179 END IF;
180 if P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID is null then
181 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
182 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID failed validation');
183 END IF;
184 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
185 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
186 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL(' || i || ').CUST_ACCOUNT_ID');
187 FND_MSG_PUB.Add;
188 RAISE FND_API.G_EXC_ERROR;
189 end if;
190
191 if P_PMT_REC.PAYMENT_TARGET = 'ACCOUNTS' then
192 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
193 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL(i).CUST_SITE_USE_ID');
194 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID = ' || P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID);
195 END IF;
196 if P_PMTDTLS_TBL(i).CUST_SITE_USE_ID is null then
197 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
198 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CUST_SITE_USE_ID failed validation');
199 END IF;
200 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
201 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
202 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL(' || i || ').CUST_SITE_USE_ID');
203 FND_MSG_PUB.Add;
204 RAISE FND_API.G_EXC_ERROR;
205 end if;
206 elsif P_PMT_REC.PAYMENT_TARGET = 'INVOICES' then
207 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
208 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL(i).CUST_SITE_USE_ID');
209 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CUST_SITE_USE_ID = ' || P_PMTDTLS_TBL(i).CUST_SITE_USE_ID);
210 END IF;
211 if P_PMTDTLS_TBL(i).CUST_SITE_USE_ID is null then
212 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
213 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CUST_SITE_USE_ID failed validation');
214 END IF;
215 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
216 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
217 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL(' || i || ').CUST_SITE_USE_ID');
218 FND_MSG_PUB.Add;
219 RAISE FND_API.G_EXC_ERROR;
220 end if;
221 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
222 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID');
223 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID = ' || P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID);
224 END IF;
225 if P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID is null then
226 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
227 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID failed validation');
228 END IF;
229 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
230 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
231 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL(' || i || ').PAYMENT_SCHEDULE_ID');
232 FND_MSG_PUB.Add;
233 RAISE FND_API.G_EXC_ERROR;
234 end if;
235 elsif P_PMT_REC.PAYMENT_TARGET = 'CNSLD' then
236 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
237 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID');
238 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID = ' || P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID);
239 END IF;
240 if P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID is null then
241 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
242 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID failed validation');
243 END IF;
244 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
245 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
246 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL(' || i || ').CNSLD_INVOICE_ID');
247 FND_MSG_PUB.Add;
248 RAISE FND_API.G_EXC_ERROR;
249 end if;
250 elsif P_PMT_REC.PAYMENT_TARGET = 'CONTRACTS' then
251 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
252 iex_debug_pub.LogMessage('validate_input: Validating P_PMTDTLS_TBL(i).CONTRACT_ID');
253 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CONTRACT_ID = ' || P_PMTDTLS_TBL(i).CONTRACT_ID);
254 END IF;
255 if P_PMTDTLS_TBL(i).CONTRACT_ID is null then
256 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
257 iex_debug_pub.LogMessage('validate_input: P_PMTDTLS_TBL(i).CONTRACT_ID failed validation');
258 END IF;
259 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
260 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
261 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTDTLS_TBL(' || i || ').CONTRACT_ID');
262 FND_MSG_PUB.Add;
263 RAISE FND_API.G_EXC_ERROR;
264 end if;
265 end if;
266 END LOOP;
267 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
268 iex_debug_pub.LogMessage('validate_input: Validating P_PMT_REC.TOTAL_AMOUNT and sum of P_PMTDTLS_TBL(i).AMOUNT');
269 iex_debug_pub.LogMessage('validate_input: l_amount = ' || l_amount);
270 iex_debug_pub.LogMessage('validate_input: P_PMT_REC.TOTAL_AMOUNT = ' ||P_PMT_REC.TOTAL_AMOUNT);
271 END IF;
272 if l_amount <> P_PMT_REC.TOTAL_AMOUNT then
273 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
274 iex_debug_pub.LogMessage('validate_input: l_amount <> P_PMT_REC.TOTAL_AMOUNT failed validation');
275 END IF;
276 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
277 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
278 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMT_REC.TOTAL_AMOUNT');
279 FND_MSG_PUB.Add;
280 RAISE FND_API.G_EXC_ERROR;
281 end if;
282
283 /* validate payment instrument */
284 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
285 iex_debug_pub.LogMessage('validate_input: Validating P_PMTINSTR_REC.USE_INSTRUMENT');
286 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.USE_INSTRUMENT = ' || P_PMTINSTR_REC.USE_INSTRUMENT);
287 END IF;
288 if P_PMTINSTR_REC.USE_INSTRUMENT is null or
289 (P_PMTINSTR_REC.USE_INSTRUMENT <> 'CC' and
290 P_PMTINSTR_REC.USE_INSTRUMENT <> 'BA')
291 then
292 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
293 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.USE_INSTRUMENT failed validation');
294 END IF;
295 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
296 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
297 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTINSTR_REC.USE_INSTRUMENT');
298 FND_MSG_PUB.Add;
299 RAISE FND_API.G_EXC_ERROR;
300 end if;
301
302 /* -- begin - uptake funds capture changes - varangan
303 if P_PMTINSTR_REC.USE_INSTRUMENT = 'CC' then
304 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
305 iex_debug_pub.LogMessage('validate_input: Validating CC data');
306 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM = ' || P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM);
307 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.CREDITCARDINSTR.CC_TYPE = ' || P_PMTINSTR_REC.CREDITCARDINSTR.CC_TYPE);
308 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE = ' || P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE);
309 END IF;
310 if P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM is null or
311 P_PMTINSTR_REC.CREDITCARDINSTR.CC_TYPE is null or
312 P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE is null
313 then
314 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
315 iex_debug_pub.LogMessage('validate_input: CC instrument failed validation');
316 END IF;
317 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
318 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
319 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTINSTR_REC.CREDITCARDINSTR');
320 FND_MSG_PUB.Add;
321 RAISE FND_API.G_EXC_ERROR;
322 end if;
323 elsif P_PMTINSTR_REC.USE_INSTRUMENT = 'BA' then
324 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
325 iex_debug_pub.LogMessage('validate_input: Validating BA data');
326 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID = ' || P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID);
327 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM = ' || P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM);
328 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_TYPE = ' || P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_TYPE);
329 iex_debug_pub.LogMessage('validate_input: P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_HOLDERNAME = ' || P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_HOLDERNAME);
330 END IF;
331 if P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID is null or
332 P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM is null or
333 P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_TYPE is null or
334 P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_HOLDERNAME is null
335 then
336 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
337 iex_debug_pub.LogMessage('validate_input: BA instrument failed validation');
338 END IF;
339 FND_MESSAGE.SET_NAME('IEX','IEX_BAD_API_INPUT');
340 FND_MESSAGE.SET_TOKEN('API_NAME', G_PKG_NAME || '.CREATE_PAYMENT');
341 FND_MESSAGE.SET_TOKEN('API_PARAMETER', 'P_PMTINSTR_REC.BANKACCTINSTR');
342 FND_MSG_PUB.Add;
343 RAISE FND_API.G_EXC_ERROR;
344 end if;
345 end if; */
346
347 end;
348
349 function get_fun_currency return varchar2 is
350 l_return_status VARCHAR2(1);
351 l_msg_count NUMBER;
352 l_msg_data VARCHAR2(32767);
353 l_fun_currency VARCHAR2(15);
354 begin
355 -- get functional currency
356 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
357 iex_debug_pub.LogMessage('get_fun_currency: Begin');
358 END IF;
359 IEX_CURRENCY_PVT.GET_FUNCT_CURR(p_api_version => 1.0,
360 p_init_msg_list => FND_API.G_FALSE,
361 p_commit => FND_API.G_FALSE,
362 P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
363 x_return_status => l_return_status,
364 x_msg_count => l_msg_count,
365 x_msg_data => l_msg_data,
366 x_functional_currency => l_fun_currency);
367
368 -- check for errors
369 IF l_return_status<>'S' THEN
370 null;
371 END IF;
372
373 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
374 iex_debug_pub.LogMessage('get_fun_currency: l_fun_currency = ' || l_fun_currency);
375 END IF;
376 return l_fun_currency;
377 end;
378
379 PROCEDURE GET_PAYER_INFO(P_PAYER_PARTY_REL_ID IN NUMBER,
380 P_PAYER_PARTY_ORG_ID IN NUMBER,
381 P_PAYER_PARTY_PER_ID IN NUMBER,
382 X_NOTE_PAYER_TYPE OUT NOCOPY VARCHAR2,
383 X_NOTE_PAYER_NUM_ID OUT NOCOPY NUMBER,
384 X_PAYER_NUM_ID OUT NOCOPY NUMBER,
385 X_PAYER_ID OUT NOCOPY VARCHAR2,
386 X_PAYER_NAME OUT NOCOPY VARCHAR2)
387 IS
388 CURSOR get_payer_name_crs(p_party_id number) IS
389 select PARTY_NAME
390 from hz_parties
391 where party_id = p_party_id;
392
393 BEGIN
394
395 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
396 iex_debug_pub.LogMessage('GET_PAYER_INFO: Begin of GET_PAYER_INFO');
397 iex_debug_pub.LogMessage('GET_PAYER_INFO: PAYER_PARTY_REL_ID = ' || P_PAYER_PARTY_REL_ID);
398 iex_debug_pub.LogMessage('GET_PAYER_INFO: PAYER_PARTY_ORG_ID = ' || P_PAYER_PARTY_ORG_ID);
399 iex_debug_pub.LogMessage('GET_PAYER_INFO: PAYER_PARTY_PER_ID = ' || P_PAYER_PARTY_PER_ID);
400 END IF;
401
402 if P_PAYER_PARTY_REL_ID is not null and
403 P_PAYER_PARTY_ORG_ID is not null and
404 P_PAYER_PARTY_PER_ID is not null then
405 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
406 iex_debug_pub.LogMessage('GET_PAYER_INFO: First case');
407 END IF;
408 X_NOTE_PAYER_NUM_ID := P_PAYER_PARTY_REL_ID;
409 X_NOTE_PAYER_TYPE := 'PARTY_RELATIONSHIP';
410 X_PAYER_NUM_ID := P_PAYER_PARTY_ORG_ID;
411 else
412 if P_PAYER_PARTY_REL_ID is null and
413 P_PAYER_PARTY_ORG_ID is not null and
414 P_PAYER_PARTY_PER_ID is null then
415 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
416 iex_debug_pub.LogMessage('GET_PAYER_INFO: Second case');
417 END IF;
418 X_NOTE_PAYER_NUM_ID := P_PAYER_PARTY_ORG_ID;
419 X_NOTE_PAYER_TYPE := 'PARTY_ORGANIZATION';
420 X_PAYER_NUM_ID := P_PAYER_PARTY_ORG_ID;
421 elsif P_PAYER_PARTY_REL_ID is null and
422 P_PAYER_PARTY_ORG_ID is null and
423 P_PAYER_PARTY_PER_ID is not null then
424 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
425 iex_debug_pub.LogMessage('Third case');
426 END IF;
427 X_NOTE_PAYER_NUM_ID := P_PAYER_PARTY_PER_ID;
428 X_NOTE_PAYER_TYPE := 'PARTY_PERSON';
429 X_PAYER_NUM_ID := P_PAYER_PARTY_PER_ID;
430 else
431 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
432 iex_debug_pub.LogMessage('GET_PAYER_INFO: Neither');
433 END IF;
434 FND_MESSAGE.SET_NAME('IEX','IEX_WRONG_PARTY');
435 FND_MSG_PUB.Add;
436 RAISE FND_API.G_EXC_ERROR;
437 end if;
438 end if;
439
440 X_PAYER_ID := to_char(X_PAYER_NUM_ID);
441
442 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
443 iex_debug_pub.LogMessage('GET_PAYER_INFO: NOTE_PAYER_NUM_ID = ' || X_NOTE_PAYER_NUM_ID);
444 iex_debug_pub.LogMessage('GET_PAYER_INFO: NOTE_PAYER_TYPE = ' || X_NOTE_PAYER_TYPE);
445 iex_debug_pub.LogMessage('GET_PAYER_INFO: PAYER_NUM_ID = ' || X_PAYER_NUM_ID);
446 iex_debug_pub.LogMessage('GET_PAYER_INFO: PAYER_ID = ' || X_PAYER_ID);
447 END IF;
448
449 OPEN get_payer_name_crs(X_PAYER_NUM_ID);
450 FETCH get_payer_name_crs INTO X_PAYER_NAME;
451
452 if get_payer_name_crs%NOTFOUND then
453 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
454 iex_debug_pub.LogMessage('No party');
455 END IF;
456 CLOSE get_payer_name_crs;
457 FND_MESSAGE.SET_NAME('IEX','IEX_WRONG_PARTY');
458 FND_MSG_PUB.Add;
459 RAISE FND_API.G_EXC_ERROR;
460 end if;
461 CLOSE get_payer_name_crs;
462
463 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
464 iex_debug_pub.LogMessage('GET_PAYER_INFO: PAYER_NAME = ' || X_PAYER_NAME);
465 END IF;
466 END;
467
468 procedure get_ar_payment_method(p_payment_type in varchar2,
469 x_payment_method out NOCOPY varchar2,
470 x_payment_method_id out NOCOPY number)
471 is
472 l_api_name CONSTANT VARCHAR2(30) := 'GET_AR_PAYMENT_METHOD';
473
474 begin
475 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
476 iex_debug_pub.LogMessage(l_api_name || ': Start of API');
477 END IF;
478 x_payment_method := null;
479 x_payment_method_id := null;
480
481 if p_payment_type = 'CC' then
482
483 x_payment_method := fnd_profile.value('IEX_CCARD_REMITTANCE');
484 if x_payment_method is null then
485 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
486 iex_debug_pub.LogMessage(l_api_name || ': failed to get CC remittance');
487 END IF;
488 FND_MESSAGE.SET_NAME('IEX', 'IEX_NO_CC_REMITTANCE');
489 FND_MSG_PUB.Add;
490 RAISE FND_API.G_EXC_ERROR;
491 end if;
492 x_payment_method_id := to_number(x_payment_method);
493
494 elsif p_payment_type = 'BA' then
495
496 x_payment_method := fnd_profile.value('IEX_EFT_REMITTANCE');
497 if x_payment_method is null then
498 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
499 iex_debug_pub.LogMessage(l_api_name || ': failed to get BA remittance');
500 END IF;
501 FND_MESSAGE.SET_NAME('IEX', 'IEX_NO_EFT_REMITTANCE');
502 FND_MSG_PUB.Add;
503 RAISE FND_API.G_EXC_ERROR;
504 end if;
505 x_payment_method_id := to_number(x_payment_method);
506
507 end if;
508 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
509 iex_debug_pub.LogMessage(l_api_name || ': x_payment_method = ' || x_payment_method);
510 iex_debug_pub.LogMessage(l_api_name || ': x_payment_method_id = ' || x_payment_method_id);
511 iex_debug_pub.LogMessage(l_api_name || ': End of API');
512 END IF;
513 end;
514
515 procedure create_ar_cc_bank_account(p_cust_account_id in number,
516 p_cc_number in varchar2,
517 p_cc_exp_date in date,
518 p_cc_holder_name in varchar2,
519 p_currency in varchar2,
520 p_party_id in number,
521 x_bank_account_id out NOCOPY number,
522 x_bank_account_uses_id out NOCOPY number,
523 x_branch_id out NOCOPY number)
524 is
525 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_AR_CC_BANK_ACCOUNT';
526 begin
527 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
528 iex_debug_pub.LogMessage(l_api_name || ': Start of API');
529 END IF;
530 x_bank_account_id := null;
531 x_bank_account_uses_id := null;
532 x_branch_id := 1;
533
534 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
535 --iex_debug_pub.LogMessage(l_api_name || ': CC number = ' || p_cc_number);
536 iex_debug_pub.LogMessage(l_api_name || ': CC exp date = ' || p_cc_exp_date);
537 iex_debug_pub.LogMessage(l_api_name || ': CC holder name = ' || p_cc_holder_name);
538 END IF;
539
540 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
541 iex_debug_pub.LogMessage(l_api_name || ': Creating cc bank account for cust_account_id ' || p_cust_account_id);
542 END IF;
543 /* obsoleted ar pkg ..fixed a bug 5130923
544 arp_bank_pkg.process_cust_bank_account(
545 p_trx_date => trunc(sysdate),
546 p_currency_code => p_currency,
547 p_cust_id => p_cust_account_id,
548 p_credit_card_num => p_cc_number,
549 p_exp_date => p_cc_exp_date,
550 p_acct_name => p_cc_holder_name,
551 p_bank_account_id => x_bank_account_id,
552 p_bank_account_uses_id => x_bank_account_uses_id,
553 p_owning_party_id => p_party_id,
554 p_bank_branch_id => x_branch_id,
555 p_account_type => 'BANK',
556 p_payment_instrument => 'CREDIT_CARD'); */
557
558
559 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
560 iex_debug_pub.LogMessage(l_api_name || ': Successfully created cc bank account');
561 iex_debug_pub.LogMessage(l_api_name || ': CC bank_account_id = ' || x_bank_account_id);
562 iex_debug_pub.LogMessage(l_api_name || ': CC bank_account_uses_id = ' || x_bank_account_uses_id);
563 iex_debug_pub.LogMessage(l_api_name || ': CC bank_branch_id = ' || x_branch_id);
564 iex_debug_pub.LogMessage(l_api_name || ': End of API');
565 END IF;
566 end;
567
568 procedure create_ar_ba_bank_account(p_cust_account_id in number,
569 p_ba_routing_number in varchar,
570 p_ba_number in varchar2,
571 p_ba_type in varchar2,
572 p_ba_holder_name in varchar2,
573 p_currency in varchar2,
574 p_party_id in number,
575 x_bank_account_id out NOCOPY number,
576 x_bank_account_uses_id out NOCOPY number,
577 x_branch_id out NOCOPY number)
578 is
579 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_AR_BA_BANK_ACCOUNT';
580 begin
581 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
582 iex_debug_pub.LogMessage(l_api_name || ': Start of API');
583 END IF;
584 x_bank_account_id := null;
585 x_bank_account_uses_id := null;
586 x_branch_id := null;
587
588 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
589 iex_debug_pub.LogMessage(l_api_name || ': BA routing = ' || p_ba_routing_number);
590 iex_debug_pub.LogMessage(l_api_name || ': BA number = ' || p_ba_number);
591 iex_debug_pub.LogMessage(l_api_name || ': BA type = ' || p_ba_type);
592 iex_debug_pub.LogMessage(l_api_name || ': BA holder name = ' || p_ba_holder_name);
593 END IF;
594
595 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
596 iex_debug_pub.LogMessage(l_api_name || ': Validating routing number...');
597 END IF;
598
599 /* obsoleted ar pkg ..fixed a bug 5130923
600 if ARP_BANK_DIRECTORY.is_routing_number_valid(p_routing_number => p_ba_routing_number) = 0 then
601 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
602 iex_debug_pub.LogMessage('Invalid routing number');
603 END IF;
604 FND_MESSAGE.SET_NAME('IEX', 'IEX_INVALID_ROUTING_NUM');
605 FND_MSG_PUB.Add;
606 RAISE FND_API.G_EXC_ERROR;
607 end if;
608 */
609
610
611 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
612 iex_debug_pub.LogMessage(l_api_name || ': Creating/selecting bank branch...');
613 END IF;
614
615 /* obsoleted ar pkg ..fixed a bug 5130923
616 arp_bank_pkg.get_bank_branch_id(p_routing_number => p_ba_routing_number,
617 x_branch_party_id => x_branch_id);
618 */
619
620 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
621 iex_debug_pub.LogMessage(l_api_name || ': branch_id = ' || x_branch_id);
622 END IF;
623
624 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
625 iex_debug_pub.LogMessage(l_api_name || ': Creating ba bank account for cust_account_id ' || p_cust_account_id);
626 END IF;
627
628 /* obsoleted ar pkg ..fixed a bug 5130923
629 arp_bank_pkg.process_cust_bank_account(
630 p_trx_date => trunc(sysdate),
631 p_currency_code => p_currency,
632 p_cust_id => p_cust_account_id,
633 p_credit_card_num => p_ba_number, -- from account number on UI
634 p_exp_date => null,
635 p_acct_name => p_ba_holder_name, -- from holder name on UI
636 p_bank_account_id => x_bank_account_id,
637 p_bank_account_uses_id => x_bank_account_uses_id,
638 p_owning_party_id => p_party_id,
639 p_bank_branch_id => x_branch_id, -- create branch with routing number from UI
640 p_account_type => p_ba_type, -- from bank account type on UI
641 p_payment_instrument => 'BANK_ACCOUNT');
642 */
643
644
645 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
646 iex_debug_pub.LogMessage(l_api_name || ': Successfully created ba bank account');
647 iex_debug_pub.LogMessage(l_api_name || ': BA bank_account_id = ' || x_bank_account_id);
648 iex_debug_pub.LogMessage(l_api_name || ': BA bank_account_uses_id = ' || x_bank_account_uses_id);
649 iex_debug_pub.LogMessage(l_api_name || ': BA bank_branch_id = ' || x_branch_id);
650 iex_debug_pub.LogMessage(l_api_name || ': End of API');
651 END IF;
652 end;
653
654 PROCEDURE CREATE_AR_PAYMENT(
655 P_API_VERSION IN NUMBER,
656 P_INIT_MSG_LIST IN VARCHAR2,
657 P_COMMIT IN VARCHAR2,
658 P_VALIDATION_LEVEL IN NUMBER,
659 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
660 X_MSG_COUNT OUT NOCOPY NUMBER,
661 X_MSG_DATA OUT NOCOPY VARCHAR2,
662 P_PMT_REC IN IEX_PAYMENTS_PUB.PMT_REC_TYPE,
663 P_PMTDTLS_TBL IN IEX_PAYMENTS_PUB.PMTDTLS_TBL_TYPE,
664 P_PMTINSTR_REC IN IEX_PAYMENTS_PUB.PMTINSTR_REC_TYPE,
665 P_PMT_METHOD IN NUMBER, -- Included by varangan for profile bug#4558547
666 X_PMTRESP_REC OUT NOCOPY IEX_PAYMENTS_PUB.PMTRESP_REC_TYPE)
667 IS
668 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_AR_PAYMENT';
669 l_api_version CONSTANT NUMBER := 1.0;
670 l_return_status VARCHAR2(1);
671 l_msg_count NUMBER;
672 l_msg_data VARCHAR2(32767);
673
674 TYPE cr_id_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
675
676 l_cust_bank_acc_id NUMBER;
677 l_bank_account_uses_id NUMBER;
678 l_branch_id NUMBER;
679 l_cr_id_tab cr_id_tab;
680 l_rowid VARCHAR2(100);
681 l_payment_id NUMBER := null;
682 l_cr_id NUMBER;
683 i NUMBER;
684 j NUMBER;
685 l_del_pay_ref_id NUMBER;
686 l_pay_receipt_ref_id NUMBER;
687 l_ar_pay_method1 VARCHAR2(100);
688 l_ar_pay_method NUMBER;
689 l_cr_number NUMBER;
690 l_cr_number1 VARCHAR2(80);
691 l_del_id NUMBER;
692 l_note_payer_id NUMBER;
693 l_payer_num_id NUMBER;
694 l_payer_id VARCHAR2(80);
695 l_payer_name HZ_PARTIES.PARTY_NAME%TYPE; --Changed the datatype for bug#5652085 by ehuh 2/28/07
696 l_note_payer_type VARCHAR2(100);
697 l_context_tab IEX_NOTES_PVT.CONTEXTS_TBL_TYPE;
698 l_fun_currency VARCHAR2(80);
699 l_template_id NUMBER;
700 l_request_id number;
701 l_autofulfill varchar2(1);
702 l_note_type varchar2(30);
703 l_source_object_id NUMBER;
704 l_source_object_code varchar2(20);
705
706 l_call_payment_processor varchar2(5);
707
708 -- generate new payment
709 CURSOR pay_genid_crs IS
710 select IEX_PAYMENTS_S.NEXTVAL from dual;
711
712 -- generate new del_pay_xref
713 CURSOR dpx_genid_crs IS
714 select IEX_DEL_PAY_XREF_S.NEXTVAL from dual;
715
716 -- generate new pay_receipt
717 CURSOR pad_genid_crs IS
718 select IEX_PAY_RECEIPT_XREF_S.NEXTVAL from dual;
719
720 -- generate new receipt number
721 CURSOR rc_genid_crs IS
722 select IEX_RECEIPT_NUMBER_S.NEXTVAL from dual;
723
724 -- get del_id from iex_delinquencies table
725 CURSOR get_delid_crs(p_payment_schedule_id number) IS
726 select delinquency_id
727 from iex_delinquencies
728 where payment_schedule_id = p_payment_schedule_id;
729
730 BEGIN
731
732 /* AR processing */
733 BEGIN
734 SAVEPOINT CREATE_AR_PAYMENT_PVT1;
735
736 -- Standard call to check for call compatibility
737 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
738 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
739
740 END IF;
741
742 -- Initialize message list if p_init_msg_list is set to TRUE
743 IF FND_API.To_Boolean(p_init_msg_list) THEN
744 FND_MSG_PUB.initialize;
745 END IF;
746
747 -- Initialize API return status to success
748 l_return_status := FND_API.G_RET_STS_SUCCESS;
749
750 -- START OF BODY OF API
751 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
752 iex_debug_pub.LogMessage(l_api_name || ': Start of API');
753 END IF;
754
755 -- Fix a bug 5897567 02/21/07 by Ehuh
756 if G_ONLINE_CCPAY = 'Y' then l_call_payment_processor := FND_API.G_TRUE;
757 else
758 l_call_payment_processor := FND_API.G_FALSE;
759 end if;
760
761
762 /* validate all input parameters */
763 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
764 iex_debug_pub.LogMessage(l_api_name || ': Before validate_input');
765 END IF;
766
767 validate_input(P_PMT_REC => P_PMT_REC,
768 P_PMTDTLS_TBL => P_PMTDTLS_TBL,
769 P_PMTINSTR_REC => P_PMTINSTR_REC);
770
771 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
772 iex_debug_pub.LogMessage(l_api_name || ': After validate_input');
773 END IF;
774
775 /* validate payer parties and get payer info */
776 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
777 iex_debug_pub.LogMessage(l_api_name || ': Before GET_PAYER_INFO');
778 END IF;
779 GET_PAYER_INFO(P_PAYER_PARTY_REL_ID => P_PMT_REC.PAYER_PARTY_REL_ID,
780 P_PAYER_PARTY_ORG_ID => P_PMT_REC.PAYER_PARTY_ORG_ID,
781 P_PAYER_PARTY_PER_ID => P_PMT_REC.PAYER_PARTY_PER_ID,
782 X_NOTE_PAYER_TYPE => l_note_payer_type,
783 X_NOTE_PAYER_NUM_ID => l_note_payer_id,
784 X_PAYER_NUM_ID => l_payer_num_id,
785 X_PAYER_ID => l_payer_id,
786 X_PAYER_NAME => l_payer_name);
787
788 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
789 iex_debug_pub.LogMessage(l_api_name || ': After GET_PAYER_INFO');
790 iex_debug_pub.LogMessage(l_api_name || ': GET_PAYER_INFO returns:');
791 iex_debug_pub.LogMessage(l_api_name || ': l_note_payer_type = ' || l_note_payer_type);
792 iex_debug_pub.LogMessage(l_api_name || ': l_note_payer_id = ' || l_note_payer_id);
793 iex_debug_pub.LogMessage(l_api_name || ': l_payer_num_id = ' || l_payer_num_id);
794 iex_debug_pub.LogMessage(l_api_name || ': l_payer_id = ' || l_payer_id);
795 iex_debug_pub.LogMessage(l_api_name || ': l_payer_name = ' || l_payer_name);
796 END IF;
797
798 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
799 iex_debug_pub.LogMessage(l_api_name || ': Creating IEX payment record...');
800 end if ;
801
802 -- generate new payment id
803 OPEN pay_genid_crs;
804 FETCH pay_genid_crs INTO l_payment_id;
805 CLOSE pay_genid_crs;
806
807 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
808 iex_debug_pub.LogMessage(l_api_name || ': New payment_id = ' || l_payment_id);
809 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_PAYMENTS_PKG.Insert_Row');
810 END IF;
811
812 IEX_PAYMENTS_PKG.Insert_Row(
813 X_ROWID => l_rowid,
814 P_PAYMENT_ID => l_payment_id,
815 P_OBJECT_VERSION_NUMBER => 1.0,
816 P_PROGRAM_ID => 695,
817 P_LAST_UPDATE_DATE => sysdate,
818 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
819 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
820 P_CREATION_DATE => sysdate,
821 P_CREATED_BY => FND_GLOBAL.User_Id,
822 P_PAYMENT_METHOD_ID => null,
823 P_PAYMENT_METHOD => P_PMTINSTR_REC.USE_INSTRUMENT,
824 P_IPAYMENT_TRANS_ID => null,
825 P_IPAYMENT_STATUS => null,
826 P_PAY_SVR_CONFIRMATION => null,
827 P_CAMPAIGN_SCHED_ID => P_PMT_REC.CAMPAIGN_SCHED_ID,
828 p_TANGIBLE_ID => null,
829 p_PAYEE_ID => null,
830 p_RESOURCE_ID => P_PMT_REC.RESOURCE_ID,
831 P_ATTRIBUTE_CATEGORY => P_PMT_REC.ATTRIBUTES.ATTRIBUTE_CATEGORY,
832 P_ATTRIBUTE1 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE1,
833 P_ATTRIBUTE2 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE2,
834 P_ATTRIBUTE3 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE3,
835 P_ATTRIBUTE4 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE4,
836 P_ATTRIBUTE5 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE5,
837 P_ATTRIBUTE6 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE6,
838 P_ATTRIBUTE7 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE7,
839 P_ATTRIBUTE8 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE8,
840 P_ATTRIBUTE9 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE9,
841 P_ATTRIBUTE10 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE10,
842 P_ATTRIBUTE11 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE11,
843 P_ATTRIBUTE12 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE12,
844 P_ATTRIBUTE13 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE13,
845 P_ATTRIBUTE14 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE14,
846 P_ATTRIBUTE15 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE15);
847
848 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
849 iex_debug_pub.LogMessage(l_api_name || ': After IEX_PAYMENTS_PKG.Insert_Row');
850 End if ;
851
852 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
853 iex_debug_pub.LogMessage(l_api_name || ': After') ;
854 END IF;
855 X_PMTRESP_REC.PAYMENT_ID := l_payment_id;
856
857 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
858 iex_debug_pub.LogMessage(l_api_name || ': l_payment_id=' || l_payment_id);
859 END IF;
860
861 l_fun_currency := get_fun_currency;
862 IF P_PMT_REC.PAYMENT_TARGET = 'ACCOUNTS' THEN
863
864
865
866 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
867 iex_debug_pub.LogMessage(l_api_name || ': Payment target ACCOUNTS');
868 END IF;
869
870 -- run thru table of details, create bank accounts then create cash/apply receipts via AR APIs
871 FOR i IN 1..P_PMTDTLS_TBL.COUNT LOOP
872
873 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
874 iex_debug_pub.LogMessage(l_api_name || ': processing payment details; loop ' || i);
875 END IF;
876
877 --Determine the Payment Instrument type that is used.
878 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
879 iex_debug_pub.LogMessage(l_api_name || ': Payment instrument is ' || P_PMTINSTR_REC.USE_INSTRUMENT);
880 END IF;
881
882 /*-- Begin - varangan - profile bug#4558547
883 get_ar_payment_method(p_payment_type => P_PMTINSTR_REC.USE_INSTRUMENT,
884 x_payment_method => l_ar_pay_method1,
885 x_payment_method_id => l_ar_pay_method);
886 -- End- varangan - profile bug#4558547 */
887
888
889 /* commented for uptake funds transfer --varangan
890 IF P_PMTINSTR_REC.USE_INSTRUMENT = 'CC' THEN
891
892 create_ar_cc_bank_account(p_cust_account_id => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
893 p_cc_number => P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM,
894 p_cc_exp_date => P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE,
895 p_cc_holder_name => P_PMTINSTR_REC.CREDITCARDINSTR.CC_HOLDERNAME,
896 p_currency => P_PMT_REC.CURRENCY_CODE,
897 p_party_id => l_payer_id,
898 x_bank_account_id => l_cust_bank_acc_id,
899 x_bank_account_uses_id => l_bank_account_uses_id,
900 x_branch_id => l_branch_id);
901
902 ELSIF P_PMTINSTR_REC.USE_INSTRUMENT = 'BA' THEN
903
904 create_ar_ba_bank_account(p_cust_account_id => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
905 p_ba_routing_number => P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID,
906 p_ba_number => P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM,
907 p_ba_type => P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_TYPE,
908 p_ba_holder_name => P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_HOLDERNAME,
909 p_currency => P_PMT_REC.CURRENCY_CODE,
910 p_party_id => l_payer_id,
911 x_bank_account_id => l_cust_bank_acc_id,
912 x_bank_account_uses_id => l_bank_account_uses_id,
913 x_branch_id => l_branch_id);
914
915 END IF;
916 commented for uptake funds transfer --varangan */
917
918 -- generate new cash receipt number
919 OPEN rc_genid_crs;
920 FETCH rc_genid_crs INTO l_cr_number;
921 CLOSE rc_genid_crs;
922
923 l_cr_number1 := 'IEX_' || to_char(l_cr_number);
924 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
925 iex_debug_pub.LogMessage(l_api_name || ': New cr id = ' || l_cr_number1);
926 iex_debug_pub.LogMessage(l_api_name || ': Before AR_RECEIPT_API_PUB.CREATE_CASH');
927 END IF;
928
929 -- create cash receipts
930 if l_fun_currency = P_PMT_REC.CURRENCY_CODE then
931 /*AR_RECEIPT_API_PUB.CREATE_CASH(
932 P_API_VERSION => 1.0,
933 P_INIT_MSG_LIST => FND_API.G_FALSE,
934 P_COMMIT => FND_API.G_FALSE,
935 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
936 P_AMOUNT => P_PMTDTLS_TBL(i).AMOUNT,
937 P_RECEIPT_METHOD_ID => l_ar_pay_method,
938 P_RECEIPT_NUMBER => l_cr_number1,
939 P_CUSTOMER_ID => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
940 P_CUSTOMER_SITE_USE_ID => P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
941 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
942 P_CR_ID => L_CR_ID,
943 X_RETURN_STATUS => L_RETURN_STATUS,
944 X_MSG_COUNT => L_MSG_COUNT,
945 X_MSG_DATA => L_MSG_DATA);
946 */
947
948
949 AR_RECEIPT_API_PUB.CREATE_APPLY_ON_ACC(
950 P_API_VERSION => 1.0,
951 P_INIT_MSG_LIST => FND_API.G_FALSE,
952 P_COMMIT => FND_API.G_FALSE,
953 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
954 P_AMOUNT => P_PMTDTLS_TBL(i).AMOUNT,
955 P_RECEIPT_METHOD_ID => P_PMT_METHOD , -- l_ar_pay_method, commented for profile bug#4558547
956 P_RECEIPT_NUMBER => l_cr_number1,
957 P_CUSTOMER_ID => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
958 P_CUSTOMER_SITE_USE_ID => P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
959 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
960 P_CR_ID => L_CR_ID,
961 p_application_ref_num => NULL,
962 p_secondary_application_ref_id => NULL,
963 p_customer_reference => NULL,
964 p_customer_reason => NULL,
965 p_call_payment_processor => l_call_payment_processor, -- Fix a bug 5897567 02/06/07 by Ehuh
966 X_RETURN_STATUS => L_RETURN_STATUS,
967 X_MSG_COUNT => L_MSG_COUNT,
968 X_MSG_DATA => L_MSG_DATA,
969 -- Begin -- varangan --Bug4528444 -- included for payments uptake
970 p_payment_trxn_extension_id => P_PMTDTLS_TBL(i).TRX_EXTN_ID);
971 -- End -- varangan -- Bug4528444 --included for payments uptake
972 else
973 /*
974 AR_RECEIPT_API_PUB.CREATE_CASH(
975 P_API_VERSION => 1.0,
976 P_INIT_MSG_LIST => FND_API.G_FALSE,
977 P_COMMIT => FND_API.G_FALSE,
978 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
979 P_EXCHANGE_RATE_TYPE => P_PMT_REC.EXCHANGE_RATE_TYPE,
980 P_EXCHANGE_RATE_DATE => P_PMT_REC.EXCHANGE_DATE,
981 P_AMOUNT => P_PMTDTLS_TBL(i).AMOUNT,
982 P_RECEIPT_METHOD_ID => l_ar_pay_method,
983 P_RECEIPT_NUMBER => l_cr_number1,
984 P_CUSTOMER_ID => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
985 P_CUSTOMER_SITE_USE_ID => P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
986 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
987 P_CR_ID => L_CR_ID,
988 X_RETURN_STATUS => L_RETURN_STATUS,
989 X_MSG_COUNT => L_MSG_COUNT,
990 X_MSG_DATA => L_MSG_DATA);
991 */
992
993
994
995 AR_RECEIPT_API_PUB.CREATE_APPLY_ON_ACC(
996 P_API_VERSION => 1.0,
997 P_INIT_MSG_LIST => FND_API.G_FALSE,
998 P_COMMIT => FND_API.G_FALSE,
999 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
1000 P_EXCHANGE_RATE_TYPE => P_PMT_REC.EXCHANGE_RATE_TYPE,
1001 P_EXCHANGE_RATE_DATE => P_PMT_REC.EXCHANGE_DATE,
1002 P_AMOUNT => P_PMTDTLS_TBL(i).AMOUNT,
1003 P_RECEIPT_METHOD_ID => P_PMT_METHOD, --l_ar_pay_method, commented for profile bug#4558547
1004 P_RECEIPT_NUMBER => l_cr_number1,
1005 P_CUSTOMER_ID => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
1006 P_CUSTOMER_SITE_USE_ID => P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
1007 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
1008 P_CR_ID => L_CR_ID,
1009 p_application_ref_num => NULL,
1010 p_secondary_application_ref_id => NULL,
1011 p_customer_reference => NULL,
1012 p_customer_reason => NULL,
1013 p_call_payment_processor => l_call_payment_processor, -- Fix a bug 5897567 02/06/07 by Ehuh
1014 X_RETURN_STATUS => L_RETURN_STATUS,
1015 X_MSG_COUNT => L_MSG_COUNT,
1016 X_MSG_DATA => L_MSG_DATA,
1017 -- Begin -- varangan --Bug4528444 -- included for payments uptake
1018 p_payment_trxn_extension_id => P_PMTDTLS_TBL(i).TRX_EXTN_ID);
1019 -- End -- varangan --Bug4528444 -- included for payments uptake
1020
1021 end if;
1022
1023 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1024 iex_debug_pub.LogMessage(l_api_name || ': After AR_RECEIPT_API_PUB.CREATE_CASH');
1025 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
1026 iex_debug_pub.LogMessage(l_api_name || ': New cash_receipt_id = ' || l_cr_id);
1027 END IF;
1028
1029 -- check for errors
1030 IF l_return_status<>'S' THEN
1031 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1032 iex_debug_pub.LogMessage(l_api_name || ': AR_RECEIPT_API_PUB.CREATE_CASH failed');
1033 END IF;
1034
1035 x_return_status :=l_return_status;
1036 X_MSG_DATA:= L_MSG_DATA;
1037 X_MSG_COUNT := L_MSG_COUNT;
1038
1039 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_CREATE_CR');
1040 FND_MSG_PUB.Add;
1041 return; --RAISE FND_API.G_EXC_ERROR;
1042 END IF;
1043
1044
1045 /*
1046 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1047 iex_debug_pub.LogMessage(l_api_name || ': Before AR_RECEIPT_API_PUB.APPLY_ON_ACCOUNT');
1048 END IF;
1049
1050 -- apply on_account
1051 AR_RECEIPT_API_PUB.APPLY_ON_ACCOUNT(
1052 P_API_VERSION => 1.0,
1053 P_INIT_MSG_LIST => FND_API.G_FALSE,
1054 P_COMMIT => FND_API.G_FALSE,
1055 X_RETURN_STATUS => L_RETURN_STATUS,
1056 X_MSG_COUNT => L_MSG_COUNT,
1057 X_MSG_DATA => L_MSG_DATA,
1058 P_RECEIPT_NUMBER => l_cr_number1);
1059 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1060 iex_debug_pub.LogMessage(l_api_name || ': After AR_RECEIPT_API_PUB.APPLY_ON_ACCOUNT');
1061 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
1062 END IF;
1063
1064 -- check for errors
1065 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1066 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1067 iex_debug_pub.LogMessage(l_api_name || ': AR_RECEIPT_API_PUB.APPLY_ON_ACCOUNT failed');
1068 END IF;
1069
1070 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_APPLY_ACC');
1071 FND_MSG_PUB.Add;
1072 RAISE FND_API.G_EXC_ERROR;
1073 END IF;
1074 */
1075
1076 -- generate new pay_receipt id
1077 OPEN pad_genid_crs;
1078 FETCH pad_genid_crs INTO l_pay_receipt_ref_id;
1079 CLOSE pad_genid_crs;
1080
1081 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1082 iex_debug_pub.LogMessage(l_api_name || ': New pay_receipt_ref_id = ' || l_pay_receipt_ref_id);
1083 iex_debug_pub.LogMessage(l_api_name || ': Before call to IEX_PAY_RECEIPT_XREF_PKG.INSERT_ROW');
1084 END IF;
1085
1086 IEX_PAY_RECEIPT_XREF_PKG.INSERT_ROW(
1087 X_ROWID => l_rowid,
1088 P_PAY_RECEIPT_XREF_ID => l_pay_receipt_ref_id,
1089 P_LAST_UPDATE_DATE => sysdate,
1090 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
1091 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
1092 P_CREATION_DATE => sysdate,
1093 P_CREATED_BY => FND_GLOBAL.User_Id,
1094 P_PROGRAM_ID => 695,
1095 P_OBJECT_VERSION_NUMBER => 1.0,
1096 P_PAYMENT_ID => l_payment_id,
1097 P_CASH_RECEIPT_ID => l_cr_id);
1098
1099 l_cr_id_tab(i) := l_cr_id;
1100
1101 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1102 iex_debug_pub.LogMessage(l_api_name || ': After call to IEX_PAY_RECEIPT_XREF_PKG.INSERT_ROW');
1103 End if ;
1104 END LOOP;
1105
1106 ELSIF P_PMT_REC.PAYMENT_TARGET = 'INVOICES' THEN
1107
1108
1109 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1110 iex_debug_pub.LogMessage(l_api_name || ': Payment target INVOICES');
1111 END IF;
1112
1113 --Determine the Payment Instrument type that is used.
1114 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1115 iex_debug_pub.LogMessage(l_api_name || ': Payment instrument is ' || P_PMTINSTR_REC.USE_INSTRUMENT);
1116 END IF;
1117
1118
1119 /* Begin - varangan - profile bug#4558547
1120 get_ar_payment_method(p_payment_type => P_PMTINSTR_REC.USE_INSTRUMENT,
1121 x_payment_method => l_ar_pay_method1,
1122 x_payment_method_id => l_ar_pay_method);
1123 End - varangan - profile bug#4558547 */
1124
1125
1126 -- begin - uptake funds capture - varangan
1127 /* IF P_PMTINSTR_REC.USE_INSTRUMENT = 'CC' THEN
1128
1129 create_ar_cc_bank_account(p_cust_account_id => P_PMTDTLS_TBL(1).CUST_ACCOUNT_ID,
1130 p_cc_number => P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM,
1131 p_cc_exp_date => P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE,
1132 p_cc_holder_name => P_PMTINSTR_REC.CREDITCARDINSTR.CC_HOLDERNAME,
1133 p_currency => P_PMT_REC.CURRENCY_CODE,
1134 p_party_id => l_payer_id,
1135 x_bank_account_id => l_cust_bank_acc_id,
1136 x_bank_account_uses_id => l_bank_account_uses_id,
1137 x_branch_id => l_branch_id);
1138
1139 ELSIF P_PMTINSTR_REC.USE_INSTRUMENT = 'BA' THEN
1140
1141 create_ar_ba_bank_account(p_cust_account_id => P_PMTDTLS_TBL(1).CUST_ACCOUNT_ID,
1142 p_ba_routing_number => P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID,
1143 p_ba_number => P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM,
1144 p_ba_type => P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_TYPE,
1145 p_ba_holder_name => P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_HOLDERNAME,
1146 p_currency => P_PMT_REC.CURRENCY_CODE,
1147 p_party_id => l_payer_id,
1148 x_bank_account_id => l_cust_bank_acc_id,
1149 x_bank_account_uses_id => l_bank_account_uses_id,
1150 x_branch_id => l_branch_id);
1151
1152 END IF; */
1153 -- end - uptake funds capture - varangan
1154
1155 -- Start bug 6717279 gnramasa 25-Aug-08
1156 --FOR i IN 1..P_PMTDTLS_TBL.COUNT LOOP -- to fix a bug 5128910
1157
1158
1159 -- generate new cash receipt number
1160 OPEN rc_genid_crs;
1161 FETCH rc_genid_crs INTO l_cr_number;
1162 CLOSE rc_genid_crs;
1163
1164 l_cr_number1 := 'IEX_' || to_char(l_cr_number);
1165
1166 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1167 iex_debug_pub.LogMessage(l_api_name || ': New cr id = ' || l_cr_number1);
1168 iex_debug_pub.LogMessage(l_api_name || ': Before AR_RECEIPT_API_PUB.CREATE_CASH');
1169 END IF;
1170
1171 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1172 iex_debug_pub.logmessage('Creating Cash Receipt and Applying for the First Payment Schedule....');
1173 iex_debug_pub.logmessage('Pmt Schedule id =>' || P_PMTDTLS_TBL(1).PAYMENT_SCHEDULE_ID || ' Amount => ' || P_PMTDTLS_TBL(1).AMOUNT );
1174 End If ;
1175
1176 if l_fun_currency = P_PMT_REC.CURRENCY_CODE then
1177 --if P_PMTDTLS_TBL(i).currency_code = P_PMT_REC.CURRENCY_CODE then
--commented for bug6717179
1178 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1179 iex_debug_pub.LogMessage(l_api_name || ': P_PMTDTLS_TBL(1).TRX_TO_CR_RATE = ' || P_PMTDTLS_TBL(1).TRX_TO_CR_RATE);
1180 END IF;
1181 if P_PMTDTLS_TBL(1).TRX_TO_CR_RATE = 1 then
1182 -- create cash receipt
1183 /*
1184 AR_RECEIPT_API_PUB.CREATE_CASH(
1185 P_API_VERSION => 1.0,
1186 P_INIT_MSG_LIST => FND_API.G_FALSE,
1187 P_COMMIT => FND_API.G_FALSE,
1188 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
1189 P_AMOUNT => P_PMT_REC.TOTAL_AMOUNT,
1190 P_RECEIPT_METHOD_ID => l_ar_pay_method,
1191 P_RECEIPT_NUMBER => l_cr_number1,
1192 P_CUSTOMER_ID => P_PMTDTLS_TBL(1).CUST_ACCOUNT_ID,
1193 P_CUSTOMER_SITE_USE_ID => P_PMTDTLS_TBL(1).CUST_SITE_USE_ID,
1194 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
1195 P_CR_ID => l_cr_id,
1196 X_RETURN_STATUS => L_RETURN_STATUS,
1197 X_MSG_COUNT => L_MSG_COUNT,
1198 X_MSG_DATA => L_MSG_DATA);
1199
1200 */
1201
1202
1203 AR_RECEIPT_API_PUB.CREATE_AND_APPLY(
1204 P_API_VERSION => 1.0,
1205 P_INIT_MSG_LIST => FND_API.G_FALSE,
1206 P_COMMIT => FND_API.G_FALSE,
1207 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
1208 P_AMOUNT => P_PMT_REC.TOTAL_AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT, -- P_PMT_REC.TOTAL_AMOUNT,
1209 P_RECEIPT_METHOD_ID =>P_PMT_METHOD, -- l_ar_pay_method, for profile bug#4558547
1210 P_RECEIPT_NUMBER => l_cr_number1,
1211 P_CUSTOMER_ID => P_PMT_REC.CUST_ACCOUNT_ID, --P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
1212 P_CUSTOMER_SITE_USE_ID => P_PMT_REC.CUST_SITE_USE_ID, --P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
1213 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
1214 P_CR_ID => l_cr_id,
1215 p_applied_payment_schedule_id => P_PMTDTLS_TBL(1).PAYMENT_SCHEDULE_ID, --P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID,
1216 p_amount_applied => P_PMTDTLS_TBL(1).AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT,
1217 p_call_payment_processor => l_call_payment_processor, -- Fix a bug 5897567 02/06/07 by Ehuh
1218 X_RETURN_STATUS => L_RETURN_STATUS,
1219 X_MSG_COUNT => L_MSG_COUNT,
1220 X_MSG_DATA => L_MSG_DATA,
1221 -- Begin -- varangan --Bug4528444 -- included for payments uptake
1222 p_payment_trxn_extension_id =>P_PMTDTLS_TBL(1).TRX_EXTN_ID
1223 -- End -- varangan --Bug4528444 -- included for payments uptake
1224 );
1225 else
1226
1227 AR_RECEIPT_API_PUB.CREATE_AND_APPLY(
1228 P_API_VERSION => 1.0,
1229 P_INIT_MSG_LIST => FND_API.G_FALSE,
1230 P_COMMIT => FND_API.G_FALSE,
1231 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
1232 P_AMOUNT => P_PMT_REC.TOTAL_AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT, -- P_PMT_REC.TOTAL_AMOUNT,
1233 P_RECEIPT_METHOD_ID =>P_PMT_METHOD, -- l_ar_pay_method, for profile bug#4558547
1234 P_RECEIPT_NUMBER => l_cr_number1,
1235 P_CUSTOMER_ID => P_PMT_REC.CUST_ACCOUNT_ID, --P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
1236 P_CUSTOMER_SITE_USE_ID => P_PMT_REC.CUST_SITE_USE_ID, --P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
1237 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
1238 P_CR_ID => l_cr_id,
1239 p_applied_payment_schedule_id => P_PMTDTLS_TBL(1).PAYMENT_SCHEDULE_ID, --P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID,
1240 p_amount_applied => P_PMTDTLS_TBL(1).AMOUNT / P_PMTDTLS_TBL(1).TRX_TO_CR_RATE, --added by gnramasa bug 6717279
1241 p_amount_applied_from => P_PMTDTLS_TBL(1).AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT,
1242 p_trans_to_receipt_rate => P_PMTDTLS_TBL(1).TRX_TO_CR_RATE, --added by gnramasa bug 6717279
1243 p_call_payment_processor => l_call_payment_processor, -- Fix a bug 5897567 02/06/07 by Ehuh
1244 X_RETURN_STATUS => L_RETURN_STATUS,
1245 X_MSG_COUNT => L_MSG_COUNT,
1246 X_MSG_DATA => L_MSG_DATA,
1247 -- Begin -- varangan --Bug4528444 -- included for payments uptake
1248 p_payment_trxn_extension_id =>P_PMTDTLS_TBL(1).TRX_EXTN_ID
1249 -- End -- varangan --Bug4528444 -- included for payments uptake
1250 );
1251 end if;
1252
1253
1254 else
1255 -- create cash receipt
1256 /*
1257 AR_RECEIPT_API_PUB.CREATE_CASH(
1258 P_API_VERSION => 1.0,
1259 P_INIT_MSG_LIST => FND_API.G_FALSE,
1260 P_COMMIT => FND_API.G_FALSE,
1261 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
1262 P_EXCHANGE_RATE_TYPE => P_PMT_REC.EXCHANGE_RATE_TYPE,
1263 P_EXCHANGE_RATE_DATE => P_PMT_REC.EXCHANGE_DATE,
1264 P_AMOUNT => P_PMT_REC.TOTAL_AMOUNT,
1265 P_RECEIPT_METHOD_ID => l_ar_pay_method,
1266 P_RECEIPT_NUMBER => l_cr_number1,
1267 P_CUSTOMER_ID => P_PMTDTLS_TBL(1).CUST_ACCOUNT_ID,
1268 P_CUSTOMER_SITE_USE_ID => P_PMTDTLS_TBL(1).CUST_SITE_USE_ID,
1269 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
1270 P_CR_ID => l_cr_id,
1271 X_RETURN_STATUS => L_RETURN_STATUS,
1272 X_MSG_COUNT => L_MSG_COUNT,
1273 X_MSG_DATA => L_MSG_DATA);
1274 */
1275
1276 if P_PMTDTLS_TBL(1).TRX_TO_CR_RATE = 1 then
1277 AR_RECEIPT_API_PUB.CREATE_AND_APPLY(
1278 P_API_VERSION => 1.0,
1279 P_INIT_MSG_LIST => FND_API.G_FALSE,
1280 P_COMMIT => FND_API.G_FALSE,
1281 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
1282 P_EXCHANGE_RATE_TYPE => P_PMT_REC.EXCHANGE_RATE_TYPE,
1283 P_EXCHANGE_RATE_DATE => P_PMT_REC.EXCHANGE_DATE,
1284 P_AMOUNT => P_PMT_REC.TOTAL_AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT, -- P_PMT_REC.TOTAL_AMOUNT,
1285 P_RECEIPT_METHOD_ID => P_PMT_METHOD, --l_ar_pay_method, for profile bug#4558547
1286 P_RECEIPT_NUMBER => l_cr_number1,
1287 P_CUSTOMER_ID => P_PMT_REC.CUST_ACCOUNT_ID, --P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
1288 P_CUSTOMER_SITE_USE_ID => P_PMT_REC.CUST_SITE_USE_ID, --P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
1289 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
1290 P_CR_ID => l_cr_id,
1291 p_applied_payment_schedule_id => P_PMTDTLS_TBL(1).PAYMENT_SCHEDULE_ID, --P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID,
1292 p_amount_applied => P_PMTDTLS_TBL(1).AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT,
1293 p_call_payment_processor => l_call_payment_processor, -- Fix a bug 5897567 02/06/07 by Ehuh
1294 X_RETURN_STATUS => L_RETURN_STATUS,
1295 X_MSG_COUNT => L_MSG_COUNT,
1296 X_MSG_DATA => L_MSG_DATA,
1297 -- Begin -- varangan --Bug4528444 -- included for payments uptake
1298 p_payment_trxn_extension_id => P_PMTDTLS_TBL(1).TRX_EXTN_ID
1299 -- End -- varangan --Bug4528444 -- included for payments uptake
1300 );
1301 else
1302 AR_RECEIPT_API_PUB.CREATE_AND_APPLY(
1303 P_API_VERSION => 1.0,
1304 P_INIT_MSG_LIST => FND_API.G_FALSE,
1305 P_COMMIT => FND_API.G_FALSE,
1306 P_CURRENCY_CODE => P_PMT_REC.CURRENCY_CODE,
1307 P_EXCHANGE_RATE_TYPE => P_PMT_REC.EXCHANGE_RATE_TYPE,
1308 P_EXCHANGE_RATE_DATE => P_PMT_REC.EXCHANGE_DATE,
1309 P_AMOUNT => P_PMT_REC.TOTAL_AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT, -- P_PMT_REC.TOTAL_AMOUNT,
1310 P_RECEIPT_METHOD_ID => P_PMT_METHOD, --l_ar_pay_method, for profile bug#4558547
1311 P_RECEIPT_NUMBER => l_cr_number1,
1312 P_CUSTOMER_ID => P_PMT_REC.CUST_ACCOUNT_ID, --P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
1313 P_CUSTOMER_SITE_USE_ID => P_PMT_REC.CUST_SITE_USE_ID, --P_PMTDTLS_TBL(i).CUST_SITE_USE_ID,
1314 P_CUSTOMER_BANK_ACCOUNT_ID => L_CUST_BANK_ACC_ID,
1315 P_CR_ID => l_cr_id,
1316 p_applied_payment_schedule_id => P_PMTDTLS_TBL(1).PAYMENT_SCHEDULE_ID, --P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID,
1317 p_amount_applied => P_PMTDTLS_TBL(1).AMOUNT / P_PMTDTLS_TBL(1).TRX_TO_CR_RATE, --P_PMTDTLS_TBL(1).AMOUNT, --P_PMTDTLS_TBL(i).AMOUNT,
1318 p_call_payment_processor => l_call_payment_processor, -- Fix a bug 5897567 02/06/07 by Ehuh
1319 p_amount_applied_from => P_PMTDTLS_TBL(1).AMOUNT, --added by gnramasa bug 6717279
1320 p_trans_to_receipt_rate => P_PMTDTLS_TBL(1).TRX_TO_CR_RATE, --added by gnramasa bug 6717279
1321 X_RETURN_STATUS => L_RETURN_STATUS,
1322 X_MSG_COUNT => L_MSG_COUNT,
1323 X_MSG_DATA => L_MSG_DATA,
1324 -- Begin -- varangan --Bug4528444 -- included for payments uptake
1325 p_payment_trxn_extension_id => P_PMTDTLS_TBL(1).TRX_EXTN_ID
1326 -- End -- varangan --Bug4528444 -- included for payments uptake
1327 );
1328 end if;
1329
1330
1331 end if;
1332
1333
1334 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1335 iex_debug_pub.LogMessage(l_api_name || ': After AR_RECEIPT_API_PUB.CREATE_CASH');
1336 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
1337 iex_debug_pub.LogMessage(l_api_name || ': New cash_receipt_id = ' || l_cr_id);
1338 END IF;
1339
1340 -- check for errors
1341 IF l_return_status<>'S' THEN
1342
1343 x_return_status :=l_return_status;
1344 X_MSG_DATA:= L_MSG_DATA;
1345 X_MSG_COUNT := L_MSG_COUNT;
1346
1347 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1348 iex_debug_pub.LogMessage(l_api_name || ': AR_RECEIPT_API_PUB.CREATE_CASH failed');
1349 END IF;
1350 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_CREATE_CR');
1351 FND_MSG_PUB.Add;
1352 return;
1353 END IF;
1354
1355 OPEN get_delid_crs(P_PMTDTLS_TBL(1).PAYMENT_SCHEDULE_ID);
1356 FETCH get_delid_crs INTO l_del_id;
1357 CLOSE get_delid_crs;
1358
1359 if l_del_id is not null then
1360 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1361 iex_debug_pub.LogMessage(l_api_name || ': Delinquency found. Going to insert row into IEX_DEL_PAY_XREF table');
1362 END IF;
1363
1364 -- generate new del_payment_ref id
1365 OPEN dpx_genid_crs;
1366 FETCH dpx_genid_crs INTO l_del_pay_ref_id;
1367 CLOSE dpx_genid_crs;
1368
1369 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1370 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1371 END IF;
1372
1373 IEX_DEL_PAY_XREF_PKG.INSERT_ROW(
1374 X_ROWID => l_rowid,
1375 P_DEL_PAY_ID => l_del_pay_ref_id,
1376 P_LAST_UPDATE_DATE => sysdate,
1377 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
1378 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
1379 P_CREATION_DATE => sysdate,
1380 P_CREATED_BY => FND_GLOBAL.User_Id,
1381 P_PROGRAM_ID => 695,
1382 P_OBJECT_VERSION_NUMBER => 1.0,
1383 P_DELINQUENCY_ID => l_del_id,
1384 P_PAYMENT_ID => l_payment_id);
1385
1386 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1387 iex_debug_pub.LogMessage(l_api_name || ': After call to IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1388 END IF;
1389 else
1390 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1391 iex_debug_pub.LogMessage(l_api_name || ': Delinquency not found.');
1392 END IF;
1393 end if;
1394
1395 -- generate new pay_receipt_ref id
1396 OPEN pad_genid_crs;
1397 FETCH pad_genid_crs INTO l_pay_receipt_ref_id;
1398 CLOSE pad_genid_crs;
1399
1400 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1401 iex_debug_pub.LogMessage(l_api_name || ': New pay_receipt_ref_id = ' || l_pay_receipt_ref_id);
1402 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1403 END IF;
1404
1405 IEX_PAY_RECEIPT_XREF_PKG.Insert_Row(
1406 X_ROWID => l_rowid,
1407 P_PAY_RECEIPT_XREF_ID => l_pay_receipt_ref_id,
1408 P_LAST_UPDATE_DATE => sysdate,
1409 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
1410 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
1411 P_CREATION_DATE => sysdate,
1412 P_CREATED_BY => FND_GLOBAL.User_Id,
1413 P_PROGRAM_ID => 695,
1414 P_OBJECT_VERSION_NUMBER => 1.0,
1415 P_PAYMENT_ID => l_payment_id,
1416 P_CASH_RECEIPT_ID => l_cr_id);
1417
1418 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1419 iex_debug_pub.LogMessage(l_api_name || ': After IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1420 END IF;
1421
1422 l_cr_id_tab(1) := l_cr_id;
1423
1424 -- run thru table of details and apply via AR APIs
1425 -- bug 4868943 FOR i IN 2..P_PMTDTLS_TBL.COUNT LOOP
1426 -- move this loop to the above to make payment multiple (bug 5128910) FOR i IN 1..P_PMTDTLS_TBL.COUNT LOOP
1427
1428 FOR i IN 2..P_PMTDTLS_TBL.COUNT LOOP
1429 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1430 iex_debug_pub.LogMessage(l_api_name || ': processing payment details; loop ' || i);
1431 iex_debug_pub.LogMessage(l_api_name || ': Before AR_RECEIPT_API_PUB.APPLY');
1432 END IF;
1433
1434 -- apply on invoices
1435 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1436 iex_debug_pub.LogMessage(l_api_name || ': P_PMTDTLS_TBL(i).TRX_TO_CR_RATE = ' || P_PMTDTLS_TBL(i).TRX_TO_CR_RATE);
1437 END IF;
1438
1439 --/* bug 4868943
1440 if P_PMTDTLS_TBL(i).TRX_TO_CR_RATE = 1 then
1441
1442 AR_RECEIPT_API_PUB.APPLY(
1443 P_API_VERSION => 1.0,
1444 P_INIT_MSG_LIST => FND_API.G_FALSE,
1445 P_COMMIT => FND_API.G_FALSE,
1446 X_RETURN_STATUS => L_RETURN_STATUS,
1447 X_MSG_COUNT => L_MSG_COUNT,
1448 X_MSG_DATA => L_MSG_DATA,
1449 P_RECEIPT_NUMBER => l_cr_number1,
1450 p_applied_payment_schedule_id => P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID,
1451 p_amount_applied => P_PMTDTLS_TBL(i).AMOUNT);
1452
1453 else
1454
1455 if P_PMTDTLS_TBL(i).TRX_TO_CR_RATE <> 0 then
1456 AR_RECEIPT_API_PUB.APPLY(
1457 P_API_VERSION => 1.0,
1458 P_INIT_MSG_LIST => FND_API.G_FALSE,
1459 P_COMMIT => FND_API.G_FALSE,
1460 X_RETURN_STATUS => L_RETURN_STATUS,
1461 X_MSG_COUNT => L_MSG_COUNT,
1462 X_MSG_DATA => L_MSG_DATA,
1463 P_RECEIPT_NUMBER => l_cr_number1,
1464 p_applied_payment_schedule_id => P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID,
1465 p_amount_applied => P_PMTDTLS_TBL(i).AMOUNT / P_PMTDTLS_TBL(i).TRX_TO_CR_RATE,
1466 p_trans_to_receipt_rate => P_PMTDTLS_TBL(i).TRX_TO_CR_RATE,
1467 p_amount_applied_from => P_PMTDTLS_TBL(i).AMOUNT);
1468
1469 else
1470 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1471 iex_debug_pub.LogMessage(l_api_name || ': because P_PMTDTLS_TBL(i).TRX_TO_CR_RATE = 0 we failed');
1472 END IF;
1473
1474 x_return_status :=l_return_status;
1475 X_MSG_DATA:= L_MSG_DATA;
1476
1477 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_APPLY_APP');
1478 FND_MSG_PUB.Add;
1479 return; -- RAISE FND_API.G_EXC_ERROR;
1480 end if;
1481 end if;
1482
1483 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1484 iex_debug_pub.LogMessage(l_api_name || ': After AR_RECEIPT_API_PUB.APPLY');
1485 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
1486 END IF;
1487
1488 -- check for errors
1489 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1490 X_RETURN_STATUS:=l_return_status;
1491 X_MSG_DATA:= L_MSG_DATA;
1492
1493 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1494 iex_debug_pub.LogMessage(l_api_name || ': AR_RECEIPT_API_PUB.APPLY failed');
1495 END IF;
1496
1497 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_APPLY_APP');
1498 FND_MSG_PUB.Add;
1499 RAISE FND_API.G_EXC_ERROR;
1500 END IF;
1501 --*/
1502
1503 OPEN get_delid_crs(P_PMTDTLS_TBL(i).PAYMENT_SCHEDULE_ID);
1504 FETCH get_delid_crs INTO l_del_id;
1505 CLOSE get_delid_crs;
1506
1507 if l_del_id is not null then
1508 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1509 iex_debug_pub.LogMessage(l_api_name || ': Delinquency found. Going to insert row into IEX_DEL_PAY_XREF table');
1510 END IF;
1511
1512 -- generate new del_payment_ref id
1513 OPEN dpx_genid_crs;
1514 FETCH dpx_genid_crs INTO l_del_pay_ref_id;
1515 CLOSE dpx_genid_crs;
1516
1517 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1518 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1519 END IF;
1520
1521 IEX_DEL_PAY_XREF_PKG.INSERT_ROW(
1522 X_ROWID => l_rowid,
1523 P_DEL_PAY_ID => l_del_pay_ref_id,
1524 P_LAST_UPDATE_DATE => sysdate,
1525 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
1526 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
1527 P_CREATION_DATE => sysdate,
1528 P_CREATED_BY => FND_GLOBAL.User_Id,
1529 P_PROGRAM_ID => 695,
1530 P_OBJECT_VERSION_NUMBER => 1.0,
1531 P_DELINQUENCY_ID => l_del_id,
1532 P_PAYMENT_ID => l_payment_id);
1533
1534 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1535 iex_debug_pub.LogMessage(l_api_name || ': After call to IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1536 END IF;
1537 else
1538 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1539 iex_debug_pub.LogMessage(l_api_name || ': Delinquency not found.');
1540 END IF;
1541 end if;
1542 END LOOP;
1543
1544 /*
1545 -- generate new pay_receipt_ref id
1546 OPEN pad_genid_crs;
1547 FETCH pad_genid_crs INTO l_pay_receipt_ref_id;
1548 CLOSE pad_genid_crs;
1549
1550 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1551 iex_debug_pub.LogMessage(l_api_name || ': New pay_receipt_ref_id = ' || l_pay_receipt_ref_id);
1552 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1553 END IF;
1554
1555 IEX_PAY_RECEIPT_XREF_PKG.Insert_Row(
1556 X_ROWID => l_rowid,
1557 P_PAY_RECEIPT_XREF_ID => l_pay_receipt_ref_id,
1558 P_LAST_UPDATE_DATE => sysdate,
1559 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
1560 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
1561 P_CREATION_DATE => sysdate,
1562 P_CREATED_BY => FND_GLOBAL.User_Id,
1563 P_PROGRAM_ID => 695,
1564 P_OBJECT_VERSION_NUMBER => 1.0,
1565 P_PAYMENT_ID => l_payment_id,
1566 P_CASH_RECEIPT_ID => l_cr_id);
1567
1568
1569
1570 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1571 iex_debug_pub.LogMessage(l_api_name || ': After IEX_DEL_PAY_XREF_PKG.INSERT_ROW');
1572 END IF;
1573
*/
1574 --END LOOP;
1575
1576
1577 END IF;
1578
1579
1580 /* commit AR processing */
1581 COMMIT WORK;
1582
1583
1584
1585 FND_MESSAGE.SET_NAME('IEX', 'IEX_AR_SUCCESS');
1586 FND_MSG_PUB.Add;
1587
1588 x_return_status := FND_API.G_RET_STS_SUCCESS;
1589 commit;
1590
1591 EXCEPTION
1592 WHEN FND_API.G_EXC_ERROR THEN
1593 ROLLBACK TO CREATE_AR_PAYMENT_PVT1;
1594 If X_RETURN_STATUS is Null Then
1595 x_return_status := FND_API.G_RET_STS_ERROR;
1596 End If;
1597 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1598 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1599 ROLLBACK TO CREATE_AR_PAYMENT_PVT1;
1600 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1601 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1602 WHEN OTHERS THEN
1603 ROLLBACK TO CREATE_AR_PAYMENT_PVT1;
1604 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1605 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
1606 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
1607 END IF;
1608 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1609 END;
1610
1611 if x_return_status <> FND_API.G_RET_STS_SUCCESS then
1612 return;
1613 end if;
1614
1615 /* creating note */
1616 BEGIN
1617 SAVEPOINT CREATE_PAYMENT_PVT2;
1618
1619 l_note_type := fnd_profile.value('AST_NOTES_DEFAULT_TYPE');
1620 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1621 iex_debug_pub.LogMessage(l_api_name || ': l_note_type = ' || l_note_type);
1622 END IF;
1623
1624 /* if note is passed - insert it */
1625 if P_PMT_REC.NOTE is not null and l_note_type is not null then
1626 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1627 iex_debug_pub.LogMessage(l_api_name || ': Note is not null');
1628 END IF;
1629
1630 IF P_PMT_REC.PAYMENT_TARGET = 'ACCOUNTS' or P_PMT_REC.PAYMENT_TARGET = 'INVOICES' THEN
1631
1632 i := 1;
1633 /* adding parties into note context */
1634 l_context_tab(i).context_type := 'PARTY';
1635 l_context_tab(i).context_id := l_note_payer_id;
1636 i := i + 1;
1637 if l_note_payer_type = 'PARTY_RELATIONSHIP' then
1638 l_context_tab(i).context_type := 'PARTY';
1639 l_context_tab(i).context_id := P_PMT_REC.PAYER_PARTY_ORG_ID;
1640 i := i + 1;
1641 l_context_tab(i).context_type := 'PARTY';
1642 l_context_tab(i).context_id := P_PMT_REC.PAYER_PARTY_PER_ID;
1643 i := i + 1;
1644 end if;
1645
1646 FOR j IN 1..l_cr_id_tab.COUNT LOOP
1647 /* adding account to note context */
1648 l_context_tab(i).context_type := 'IEX_ACCOUNT';
1649 l_context_tab(i).context_id := P_PMTDTLS_TBL(j).CUST_ACCOUNT_ID;
1650 i := i + 1;
1651
1652 /* adding bill-to to note context */
1653 l_context_tab(i).context_type := 'IEX_BILLTO';
1654 l_context_tab(i).context_id := P_PMTDTLS_TBL(j).CUST_SITE_USE_ID;
1655 i := i + 1;
1656
1657 /* adding payments to note context */
1658 if j = 1 then
1659 l_source_object_id := l_cr_id_tab(j);
1660 l_source_object_code := 'IEX_PAYMENT';
1661 else
1662 l_context_tab(i).context_type := 'IEX_PAYMENT';
1663 l_context_tab(i).context_id := l_cr_id_tab(j);
1664 i := i + 1;
1665 end if;
1666 END LOOP;
1667
1668 /* adding invoice psa to note context */
1669 if P_PMT_REC.PAYMENT_TARGET = 'INVOICES' then
1670 /* adding psa to note context */
1671 FOR j IN 1..P_PMTDTLS_TBL.COUNT LOOP
1672 l_context_tab(i).context_type := 'IEX_INVOICES';
1673 l_context_tab(i).context_id := P_PMTDTLS_TBL(j).PAYMENT_SCHEDULE_ID;
1674 i := i + 1;
1675 END LOOP;
1676 end if;
1677
1678 -- for debug purpose only
1679 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1680 iex_debug_pub.LogMessage(l_api_name || ': l_source_object_id = ' || l_source_object_id);
1681 iex_debug_pub.LogMessage(l_api_name || ': l_source_object_code = ' || l_source_object_code);
1682 END IF;
1683
1684 FOR i IN 1..l_context_tab.COUNT LOOP
1685 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1686 iex_debug_pub.LogMessage(l_api_name || ': l_context_tab(' || i || ').context_type = ' || l_context_tab(i).context_type);
1687 iex_debug_pub.LogMessage(l_api_name || ': l_context_tab(' || i || ').context_id = ' || l_context_tab(i).context_id);
1688 END IF;
1689 END LOOP;
1690
1691 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1692 iex_debug_pub.LogMessage(l_api_name || ': Before call to IEX_NOTES_PVT.Create_Note');
1693 END IF;
1694
1695 IEX_NOTES_PVT.Create_Note(
1696 P_API_VERSION => l_api_version,
1697 P_INIT_MSG_LIST => FND_API.G_FALSE,
1698 P_COMMIT => FND_API.G_FALSE,
1699 P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
1700 X_RETURN_STATUS => l_return_status,
1701 X_MSG_COUNT => l_msg_count,
1702 X_MSG_DATA => l_msg_data,
1703 p_source_object_id => l_source_object_id,
1704 p_source_object_code => l_source_object_code,
1705 p_note_type => l_note_type,
1706 p_notes => P_PMT_REC.NOTE,
1707 p_contexts_tbl => l_context_tab,
1708 x_note_id => X_PMTRESP_REC.NOTE_ID);
1709
1710 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1711 iex_debug_pub.LogMessage(l_api_name || ': After call to IEX_NOTES_PVT.Create_Note');
1712 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
1713 END IF;
1714
1715 -- check for errors
1716 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1717 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1718 iex_debug_pub.LogMessage(l_api_name || ': IEX_NOTES_PVT.Create_Note failed');
1719 END IF;
1720 RAISE FND_API.G_EXC_ERROR;
1721 END IF;
1722 END IF;
1723 End if;
1724
1725 /* commit note creation */
1726 COMMIT WORK;
1727 x_return_status := FND_API.G_RET_STS_SUCCESS;
1728 -- Standard call to get message count and if count is 1, get message info
1729 FND_MSG_PUB.Count_And_Get(
1730 p_encoded => FND_API.G_FALSE,
1731 p_count => x_msg_count,
1732 p_data => x_msg_data);
1733
1734 EXCEPTION
1735 WHEN FND_API.G_EXC_ERROR THEN
1736 ROLLBACK TO CREATE_PAYMENT_PVT2;
1737 x_return_status := FND_API.G_RET_STS_ERROR;
1738 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1739 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1740 ROLLBACK TO CREATE_PAYMENT_PVT2;
1741 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1742 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1743 WHEN OTHERS THEN
1744 ROLLBACK TO CREATE_PAYMENT_PVT2;
1745 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1746 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1747 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
1748 END IF;
1749 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1750 END;
1751 END ;
1752
1753 PROCEDURE CREATE_OKL_PAYMENT(
1754 P_API_VERSION IN NUMBER,
1755 P_INIT_MSG_LIST IN VARCHAR2,
1756 P_COMMIT IN VARCHAR2,
1757 P_VALIDATION_LEVEL IN NUMBER,
1758 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
1759 X_MSG_COUNT OUT NOCOPY NUMBER,
1760 X_MSG_DATA OUT NOCOPY VARCHAR2,
1761 P_PMT_REC IN IEX_PAYMENTS_PUB.PMT_REC_TYPE,
1762 P_PMTDTLS_TBL IN IEX_PAYMENTS_PUB.PMTDTLS_TBL_TYPE,
1763 P_PMTINSTR_REC IN IEX_PAYMENTS_PUB.PMTINSTR_REC_TYPE,
1764 X_PMTRESP_REC OUT NOCOPY IEX_PAYMENTS_PUB.PMTRESP_REC_TYPE)
1765 IS
1766 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_OKL_PAYMENT';
1767 l_api_version CONSTANT NUMBER := 1.0;
1768 l_return_status VARCHAR2(1);
1769 l_msg_count NUMBER;
1770 l_msg_data VARCHAR2(32767);
1771
1772 -- iPayment capture types
1773
1774
1775 /* Begin - Bug428444 -- varangan -- remove this comment while implementing OKL payment in R12 codeline
1776
1777 l_payee_rec iby_payment_adapter_pub.payee_rec_type;
1778 l_payer_rec iby_payment_adapter_pub.payer_rec_type;
1779 l_pmtinstr_rec iby_payment_adapter_pub.pmtinstr_rec_type;
1780 l_tangible_rec iby_payment_adapter_pub.tangible_rec_type;
1781 l_pmtreqtrxn_rec iby_payment_adapter_pub.pmtreqtrxn_rec_type;
1782 l_reqresp_rec iby_payment_adapter_pub.reqresp_rec_type;
1783 l_RiskInfo_rec IBY_Payment_Adapter_Pub.RiskInfo_rec_type;
1784 l_capturetrxn_rec IBY_Payment_Adapter_Pub.CaptureTrxn_rec_type;
1785 l_capresp_rec IBY_Payment_Adapter_Pub.CaptureResp_rec_type;
1786
1787 -- iPayment instrument types
1788 l_pmtInstrRec IBY_INSTRREG_PUB.PmtInstr_rec_type;
1789
1790 TYPE pay_okl_cnsld_id_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
1791 TYPE pay_okl_contract_id_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
1792
1793 l_pay_okl_cnsld_id_tab pay_okl_cnsld_id_tab;
1794 l_pay_okl_contract_id_tab pay_okl_contract_id_tab;
1795 l_instr_id NUMBER; -- cc_id/ba_id
1796 l_rowid VARCHAR2(100);
1797 l_payment_id NUMBER;
1798 i NUMBER;
1799 j NUMBER;
1800 l_tangible_id NUMBER;
1801 l_ar_pay_method1 VARCHAR2(100);
1802 l_ar_pay_method NUMBER;
1803 l_note_payer_id NUMBER;
1804 l_payer_num_id NUMBER;
1805 l_payer_id VARCHAR2(80);
1806 l_payer_name HZ_PARTIES.PARTY_NAME%TYPE; --Changed the datatype for bug#5652085 by ehuh 2/28/07
1807 l_note_payer_type VARCHAR2(100);
1808 l_context_tab IEX_NOTES_PVT.CONTEXTS_TBL_TYPE;
1809 l_pay_okl_ref_id NUMBER;
1810 l_template_id NUMBER;
1811 l_request_id number;
1812 l_autofulfill varchar2(1);
1813 l_disable_ipayment varchar2(1);
1814 l_note_type varchar2(30);
1815 l_source_object_id NUMBER;
1816 l_source_object_code varchar2(20);
1817
1818 -- generate new payment
1819 CURSOR pay_genid_crs IS
1820 select IEX_PAYMENTS_S.NEXTVAL from dual;
1821
1822 -- generate new tangible id
1823 CURSOR tang_genid_crs IS
1824 select IEX_IPAYMENT_TANGIBLE_S.NEXTVAL from dual;
1825
1826 -- generate new pay_okl_xref id
1827 CURSOR pox_genid_crs IS
1828 select iex_pay_okl_xref_s.NEXTVAL from dual;
1829
1830 CURSOR get_baid_crs(p_BANKID VARCHAR2,
1831 p_BANKACCOUNTID VARCHAR2,
1832 p_PAYER_ID VARCHAR2) IS
1833 select INSTRID
1834 from iby_bankacct_v
1835 where
1836 BANKID = p_BANKID and
1837 BANKACCOUNTID = p_BANKACCOUNTID and
1838 OWNERID = p_PAYER_ID;
1839
1840 CURSOR get_ccid_crs(p_CCNUMBER VARCHAR2,
1841 p_PAYER_ID VARCHAR2) IS
1842 select INSTRID
1843 from iby_creditcard_v
1844 where
1845 CCNUMBER = p_CCNUMBER and
1846 OWNERID = p_PAYER_ID;
1847
1848 -- End - Bug428444 -- varangan -- remove this comment while implementing OKL payment in R12 codeline */
1849
1850 BEGIN
1851
1852 NUll; -- Remove it while coding OKL payment flow
1853
1854 /* Begin - Bug428444 -- varangan -- remove this comment while implementing OKL payment in R12 codeline
1855
1856
1857 -- First part of API: standard checking, iPayment processing
1858 BEGIN
1859 -- First part of API savepoint
1860 SAVEPOINT CREATE_OKL_PAYMENT_PVT1;
1861
1862 -- Standard call to check for call compatibility
1863 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1864 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1865 END IF;
1866
1867 -- Initialize message list if p_init_msg_list is set to TRUE
1868 IF FND_API.To_Boolean(p_init_msg_list) THEN
1869 FND_MSG_PUB.initialize;
1870 END IF;
1871
1872 -- Initialize API return status to success
1873 l_return_status := FND_API.G_RET_STS_SUCCESS;
1874
1875 -- START OF BODY OF API
1876 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1877 iex_debug_pub.LogMessage(l_api_name || ': Start of CREATE_PAYMENT');
1878 END IF;
1879
1880 -- validate all input parameters
1881 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1882 iex_debug_pub.LogMessage(l_api_name || ': Before validate_input');
1883 END IF;
1884 validate_input(P_PMT_REC => P_PMT_REC,
1885 P_PMTDTLS_TBL => P_PMTDTLS_TBL,
1886 P_PMTINSTR_REC => P_PMTINSTR_REC);
1887 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1888 iex_debug_pub.LogMessage(l_api_name || ': After validate_input');
1889 END IF;
1890
1891 -- validate payer parties and get payer info
1892 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1893 iex_debug_pub.LogMessage(l_api_name || ': Before GET_PAYER_INFO');
1894 END IF;
1895 GET_PAYER_INFO(P_PAYER_PARTY_REL_ID => P_PMT_REC.PAYER_PARTY_REL_ID,
1896 P_PAYER_PARTY_ORG_ID => P_PMT_REC.PAYER_PARTY_ORG_ID,
1897 P_PAYER_PARTY_PER_ID => P_PMT_REC.PAYER_PARTY_PER_ID,
1898 X_NOTE_PAYER_TYPE => l_note_payer_type,
1899 X_NOTE_PAYER_NUM_ID => l_note_payer_id,
1900 X_PAYER_NUM_ID => l_payer_num_id,
1901 X_PAYER_ID => l_payer_id,
1902 X_PAYER_NAME => l_payer_name);
1903
1904 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1905 iex_debug_pub.LogMessage(l_api_name || ': After GET_PAYER_INFO');
1906 iex_debug_pub.LogMessage(l_api_name || ': GET_PAYER_INFO returns:');
1907 iex_debug_pub.LogMessage(l_api_name || ': l_note_payer_type = ' || l_note_payer_type);
1908 iex_debug_pub.LogMessage(l_api_name || ': l_note_payer_id = ' || l_note_payer_id);
1909 iex_debug_pub.LogMessage(l_api_name || ': l_payer_num_id = ' || l_payer_num_id);
1910 iex_debug_pub.LogMessage(l_api_name || ': l_payer_id = ' || l_payer_id);
1911 iex_debug_pub.LogMessage(l_api_name || ': l_payer_name = ' || l_payer_name);
1912 END IF;
1913
1914 l_disable_ipayment := fnd_profile.value('IEX_DISABLE_IPAYMENT');
1915 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1916 iex_debug_pub.LogMessage(l_api_name || ': l_disable_ipayment = ' || l_disable_ipayment);
1917 END IF;
1918
1919 if l_disable_ipayment is null or (l_disable_ipayment is not null and l_disable_ipayment = 'N') then
1920
1921 --Determine the Payment Instrument type that is used.
1922 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1923 iex_debug_pub.LogMessage(l_api_name || ': Determine instrument');
1924 END IF;
1925 IF P_PMTINSTR_REC.USE_INSTRUMENT = 'CC' THEN
1926
1927 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1928 iex_debug_pub.LogMessage(l_api_name || ': Instrument is CC');
1929 END IF;
1930
1931 l_ar_pay_method1 := fnd_profile.value('IEX_CCARD_REMITTANCE');
1932 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1933 iex_debug_pub.LogMessage(l_api_name || ': CC remittance = ' || l_ar_pay_method1);
1934 END IF;
1935 if l_ar_pay_method1 is null then
1936 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1937 iex_debug_pub.LogMessage(l_api_name || ': failed to get CC remittance');
1938 END IF;
1939 FND_MESSAGE.SET_NAME('IEX', 'IEX_NO_CC_REMITTANCE');
1940 FND_MSG_PUB.Add;
1941 RAISE FND_API.G_EXC_ERROR;
1942 end if;
1943 l_ar_pay_method := to_number(l_ar_pay_method1);
1944
1945 -- first check for existance of instrument. if does not exist add instrument
1946 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1947 iex_debug_pub.LogMessage(l_api_name || ': Search for CC');
1948 END IF;
1949 OPEN get_ccid_crs(IBY_INSTRREG_PUB.encode(P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM), l_payer_id);
1950 FETCH get_ccid_crs INTO l_instr_id;
1951 CLOSE get_ccid_crs;
1952
1953 if l_instr_id is null then
1954 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1955 iex_debug_pub.LogMessage(l_api_name || ': CC is not found');
1956 iex_debug_pub.LogMessage(l_api_name || ': Going to insert new cc');
1957 END IF;
1958
1959 l_pmtInstrRec.InstrumentType := 'CREDITCARD';
1960 l_pmtInstrRec.CreditCardInstr.FINAME := P_PMTINSTR_REC.CREDITCARDINSTR.FINAME;
1961 l_pmtInstrRec.CreditCardInstr.CC_TYPE := P_PMTINSTR_REC.CREDITCARDINSTR.CC_TYPE;
1962 l_pmtInstrRec.CreditCardInstr.CC_NUM := P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM;
1963 l_pmtInstrRec.CreditCardInstr.CC_EXPDATE := P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE;
1964 l_pmtInstrRec.CreditCardInstr.CC_HOLDERNAME := P_PMTINSTR_REC.CREDITCARDINSTR.CC_HOLDERNAME;
1965
1966 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1967 iex_debug_pub.LogMessage(l_api_name || ': Before ORAINSTRADD call');
1968 END IF;
1969 --Begin-fix bug #4479607-07072005-jypark-comment invalid api call to fix compile error
1970 -- IBY_INSTRREG_PUB.ORAINSTRADD
1971 -- (
1972 -- p_api_version => 1.0,
1973 -- p_init_msg_list => FND_API.G_FALSE,
1974 -- p_commit => FND_API.G_FALSE,
1975 -- x_return_status => l_return_status,
1976 -- x_msg_count => l_msg_count,
1977 -- x_msg_data => l_msg_data,
1978 -- p_payer_id => l_payer_id,
1979 -- p_pmtInstrRec => l_pmtInstrRec,
1980 -- x_instr_id => l_instr_id);
1981 --
1982 --End-fix bug #4479607-07072005-jypark-comment invalid api call to fix compile error
1983 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1984 iex_debug_pub.LogMessage(l_api_name || ': After ORAINSTRADD call');
1985 iex_debug_pub.LogMessage(l_api_name || ': l_return_status = ' || l_return_status);
1986 END IF;
1987
1988 -- check for errors
1989 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1990 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1991 iex_debug_pub.LogMessage(l_api_name || ': IBY_INSTRREG_PUB.ORAINSTRADD failed');
1992 END IF;
1993 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_INSERT_INSTR');
1994 FND_MSG_PUB.Add;
1995 RAISE FND_API.G_EXC_ERROR;
1996 END IF;
1997 else
1998 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
1999 iex_debug_pub.LogMessage(l_api_name || ': CC is found; id = ' || l_instr_id);
2000 iex_debug_pub.LogMessage(l_api_name || ': Exp date is different');
2001 iex_debug_pub.LogMessage(l_api_name || ': Going to modify new cc');
2002 END IF;
2003
2004 l_pmtInstrRec.InstrumentType := 'CREDITCARD';
2005 l_pmtInstrRec.CreditCardInstr.INSTR_ID := l_instr_id;
2006 l_pmtInstrRec.CreditCardInstr.FINAME := P_PMTINSTR_REC.CREDITCARDINSTR.FINAME;
2007 l_pmtInstrRec.CreditCardInstr.CC_EXPDATE := P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE;
2008 l_pmtInstrRec.CreditCardInstr.CC_HOLDERNAME := P_PMTINSTR_REC.CREDITCARDINSTR.CC_HOLDERNAME;
2009
2010 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2011 iex_debug_pub.LogMessage(l_api_name || ': Before ORAINSTRMOD call');
2012 END IF;
2013 IBY_INSTRREG_PUB.ORAINSTRMOD
2014 (
2015 p_api_version => 1.0,
2016 p_init_msg_list => FND_API.G_FALSE,
2017 p_commit => FND_API.G_FALSE,
2018 x_return_status => l_return_status,
2019 x_msg_count => l_msg_count,
2020 x_msg_data => l_msg_data,
2021 p_payer_id => l_payer_id,
2022 p_pmtInstrRec => l_pmtInstrRec,
2023 -- Begin -- varangan --Bug4528444 -- payments uptake
2024 p_validation_level => FND_API.G_VALID_LEVEL_FULL
2025 --, x_result => l_result_rec -- temporarily commenting, since IBY code is in progress
2026 -- End -- varangan --Bug4528444 -- payments uptake
2027 );
2028 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2029 iex_debug_pub.LogMessage(l_api_name || ': After ORAINSTRMOD call');
2030 iex_debug_pub.LogMessage('l_return_status = ' || l_return_status);
2031 END IF;
2032
2033 -- check for errors
2034 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2035 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2036 iex_debug_pub.LogMessage(l_api_name || ': IBY_INSTRREG_PUB.ORAINSTRMOD failed');
2037 END IF;
2038 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_UPDATE_INSTR');
2039 FND_MSG_PUB.Add;
2040 RAISE FND_API.G_EXC_ERROR;
2041 END IF;
2042 end if;
2043
2044 l_pmtreqtrxn_rec.PmtMode := 'ONLINE';
2045 l_pmtreqtrxn_rec.auth_type := 'AUTHONLY';
2046 l_pmtinstr_rec.PmtInstr_ID := l_instr_id;
2047
2048
2049 -- l_pmtinstr_rec.CreditCardInstr.FINAME := P_PMTINSTR_REC.CREDITCARDINSTR.FINAME;
2050 -- l_pmtinstr_rec.CreditCardInstr.cc_type := P_PMTINSTR_REC.CREDITCARDINSTR.CC_TYPE;
2051 -- l_pmtinstr_rec.CreditCardInstr.cc_num := P_PMTINSTR_REC.CREDITCARDINSTR.CC_NUM;
2052 -- l_pmtinstr_rec.CreditCardInstr.cc_expdate := P_PMTINSTR_REC.CREDITCARDINSTR.CC_EXPDATE;
2053 -- l_pmtinstr_rec.CreditCardInstr.CC_HOLDERNAME := P_PMTINSTR_REC.CREDITCARDINSTR.CC_HOLDERNAME;
2054
2055
2056 ELSIF P_PMTINSTR_REC.USE_INSTRUMENT = 'BA' THEN
2057
2058 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2059 iex_debug_pub.LogMessage(l_api_name || ': Instrument is BA');
2060 END IF;
2061
2062 l_ar_pay_method1 := fnd_profile.value('IEX_EFT_REMITTANCE');
2063 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2064 iex_debug_pub.LogMessage(l_api_name || ': BA remittance = ' || l_ar_pay_method1);
2065 END IF;
2066 if l_ar_pay_method1 is null then
2067 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2068 iex_debug_pub.LogMessage(l_api_name || ': failed to get BA remittance');
2069 END IF;
2070 FND_MESSAGE.SET_NAME('IEX', 'IEX_NO_EFT_REMITTANCE');
2071 FND_MSG_PUB.Add;
2072 RAISE FND_API.G_EXC_ERROR;
2073 end if;
2074 l_ar_pay_method := to_number(l_ar_pay_method1);
2075
2076 -- first check for existance of instrument. if does not exist add instrument
2077 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2078 iex_debug_pub.LogMessage(l_api_name || ': Search for BA');
2079 END IF;
2080 OPEN get_baid_crs(P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID,
2081 IBY_INSTRREG_PUB.encode(P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM),
2082 l_payer_id);
2083 FETCH get_baid_crs INTO l_instr_id;
2084 CLOSE get_baid_crs;
2085
2086 if l_instr_id is null then
2087 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2088 iex_debug_pub.LogMessage(l_api_name || ': BA is not found');
2089 iex_debug_pub.LogMessage(l_api_name || ': Going to insert new ba');
2090 END IF;
2091
2092 l_pmtInstrRec.InstrumentType := 'BANKACCOUNT';
2093 l_pmtInstrRec.BankAcctInstr.FIName := P_PMTINSTR_REC.BANKACCTINSTR.FINAME;
2094 l_pmtInstrRec.BankAcctInstr.Bank_Id := P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID;
2095 l_pmtInstrRec.BankAcctInstr.Branch_Id := P_PMTINSTR_REC.BANKACCTINSTR.BRANCH_ID;
2096 l_pmtInstrRec.BankAcctInstr.BankAcct_Type := P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_TYPE;
2097 l_pmtInstrRec.BankAcctInstr.BankAcct_Num := P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM;
2098 l_pmtInstrRec.BankAcctInstr.BankAcct_HolderName := P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_HOLDERNAME;
2099
2100 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2101 iex_debug_pub.LogMessage(l_api_name || ': Before ORAINSTRADD call');
2102 END IF;
2103 --Begin-fix bug #4479607-07072005-jypark-comment invalid api call to fix compile error
2104 -- IBY_INSTRREG_PUB.ORAINSTRADD(
2105 -- p_api_version => 1.0,
2106 -- p_init_msg_list => FND_API.G_FALSE,
2107 -- p_commit => FND_API.G_FALSE,
2108 -- x_return_status => l_return_status,
2109 -- x_msg_count => l_msg_count,
2110 -- x_msg_data => l_msg_data,
2111 -- p_payer_id => l_payer_id,
2112 -- p_pmtInstrRec => l_pmtInstrRec,
2113 -- x_instr_id => l_instr_id);
2114 --End-fix bug #4479607-07072005-jypark-comment invalid api call to fix compile error
2115
2116 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2117 iex_debug_pub.LogMessage(l_api_name || ': After ORAINSTRADD call');
2118 iex_debug_pub.LogMessage('l_return_status = ' || l_return_status);
2119 END IF;
2120
2121 -- check for errors
2122 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2123 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2124 iex_debug_pub.LogMessage(l_api_name || ': IBY_INSTRREG_PUB.ORAINSTRADD failed');
2125 END IF;
2126 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_INSERT_INSTR');
2127 FND_MSG_PUB.Add;
2128 RAISE FND_API.G_EXC_ERROR;
2129 END IF;
2130 else
2131 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2132 iex_debug_pub.LogMessage(l_api_name || ': BA is found; id = ' || l_instr_id);
2133 END IF;
2134 end if;
2135
2136 l_pmtreqtrxn_rec.PmtMode := 'OFFLINE';
2137 l_pmtreqtrxn_rec.Settlement_Date := sysdate + 100;
2138 l_pmtreqtrxn_rec.Check_Flag := 'true';
2139 l_pmtinstr_rec.PmtInstr_ID := l_instr_id;
2140
2141
2142 -- l_pmtinstr_rec.BankAcctInstr.FIName := P_PMTINSTR_REC.BANKACCTINSTR.FINAME;
2143 -- l_pmtinstr_rec.BankAcctInstr.Bank_Id := P_PMTINSTR_REC.BANKACCTINSTR.BANK_ID;
2144 -- l_pmtinstr_rec.BankAcctInstr.Branch_Id := P_PMTINSTR_REC.BANKACCTINSTR.BRANCH_ID;
2145 -- l_pmtinstr_rec.BankAcctInstr.BankAcct_Type := P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_TYPE;
2146 -- l_pmtinstr_rec.BankAcctInstr.BankAcct_Num := P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_NUM;
2147 -- l_pmtinstr_rec.BankAcctInstr.BankAcct_HolderName := P_PMTINSTR_REC.BANKACCTINSTR.BANKACCT_HOLDERNAME;
2148
2149 END IF;
2150
2151 l_payee_rec.Payee_ID := P_PMT_REC.PAYEE_ID;
2152 l_payer_rec.Payer_ID := l_payer_id;
2153 --l_payer_rec.Payer_Name := l_payer_name;
2154
2155 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2156 iex_debug_pub.LogMessage(l_api_name || ': Payee_ID =' || l_payee_rec.Payee_ID);
2157 iex_debug_pub.LogMessage(l_api_name || ': Payer_ID =' || l_payer_rec.Payer_ID);
2158 END IF;
2159
2160 OPEN tang_genid_crs;
2161 FETCH tang_genid_crs INTO l_tangible_id;
2162 CLOSE tang_genid_crs;
2163
2164 l_tangible_rec.tangible_id := 'IEX_' || to_char(l_tangible_id);
2165 l_tangible_rec.tangible_amount := P_PMT_REC.TOTAL_AMOUNT;
2166 l_tangible_rec.currency_code := P_PMT_REC.CURRENCY_CODE;
2167 l_tangible_rec.RefInfo := 'IEX_' || to_char(l_tangible_id);
2168
2169 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2170 iex_debug_pub.LogMessage(l_api_name || ': PmtInstr_ID =' || l_pmtinstr_rec.PmtInstr_ID);
2171 iex_debug_pub.LogMessage(l_api_name || ': tangible_id = ' || l_tangible_rec.tangible_id);
2172 iex_debug_pub.LogMessage(l_api_name || ': tangible_amount = ' || l_tangible_rec.tangible_amount);
2173 iex_debug_pub.LogMessage(l_api_name || ': currency_code = ' || l_tangible_rec.currency_code);
2174 iex_debug_pub.LogMessage(l_api_name || ': RefInfo = ' || l_tangible_rec.RefInfo);
2175 END IF;
2176
2177 if P_PMTINSTR_REC.USE_INSTRUMENT = 'CC' then
2178 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2179 iex_debug_pub.LogMessage(l_api_name || ': Going to auth CC...');
2180 iex_debug_pub.LogMessage(l_api_name || ': G_APP_ID = ' || G_APP_ID);
2181 END IF;
2182
2183 -- call iPayment API to authorize payment
2184 IBY_Payment_Adapter_Pub.OraPmtReq(
2185 p_api_version => p_Api_Version,
2186 p_init_msg_list => FND_API.G_FALSE,
2187 p_commit => FND_API.G_FALSE,
2188 p_ecapp_id => 695,
2189 p_payee_rec => l_payee_rec,
2190 p_payer_rec => l_Payer_rec,
2191 p_pmtinstr_rec => l_pmtinstr_rec,
2192 p_tangible_rec => l_tangible_rec,
2193 p_pmtreqtrxn_rec => l_pmtreqtrxn_rec,
2194 p_riskinfo_rec => l_RiskInfo_rec,
2195 x_return_status => l_return_status,
2196 x_msg_count => l_msg_count,
2197 x_msg_data => l_msg_data,
2198 x_reqresp_rec => l_reqresp_rec);
2199
2200 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2201 iex_debug_pub.LogMessage(l_api_name || ': CC authorization returns:');
2202 iex_debug_pub.LogMessage(l_api_name || ': l_return_status=' || l_return_status || '; l_msg_count=' || l_msg_count);
2203 iex_debug_pub.LogMessage(l_api_name || ': status = ' || l_reqresp_rec.response.status);
2204 iex_debug_pub.LogMessage(l_api_name || ': ErrCode = ' || l_reqresp_rec.response.ErrCode);
2205 iex_debug_pub.LogMessage(l_api_name || ': ErrMessage = ' || l_reqresp_rec.response.ErrMessage);
2206 iex_debug_pub.LogMessage(l_api_name || ': NLS_LANG = ' || l_reqresp_rec.response.NLS_LANG);
2207 iex_debug_pub.LogMessage(l_api_name || ': trxn_id = ' || l_reqresp_rec.trxn_id);
2208 iex_debug_pub.LogMessage(l_api_name || ': trxn_type = ' || l_reqresp_rec.trxn_type);
2209 iex_debug_pub.LogMessage(l_api_name || ': trxn_date = ' || l_reqresp_rec.trxn_date);
2210 iex_debug_pub.LogMessage(l_api_name || ': AuthCode = ' || l_reqresp_rec.AuthCode);
2211 iex_debug_pub.LogMessage(l_api_name || ': ErrorLocation = ' || l_reqresp_rec.ErrorLocation);
2212 iex_debug_pub.LogMessage(l_api_name || ': BEPErrCode = ' || l_reqresp_rec.BEPErrCode);
2213 iex_debug_pub.LogMessage(l_api_name || ': BEPErrMessage = ' || l_reqresp_rec.BEPErrMessage);
2214 iex_debug_pub.LogMessage(l_api_name || ': AuxMsg = ' || l_reqresp_rec.AuxMsg);
2215 iex_debug_pub.LogMessage(l_api_name || ': RefCode = ' || l_reqresp_rec.RefCode);
2216 END IF;
2217
2218 -- check for iPayment errors
2219 IF l_return_status<>'S' THEN
2220 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2221 iex_debug_pub.LogMessage(l_api_name || ': IBY_Payment_Adapter_Pub.OraPmtReq failed');
2222 END IF;
2223 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_AUTH_PAYMENT');
2224 FND_MESSAGE.SET_TOKEN('STATUS', l_reqresp_rec.response.status);
2225 FND_MESSAGE.SET_TOKEN('ERR_LOC', l_reqresp_rec.ErrorLocation);
2226 FND_MESSAGE.SET_TOKEN('ERR_CODE', l_capresp_rec.response.ErrCode);
2227 FND_MESSAGE.SET_TOKEN('ERR_MSG', l_reqresp_rec.response.ErrMessage);
2228 FND_MESSAGE.SET_TOKEN('BEP_ERR_CODE', l_reqresp_rec.BEPErrCode);
2229 FND_MESSAGE.SET_TOKEN('BEP_ERR_MSG', l_capresp_rec.BEPErrMessage);
2230 FND_MSG_PUB.initialize;
2231 FND_MSG_PUB.Add;
2232 RAISE FND_API.G_EXC_ERROR;
2233 END IF;
2234
2235 l_capturetrxn_rec.Trxn_ID := l_reqresp_rec.trxn_id;
2236 l_capturetrxn_rec.PmtMode := 'ONLINE';
2237 l_capturetrxn_rec.Currency := l_tangible_rec.currency_code;
2238 l_capturetrxn_rec.Price := l_tangible_rec.tangible_amount;
2239
2240 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2241 iex_debug_pub.LogMessage(l_api_name || ': Going to capture CC payment...');
2242 END IF;
2243 IBY_Payment_Adapter_Pub.OraPmtCapture (
2244 p_api_version => 1.0,
2245 p_init_msg_list => FND_API.G_FALSE,
2246 p_commit => FND_API.G_FALSE,
2247 p_ecapp_id => 695,
2248 p_capturetrxn_rec => l_capturetrxn_rec,
2249 x_return_status => l_return_status,
2250 x_msg_count => l_msg_count,
2251 x_msg_data => l_msg_data,
2252 x_capresp_rec => l_capresp_rec);
2253
2254 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2255 iex_debug_pub.LogMessage(l_api_name || ': CC capture returns:');
2256 iex_debug_pub.LogMessage(l_api_name || ': l_return_status=' || l_return_status || '; l_msg_count=' || l_msg_count);
2257 iex_debug_pub.LogMessage(l_api_name || ': status = ' || l_capresp_rec.response.status);
2258 iex_debug_pub.LogMessage(l_api_name || ': ErrCode = ' || l_capresp_rec.response.ErrCode);
2259 iex_debug_pub.LogMessage(l_api_name || ': ErrMessage = ' || l_capresp_rec.response.ErrMessage);
2260 iex_debug_pub.LogMessage(l_api_name || ': NLS_LANG = ' || l_capresp_rec.response.NLS_LANG);
2261 iex_debug_pub.LogMessage(l_api_name || ': trxn_id = ' || l_capresp_rec.trxn_id);
2262 iex_debug_pub.LogMessage(l_api_name || ': trxn_type = ' || l_capresp_rec.trxn_type);
2263 iex_debug_pub.LogMessage(l_api_name || ': trxn_date = ' || l_capresp_rec.trxn_date);
2264 iex_debug_pub.LogMessage(l_api_name || ': RefCode = ' || l_capresp_rec.RefCode);
2265 iex_debug_pub.LogMessage(l_api_name || ': ErrorLocation = ' || l_capresp_rec.ErrorLocation);
2266 iex_debug_pub.LogMessage(l_api_name || ': BEPErrCode = ' || l_capresp_rec.BEPErrCode);
2267 iex_debug_pub.LogMessage(l_api_name || ': BEPErrMessage = ' || l_capresp_rec.BEPErrMessage);
2268 END IF;
2269
2270 -- check for iPayment errors
2271 IF l_return_status<>'S' THEN
2272 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2273 iex_debug_pub.LogMessage(l_api_name || ': IBY_Payment_Adapter_Pub.OraPmtCapture failed');
2274 END IF;
2275 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_CAPTURE_PAYMENT');
2276 FND_MESSAGE.SET_TOKEN('STATUS', l_reqresp_rec.response.status);
2277 FND_MESSAGE.SET_TOKEN('ERR_LOC', l_reqresp_rec.ErrorLocation);
2278 FND_MESSAGE.SET_TOKEN('ERR_CODE', l_capresp_rec.response.ErrCode);
2279 FND_MESSAGE.SET_TOKEN('ERR_MSG', l_reqresp_rec.response.ErrMessage);
2280 FND_MESSAGE.SET_TOKEN('BEP_ERR_CODE', l_reqresp_rec.BEPErrCode);
2281 FND_MESSAGE.SET_TOKEN('BEP_ERR_MSG', l_capresp_rec.BEPErrMessage);
2282 FND_MSG_PUB.initialize;
2283 FND_MSG_PUB.Add;
2284 RAISE FND_API.G_EXC_ERROR;
2285 END IF;
2286 elsif P_PMTINSTR_REC.USE_INSTRUMENT = 'BA' then
2287 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2288 iex_debug_pub.LogMessage(l_api_name || ': Going to process BA payment...');
2289 END IF;
2290
2291 -- call iPayment API to process BA payment
2292 IBY_Payment_Adapter_Pub.OraPmtReq(
2293 p_api_version => p_Api_Version,
2294 p_init_msg_list => FND_API.G_FALSE,
2295 p_commit => FND_API.G_FALSE,
2296 p_ecapp_id => 695,
2297 p_payee_rec => l_payee_rec,
2298 p_payer_rec => l_Payer_rec,
2299 p_pmtinstr_rec => l_pmtinstr_rec,
2300 p_tangible_rec => l_tangible_rec,
2301 p_pmtreqtrxn_rec => l_pmtreqtrxn_rec,
2302 p_riskinfo_rec => l_RiskInfo_rec,
2303 x_return_status => l_return_status,
2304 x_msg_count => l_msg_count,
2305 x_msg_data => l_msg_data,
2306 x_reqresp_rec => l_reqresp_rec);
2307
2308 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2309 iex_debug_pub.LogMessage(l_api_name || ': BA capture returns:');
2310 iex_debug_pub.LogMessage(l_api_name || ': l_return_status=' || l_return_status || '; l_msg_count=' || l_msg_count);
2311 iex_debug_pub.LogMessage(l_api_name || ': status = ' || l_reqresp_rec.response.status);
2312 iex_debug_pub.LogMessage(l_api_name || ': ErrCode = ' || l_reqresp_rec.response.ErrCode);
2313 iex_debug_pub.LogMessage(l_api_name || ': ErrMessage = ' || l_reqresp_rec.response.ErrMessage);
2314 iex_debug_pub.LogMessage(l_api_name || ': NLS_LANG = ' || l_reqresp_rec.response.NLS_LANG);
2315 iex_debug_pub.LogMessage(l_api_name || ': trxn_id = ' || l_reqresp_rec.trxn_id);
2316 iex_debug_pub.LogMessage(l_api_name || ': trxn_type = ' || l_reqresp_rec.trxn_type);
2317 iex_debug_pub.LogMessage(l_api_name || ': trxn_date = ' || l_reqresp_rec.trxn_date);
2318 iex_debug_pub.LogMessage(l_api_name || ': AuthCode = ' || l_reqresp_rec.AuthCode);
2319 iex_debug_pub.LogMessage(l_api_name || ': ErrorLocation = ' || l_reqresp_rec.ErrorLocation);
2320 iex_debug_pub.LogMessage(l_api_name || ': BEPErrMessage = ' || l_reqresp_rec.BEPErrMessage);
2321 iex_debug_pub.LogMessage(l_api_name || ': AuxMsg = ' || l_reqresp_rec.AuxMsg);
2322 iex_debug_pub.LogMessage(l_api_name || ': RefCode = ' || l_reqresp_rec.RefCode);
2323 END IF;
2324
2325 -- check for iPayment errors
2326 IF l_return_status<>'S' THEN
2327 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2328 iex_debug_pub.LogMessage(l_api_name || ': IBY_Payment_Adapter_Pub.OraPmtReq failed');
2329 END IF;
2330 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_CAPTURE_PAYMENT');
2331 FND_MESSAGE.SET_TOKEN('STATUS', l_reqresp_rec.response.status);
2332 FND_MESSAGE.SET_TOKEN('ERR_LOC', l_reqresp_rec.ErrorLocation);
2333 FND_MESSAGE.SET_TOKEN('ERR_CODE', l_capresp_rec.response.ErrCode);
2334 FND_MESSAGE.SET_TOKEN('ERR_MSG', l_reqresp_rec.response.ErrMessage);
2335 FND_MESSAGE.SET_TOKEN('BEP_ERR_CODE', l_reqresp_rec.BEPErrCode);
2336 FND_MESSAGE.SET_TOKEN('BEP_ERR_MSG', l_capresp_rec.BEPErrMessage);
2337 FND_MSG_PUB.initialize;
2338 FND_MSG_PUB.Add;
2339 RAISE FND_API.G_EXC_ERROR;
2340 END IF;
2341 end if;
2342
2343
2344 -- l_pmtinstr_rec.PmtInstr_ID := 11111;
2345 -- l_reqresp_rec.trxn_id := 12345;
2346 -- l_reqresp_rec.Trxn_Type := 1;
2347 -- l_reqresp_rec.Trxn_Date := sysdate;
2348 -- l_reqresp_rec.AuthCode := 'test';
2349 -- l_reqresp_rec.response.status := 1;
2350
2351
2352 else -- iPayment processing is disabled
2353 l_pmtinstr_rec.PmtInstr_ID := null;
2354 l_reqresp_rec.trxn_id := null;
2355 l_reqresp_rec.Trxn_Type := null;
2356 l_reqresp_rec.Trxn_Date := null;
2357 l_reqresp_rec.AuthCode := 'No iPayment processing';
2358 l_reqresp_rec.response.status := null;
2359 l_tangible_rec.tangible_id := 'No iPayment processing';
2360 l_payee_rec.Payee_ID := 'No iPayment processing';
2361 l_ar_pay_method := to_number(fnd_profile.value('IEX_CCARD_REMITTANCE'));
2362 end if;
2363
2364 X_PMTRESP_REC.INSTRUMENT_ID := l_pmtinstr_rec.PmtInstr_ID;
2365 X_PMTRESP_REC.INSTRUMENT_TYPE := P_PMTINSTR_REC.USE_INSTRUMENT;
2366 X_PMTRESP_REC.TRXN_ID := l_reqresp_rec.trxn_id;
2367 X_PMTRESP_REC.TRXN_TYPE := l_reqresp_rec.Trxn_Type;
2368 X_PMTRESP_REC.TRXN_DATE := l_reqresp_rec.Trxn_Date;
2369 X_PMTRESP_REC.AUTHCODE := l_reqresp_rec.AuthCode;
2370 X_PMTRESP_REC.PAYEE_ID := l_payee_rec.Payee_ID;
2371 X_PMTRESP_REC.TANGIBLE_ID := l_tangible_rec.tangible_id;
2372
2373 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2374 iex_debug_pub.LogMessage(l_api_name || ': Return data:');
2375 iex_debug_pub.LogMessage(l_api_name || ': INSTRUMENT_ID = ' || X_PMTRESP_REC.INSTRUMENT_ID);
2376 iex_debug_pub.LogMessage(l_api_name || ': INSTRUMENT_TYPE = ' || X_PMTRESP_REC.INSTRUMENT_TYPE);
2377 iex_debug_pub.LogMessage(l_api_name || ': TRXN_ID = ' || X_PMTRESP_REC.TRXN_ID);
2378 iex_debug_pub.LogMessage(l_api_name || ': TRXN_TYPE = ' || X_PMTRESP_REC.TRXN_TYPE);
2379 iex_debug_pub.LogMessage(l_api_name || ': TRXN_DATE = ' || X_PMTRESP_REC.TRXN_DATE);
2380 iex_debug_pub.LogMessage(l_api_name || ': AUTHCODE = ' || X_PMTRESP_REC.AUTHCODE);
2381 iex_debug_pub.LogMessage(l_api_name || ': PAYEE_ID = ' || X_PMTRESP_REC.PAYEE_ID);
2382 iex_debug_pub.LogMessage(l_api_name || ': TANGIBLE_ID = ' || X_PMTRESP_REC.TANGIBLE_ID);
2383 END IF;
2384
2385 COMMIT WORK;
2386 x_return_status := FND_API.G_RET_STS_SUCCESS;
2387
2388 EXCEPTION
2389 WHEN FND_API.G_EXC_ERROR THEN
2390 x_return_status := FND_API.G_RET_STS_ERROR;
2391 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2392 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2393 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2394 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2395 WHEN OTHERS THEN
2396 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2397 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2398 THEN
2399 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
2400 END IF;
2401 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2402 END;
2403
2404 if x_return_status <> FND_API.G_RET_STS_SUCCESS then
2405 return;
2406 end if;
2407
2408 -- Continue: creating IEX payment record
2409 BEGIN
2410 SAVEPOINT CREATE_OKL_PAYMENT_PVT1;
2411
2412 -- generate new payment id
2413 OPEN pay_genid_crs;
2414 FETCH pay_genid_crs INTO l_payment_id;
2415 CLOSE pay_genid_crs;
2416
2417 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2418 iex_debug_pub.LogMessage(l_api_name || ': New payment_id = ' || l_payment_id);
2419 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_PAYMENTS_PKG.Insert_Row');
2420 END IF;
2421 IEX_PAYMENTS_PKG.Insert_Row(
2422 X_ROWID => l_rowid,
2423 P_PAYMENT_ID => l_payment_id,
2424 P_OBJECT_VERSION_NUMBER => 1.0,
2425 P_PROGRAM_ID => 695,
2426 P_LAST_UPDATE_DATE => sysdate,
2427 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
2428 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
2429 P_CREATION_DATE => sysdate,
2430 P_CREATED_BY => FND_GLOBAL.User_Id,
2431 P_PAYMENT_METHOD_ID => l_pmtinstr_rec.PmtInstr_ID,
2432 P_PAYMENT_METHOD => P_PMTINSTR_REC.USE_INSTRUMENT,
2433 P_IPAYMENT_TRANS_ID => l_reqresp_rec.trxn_id,
2434 P_IPAYMENT_STATUS => l_reqresp_rec.response.status,
2435 P_PAY_SVR_CONFIRMATION => l_reqresp_rec.AuthCode,
2436 P_CAMPAIGN_SCHED_ID => P_PMT_REC.CAMPAIGN_SCHED_ID,
2437 p_TANGIBLE_ID => l_tangible_rec.tangible_id,
2438 p_PAYEE_ID => l_payee_rec.Payee_ID,
2439 p_RESOURCE_ID => P_PMT_REC.RESOURCE_ID,
2440 P_ATTRIBUTE_CATEGORY => P_PMT_REC.ATTRIBUTES.ATTRIBUTE_CATEGORY,
2441 P_ATTRIBUTE1 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE1,
2442 P_ATTRIBUTE2 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE2,
2443 P_ATTRIBUTE3 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE3,
2444 P_ATTRIBUTE4 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE4,
2445 P_ATTRIBUTE5 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE5,
2446 P_ATTRIBUTE6 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE6,
2447 P_ATTRIBUTE7 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE7,
2448 P_ATTRIBUTE8 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE8,
2449 P_ATTRIBUTE9 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE9,
2450 P_ATTRIBUTE10 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE10,
2451 P_ATTRIBUTE11 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE11,
2452 P_ATTRIBUTE12 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE12,
2453 P_ATTRIBUTE13 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE13,
2454 P_ATTRIBUTE14 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE14,
2455 P_ATTRIBUTE15 => P_PMT_REC.ATTRIBUTES.ATTRIBUTE15);
2456
2457 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2458 iex_debug_pub.LogMessage(l_api_name || ': After IEX_PAYMENTS_PKG.Insert_Row');
2459 END IF;
2460 X_PMTRESP_REC.PAYMENT_ID := l_payment_id;
2461 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2462 iex_debug_pub.LogMessage(l_api_name || ': l_payment_id=' || l_payment_id);
2463 END IF;
2464
2465 -- commit first part of API: made iPayment money transfer and created IEX payment record with iPayment info
2466 COMMIT WORK;
2467 FND_MESSAGE.SET_NAME('IEX', 'IEX_IPAY_SUCCESS');
2468 FND_MSG_PUB.Add;
2469 x_return_status := FND_API.G_RET_STS_SUCCESS;
2470
2471 EXCEPTION
2472 WHEN FND_API.G_EXC_ERROR THEN
2473 ROLLBACK TO CREATE_OKL_PAYMENT_PVT1;
2474 x_return_status := FND_API.G_RET_STS_ERROR;
2475 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2476 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2477 ROLLBACK TO CREATE_OKL_PAYMENT_PVT1;
2478 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2479 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2480 WHEN OTHERS THEN
2481 ROLLBACK TO CREATE_OKL_PAYMENT_PVT1;
2482 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2483 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2484 THEN
2485 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
2486 END IF;
2487 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2488 END;
2489
2490 if x_return_status <> FND_API.G_RET_STS_SUCCESS then
2491 return;
2492 end if;
2493
2494 -- Second part of API: OKL processing
2495 BEGIN
2496 --Second part of API savepoint
2497 SAVEPOINT CREATE_OKL_PAYMENT_PVT2;
2498
2499 --l_fun_currency := get_fun_currency;
2500 IF P_PMT_REC.PAYMENT_TARGET = 'CNSLD' THEN
2501
2502 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2503 iex_debug_pub.LogMessage(l_api_name || ': Payment target CNSLD');
2504 END IF;
2505
2506 -- run thru table of details and call OKL payment API
2507 FOR i IN 1..P_PMTDTLS_TBL.COUNT LOOP
2508
2509 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2510 iex_debug_pub.LogMessage(l_api_name || ': Details record ' || i);
2511 iex_debug_pub.LogMessage(l_api_name || ': Input for OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS:');
2512 iex_debug_pub.LogMessage(l_api_name || ': p_customer_id = ' || P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID);
2513 iex_debug_pub.LogMessage(l_api_name || ': p_invoice_id = ' || P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID);
2514 iex_debug_pub.LogMessage(l_api_name || ': p_payment_method_id = ' || l_ar_pay_method);
2515 iex_debug_pub.LogMessage(l_api_name || ': p_payment_ref_number = ' || 'IEX_' || l_payment_id);
2516 iex_debug_pub.LogMessage(l_api_name || ': p_payment_amount = ' || P_PMTDTLS_TBL(i).AMOUNT);
2517 iex_debug_pub.LogMessage(l_api_name || ': p_currency_code = ' || P_PMT_REC.CURRENCY_CODE);
2518 iex_debug_pub.LogMessage(l_api_name || ': p_payment_date = ' || sysdate);
2519 iex_debug_pub.LogMessage(l_api_name || ': Before OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS');
2520 END IF;
2521 OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS(
2522 p_api_version => 1.0,
2523 p_init_msg_list => FND_API.G_FALSE,
2524 p_customer_id => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
2525 p_invoice_id => P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID,
2526 p_payment_method_id => l_ar_pay_method,
2527 p_payment_ref_number => 'IEX_OKL_' || l_payment_id,
2528 p_payment_amount => P_PMTDTLS_TBL(i).AMOUNT,
2529 p_currency_code => P_PMT_REC.CURRENCY_CODE,
2530 p_payment_date => sysdate,
2531 x_payment_id => l_pay_okl_cnsld_id_tab(i),
2532 x_return_status => L_RETURN_STATUS,
2533 x_msg_count => L_MSG_COUNT,
2534 x_msg_data => L_MSG_DATA);
2535
2536 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2537 iex_debug_pub.LogMessage(l_api_name || ': After OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS');
2538 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
2539 END IF;
2540
2541 -- check for errors
2542 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2543 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2544 iex_debug_pub.LogMessage(l_api_name || ': OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS failed');
2545 END IF;
2546 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_PAY_OKL_CNSLD');
2547 FND_MSG_PUB.Add;
2548 RAISE FND_API.G_EXC_ERROR;
2549 END IF;
2550
2551 -- generate new pay_okl_ref id
2552 OPEN pox_genid_crs;
2553 FETCH pox_genid_crs INTO l_pay_okl_ref_id;
2554 CLOSE pox_genid_crs;
2555
2556 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2557 iex_debug_pub.LogMessage(l_api_name || ': New pay_okl_ref_id = ' || l_pay_okl_ref_id);
2558 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_PAY_OKL_XREF_PKG.INSERT_ROW');
2559 END IF;
2560
2561 IEX_PAY_OKL_XREF_PKG.Insert_Row(
2562 X_ROWID => l_rowid,
2563 P_PAY_OKL_XREF_ID => l_pay_okl_ref_id,
2564 P_LAST_UPDATE_DATE => sysdate,
2565 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
2566 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
2567 P_CREATION_DATE => sysdate,
2568 P_CREATED_BY => FND_GLOBAL.User_Id,
2569 P_PROGRAM_ID => 695,
2570 P_OBJECT_VERSION_NUMBER => 1.0,
2571 P_PAYMENT_ID => l_payment_id,
2572 P_CNSLD_INVOICE_ID => P_PMTDTLS_TBL(i).CNSLD_INVOICE_ID,
2573 P_CONTRACT_ID => null,
2574 P_OKL_PAYMENT_ID => l_pay_okl_cnsld_id_tab(i));
2575
2576 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2577 iex_debug_pub.LogMessage(l_api_name || ': After IEX_PAY_OKL_XREF_PKG.INSERT_ROW');
2578 END IF;
2579
2580 END LOOP;
2581
2582 ELSIF P_PMT_REC.PAYMENT_TARGET = 'CONTRACTS' THEN
2583
2584 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2585 iex_debug_pub.LogMessage(l_api_name || ': Payment target CONTRACTS');
2586 END IF;
2587
2588 -- run thru table of details and call OKL payment API
2589 FOR i IN 1..P_PMTDTLS_TBL.COUNT LOOP
2590
2591 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2592 iex_debug_pub.LogMessage(l_api_name || ': Details record ' || i);
2593 iex_debug_pub.LogMessage(l_api_name || ': Before OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS');
2594 END IF;
2595 OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS(
2596 p_api_version => 1.0,
2597 p_init_msg_list => FND_API.G_FALSE,
2598 p_customer_id => P_PMTDTLS_TBL(i).CUST_ACCOUNT_ID,
2599 p_contract_id => P_PMTDTLS_TBL(i).CONTRACT_ID,
2600 p_payment_method_id => l_ar_pay_method,
2601 p_payment_ref_number => 'IEX_OKL_' || l_payment_id,
2602 p_payment_amount => P_PMTDTLS_TBL(i).AMOUNT,
2603 p_currency_code => P_PMT_REC.CURRENCY_CODE,
2604 p_payment_date => sysdate,
2605 x_payment_id => l_pay_okl_contract_id_tab(i),
2606 x_return_status => L_RETURN_STATUS,
2607 x_msg_count => L_MSG_COUNT,
2608 x_msg_data => L_MSG_DATA);
2609
2610 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2611 iex_debug_pub.LogMessage(l_api_name || ': After OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS');
2612 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
2613 END IF;
2614
2615 -- check for errors
2616 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2617 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2618 iex_debug_pub.LogMessage(l_api_name || ': OKL_PAYMENT_PUB.CREATE_INTERNAL_TRANS failed');
2619 END IF;
2620 FND_MESSAGE.SET_NAME('IEX', 'IEX_FAILED_PAY_OKL_CONTRACT');
2621 FND_MSG_PUB.Add;
2622 RAISE FND_API.G_EXC_ERROR;
2623 END IF;
2624
2625 -- generate new pay_okl_ref id
2626 OPEN pox_genid_crs;
2627 FETCH pox_genid_crs INTO l_pay_okl_ref_id;
2628 CLOSE pox_genid_crs;
2629
2630 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2631 iex_debug_pub.LogMessage(l_api_name || ': New pay_okl_ref_id = ' || l_pay_okl_ref_id);
2632 iex_debug_pub.LogMessage(l_api_name || ': Before IEX_PAY_OKL_XREF_PKG.INSERT_ROW');
2633 END IF;
2634
2635 IEX_PAY_OKL_XREF_PKG.Insert_Row(
2636 X_ROWID => l_rowid,
2637 P_PAY_OKL_XREF_ID => l_pay_okl_ref_id,
2638 P_LAST_UPDATE_DATE => sysdate,
2639 P_LAST_UPDATED_BY => FND_GLOBAL.User_Id,
2640 P_LAST_UPDATE_LOGIN => G_LOGIN_ID,
2641 P_CREATION_DATE => sysdate,
2642 P_CREATED_BY => FND_GLOBAL.User_Id,
2643 P_PROGRAM_ID => 695,
2644 P_OBJECT_VERSION_NUMBER => 1.0,
2645 P_PAYMENT_ID => l_payment_id,
2646 p_CNSLD_INVOICE_ID => null,
2647 P_CONTRACT_ID => P_PMTDTLS_TBL(i).CONTRACT_ID,
2648 p_OKL_PAYMENT_ID => l_pay_okl_contract_id_tab(i));
2649
2650 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2651 iex_debug_pub.LogMessage(l_api_name || ': After IEX_PAY_OKL_XREF_PKG.INSERT_ROW');
2652 END IF;
2653
2654 END LOOP;
2655
2656 END IF;
2657
2658 -- commit second part of API: AR/OKL processing
2659 COMMIT WORK;
2660
2661 FND_MESSAGE.SET_NAME('IEX', 'IEX_OKL_SUCCESS');
2662 FND_MSG_PUB.Add;
2663
2664 x_return_status := FND_API.G_RET_STS_SUCCESS;
2665
2666 EXCEPTION
2667 WHEN FND_API.G_EXC_ERROR THEN
2668 ROLLBACK TO CREATE_OKL_PAYMENT_PVT2;
2669 x_return_status := FND_API.G_RET_STS_ERROR;
2670 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2671 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2672 ROLLBACK TO CREATE_OKL_PAYMENT_PVT2;
2673 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2674 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2675 WHEN OTHERS THEN
2676 ROLLBACK TO CREATE_OKL_PAYMENT_PVT2;
2677 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2678 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2679 THEN
2680 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
2681 END IF;
2682 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2683 END;
2684
2685 if x_return_status <> FND_API.G_RET_STS_SUCCESS then
2686 return;
2687 end if;
2688
2689 -- Third part of API: creating note
2690 BEGIN
2691 -- Third part of API savepoint
2692 SAVEPOINT CREATE_OKL_PAYMENT_PVT3;
2693
2694 l_note_type := fnd_profile.value('AST_NOTES_DEFAULT_TYPE');
2695 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2696 iex_debug_pub.LogMessage(l_api_name || ': l_note_type = ' || l_note_type);
2697 END IF;
2698
2699 -- if note is passed - insert it
2700 if P_PMT_REC.NOTE is not null and l_note_type is not null then
2701 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2702 iex_debug_pub.LogMessage(l_api_name || ': Note is not null');
2703 END IF;
2704
2705 IF P_PMT_REC.PAYMENT_TARGET = 'CNSLD' or P_PMT_REC.PAYMENT_TARGET = 'CONTRACTS' THEN
2706
2707 i := 1;
2708 -- adding parties into note context
2709 l_context_tab(i).context_type := 'PARTY';
2710 l_context_tab(i).context_id := l_note_payer_id;
2711 i := i + 1;
2712 if l_note_payer_type = 'PARTY_RELATIONSHIP' then
2713 l_context_tab(i).context_type := 'PARTY';
2714 l_context_tab(i).context_id := P_PMT_REC.PAYER_PARTY_ORG_ID;
2715 i := i + 1;
2716 l_context_tab(i).context_type := 'PARTY';
2717 l_context_tab(i).context_id := P_PMT_REC.PAYER_PARTY_PER_ID;
2718 i := i + 1;
2719 end if;
2720
2721 FOR j IN 1..P_PMTDTLS_TBL.COUNT LOOP
2722 -- adding account to note context
2723 l_context_tab(i).context_type := 'IEX_ACCOUNT';
2724 l_context_tab(i).context_id := P_PMTDTLS_TBL(j).CUST_ACCOUNT_ID;
2725 i := i + 1;
2726
2727 -- adding bill-to to note context
2728 l_context_tab(i).context_type := 'IEX_BILLTO';
2729 l_context_tab(i).context_id := P_PMTDTLS_TBL(j).CUST_SITE_USE_ID;
2730 i := i + 1;
2731
2732 -- adding contracts/cnsld invoices to note context
2733 IF P_PMT_REC.PAYMENT_TARGET = 'CNSLD' THEN
2734 if j = 1 then
2735 l_source_object_id := P_PMTDTLS_TBL(j).CNSLD_INVOICE_ID;
2736 l_source_object_code := 'IEX_CNSLD';
2737 else
2738 l_context_tab(i).context_type := 'IEX_CNSLD';
2739 l_context_tab(i).context_id := P_PMTDTLS_TBL(j).CNSLD_INVOICE_ID;
2740 i := i + 1;
2741 end if;
2742 ELSIF P_PMT_REC.PAYMENT_TARGET = 'CONTRACTS' THEN
2743 if j = 1 then
2744 l_source_object_id := P_PMTDTLS_TBL(j).CONTRACT_ID;
2745 l_source_object_code := 'IEX_K_HEADER';
2746 else
2747 l_context_tab(i).context_type := 'IEX_K_HEADER';
2748 l_context_tab(i).context_id := P_PMTDTLS_TBL(j).CONTRACT_ID;
2749 i := i + 1;
2750 end if;
2751 END IF;
2752
2753 END LOOP;
2754
2755 -- for debug purpose only
2756 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2757 iex_debug_pub.LogMessage(l_api_name || ': l_source_object_id = ' || l_source_object_id);
2758 iex_debug_pub.LogMessage(l_api_name || ': l_source_object_code = ' || l_source_object_code);
2759 END IF;
2760 FOR i IN 1..l_context_tab.COUNT LOOP
2761 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2762 iex_debug_pub.LogMessage(l_api_name || ': l_context_tab(' || i || ').context_type = ' || l_context_tab(i).context_type);
2763 iex_debug_pub.LogMessage(l_api_name || ': l_context_tab(' || i || ').context_id = ' || l_context_tab(i).context_id);
2764 END IF;
2765 END LOOP;
2766
2767 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2768 iex_debug_pub.LogMessage(l_api_name || ': Before call to IEX_NOTES_PVT.Create_Note');
2769 END IF;
2770 IEX_NOTES_PVT.Create_Note(
2771 P_API_VERSION => l_api_version,
2772 P_INIT_MSG_LIST => FND_API.G_FALSE,
2773 P_COMMIT => FND_API.G_FALSE,
2774 P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
2775 X_RETURN_STATUS => l_return_status,
2776 X_MSG_COUNT => l_msg_count,
2777 X_MSG_DATA => l_msg_data,
2778 p_source_object_id => l_source_object_id,
2779 p_source_object_code => l_source_object_code,
2780 p_note_type => l_note_type,
2781 p_notes => P_PMT_REC.NOTE,
2782 p_contexts_tbl => l_context_tab,
2783 x_note_id => X_PMTRESP_REC.NOTE_ID);
2784 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2785 iex_debug_pub.LogMessage(l_api_name || ': After call to IEX_NOTES_PVT.Create_Note');
2786 iex_debug_pub.LogMessage(l_api_name || ': Status = ' || L_RETURN_STATUS);
2787 END IF;
2788
2789 -- check for errors
2790 IF l_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2791 IF (FND_LOG.LEVEL_EVENT >= PG_DEBUG) THEN
2792 iex_debug_pub.LogMessage(l_api_name || ': IEX_NOTES_PVT.Create_Note failed');
2793 END IF;
2794 RAISE FND_API.G_EXC_ERROR;
2795 END IF;
2796
2797 END IF;
2798 end if;
2799
2800 -- commit third part of API: note creation
2801 COMMIT WORK;
2802 x_return_status := FND_API.G_RET_STS_SUCCESS;
2803 -- Standard call to get message count and if count is 1, get message info
2804 FND_MSG_PUB.Count_And_Get(
2805 p_encoded => FND_API.G_FALSE,
2806 p_count => x_msg_count,
2807 p_data => x_msg_data);
2808
2809 EXCEPTION
2810 WHEN FND_API.G_EXC_ERROR THEN
2811 ROLLBACK TO CREATE_OKL_PAYMENT_PVT3;
2812 x_return_status := FND_API.G_RET_STS_ERROR;
2813 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2814 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2815 ROLLBACK TO CREATE_OKL_PAYMENT_PVT3;
2816 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2817 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2818 WHEN OTHERS THEN
2819 ROLLBACK TO CREATE_OKL_PAYMENT_PVT3;
2820 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2821 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2822 THEN
2823 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
2824 END IF;
2825 FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2826 END;
2827
2828
2829 -- End - Bug428444 -- varangan -- remove this comment while implementing OKL payment in R12 codeline */
2830
2831 END;
2832
2833 PROCEDURE CREATE_PAYMENT(
2834 P_API_VERSION IN NUMBER,
2835 P_INIT_MSG_LIST IN VARCHAR2,
2836 P_COMMIT IN VARCHAR2,
2837 P_VALIDATION_LEVEL IN NUMBER,
2838 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
2839 X_MSG_COUNT OUT NOCOPY NUMBER,
2840 X_MSG_DATA OUT NOCOPY VARCHAR2,
2841 P_PMT_REC IN IEX_PAYMENTS_PUB.PMT_REC_TYPE,
2842 P_PMTDTLS_TBL IN IEX_PAYMENTS_PUB.PMTDTLS_TBL_TYPE,
2843 P_PMTINSTR_REC IN IEX_PAYMENTS_PUB.PMTINSTR_REC_TYPE,
2844 P_PMT_METHOD IN NUMBER, -- Included by varangan for profile bug#4558547
2845 X_PMTRESP_REC OUT NOCOPY IEX_PAYMENTS_PUB.PMTRESP_REC_TYPE ) IS
2846
2847 BEGIN
2848
2849 IF P_PMT_REC.PAYMENT_TARGET = 'ACCOUNTS' or P_PMT_REC.PAYMENT_TARGET = 'INVOICES' THEN
2850
2851 /* If its AR payment call CREATE_AR_PAYMENT */
2852 CREATE_AR_PAYMENT(
2853 P_API_VERSION => P_API_VERSION,
2854 P_INIT_MSG_LIST => P_INIT_MSG_LIST,
2855 P_COMMIT => P_COMMIT,
2856 P_VALIDATION_LEVEL => P_VALIDATION_LEVEL,
2857 X_RETURN_STATUS => X_RETURN_STATUS,
2858 X_MSG_COUNT => X_MSG_COUNT,
2859 X_MSG_DATA => X_MSG_DATA,
2860 P_PMT_REC => P_PMT_REC,
2861 P_PMTDTLS_TBL => P_PMTDTLS_TBL,
2862 P_PMTINSTR_REC => P_PMTINSTR_REC,
2863 P_PMT_METHOD => P_PMT_METHOD, -- Included by varangan for profile bug#4558547
2864 X_PMTRESP_REC => X_PMTRESP_REC);
2865 ELSE
2866 x_return_status := FND_API.G_RET_STS_SUCCESS;
2867
2868 /* -- Begin -- Commenting out for Payments Uptake
2869 -- Varangan- 4528444
2870 -- since OKL not yet designed payments uptake in R12
2871
2872 -- If its OKL payment call CREATE_OKL_PAYMENT
2873 CREATE_OKL_PAYMENT(
2874 P_API_VERSION => P_API_VERSION,
2875 P_INIT_MSG_LIST => P_INIT_MSG_LIST,
2876 P_COMMIT => P_COMMIT,
2877 P_VALIDATION_LEVEL => P_VALIDATION_LEVEL,
2878 X_RETURN_STATUS => X_RETURN_STATUS,
2879 X_MSG_COUNT => X_MSG_COUNT,
2880 X_MSG_DATA => X_MSG_DATA,
2881 P_PMT_REC => P_PMT_REC,
2882 P_PMTDTLS_TBL => P_PMTDTLS_TBL,
2883 P_PMTINSTR_REC => P_PMTINSTR_REC,
2884 X_PMTRESP_REC => X_PMTRESP_REC);
2885
2886 -- End -- Commenting out for Payments Uptake */
2887 END IF;
2888 END;
2889 begin
2890 PG_DEBUG := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2891 G_LOGIN_ID := FND_GLOBAL.Conc_Login_Id;
2892 G_PROGRAM_ID := FND_GLOBAL.Conc_Program_Id;
2893 G_USER_ID := FND_GLOBAL.User_Id;
2894 G_REQUEST_ID := FND_GLOBAL.Conc_Request_Id;
2895 END ;