DBA Data[Home] [Help]

PACKAGE BODY: APPS.AR_REFUNDS_PVT

Source


1 PACKAGE BODY AR_REFUNDS_PVT AS
2 /* $Header: ARXVREFB.pls 120.14 2010/07/13 14:50:23 npanchak ship $ */
3 
4 /*=======================================================================+
5  |  Package Global Constants
6  +=======================================================================*/
7 
8   g_source              VARCHAR2(30);
9   PG_DEBUG 		VARCHAR2(1);
10 
11 /*========================================================================
12  | Local Functions and Procedures
13  *=======================================================================*/
14 
15 PROCEDURE debug (p_string VARCHAR2) IS
16 
17 BEGIN
18 
19     IF (g_source = 'AUTOINVOICE') THEN
20       fnd_file.put_line
21       ( which => fnd_file.log,
22         buff  => p_string );
23     ELSE
24       arp_standard.debug(p_string);
25     END IF;
26 
27 END debug;
28 
29 /*========================================================================
30  | PUBLIC PROCEDURES AND FUNCTIONS
31  *=======================================================================*/
32 
33 /*========================================================================
34  | PUBLIC PROCEDURE Create_Refund
35  |
36  | DESCRIPTION
37  |      ----------------------------------------
38  |      This procedure creates a refund payment in Oracle Payments
39  |	via AP interface tables and APIs
40  |
41  | CALLED FROM PROCEDURES/FUNCTIONS (local to this package body)
42  |
43  |
44  | CALLS PROCEDURES/FUNCTIONS (local to this package body)
45  |
46  | PARAMETERS
47  |
48  | KNOWN ISSUES
49  |
50  | NOTES
51  |
52  | MODIFICATION HISTORY
53  | Date        Author   Description of Changes
54  | 06-DEC-2005 JBECKETT Created
55  |
56  *=======================================================================*/
57 PROCEDURE create_refund(
58                  p_receivable_application_id    IN  ar_receivable_applications.receivable_application_id%TYPE
59 		,p_amount			IN  NUMBER
60 		,p_currency_code		IN  fnd_currencies.currency_code%TYPE
61 		,p_exchange_rate		IN  NUMBER
62 		,p_exchange_rate_type		IN  ar_cash_receipts.exchange_rate_type%TYPE
63 		,p_exchange_date		IN  DATE
64 		,p_description			IN  VARCHAR2
65           	,p_pay_group_lookup_code	IN  FND_LOOKUPS.lookup_code%TYPE
66           	,p_pay_alone_flag		IN  VARCHAR2
67 		,p_org_id			IN  ar_cash_receipts.org_id%TYPE
68 	  	,p_legal_entity_id        	IN  ar_cash_receipts.legal_entity_id%TYPE
69           	,p_payment_method_code		IN  ap_invoices.payment_method_code%TYPE
70           	,p_payment_reason_code		IN  ap_invoices.payment_reason_code%TYPE
71           	,p_payment_reason_comments	IN  ap_invoices.payment_reason_comments%TYPE
72           	,p_delivery_channel_code	IN  ap_invoices.delivery_channel_code%TYPE
73           	,p_remittance_message1		IN  ap_invoices.remittance_message1%TYPE
74           	,p_remittance_message2		IN  ap_invoices.remittance_message2%TYPE
75           	,p_remittance_message3		IN  ap_invoices.remittance_message3%TYPE
76           	,p_party_id			IN  hz_parties.party_id%TYPE
77           	,p_party_site_id		IN  hz_party_sites.party_site_id%TYPE
78 		,p_bank_account_id		IN  ar_cash_receipts.customer_bank_account_id%TYPE
79 		,p_called_from			IN  VARCHAR2
80 		,x_invoice_id			OUT NOCOPY ap_invoices.invoice_id%TYPE
81 		,x_return_status		OUT NOCOPY VARCHAR2
82 		,x_msg_count			OUT NOCOPY NUMBER
83 		,x_msg_data			OUT NOCOPY VARCHAR2
84 		,p_invoice_date			IN  ap_invoices.invoice_date%TYPE DEFAULT NULL -- Bug 7242125
85 		------------------------------- Bug7525965 Changes Start Here ------------------------------
86 		,p_payment_priority		IN  ap_invoices_interface.PAYMENT_PRIORITY%TYPE DEFAULT NULL
87 		,p_terms_id			IN  ap_invoices_interface.TERMS_ID%TYPE DEFAULT NULL
88 		------------------------------- Bug7525965 Changes End Here --------------------------------
89 		,p_gl_date			IN  DATE DEFAULT NULL)  --Bug8283120
90 IS
91   l_External_Payee_Tab IBY_DISBURSEMENT_SETUP_PUB.External_Payee_Tab_Type;
92   l_Ext_Payee_ID_Tab IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_ID_Tab_Type;
93   l_Ext_Payee_Create_Tab IBY_DISBURSEMENT_SETUP_PUB.Ext_Payee_Create_Tab_Type;
94   l_payee_return_status VARCHAR2(1);
95   l_rowid		VARCHAR2(100);
96   l_line_rowid		VARCHAR2(100);
97   l_invoice_interface_id		NUMBER;
98   l_invoice_line_interface_id		NUMBER;
99   l_rejection_list      AP_IMPORT_INVOICES_PKG.rejection_tab_type;
100   l_app_rec  ar_receivable_applications%ROWTYPE;
101   l_activity_ccid      gl_code_combinations.code_combination_id%TYPE;
102   l_goods_received_date DATE DEFAULT NULL ;
103   l_invoice_received_date DATE DEFAULT NULL ;
104   l_terms_date_basis   VARCHAR2(100);
105 
106   --Bug9864372
107   l_payee_rec 		  IBY_DISBURSEMENT_SETUP_PUB.PayeeContext_Rec_Type;
108   l_pay_instr_rec 	  IBY_FNDCPT_SETUP_PUB.PmtInstrument_rec_type;
109   l_pay_assign_rec 	  IBY_FNDCPT_SETUP_PUB.PmtInstrAssignment_rec_type;
110   l_assign_id 		  NUMBER;
111   l_response		  IBY_FNDCPT_COMMON_PUB.Result_rec_type;
112   l_assign_return_status  VARCHAR2(1);
113 
114 
115 BEGIN
116 
117   debug('ar_refund_pvt.create_refund()+');
118   g_source := p_called_from;
119 
120   -- bug90321132
121 
122  select
123  ra.code_combination_id
124  INTO   l_activity_ccid
125  from ar_receivable_applications ra
126  where ra.status='ACTIVITY'
127  and ra.display = 'Y'
128  AND ra.receivable_application_id = p_receivable_application_id;
129 
130   /* Create a payee record if one does not exist..*/
131   l_External_Payee_Tab(0).Payee_Party_Id := p_party_id;
132   l_External_Payee_Tab(0).Payee_Party_Site_Id := p_party_site_id;
133   l_External_Payee_Tab(0).Payer_Org_Id := p_org_id;
134   l_External_Payee_Tab(0).Payer_Org_Type := 'OPERATING_UNIT';
135   l_External_Payee_Tab(0).Payment_Function := 'AR_CUSTOMER_REFUNDS';
136   l_External_Payee_Tab(0).Exclusive_Pay_Flag := p_pay_alone_flag;
137   l_External_Payee_Tab(0).Default_pmt_method := p_payment_method_code;
138   l_External_Payee_Tab(0).Delivery_Channel := p_delivery_channel_code;
139 
140   /* Bug 8303937 */
141   IF p_party_site_id IS NULL  THEN
142 	l_External_Payee_Tab(0).Payer_Org_Id := NULL;
143 	l_External_Payee_Tab(0).Payer_Org_Type := NULL;
144   END IF;
145 
146   debug('Calling IBY_DISBURSEMENT_SETUP_PUB.create_external_payee..');
147   IBY_DISBURSEMENT_SETUP_PUB.Create_External_Payee (
148              p_api_version           => 1.0,
149              p_init_msg_list         => FND_API.G_FALSE,
150              p_ext_payee_tab         => l_External_Payee_Tab,
151              x_return_status         => l_payee_return_status,
152              x_msg_count             => x_msg_count,
153              x_msg_data              => x_msg_data,
154              x_ext_payee_id_tab      => l_Ext_Payee_ID_Tab,
155              x_ext_payee_status_tab  => l_Ext_Payee_Create_Tab);
156   IF (l_payee_return_status <> FND_API.g_ret_sts_success  OR
157       l_ext_payee_create_tab(0).payee_creation_status = 'E') THEN
158       x_return_status := FND_API.G_RET_STS_ERROR;
159       debug('Error found creating an external payee');
160       debug('Payee creation status : '||l_ext_payee_create_tab(0).payee_creation_status);
161       debug('Payee creation error : '||l_ext_payee_create_tab(0).payee_creation_msg);
162       RAISE FND_API.G_EXC_ERROR;
163   END IF;
164 
165   IF p_bank_account_id IS NOT NULL THEN
166 	  l_payee_rec.Payment_Function   := 'AR_CUSTOMER_REFUNDS';
167 	  l_payee_rec.Party_id   := p_party_id;
168 	  l_payee_rec.Party_Site_id   := p_party_site_id;
169 	  l_payee_rec.org_Id   := p_org_id;
170 	  l_payee_rec.Supplier_Site_id   := NULL;
171 	  l_payee_rec.Org_Type   := 'OPERATING_UNIT';
172 
173 	    IF p_party_site_id IS NULL  THEN
174 		l_payee_rec.org_Id := NULL;
175 		l_payee_rec.Org_Type := NULL;
176 	    END IF;
177 
178 	  l_pay_instr_rec.Instrument_Type := 'BANKACCOUNT';
179 	  l_pay_instr_rec.Instrument_Id   := p_bank_account_id;
180 
181 	  l_pay_assign_rec.Instrument   := l_pay_instr_rec;
182 	  l_pay_assign_rec.Priority   := 1;
183 	  l_pay_assign_rec.Start_Date   := SYSDATE;
184 	  l_pay_assign_rec.End_Date   := NULL;
185 
186 	 IBY_DISBURSEMENT_SETUP_PUB.Set_Payee_Instr_Assignment(
187 		     p_api_version           => 1.0,
188 		     p_init_msg_list         => FND_API.G_FALSE,
189 		     p_commit		     => FND_API.G_FALSE,
190 		     x_return_status         => l_assign_return_status,
191 		     x_msg_count             => x_msg_count,
192 		     x_msg_data              => x_msg_data,
193 		     p_payee                 => l_payee_rec,
194 		     p_assignment_attribs    => l_pay_assign_rec,
195 		     x_assign_id             => l_assign_id,
196 		     x_response              => l_response);
197 
198 	  IF (l_assign_return_status <> FND_API.g_ret_sts_success) THEN
199 	      	 x_return_status := FND_API.G_RET_STS_ERROR;
200 	      debug('Error found assinging  Bank account id to an external payee');
201 	      RAISE FND_API.G_EXC_ERROR;
202 	  END IF;
203   END IF;
204 
205   /* First populate AP interface table..*/
206   debug('Calling AP_INVOICES_INTERFACE_PKG.INSERT_ROW..');
207 
208   SELECT ap_invoices_interface_s.NEXTVAL
209   INTO   l_invoice_interface_id
210   FROM   DUAL;
211 
212   SELECT ap_invoice_lines_interface_s.NEXTVAL
213   INTO   l_invoice_line_interface_id
214   FROM   DUAL;
215 
216   -- bug 8764872
217 
218  SELECT  terms_date_basis
219   INTO l_terms_date_basis
220   FROM ap_product_setup;
221 
222  if l_terms_date_basis = 'Goods Received'
223 
224 then
225 l_goods_received_date := p_invoice_date;
226 
227 end if;
228 
229 if l_terms_date_basis = 'Invoice Received'
230 
231 then
232 l_invoice_received_date := p_invoice_date;
233 
234 end if;
235 
236   AP_INVOICES_INTERFACE_PKG.INSERT_ROW (
237           X_ROWID                        => l_rowid ,
238           X_INVOICE_ID                   => l_invoice_interface_id,
239           X_INVOICE_NUM                  => l_invoice_interface_id,
240           X_INVOICE_TYPE_LOOKUP_CODE     => 'PAYMENT REQUEST',
241           X_INVOICE_DATE                 => p_invoice_date,
242           X_PO_NUMBER                    => NULL,
243           X_VENDOR_ID                    => NULL,
244           X_VENDOR_SITE_ID               => NULL,
245           X_INVOICE_AMOUNT               => p_amount,
246           X_INVOICE_CURRENCY_CODE        => p_currency_code,
247           X_PAYMENT_CURRENCY_CODE        => p_currency_code,
248           X_PAYMENT_CROSS_RATE           => NULL,
249           X_PAYMENT_CROSS_RATE_TYPE      => NULL,
250           X_PAYMENT_CROSS_RATE_DATE      => NULL,
251           X_EXCHANGE_RATE                => p_exchange_rate,
252           X_EXCHANGE_RATE_TYPE           => p_exchange_rate_type,
253           X_EXCHANGE_DATE                => p_exchange_date,
254           X_TERMS_ID                     => p_terms_id,	   --Bug7525965
255           X_DESCRIPTION                  => p_description, --rct comments
256           X_AWT_GROUP_ID                 => NULL,
257           X_AMT_APPLICABLE_TO_DISCOUNT   => NULL,
258           X_ATTRIBUTE_CATEGORY           => NULL,
259           X_ATTRIBUTE1                   => NULL,
260           X_ATTRIBUTE2                   => NULL,
261           X_ATTRIBUTE3                   => NULL,
262           X_ATTRIBUTE4                   => NULL,
263           X_ATTRIBUTE5                   => NULL,
264           X_ATTRIBUTE6                   => NULL,
265           X_ATTRIBUTE7                   => NULL,
266           X_ATTRIBUTE8                   => NULL,
267           X_ATTRIBUTE9                   => NULL,
268           X_ATTRIBUTE10                  => NULL,
269           X_ATTRIBUTE11                  => NULL,
270           X_ATTRIBUTE12                  => NULL,
271           X_ATTRIBUTE13                  => NULL,
272           X_ATTRIBUTE14                  => NULL,
273           X_ATTRIBUTE15                  => NULL,
274           X_GLOBAL_ATTRIBUTE_CATEGORY    => NULL,
275           X_GLOBAL_ATTRIBUTE1            => NULL,
276           X_GLOBAL_ATTRIBUTE2            => NULL,
277           X_GLOBAL_ATTRIBUTE3            => NULL,
278           X_GLOBAL_ATTRIBUTE4            => NULL,
279           X_GLOBAL_ATTRIBUTE5            => NULL,
280           X_GLOBAL_ATTRIBUTE6            => NULL,
281           X_GLOBAL_ATTRIBUTE7            => NULL,
282           X_GLOBAL_ATTRIBUTE8            => NULL,
283           X_GLOBAL_ATTRIBUTE9            => NULL,
284           X_GLOBAL_ATTRIBUTE10           => NULL,
285           X_GLOBAL_ATTRIBUTE11           => NULL,
286           X_GLOBAL_ATTRIBUTE12           => NULL,
287           X_GLOBAL_ATTRIBUTE13           => NULL,
288           X_GLOBAL_ATTRIBUTE14           => NULL,
289           X_GLOBAL_ATTRIBUTE15           => NULL,
290           X_GLOBAL_ATTRIBUTE16           => NULL,
291           X_GLOBAL_ATTRIBUTE17           => NULL,
292           X_GLOBAL_ATTRIBUTE18           => NULL,
293           X_GLOBAL_ATTRIBUTE19           => NULL,
294           X_GLOBAL_ATTRIBUTE20           => NULL,
295           X_STATUS                       => NULL,
296           X_SOURCE                       => 'Receivables',
297           X_GROUP_ID                     => NULL,
298           X_WORKFLOW_FLAG                => NULL,
299           X_DOC_CATEGORY_CODE            => NULL,
300           X_VOUCHER_NUM                  => NULL,
301           X_PAY_GROUP_LOOKUP_CODE        => p_pay_group_lookup_code,
302           X_GOODS_RECEIVED_DATE          => l_goods_received_date,  -- bug 8764872
303           X_INVOICE_RECEIVED_DATE        => l_invoice_received_date,
304           X_GL_DATE                      => p_gl_date,	--Bug8283120
305           X_ACCTS_PAY_CCID               => NULL,
306           X_EXCLUSIVE_PAYMENT_FLAG       => p_pay_alone_flag,
307           X_INVOICE_INCLUDES_PREPAY_FLAG => NULL,
308           X_PREPAY_NUM                   => NULL,
309           X_PREPAY_APPLY_AMOUNT          => NULL,
310           X_PREPAY_GL_DATE               => NULL,
311           X_CREATION_DATE                => SYSDATE,
312           X_CREATED_BY                   => fnd_global.user_id,
313           X_LAST_UPDATE_DATE             => SYSDATE,
314           X_LAST_UPDATED_BY              => fnd_global.user_id,
315           X_LAST_UPDATE_LOGIN            => fnd_global.login_id,
316           X_ORG_ID                       => p_org_id,
317           X_TERMS_DATE                   => NULL,
318           X_REQUESTER_ID                 => NULL,
319 	  X_CONTROL_AMOUNT  		 => NULL,
320 	  X_LEGAL_ENTITY_ID		 => p_legal_entity_id,
321           x_PAYMENT_METHOD_CODE          => p_payment_method_code ,
322           x_PAYMENT_REASON_CODE          => p_payment_reason_code ,
323           X_PAYMENT_REASON_COMMENTS      => p_payment_reason_comments,
324           x_DELIVERY_CHANNEL_CODE        => p_delivery_channel_code ,
325           x_remittance_message1          => p_remittance_message1 ,
326           x_remittance_message2          => p_remittance_message2,
327           x_remittance_message3          => p_remittance_message3,
328           X_APPLICATION_ID               => 222,
329           X_PRODUCT_TABLE                => 'AR_RECEIVABLE_APPLICATIONS_ALL',
330           X_REFERENCE_KEY1               => p_receivable_application_id,
331           X_REFERENCE_KEY2               => 'AR_RECEIVABLE_APPLICATIONS_ALL',
332           X_REFERENCE_KEY3               => NULL,
333           X_REFERENCE_KEY4               => NULL,
334           X_REFERENCE_KEY5               => NULL,
335           X_PARTY_ID                     => p_party_id,
336           X_PARTY_SITE_ID                => p_party_site_id,
337           X_PAY_PROC_TRXN_TYPE_CODE      => NULL,
338           X_PAYMENT_FUNCTION             => 'AR_CUSTOMER_REFUNDS',
339           X_PAYMENT_PRIORITY             => p_payment_priority,  -- Bug7525965
340           x_external_bank_account_id     => p_bank_account_id
341   );
342 
343   /* Next populate AP lines interface table..*/
344   debug('Calling AP_INVOICES_LINES_INTERFACE_PKG.INSERT_ROW..');
345 
346   AP_INVOICE_LINES_INTERFACE_PKG.INSERT_ROW(
347           X_ROWID                        => l_line_rowid,
348           X_INVOICE_ID                   => l_invoice_interface_id,
349           X_INVOICE_LINE_ID              => l_invoice_line_interface_id,
350           X_LINE_NUMBER                  => 1,
351           X_LINE_TYPE_LOOKUP_CODE        => 'ITEM',
352           X_LINE_GROUP_NUMBER            => NULL,
353           X_AMOUNT                       => p_amount,
354           X_ACCOUNTING_DATE              => NULL,
355           X_DESCRIPTION                  => p_description,
356           X_PRORATE_ACROSS_FLAG          => NULL,
357           X_TAX_CODE                     => NULL,
358           X_TAX_CODE_ID                  => NULL,
359           X_FINAL_MATCH_FLAG             => NULL,
360           X_PO_HEADER_ID                 => NULL,
361           X_PO_LINE_ID                   => NULL,
362           X_PO_LINE_LOCATION_ID          => NULL,
363           X_PO_DISTRIBUTION_ID           => NULL,
364           X_UNIT_OF_MEAS_LOOKUP_CODE     => NULL,
365           X_INVENTORY_ITEM_ID            => NULL,
366           X_QUANTITY_INVOICED            => NULL,
367           X_UNIT_PRICE                   => NULL,
368           X_DISTRIBUTION_SET_ID          => NULL,
369           X_DIST_CODE_CONCATENATED       => NULL,
370           X_DIST_CODE_COMBINATION_ID     => l_activity_ccid,
371           X_AWT_GROUP_ID                 => NULL,
372           X_ATTRIBUTE_CATEGORY           => NULL,
373           X_ATTRIBUTE1                   => NULL,
374           X_ATTRIBUTE2                   => NULL,
375           X_ATTRIBUTE3                   => NULL,
376           X_ATTRIBUTE4                   => NULL,
377           X_ATTRIBUTE5                   => NULL,
378           X_ATTRIBUTE6                   => NULL,
379           X_ATTRIBUTE7                   => NULL,
380           X_ATTRIBUTE8                   => NULL,
381           X_ATTRIBUTE9                   => NULL,
382           X_ATTRIBUTE10                  => NULL,
383           X_ATTRIBUTE11                  => NULL,
384           X_ATTRIBUTE12                  => NULL,
385           X_ATTRIBUTE13                  => NULL,
386           X_ATTRIBUTE14                  => NULL,
387           X_ATTRIBUTE15                  => NULL,
388           X_GLOBAL_ATTRIBUTE_CATEGORY    => NULL,
389           X_GLOBAL_ATTRIBUTE1            => NULL,
390           X_GLOBAL_ATTRIBUTE2            => NULL,
391           X_GLOBAL_ATTRIBUTE3            => NULL,
392           X_GLOBAL_ATTRIBUTE4            => NULL,
393           X_GLOBAL_ATTRIBUTE5            => NULL,
394           X_GLOBAL_ATTRIBUTE6            => NULL,
395           X_GLOBAL_ATTRIBUTE7            => NULL,
396           X_GLOBAL_ATTRIBUTE8            => NULL,
397           X_GLOBAL_ATTRIBUTE9            => NULL,
398           X_GLOBAL_ATTRIBUTE10           => NULL,
399           X_GLOBAL_ATTRIBUTE11           => NULL,
400           X_GLOBAL_ATTRIBUTE12           => NULL,
401           X_GLOBAL_ATTRIBUTE13           => NULL,
402           X_GLOBAL_ATTRIBUTE14           => NULL,
403           X_GLOBAL_ATTRIBUTE15           => NULL,
404           X_GLOBAL_ATTRIBUTE16           => NULL,
405           X_GLOBAL_ATTRIBUTE17           => NULL,
406           X_GLOBAL_ATTRIBUTE18           => NULL,
407           X_GLOBAL_ATTRIBUTE19           => NULL,
408           X_GLOBAL_ATTRIBUTE20           => NULL,
409           X_PO_RELEASE_ID                => NULL,
410           X_BALANCING_SEGMENT            => NULL,
411           X_COST_CENTER_SEGMENT          => NULL,
412           X_ACCOUNT_SEGMENT              => NULL,
413           X_PROJECT_ID                   => NULL,
414           X_TASK_ID                      => NULL,
415           X_EXPENDITURE_TYPE             => NULL,
416           X_EXPENDITURE_ITEM_DATE        => NULL,
417           X_EXPENDITURE_ORGANIZATION_ID  => NULL,
418           X_PROJECT_ACCOUNTING_CONTEXT   => NULL,
419           X_PA_ADDITION_FLAG             => NULL,
420           X_PA_QUANTITY                  => NULL,
421           X_STAT_AMOUNT                  => NULL,
422           X_TYPE_1099                    => NULL,
423           X_INCOME_TAX_REGION            => NULL,
424           X_ASSETS_TRACKING_FLAG         => NULL,
425           X_PRICE_CORRECTION_FLAG        => NULL,
426           X_RECEIPT_NUMBER               => NULL,
427           X_MATCH_OPTION                 => NULL,
428           X_RCV_TRANSACTION_ID           => NULL,
429           X_CREATION_DATE                => SYSDATE,
430           X_CREATED_BY                   => FND_GLOBAL.USER_ID,
431           X_LAST_UPDATE_DATE             => SYSDATE,
432           X_LAST_UPDATED_BY              => FND_GLOBAL.USER_ID,
433           X_LAST_UPDATE_LOGIN            => FND_GLOBAL.LOGIN_ID,
434           X_ORG_ID                       => p_org_id,
435           X_Calling_Sequence             => g_pkg_name||'.create_refund'
436   );
437 
438   /* Finally calling AP submit payment logic ..*/
439   debug('Calling AP_IMPORT_INVOICES_PKG.SUBMIT_PAYMENT_REQUEST..');
440 
441   AP_IMPORT_INVOICES_PKG.SUBMIT_PAYMENT_REQUEST(
442         p_api_version		=> 1.0,
443  	p_invoice_interface_id  => l_invoice_interface_id,
444 	p_budget_control        => 'N',
445 	p_needs_invoice_approval=> 'Y',  -- 'N' for testing, 'Y' for production
446 	p_invoice_id            => x_invoice_id,
447 	x_return_status         => x_return_status,
448 	x_msg_count 		=> x_msg_count,
449 	x_msg_data		=> x_msg_data,
450 	x_rejection_list 	=> l_rejection_list,
451         p_calling_sequence      => g_pkg_name||'.create_refund',
452 	p_commit		=> 'N');
453 
454   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
455 	x_msg_count	:= 0;
456      FOR i in l_rejection_list.FIRST .. l_rejection_list.LAST LOOP
457         debug(i||' Errors found interfacing data to AP ...');
458 	debug(l_rejection_list(i).reject_lookup_code);
459 	x_msg_count	:= x_msg_count + 1;
460         FND_MESSAGE.SET_NAME( 'AR', 'GENERIC_MESSAGE' );
461         FND_MESSAGE.SET_TOKEN( 'GENERIC_TEXT' ,l_rejection_list(i).reject_lookup_code );
462         FND_MSG_PUB.ADD;
463      END LOOP;
464      RETURN;
465 END IF;
466 
467   /* Need to update the newly created application with the
468              refund invoice id.. */
469   IF NVL(p_called_from,'ARXRWAPP') <> 'TEST' THEN
470      arp_app_pkg.fetch_p(p_receivable_application_id,l_app_rec);
471      l_app_rec.application_ref_id := x_invoice_id;
472      l_app_rec.application_ref_num := x_invoice_id;
473      arp_app_pkg.update_p(l_app_rec);
474   END IF;
475 
476   debug('ar_refund_pvt.create_refund()-');
477 EXCEPTION
478   WHEN NO_DATA_FOUND THEN
479      IF PG_DEBUG in ('Y', 'C') THEN
480         debug('EXCEPTION: AR_REFUNDS_PVT.Create_refund()'||sqlerrm);
481      END IF;
482      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
483      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
484 
485   WHEN OTHERS THEN
486      IF PG_DEBUG in ('Y', 'C') THEN
487         debug('EXCEPTION: AR_REFUNDS_PVT.Create_refund()'||sqlerrm);
488      END IF;
489      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
490      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
491 
492 END create_refund;
493 
494 /*========================================================================
495  | PUBLIC PROCEDURE Cancel_Refund
496  |
497  | DESCRIPTION
498  |      ----------------------------------------
499  |      This procedure cancels a refund payment in Oracle Payments
500  |	via AP interface tables and APIs
501  |
502  | CALLED FROM PROCEDURES/FUNCTIONS (local to this package body)
503  |
504  |
505  | CALLS PROCEDURES/FUNCTIONS (local to this package body)
506  |
507  | PARAMETERS
508  |
509  | KNOWN ISSUES
510  |
511  | NOTES
512  |
513  | MODIFICATION HISTORY
514  | Date        Author   Description of Changes
515  | 06-DEC-2005 JBECKETT Created
516  |
517  *=======================================================================*/
518 PROCEDURE cancel_refund(
519 		 p_application_ref_id	IN  ar_receivable_applications.application_ref_id%TYPE
520 		,p_gl_date		IN  DATE
521                 ,x_return_status	OUT NOCOPY VARCHAR2
522 		,x_msg_count		OUT NOCOPY NUMBER
523 		,x_msg_data		OUT NOCOPY VARCHAR2)
524 IS
525   l_message_name		fnd_new_messages.message_name%TYPE;
526   l_refund_amount		NUMBER;
527   l_acctd_refund_amount		NUMBER;
528   l_temp_cancelled_amount	NUMBER;
529   l_cancelled_by		NUMBER;
530   l_cancelled_amount		NUMBER;
531   l_cancelled_date		DATE;
532   l_last_update_date		DATE;
533   l_orig_ppay_amount		NUMBER;
534   l_pay_curr_amount		NUMBER;
535   l_token			VARCHAR2(100);
536 
537 BEGIN
538 
539   debug('ar_refund_pvt.cancel_refund()+');
540   x_return_status := FND_API.G_RET_STS_SUCCESS;
541   IF NOT AP_CANCEL_PKG.Ap_Cancel_Single_Invoice(
542                   P_invoice_id			=> p_application_ref_id
543     		, P_last_updated_by		=> fnd_global.user_id
544              	, P_last_update_login		=> fnd_global.login_id
545              	, P_accounting_date		=> NULL
546              	, P_message_name		=> l_message_name
547              	, P_invoice_amount		=> l_refund_amount
548               	, P_base_amount			=> l_acctd_refund_amount
549              	, P_temp_cancelled_amount	=> l_temp_cancelled_amount
550               	, P_cancelled_by		=> l_cancelled_by
551                	, P_cancelled_amount		=> l_cancelled_amount
552             	, P_cancelled_date		=> l_cancelled_date
553              	, P_last_update_date		=> l_last_update_date
554              	, P_original_prepayment_amount	=> l_orig_ppay_amount
555             	, P_pay_curr_invoice_amount	=> l_pay_curr_amount
556               	, P_Token			=> l_token
557               	, P_calling_sequence		=> 'ar_refund_pvt.cancel_refund'
558 		) THEN
559       x_return_status := FND_API.G_RET_STS_ERROR;
560       IF l_message_name IS NOT NULL THEN
561          FND_MESSAGE.SET_NAME ('AP',l_message_name);
562          FND_MSG_PUB.Add;
563       END IF;
564       FND_MESSAGE.SET_NAME ('AR','GENERIC_MESSAGE');
565       FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','CANCEL_REFUND : '||l_token);
566       FND_MSG_PUB.Add;
567       FND_MSG_PUB.Count_And_Get
568                 (p_encoded => FND_API.G_FALSE,
569                  p_count   => x_msg_count,
570                  p_data    => x_msg_data);
571 
572       debug('Error returned from ap_cancel_single_invoice: '||l_message_name||' '||l_token);
573   END IF;
574 
575   debug('ar_refund_pvt.cancel_refund()-');
576 EXCEPTION
577   WHEN NO_DATA_FOUND THEN
578      IF PG_DEBUG in ('Y', 'C') THEN
579         debug('EXCEPTION: AR_REFUNDS_PVT.Cancel_refund()'||sqlerrm);
580      END IF;
581      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
582      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
583 
584   WHEN OTHERS THEN
585      IF PG_DEBUG in ('Y', 'C') THEN
586         debug('EXCEPTION: AR_REFUNDS_PVT.Cancel_refund()'||sqlerrm);
587      END IF;
588      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
589      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
590 
591 END cancel_refund;
592 
593 /*========================================================================
594  | INITIALIZATION SECTION
595  |
596  | DESCRIPTION
597  |
598  | KNOWN ISSUES
599  |
600  | NOTES
601  |
602  | MODIFICATION HISTORY
603  | Date        Author   Description of Changes
604  | 06-DEC-2005 JBECKETT Created
605  |
606  *=======================================================================*/
607 BEGIN
608 
609   pg_debug := NVL(fnd_profile.value('AFLOG_ENABLED'), 'N');
610 
611 
612 EXCEPTION
613   WHEN NO_DATA_FOUND THEN
614      arp_standard.debug('EXCEPTION: AR_REFUNDS_PVT.INITIALIZE()');
615      RAISE;
616 
617   WHEN OTHERS THEN
618      arp_standard.debug('EXCEPTION: AR_REFUNDS_PVT.INITIALIZE()');
619      RAISE;
620 
621 END AR_REFUNDS_PVT;