1 PACKAGE BODY IGI_APPROVAL_PKG AS
2 /* $Header: igiexpnb.pls 115.8 2003/08/09 13:36:41 rgopalan ship $ */
3
4
5 --==========================================================================
6 ---------------------------------------------------------------------------
7 -- Private (Non Public) Procedure Specifications
8 ---------------------------------------------------------------------------
9 --==========================================================================
10
11 PROCEDURE Log(p_msg IN VARCHAR2,
12 p_loc IN VARCHAR2);
13
14 FUNCTION Inv_Needs_Approving(p_invoice_id IN NUMBER,
15 p_run_option IN VARCHAR2,
16 p_calling_sequence IN VARCHAR2) RETURN BOOLEAN;
17
18 FUNCTION Get_Inv_Matched_Status(p_invoice_id IN NUMBER,
19 p_calling_sequence IN VARCHAR2) RETURN BOOLEAN;
20
21 PROCEDURE Get_Invoice_Statuses(p_invoice_id IN NUMBER,
22 p_holds_count IN OUT NOCOPY NUMBER,
23 p_approval_status IN OUT NOCOPY VARCHAR2,
24 p_calling_sequence IN VARCHAR2);
25
26 PROCEDURE Update_Inv_Dists_To_Approved(p_invoice_id IN NUMBER,
27 p_user_id IN NUMBER,
28 p_calling_sequence IN VARCHAR2);
29
30 PROCEDURE Update_Inv_Dists_To_Selected(p_invoice_id IN NUMBER,
31 p_run_option IN VARCHAR2,
32 p_calling_sequence IN VARCHAR2);
33
34 PROCEDURE Approval_Init(p_chart_of_accounts_id IN OUT NOCOPY NUMBER,
35 p_set_of_books_id IN OUT NOCOPY NUMBER,
36 p_auto_offsets_flag IN OUT NOCOPY VARCHAR2,
37 p_recalc_pay_sched_flag IN OUT NOCOPY VARCHAR2,
38 p_flex_method IN OUT NOCOPY VARCHAR2,
39 p_sys_xrate_gain_ccid IN OUT NOCOPY NUMBER,
40 p_sys_xrate_loss_ccid IN OUT NOCOPY NUMBER,
41 p_base_currency_code IN OUT NOCOPY VARCHAR2,
42 p_inv_enc_type_id IN OUT NOCOPY NUMBER,
43 p_purch_enc_type_id IN OUT NOCOPY NUMBER,
44 p_gl_date_from_receipt_flag IN OUT NOCOPY VARCHAR2,
45 p_match_on_tax_flag IN OUT NOCOPY VARCHAR2,
46 p_enforce_tax_on_acct IN OUT NOCOPY VARCHAR2,
47 p_receipt_acc_days IN OUT NOCOPY NUMBER,
48 p_cash_only IN OUT NOCOPY BOOLEAN,
49 p_system_user IN OUT NOCOPY NUMBER,
50 p_user_id IN OUT NOCOPY NUMBER,
51 p_tax_tolerance IN OUT NOCOPY NUMBER,
52 p_tax_tol_amt_range IN OUT NOCOPY NUMBER,
53 p_ship_amt_tolerance IN OUT NOCOPY NUMBER,
54 p_rate_amt_tolerance IN OUT NOCOPY NUMBER,
55 p_total_amt_tolerance IN OUT NOCOPY NUMBER,
56 p_price_tolerance IN OUT NOCOPY NUMBER,
57 p_qty_tolerance IN OUT NOCOPY NUMBER,
58 p_qty_rec_tolerance IN OUT NOCOPY NUMBER,
59 p_max_qty_ord_tolerance IN OUT NOCOPY NUMBER,
60 p_max_qty_rec_tolerance IN OUT NOCOPY NUMBER,
61 p_cash_basis_enc_nr_flag IN OUT NOCOPY VARCHAR2,
62 p_enable_non_recoverable_tax IN OUT NOCOPY VARCHAR2,
63 p_calling_sequence IN VARCHAR2);
64
65 PROCEDURE Set_Hold(p_invoice_id IN NUMBER,
66 p_line_location_id IN NUMBER,
67 p_rcv_transaction_id IN NUMBER,
68 p_hold_lookup_code IN VARCHAR2,
69 p_hold_reason IN VARCHAR2,
70 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
71 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
72 p_calling_sequence IN VARCHAR2);
73
74 PROCEDURE Count_Hold(p_hold_lookup_code IN VARCHAR2,
75 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
76 p_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
77 p_calling_sequence IN VARCHAR2);
78
79 PROCEDURE Get_Release_Lookup_For_Hold(p_hold_lookup_code IN VARCHAR2,
80 p_release_lookup_code IN OUT NOCOPY VARCHAR2,
81 p_calling_sequence IN VARCHAR2);
82
83 PROCEDURE Withhold_Tax_On(p_invoice_id IN NUMBER,
84 p_gl_date_from_receipt IN VARCHAR2,
85 p_last_updated_by IN NUMBER,
86 p_last_update_login IN NUMBER,
87 p_program_application_id IN NUMBER,
88 p_program_id IN NUMBER,
89 p_request_id IN NUMBER,
90 p_system_user IN NUMBER,
91 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
92 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
93 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
94 p_calling_sequence IN VARCHAR2);
95 --shelley
96 PROCEDURE Manual_Withhold_Tax(p_invoice_id IN NUMBER,
97 p_last_updated_by IN NUMBER,
98 p_last_update_login IN NUMBER,
99 p_calling_sequence IN VARCHAR2);
100
101 PROCEDURE Execute_Tax_Checks(p_invoice_id IN NUMBER,
102 p_tax_tolerance IN NUMBER,
103 p_tax_tol_amt_range IN NUMBER,
104 p_invoice_currency_code IN VARCHAR2,
105 p_system_user IN NUMBER,
106 p_tax_rounding_rule IN VARCHAR2,
107 p_auto_tax_calc_flag IN VARCHAR2,
108 p_match_on_tax_flag IN VARCHAR2,
109 p_enforce_tax_on_acct IN VARCHAR2,
110 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
111 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
112 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
113 p_calling_sequence IN OUT NOCOPY VARCHAR2);
114
115 PROCEDURE Calculate_Tax_Variance(p_invoice_id IN NUMBER,
116 p_invoice_currency_code IN VARCHAR2,
117 p_tax_tolerance IN NUMBER,
118 p_tax_tol_amt_range IN NUMBER,
119 p_tax_rounding_rule IN VARCHAR2,
120 p_auto_tax_calc_flag IN VARCHAR2,
121 p_tax_var_exists IN OUT NOCOPY VARCHAR2,
122 p_out_of_tax_range_exists IN OUT NOCOPY VARCHAR2,
123 p_calling_sequence IN VARCHAR2);
124
125 PROCEDURE Verify_Tax_Code(p_invoice_id IN NUMBER,
126 p_match_on_tax_flag IN VARCHAR2,
127 p_enforce_tax_on_acct IN VARCHAR2,
128 p_acct_tax_difference IN OUT NOCOPY VARCHAR2,
129 p_match_tax_difference IN OUT NOCOPY VARCHAR2,
130 p_system_user IN NUMBER,
131 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
132 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
133 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
134 p_calling_sequence IN VARCHAR2);
135
136 PROCEDURE Check_Header_Lvl_Tax_Incl_Excl(p_calc_inclusive IN VARCHAR2,
137 p_invoice_id IN NUMBER,
138 p_tax_tolerance IN NUMBER,
139 p_tax_tol_amt_range IN NUMBER,
140 p_inv_currency_code IN VARCHAR2,
141 p_tax_rounding_rule IN VARCHAR2,
142 p_tax_rate IN NUMBER,
143 p_dist_sum IN NUMBER,
144 p_tax_sum IN NUMBER,
145 p_tax_var_exists IN OUT NOCOPY VARCHAR2,
146 p_out_of_tax_range_exists IN OUT NOCOPY VARCHAR2,
147 p_calling_sequence IN VARCHAR2);
148
149 PROCEDURE Check_Line_Level_Tax_Incl_Excl(p_calc_inclusive IN VARCHAR2,
150 p_invoice_id IN NUMBER,
151 p_tax_tolerance IN NUMBER,
152 p_tax_tol_amt_range IN NUMBER,
153 p_inv_currency_code IN VARCHAR2,
154 p_tax_rounding_rule IN VARCHAR2,
155 p_tax_code_id IN NUMBER,
156 p_tax_rate IN NUMBER,
157 p_dist_sum IN NUMBER,
158 p_tax_sum IN NUMBER,
159 p_tax_var_exists IN OUT NOCOPY VARCHAR2,
160 p_out_of_tax_range_exists IN OUT NOCOPY VARCHAR2,
161 p_calling_sequence IN VARCHAR2);
162
163 PROCEDURE Get_Total_Sum(p_invoice_id IN NUMBER,
164 p_total_sum IN OUT NOCOPY NUMBER,
165 p_calling_sequence IN VARCHAR2);
166
167 PROCEDURE Get_Dist_Sum(p_invoice_id IN NUMBER,
168 p_tax_code_id IN NUMBER,
169 p_dist_sum IN OUT NOCOPY NUMBER,
170 p_amt_includes_tax_flag IN VARCHAR2,
171 p_calling_sequence IN VARCHAR2);
172
173 PROCEDURE Get_Tax_Sum(p_invoice_id IN NUMBER,
174 p_tax_code_id IN NUMBER,
175 p_tax_sum IN OUT NOCOPY NUMBER,
176 p_amt_includes_tax_flag IN VARCHAR2,
177 p_calling_sequence IN VARCHAR2);
178
179 PROCEDURE Execute_General_Checks(p_invoice_id IN NUMBER,
180 p_set_of_books_id IN NUMBER,
181 p_base_currency_code IN VARCHAR2,
182 p_invoice_amount IN NUMBER,
183 p_base_amount IN NUMBER,
184 p_invoice_currency_code IN VARCHAR2,
185 p_invoice_amount_limit IN NUMBER,
186 p_hold_future_payments_flag IN VARCHAR2,
187 p_system_user IN NUMBER,
188 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
189 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
190 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
191 p_calling_sequence IN VARCHAR2);
192
193 PROCEDURE Check_Future_Period(p_invoice_id IN NUMBER,
194 p_set_of_books_id IN NUMBER,
195 p_system_user IN NUMBER,
196 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
197 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
198 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
199 p_calling_sequence IN VARCHAR2);
200
201 PROCEDURE Check_Dist_Variance(p_invoice_id IN NUMBER,
202 p_base_currency_code IN VARCHAR2,
203 p_system_user IN NUMBER,
204 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
205 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
206 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
207 p_calling_sequence IN VARCHAR2);
208
209 PROCEDURE Check_No_Rate(p_invoice_id IN NUMBER,
210 p_base_currency_code IN VARCHAR2,
211 p_system_user IN NUMBER,
212 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
213 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
214 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
215 p_calling_sequence IN VARCHAR2);
216
217 PROCEDURE Check_invoice_vendor(p_invoice_id IN NUMBER,
218 p_base_currency_code IN VARCHAR2,
219 p_invoice_amount IN NUMBER,
220 p_base_amount IN NUMBER,
221 p_invoice_currency_code IN VARCHAR2,
222 p_invoice_amount_limit IN NUMBER,
223 p_hold_future_payments_flag IN VARCHAR2,
224 p_system_user IN NUMBER,
225 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
226 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
227 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
228 p_calling_sequence IN VARCHAR2);
229
230
231
232 PROCEDURE Check_Invalid_Dist_Acct(p_invoice_id IN NUMBER,
233 p_system_user IN NUMBER,
234 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
235 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
236 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
237 p_calling_sequence IN VARCHAR2);
238
239 PROCEDURE Approve(p_run_option IN VARCHAR2,
240 p_invoice_batch_id IN NUMBER,
241 p_begin_invoice_date IN DATE,
242 p_end_invoice_date IN DATE,
243 p_vendor_id IN NUMBER,
244 p_pay_group IN VARCHAR2,
245 p_invoice_id IN NUMBER,
246 p_entered_by IN NUMBER,
247 p_set_of_books_id IN NUMBER,
248 p_trace_option IN VARCHAR2,
249 p_conc_flag IN VARCHAR2,
250 p_holds_count IN OUT NOCOPY NUMBER,
251 p_approval_status IN OUT NOCOPY VARCHAR2,
252 p_calling_sequence IN VARCHAR2) IS
253 BEGIN
254 NULL;
255 END Approve;
256
257 --============================================================================
258 -- APPROVAL_INIT: Procedure called by APPROVAL to retrieve system variables
259 -- to be used by the APPROVAL program
260 --
261 -- All parameters are in out: To be populated by the procecure
262 --
263 -- Procedure Flow:
264 -- ---------------
265 -- Retrieve system parameters
266 -- Determine if accounting method is Cash Only
267 -- Retrieve profile option user_id
268 -- Set approval system user_id value
269 -- Retrieve system tolerances
270 --============================================================================
271
272 PROCEDURE Approval_Init(p_chart_of_accounts_id IN OUT NOCOPY NUMBER,
273 p_set_of_books_id IN OUT NOCOPY NUMBER,
274 p_auto_offsets_flag IN OUT NOCOPY VARCHAR2,
275 p_recalc_pay_sched_flag IN OUT NOCOPY VARCHAR2,
276 p_flex_method IN OUT NOCOPY VARCHAR2,
277 p_sys_xrate_gain_ccid IN OUT NOCOPY NUMBER,
278 p_sys_xrate_loss_ccid IN OUT NOCOPY NUMBER,
279 p_base_currency_code IN OUT NOCOPY VARCHAR2,
280 p_inv_enc_type_id IN OUT NOCOPY NUMBER,
281 p_purch_enc_type_id IN OUT NOCOPY NUMBER,
282 p_gl_date_from_receipt_flag IN OUT NOCOPY VARCHAR2,
283 p_match_on_tax_flag IN OUT NOCOPY VARCHAR2,
284 p_enforce_tax_on_acct IN OUT NOCOPY VARCHAR2,
285 p_receipt_acc_days IN OUT NOCOPY NUMBER,
286 p_cash_only IN OUT NOCOPY BOOLEAN,
287 p_system_user IN OUT NOCOPY NUMBER,
288 p_user_id IN OUT NOCOPY NUMBER,
289 p_tax_tolerance IN OUT NOCOPY NUMBER,
290 p_tax_tol_amt_range IN OUT NOCOPY NUMBER,
291 p_ship_amt_tolerance IN OUT NOCOPY NUMBER,
292 p_rate_amt_tolerance IN OUT NOCOPY NUMBER,
293 p_total_amt_tolerance IN OUT NOCOPY NUMBER,
294 p_price_tolerance IN OUT NOCOPY NUMBER,
295 p_qty_tolerance IN OUT NOCOPY NUMBER,
296 p_qty_rec_tolerance IN OUT NOCOPY NUMBER,
297 p_max_qty_ord_tolerance IN OUT NOCOPY NUMBER,
298 p_max_qty_rec_tolerance IN OUT NOCOPY NUMBER,
299 p_cash_basis_enc_nr_flag IN OUT NOCOPY VARCHAR2,
300 p_enable_non_recoverable_tax IN OUT NOCOPY VARCHAR2,
301 p_calling_sequence IN VARCHAR2) IS
302 BEGIN
303 NULL;
304 END Approval_Init;
305
306
307 --============================================================================
308 -- INV_NEEDS_APPROVING: Function when given an invoice_id and run_option,
309 -- it returns a boolean to indicate whether to approve
310 -- an invoice or not. Returns FALSE if the run_option is 'New' and the
311 -- invoice doesn't have any unapproved distributions
312 --============================================================================
313 FUNCTION Inv_Needs_Approving(p_invoice_id IN NUMBER,
314 p_run_option IN VARCHAR2,
315 p_calling_sequence IN VARCHAR2) RETURN BOOLEAN IS
316 BEGIN
317 NULL;
318 END Inv_Needs_Approving;
319
320
321 --============================================================================
322 -- UPDATE_INV_DISTS_TO_SELECTED: Procedure given the invoice_id and
323 -- run option, updates the invoice distributions
324 -- to be selected for approval depending on the run option. If the run_option
325 -- is 'New' then we only select distributions that have never been processed by
326 -- approval, otherwise we select all distributions that have not successfully
327 -- been approved.
331 p_calling_sequence IN VARCHAR2) IS
328 --============================================================================
329 PROCEDURE Update_Inv_Dists_To_Selected(p_invoice_id IN NUMBER,
330 p_run_option IN VARCHAR2,
332 BEGIN
333 NULL;
334 END Update_Inv_Dists_To_Selected;
335
336
337 --============================================================================
338 -- EXECUTE_GENERAL_CHECKS: Procedure that performs general invoice checks
339 -- on the invoice.
340 --
341 -- Parameters:
342 -- -----------
343 --
344 -- p_invoice_id: Invoice Id
345 --
346 -- p_set_of_books_id: Set of Books Id
347 --
348 -- p_base_currency_code: Base Currency Code
349 --
350 -- p_system_user: Approval Program User Id
351 --
352 -- p_holds: Holds Array
353 --
354 -- p_holds_count: Holds Count Array
355 --
356 -- p_release_count: Release Count Array
357 --
358 -- p_calling_sequence: Debugging string to indicate path of module calls to be
359 -- printed out NOCOPY upon error.
360 --
361 -- Procedure Flow:
362 -- ---------------
363 --
364 -- Check for Invalid Dist Acct - set or release hold depending on condition
365 -- Check for PO Required - set or release hold depending on condition
366 -- Check for Missing Exchange Rate - set or release hold depending on contition
367 -- Check for Dist Variance - set or release hold depending on condition
368 -- Check for UnOpen Future Period - set or release hold depending on condition
369 -- Check for Invoice Limit and vendor holds - set or release hold depending on
370 -- condition
371 --============================================================================
372 PROCEDURE Execute_General_Checks(p_invoice_id IN NUMBER,
373 p_set_of_books_id IN NUMBER,
374 p_base_currency_code IN VARCHAR2,
375 p_invoice_amount IN NUMBER,
376 p_base_amount IN NUMBER,
377 p_invoice_currency_code IN VARCHAR2,
378 p_invoice_amount_limit IN NUMBER,
379 p_hold_future_payments_flag IN VARCHAR2,
380 p_system_user IN NUMBER,
381 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
382 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
383 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
384 p_calling_sequence IN VARCHAR2) IS
385 BEGIN
386 NULL;
387 END Execute_General_Checks;
388
389
390 --============================================================================
391 -- CHECK_INVALID_DIST_ACCT: Procedure that checks whether an invoice has
392 -- a distribution with an invalid distribution
393 -- account and places or releases the DIST ACCT INVALID hold depending on
394 -- the condition.
395 --============================================================================
396 PROCEDURE Check_Invalid_Dist_Acct(p_invoice_id IN NUMBER,
397 p_system_user IN NUMBER,
398 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
399 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
400 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
401 p_calling_sequence IN VARCHAR2)IS
402 BEGIN
403 NULL;
404 END Check_Invalid_Dist_Acct;
405
406
407 --============================================================================
408 -- CHECK_PO_REQUIRED: Procedure that checks whether an invoice has a
409 -- PO REQUIRED condition and places or releases the hold
410 -- depending on the condition.
411 --============================================================================
412
413 PROCEDURE Check_PO_Required(p_invoice_id IN NUMBER,
414 p_system_user IN NUMBER,
415 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
416 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
417 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
418 p_calling_sequence IN VARCHAR2)IS
419 BEGIN
420 NULL;
421 END Check_PO_Required;
422
423
424 --============================================================================
425 -- CHECK_NO_RATE: Procedure that checks if an invoice is a foreign invoice
426 -- missing an exchange rate and places or releases the
427 -- 'NO RATE' hold depending on the condition.
428 --============================================================================
429 PROCEDURE Check_No_Rate(p_invoice_id IN NUMBER,
430 p_base_currency_code IN VARCHAR2,
431 p_system_user IN NUMBER,
432 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
433 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
434 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
435 p_calling_sequence IN VARCHAR2)IS
436 BEGIN
437 NULL;
438 END Check_No_Rate;
439
440
441 --============================================================================
442 -- CHECK_DIST_VARIANCE: Procedure that checks whether an invoice has a
443 -- DIST VARIANCE condition, i.e. distribution total
447
444 -- does not equal to invoice amount and places or releases the hold depending
445 -- on the condition.
446 --============================================================================
448 PROCEDURE Check_Dist_Variance(p_invoice_id IN NUMBER,
449 p_base_currency_code IN VARCHAR2,
450 p_system_user IN NUMBER,
451 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
452 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
453 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
454 p_calling_sequence IN VARCHAR2)IS
455 BEGIN
456 NULL;
457 END Check_Dist_Variance;
458
459
460 --============================================================================
461 -- CHECK_FUTURE_PERIOD: Procedure that checks whether an invoice has a
462 -- distribution line whose accounting date is in an
463 -- future period and places or releases the FUTURE PERIOD hold depending on
464 -- the condition.
465 --============================================================================
466 PROCEDURE Check_Future_Period(p_invoice_id IN NUMBER,
467 p_set_of_books_id IN NUMBER,
468 p_system_user IN NUMBER,
469 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
470 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
471 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
472 p_calling_sequence IN VARCHAR2)IS
473 BEGIN
474 NULL;
475 END Check_Future_Period;
476
477 --============================================================================
478 -- CHECK_INVOICE_VENDOR: Procedure that checks if an invoice has any of the
479 -- following:
480 -- 1. Exceeds the invoice amount limit stated at the
481 -- vendor site level and places or releases the
482 -- 'AMOUNT' hold depending on the condition.
483 -- 2. The vendor site has set to hold future payments
484 -- and places or release the 'VENDOR' hold depending
485 -- on the condition.
486 --============================================================================
487 PROCEDURE Check_invoice_vendor(p_invoice_id IN NUMBER,
488 p_base_currency_code IN VARCHAR2,
489 p_invoice_amount IN NUMBER,
490 p_base_amount IN NUMBER,
491 p_invoice_currency_code IN VARCHAR2,
492 p_invoice_amount_limit IN NUMBER,
493 p_hold_future_payments_flag IN VARCHAR2,
494 p_system_user IN NUMBER,
495 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
496 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
497 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
498 p_calling_sequence IN VARCHAR2)IS
499 BEGIN
500 NULL;
501 END Check_invoice_vendor;
502
503
504 --============================================================================
505 -- EXECUTE_TAX_CHECKS: Procedure that perfroms tax checks on an invoice
506 --
507 -- Parameters:
508 --
509 -- p_invoice_id: Invoice Id
510 --
511 -- p_tax_tolerance: System Tax Tolerance
512 --
513 -- p_tax_tol_amt_range: System Tax Tolerance Amount Range
514 --
515 -- p_invoice_currency_code: Invoice Currency Code
516 --
517 -- p_system_user: Approval Program User Id
518 --
519 -- p_tax_rounding_rule: Tax Rounding Rule(Up, Down or Nearest)
520 --
521 -- p_auto_tax_calc_flag: Kind of automatic tax calculation if any.
522 --
523 -- p_holds: Holds Array
524 --
525 -- p_holds_count: Holds Count Array
526 --
527 -- p_release_count: Release Count Array
528 --
529 -- p_calling_sequence: Debugging string to indicate path of module calls to be
530 -- printed out NOCOPY upon error.
531 --
532 -- Procedure Flow:
533 -- ---------------
534 -- For an invoice call to calculate the variance
535 -- Set or Release TAX VARIANCE hold if one of the dist tax lines has the
536 -- condition
537 -- Set or Release TAX AMOUNT RANGE hold if one of the dist tax lines has the
538 -- condition
539 --============================================================================
540 PROCEDURE Execute_Tax_Checks(p_invoice_id IN NUMBER,
541 p_tax_tolerance IN NUMBER,
542 p_tax_tol_amt_range IN NUMBER,
543 p_invoice_currency_code IN VARCHAR2,
544 p_system_user IN NUMBER,
545 p_tax_rounding_rule IN VARCHAR2,
546 p_auto_tax_calc_flag IN VARCHAR2,
547 p_match_on_tax_flag IN VARCHAR2,
548 p_enforce_tax_on_acct IN VARCHAR2,
549 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
550 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
551 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
552 p_calling_sequence IN OUT NOCOPY VARCHAR2)IS
553 BEGIN
554 NULL;
555 END Execute_Tax_Checks;
556
557
558 --============================================================================
559 -- CALCULATE_TAX_VARIANCE: Procedure called both from batch and online
560 -- approval to return variance results on a
561 -- particular invoice and vat code.
565 -- p_tax_tolerance: The % tax tolerance
562 -- Parameters:
563 -- p_invoice_id: Id of the Invoice in question
564 -- p_invoice_currency_code: Invoice Currency
566 -- p_tax_tol_amt_range: The amount range of tax tolerance
567 -- p_auto_tax_calc_flag: The current setting for automatic tax calculation
568 -- p_tax_var_exists: Flag that indicates whether tax variance exists
569 -- p_out_of_tax_range_exists: Flag that indicates if tax is out NOCOPY of tolerance
570 -- range.
571 --
572 -- FOR each distribution tax line for the invoice
573 -- (modified now, to only select distribution lines with distinct vat_codes -
574 -- bug #665011)
575 -- Retrieve the Tax Sum
576 -- Retrieve the Tax Rate
577 -- Retrieve the Dist Sum
578 -- IF Dist_Sum is null
579 -- Retrieve the Total_Sum
580 -- Use the Total_Sum as the Sum on which to calculate tax
581 -- ELSE
582 -- Use the Dist_Sum as the Sum on which to calculate tax
583 -- Calculate variances using the appropriate (inclusive vs exclusive method)
584 -- END LOOP
585 --
586 -- NOTE: Tax Variance calculation is ***VERY*** related to the method
587 -- utilized for calculating the tax originally. i.e. if when the
588 -- invoice is entered the tax is calculated as an inclusive amount
589 -- on an invoice total, that may yield different results than if
590 -- the tax is calculated as an exclusive amount on the sum of the
591 -- distribution lines of type <> TAX. This is due to loss of precision
592 -- during rounding.
593 -- e.g. Assume: invoice total = $10.82 tax rate = 6.5% and rounding = UP
594 -- Automatic tax calculation yields: distribution = $10.15
595 -- tax line = $0.67
596 -- However, exclusive tax calculation on the distribution would
597 -- yield: tax line = $0.66
598 -- Rules: 1. If automatic tax calculation is Header we assume inclusive
599 -- tax calculation.
600 -- 2. If automatic tax calculation is Line or Tax Code we do
601 -- both inclusive tax calculation for those lines which have
602 -- the amount includes tax flag set to Y and exclusive tax
603 -- calculation for those lines which have the amount includes
604 -- tax flag set to N. Note that we use as the tax sum the
605 -- tax lines with the includes tax flag set to Y or N respectively.
606 -- 3. Due to recoverability/nonrecoverability we will also
607 -- group by project information and po_distribution_id which
608 -- we obtain off the nonrecoverable lines.
609 -- 4. If automatic tax calculation is OFF we assume exclusive
610 -- tax calculation.
611 --============================================================================
612 PROCEDURE Calculate_Tax_Variance(p_invoice_id IN NUMBER,
613 p_invoice_currency_code IN VARCHAR2,
614 p_tax_tolerance IN NUMBER,
615 p_tax_tol_amt_range IN NUMBER,
616 p_tax_rounding_rule IN VARCHAR2,
617 p_auto_tax_calc_flag IN VARCHAR2,
618 p_tax_var_exists IN OUT NOCOPY VARCHAR2,
619 p_out_of_tax_range_exists IN OUT NOCOPY VARCHAR2,
620 p_calling_sequence IN VARCHAR2) IS
621 BEGIN
622 NULL;
623 END Calculate_Tax_Variance;
624
625
626 --============================================================================
627 -- CHECK_HEADER_LVL_TAX_INCL_EXCL: Procedure that performs tax checks on an
628 -- invoice assuming tax calculations should
629 -- be per invoice. The calculations are
630 -- based on whether the tax should be
631 -- calculated inclusively or exclusively.
632 -- It returns via IN/OUT parameters whether
633 -- variance exists.
634 -- Parameters
635 -- p_calc_inclusive: Whether calculation should be inclusive ('Y') or
636 -- exclusive ('N')
637 -- p_invoice_id: Invoice Id
638 -- p_tax_tolerance: Tax tolerance defined.
639 -- p_tax_tol_amt_range: Tax tolerance amount range defined.
640 -- p_inv_currency_code: Invoice Currency Code
641 -- p_tax_rounding_rule: Rounding rule for tax purposes (nearest/up/down)
642 -- p_tax_rate: Tax rate
643 -- p_dist_sum: Total distribution sum for the distributions we are
644 -- analyzing i.e. distributions with the vat code being
645 -- analyzed.
646 -- p_tax_sum: The inclusive/exclusive tax total for the vat code
647 -- being analyzed.
648 -- p_tax_var_exists: IN/OUT parameter to establish whether a tax variance
649 -- exists.
650 -- p_out_of_tax_range_exists: IN/OUT parameter to establish whether out NOCOPY of tax
651 -- range variance exists.
652 --============================================================================
653 PROCEDURE Check_Header_Lvl_Tax_Incl_Excl(p_calc_inclusive IN VARCHAR2,
654 p_invoice_id IN NUMBER,
655 p_tax_tolerance IN NUMBER,
656 p_tax_tol_amt_range IN NUMBER,
657 p_inv_currency_code IN VARCHAR2,
658 p_tax_rounding_rule IN VARCHAR2,
662 p_tax_var_exists IN OUT NOCOPY VARCHAR2,
659 p_tax_rate IN NUMBER,
660 p_dist_sum IN NUMBER,
661 p_tax_sum IN NUMBER,
663 p_out_of_tax_range_exists IN OUT NOCOPY VARCHAR2,
664 p_calling_sequence IN VARCHAR2)IS
665 BEGIN
666 NULL;
667 END Check_Header_Lvl_Tax_Incl_Excl;
668
669
670 --============================================================================
671 -- CHECK_LINE_LEVEL_TAX_INCL_EXCL: Procedure that performs tax checks on an
672 -- invoice for those distribution lines where
673 -- the tax was calculated at line level.
674 -- The calculation depends on whether the tax
675 -- should be calculated inclusively or
676 -- exclusively.
677 -- It returns via IN/OUT parameters whether
678 -- variance exists
679 -- Parameters:
680 -- p_calc_inclusive: Whether calculation should be inclusive ('Y') or
681 -- exclusive ('N')
682 -- p_invoice_id: Invoice Id
683 -- p_tax_tolerance: Tax tolerance defined.
684 -- p_tax_tol_amt_range: Tax tolerance amount range defined.
685 -- p_inv_currency_code: Invoice Currency Code
686 -- p_tax_rounding_rule: Rounding rule for tax purposes (nearest/up/down)
687 -- p_tax_code_id: Tax Code Id
688 -- p_tax_rate: Tax rate
689 -- p_dist_sum: Total distribution sum for the distributions we are
690 -- analyzing i.e. distributions with the vat code being
691 -- analyzed, all either inclusive or exclusive.
692 -- p_tax_sum: The inclusive/exclusive tax total for the vat code
693 -- being analyzed.
694 -- p_tax_var_exists: IN/OUT parameter to establish whether a tax variance
695 -- exists.
696 -- p_out_of_tax_range_exists: IN/OUT parameter to establish whether out NOCOPY of tax
697 -- range variance exists.
698 --============================================================================
699 PROCEDURE Check_Line_Level_Tax_Incl_Excl(p_calc_inclusive IN VARCHAR2,
700 p_invoice_id IN NUMBER,
701 p_tax_tolerance IN NUMBER,
702 p_tax_tol_amt_range IN NUMBER,
703 p_inv_currency_code IN VARCHAR2,
704 p_tax_rounding_rule IN VARCHAR2,
705 p_tax_code_id IN NUMBER,
706 p_tax_rate IN NUMBER,
707 p_dist_sum IN NUMBER,
708 p_tax_sum IN NUMBER,
709 p_tax_var_exists IN OUT NOCOPY VARCHAR2,
710 p_out_of_tax_range_exists IN OUT NOCOPY VARCHAR2,
711 p_calling_sequence IN VARCHAR2)IS
712 BEGIN
713 NULL;
714 END Check_Line_Level_Tax_Incl_Excl;
715
716
717 --============================================================================
718 -- GET_TAX_SUM: Procedure that retrieves the tax_sum of a invoice, i.e. the
719 -- sum of all invoice tax_lines.
720 --============================================================================
721 PROCEDURE Get_Tax_Sum(p_invoice_id IN NUMBER,
722 p_tax_code_id IN NUMBER,
723 p_tax_sum IN OUT NOCOPY NUMBER,
724 p_amt_includes_tax_flag IN VARCHAR2,
725 p_calling_sequence IN VARCHAR2) IS
726 BEGIN
727 NULL;
728 END Get_Tax_Sum;
729
730
731 --============================================================================
732 -- GET_DIST_SUM: Retrieves the sum of the distribution lines that are NON
733 -- TAX lines but have a tax code.
734 --============================================================================
735 PROCEDURE Get_Dist_Sum(p_invoice_id IN NUMBER,
736 p_tax_code_id IN NUMBER,
737 p_dist_sum IN OUT NOCOPY NUMBER,
738 p_amt_includes_tax_flag IN VARCHAR2,
739 p_calling_sequence IN VARCHAR2) IS
740 BEGIN
741 NULL;
742 END Get_Dist_Sum;
743
744
745 --============================================================================
746 -- GET_TOTAL_SUM: Procedure that returns the sum of invoice distribution
747 -- lines that are NON-TAX lines.
748 --============================================================================
749 PROCEDURE Get_Total_Sum(p_invoice_id IN NUMBER,
750 p_total_sum IN OUT NOCOPY NUMBER,
751 p_calling_sequence IN VARCHAR2) IS
752 BEGIN
753 NULL;
754 END Get_Total_Sum;
755
756
757 --============================================================================
758 -- GET_INV_MATCHED_STATUS: Function given an invoice_id returns True if
759 -- the invoice has any matched distribution lines,
760 -- False otherwise
761 --============================================================================
762 FUNCTION Get_Inv_Matched_Status(p_invoice_id IN NUMBER,
763 p_calling_sequence IN VARCHAR2) RETURN BOOLEAN IS
764 BEGIN
765 NULL;
766 END Get_Inv_Matched_Status;
767
768 --============================================================================
772 PROCEDURE Manual_Withhold_Tax(p_invoice_id IN NUMBER,
769 -- MANUAL_WITHHOLD_TAX: Procedure that update payment schedules
770 -- to reflect the manual withholding amount
771 --============================================================================
773 p_last_updated_by IN NUMBER,
774 p_last_update_login IN NUMBER,
775 p_calling_sequence IN VARCHAR2) IS
776 BEGIN
777 NULL;
778 END Manual_Withhold_Tax;
779
780 --============================================================================
781 -- WITHHOLD_TAX_ON: Procedure that calls the withholding tax package on an
782 -- invoice and checks for any errors. Depending on whether
783 -- an error exists or not, a hold gets placed or released.
784 --
785 -- Parameters:
786 --
787 -- p_invoice_id: Invoice Id
788 --
789 -- p_gl_date_from_receipt: GL Date From Receipt Flag system option
790 --
791 -- p_last_updated_by: Column Who Info
792 --
793 -- p_last_update_login: Column Who Info
794 --
795 -- p_program_application_id: Column Who Info
796 --
797 -- p_program_id: Column Who Info
798 --
799 -- p_request_id: Column Who Info
800 --
801 -- p_system_user: Approval Program User Id
802 --
803 -- p_holds: Hold Array
804 --
805 -- p_holds_count: Holds Count Array
806 --
807 -- p_release_count: Release Count Array
808 --
809 -- p_calling_sequence: Debugging string to indicate path of module calls to be
810 -- printed out NOCOPY upon error.
811 --
812 -- Program Flow:
813 -- -------------
814 --
815 -- Check if okay to call Withholding Routine
816 -- invoice has at lease on distribution with a withholding tax group
817 -- invoice has not already been withheld by the system
818 -- invoice has no user non-releaseable holds (ther than AWT ERROR)
819 -- invoice has no manual withholding lines
820 -- IF okay then call AP_DO_WITHHOLDING package on the invoice
821 -- Depending on whether withholding is successful or not, place or
822 -- or release the 'AWT ERROR' with the new error reason.
823 -- (If the invoice already has the hold we want to release the old one and
824 -- replace the hold with the new error reason)
825 --============================================================================
826 PROCEDURE Withhold_Tax_On(p_invoice_id IN NUMBER,
827 p_gl_date_from_receipt IN VARCHAR2,
828 p_last_updated_by IN NUMBER,
829 p_last_update_login IN NUMBER,
830 p_program_application_id IN NUMBER,
831 p_program_id IN NUMBER,
832 p_request_id IN NUMBER,
833 p_system_user IN NUMBER,
834 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
835 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
836 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
837 p_calling_sequence IN VARCHAR2) IS
838 BEGIN
839 NULL;
840 END Withhold_Tax_On;
841
842
843 --============================================================================
844 -- UPDATE_INV_DISTS_TO_APPROVED: Procedure that updates the invoice
845 -- distribution match_status_flag to 'A'
846 -- if encumbered or has no postable holds or is a reversal line, otherwise
847 -- if the invoice has postable holds then the match_status_flag remains a
848 -- 'T'.
849 --============================================================================
850 PROCEDURE Update_Inv_Dists_To_Approved(p_invoice_id IN NUMBER,
851 p_user_id IN NUMBER,
852 p_calling_sequence IN VARCHAR2) IS
853 BEGIN
854 NULL;
855 END Update_Inv_Dists_To_Approved;
856
857 --============================================================================
858 -- HOLD Processing Routines
859 --============================================================================
860
861 --============================================================================
862 -- PROCESS_INV_HOLD_STATUS: Procedure that process and invoice hold status.
863 -- Determines whether to place or release a given
864 -- hold.
865 --
866 -- Parameters:
867 --
868 -- p_invoice_id: Invoice Id
869 --
870 -- p_line_location_id: Line Location Id
871 --
872 -- p_hold_lookup_code: Hold Lookup Code
873 --
874 -- p_should_have_hold: ('Y' or 'N') to indicate whether the invoice should
875 -- have the hold (previous parameter)
876 --
877 -- p_hold_reason: AWT ERROR parameter. The only hold whose hold reason is
878 -- not static.
879 --
880 -- p_system_user: Approval Program User Id
881 --
882 -- p_holds: Holds Array
883 --
884 -- p_holds_count: Holds Count Array
885 --
886 -- p_release_count: Release Count Array
887 --
888 -- p_calling_sequence: Debugging string to indicate path of module calls to be
889 -- printed out NOCOPY upon error.
890 --
891 -- Procedure Flow:
892 -- ---------------
893 --
894 -- Retrieve current hold_status for current hold
895 -- IF already_on_hold
896 -- IF shoould_not_have_hold OR if p_hold_reason is different from the
897 -- exists hold reason
898 -- Release the hold
899 -- ELSIF should_have_hold and hold_status <> Released By User
900 -- IF p_hold_reason is null or existing_hold_reason id different from
901 -- p_hold_reason
902 -- Place the hold on the invoice
906 p_rcv_transaction_id IN NUMBER,
903 --============================================================================
904 PROCEDURE Process_Inv_Hold_Status(p_invoice_id IN NUMBER,
905 p_line_location_id IN NUMBER,
907 p_hold_lookup_code IN VARCHAR2,
908 p_should_have_hold IN VARCHAR2,
909 p_hold_reason IN VARCHAR2,
910 p_system_user IN NUMBER,
911 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
912 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
913 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
914 p_calling_sequence IN VARCHAR2)IS
915 BEGIN
916 NULL;
917 END Process_Inv_Hold_Status;
918
919
920 --============================================================================
921 -- GET_HOLD_STATUS: Prcedure to return the hold information and status
922 -- of an invoice, whether it is ALREADY ON HOLD,
923 -- RELEASED BY USER or NOT ON HOLD.
924 --============================================================================
925 PROCEDURE Get_Hold_Status(p_invoice_id IN NUMBER,
926 p_line_location_id IN NUMBER,
927 p_rcv_transaction_id IN NUMBER,
928 p_hold_lookup_code IN VARCHAR2,
929 p_system_user IN NUMBER,
930 p_status IN OUT NOCOPY VARCHAR2,
931 p_return_hold_reason IN OUT NOCOPY VARCHAR2,
932 p_user_id IN OUT NOCOPY VARCHAR2,
933 p_resp_id IN OUT NOCOPY VARCHAR2,
934 p_calling_sequence IN VARCHAR2) IS
935 BEGIN
936 NULL;
937 END Get_Hold_Status;
938
939 --============================================================================
940 -- RELEASE_HOLD: Procedure to release a hold from an invoice and update the
941 -- the release count array.
942 --============================================================================
943 PROCEDURE Release_Hold(p_invoice_id IN NUMBER,
944 p_line_location_id IN NUMBER,
945 p_rcv_transaction_id IN NUMBER,
946 p_hold_lookup_code IN VARCHAR2,
947 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
948 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
949 p_calling_sequence IN VARCHAR2) IS
950 BEGIN
951 NULL;
952 END Release_Hold;
953
954
955 --============================================================================
956 -- SET_HOLD: Procedure to Set an Invoice on Hold and update the hold count
957 -- array.
958 --============================================================================
959 PROCEDURE Set_Hold(p_invoice_id IN NUMBER,
960 p_line_location_id IN NUMBER,
961 p_rcv_transaction_id IN NUMBER,
962 p_hold_lookup_code IN VARCHAR2,
963 p_hold_reason IN VARCHAR2,
964 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
965 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
966 p_calling_sequence IN VARCHAR2) IS
967 BEGIN
968 NULL;
969 END Set_Hold;
970
971 --============================================================================
972 -- COUNT_HOLD: Procedure given the hold_array and count_array, increments the
973 -- the count for a given hold.
974 --============================================================================
975 PROCEDURE Count_Hold(p_hold_lookup_code IN VARCHAR2,
976 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
977 p_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
978 p_calling_sequence IN VARCHAR2) IS
979 BEGIN
980 NULL;
981 END Count_Hold;
982
983 --============================================================================
984 -- GET_RELEASE_LOOKUP_FOR_HOLD: Procedure given a hold_lookup_code retunrs
985 -- the associated return_lookup_code
986 --============================================================================
987 PROCEDURE Get_Release_Lookup_For_Hold(p_hold_lookup_code IN VARCHAR2,
988 p_release_lookup_code IN OUT NOCOPY VARCHAR2,
989 p_calling_sequence IN VARCHAR2) IS
990 BEGIN
991 NULL;
992 END Get_Release_Lookup_For_Hold;
993
994
995 --============================================================================
996 -- GET_INVOICE_STATUSES: Procedure given a hold_lookup_code retunrs
997 -- the associated return_lookup_code
998 --============================================================================
999 PROCEDURE Get_Invoice_Statuses(p_invoice_id IN NUMBER,
1000 p_holds_count IN OUT NOCOPY NUMBER,
1001 p_approval_status IN OUT NOCOPY VARCHAR2,
1002 p_calling_sequence IN VARCHAR2) IS
1003 BEGIN
1004 NULL;
1005 END Get_Invoice_Statuses;
1006
1007 --
1008 --
1009 --
1010 PROCEDURE Verify_Tax_Code(p_invoice_id IN NUMBER,
1011 p_match_on_tax_flag IN VARCHAR2,
1012 p_enforce_tax_on_acct IN VARCHAR2,
1013 p_acct_tax_difference IN OUT NOCOPY VARCHAR2,
1014 p_match_tax_difference IN OUT NOCOPY VARCHAR2,
1015 p_system_user IN NUMBER,
1016 p_holds IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
1017 p_holds_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
1018 p_release_count IN OUT NOCOPY AP_APPROVAL_PKG.COUNTARRAY,
1019 p_calling_sequence IN VARCHAR2) IS
1020 BEGIN
1021 NULL;
1022 END Verify_Tax_Code;
1023
1027 p_loc IN VARCHAR2) IS
1024 -- Short-named procedure for logging
1025
1026 PROCEDURE Log(p_msg IN VARCHAR2,
1028 BEGIN
1029 NULL;
1030 END Log;
1031
1032 END IGI_APPROVAL_PKG;