1 PACKAGE AP_PREPAY_PKG AS
2 /*$Header: aprepays.pls 120.8.12010000.2 2008/08/08 03:32:22 sparames ship $*/
3
4 --==================================================================================
5 -- This record has two types of information
6 -- 1) Prepayment Invoice's distribution information (Source)
7 -- 2) PREPAY distribution's amounts/quantities information (Target)
8 -- all with the same prepay distribution id as its key. This should be declared
9 -- in the package spec.
10 --==================================================================================
11
12 TYPE Prepay_Dist_Record IS RECORD(
13
14 PREPAY_DISTRIBUTION_ID ap_invoice_distributions_all.invoice_distribution_id%TYPE,
15 PPAY_AMOUNT ap_invoice_distributions_all.amount%TYPE,
16 PPAY_BASE_AMOUNT ap_invoice_distributions_all.base_amount%TYPE,
17 PPAY_AMOUNT_REMAINING ap_invoice_distributions_all.prepay_amount_remaining%TYPE,
18 PPAY_PO_DISTRIBUTION_ID ap_invoice_distributions_all.po_distribution_id%TYPE,
19 PPAY_RCV_TRANSACTION_ID ap_invoice_distributions_all.rcv_transaction_id%TYPE,
20 PPAY_QUANTITY_INVOICED ap_invoice_distributions_all.quantity_invoiced%TYPE,
21 PPAY_STAT_AMOUNT ap_invoice_distributions_all.stat_amount%TYPE,
22 PPAY_PA_QUANTITY ap_invoice_distributions_all.pa_quantity%TYPE,
23 PREPAY_APPLY_AMOUNT ap_invoice_distributions_all.amount%TYPE,
24 PREPAY_BASE_AMOUNT ap_invoice_distributions_all.base_amount%TYPE,
25 PREPAY_BASE_AMT_PPAY_XRATE ap_invoice_distributions_all.base_amount%TYPE,
26 PREPAY_BASE_AMT_PPAY_PAY_XRATE ap_invoice_distributions_all.base_amount%TYPE,
27 PREPAY_QUANTITY_INVOICED ap_invoice_distributions_all.quantity_invoiced%TYPE,
28 PREPAY_STAT_AMOUNT ap_invoice_distributions_all.stat_amount%TYPE,
29 PREPAY_PA_QUANTITY ap_invoice_distributions_all.pa_quantity%TYPE,
30 PREPAY_ACCOUNTING_DATE ap_invoice_distributions_all.accounting_date%TYPE,
31 PREPAY_PERIOD_NAME ap_invoice_distributions_all.period_name%TYPE,
32 PREPAY_DIST_LINE_NUMBER ap_invoice_distributions_all.distribution_line_number%TYPE,
33 PREPAY_GLOBAL_ATTR_CATEGORY ap_invoice_distributions_all.global_attribute_category%TYPE,
34 PREPAY_MATCHING_BASIS po_line_types.matching_basis%TYPE,
35 LINE_TYPE_LOOKUP_CODE ap_invoice_distributions.line_type_lookup_code%TYPE,
36 CHARGE_APPLICABLE_TO_DIST_ID ap_invoice_distributions_all.invoice_distribution_id%TYPE,
37 RELATED_ID ap_invoice_distributions_all.invoice_distribution_id%TYPE,
38 PARENT_CHRG_APPL_TO_DIST_ID ap_invoice_distributions_all.invoice_distribution_id%TYPE,
39 PARENT_RELATED_ID ap_invoice_distributions_all.invoice_distribution_id%TYPE,
40 INVOICE_DISTRIBUTION_ID ap_invoice_distributions_all.invoice_distribution_id%TYPE);
41
42 --================================================================================
43 -- This is the GLOBAL PL/SQL table type to be declared in the Package Spec
44 --================================================================================
45
46 TYPE Prepay_Dist_Tab_Type IS TABLE OF Prepay_Dist_Record
47 INDEX BY BINARY_INTEGER;
48
49 --================================================================================
50 -- PL/SQL table will have the prepayment invoice_id, line number and apply amount
51 -- information. This will be used by the application logic to apply the prepayment.
52 --================================================================================
53
54 TYPE Prepay_Appl_Rec IS RECORD (
55 PREPAY_INVOICE_ID ap_invoices_all.invoice_id%TYPE,
56 PREPAY_LINE_NUM ap_invoice_lines_all.line_number%TYPE,
57 PREPAY_APPLY_AMOUNT ap_invoice_lines_all.amount%TYPE);
58
59 TYPE Prepay_Appl_Tab IS TABLE of Prepay_Appl_Rec INDEX BY BINARY_INTEGER;
60
61 TYPE Prepay_Appl_Log_Rec IS RECORD (
62 PREPAY_INVOICE_ID AP_INVOICES_ALL.INVOICE_ID%TYPE,
63 PREPAY_LINE_NUM AP_INVOICE_LINES_ALL.LINE_NUMBER%TYPE,
64 PREPAY_APPLY_AMOUNT AP_INVOICE_LINES_ALL.AMOUNT%TYPE,
65 SUCCESS VARCHAR2(1),
66 ERROR_MESSAGE VARCHAR2(2000));
67
68 TYPE Prepay_Appl_Log_Tab IS TABLE OF Prepay_Appl_Log_Rec INDEX BY BINARY_INTEGER;
69
70
71 FUNCTION Check_Supplier_Consistency (
72 p_prepay_num IN VARCHAR2,
73 p_vendor_id IN NUMBER) RETURN VARCHAR2;
74
75 FUNCTION Check_Currency_Consistency (
76 p_prepay_num IN VARCHAR2,
77 p_vendor_id IN NUMBER,
78 p_base_currency_code IN VARCHAR2,
79 p_invoice_currency_code IN VARCHAR2,
80 p_payment_currency_code IN VARCHAR2) RETURN VARCHAR2 ;
81
82
83 FUNCTION Check_Prepayment_Invoice (
84 p_prepay_num IN VARCHAR2,
85 p_vendor_id IN VARCHAR2,
86 p_prepay_invoice_id OUT NOCOPY NUMBER) RETURN VARCHAR2 ;
87
88
89 FUNCTION Check_Prepayment_Line (
90 p_prepay_num IN VARCHAR2,
91 p_prepay_line_num IN NUMBER,
92 p_vendor_id IN NUMBER) RETURN VARCHAR2 ;
93
94 FUNCTION Check_Nothing_To_Apply_Line (
95 p_prepay_invoice_id IN NUMBER,
96 p_prepay_line_num IN NUMBER) RETURN VARCHAR2 ;
97
98
99 FUNCTION Check_Nothing_To_Apply_Invoice (
100 p_prepay_invoice_id IN NUMBER) RETURN VARCHAR2 ;
101
102
103 FUNCTION Check_Nothing_To_Apply_Vendor (
104 p_vendor_id IN NUMBER) RETURN VARCHAR2 ;
105
106
107 FUNCTION Check_Period_Status (
108 p_prepay_gl_date IN OUT NOCOPY DATE,
109 p_prepay_period_name IN OUT NOCOPY VARCHAR2) RETURN VARCHAR2 ;
110
111 FUNCTION Validate_Prepay_Info (
112 p_prepay_case_name IN VARCHAR2,
113 p_prepay_num IN OUT NOCOPY VARCHAR2,
114 p_prepay_line_num IN OUT NOCOPY NUMBER,
115 p_prepay_apply_amount IN OUT NOCOPY NUMBER, -- Bug 7004765
116 p_invoice_amount IN NUMBER,
117 p_prepay_gl_date IN OUT NOCOPY DATE,
118 p_prepay_period_name IN OUT NOCOPY VARCHAR2,
119 p_vendor_id IN NUMBER,
120 p_import_invoice_id IN NUMBER,
121 p_source IN VARCHAR2,
122 p_apply_advances_flag IN VARCHAR2,
123 p_invoice_date IN DATE,
124 p_base_currency_code IN VARCHAR2,
125 p_invoice_currency_code IN VARCHAR2,
126 p_payment_currency_code IN VARCHAR2,
127 p_calling_sequence IN VARCHAR2,
128 p_prepay_invoice_id OUT NOCOPY NUMBER,
129 p_invoice_type_lookup_code IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2 ; -- Bug 7004765
130
131 FUNCTION Get_Prepay_Case_Name (
132 p_prepay_num IN VARCHAR2,
133 p_prepay_line_num IN NUMBER,
134 p_prepay_apply_amount IN NUMBER,
135 p_source IN VARCHAR2,
136 p_apply_advances_flag IN VARCHAR2,
137 p_calling_sequence IN VARCHAR2) RETURN VARCHAR2;
138
139 FUNCTION get_prepay_apply_amount(
140 p_prepay_case_name IN VARCHAR2,
141 p_prepay_invoice_id IN NUMBER,
142 P_prepay_line_num IN NUMBER,
143 p_prepay_apply_amount IN NUMBER,
144 p_invoice_id IN NUMBER,
145 p_vendor_id IN NUMBER,
146 p_prepay_included IN VARCHAR2) RETURN NUMBER;
147
148 PROCEDURE Select_Lines_For_Application (
149 p_prepay_case_name IN VARCHAR2,
150 p_prepay_invoice_id IN NUMBER,
151 p_prepay_line_num IN NUMBER,
152 p_apply_amount IN NUMBER,
153 p_vendor_id IN NUMBER,
154 p_calling_sequence IN VARCHAR2,
155 p_request_id IN NUMBER,
156 p_prepay_appl_info OUT NOCOPY ap_prepay_pkg.prepay_appl_tab);
157
158 FUNCTION Check_Prepay_Info_Import (
159 p_prepay_num IN OUT NOCOPY VARCHAR2,
160 p_prepay_line_num IN OUT NOCOPY NUMBER,
161 p_prepay_apply_amount IN OUT NOCOPY NUMBER, -- Bug 7004765
162 p_invoice_amount IN NUMBER,
163 p_prepay_gl_date IN OUT NOCOPY DATE,
164 p_prepay_period_name IN OUT NOCOPY VARCHAR2,
165 p_vendor_id IN NUMBER,
166 p_prepay_included IN VARCHAR2,
167 p_import_invoice_id IN NUMBER,
168 p_source IN VARCHAR2,
169 p_apply_advances_flag IN VARCHAR2,
170 p_invoice_date IN DATE,
171 p_base_currency_code IN VARCHAR2,
172 p_invoice_currency_code IN VARCHAR2,
173 p_payment_currency_code IN VARCHAR2,
174 p_calling_sequence IN VARCHAR2,
175 p_request_id IN NUMBER,
176 p_prepay_case_name OUT NOCOPY VARCHAR2,
177 p_prepay_invoice_id OUT NOCOPY NUMBER,
178 p_invoice_type_lookup_code IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2; -- Bug 7004765
179
180 PROCEDURE Get_Prepay_Info_Import (
181 p_prepay_case_name IN VARCHAR2,
182 p_prepay_invoice_id IN NUMBER,
183 p_prepay_num IN VARCHAR2,
184 p_prepay_line_num IN NUMBER,
185 p_prepay_apply_amount IN NUMBER,
186 p_prepay_included IN VARCHAR2,
187 p_import_invoice_id IN NUMBER,
188 p_vendor_id IN NUMBER,
189 p_request_id IN NUMBER,
190 p_prepay_appl_info OUT NOCOPY ap_prepay_pkg.prepay_appl_tab,
191 p_calling_sequence IN VARCHAR2);
192
193 PROCEDURE Apply_Prepay_Import (
194 p_prepay_invoice_id IN NUMBER,
195 p_prepay_num IN VARCHAR2,
196 p_prepay_line_num IN NUMBER,
197 p_prepay_apply_amount IN NUMBER,
198 p_prepay_case_name IN VARCHAR2,
199 p_import_invoice_id IN NUMBER,
200 p_request_id IN NUMBER,
201 p_invoice_id IN NUMBER,
202 p_vendor_id IN NUMBER,
203 p_prepay_gl_date IN DATE,
204 p_prepay_period_name IN VARCHAR2,
205 p_prepay_included IN VARCHAR2,
206 p_user_id IN NUMBER,
207 p_last_update_login IN NUMBER,
208 p_calling_sequence IN VARCHAR2,
209 p_prepay_appl_log OUT NOCOPY ap_prepay_pkg.Prepay_Appl_Log_Tab);
210
211
212 FUNCTION Apply_Prepay_Line (
213 P_PREPAY_INVOICE_ID IN NUMBER,
214 P_PREPAY_LINE_NUM IN NUMBER,
215 P_PREPAY_DIST_INFO IN OUT NOCOPY AP_PREPAY_PKG.PREPAY_DIST_TAB_TYPE,
216 P_PRORATE_FLAG IN VARCHAR2,
217 P_INVOICE_ID IN NUMBER,
218 P_INVOICE_LINE_NUMBER IN NUMBER DEFAULT NULL,
219 P_APPLY_AMOUNT IN NUMBER,
220 P_GL_DATE IN DATE,
221 P_PERIOD_NAME IN VARCHAR2,
222 P_PREPAY_INCLUDED IN VARCHAR2,
223 P_USER_ID IN NUMBER,
224 P_LAST_UPDATE_LOGIN IN NUMBER,
225 P_CALLING_SEQUENCE IN VARCHAR2,
226 P_CALLING_MODE IN VARCHAR2 DEFAULT 'PREPAYMENT APPLICATION',
227 P_ERROR_MESSAGE OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
228
229
230 FUNCTION Insert_Prepay_Line(
231 p_prepay_invoice_id IN NUMBER,
232 p_prepay_line_num IN NUMBER,
233 p_invoice_id IN NUMBER,
234 p_prepay_line_number IN NUMBER,
235 p_amount_to_apply IN NUMBER,
236 p_base_amount_to_apply IN NUMBER,
237 p_gl_date IN DATE,
238 p_period_name IN VARCHAR2,
239 p_prepay_included IN VARCHAR2,
240 p_quantity_invoiced IN NUMBER,
241 p_stat_amount IN NUMBER,
242 p_pa_quantity IN NUMBER,
243 p_user_id IN NUMBER,
244 p_last_update_login IN NUMBER,
245 p_calling_sequence IN VARCHAR2,
246 p_error_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
247
248
249 FUNCTION Insert_Prepay_Dists(
250 P_prepay_invoice_id IN NUMBER,
251 P_prepay_line_num IN NUMBER,
252 P_invoice_id IN NUMBER,
253 P_batch_id IN NUMBER,
254 P_line_number IN NUMBER,
255 P_prepay_dist_info IN OUT NOCOPY AP_PREPAY_PKG.Prepay_Dist_Tab_Type,
256 P_user_id IN NUMBER,
257 P_last_update_login IN NUMBER,
258 P_calling_sequence IN VARCHAR2,
259 P_error_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
260
261
262 FUNCTION Update_Prepayment(
263 P_prepay_dist_info IN AP_PREPAY_PKG.Prepay_Dist_Tab_Type,
264 P_prepay_invoice_id IN NUMBER,
265 P_prepay_line_num IN NUMBER,
266 P_invoice_id IN NUMBER,
267 P_invoice_line_num IN NUMBER,
268 P_appl_type IN VARCHAR2,
269 P_calling_mode IN VARCHAR2 DEFAULT 'PREPAYMENT APPLICATION',
270 P_calling_sequence IN VARCHAR2,
271 P_error_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
272
273
274 FUNCTION Update_PO_Receipt_Info(
275 P_prepay_dist_info IN AP_PREPAY_PKG.Prepay_Dist_Tab_Type,
276 p_prepay_invoice_id IN NUMBER,
277 p_prepay_line_num IN NUMBER,
278 P_invoice_id IN NUMBER,
279 P_invoice_line_num IN NUMBER,
280 P_po_line_location_id IN NUMBER,
281 P_matched_UOM_lookup_code IN VARCHAR2,
282 P_appl_type IN VARCHAR2,
283 P_match_basis IN VARCHAR2,
284 P_calling_sequence IN VARCHAR2,
285 P_error_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
286
287 -- Bug 4935951
288 -- Added a new paremeter p_calling_mode so that the updates to ap_invoices
289 -- will be skipped when invoked in the context of Recoupment. These updates
290 -- will be handled in the invoice workbench after the control returns from
291 -- the matching form.
292
293 FUNCTION Update_Payment_Schedule(
294 P_invoice_id IN NUMBER,
295 P_prepay_invoice_id IN NUMBER,
296 P_prepay_line_num IN NUMBER,
297 P_apply_amount IN NUMBER,
298 P_appl_type IN VARCHAR2,
299 P_payment_currency_code IN VARCHAR2,
300 P_user_id IN NUMBER,
301 P_last_update_login IN NUMBER,
302 P_calling_sequence IN VARCHAR2,
303 P_calling_mode IN VARCHAR2 DEFAULT NULL,
304 P_error_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
305
306 -- Bug 5056104 -- remove obsolete function Update_Rounding_Amounts
307 --FUNCTION Update_Rounding_Amounts (
308 -- P_prepay_invoice_id IN NUMBER,
309 -- P_prepay_line_num IN NUMBER,
310 -- P_invoice_id IN NUMBER,
311 -- P_line_number IN NUMBER,
312 -- P_final_application IN VARCHAR2,
313 -- P_Calling_Sequence IN VARCHAR2 DEFAULT NULL,
314 -- P_error_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
315
316
317 FUNCTION Unapply_Prepay_Line (
318 P_PREPAY_INVOICE_ID IN NUMBER,
319 P_PREPAY_LINE_NUM IN NUMBER,
320 P_INVOICE_ID IN NUMBER,
321 P_LINE_NUM IN NUMBER,
322 P_UNAPPLY_AMOUNT IN NUMBER,
323 P_GL_DATE IN DATE,
324 P_PERIOD_NAME IN VARCHAR2,
325 P_PREPAY_INCLUDED IN VARCHAR2,
326 P_USER_ID IN NUMBER,
327 P_LAST_UPDATE_LOGIN IN NUMBER,
328 P_CALLING_SEQUENCE IN VARCHAR2,
329 P_ERROR_MESSAGE OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
330
331
332 FUNCTION Apply_Prepay_FR_Prepay(
333 p_invoice_id IN NUMBER,
334 p_prepay_num IN VARCHAR2,
335 p_vendor_id IN NUMBER,
336 p_prepay_apply_amount IN NUMBER,
337 p_prepay_gl_date IN DATE,
338 p_prepay_period_name IN VARCHAR2,
339 p_user_id IN NUMBER,
340 p_last_update_login IN NUMBER,
341 p_calling_sequence IN VARCHAR2,
342 p_error_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
343
344
345 END AP_PREPAY_PKG;