DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGI_APPROVAL_PKG

Source


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,
116 				 p_invoice_currency_code     IN VARCHAR2,
113 			     p_calling_sequence		IN OUT NOCOPY VARCHAR2);
114 
115 PROCEDURE Calculate_Tax_Variance(p_invoice_id                IN NUMBER,
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,
188 			      	 p_holds		IN OUT NOCOPY AP_APPROVAL_PKG.HOLDSARRAY,
185                                  p_invoice_amount_limit      IN NUMBER,
186                                  p_hold_future_payments_flag IN VARCHAR2,
187 				 p_system_user	       	IN NUMBER,
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,
304 END Approval_Init;
301 			p_calling_sequence		IN VARCHAR2) IS
302 BEGIN
303 NULL;
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.
328 --============================================================================
329 PROCEDURE Update_Inv_Dists_To_Selected(p_invoice_id	IN NUMBER,
330 			     	     p_run_option	IN VARCHAR2,
331 			     	     p_calling_sequence	IN VARCHAR2) IS
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
444 -- does not equal to invoice amount and places or releases the hold depending
445 -- on the condition.
446 --============================================================================
447 
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,
498                         p_calling_sequence          IN VARCHAR2)IS
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,
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.
562 -- Parameters:
563 -- p_invoice_id: Id of the Invoice in question
564 -- p_invoice_currency_code: Invoice Currency
565 -- p_tax_tolerance: The % tax tolerance
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,
618                                  p_tax_var_exists          IN OUT NOCOPY VARCHAR2,
615                                  p_tax_tol_amt_range       IN NUMBER,
616                                  p_tax_rounding_rule       IN VARCHAR2,
617                                  p_auto_tax_calc_flag      IN 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,
659                                          p_tax_rate                IN NUMBER,
660 			                 p_dist_sum                IN NUMBER,
661                                          p_tax_sum                 IN NUMBER,
662                                          p_tax_var_exists          IN OUT NOCOPY VARCHAR2,
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,
726 BEGIN
723 		      p_tax_sum			IN OUT NOCOPY NUMBER,
724                       p_amt_includes_tax_flag   IN VARCHAR2,
725 		      p_calling_sequence	IN VARCHAR2) IS
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 --============================================================================
769 -- MANUAL_WITHHOLD_TAX:  Procedure that update payment schedules
770 --		                 to reflect the manual withholding amount
771 --============================================================================
772 PROCEDURE Manual_Withhold_Tax(p_invoice_id			IN NUMBER,
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 
864 -- hold.
861 --============================================================================
862 -- PROCESS_INV_HOLD_STATUS:  Procedure that process and invoice hold status.
863 --			     Determines whether to place or release a given
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
903 --============================================================================
904 PROCEDURE Process_Inv_Hold_Status(p_invoice_id 		IN NUMBER,
905 				  p_line_location_id	IN NUMBER,
906 				  p_rcv_transaction_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 
998 --============================================================================
995 --============================================================================
996 -- GET_INVOICE_STATUSES:  Procedure given a hold_lookup_code retunrs
997 --			         the associated return_lookup_code
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 
1024 -- Short-named procedure for logging
1025 
1026 PROCEDURE Log(p_msg 	IN VARCHAR2,
1027 	      p_loc	IN VARCHAR2) IS
1028 BEGIN
1029 NULL;
1030 END Log;
1031 
1032 END  IGI_APPROVAL_PKG;