1 PACKAGE IBY_UTILITY_PVT AUTHID CURRENT_USER AS
2 /* $Header: ibyvutls.pls 120.21 2011/12/12 10:21:02 vkarlapu ship $ */
3
4
5 -- iPayment trxn and batch status codes
6 -- must be in sync with mid-tier definition
7 -- in iby.ecapp.Constants
8 -- For an example of using these constants
9 -- in iby PL/SQL packages, see IBY_BANKPAYMENT_UPDT_PUB package body
10
11 -- for obselete statuses
12 STATUS_OBSELETE CONSTANT NUMBER :=-1;
13
14 STATUS_SUCCESS CONSTANT NUMBER := 0;
15
16 STATUS_COMM_ERROR CONSTANT NUMBER :=1;
17
18 STATUS_DUP_ORDER_ID CONSTANT NUMBER :=2;
19
20 STATUS_DUP_BATCH_ID CONSTANT NUMBER :=3;
21
22 STATUS_FIELD_MISSING CONSTANT NUMBER :=4;
23
24 STATUS_BEP_ERROR CONSTANT NUMBER :=5;
25
26 STATUS_BATCH_PARTIAL CONSTANT NUMBER :=6;
27
28 STATUS_BATCH_FAIL CONSTANT NUMBER :=7;
29
30 STATUS_NOT_SUPPORTED CONSTANT NUMBER :=8;
31
32 -- trxn interuppted before final status could be saved;
33 -- requires query of BEP to sync final statuses
34 STATUS_TRANSITIONAL CONSTANT NUMBER :=9;
35
36 STATUS_PENDING CONSTANT NUMBER := 11;
37
38 STATUS_INVALID CONSTANT NUMBER := -99;
39
40 STATUS_SCHED_IN_PROGRESS CONSTANT NUMBER := 12;
41
42 STATUS_SCHED_SUCCESS CONSTANT NUMBER := 13;
43
44 STATUS_CANCELLED CONSTANT NUMBER := 14;
45
46 STATUS_SCHED_FAILED CONSTANT NUMBER := 15;
47
48 STATUS_BEP_FAILED CONSTANT NUMBER := 16;
49
50 STATUS_UNABLE_TO_PAY CONSTANT NUMBER := 17;
51
52 STATUS_SUBMITTED CONSTANT NUMBER := 18;
53
54 STATUS_INVALID_CC CONSTANT NUMBER := 19;
55
56 STATUS_TRXN_DECLINED CONSTANT NUMBER := 20;
57
58 -- trxn is waiting in an open batch
59 STATUS_OPEN_BATCHED CONSTANT NUMBER := 100;
60
61 -- trxn was sent in a batch that resulted in comm error
62 STATUS_BATCH_COMM_ERROR CONSTANT NUMBER := 101;
63
64
65 -- trxn is about to be sent out as part of a batch.
66 -- Used to delimit which transactions were actually
67 -- sent out so that batched transactions which arrive
68 -- concurrently are not mistakenly updated to
69 -- see STATUS_BATCH_PENDING
70 STATUS_BATCH_TRANSITIONAL CONSTANT NUMBER := 109;
71
72 -- trxn is in a submitted batch
73 STATUS_BATCH_PENDING CONSTANT NUMBER := 111;
74
75 -- trxn was cancelled an open batch
76 STATUS_BATCH_CANCELLED CONSTANT NUMBER := 114;
77
78 -- iPayment has exceeded the number of batches
79 -- allowed in a day
80 STATUS_BATCH_MAX_EXCEEDED CONSTANT NUMBER := 120;
81
82 -- The statuses of all child trxns (and the EC batches
83 -- in turn for payable merged iby batches) are obtained
84 -- through querying the BEP. Some child trxns succeeded,
85 -- some failed. This is considered a final status
86 -- Usage: payable EC batch - iby_pay_batches_all.batch_status
87 -- payable iby merged batch - iby_batches_all.batchstatus
88 STATUS_QRY_BATCH_PARTIAL CONSTANT NUMBER :=206;
89
90 -- The batch is failed at the BEP side.
91 -- This can happen when the batch has a syntax error,
92 -- for example. As BEP generally take a batch as
93 -- an atomic entity, batch failure means all
94 -- child trxns are failed.
95 -- This status is also used when all trxns in
96 -- a batch failed on individual basis on the BEP side.
97 -- Usage: payable EC batch - iby_pay_batches_all.batch_status
98 -- payable iby merged batch - iby_batches_all.batchstatus
99 STATUS_QRY_BATCH_FAIL CONSTANT NUMBER :=207;
100
101 -- The statuses of some child trxns are obtained
102 -- through querying the BEP. Others are still unknown
103 -- (they will remain in STATUS_BATCH_PENDING).
104 -- Usage: payable EC batch - iby_pay_batches_all.batch_status
105 -- payable iby merged batch - iby_batches_all.batchstatus
106 STATUS_QRY_BATCH_PENDING CONSTANT NUMBER :=211;
107
108 -- This is the companion status for STATUS_QRY_BATCH_FAIL.
109 -- For trxn level. When a batch is failed at BEP side,
110 -- all it's child trxns will be failed also.
111 -- For a failed batch/trxn user must make corrections
112 -- in the originating EC app and submit them
113 -- as new trxns to iPayment.
114 -- Note for trxn only failure such as country rule
115 -- validation error for the trxn, it will get
116 -- STATUS_BEP_ERROR
117 -- Usage: payable trxn - iby_pay_payments_all.pmt_status
118 STATUS_QRY_TRXN_FAIL CONSTANT NUMBER :=220;
119
120 -- obseleted financing statuses
121 STATUS_LENDER_APPROVED CONSTANT NUMBER :=STATUS_OBSELETE;
122 STATUS_FINANCE_TIMEOUT CONSTANT NUMBER :=STATUS_OBSELETE;
123 STATUS_FINAPP_DRAFT_SAVED CONSTANT NUMBER :=STATUS_OBSELETE;
124 STATUS_FINAPP_RECEIVED CONSTANT NUMBER :=STATUS_OBSELETE;
125 STATUS_FINAPP_SENT CONSTANT NUMBER :=STATUS_OBSELETE;
126 STATUS_ADDINFO_SENT CONSTANT NUMBER :=STATUS_OBSELETE;
127 STATUS_ADDINFO_RECEIVED CONSTANT NUMBER :=STATUS_OBSELETE;
128 STATUS_FINAPP_EXTENDED CONSTANT NUMBER :=STATUS_OBSELETE;
129 STATUS_FINAPP_EXPIRED CONSTANT NUMBER :=STATUS_OBSELETE;
130 STATUS_FIN_OFFER_EXPIRED CONSTANT NUMBER :=STATUS_OBSELETE;
131 STATUS_FINANCE_OFFLINE CONSTANT NUMBER :=STATUS_OBSELETE;
132 STATUS_FINANCE_ADDINFO CONSTANT NUMBER :=STATUS_OBSELETE;
133 STATUS_FINANCE_CANCELLED CONSTANT NUMBER :=STATUS_OBSELETE;
134 STATUS_FIN_BUYER_ACCEPT CONSTANT NUMBER :=STATUS_OBSELETE;
135 STATUS_FIN_BUYER_DECLINE CONSTANT NUMBER :=STATUS_OBSELETE;
136 STATUS_LENDER_INIT_DECLINE CONSTANT NUMBER :=STATUS_OBSELETE;
137 STATUS_LENDER_DECLINE CONSTANT NUMBER :=STATUS_OBSELETE;
138 STATUS_FIN_COMPLETE CONSTANT NUMBER :=STATUS_OBSELETE;
139 STATUS_FIN_DOC_PROCESS CONSTANT NUMBER :=STATUS_OBSELETE;
140 STATUS_FIN_DOC_RECEIVED CONSTANT NUMBER :=STATUS_OBSELETE;
141 STATUS_FINAPP_PURGED CONSTANT NUMBER :=STATUS_OBSELETE;
142
143 --------------------End of Status Codes Definition-----------------------
144
145
146
147 G_EXPT_ERR CONSTANT VARCHAR2(80) := 'FND_API.G_EXC_ERROR';
148 G_EXPT_UNEXP_ERR CONSTANT VARCHAR2(80) := 'FND_API.G_EXC_UNEXPECTED_ERROR';
149 G_EXPT_OTR_ERR CONSTANT VARCHAR2(80) := 'G_EXC_OTHER_ERROR';
150
151 C_ERRCODE_PREFIX CONSTANT VARCHAR2(10) := 'IBY_';
152 C_TOKEN_CONCATENATOR CONSTANT VARCHAR2(1) := '#';
153 C_TOKEN_VAL_CONCATENATOR CONSTANT VARCHAR2(1) := '=';
154
155 -- Yes/no values for 'boolean' parameters of
156 -- all functions in all IBY* packages
157 --
158 C_API_YES CONSTANT VARCHAR2(1) := 'Y';
159 C_API_NO CONSTANT VARCHAR2(1) := 'N';
160
161 PARAM_EXTRACT_DEBUG_MODE CONSTANT VARCHAR2(30) := 'EXTRACT_DEBUG_MODE';
162
163 /*New parameters for : 10022548 */
164 TYPE snapshot_count_type IS RECORD (
165 l_need_action NUMBER,
166 l_processing NUMBER,
167 l_terminated NUMBER,
168 l_errors NUMBER,
169 l_completed NUMBER
170 );
171 /*End of New parameters for : 10022548 */
172 TYPE snapshot_count_t IS TABLE OF snapshot_count_type ;
173
174
175 --
176 -- to_number wrapper that catches exceptions
177 --
178 FUNCTION to_num( p_str IN VARCHAR2 ) RETURN NUMBER;
179
180 --
181 -- Returns 'Y' if the input is numeric. Else 'N'
182 --
183 FUNCTION isNumeric (p_input IN VARCHAR2) RETURN VARCHAR2;
184
185 -- Exceptions Handling Routine will do the following:
186 -- 1. Rollback to savepoint
187 -- 2. Handle expected, unexpected and other exceptions
188 -- 3. Add an error message to the API message list
189 -- 4. Return error status
190 --
191 -- The following is example of calling exception handling routines:
192 --
193
194 PROCEDURE handle_exceptions(
195 p_api_name IN VARCHAR2,
196 p_pkg_name IN VARCHAR2,
197 p_rollback_point IN VARCHAR2,
198 p_exception_type IN VARCHAR2,
199 x_msg_count OUT NOCOPY NUMBER,
200 x_msg_data OUT NOCOPY VARCHAR2,
201 x_return_status OUT NOCOPY VARCHAR2
202 );
203
204
205 --
206 -- Name: handleException
207 -- Args: p_err_msg => The error message associated with the exception
208 -- p_err_code => The error code generated by the exception
209 -- Notes: Scans the error message for the generated exception; if of the
210 -- form 'IBY_[0-9]*' then this is an iPayment internal error message
211 -- intended for Java which the procedure will then parse and correctly
212 -- put on the message stack
213 --
214 PROCEDURE handleException
215 (
216 p_err_msg IN VARCHAR2,
217 p_err_code IN VARCHAR2
218 );
219
220
221 --
222 -- Name: get_property
223 -- Args: p_name => property name
224 -- Outs: x_val => property value
225 --
226 -- Notes: gets an application-wide property
227 --
228 PROCEDURE get_property
229 (
230 p_name IN VARCHAR2,
231 x_val OUT NOCOPY VARCHAR2
232 );
233
234 --
235 -- Name: set_property
236 -- Args: p_name => property name
237 -- p_val => property value
238 -- Notes: properties are set at the site level
239 --
240 --
241 PROCEDURE set_property
242 (
243 p_name IN VARCHAR2,
244 p_val IN VARCHAR2
245 );
246
247 --
248 -- Name: get_jtf_property
249 -- Args: p_name => property name
250 -- Outs: x_val => property value
251 --
252 -- Notes: gets an IBY property from old JTF Property manager tables.
253 -- only the first element of the value list is returned.
254 -- this function is used by ibyprupg.sql
255 --
256 FUNCTION get_jtf_property(p_name IN VARCHAR2) RETURN VARCHAR2;
257
258
259 --
260 -- Name: encode64
261 -- Args: s => string to encode
262 -- Return: the given string in base64 encoding
263 --
264 FUNCTION encode64(s IN VARCHAR2) RETURN VARCHAR2;
265
266 --
267 -- Name: decode64
268 -- Args: s => base64 encoded string
269 -- Return: the given string decoded
270 --
271 FUNCTION decode64(s IN VARCHAR2) RETURN VARCHAR2;
272
273
274 --
275 -- Name: get_local_nls
276 -- Args: none
277 -- Return: the local (i.e. database) characterset.
278 --
279 FUNCTION get_local_nls RETURN VARCHAR2;
280
281 --
282 -- Name: get_nls_charset
283 -- Args: p_nls => NLSLang parameter (e.g. AMERICAN_AMERICA.US7ASCII)
284 -- Return: The character set encoding portion of the
285 -- NLSLang, e.g.:
286 -- get_nls_charset('AMERICAN_AMERICA.US7ASCII') = 'US7ASCII'
287 --
288 FUNCTION get_nls_charset( p_nls VARCHAR2 ) RETURN VARCHAR2;
289
290 --
291 -- Name: MAKE_ASCII
292 -- Args: p_from_text => text to be converted.
293 -- Return: The text converted to the US7ASCII character set.
294 --
295 FUNCTION MAKE_ASCII(p_from_text IN VARCHAR2) RETURN VARCHAR2;
296
297 --
298 -- Name: get_call_exec
299 -- Args: p_pkg_name => name of the package in which the procedure is defined
300 -- p_function_name => name of the function/procedure to invoke
301 -- p_params => Array of fixed parameters to the call; all positions
302 -- should be represented, with arguments that will
303 -- take bind variables given null values
304 -- Return: String usable by EXECUTE IMMEDIATE to invoke the
305 -- PL/SQL procedure
306 --
307 FUNCTION get_call_exec
308 (
309 p_pkg_name VARCHAR2,
310 p_function_name VARCHAR2,
311 p_params JTF_VARCHAR2_TABLE_200
312 )
313 RETURN VARCHAR2;
314
315 --
316 -- Name: set_view_param
317 -- Args: p_name => view parameter name
318 -- p_val => view parameter value
319 --
320 -- Notes: The name-value pair is lost at the end of
321 -- the current transaction
322 --
323 PROCEDURE set_view_param
324 (
325 p_name iby_view_parameters_gt.name%TYPE,
326 p_val iby_view_parameters_gt.value%TYPE
327 );
328
329 --
330 -- Name: get_view_param
331 -- Args: p_name => view parameter name
332 -- Return: The value of the parameter, or NULL if not defined
333 --
334 FUNCTION get_view_param( p_name iby_view_parameters_gt.name%TYPE )
335 RETURN iby_view_parameters_gt.value%TYPE;
336
337 --
338 -- Name: check_lookup_val
339 -- Args: p_val => lookup value
340 -- p_lookup => lookup name code
344 FUNCTION check_lookup_val(p_val IN VARCHAR2, p_lookup IN VARCHAR2)
341 -- Return: True if the lookup contains that value code
342 --
343 --
345 RETURN BOOLEAN;
346
347 --
348 -- Return: True if the party id is valid
349 FUNCTION validate_party_id(p_party_id IN hz_parties.party_id%TYPE)
350 RETURN BOOLEAN;
351
352 --
353 -- Return: True if the application id is valid
354 FUNCTION validate_app_id( p_app_id IN fnd_application.application_id%TYPE )
355 RETURN BOOLEAN;
356
357 --
358 -- Return: True if the territory code is valid
359 FUNCTION validate_territory
360 ( p_territory IN fnd_territories.territory_code%TYPE )
361 RETURN BOOLEAN;
362
363 --
364 -- Return: True if the string is trivial
365 FUNCTION is_trivial(p_string VARCHAR2)
366 RETURN BOOLEAN;
367
368 FUNCTION validate_organization(p_org_id IN iby_trxn_summaries_all.org_id%TYPE,
369 p_org_type IN iby_trxn_summaries_all.org_type%TYPE)
370 RETURN VARCHAR2;
371
372
373 PROCEDURE validate_pmt_channel_code(p_instrument_type IN iby_creditcard.instrument_type%TYPE,
374 p_payment_channel_code IN OUT NOCOPY iby_trxn_summaries_all.payment_channel_code%TYPE,
375 p_valid OUT NOCOPY VARCHAR2);
376
377
378
379 /*-----------------------------------------------------------------------------------------
380 | FUNCTION - get_psr_snapshot_count
381 | DESCRIPTION - This function is designed for the Payables Payment Manager
382 | Home Page . The function returns the total count of Payment
383 | Process Requests with a particular Status or a combination
384 | of Payment Process Request Statuses that map to a particular
385 | snapshot code
386 |
387 | SNAPSHOT CODE STATUS
388 | ------------- ------------------------------------------------
389 | NEED_ACTION_BY_ME AP:
390 | 'REVIEW', 'MISSING RATES'
391 | IBY:
392 | 'INFORMATION_REQUIRED'
393 | 'PENDING_REVIEW_DOC_VAL_ERRORS',
394 | 'PENDING_REVIEW_PMT_VAL_ERRORS',
395 | 'PENDING_REVIEW'
396 |
397 | PROCESSING AP:
398 | 'UNSTARTED', 'SELECTING', 'CANCELING',
399 | 'CALCULATING', 'SELECTED'
400 | IBY:
401 | 'INSERTED', 'SUBMITTED',
402 | 'ASSIGNMENT_COMPLETE','DOCUMENTS_VALIDATED',
403 | 'RETRY_DOCUMENT_VALIDATION',
404 | 'RETRY_PAYMENT_CREATION'
405 |
406 | USER_TERMINATED AP:
407 | 'CANCELED' , 'CANCELLED NO PAYMENTS'
408 | IBY:
409 | 'TERMINATED'
410 |
411 | PROGRAM_ERRORS IBY:
412 | 'PENDING_REVIEW_DOC_VAL_ERRORS'
413 | 'PENDING_REVIEW_PMT_VAL_ERRORS'
414 |
415 | COMPLETED IBY:
416 | 'PAYMENTS_CREATED'
417 |
418 | TOTAL COUNT(*) IN AP
419 |
420 -----------------------------------------------------------------------------------------
421 */
422 FUNCTION get_psr_snapshot_count(p_snapshot_code IN VARCHAR2)
423 RETURN NUMBER;
424
425
426 /*-----------------------------------------------------------------------------------------
427 | FUNCTION - get_psr_snapshot_count PIPELINED.
428 |
429 | DESCRIPTION - This function is designed for the Payables Payment Manager
430 | Home Page . The function returns the total count of Payment
431 | Process Requests with a particular Status or a combination
432 | of Payment Process Request Statuses that map to a particular
433 | snapshot code
434 |
435 | SNAPSHOT CODE STATUS
436 | ------------- ------------------------------------------------
437 | NEED_ACTION_BY_ME AP:
438 | 'REVIEW', 'MISSING RATES'
439 | IBY:
440 | 'INFORMATION_REQUIRED'
441 | 'PENDING_REVIEW_DOC_VAL_ERRORS',
442 | 'PENDING_REVIEW_PMT_VAL_ERRORS',
443 | 'PENDING_REVIEW'
444 |
445 | PROCESSING AP:
446 | 'UNSTARTED', 'SELECTING', 'CANCELING',
447 | 'CALCULATING', 'SELECTED'
448 | IBY:
449 | 'INSERTED', 'SUBMITTED',
450 | 'ASSIGNMENT_COMPLETE','DOCUMENTS_VALIDATED',
451 | 'RETRY_DOCUMENT_VALIDATION',
452 | 'RETRY_PAYMENT_CREATION'
453 |
454 | USER_TERMINATED AP:
455 | 'CANCELED' , 'CANCELLED NO PAYMENTS'
456 | IBY:
457 | 'TERMINATED'
458 |
459 | PROGRAM_ERRORS IBY:
460 | 'PENDING_REVIEW_DOC_VAL_ERRORS'
461 | 'PENDING_REVIEW_PMT_VAL_ERRORS'
462 |
463 | COMPLETED IBY:
464 | 'PAYMENTS_CREATED'
465 |
466 | TOTAL COUNT(*) IN AP
467 |
468 |===========================================================================================
469 |Understanding PIPELINED FUNCTION:
470 |-----------------------------------
474 |PIPELINED functions will operate like a table.
471 |PIPELINED functions are piece of code that can be used for querying SQL.
472 |Basically, when you would like a PLSQL routine to be the source
473 |of data -- instead of a table -- you would use a pipelined function.
475 |Using PL/SQL table functions can significantly lower the over-head of
476 |doing such transformations. PL/SQL table functions accept and return
477 |multiple rows, delivering them as they are ready rather than all at once,
478 |and can be made to execute as parallel operations.
479 |
480 -----------------------------------------------------------------------------------------
481 */
482 FUNCTION get_psr_snapshot_pipe RETURN snapshot_count_t PIPELINED;
483
484
485 /*-----------------------------------------------------------------------------------------
486 FUNCTION - get_payment_status_flag
487 DESCRIPTION - This function returns the status w.r.t payments that have been
488 created in IBY for this Payment Process Request(payment_service_request_id)
489 ------------------------------------------------------------------------------------------
490 */
491
492 FUNCTION get_payment_status_flag(p_psr_id IN NUMBER,
493 p_from_cache IN VARCHAR2 DEFAULT 'FALSE')
494 RETURN VARCHAR2;
495
496
497 /*-----------------------------------------------------------------------------------------
498 FUNCTION - get_psr_status
499 DESCRIPTION - This function returns the status w.r.t payments that have been
500 created in IBY for this Payment Process Request(payment_service_request_id)
501
502 ------------------------------------------------------------------------------------------
503 */
504 FUNCTION get_psr_status(p_psr_id IN NUMBER,
505 p_psr_status IN VARCHAR2,
506 p_from_cache IN VARCHAR2 DEFAULT 'FALSE')
507 RETURN VARCHAR2;
508
509 /* Bug Number: 7279395
510 * This procedure is used to initialize the table type variable
511 * g_psr_table.
512 * The pages which are accessing the functions get_psr_status and
513 * get_payment_status_flag should take the responsibility of initializing
514 * g_psr_table by calling this procedure.
515 */
516 PROCEDURE initialize;
517
518 Function check_user_access(p_pay_instruction_id IN Number) RETURN VARCHAR2;
519
520
521 /*-----------------------------------------------------------------------------------------
522 | FUNCTION - get_format_program_name
523 | DESCRIPTION - This method returns the name of the concurrent program to be invoked for
524 | for formatting given the instruction id. The valid return values can be
525 | IBY_FD_PAYMENT_FORMAT, IBY_FD_PAYMENT_FORMAT_TEXT
526 ------------------------------------------------------------------------------------------
527 */
528 FUNCTION get_format_program_name(p_pay_instruction_id IN NUMBER)
529 RETURN VARCHAR2;
530
531
532 FUNCTION check_org_access( p_payment_service_request_id IN NUMBER)
533 RETURN VARCHAR2;
534
535 /*-----------------------------------------------------------------------------------------
536 FUNCTION - Spawn_Random_Card
537 DESCRIPTION - Utility function to help scramble production data on a cloned instance.
538 ------------------------------------------------------------------------------------------
539 */
540 FUNCTION Spawn_Random_Card
541 (p_prefix IN VARCHAR2,
542 p_card_len IN NUMBER,
543 p_mod_check IN VARCHAR2
544 )
545 RETURN VARCHAR2;
546
547 PROCEDURE init_debug_mode_for_extract;
548
549 --
550 -- Name: debug_mode_for_extract_enabled
551 -- Return: Y/N
552 --
553 FUNCTION debug_mode_for_extract_enabled
554 RETURN VARCHAR2;
555
556
557 -- This function populates psr snapshot PPRs in to GT table
558 PROCEDURE populate_psr_snapshot_count;
559
560 END IBY_UTILITY_PVT;