DBA Data[Home] [Help]

PACKAGE BODY: APPS.ARI_PROCESS_VALIDATE

Source


1 PACKAGE BODY ARI_PROCESS_VALIDATE AS
2 /*$Header: ARI_PROCESS_VALIDATE_B.pls 120.4 2011/11/03 15:11:02 mbolli noship $*/
3 
4  --------------------------------------------
5  -- declaration of global variables and types
6  --------------------------------------------
7  G_DEBUG_COUNT                       NUMBER := 0;
8  G_DEBUG                             BOOLEAN := FALSE;
9  G_FILE_NAME   CONSTANT VARCHAR2(30) := 'ARI_PROCESS_VALIDATE_B.pls';
10 
11  G_PKG_NAME                          CONSTANT VARCHAR2(30) := 'ARI_PROCESS_VALIDATE';
12 
13  --------------------------------------------
14  -- internal package routines
15  --------------------------------------------
16 
17 procedure logMessage(log_level in number
18                     ,module    in varchar2
19                     ,message   in varchar2)
20 is
21 
22 begin
23     IF log_level >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
24       FND_LOG.STRING(log_level, module, message);
25     END IF;
26 
27 EXCEPTION
28     WHEN OTHERS THEN
29         LogMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, 'ERROR: ' || sqlerrm);
30 end;
31 
32 
33 
34 /*=========================================================================
35 || PUBLIC PROCEDURE VALIDATE_DISPUTE
36 ||
37 || DESCRIPTION
38 || Overview: This procedure validates the transaction before disputing
39 ||
40 ||
41 || PSEUDO CODE/LOGIC
42 ||
43 || PARAMETERS
44 || Parameter: p_cust_account_id     => Cust Account ID of the customer
45 ||            p_cust_site_use_id    => Site Use ID of the Account
46 ||            p_session_id          => Current session from AR_IREC_USER_ACCT_SITES_ALL
47 ||            p_payment_schedule_tbl    => Table of Payment Schedule ID of Transaction's
48 ||            p_trx_number_tbl      => Table of Trx Numbers for Display
49 ||
50 || Return values:
51 ||            x_fail_payment_schedule_tbl    => Table of failed Payment Schedule ID
52 ||            x_return_status       => 'S' Validation Success
53 ||                                     'E' Validation Error
54 ||            x_msg_count	     =>  Message Count
55 ||            x_msg_data             =>  Validating Error Message
56 ||
57 || Return value:
58 ||               standard
59 || KNOWN ISSUES
60 ||
61 || NOTES
62 ||
63 || MODIFICATION HISTORY
64 || Date              Author           Description of Changes
65 || 28-JUL-2011 	   kasreeni           Bug#12800095 - Created
66  *=======================================================================*/
67  procedure VALIDATE_DISPUTE(p_cust_account_id     IN NUMBER
68                         ,p_cust_site_use_id       IN NUMBER
69                         ,p_session_id             IN NUMBER
70                         ,p_payment_schedule_tbl   IN ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL
71                         ,p_trx_number_tbl         IN ARI_PROCESS_VALIDATE.TRX_NUMBER_TBL
72                         ,x_fail_payment_schedule_tbl  OUT NOCOPY ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL
73                         ,x_return_status          OUT NOCOPY VARCHAR2
74                         ,x_msg_count              OUT NOCOPY NUMBER
75                         ,x_msg_data               OUT NOCOPY VARCHAR2)
76 is
77     l_api_name           varchar2(25);
78     l_psh_tbl            ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL;
79 
80     l_profile_name       varchar2(256);
81     l_validate_dispute_proc varchar2(2000);
82     l_error              varchar2(2000);
83     l_return             varchar2(30);
84     l_plsql_block        varchar2(2000);
85     l_ctr                number;
86 
87 
88 BEGIN
89 
90     l_api_name           := 'VALIDATE_DISPUTE';
91     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - BEGIN');
92 
93     -- Initialize message list IF p_init_msg_list is set to TRUE.
94     FND_MSG_PUB.initialize;
95 
96     -- Initialize API return status to SUCCESS
97     x_return_status := FND_API.G_RET_STS_SUCCESS;
98 
99     -- ---------------------------------------------------------------------
100     -- API BODY
101     -- ---------------------------------------------------------------------
102     -- initialize any variables here
103     l_ctr                := 1;
104 
105     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_cust_account_id = ' || p_cust_account_id);
106     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_cust_site_use_id = ' || p_cust_site_use_id);
107     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_session_id = ' || p_session_id);
108     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - # Payment_schedule_tbl ' || p_payment_schedule_tbl.count);
109     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - # Trx Number_tbl ' || p_Trx_Number_tbl.count);
110 
111 
112     l_validate_dispute_proc := NVL(FND_PROFILE.VALUE('OIR_CUSTOM_VALIDATE_DISPUTE'),
113                                                          'ARI_DEF_HOOKS_PVT.VALIDATE_DISPUTE');
114     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_validate_dispute_proc: ' || l_validate_dispute_proc);
115 
116     FOR f in 1..p_payment_schedule_tbl.count LOOP
117         logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' -------- Payment Schedule :: ' || f);
118         logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - payment_Schedule_id  = ' ||  p_payment_schedule_tbl(f));
119 
120         IF p_payment_schedule_tbl(f) IS NOT NULL THEN
121 
122             l_plsql_block := 'BEGIN ' || l_validate_dispute_proc|| '(:1, :2, :3, :4, :5, :6); END;';
123             logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_plsql_block = ' || l_plsql_block);
124 
125             BEGIN
126 
127                  logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - Calling...');
128 
129                     EXECUTE IMMEDIATE l_plsql_block
130                     USING
131                         IN p_cust_account_id,
132                         IN p_cust_site_use_id,
133                         IN p_session_id,
134                         IN p_payment_schedule_tbl(f),
135                         OUT l_return,
136                         OUT l_error;
137 
138                     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - Done');
139 
140             EXCEPTION
141                     WHEN OTHERS THEN
142                         FND_MESSAGE.SET_NAME('AR', 'ARI_PROCESS_VALIDATE_FAILED');
143                         FND_MESSAGE.SET_TOKEN('ERROR_MSG' ,SQLERRM);
144                         FND_MSG_PUB.ADD;
145                         LogMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, FND_MSG_PUB.Get(p_encoded => 'F'));
146 			RAISE;
147             END;
148 
149             LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_return = ' || l_return);
150             LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_error = ' || l_error);
151 
152             IF l_return IS NULL or l_return <> 'S' THEN
153         	 -- assign output table of failed payment schedules...
154                  l_psh_tbl(l_ctr) := p_payment_schedule_tbl(f);
155                  l_ctr := l_ctr + 1;
156             END IF;
157 
158             IF l_error IS NOT NULL THEN
159                 FND_MESSAGE.SET_NAME('AR', 'ARI_PROCESS_VALIDATE_FAILED');
160                 FND_MESSAGE.SET_TOKEN('ERROR_MSG' ,l_error);
161                 FND_MSG_PUB.ADD;
162                 LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, FND_MSG_PUB.Get(p_encoded => 'F'));
163             END IF;
164 
165         END IF;
166 
167 
168         logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate Customer Trx_Number = ' || p_trx_number_tbl(f));
169 
170     END LOOP;
171 
172     IF (l_psh_tbl.count > 0) THEN
173 	x_return_status := 'F';
174     END IF;
175 
176     x_fail_payment_schedule_tbl  := l_psh_tbl;
177     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate dispute: ' || x_return_status);
178 
179    -- ---------------------------------------------------------------------
180    -- End of API body
181    -- ---------------------------------------------------------------------
182    FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data  => x_msg_data);
183 
184    logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
185 
186    EXCEPTION
187        WHEN FND_API.G_EXC_ERROR THEN
188              x_return_status := FND_API.G_RET_STS_ERROR;
189 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
190              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
194              x_return_status := FND_API.G_RET_STS_ERROR;
191              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
192 
193         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
195 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
196              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
197              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
198 
199        WHEN OTHERS THEN
200              x_return_status := FND_API.G_RET_STS_ERROR;
201 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
202              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
203              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
204 
205 END VALIDATE_DISPUTE;
206 
207 
208 /*=========================================================================
209 || PUBLIC PROCEDURE VALIDATE_PAYMENT
210 ||
211 || DESCRIPTION
212 || Overview: This procedure validates the transaction before payment
213 ||
214 ||
215 || PSEUDO CODE/LOGIC
216 ||
217 || PARAMETERS
218 || Parameter: p_cust_account_id     => Cust Account ID of the customer
219 ||            p_cust_site_use_id    => Site Use ID of the Account
220 ||            p_session_id          => Current session from AR_IREC_USER_ACCT_SITES_ALL
221 ||            p_payment_schedule_tbl    => Table of Payment Schedule ID of Transaction's
222 ||            p_trx_number_tbl      => Table of Trx Numbers for Display
223 ||
224 || Return values:
225 ||            x_fail_payment_schedule_tbl    => Table of failed Payment Schedule ID
226 ||            x_return_status       => 'S' Validation Success
227 ||                                     'E' Validation Error
228 ||            x_msg_count	     =>  Message Count
229 ||            x_msg_data             =>  Validating Error Message
230 ||
231 || Return value:
232 ||               standard
233 || KNOWN ISSUES
234 ||
235 || NOTES
236 ||
237 || MODIFICATION HISTORY
238 || Date              Author           Description of Changes
239 || 28-JUL-2011 	   kasreeni           Bug#12800095 - Created
240  *=======================================================================*/
241  procedure VALIDATE_PAYMENT(p_cust_account_id     IN NUMBER
242                         ,p_cust_site_use_id       IN NUMBER
243                         ,p_session_id             IN NUMBER
244                         ,p_payment_schedule_tbl   IN ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL
245                         ,p_trx_number_tbl         IN ARI_PROCESS_VALIDATE.TRX_NUMBER_TBL
246                         ,x_fail_payment_schedule_tbl  OUT NOCOPY ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL
247                         ,x_return_status          OUT NOCOPY VARCHAR2
248                         ,x_msg_count              OUT NOCOPY NUMBER
249                         ,x_msg_data               OUT NOCOPY VARCHAR2)
250 is
251     l_api_name           varchar2(25);
252     l_psh_tbl            ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL;
253 
254     l_profile_name       varchar2(256);
255     l_validate_payment_proc varchar2(2000);
256     l_error              varchar2(2000);
257     l_return             varchar2(30);
258     l_plsql_block        varchar2(2000);
259     l_ctr                number;
260 
261 begin
262 
263     l_api_name           := 'VALIDATE_PAYMENT';
264     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - BEGIN');
265 
266     -- Initialize message list IF p_init_msg_list is set to TRUE.
267     FND_MSG_PUB.initialize;
268 
269     -- Initialize API return status to SUCCESS
270     x_return_status := FND_API.G_RET_STS_SUCCESS;
271 
272     -- ---------------------------------------------------------------------
273     -- API BODY
274     -- ---------------------------------------------------------------------
275     -- initialize any variables here
276     l_ctr                := 1;
277 
278     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_cust_account_id = ' || p_cust_account_id);
279     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_cust_site_use_id = ' || p_cust_site_use_id);
280     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_session_id = ' || p_session_id);
281     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - # Payment_schedule_tbl ' || p_payment_schedule_tbl.count);
282     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - # Trx Number_tbl ' || p_Trx_Number_tbl.count);
283 
284     l_validate_payment_proc := NVL(FND_PROFILE.VALUE('OIR_CUSTOM_VALIDATE_PAYMENT'),
285                                                          'ARI_DEF_HOOKS_PVT.VALIDATE_PAYMENT');
286 
287     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_validate_payment_proc: ' || l_validate_payment_proc);
288 
289     FOR f in 1..p_payment_schedule_tbl.count LOOP
293         IF p_payment_schedule_tbl(f) IS NOT NULL THEN
290         logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' -------- Payment Schedule :: ' || f);
291         logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - Payment_Schedule_ID  = ' ||  p_payment_schedule_tbl(f));
292 
294 
295             l_plsql_block := 'BEGIN ' || l_validate_payment_proc|| '(:1, :2, :3, :4, :5, :6); END;';
296             logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_plsql_block = ' || l_plsql_block);
297 
298             BEGIN
299 
300                  logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - Calling...');
301 
302                     EXECUTE IMMEDIATE l_plsql_block
303                     USING
304                         IN p_cust_account_id,
305                         IN p_cust_site_use_id,
306                         IN p_session_id,
307                         IN p_payment_schedule_tbl(f),
308                         OUT l_return,
309                         OUT l_error;
310 
311                     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - Done');
312 
313             EXCEPTION
314                     WHEN OTHERS THEN
315                         FND_MESSAGE.SET_NAME('AR', 'ARI_PROCESS_VALIDATE_FAILED');
316                         FND_MESSAGE.SET_TOKEN('ERROR_MSG' ,SQLERRM);
317                         FND_MSG_PUB.ADD;
318                         LogMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, FND_MSG_PUB.Get(p_encoded => 'F'));
319 			RAISE;
320             END;
321 
322             LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_return = ' || l_return);
323             LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_error = ' || l_error);
324 
325             IF l_return IS NULL or l_return <> 'S' THEN
326         	-- assign output table of failed payment schedules...
327                  l_psh_tbl(l_ctr) := p_payment_schedule_tbl(f);
328                  l_ctr := l_ctr + 1;
329             END IF;
330 
331             IF l_error IS NOT NULL THEN
332                 FND_MESSAGE.SET_NAME('AR', 'ARI_PROCESS_VALIDATE_FAILED');
333                 FND_MESSAGE.SET_TOKEN('ERROR_MSG' ,l_error);
334                 FND_MSG_PUB.ADD;
335                 LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, FND_MSG_PUB.Get(p_encoded => 'F'));
336             END IF;
337 
338         END IF;
339 
340         logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate Customer Trx_Number = ' || p_trx_number_tbl(f));
341 
342     END LOOP;
343 
344     IF (l_psh_tbl.count > 0) THEN
345 	x_return_status := 'F';
346     END IF;
347 
348     x_fail_payment_schedule_tbl  := l_psh_tbl;
349     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate payment: ' || x_return_status);
350 
351     -- ---------------------------------------------------------------------
352     -- End of API body
353     -- ---------------------------------------------------------------------
354     FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data  => x_msg_data);
355 
356     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
357 
358     EXCEPTION
359        WHEN FND_API.G_EXC_ERROR THEN
360              x_return_status := FND_API.G_RET_STS_ERROR;
361 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
362              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
363              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
364 
365         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
366              x_return_status := FND_API.G_RET_STS_ERROR;
367 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
368              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
369              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
370 
371        WHEN OTHERS THEN
372              x_return_status := FND_API.G_RET_STS_ERROR;
373 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
374              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
375              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
376 
377 END VALIDATE_PAYMENT;
378 
379 /*=========================================================================
380 || PUBLIC PROCEDURE VALIDATE_PRINT
381 ||
382 || DESCRIPTION
383 || Overview: This procedure validates the transaction before printing
384 ||
385 ||
386 || PSEUDO CODE/LOGIC
387 ||
388 || PARAMETERS
389 || Parameter: p_cust_account_id     => Cust Account ID of the customer
390 ||            p_cust_site_use_id    => Site Use ID of the Account
391 ||            p_session_id          => Current session from AR_IREC_USER_ACCT_SITES_ALL
392 ||            p_payment_schedule_tbl    => Table of Payment Schedule ID of Transaction's
393 ||            p_trx_number_tbl      => Table of Trx Numbers for Display
394 ||
395 || Return values:
396 ||            x_fail_payment_schedule_tbl    => Table of failed Payment Schedule ID
397 ||            x_return_status       => 'S' Validation Success
398 ||                                     'E' Validation Error
399 ||            x_msg_count	     =>  Message Count
400 ||            x_msg_data             =>  Validating Error Message
401 ||
402 || Return value:
403 ||               standard
404 || KNOWN ISSUES
405 ||
406 || NOTES
407 ||
408 || MODIFICATION HISTORY
409 || Date              Author           Description of Changes
410 || 28-JUL-2011 	   kasreeni           Bug#12800095 - Created
411  *=======================================================================*/
412  procedure VALIDATE_PRINT(p_cust_account_id     IN NUMBER
416                         ,p_trx_number_tbl         IN ARI_PROCESS_VALIDATE.TRX_NUMBER_TBL
413                         ,p_cust_site_use_id       IN NUMBER
414                         ,p_session_id             IN NUMBER
415                         ,p_payment_schedule_tbl   IN ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL
417                         ,x_fail_payment_schedule_tbl  OUT NOCOPY ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL
418                         ,x_return_status          OUT NOCOPY VARCHAR2
419                         ,x_msg_count              OUT NOCOPY NUMBER
420                         ,x_msg_data               OUT NOCOPY VARCHAR2)
421 is
422     l_api_name           varchar2(25);
423     l_psh_tbl            ARI_PROCESS_VALIDATE.PAYMENT_SCHEDULE_TBL;
424 
425     l_profile_name       varchar2(256);
426     l_validate_print_proc varchar2(2000);
427     l_error              varchar2(2000);
428     l_return             varchar2(30);
429     l_plsql_block        varchar2(2000);
430     l_ctr                number;
431 
432 
433 BEGIN
434 
435     l_api_name           := 'VALIDATE_PRINT';
439     FND_MSG_PUB.initialize;
436     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - BEGIN');
437 
438     -- Initialize message list IF p_init_msg_list is set to TRUE.
440 
441     -- Initialize API return status to SUCCESS
442     x_return_status := FND_API.G_RET_STS_SUCCESS;
443 
444     -- ---------------------------------------------------------------------
445     -- API BODY
446     -- ---------------------------------------------------------------------
447     -- initialize any variables here
448     l_ctr                := 1;
449 
450     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_cust_account_id = ' || p_cust_account_id);
451     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_cust_site_use_id = ' || p_cust_site_use_id);
452     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - p_session_id = ' || p_session_id);
453     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - # Payment_schedule_tbl ' || p_payment_schedule_tbl.count);
454     logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - # Trx Number_tbl ' || p_Trx_Number_tbl.count);
455 
456     l_validate_print_proc := NVL(FND_PROFILE.VALUE('OIR_CUSTOM_VALIDATE_PRINT'),
457                                                        'ARI_DEF_HOOKS_PVT.VALIDATE_PRINT');
458 
459     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_validate_print_proc: ' || l_validate_print_proc);
460 
461     FOR f in 1..p_payment_schedule_tbl.count LOOP
462         logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' -------- Payment Schedule :: ' || f);
463         logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - Payment_Schedule_ID  = ' ||  p_payment_schedule_tbl(f));
464 
465         IF p_payment_schedule_tbl(f) IS NOT NULL THEN
466 
467             l_plsql_block := 'BEGIN ' || l_validate_print_proc|| '(:1, :2, :3, :4, :5, :6); END;';
468             logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_plsql_block = ' || l_plsql_block);
469 
470             BEGIN
471 
472                  logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - Calling...');
473 
474                     EXECUTE IMMEDIATE l_plsql_block
475                     USING
476                         IN p_cust_account_id,
477                         IN p_cust_site_use_id,
478                         IN p_session_id,
479                         IN p_payment_schedule_tbl(f),
480                         OUT l_return,
481                         OUT l_error;
482 
483                     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - Done');
484 
485             EXCEPTION
486                     WHEN OTHERS THEN
487                         FND_MESSAGE.SET_NAME('AR', 'ARI_PROCESS_VALIDATE_FAILED');
488                         FND_MESSAGE.SET_TOKEN('ERROR_MSG' ,SQLERRM);
489                         FND_MSG_PUB.ADD;
490                         LogMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, FND_MSG_PUB.Get(p_encoded => 'F'));
491 			RAISE;
492             END;
493 
494             LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_return = ' || l_return);
495             LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_error = ' || l_error);
496 
497             IF l_return IS NULL or l_return <> 'S' THEN
498    		-- assign output table of failed payment schedules...
499                  l_psh_tbl(l_ctr) := p_payment_schedule_tbl(f);
500                  l_ctr := l_ctr + 1;
501             END IF;
502 
503             IF l_error IS NOT NULL THEN
504                 FND_MESSAGE.SET_NAME('AR', 'ARI_PROCESS_VALIDATE_FAILED');
505                 FND_MESSAGE.SET_TOKEN('ERROR_MSG' ,l_error);
506                 FND_MSG_PUB.ADD;
507                 LogMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, FND_MSG_PUB.Get(p_encoded => 'F'));
508             END IF;
509 
510         END IF;
511 
512         logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate Customer Trx_Number = ' || p_trx_number_tbl(f));
513 
514     END LOOP;
515 
516     IF (l_psh_tbl.count > 0) THEN
517 	x_return_status := 'F';
518     END IF;
519 
520     x_fail_payment_schedule_tbl  := l_psh_tbl;
521     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate print: ' || x_return_status);
522 
523     -- ---------------------------------------------------------------------
524     -- End of API body
525     -- ---------------------------------------------------------------------
526     FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data  => x_msg_data);
527 
528     logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
529 
530     EXCEPTION
531        WHEN FND_API.G_EXC_ERROR THEN
532              x_return_status := FND_API.G_RET_STS_ERROR;
533 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
537         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
534              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
535              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
536 
538              x_return_status := FND_API.G_RET_STS_ERROR;
539 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
540              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
541              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
542 
543        WHEN OTHERS THEN
544              x_return_status := FND_API.G_RET_STS_ERROR;
545 	     x_fail_payment_schedule_tbl  := l_psh_tbl;
546              FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
547              logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
548 
549 END VALIDATE_PRINT;
550 
551 END ARI_PROCESS_VALIDATE;