[Home] [Help]
PACKAGE BODY: APPS.ARW_CM_COVER
Source
1 PACKAGE BODY arw_cm_cover AS
2 /* $Header: ARWCMCVB.pls 120.22 2011/02/06 06:55:03 manishri ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AR_CREDIT_TRANSACTION_PUB';
5 G_REV_BASED_ON_SALESREP BOOLEAN;
6 G_MSG_UERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
7 G_MSG_ERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
8 G_MSG_HIGH CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
9 G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
10 G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
11 G_MSG_SUCCESS CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
12
13 l_doc_seq_status VARCHAR2(10) := FND_API.G_RET_STS_SUCCESS;
14
15
16 /* bug 2527439 : patterned after get_doc_seq from ARXPRELB.pls */
17
18 PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
19
20 /*Bug3041195*/
21 unique_seq_numbers VARCHAR2(1) ;
22
23
24 PROCEDURE get_doc_seq(p_application_id IN NUMBER,
25 p_document_name IN VARCHAR2,
26 p_sob_id IN NUMBER,
27 p_met_code IN CHAR,
28 p_trx_date IN DATE,
29 p_complete_flag IN VARCHAR2,
30 p_doc_sequence_value IN OUT NOCOPY NUMBER,
31 p_doc_sequence_id OUT NOCOPY NUMBER,
32 p_return_status OUT NOCOPY VARCHAR2
33 ) AS
34
35 l_doc_seq_ret_stat NUMBER;
36 l_doc_sequence_name VARCHAR2(50);
37 l_doc_sequence_type VARCHAR2(50);
38 l_doc_sequence_value NUMBER;
39 l_db_sequence_name VARCHAR2(50);
40 l_seq_ass_id NUMBER;
41 l_prd_tab_name VARCHAR2(50);
42 l_aud_tab_name VARCHAR2(50);
43 l_msg_flag VARCHAR2(1);
44
45
46 BEGIN
47
48 IF PG_DEBUG in ('Y', 'C') THEN
49 arp_util.debug('get_doc_seq()+');
50 END IF;
51
52 p_return_status := FND_API.G_RET_STS_SUCCESS;
53
54
55 -- valid values : A - Always Used
56 -- P - partially Used
57 -- N - Not used
58
59 IF PG_DEBUG in ('Y', 'C') THEN
60 arp_util.debug('get_doc_seq: ' || 'UNIQUE:SEQ : '|| unique_seq_numbers);
61 arp_util.debug('get_doc_seq: ' || 'p_complete_flag : ' || p_complete_flag);
62 END IF;
63
64
65 IF ( NVL( unique_seq_numbers, 'N') <> 'N' ) THEN
66 BEGIN
67
68 /*------------------------------+
69 | Get the document sequence. |
70 +------------------------------*/
71
72 l_doc_seq_ret_stat:=
73 fnd_seqnum.get_seq_info (
74 p_application_id,
75 p_document_name,
76 p_sob_id,
77 p_met_code,
78 trunc(p_trx_date),
79 p_doc_sequence_id,
80 l_doc_sequence_type,
81 l_doc_sequence_name,
82 l_db_sequence_name,
83 l_seq_ass_id,
84 l_prd_tab_name,
85 l_aud_tab_name,
86 l_msg_flag,
87 'Y',
88 'Y');
89
90 IF PG_DEBUG in ('Y', 'C') THEN
91 arp_util.debug('Doc sequence return status :'||to_char(nvl(l_doc_seq_ret_stat,-99)));
92 arp_util.debug('l_doc_sequence_name :'||l_doc_sequence_name);
93 arp_util.debug('l_db_sequence_name :'|| l_db_sequence_name);
94 arp_util.debug('l_doc_sequence_type :' || l_doc_sequence_type);
95 arp_util.debug('l_doc_sequence_id :'||to_char(nvl(p_doc_sequence_id,-99)));
96 END IF;
97
98 IF l_doc_seq_ret_stat = -8 THEN
99 --this is the case of Always Used
100 IF PG_DEBUG in ('Y', 'C') THEN
101 arp_util.debug('The doc sequence does not exist for the current document');
102 END IF;
103 p_return_status := FND_API.G_RET_STS_ERROR;
104 --Error message
105 FND_MESSAGE.Set_Name( 'AR','AR_RAPI_DOC_SEQ_NOT_EXIST_A');
106 FND_MSG_PUB.Add;
107 ELSIF l_doc_seq_ret_stat = -2 THEN
108 --this is the case of Partially Used
109 IF PG_DEBUG in ('Y', 'C') THEN
110 arp_util.debug('The doc sequence does not exist for the current document');
111 END IF;
112 --Warning
113 IF FND_MSG_PUB.Check_Msg_Level(G_MSG_SUCCESS) THEN
114 FND_MESSAGE.SET_NAME('AR','AR_RAPI_DOC_SEQ_NOT_EXIST_P');
115 FND_MSG_PUB.Add;
116 END IF;
117 END IF;
118
119 IF ( l_doc_sequence_name IS NOT NULL
120 AND p_doc_sequence_id IS NOT NULL) THEN
121
122 /*------------------------------------+
123 | Automatic Document Numbering case |
124 +------------------------------------*/
125 IF PG_DEBUG in ('Y', 'C') THEN
126 arp_util.debug('Automatic Document Numbering case ');
127 END IF;
128
129 l_doc_seq_ret_stat :=
130 fnd_seqnum.get_seq_val (
131 p_application_id,
132 p_document_name,
133 p_sob_id,
134 p_met_code,
135 TRUNC(p_trx_date),
136 l_doc_sequence_value,
137 p_doc_sequence_id);
138
139 IF p_doc_sequence_value IS NOT NULL THEN
140 --raise an error message because the user is not supposed to pass
141 --in a value for the document sequence number in this case.
142 p_return_status := FND_API.G_RET_STS_ERROR;
143 FND_MESSAGE.Set_Name('AR', 'AR_RAPI_DOC_SEQ_AUTOMATIC');
144 FND_MSG_PUB.Add;
145 END IF;
146 p_doc_sequence_value := l_doc_sequence_value;
147 arp_util.debug('l_doc_sequence_value :'||to_char(nvl(p_doc_sequence_value,-99)));
148 IF PG_DEBUG in ('Y', 'C') THEN
149 arp_util.debug('p_doc_sequence_id : '|| to_char(p_doc_sequence_id));
150 END IF;
151
152 ELSIF ( p_doc_sequence_id IS NOT NULL
153 AND p_doc_sequence_value IS NOT NULL) THEN
154
155 /*-------------------------------------+
156 | Manual Document Numbering case |
157 | with the document value specified. |
158 | Use the specified value. |
159 +-------------------------------------*/
160
161 NULL;
162
163 ELSIF ( p_doc_sequence_id IS NOT NULL
164 AND p_doc_sequence_value IS NULL) THEN
165
166 /*-----------------------------------------+
167 | Manual Document Numbering case |
168 | with the document value not specified. |
169 | Generate a document value mandatory |
170 | error. |
171 +-----------------------------------------*/
172
173 IF NVL(unique_seq_numbers,'N') = 'A' THEN
174 p_return_status := FND_API.G_RET_STS_ERROR;
175 FND_MESSAGE.Set_Name('AR', 'AR_RAPI_DOC_SEQ_VALUE_NULL_A');
176 FND_MESSAGE.Set_Token('SEQUENCE', l_doc_sequence_name);
177 FND_MSG_PUB.Add;
178 ELSIF NVL(unique_seq_numbers,'N') = 'P' THEN
179 --Warning
180 IF FND_MSG_PUB.Check_Msg_Level(G_MSG_SUCCESS) THEN
181 FND_MESSAGE.SET_NAME('AR','AR_RAPI_DOC_SEQ_VALUE_NULL_P');
182 FND_MSG_PUB.Add;
183 END IF;
184 END IF;
185
186
187 END IF;
188
189 EXCEPTION
190 WHEN NO_DATA_FOUND THEN
191 /*------------------------------------------+
192 | No document assignment was found. |
193 | Generate an error if document numbering |
194 | is mandatory. |
195 +------------------------------------------*/
196
197 IF PG_DEBUG in ('Y', 'C') THEN
198 arp_util.debug('EXCEPTION: no_data_found raised');
199 END IF;
200 IF (unique_seq_numbers = 'A' ) THEN
201 p_return_status := FND_API.G_RET_STS_ERROR;
202 FND_MESSAGE.Set_Name( 'FND','UNIQUE-ALWAYS USED');
203 FND_MSG_PUB.Add;
204 ELSE
205 p_doc_sequence_id := NULL;
206 p_doc_sequence_value := NULL;
207 END IF;
208
209 WHEN OTHERS THEN
210 IF PG_DEBUG in ('Y', 'C') THEN
211 arp_util.debug('EXCEPTION: Unhandled exception in doc sequence assignment');
212 END IF;
213 raise;
214
215 END;
216
217 END IF;
218 IF PG_DEBUG in ('Y', 'C') THEN
219 arp_util.debug('get_doc_seq()+');
220 END IF;
221 END get_doc_seq;
222
223
224 /*=======================================================================+
225 | PROCEDURE |
226 | create_header_cm |
227 | |
228 | DESCRIPTION |
229 | Procedure create_header_cm - Entry point for header level |
230 | cm creation |
231 | ARGUMENTS : IN: |
232 | |
233 | OUT: |
234 | IN/ OUT: |
235 | |
236 | RETURNS : |
237 | |
238 | NOTES |
239 | |
240 | KNOWN BUGS |
241 | |
242 | MODIFICATION HISTORY |
243 | TDEY 22-FEB-00 Created |
244 | VCRISOST 15-NOV-02 Bug 2775884 : when creating a dispute |
245 | at the header level and neither amount nor |
246 | percent is given for either line/tax/freight, |
247 | then code should not dispute that part of the |
248 | invoice |
249 | |
250 | |
251 +=======================================================================*/
252
253 PROCEDURE create_header_cm (
254 p_prev_customer_trx_id IN ra_customer_trx.customer_trx_id%type,
255 p_batch_id IN ra_batches.batch_id%type,
256 p_trx_date IN ra_customer_trx.trx_date%type,
257 p_gl_date IN ra_cust_trx_line_gl_dist.gl_date%type,
258 p_complete_flag IN ra_customer_trx.complete_flag%type,
259 p_batch_source_id IN ra_batch_sources.batch_source_id%type,
260 p_cust_trx_type_id IN ra_cust_trx_types.cust_trx_type_id%type,
261 p_currency_code IN fnd_currencies.currency_code%type,
262 p_exchange_date IN ra_customer_trx.exchange_date%type,
263 p_exchange_rate_type IN ra_customer_trx.exchange_rate_type%type,
264 p_exchange_rate IN ra_customer_trx.exchange_rate%type,
265 p_invoicing_rule_id IN ra_customer_trx.invoicing_rule_id%type,
266 p_method_for_rules IN ra_customer_trx.credit_method_for_rules%type,
267 p_split_term_method IN ra_customer_trx.credit_method_for_installments%type,
268 p_initial_customer_trx_id IN ra_customer_trx.initial_customer_trx_id%type,
269 p_primary_salesrep_id IN ra_customer_trx.primary_salesrep_id%type,
270 p_bill_to_customer_id IN ra_customer_trx.bill_to_customer_id%type,
271 p_bill_to_address_id IN ra_customer_trx.bill_to_address_id%type,
272 p_bill_to_site_use_id IN ra_customer_trx.bill_to_site_use_id%type,
273 p_bill_to_contact_id IN ra_customer_trx.bill_to_contact_id%type,
274 p_ship_to_customer_id IN ra_customer_trx.ship_to_customer_id%type,
275 p_ship_to_address_id IN ra_customer_trx.ship_to_address_id%type,
276 p_ship_to_site_use_id IN ra_customer_trx.ship_to_site_use_id%type,
277 p_ship_to_contact_id IN ra_customer_trx.ship_to_contact_id%type,
278 p_receipt_method_id IN ra_customer_trx.receipt_method_id%type,
279 p_paying_customer_id IN ra_customer_trx.paying_customer_id%type,
280 p_paying_site_use_id IN ra_customer_trx.paying_site_use_id%type,
281 p_customer_bank_account_id IN ra_customer_trx.customer_bank_account_id%type,
282 p_printing_option IN ra_customer_trx.printing_option%type,
283 p_printing_last_printed IN ra_customer_trx.printing_last_printed%type,
284 p_printing_pending IN ra_customer_trx.printing_pending%type,
285 p_doc_sequence_value IN ra_customer_trx.doc_sequence_value%type,
286 p_doc_sequence_id IN ra_customer_trx.doc_sequence_id%type,
287 p_reason_code IN ra_customer_trx.reason_code%type,
288 p_customer_reference IN ra_customer_trx.customer_reference%type,
289 p_customer_reference_date IN ra_customer_trx.customer_reference_date%type,
290 p_internal_notes IN ra_customer_trx.internal_notes%type,
291 p_set_of_books_id IN ra_customer_trx.set_of_books_id%type,
292 p_created_from IN ra_customer_trx.created_from%type,
293 p_old_trx_number IN ra_customer_trx.old_trx_number%type,
294 p_attribute_category IN ra_customer_trx.attribute_category%type,
295 p_attribute1 IN ra_customer_trx.attribute1%type,
296 p_attribute2 IN ra_customer_trx.attribute2%type,
297 p_attribute3 IN ra_customer_trx.attribute3%type,
298 p_attribute4 IN ra_customer_trx.attribute4%type,
299 p_attribute5 IN ra_customer_trx.attribute5%type,
300 p_attribute6 IN ra_customer_trx.attribute6%type,
301 p_attribute7 IN ra_customer_trx.attribute7%type,
302 p_attribute8 IN ra_customer_trx.attribute8%type,
303 p_attribute9 IN ra_customer_trx.attribute9%type,
304 p_attribute10 IN ra_customer_trx.attribute10%type,
305 p_attribute11 IN ra_customer_trx.attribute11%type,
306 p_attribute12 IN ra_customer_trx.attribute12%type,
307 p_attribute13 IN ra_customer_trx.attribute13%type,
308 p_attribute14 IN ra_customer_trx.attribute14%type,
309 p_attribute15 IN ra_customer_trx.attribute15%type,
310 p_interface_header_context IN ra_customer_trx.interface_header_context%type,
311 p_interface_header_attribute1 IN ra_customer_trx.interface_header_attribute1%type,
312 p_interface_header_attribute2 IN ra_customer_trx.interface_header_attribute2%type,
313 p_interface_header_attribute3 IN ra_customer_trx.interface_header_attribute3%type,
314 p_interface_header_attribute4 IN ra_customer_trx.interface_header_attribute4%type,
315 p_interface_header_attribute5 IN ra_customer_trx.interface_header_attribute5%type,
316 p_interface_header_attribute6 IN ra_customer_trx.interface_header_attribute6%type,
317 p_interface_header_attribute7 IN ra_customer_trx.interface_header_attribute7%type,
318 p_interface_header_attribute8 IN ra_customer_trx.interface_header_attribute8%type,
319 p_interface_header_attribute9 IN ra_customer_trx.interface_header_attribute9%type,
320 p_interface_header_attribute10 IN ra_customer_trx.interface_header_attribute10%type,
321 p_interface_header_attribute11 IN ra_customer_trx.interface_header_attribute11%type,
322 p_interface_header_attribute12 IN ra_customer_trx.interface_header_attribute12%type,
323 p_interface_header_attribute13 IN ra_customer_trx.interface_header_attribute13%type,
324 p_interface_header_attribute14 IN ra_customer_trx.interface_header_attribute14%type,
325 p_interface_header_attribute15 IN ra_customer_trx.interface_header_attribute15%type,
326 p_default_ussgl_trx_code IN ra_customer_trx.default_ussgl_transaction_code%type,
327 p_line_percent IN number,
328 p_freight_percent IN number,
329 p_line_amount IN ra_customer_trx_lines.extended_amount%type,
330 p_freight_amount IN ra_customer_trx_lines.extended_amount%type,
331 p_compute_tax IN varchar2,
332 p_comments IN ra_customer_trx.comments%type,
333 p_customer_trx_id OUT NOCOPY ra_customer_trx.customer_trx_id%type,
334 p_trx_number IN OUT NOCOPY ra_customer_trx.trx_number%type,
335 p_computed_tax_percent IN OUT NOCOPY number,
336 p_computed_tax_amount IN OUT NOCOPY ra_customer_trx_lines.extended_amount%type,
337 p_errors OUT NOCOPY arp_trx_validate.Message_Tbl_Type,
338 p_status OUT NOCOPY varchar2,
339 p_purchase_order IN ra_customer_trx.purchase_order%type,
340 p_purchase_order_revision IN ra_customer_trx.purchase_order_revision%type,
341 p_purchase_order_date IN ra_customer_trx.purchase_order_date%type,
342 p_legal_entity_id IN ra_customer_trx.legal_entity_id%type ,
343 /*4556000-4606558*/
344 p_global_attribute_category IN ra_customer_trx.global_attribute_category%type default null,
345 p_global_attribute1 IN ra_customer_trx.global_attribute1%type default NULL,
346 p_global_attribute2 IN ra_customer_trx.global_attribute2%type default NULL,
347 p_global_attribute3 IN ra_customer_trx.global_attribute3%type default NULL,
348 p_global_attribute4 IN ra_customer_trx.global_attribute4%type default NULL,
349 p_global_attribute5 IN ra_customer_trx.global_attribute5%type default NULL,
350 p_global_attribute6 IN ra_customer_trx.global_attribute6%type default NULL,
351 p_global_attribute7 IN ra_customer_trx.global_attribute7%type default NULL,
352 p_global_attribute8 IN ra_customer_trx.global_attribute8%type default NULL,
353 p_global_attribute9 IN ra_customer_trx.global_attribute9%type default NULL,
354 p_global_attribute10 IN ra_customer_trx.global_attribute10%type default NULL,
355 p_global_attribute11 IN ra_customer_trx.global_attribute11%type default NULL,
356 p_global_attribute12 IN ra_customer_trx.global_attribute12%type default NULL,
357 p_global_attribute13 IN ra_customer_trx.global_attribute13%type default NULL,
358 p_global_attribute14 IN ra_customer_trx.global_attribute14%type default NULL,
359 p_global_attribute15 IN ra_customer_trx.global_attribute15%type default NULL,
360 p_global_attribute16 IN ra_customer_trx.global_attribute16%type default NULL,
361 p_global_attribute17 IN ra_customer_trx.global_attribute17%type default NULL,
362 p_global_attribute18 IN ra_customer_trx.global_attribute18%type default NULL,
363 p_global_attribute19 IN ra_customer_trx.global_attribute19%type default NULL,
364 p_global_attribute20 IN ra_customer_trx.global_attribute20%type default NULL,
365 p_global_attribute21 IN ra_customer_trx.global_attribute21%type default NULL,
366 p_global_attribute22 IN ra_customer_trx.global_attribute22%type default NULL,
367 p_global_attribute23 IN ra_customer_trx.global_attribute23%type default NULL,
368 p_global_attribute24 IN ra_customer_trx.global_attribute24%type default NULL,
369 p_global_attribute25 IN ra_customer_trx.global_attribute25%type default NULL,
370 p_global_attribute26 IN ra_customer_trx.global_attribute26%type default NULL,
371 p_global_attribute27 IN ra_customer_trx.global_attribute27%type default NULL,
372 p_global_attribute28 IN ra_customer_trx.global_attribute28%type default NULL,
373 p_global_attribute29 IN ra_customer_trx.global_attribute29%type default NULL,
374 p_global_attribute30 IN ra_customer_trx.global_attribute30%type default NULL,
375 p_start_date_commitment IN ra_customer_trx.start_date_commitment%type default NULL
376 )
377 AS
378
379 l_cm_header ra_customer_trx%rowtype;
380 l_customer_trx_id ra_customer_trx.customer_trx_id%type;
381 l_compute_tax VARCHAR2(1);
382 l_line_orig number;
383 l_tax_orig number;
384 l_frt_orig number;
385 l_tot_orig number;
386 l_line_bal number;
387 l_tax_bal number;
388 l_frt_bal number;
389 l_tot_bal number;
390 l_num_line_lines number;
391 l_num_tax_lines number;
392 l_num_frt_lines number;
393 l_num_installments number;
394 l_pmt_exist_flag varchar2(1);
395 --
396 l_line_amount ra_customer_trx_lines.extended_amount%type ;
397 l_line_percent number ;
398 l_freight_amount ra_customer_trx_lines.extended_amount%type ;
399 l_freight_percent number ;
400 l_computed_tax_percent number;
401 l_computed_tax_amount ra_customer_trx_lines.extended_amount%type;
402 l_credited_trx_rec ra_customer_trx_cr_trx_v%rowtype ;
403 l_credited_trx_cm_type_id ra_cust_trx_types.credit_memo_type_id%TYPE ;
404 l_credited_trx_open_rec_flag ra_cust_trx_types.accounting_affect_flag%TYPE ;
405 --
406 l_default_bs_name varchar2(50);
407 l_auto_trx_numbering_flag varchar2(1);
408 l_bs_type varchar2(10);
409 l_copy_doc_number_flag varchar2(1);
410 l_bs_default_cust_trx_type_id number;
411 l_default_cust_trx_type_id number;
412 l_default_type_name varchar2(50);
413 l_open_receivable_flag varchar2(1);
414 l_post_to_gl_flag varchar2(1);
415 l_allow_freight_flag varchar2(1);
416 l_creation_sign varchar2(1);
417 l_allow_overapplication_flag varchar2(1);
418 l_natural_app_only_flag varchar2(1);
419 l_tax_calculate_flag varchar2(1);
420
421 l_default_printing_option varchar2(30);
422 l_default_gl_date date;
423 l_default_ship_to_customer_id number;
424 l_default_ship_to_site_use_id number;
425 l_default_ship_to_contact_id number;
426 l_default_bill_to_customer_id number;
427 l_default_bill_to_site_use_id number;
428 l_default_bill_to_contact_id number;
429 l_default_primary_salesrep_id number;
430
431 l_default_receipt_method_id number;
432 l_default_cust_bank_account_id number;
433 l_default_paying_customer_id number;
434 l_default_paying_site_use_id number;
435
436 l_default_ship_via varchar2(30);
437 l_default_ship_date_actual date;
438 l_default_waybill_number varchar2(50);
439 l_default_fob_point varchar2(30);
440 --
441 p_form_name varchar2(20) := 'ARXTWCMI';
442 p_form_version number := NULL;
443 l_batch_date date ;
444 l_crtrx_date date ;
445 l_sysdate date ;
446 e_handled_error EXCEPTION;
447 e_unexpected_error EXCEPTION;
448 l_message_name VARCHAR2(255);
449 l_debug_point NUMBER;
450 l_ue_message VARCHAR2(2000);
451 l_return_status VARCHAR2(1);
452 l_msg_data VARCHAR2(4000);
453 l_msg_count NUMBER;
454
455 BEGIN
456 IF PG_DEBUG in ('Y', 'C') THEN
457 arp_util.debug('create_header_cm()+');
458 END IF;
459
460 /*------------------------------------+
461 | Standard start of API savepoint |
462 +------------------------------------*/
463
464 SAVEPOINT Credit_Transaction_Pub;
465
466
467 --
468 -- populate the record with the values passed
469 --
470 l_cm_header.batch_id := p_batch_id;
471 l_cm_header.trx_number := p_trx_number;
472 l_cm_header.trx_date := p_trx_date;
473 l_cm_header.complete_flag := p_complete_flag;
474 l_cm_header.previous_customer_trx_id := p_prev_customer_trx_id;
475 l_cm_header.batch_source_id := p_batch_source_id;
476 l_cm_header.cust_trx_type_id := p_cust_trx_type_id;
477 l_cm_header.invoice_currency_code := p_currency_code;
478 l_cm_header.exchange_date := p_exchange_date;
479 l_cm_header.exchange_rate_type := p_exchange_rate_type;
480 l_cm_header.exchange_rate := p_exchange_rate;
481 l_cm_header.credit_method_for_rules := p_method_for_rules;
482 l_cm_header.credit_method_for_installments := p_split_term_method;
483 l_cm_header.initial_customer_trx_id := p_initial_customer_trx_id;
484 l_cm_header.primary_salesrep_id := p_primary_salesrep_id;
485 l_cm_header.invoicing_rule_id := p_invoicing_rule_id;
486 l_cm_header.bill_to_customer_id := p_bill_to_customer_id;
487 l_cm_header.bill_to_address_id := p_bill_to_address_id;
488 l_cm_header.bill_to_site_use_id := p_bill_to_site_use_id;
489 l_cm_header.bill_to_contact_id := p_bill_to_contact_id;
490 l_cm_header.ship_to_customer_id := p_ship_to_customer_id;
491 l_cm_header.ship_to_address_id := p_ship_to_address_id;
492 l_cm_header.ship_to_site_use_id := p_ship_to_site_use_id;
493 l_cm_header.ship_to_contact_id := p_ship_to_contact_id;
494 l_cm_header.receipt_method_id := p_receipt_method_id;
495 l_cm_header.paying_customer_id := p_paying_customer_id;
496 l_cm_header.paying_site_use_id := p_paying_site_use_id;
497 l_cm_header.customer_bank_account_id := p_customer_bank_account_id;
498 l_cm_header.printing_option := p_printing_option;
499 l_cm_header.printing_last_printed := p_printing_last_printed;
500 l_cm_header.printing_pending := p_printing_pending;
501 l_cm_header.reason_code := p_reason_code;
502 l_cm_header.doc_sequence_value := p_doc_sequence_value;
503 l_cm_header.doc_sequence_id := p_doc_sequence_id;
504 l_cm_header.customer_reference := p_customer_reference;
505 l_cm_header.customer_reference_date := p_customer_reference_date;
506 l_cm_header.internal_notes := p_internal_notes;
507 l_cm_header.set_of_books_id := p_set_of_books_id;
508 l_cm_header.created_from := p_created_from;
509 l_cm_header.old_trx_number := p_old_trx_number;
510 l_cm_header.attribute_category := p_attribute_category;
511 l_cm_header.attribute1 := p_attribute1;
512 l_cm_header.attribute2 := p_attribute2;
513 l_cm_header.attribute3 := p_attribute3;
514 l_cm_header.attribute4 := p_attribute4;
515 l_cm_header.attribute5 := p_attribute5;
516 l_cm_header.attribute6 := p_attribute6;
517 l_cm_header.attribute7 := p_attribute7;
518 l_cm_header.attribute8 := p_attribute8;
519 l_cm_header.attribute9 := p_attribute9;
520 l_cm_header.attribute10 := p_attribute10;
521 l_cm_header.attribute11 := p_attribute11;
522 l_cm_header.attribute12 := p_attribute12;
523 l_cm_header.attribute13 := p_attribute13;
524 l_cm_header.attribute14 := p_attribute14;
525 l_cm_header.attribute15 := p_attribute15;
526 l_cm_header.interface_header_context := p_interface_header_context;
527 l_cm_header.interface_header_attribute1 := p_interface_header_attribute1;
528 l_cm_header.interface_header_attribute2 := p_interface_header_attribute2;
529 l_cm_header.interface_header_attribute3 := p_interface_header_attribute3;
530 l_cm_header.interface_header_attribute4 := p_interface_header_attribute4;
531 l_cm_header.interface_header_attribute5 := p_interface_header_attribute5;
532 l_cm_header.interface_header_attribute6 := p_interface_header_attribute6;
533 l_cm_header.interface_header_attribute7 := p_interface_header_attribute7;
534 l_cm_header.interface_header_attribute8 := p_interface_header_attribute8;
535 l_cm_header.interface_header_attribute9 := p_interface_header_attribute9;
536 l_cm_header.interface_header_attribute10 := p_interface_header_attribute10;
537 l_cm_header.interface_header_attribute11 := p_interface_header_attribute11;
538 l_cm_header.interface_header_attribute12 := p_interface_header_attribute12;
539 l_cm_header.interface_header_attribute13 := p_interface_header_attribute13;
540 l_cm_header.interface_header_attribute14 := p_interface_header_attribute14;
541 l_cm_header.interface_header_attribute15 := p_interface_header_attribute15;
542 l_cm_header.default_ussgl_transaction_code := p_default_ussgl_trx_code;
543 --
544 l_cm_header.status_trx := null;
545 --
546 l_cm_header.comments := p_comments;
547 l_cm_header.purchase_order := p_purchase_order;
548 l_cm_header.purchase_order_revision := p_purchase_order_revision;
549 l_cm_header.purchase_order_date := p_purchase_order_date;
550 l_cm_header.legal_entity_id := p_legal_entity_id;
551
552 --
553 -- Ensure that p_prev_customer_trx_id is not null
554 --
555
556 --
557 -- Populate Default values
558 --
559 -- Amounts : get the credit memo amounts.
560 -- for each : line, freight, tax,
561 -- if both percentage and amount are null, assume 100%
562 -- populate l_cm_header values accordingly.
563 -- else if either (amount or %) is null, populate the other
564
565 BEGIN
566 ARP_PROCESS_CREDIT_UTIL.GET_CREDITED_TRX_DETAILS(
567 p_prev_customer_trx_id,
568 p_initial_customer_trx_id,
569 l_line_orig,
570 l_tax_orig,
571 l_frt_orig,
572 l_tot_orig,
573 l_line_bal,
574 l_tax_bal,
575 l_frt_bal,
576 l_tot_bal,
577 l_num_line_lines,
578 l_num_tax_lines,
579 l_num_frt_lines,
580 l_num_installments,
581 l_pmt_exist_flag);
582 EXCEPTION
583 WHEN OTHERS THEN
584 ROLLBACK TO Credit_Transaction_Pub;
585 IF PG_DEBUG in ('Y', 'C') THEN
586 arp_util.debug('EXCEPTION Calling arp_process_credit_util.get_credited_trx_details.');
587 END IF;
588 /*Bug3041195: Commented out this portion as it would overwrite errors
589 raised by get_credited_trx_details*/
590 -- fnd_message.set_name( 'AR', 'AR_RAXTRX-1666');
591 -- l_message_name := 'AR_RAXTRX-1666' ;
592 RAISE e_unexpected_error;
593 END;
594
595 IF PG_DEBUG in ('Y', 'C') THEN
596 arp_util.debug('l_line_orig = ' || to_char(l_line_orig));
597 END IF;
598
599
600 -- VCRISOST 01/29/03 : bug 2775884, null amount and null percent means zero dispute
601
602 --- TDEY 99/09/27 : need an outer IF condition for $0 invoice case
603 IF nvl(l_line_orig,0) <> 0 THEN
604 IF p_line_amount IS NULL THEN
605 IF p_line_percent IS NULL THEN
606 -- 2775884 : do not dispute line if neither line amount nor line percent is given
607 l_line_amount := 0;
608 l_line_percent := 0;
609 ELSE
610 l_line_amount := -1 * l_line_orig * p_line_percent /100 ;
611 l_line_percent := p_line_percent;
612 END IF;
613 ELSE
614 IF p_line_percent IS NULL THEN
615 l_line_amount := p_line_amount;
616 l_line_percent := ((p_line_amount / l_line_orig) * 100 ) ;
617 ELSE
618 l_line_amount := p_line_amount;
619 l_line_percent := p_line_percent;
620 END IF;
621 END IF;
622 ELSE
623 l_line_amount := 0;
624 l_line_percent := 0;
625 END IF;
626
627 --- TDEY 99/09/27 : need an outer IF condition for $0 freight case
628 IF nvl(l_frt_orig,0) <> 0 THEN
629 IF p_freight_amount IS NULL THEN
630 IF p_freight_percent IS NULL THEN
631 -- 2775884 : do not dispute freight, if neither freight amount nor percent is given
632 l_freight_amount := 0;
633 l_freight_percent := 0;
634 ELSE
635 l_freight_amount := -1 * l_frt_orig * p_freight_percent / 100 ;
636 l_freight_percent := p_freight_percent;
637 END IF;
638 ELSE
639 IF p_freight_percent IS NULL THEN
640 l_freight_amount := p_freight_amount;
641 l_freight_percent := ((p_freight_amount / l_frt_orig) * 100 * -1) ;
642 ELSE
643 l_freight_amount := p_freight_amount;
644 l_freight_percent := p_freight_percent;
645 END IF;
646 END IF;
647 ELSE
648 l_freight_amount := 0;
649 l_freight_percent := 0;
650 END IF;
651
652 --- TDEY 99/09/27 : need an outer IF condition for $0 tax case
653 IF nvl(l_tax_orig,0) <> 0 THEN
654 IF p_computed_tax_amount IS NULL THEN
655 IF p_computed_tax_percent IS NULL THEN
656 -- 2775884 : do not dispute tax, if neither tax amount nor tax percent is given
657 l_computed_tax_amount := 0;
658 l_computed_tax_percent := 0;
659 ELSE
660 l_computed_tax_amount := -1 * l_tax_orig * p_computed_tax_percent / 100;
661 l_computed_tax_percent := p_computed_tax_percent;
662 END IF;
663 ELSE
664 IF p_computed_tax_percent IS NULL THEN
665 l_computed_tax_amount := p_computed_tax_amount;
666 l_computed_tax_percent := ((p_computed_tax_amount / l_tax_orig) * 100 * -1) ;
667 ELSE
668 l_computed_tax_amount := p_computed_tax_amount;
669 l_computed_tax_percent := p_computed_tax_percent;
670 END IF;
671 END IF;
672 ELSE
673 /* Bug 8627604 : For Deposits and Guarantee - p_start_date_commitment will be NOT NULL */
674 IF p_start_date_commitment IS NOT NULL THEN
675 l_computed_tax_amount := NULL;
676 l_computed_tax_percent := NULL;
677 ELSE
678 l_computed_tax_amount := 0;
679 l_computed_tax_percent := 0;
680 END IF;
681
682 END IF;
683
684 IF PG_DEBUG in ('Y', 'C') THEN
685 arp_util.debug('p_prev_customer_trx_id = ' || p_prev_customer_trx_id);
686 arp_util.debug('p_start_date_commitment = ' || p_start_date_commitment );
687 arp_util.debug('l_line_orig = ' || to_char(l_line_orig));
688 arp_util.debug('l_line_amount = ' || to_char(l_line_amount));
689 arp_util.debug('l_line_percent = ' || to_char(l_line_percent));
690 arp_util.debug('l_freight_amount = ' || to_char(l_freight_amount));
691 arp_util.debug('l_freight_percent = ' || to_char(l_freight_percent));
692 arp_util.debug('l_computed_tax_amount = ' ||to_char(l_computed_tax_amount));
693 arp_util.debug('l_computed_tax_percent = '||to_char(l_computed_tax_percent));
694 END IF;
695
696 --
697 -- Default complete flag :
698 -- If complete flag has not been passed in then, complete_flag is 'N'
699 --
700 IF p_complete_flag IS NULL THEN
701 l_cm_header.complete_flag := 'N' ;
702 END IF;
703
704 --
705 -- Other defaluts : use arp_process_credit_util.get_cm_header_defaults
706 --
707 -- First, get the details of the transaction being credited.
708 -- This info is used as parameter into get_cm_header_defaults
709 --
710 BEGIN
711 SELECT *
712 INTO l_credited_trx_rec
713 FROM ra_customer_trx_cr_trx_v
714 WHERE customer_trx_id = p_prev_customer_trx_id ;
715 EXCEPTION
716 WHEN NO_DATA_FOUND THEN
717 --- TDEY 99/09/27 : Bug 913062
718 --- Situation : The user is trying to credit a transaction that
719 --- is not of the correct trx class, incomplete, or simply does
720 --- not exist in the system.
721 --- Proposed error message : AR_RAXTRX-1666 Your credit memo
722 --- transaction can only credit an invoice or a debit memo line
723 IF PG_DEBUG in ('Y', 'C') THEN
724 arp_util.debug('EXCEPTION: select from ra_customer_trx_cr_trx_v returns no data');
725 END IF;
726
727 fnd_message.set_name( 'AR', 'AR_RAXTRX-1666');
728 l_message_name := 'AR_RAXTRX-1666' ;
729 RAISE e_handled_error;
730
731 WHEN OTHERS THEN
732 IF PG_DEBUG in ('Y', 'C') THEN
733 arp_util.debug('EXCEPTION: Debug point 1 : Unknown Error fetching credited trx details ');
734 END IF;
735 l_debug_point := 1;
736 l_ue_message := SUBSTR('Error fetching credited trx details ' || SQLERRM, 1, 2000);
737 RAISE e_unexpected_error;
738 END;
739
740
741 /*
742 Bug915313 : Need to catch the over appilcation case upfront
743 Logic borrowed from ARXTWCMI.pld
744 Bug3041195 : Even if overapplication is allowed, you
745 cannot overapply at header level
746 */
747
748 IF ( l_line_orig = 0 AND l_line_amount = 0 AND l_line_bal = 0) THEN
749 NULL;
750 ELSE
751 IF NOT( ( ( l_line_amount + l_line_bal = 0 )
752 OR ( sign(l_line_amount + l_line_bal) = sign (l_line_orig) )
753 )
754 AND ( sign(l_line_amount) <> sign (l_line_orig) )
755 )
756 THEN
757 fnd_message.set_name('AR', 'AR_TW_CMI_HEADER_OVERAPP_NA');
758 l_message_name := 'AR_TW_CMI_HEADER_OVERAPP_NA';
759 RAISE e_handled_error;
760 END IF;
761 END IF;
762
763
764 --
765 -- Default trx_date
766 -- Bugfix 2745276
767 -- The trx date will be latest of credited transaction and sysdate
768 --
769
770 l_crtrx_date := trunc(l_credited_trx_rec.trx_date);
771 l_sysdate := trunc(SYSDATE);
772
773 IF (l_sysdate < l_crtrx_date) THEN
774 l_cm_header.trx_date := l_crtrx_date;
775 ELSE
776 l_cm_header.trx_date := l_sysdate;
777 END IF;
778
779 --
780 -- Default currency code
781 --
782 l_cm_header.invoice_currency_code := l_credited_trx_rec.invoice_currency_code;
783 l_cm_header.exchange_date := l_credited_trx_rec.exchange_date;
784 l_cm_header.exchange_rate_type := l_credited_trx_rec.exchange_rate_type;
785 l_cm_header.exchange_rate := l_credited_trx_rec.exchange_rate;
786
787 --
788 -- Default created_from
789 --
790 IF l_cm_header.created_from IS NULL
791 THEN
792 l_cm_header.created_from := 'ARXTWCMI';
793 END IF;
794
795 -- Bug 2105483 : rather then calling arp_global at the start
796 -- of the package, where it can error out NOCOPY since org_id is not yet set,
797 -- do the call right before it is needed
798
799 -- 5885313 commented out init routine here.
800 -- arp_global.init_global;
801
802 IF PG_DEBUG in ('Y', 'C') THEN
803 arp_util.debug(' Org from arp_global is ' || arp_global.sysparam.org_id
804 || ' , SOB from arp_global is '|| arp_global.sysparam.set_of_books_id
805 || ' , SOB from trx_global is '|| arp_trx_global.system_info.system_parameters.set_of_books_id
806 );
807 END IF;
808
809 ARP_PROCESS_CREDIT_UTIL.GET_CM_HEADER_DEFAULTS(
810 -- bug 3796595, pass l_cm_header.trx_date instead of NULL
811 l_cm_header.trx_date, -- p_trx_date,
812 l_credited_trx_rec.customer_trx_id,
813 NULL, -- p_customer_trx_id,
814 p_batch_source_id, -- bug 2347286, use provided BS id
815 p_gl_date, -- p_gl_date, /*Bug 9536019*/
816 NULL, -- p_currency_code,
817 NULL, -- p_cust_trx_type_id,
818 NULL, -- p_ship_to_customer_id,
819 NULL, -- p_ship_to_site_use_id,
820 NULL, -- p_ship_to_contact_id,
821 NULL, -- p_bill_to_customer_id,
822 NULL, -- p_bill_to_site_use_id,
823 NULL, -- p_bill_to_contact_id,
824 NULL, -- p_primary_salesrep_id,
825 NULL, -- p_receipt_method_id,
826 NULL, -- p_customer_bank_account_id,
827 NULL, -- p_paying_customer_id,
828 NULL, -- p_paying_site_use_id,
829 NULL, -- Name_In('TCMI_HEADER.ship_via'),
830 NULL, -- Name_In('TCMI_HEADER.fob_point'),
831 NULL, -- p_invoicing_rule_id,
832 NULL, -- Name_In('TCMI_HEADER.rev_recog_run_flag'),
833 NULL, -- p_complete_flag,
834 ARP_GLOBAL.sysparam.salesrep_required_flag, -- Name_In('AR_WORLD.salesrep_required_flag'),
835 -- credited trx info
836 l_credited_trx_rec.batch_source_id,
837 l_credited_trx_rec.bs_credit_memo_batch_source_id, -- Name_In('TCMI_CRTRX.bs_credit_memo_batch_source_id'),
838 l_credited_trx_rec.rab_batch_source_id, -- Name_In('TCMI_HEADER.rab_batch_source_id'),
839 NULL, -- Name_In('AR_WORLD.ar_ra_batch_source'),
840 l_credited_trx_rec.cust_trx_type_id,
841 l_credited_trx_rec.ctt_credit_memo_type_id, -- Name_In('TCMI_CRTRX.ctt_credit_memo_type_id'),
842 trunc(l_credited_trx_rec.gd_gl_date), -- credited invoice's gl_date
843 trunc(l_credited_trx_rec.trx_date), -- batch gl_date
844 l_credited_trx_rec.ship_to_customer_id,
845 l_credited_trx_rec.ship_to_site_use_id,
846 l_credited_trx_rec.ship_to_contact_id,
847 l_credited_trx_rec.bill_to_customer_id,
848 l_credited_trx_rec.bill_to_site_use_id,
849 l_credited_trx_rec.bill_to_contact_id,
850 l_credited_trx_rec.primary_salesrep_id,
851 l_credited_trx_rec.ctt_open_receivables_flag, -- Name_In('TCMI_CRTRX.ctt_open_receivables_flag'),
852 l_credited_trx_rec.receipt_method_id,
853 l_credited_trx_rec.customer_bank_account_id,
854 l_credited_trx_rec.ship_via, -- Name_In('TCMI_CRTRX.ship_via'),
855 l_credited_trx_rec.ship_date_actual, -- app_date.field_to_date('TCMI_CRTRX.ship_date_actual'),
856 l_credited_trx_rec.waybill_number, -- Name_In('TCMI_CRTRX.waybill_number'),
857 l_credited_trx_rec.fob_point, -- Name_In('TCMI_CRTRX.fob_point'),
858 --
859 l_cm_header.batch_source_id,
860 l_default_bs_name,
861 l_auto_trx_numbering_flag,
862 l_bs_type,
863 l_copy_doc_number_flag,
864 l_bs_default_cust_trx_type_id,
865 l_cm_header.cust_trx_type_id,
866 l_default_type_name,
867 l_open_receivable_flag,
868 l_post_to_gl_flag,
869 l_allow_freight_flag,
870 l_creation_sign,
871 l_allow_overapplication_flag,
872 l_natural_app_only_flag,
873 l_tax_calculate_flag,
874 l_cm_header.printing_option,
875 l_default_gl_date,
876 l_cm_header.ship_to_customer_id,
877 l_cm_header.ship_to_site_use_id,
878 l_cm_header.ship_to_contact_id,
879 l_cm_header.bill_to_customer_id,
880 l_cm_header.bill_to_site_use_id,
881 l_cm_header.bill_to_contact_id,
882 l_cm_header.primary_salesrep_id,
883 l_cm_header.receipt_method_id,
884 l_cm_header.customer_bank_account_id,
885 l_cm_header.paying_customer_id,
886 l_cm_header.paying_site_use_id,
887 l_default_ship_via,
888 l_default_ship_date_actual,
889 l_default_waybill_number,
890 l_default_fob_point);
891 --
892 -- However, if values have been passed in, use those
893 --
894
895
896
897 IF PG_DEBUG in ('Y', 'C') THEN
898 arp_util.debug('l_cm_header.batch_source_id = '
899 || to_char(l_cm_header.batch_source_id));
900 arp_util.debug('l_cm_header.cust_trx_type_id = '
901 || to_char(l_cm_header.cust_trx_type_id));
902 arp_util.debug('l_cm_header.primary_salesrep_id = '
903 || to_char(l_cm_header.primary_salesrep_id));
904 arp_util.debug('l_cm_header.bill_to_customer_id = '
905 || to_char(l_cm_header.bill_to_customer_id));
906 arp_util.debug('l_cm_header.bill_to_site_use_id = '
907 || to_char(l_cm_header.bill_to_site_use_id));
908 arp_util.debug('l_cm_header.bill_to_contact_id = '
909 || to_char(l_cm_header.bill_to_contact_id));
910 arp_util.debug('l_cm_header.ship_to_customer_id = '
911 || to_char(l_cm_header.ship_to_customer_id));
912 arp_util.debug('l_cm_header.ship_to_site_use_id = '
913 || to_char(l_cm_header.ship_to_site_use_id));
914 arp_util.debug('l_cm_header.ship_to_contact_id = '
915 || to_char(l_cm_header.ship_to_contact_id));
916 arp_util.debug('l_cm_header.receipt_method_id = '
917 || to_char(l_cm_header.receipt_method_id));
918 arp_util.debug('l_cm_header.paying_customer_id = '
919 || to_char(l_cm_header.paying_customer_id));
920 arp_util.debug('l_cm_header.customer_bank_account_id = '
921 || to_char(l_cm_header.customer_bank_account_id));
922 arp_util.debug('l_cm_header.printing_option = '
923 || l_cm_header.printing_option);
924 arp_util.debug('l_cm_header.set_of_books_id = '
925 || to_char(l_cm_header.set_of_books_id));
926 arp_util.debug('l_cm_header.legal_entity_id = '
927 || to_char(l_cm_header.legal_entity_id));
928 END IF;
929
930
931 --- Assign individual in parameter values to l_cm_header
932 --- if not null. The transaction flexfields need to be
933 --- set to the parameter values even if NULL is passed in
934
935 IF p_cust_trx_type_id IS NOT NULL THEN
936 l_cm_header.CUST_TRX_TYPE_ID := p_cust_trx_type_id ;
937 ELSE
938 IF l_cm_header.cust_trx_type_id IS NULL THEN
939 ROLLBACK TO Credit_Transaction_Pub;
940 IF PG_DEBUG in ('Y', 'C') THEN
941 arp_util.debug('Error: l_cm_header.cust_trx_type_id IS NULL');
942 END IF;
943 fnd_message.set_name( 'AR', 'AR_TW_BAD_DATE_TRX_TYPE');
944 l_message_name := 'AR_TW_BAD_DATE_TRX_TYPE' ;
945 RAISE e_handled_error;
946 END IF;
947 END IF;
948
949 IF p_batch_id IS NOT NULL THEN
950 l_cm_header.batch_id := p_batch_id;
951 END IF;
952 IF p_trx_number IS NOT NULL THEN
953 l_cm_header.trx_number := p_trx_number;
954 END IF;
955 IF p_trx_date IS NOT NULL THEN
956 l_cm_header.trx_date := trunc(p_trx_date);
957 END IF;
958 IF p_complete_flag IS NOT NULL THEN
959 l_cm_header.complete_flag := p_complete_flag;
960 END IF;
961 IF p_batch_source_id IS NOT NULL THEN
962 l_cm_header.batch_source_id := p_batch_source_id;
963 END IF;
964 IF p_currency_code IS NOT NULL THEN
965 l_cm_header.invoice_currency_code := p_currency_code;
966 END IF;
967 IF p_exchange_date IS NOT NULL THEN
968 l_cm_header.exchange_date := p_exchange_date;
969 END IF;
970 IF p_exchange_rate_type IS NOT NULL THEN
971 l_cm_header.exchange_rate_type := p_exchange_rate_type;
972 END IF;
973 IF p_exchange_rate IS NOT NULL THEN
974 l_cm_header.exchange_rate := p_exchange_rate;
975 END IF;
976 IF p_method_for_rules IS NOT NULL THEN
977 l_cm_header.credit_method_for_rules := p_method_for_rules;
978 END IF;
979 IF p_split_term_method IS NOT NULL THEN
980 l_cm_header.credit_method_for_installments := p_split_term_method;
981 END IF;
982 IF p_initial_customer_trx_id IS NOT NULL THEN
983 l_cm_header.initial_customer_trx_id := p_initial_customer_trx_id;
984 END IF;
985 IF p_primary_salesrep_id IS NOT NULL THEN
986 l_cm_header.primary_salesrep_id := p_primary_salesrep_id;
987 END IF;
988 IF p_invoicing_rule_id IS NOT NULL THEN
989 l_cm_header.invoicing_rule_id := p_invoicing_rule_id;
990 ELSE
991 l_cm_header.invoicing_rule_id := l_credited_trx_rec.invoicing_rule_id;
992 END IF;
993 IF p_bill_to_customer_id IS NOT NULL THEN
994 l_cm_header.bill_to_customer_id := p_bill_to_customer_id;
995 END IF;
996 IF p_bill_to_address_id IS NOT NULL THEN
997 l_cm_header.bill_to_address_id := p_bill_to_address_id;
998 END IF;
999 IF p_bill_to_site_use_id IS NOT NULL THEN
1000 l_cm_header.bill_to_site_use_id := p_bill_to_site_use_id;
1001 END IF;
1002 IF p_bill_to_contact_id IS NOT NULL THEN
1003 l_cm_header.bill_to_contact_id := p_bill_to_contact_id;
1004 END IF;
1005 IF p_ship_to_customer_id IS NOT NULL THEN
1006 l_cm_header.ship_to_customer_id := p_ship_to_customer_id;
1007 END IF;
1008 IF p_ship_to_address_id IS NOT NULL THEN
1009 l_cm_header.ship_to_address_id := p_ship_to_address_id;
1010 END IF;
1011 IF p_ship_to_site_use_id IS NOT NULL THEN
1012 l_cm_header.ship_to_site_use_id := p_ship_to_site_use_id;
1013 END IF;
1014 IF p_ship_to_contact_id IS NOT NULL THEN
1015 l_cm_header.ship_to_contact_id := p_ship_to_contact_id;
1016 END IF;
1017 IF p_receipt_method_id IS NOT NULL THEN
1018 l_cm_header.receipt_method_id := p_receipt_method_id;
1019 END IF;
1020 IF p_paying_customer_id IS NOT NULL THEN
1021 l_cm_header.paying_customer_id := p_paying_customer_id;
1022 END IF;
1023 IF p_paying_site_use_id IS NOT NULL THEN
1024 l_cm_header.paying_site_use_id := p_paying_site_use_id;
1025 END IF;
1026 IF p_customer_bank_account_id IS NOT NULL THEN
1027 l_cm_header.customer_bank_account_id := p_customer_bank_account_id;
1028 END IF;
1029 IF p_printing_option IS NOT NULL THEN
1030 l_cm_header.printing_option := p_printing_option;
1031 END IF;
1032 IF p_printing_last_printed IS NOT NULL THEN
1033 l_cm_header.printing_last_printed := p_printing_last_printed;
1034 END IF;
1035 IF p_printing_pending IS NOT NULL THEN
1036 l_cm_header.printing_pending := p_printing_pending;
1037 END IF;
1038 IF p_reason_code IS NOT NULL THEN
1039 l_cm_header.reason_code := p_reason_code;
1040 END IF;
1041 IF p_doc_sequence_value IS NOT NULL THEN
1042 l_cm_header.doc_sequence_value := p_doc_sequence_value;
1043 END IF;
1044 IF p_doc_sequence_id IS NOT NULL THEN
1045 l_cm_header.doc_sequence_id := p_doc_sequence_id;
1046 END IF;
1047 IF p_customer_reference IS NOT NULL THEN
1048 l_cm_header.customer_reference := p_customer_reference;
1049 END IF;
1050 IF p_customer_reference_date IS NOT NULL THEN
1051 l_cm_header.customer_reference_date := p_customer_reference_date;
1052 END IF;
1053 IF p_internal_notes IS NOT NULL THEN
1054 l_cm_header.internal_notes := p_internal_notes;
1055 END IF;
1056 IF p_set_of_books_id IS NOT NULL THEN
1057 l_cm_header.set_of_books_id := p_set_of_books_id;
1058 END IF;
1059 IF p_old_trx_number IS NOT NULL THEN
1060 l_cm_header.old_trx_number := p_old_trx_number;
1061 END IF;
1062 IF p_attribute_category IS NOT NULL THEN
1063 l_cm_header.attribute_category := p_attribute_category;
1064 END IF;
1065 IF p_attribute1 IS NOT NULL THEN
1066 l_cm_header.attribute1 := p_attribute1;
1067 END IF;
1068 IF p_attribute2 IS NOT NULL THEN
1069 l_cm_header.attribute2 := p_attribute2;
1070 END IF;
1071 IF p_attribute3 IS NOT NULL THEN
1072 l_cm_header.attribute3 := p_attribute3;
1073 END IF;
1074 IF p_attribute4 IS NOT NULL THEN
1075 l_cm_header.attribute4 := p_attribute4;
1076 END IF;
1077 IF p_attribute5 IS NOT NULL THEN
1078 l_cm_header.attribute5 := p_attribute5;
1079 END IF;
1080 IF p_attribute6 IS NOT NULL THEN
1081 l_cm_header.attribute6 := p_attribute6;
1082 END IF;
1083 IF p_attribute7 IS NOT NULL THEN
1084 l_cm_header.attribute7 := p_attribute7;
1085 END IF;
1086 IF p_attribute8 IS NOT NULL THEN
1087 l_cm_header.attribute8 := p_attribute8;
1088 END IF;
1089 IF p_attribute9 IS NOT NULL THEN
1090 l_cm_header.attribute9 := p_attribute9;
1091 END IF;
1092 IF p_attribute10 IS NOT NULL THEN
1093 l_cm_header.attribute10 := p_attribute10;
1094 END IF;
1095 IF p_attribute11 IS NOT NULL THEN
1096 l_cm_header.attribute11 := p_attribute11;
1097 END IF;
1098 IF p_attribute12 IS NOT NULL THEN
1099 l_cm_header.attribute12 := p_attribute12;
1100 END IF;
1101 IF p_attribute13 IS NOT NULL THEN
1102 l_cm_header.attribute13 := p_attribute13;
1103 END IF;
1104 IF p_attribute14 IS NOT NULL THEN
1105 l_cm_header.attribute14 := p_attribute14;
1106 END IF;
1107 IF p_attribute15 IS NOT NULL THEN
1108 l_cm_header.attribute15 := p_attribute15;
1109 END IF;
1110
1111 l_cm_header.interface_header_context := p_interface_header_context;
1112 l_cm_header.interface_header_attribute1 := p_interface_header_attribute1;
1113 l_cm_header.interface_header_attribute2 := p_interface_header_attribute2;
1114 l_cm_header.interface_header_attribute3 := p_interface_header_attribute3;
1115 l_cm_header.interface_header_attribute4 := p_interface_header_attribute4;
1116 l_cm_header.interface_header_attribute5 := p_interface_header_attribute5;
1117 l_cm_header.interface_header_attribute6 := p_interface_header_attribute6;
1118 l_cm_header.interface_header_attribute7 := p_interface_header_attribute7;
1119 l_cm_header.interface_header_attribute8 := p_interface_header_attribute8;
1120 l_cm_header.interface_header_attribute9 := p_interface_header_attribute9;
1121 l_cm_header.interface_header_attribute10 := p_interface_header_attribute10;
1122 l_cm_header.interface_header_attribute11 := p_interface_header_attribute11;
1123 l_cm_header.interface_header_attribute12 := p_interface_header_attribute12;
1124 l_cm_header.interface_header_attribute13 := p_interface_header_attribute13;
1125 l_cm_header.interface_header_attribute14 := p_interface_header_attribute14;
1126 l_cm_header.interface_header_attribute15 := p_interface_header_attribute15;
1127 /*4556000-4606558*/
1128 l_cm_header.global_attribute_category := p_global_attribute_category;
1129 l_cm_header.global_attribute1 := p_global_attribute1;
1130 l_cm_header.global_attribute2 := p_global_attribute2;
1131 l_cm_header.global_attribute3 := p_global_attribute3;
1132 l_cm_header.global_attribute4 := p_global_attribute4;
1133 l_cm_header.global_attribute5 := p_global_attribute5;
1134 l_cm_header.global_attribute6 := p_global_attribute6;
1135 l_cm_header.global_attribute7 := p_global_attribute7;
1136 l_cm_header.global_attribute8 := p_global_attribute8;
1137 l_cm_header.global_attribute9 := p_global_attribute9;
1138 l_cm_header.global_attribute10 := p_global_attribute10;
1139 l_cm_header.global_attribute11 := p_global_attribute11;
1140 l_cm_header.global_attribute12 := p_global_attribute12;
1141 l_cm_header.global_attribute13 := p_global_attribute13;
1142 l_cm_header.global_attribute14 := p_global_attribute14;
1143 l_cm_header.global_attribute15 := p_global_attribute15;
1144 l_cm_header.global_attribute16 := p_global_attribute16;
1145 l_cm_header.global_attribute17 := p_global_attribute17;
1146 l_cm_header.global_attribute18 := p_global_attribute18;
1147 l_cm_header.global_attribute19 := p_global_attribute19;
1148 l_cm_header.global_attribute20 := p_global_attribute20;
1149 l_cm_header.global_attribute21 := p_global_attribute21;
1150 l_cm_header.global_attribute22 := p_global_attribute22;
1151 l_cm_header.global_attribute23 := p_global_attribute23;
1152 l_cm_header.global_attribute24 := p_global_attribute24;
1153 l_cm_header.global_attribute25 := p_global_attribute25;
1154 l_cm_header.global_attribute26 := p_global_attribute26;
1155 l_cm_header.global_attribute27 := p_global_attribute27;
1156 l_cm_header.global_attribute28 := p_global_attribute28;
1157 l_cm_header.global_attribute29 := p_global_attribute29;
1158 l_cm_header.global_attribute30 := p_global_attribute30;
1159 IF p_default_ussgl_trx_code IS NOT NULL THEN
1160 l_cm_header.default_ussgl_transaction_code := p_default_ussgl_trx_code;
1161 END IF;
1162 IF p_comments IS NOT NULL THEN
1163 l_cm_header.comments := p_comments;
1164 END IF;
1165
1166 --
1167 -- default gl_date
1168 --
1169
1170 IF p_gl_date IS NOT NULL THEN
1171 l_default_gl_date := p_gl_date;
1172 END IF;
1173
1174 /* Bug 3152685 Setting the l_compute_tax to the value of the
1175 parameter passed in which is N , for Header level credits. */
1176
1177 l_compute_tax := p_compute_tax;
1178
1179 IF PG_DEBUG in ('Y', 'C') THEN
1180 arp_util.debug('l_compute_tax = ' || l_compute_tax);
1181 END IF;
1182
1183 --
1184 -- call the entity handler
1185 --
1186
1187 BEGIN
1188 ARP_PROCESS_CREDIT.INSERT_HEADER(
1189 p_form_name,
1190 1.0,
1191 l_cm_header,
1192 'CM',
1193 l_default_gl_date,
1194 -- p_primary_salesrep_id,
1195 l_cm_header.primary_salesrep_id,
1196 l_cm_header.invoice_currency_code, -- p_currency_code,
1197 p_prev_customer_trx_id,
1198 p_line_percent,
1199 p_freight_percent,
1200 l_line_amount,
1201 l_freight_amount,
1202 l_compute_tax,
1203 p_trx_number,
1204 l_customer_trx_id,
1205 l_computed_tax_percent,
1206 l_computed_tax_amount,
1207 p_status);
1208 l_computed_tax_percent := l_computed_tax_percent;
1209 p_computed_tax_amount := l_computed_tax_amount;
1210
1211 EXCEPTION
1212 WHEN OTHERS THEN
1213 ROLLBACK TO Credit_Transaction_Pub;
1214 IF PG_DEBUG in ('Y', 'C') THEN
1215 arp_util.debug('EXCEPTION: Debug point 2 : Error Calling arp_process_credit.insert_header.');
1216 END IF;
1217 l_debug_point := 2;
1218 l_ue_message := SUBSTR('EXCEPTION: Error Calling arp_process_credit.insert_header '
1219 || SQLERRM, 1, 2000);
1220 RAISE e_unexpected_error;
1221 END ;
1222
1223 /* R12 eTax uptake - call to calculate_tax to create tax lines */
1224
1225 ARP_ETAX_SERVICES_PKG.Calculate_tax (
1226 p_customer_trx_id => l_customer_trx_id,
1227 p_action => 'CREATE',
1228 x_return_status => l_return_status,
1229 x_msg_count => l_msg_count,
1230 x_msg_data => l_msg_data);
1231
1232 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1233 p_status := 'ETAX_ERROR';
1234 END IF;
1235
1236 /*
1237 TDEY 99/09/21 : bug 983278 : Need Post commit logic !!!
1238
1239 Bug3041195: Changed the parameters passed to post_commit. We need to pass
1240 the value for the credited trx invoice type for - overapplication flag;
1241 natural application flag and previous open receivables flag
1242
1243 */
1244
1245 BEGIN
1246 arp_process_header.post_commit(
1247 p_form_name => p_form_name
1248 ,p_form_version => 70.1
1249 ,p_customer_trx_id => l_customer_trx_id
1250 ,p_previous_customer_trx_id => p_prev_customer_trx_id
1251 ,p_complete_flag => l_cm_header.complete_flag
1252 ,p_trx_open_receivables_flag => l_open_receivable_flag
1253 ,p_prev_open_receivables_flag => l_credited_trx_rec.ctt_open_receivables_flag
1254 ,p_creation_sign => l_creation_sign
1255 ,p_allow_overapplication_flag => l_credited_trx_rec.ctt_allow_overapp_flag
1256 ,p_natural_application_flag => l_credited_trx_rec.ctt_natural_app_only_flag
1257 ,p_cash_receipt_id => NULL
1258 );
1259 EXCEPTION
1260 WHEN OTHERS THEN
1261 ROLLBACK TO Credit_Transaction_Pub;
1262 IF PG_DEBUG in ('Y', 'C') THEN
1263 arp_util.debug('EXCEPTION: Debug point 3 : Error Calling arp_process_header.post_commit.');
1264 END IF;
1265 l_debug_point := 3;
1266 l_ue_message := SUBSTR('Error Calling arp_process_header.post_commit '
1267 || SQLERRM, 1, 2000);
1268 RAISE e_unexpected_error;
1269 END ;
1270
1271 /*
1272 Bug 2527439 : check if doc sequence is required/used
1273 Bug 3041195 : 1. ra_customer_trx_table was not getting updated with the
1274 doc seq no/value when copy_doc_number_flag = 'N'. Modified
1275 if ..else clause.
1276 2. Document sequence Nos were getting lost if errors were
1277 encountered during completion checking. Re-arranged the
1278 code to generate nos only if no errors were encountered.
1279 */
1280
1281
1282 BEGIN
1283 get_doc_seq(222,
1284 l_default_type_name,
1285 arp_global.set_of_books_id,
1286 'A',
1287 l_cm_header.trx_date,
1288 l_cm_header.complete_flag,
1289 l_cm_header.doc_sequence_value,
1290 l_cm_header.doc_sequence_id,
1291 l_doc_seq_status);
1292
1293 IF l_doc_seq_status = FND_API.G_RET_STS_ERROR THEN
1294 RAISE e_unexpected_error;
1295 END IF;
1296
1297
1298 IF PG_DEBUG in ('Y', 'C') THEN
1299 arp_util.debug('create_header_cm: ' || 'l_copy_doc_number_flag = ' || l_copy_doc_number_flag);
1300 arp_util.debug('create_header_cm: ' || 'doc_sequence_value = ' || to_char(l_cm_header.doc_sequence_value));
1301 arp_util.debug('create_header_cm: ' || 'doc_sequence_id = ' || to_char(l_cm_header.doc_sequence_id));
1302 END IF;
1303
1304 -- check copy_doc_number_flag
1305 IF l_cm_header.doc_sequence_value is not null THEN
1306
1307 IF ( NVL(l_copy_doc_number_flag,'N') = 'Y' ) THEN
1308 l_cm_header.old_trx_number := p_trx_number;
1309 l_cm_header.trx_number := to_char(l_cm_header.doc_sequence_value);
1310
1311 UPDATE ar_payment_schedules
1312 SET trx_number = l_cm_header.trx_number
1313 WHERE customer_trx_id = l_customer_trx_id;
1314 ELSE
1315 l_cm_header.trx_number := p_trx_number;
1316 END IF;
1317
1318 UPDATE ra_customer_trx
1319 SET doc_sequence_value = l_cm_header.doc_sequence_value,
1320 doc_sequence_id = l_cm_header.doc_sequence_id,
1321 trx_number = l_cm_header.trx_number,
1322 old_trx_number = l_cm_header.old_trx_number
1323 WHERE customer_trx_id = l_customer_trx_id;
1324
1325 END IF;
1326
1327
1328 EXCEPTION
1329 WHEN OTHERS THEN
1330 ROLLBACK TO Credit_Transaction_Pub;
1331 IF PG_DEBUG in ('Y', 'C') THEN
1332 arp_util.debug('create_header_cm: ' || 'Debug point 4 : Error Processing Doc Seq No.');
1333 END IF;
1334 l_debug_point := 4;
1335 l_ue_message := SUBSTR(' Error Processing Doc Seq No ' || SQLERRM, 1, 2000);
1336 RAISE e_unexpected_error;
1337 END ;
1338
1339 p_customer_trx_id := l_customer_trx_id;
1340
1341 IF PG_DEBUG in ('Y', 'C') THEN
1342 arp_util.debug('create_header_cm: ' || 'p_customer_trx_id = ' || to_char(p_customer_trx_id));
1343 arp_util.debug('create_header_cm: ' || 'p_trx_number = ' || p_trx_number);
1344 arp_util.debug('create_header_cm: ' || 'l_compute_tax = ' || l_compute_tax);
1345 arp_util.debug('create_header_cm: ' || 'p_computed_tax_percent = ' || to_char(p_computed_tax_percent));
1346 arp_util.debug('create_header_cm: ' || 'p_computed_tax_amount = ' || to_char(p_computed_tax_amount));
1347 arp_util.debug('create_header_cm: ' || 'p_status = ' || p_status);
1348 arp_util.debug('create_header_cm()-');
1349 END IF;
1350
1351 EXCEPTION
1352 -- bug 2290738 : populate error table with message and pass value to p_status
1353
1354 WHEN e_handled_error THEN
1355 IF PG_DEBUG in ('Y', 'C') THEN
1356 arp_util.debug('EXCEPTION WHEN e_handled_error : create_header_cm');
1357 END IF;
1358 p_status := 'e_handled_error';
1359
1360 ROLLBACK TO Credit_Transaction_Pub;
1361 p_errors(1).customer_trx_id := p_prev_customer_trx_id;
1362 p_errors(1).message_name := l_message_name;
1363 p_errors(1).translated_message := fnd_message.get;
1364
1365 fnd_message.set_name( 'AR', l_message_name);
1366 FND_MSG_PUB.Add;
1367
1368 IF PG_DEBUG in ('Y', 'C') THEN
1369 arp_util.debug('create_header_cm: ' || 'p_errors(1).message_name = '
1370 || p_errors(1).message_name);
1371 arp_util.debug('create_header_cm: ' || 'p_errors(1).encoded_message = '
1372 || p_errors(1).encoded_message);
1373 arp_util.debug('create_header_cm: ' || 'p_errors(1).translated_message = '
1374 || p_errors(1).translated_message);
1375 END IF;
1376
1377 WHEN e_unexpected_error THEN
1378 IF PG_DEBUG in ('Y', 'C') THEN
1379 arp_util.debug('EXCEPTION WHEN e_unexpected_error : create_header_cm');
1380 END IF;
1381 p_status := 'e_unexpected_error';
1382
1383 ROLLBACK TO Credit_Transaction_Pub;
1384 p_errors(1).customer_trx_id := p_prev_customer_trx_id;
1385 p_errors(1).encoded_message := fnd_message.get_encoded;
1386 fnd_message.set_encoded(p_errors(1).encoded_message);
1387 p_errors(1).translated_message := fnd_message.get;
1388
1389 IF p_errors(1).translated_message IS NULL
1390 THEN
1391 p_errors(1).message_name := 'GENERIC_MESSAGE';
1392 p_errors(1).token_name_1 := 'GENERIC_TEXT';
1393 p_errors(1).token_1 := NVL(l_ue_message, 'CREATE_HEADER_CM : UNEXPECTED ERROR') ;
1394
1395 fnd_message.set_name('AR','GENERIC_MESSAGE');
1396 fnd_message.set_token('GENERIC_TEXT', p_errors(1).token_1 );
1397 FND_MSG_PUB.Add;
1398
1399 p_errors(1).translated_message := fnd_message.get;
1400 ELSE
1401 /*Bug3041195 - Set Message on API stack */
1402 fnd_message.set_encoded(p_errors(1).encoded_message);
1403 FND_MSG_PUB.Add;
1404 END IF;
1405 IF PG_DEBUG in ('Y', 'C') THEN
1406 arp_util.debug('create_header_cm: ' || 'p_errors(1).message_name = '
1407 || p_errors(1).message_name);
1408 arp_util.debug('create_header_cm: ' || 'p_errors(1).encoded_message = '
1409 || p_errors(1).encoded_message);
1410 arp_util.debug('create_header_cm: ' || 'p_errors(1).translated_message = '
1411 || p_errors(1).translated_message);
1412 END IF;
1413
1414 WHEN OTHERS THEN
1415 IF PG_DEBUG in ('Y', 'C') THEN
1416 arp_util.debug('EXCEPTION WHEN OTHERS : create_header_cm');
1417 END IF;
1418 p_status := 'others';
1419
1420 ROLLBACK TO Credit_Transaction_Pub;
1421 p_errors(1).customer_trx_id := p_prev_customer_trx_id;
1422 p_errors(1).message_name := 'GENERIC_MESSAGE';
1423 p_errors(1).token_name_1 := 'GENERIC_TEXT';
1424 p_errors(1).token_1 := 'CREATE_HEADER_CM : ERROR AT UNKNOWN POINT '|| SQLERRM ;
1425
1426 fnd_message.set_name('AR','GENERIC_MESSAGE');
1427 fnd_message.set_token('GENERIC_TEXT', p_errors(1).token_1 );
1428 FND_MSG_PUB.Add;
1429
1430 p_errors(1).translated_message := fnd_message.get;
1431 IF PG_DEBUG in ('Y', 'C') THEN
1432 arp_util.debug('create_header_cm: ' || 'p_errors(1).message_name = '
1433 || p_errors(1).message_name);
1434 arp_util.debug('create_header_cm: ' || 'p_errors(1).encoded_message = '
1435 || p_errors(1).encoded_message);
1436 arp_util.debug('create_header_cm: ' || 'p_errors(1).translated_message = '
1437 || p_errors(1).translated_message);
1438 arp_util.debug('create_header_cm: ' || 'EXCEPTION WHEN OTHERS : credit_transaction');
1439 END IF;
1440 END create_header_cm;
1441
1442 /*======================================================+
1443 | The following procedure is for line level credit |
1444 +======================================================*/
1445
1446 /*=======================================================================+
1447 | PROCEDURE |
1448 | create_line_cm |
1449 | |
1450 | DESCRIPTION |
1451 | Procedure create_line_cm - Entry point for line level |
1452 | cm creation |
1453 | ARGUMENTS : IN: |
1454 | |
1455 | OUT: |
1456 | IN/ OUT: |
1457 | |
1458 | RETURNS : |
1459 | |
1460 | NOTES |
1461 | |
1462 | KNOWN BUGS |
1463 | |
1464 | MODIFICATION HISTORY |
1465 | TDEY 22-FEB-00 Created |
1466 | MRAYMOND 21-JAN-09 Modified use of p_compute_tax flag for line
1467 | level credits to calculate or not based on
1468 | passed value.
1469 +=======================================================================*/
1470
1471 PROCEDURE create_line_cm (
1472 p_prev_customer_trx_id IN ra_customer_trx.customer_trx_id%type,
1473 p_batch_id IN ra_batches.batch_id%type,
1474 p_trx_date IN ra_customer_trx.trx_date%type,
1475 p_gl_date IN ra_cust_trx_line_gl_dist.gl_date%type,
1476 p_complete_flag IN ra_customer_trx.complete_flag%type,
1477 p_batch_source_id IN ra_batch_sources.batch_source_id%type,
1478 p_cust_trx_type_id IN ra_cust_trx_types.cust_trx_type_id%type,
1479 p_currency_code IN fnd_currencies.currency_code%type,
1480 p_exchange_date IN ra_customer_trx.exchange_date%type,
1481 p_exchange_rate_type IN ra_customer_trx.exchange_rate_type%type,
1482 p_exchange_rate IN ra_customer_trx.exchange_rate%type,
1483 p_invoicing_rule_id IN ra_customer_trx.invoicing_rule_id%type,
1484 p_method_for_rules IN ra_customer_trx.credit_method_for_rules%type,
1485 p_split_term_method IN ra_customer_trx.credit_method_for_installments%type,
1486 p_initial_customer_trx_id IN ra_customer_trx.initial_customer_trx_id%type,
1487 p_primary_salesrep_id IN ra_customer_trx.primary_salesrep_id%type,
1488 p_bill_to_customer_id IN ra_customer_trx.bill_to_customer_id%type,
1489 p_bill_to_address_id IN ra_customer_trx.bill_to_address_id%type,
1490 p_bill_to_site_use_id IN ra_customer_trx.bill_to_site_use_id%type,
1491 p_bill_to_contact_id IN ra_customer_trx.bill_to_contact_id%type,
1492 p_ship_to_customer_id IN ra_customer_trx.ship_to_customer_id%type,
1493 p_ship_to_address_id IN ra_customer_trx.ship_to_address_id%type,
1494 p_ship_to_site_use_id IN ra_customer_trx.ship_to_site_use_id%type,
1495 p_ship_to_contact_id IN ra_customer_trx.ship_to_contact_id%type,
1496 p_receipt_method_id IN ra_customer_trx.receipt_method_id%type,
1497 p_paying_customer_id IN ra_customer_trx.paying_customer_id%type,
1498 p_paying_site_use_id IN ra_customer_trx.paying_site_use_id%type,
1499 p_customer_bank_account_id IN ra_customer_trx.customer_bank_account_id%type,
1500 p_printing_option IN ra_customer_trx.printing_option%type,
1501 p_printing_last_printed IN ra_customer_trx.printing_last_printed%type,
1502 p_printing_pending IN ra_customer_trx.printing_pending%type,
1503 p_doc_sequence_value IN ra_customer_trx.doc_sequence_value%type,
1504 p_doc_sequence_id IN ra_customer_trx.doc_sequence_id%type,
1505 p_reason_code IN ra_customer_trx.reason_code%type,
1506 p_customer_reference IN ra_customer_trx.customer_reference%type,
1507 p_customer_reference_date IN ra_customer_trx.customer_reference_date%type,
1508 p_internal_notes IN ra_customer_trx.internal_notes%type,
1509 p_set_of_books_id IN ra_customer_trx.set_of_books_id%type,
1510 p_created_from IN ra_customer_trx.created_from%type,
1511 p_old_trx_number IN ra_customer_trx.old_trx_number%type,
1512 p_attribute_category IN ra_customer_trx.attribute_category%type,
1513 p_attribute1 IN ra_customer_trx.attribute1%type,
1514 p_attribute2 IN ra_customer_trx.attribute2%type,
1515 p_attribute3 IN ra_customer_trx.attribute3%type,
1516 p_attribute4 IN ra_customer_trx.attribute4%type,
1517 p_attribute5 IN ra_customer_trx.attribute5%type,
1518 p_attribute6 IN ra_customer_trx.attribute6%type,
1519 p_attribute7 IN ra_customer_trx.attribute7%type,
1520 p_attribute8 IN ra_customer_trx.attribute8%type,
1521 p_attribute9 IN ra_customer_trx.attribute9%type,
1522 p_attribute10 IN ra_customer_trx.attribute10%type,
1523 p_attribute11 IN ra_customer_trx.attribute11%type,
1524 p_attribute12 IN ra_customer_trx.attribute12%type,
1525 p_attribute13 IN ra_customer_trx.attribute13%type,
1526 p_attribute14 IN ra_customer_trx.attribute14%type,
1527 p_attribute15 IN ra_customer_trx.attribute15%type,
1528 p_interface_header_context IN ra_customer_trx.interface_header_context%type,
1529 p_interface_header_attribute1 IN ra_customer_trx.interface_header_attribute1%type,
1530 p_interface_header_attribute2 IN ra_customer_trx.interface_header_attribute2%type,
1531 p_interface_header_attribute3 IN ra_customer_trx.interface_header_attribute3%type,
1532 p_interface_header_attribute4 IN ra_customer_trx.interface_header_attribute4%type,
1533 p_interface_header_attribute5 IN ra_customer_trx.interface_header_attribute5%type,
1534 p_interface_header_attribute6 IN ra_customer_trx.interface_header_attribute6%type,
1535 p_interface_header_attribute7 IN ra_customer_trx.interface_header_attribute7%type,
1536 p_interface_header_attribute8 IN ra_customer_trx.interface_header_attribute8%type,
1537 p_interface_header_attribute9 IN ra_customer_trx.interface_header_attribute9%type,
1538 p_interface_header_attribute10 IN ra_customer_trx.interface_header_attribute10%type,
1539 p_interface_header_attribute11 IN ra_customer_trx.interface_header_attribute11%type,
1540 p_interface_header_attribute12 IN ra_customer_trx.interface_header_attribute12%type,
1541 p_interface_header_attribute13 IN ra_customer_trx.interface_header_attribute13%type,
1542 p_interface_header_attribute14 IN ra_customer_trx.interface_header_attribute14%type,
1543 p_interface_header_attribute15 IN ra_customer_trx.interface_header_attribute15%type,
1544 p_default_ussgl_trx_code IN ra_customer_trx.default_ussgl_transaction_code%type,
1545 p_line_percent IN number,
1546 p_freight_percent IN number,
1547 p_line_amount IN ra_customer_trx_lines.extended_amount%type,
1548 p_freight_amount IN ra_customer_trx_lines.extended_amount%type,
1549 p_compute_tax IN varchar2,
1550 p_comments IN ra_customer_trx.comments%type,
1551 p_customer_trx_id OUT NOCOPY ra_customer_trx.customer_trx_id%type,
1552 p_trx_number IN OUT NOCOPY ra_customer_trx.trx_number%type,
1553 p_computed_tax_percent IN OUT NOCOPY number,
1554 p_computed_tax_amount IN OUT NOCOPY ra_customer_trx_lines.extended_amount%type,
1555 p_errors OUT NOCOPY arp_trx_validate.Message_Tbl_Type,
1556 p_status OUT NOCOPY varchar2,
1557 p_credit_line_table IN arw_cm_cover.credit_lines_table_type,
1558 p_purchase_order IN ra_customer_trx.purchase_order%type,
1559 p_purchase_order_revision IN ra_customer_trx.purchase_order_revision%type,
1560 p_purchase_order_date IN ra_customer_trx.purchase_order_date%type,
1561 p_legal_entity_id IN ra_customer_trx.legal_entity_id%type ,
1562 /*4556000-4606558*/
1563 p_global_attribute_category IN ra_customer_trx.global_attribute_category%type default null,
1564 p_global_attribute1 IN ra_customer_trx.global_attribute1%type default NULL,
1565 p_global_attribute2 IN ra_customer_trx.global_attribute2%type default NULL,
1566 p_global_attribute3 IN ra_customer_trx.global_attribute3%type default NULL,
1567 p_global_attribute4 IN ra_customer_trx.global_attribute4%type default NULL,
1568 p_global_attribute5 IN ra_customer_trx.global_attribute5%type default NULL,
1569 p_global_attribute6 IN ra_customer_trx.global_attribute6%type default NULL,
1570 p_global_attribute7 IN ra_customer_trx.global_attribute7%type default NULL,
1571 p_global_attribute8 IN ra_customer_trx.global_attribute8%type default NULL,
1572 p_global_attribute9 IN ra_customer_trx.global_attribute9%type default NULL,
1573 p_global_attribute10 IN ra_customer_trx.global_attribute10%type default NULL,
1574 p_global_attribute11 IN ra_customer_trx.global_attribute11%type default NULL,
1575 p_global_attribute12 IN ra_customer_trx.global_attribute12%type default NULL,
1576 p_global_attribute13 IN ra_customer_trx.global_attribute13%type default NULL,
1577 p_global_attribute14 IN ra_customer_trx.global_attribute14%type default NULL,
1578 p_global_attribute15 IN ra_customer_trx.global_attribute15%type default NULL,
1579 p_global_attribute16 IN ra_customer_trx.global_attribute16%type default NULL,
1580 p_global_attribute17 IN ra_customer_trx.global_attribute17%type default NULL,
1581 p_global_attribute18 IN ra_customer_trx.global_attribute18%type default NULL,
1582 p_global_attribute19 IN ra_customer_trx.global_attribute19%type default NULL,
1583 p_global_attribute20 IN ra_customer_trx.global_attribute20%type default NULL,
1584 p_global_attribute21 IN ra_customer_trx.global_attribute21%type default NULL,
1585 p_global_attribute22 IN ra_customer_trx.global_attribute22%type default NULL,
1586 p_global_attribute23 IN ra_customer_trx.global_attribute23%type default NULL,
1587 p_global_attribute24 IN ra_customer_trx.global_attribute24%type default NULL,
1588 p_global_attribute25 IN ra_customer_trx.global_attribute25%type default NULL,
1589 p_global_attribute26 IN ra_customer_trx.global_attribute26%type default NULL,
1590 p_global_attribute27 IN ra_customer_trx.global_attribute27%type default NULL,
1591 p_global_attribute28 IN ra_customer_trx.global_attribute28%type default NULL,
1592 p_global_attribute29 IN ra_customer_trx.global_attribute29%type default NULL,
1593 p_global_attribute30 IN ra_customer_trx.global_attribute30%type default NULL
1594 )
1595 AS
1596
1597 --
1598 p_do_tax VARCHAR2(1) := 'N';
1599 p_do_freight VARCHAR2(1) := 'N';
1600 p_do_salescredits VARCHAR2(1) := 'N';
1601 p_do_autoaccounting VARCHAR2(1) := 'N';
1602 p_commit VARCHAR2(1) := FND_API.G_TRUE;
1603 l_compute_tax VARCHAR2(1);
1604 l_customer_trx_id ra_customer_trx.customer_trx_id%type;
1605 l_temp varchar2(30);
1606 l_start_time varchar2(100);
1607 l_header_time varchar2(100);
1608 l_line_time varchar2(100);
1609 l_update_time varchar2(100);
1610 l_start date;
1611 l_end date;
1612 l_time number := 0;
1613 l_start_hsec number := 0;
1614 l_min_time number := 99999999999;
1615 l_max_time number := 0;
1616 l_elapsed_time number := 0;
1617 l_commitment_rec arp_process_commitment.commitment_rec_type;
1618 l_return_status varchar2(1);
1619 l_msg_count NUMBER;
1620 l_msg_data varchar2(4000);
1621 l_errors arp_trx_validate.Message_Tbl_Type;
1622 l_new_customer_trx_id ra_customer_trx.customer_trx_id%type;
1623 l_cursor INTEGER;
1624 i BINARY_INTEGER := 0;
1625 n BINARY_INTEGER := 0;
1626 l_ignore INTEGER;
1627 l_sql VARCHAR2(1000);
1628 l_class ra_cust_trx_types.type%TYPE ;
1629 l_commitment_gl_date ra_cust_trx_line_gl_dist.gl_date%type ;
1630 l_prev_trx_gl_date ra_cust_trx_line_gl_dist.gl_date%type ;
1631
1632
1633 l_rec_gl_date ra_cust_trx_line_gl_dist.gl_date%type;
1634 l_trx_rec ra_customer_trx_cr_trx_v%rowtype;
1635 l_batch_rec ra_batches%rowtype;
1636
1637 l_cr CONSTANT char(1) := '
1638 ';
1639 j number;
1640
1641 ct_customer_trx_line_id ra_customer_trx_lines.customer_trx_line_id%TYPE;
1642 ct_quantity_invoiced ra_customer_trx_lines.quantity_invoiced%TYPE;
1643 ct_extended_amount ra_customer_trx_lines.extended_amount%TYPE;
1644 ----
1645 l_dist_index NUMBER ;
1646 l_lines_index NUMBER ;
1647 l_credit_memo_type_id ra_cust_trx_types.credit_memo_type_id%type;
1648 l_line_matched NUMBER := 0;
1649 l_lines_to_delete_index NUMBER := 1;
1650 TYPE lines_to_delete_rec IS RECORD
1651 (line_index BINARY_INTEGER,
1652 line_type ra_customer_trx_lines.Line_type%type
1653 );
1654 TYPE lines_to_delete_tbl_type IS TABLE OF lines_to_delete_rec INDEX BY BINARY_INTEGER;
1655 l_lines_to_delete_tbl lines_to_delete_tbl_type;
1656
1657 l_batch_date date ;
1658 l_crtrx_date date ;
1659 l_sysdate date ;
1660
1661 e_handled_error EXCEPTION;
1662 e_unexpected_error EXCEPTION;
1663 l_message_name VARCHAR2(255);
1664 l_debug_point NUMBER;
1665
1666 l_cm_header ra_customer_trx%rowtype;
1667
1668 l_line_amount ra_customer_trx_lines.extended_amount%type ;
1669 l_line_percent number ;
1670 l_freight_amount ra_customer_trx_lines.extended_amount%type ;
1671 l_freight_percent number ;
1672 l_computed_tax_percent number;
1673 l_computed_tax_amount ra_customer_trx_lines.extended_amount%type;
1674
1675 l_default_bs_name varchar2(50);
1676 l_bs_type varchar2(10);
1677 l_copy_doc_number_flag varchar2(1);
1678 l_bs_default_cust_trx_type_id number;
1679 l_default_cust_trx_type_id number;
1680 l_default_type_name varchar2(50);
1681 l_open_receivable_flag varchar2(1);
1682 l_post_to_gl_flag varchar2(1);
1683 l_allow_freight_flag varchar2(1);
1684 l_creation_sign varchar2(1);
1685 l_allow_overapplication_flag varchar2(1);
1686 l_natural_app_only_flag varchar2(1);
1687 l_tax_calculate_flag varchar2(1);
1688
1689 l_default_gl_date date;
1690
1691 l_default_ship_via varchar2(30);
1692 l_default_ship_date_actual date;
1693 l_default_waybill_number varchar2(50);
1694 l_default_fob_point varchar2(30);
1695
1696 l_form_name varchar2(20) := 'ARXTWCMI';
1697 l_form_version number := NULL;
1698
1699 l_auto_trx_numbering_flag varchar2(1);
1700
1701 l_credited_trx_rec ra_customer_trx_cr_trx_v%rowtype ;
1702 --
1703 l_line_orig number;
1704 l_tax_orig number;
1705 l_frt_orig number;
1706 l_tot_orig number;
1707 l_line_bal number;
1708 l_tax_bal number;
1709 l_frt_bal number;
1710 l_tot_bal number;
1711 l_num_line_lines number;
1712 l_num_tax_lines number;
1713 l_num_frt_lines number;
1714 l_num_installments number;
1715 l_pmt_exist_flag varchar2(1);
1716 --
1717 l_credited_trx_line_tbl arw_cm_cover.credit_lines_table_type;
1718
1719 l_customer_trx_line_id ra_customer_trx_lines.customer_trx_line_id%TYPE;
1720
1721 l_err_mesg VARCHAR2(2000);
1722 l_ue_message VARCHAR2(2000);
1723
1724
1725 BEGIN
1726
1727 IF PG_DEBUG in ('Y', 'C') THEN
1728 arp_util.debug('create_line_cm()+');
1729 END IF;
1730
1731 /*------------------------------------+
1732 | Standard start of API savepoint |
1733 +------------------------------------*/
1734
1735 SAVEPOINT Credit_Transaction_Pub;
1736
1737 --
1738 -- populate the record with the values passed
1739 --
1740 l_cm_header.batch_id := p_batch_id;
1741 l_cm_header.trx_number := p_trx_number;
1742 l_cm_header.trx_date := p_trx_date;
1743 l_cm_header.complete_flag := p_complete_flag;
1744 l_cm_header.previous_customer_trx_id := p_prev_customer_trx_id;
1745 l_cm_header.batch_source_id := p_batch_source_id;
1746 l_cm_header.cust_trx_type_id := p_cust_trx_type_id;
1747 l_cm_header.invoice_currency_code := p_currency_code;
1748 l_cm_header.exchange_date := p_exchange_date;
1749 l_cm_header.exchange_rate_type := p_exchange_rate_type;
1750 l_cm_header.exchange_rate := p_exchange_rate;
1751 l_cm_header.credit_method_for_rules := p_method_for_rules;
1752 l_cm_header.credit_method_for_installments := p_split_term_method;
1753 l_cm_header.initial_customer_trx_id := p_initial_customer_trx_id;
1754 l_cm_header.primary_salesrep_id := p_primary_salesrep_id;
1755 l_cm_header.invoicing_rule_id := p_invoicing_rule_id;
1756 l_cm_header.bill_to_customer_id := p_bill_to_customer_id;
1757 l_cm_header.bill_to_address_id := p_bill_to_address_id;
1758 l_cm_header.bill_to_site_use_id := p_bill_to_site_use_id;
1759 l_cm_header.bill_to_contact_id := p_bill_to_contact_id;
1760 l_cm_header.ship_to_customer_id := p_ship_to_customer_id;
1761 l_cm_header.ship_to_address_id := p_ship_to_address_id;
1762 l_cm_header.ship_to_site_use_id := p_ship_to_site_use_id;
1763 l_cm_header.ship_to_contact_id := p_ship_to_contact_id;
1764 l_cm_header.receipt_method_id := p_receipt_method_id;
1765 l_cm_header.paying_customer_id := p_paying_customer_id;
1766 l_cm_header.paying_site_use_id := p_paying_site_use_id;
1767 l_cm_header.customer_bank_account_id := p_customer_bank_account_id;
1768 l_cm_header.printing_option := p_printing_option;
1769 l_cm_header.printing_last_printed := p_printing_last_printed;
1770 l_cm_header.printing_pending := p_printing_pending;
1771 l_cm_header.reason_code := p_reason_code;
1772 l_cm_header.doc_sequence_value := p_doc_sequence_value;
1773 l_cm_header.doc_sequence_id := p_doc_sequence_id;
1774 l_cm_header.customer_reference := p_customer_reference;
1775 l_cm_header.customer_reference_date := p_customer_reference_date;
1776 l_cm_header.internal_notes := p_internal_notes;
1777 l_cm_header.set_of_books_id := p_set_of_books_id;
1778 l_cm_header.created_from := p_created_from;
1779 l_cm_header.old_trx_number := p_old_trx_number;
1780 l_cm_header.attribute_category := p_attribute_category;
1781 l_cm_header.attribute1 := p_attribute1;
1782 l_cm_header.attribute2 := p_attribute2;
1783 l_cm_header.attribute3 := p_attribute3;
1784 l_cm_header.attribute4 := p_attribute4;
1785 l_cm_header.attribute5 := p_attribute5;
1786 l_cm_header.attribute6 := p_attribute6;
1787 l_cm_header.attribute7 := p_attribute7;
1788 l_cm_header.attribute8 := p_attribute8;
1789 l_cm_header.attribute9 := p_attribute9;
1790 l_cm_header.attribute10 := p_attribute10;
1791 l_cm_header.attribute11 := p_attribute11;
1792 l_cm_header.attribute12 := p_attribute12;
1793 l_cm_header.attribute13 := p_attribute13;
1794 l_cm_header.attribute14 := p_attribute14;
1795 l_cm_header.attribute15 := p_attribute15;
1796 l_cm_header.interface_header_context := p_interface_header_context;
1797 l_cm_header.interface_header_attribute1 := p_interface_header_attribute1;
1798 l_cm_header.interface_header_attribute2 := p_interface_header_attribute2;
1799 l_cm_header.interface_header_attribute3 := p_interface_header_attribute3;
1800 l_cm_header.interface_header_attribute4 := p_interface_header_attribute4;
1801 l_cm_header.interface_header_attribute5 := p_interface_header_attribute5;
1802 l_cm_header.interface_header_attribute6 := p_interface_header_attribute6;
1803 l_cm_header.interface_header_attribute7 := p_interface_header_attribute7;
1804 l_cm_header.interface_header_attribute8 := p_interface_header_attribute8;
1805 l_cm_header.interface_header_attribute9 := p_interface_header_attribute9;
1806 l_cm_header.interface_header_attribute10 := p_interface_header_attribute10;
1807 l_cm_header.interface_header_attribute11 := p_interface_header_attribute11;
1808 l_cm_header.interface_header_attribute12 := p_interface_header_attribute12;
1809 l_cm_header.interface_header_attribute13 := p_interface_header_attribute13;
1810 l_cm_header.interface_header_attribute14 := p_interface_header_attribute14;
1811 l_cm_header.interface_header_attribute15 := p_interface_header_attribute15;
1812 l_cm_header.default_ussgl_transaction_code := p_default_ussgl_trx_code;
1813 --
1814 l_cm_header.status_trx := null;
1815 --
1816 l_cm_header.comments := p_comments;
1817 l_cm_header.purchase_order := p_purchase_order;
1818 l_cm_header.purchase_order_revision := p_purchase_order_revision;
1819 l_cm_header.purchase_order_date := p_purchase_order_date;
1820 l_cm_header.legal_entity_id := p_legal_entity_id;
1821
1822 --
1823 -- Ensure that p_prev_customer_trx_id is not null
1824 --
1825
1826 --
1827 -- Populate Default values
1828 --
1829 -- Amounts : get the credit memo amounts.
1830 -- for each : line, freight, tax,
1831 -- if both percentage and amount are null, assume 100%
1832 -- populate l_cm_header values accordingly.
1833 -- else if either (amount or %) is null, populate the other
1834
1835 BEGIN
1836 ARP_PROCESS_CREDIT_UTIL.GET_CREDITED_TRX_DETAILS(
1837 p_prev_customer_trx_id,
1838 p_initial_customer_trx_id,
1839 l_line_orig,
1840 l_tax_orig,
1841 l_frt_orig,
1842 l_tot_orig,
1843 l_line_bal,
1844 l_tax_bal,
1845 l_frt_bal,
1846 l_tot_bal,
1847 l_num_line_lines,
1848 l_num_tax_lines,
1849 l_num_frt_lines,
1850 l_num_installments,
1851 l_pmt_exist_flag);
1852
1853 EXCEPTION
1854 WHEN OTHERS THEN
1855 ROLLBACK TO Credit_Transaction_Pub;
1856 IF PG_DEBUG in ('Y', 'C') THEN
1857 arp_util.debug('EXCEPTION: Error Calling arp_process_credit_util.get_credited_trx_details.');
1858 END IF;
1859 /*Bug3041196: Commented out this portion as it was overwriting message
1860 names set by get_credited_trx_details*/
1861 -- fnd_message.set_name( 'AR', 'AR_RAXTRX-1666');
1862 -- l_message_name := 'AR_RAXTRX-1666' ;
1863 RAISE e_unexpected_error;
1864 END;
1865
1866
1867 --
1868 -- Default complete flag :
1869 -- If complete flag has not been passed in then, complete_flag is 'N'
1870 --
1871 IF p_complete_flag IS NULL THEN
1872 l_cm_header.complete_flag := 'N' ;
1873 END IF;
1874
1875 --
1876 -- Other defaluts : use arp_process_credit_util.get_cm_header_defaults
1877 --
1878 -- First, get the details of the transaction being credited.
1879 -- This info is used as parameter into get_cm_header_defaults
1880 --
1881 BEGIN
1882 SELECT *
1883 INTO l_credited_trx_rec
1884 FROM ra_customer_trx_cr_trx_v
1885 WHERE customer_trx_id = p_prev_customer_trx_id ;
1886 EXCEPTION
1887 WHEN NO_DATA_FOUND THEN
1888 --- TDEY 99/09/27 : Bug 913062
1889 --- Situation : The user is trying to credit a transaction that
1890 --- is not of the correct trx class, incomplete, or simply does
1891 --- not exist in the system.
1892 --- Proposed error message : AR_RAXTRX-1666 Your credit memo
1893 --- transaction can only credit an invoice or a debit memo line
1894
1895 fnd_message.set_name( 'AR', 'AR_RAXTRX-1666');
1896 l_message_name := 'AR_RAXTRX-1666' ;
1897 RAISE e_handled_error;
1898 WHEN OTHERS THEN
1899 IF PG_DEBUG in ('Y', 'C') THEN
1900 arp_util.debug('EXCEPTION: Debug point 1 : Unknown Error fetching credited trx details ');
1901 END IF;
1902 l_debug_point := 1;
1903 l_ue_message := SUBSTR('Error fetching credited trx details ' || SQLERRM, 1, 2000);
1904 RAISE e_unexpected_error;
1905
1906 END;
1907
1908 --
1909 -- Default trx_date
1910 -- Bugfix 2745276
1911 -- The trx date will be latest of credited transaction and sysdate
1912 --
1913
1914 l_crtrx_date := trunc(l_credited_trx_rec.trx_date);
1915 l_sysdate := trunc(SYSDATE);
1916
1917 IF (l_sysdate < l_crtrx_date) THEN
1918 l_cm_header.trx_date := l_crtrx_date;
1919 ELSE
1920 l_cm_header.trx_date := l_sysdate;
1921 END IF;
1922
1923 --
1924 -- Default currency code
1925 --
1926 l_cm_header.invoice_currency_code := l_credited_trx_rec.invoice_currency_code;
1927 l_cm_header.exchange_date := l_credited_trx_rec.exchange_date;
1928 l_cm_header.exchange_rate_type := l_credited_trx_rec.exchange_rate_type;
1929 l_cm_header.exchange_rate := l_credited_trx_rec.exchange_rate;
1930
1931 --
1932 -- Default created_from
1933 --
1934 IF l_cm_header.created_from IS NULL
1935 THEN
1936 l_cm_header.created_from := 'ARXTWCMI';
1937 END IF;
1938
1939 -- Bug 2105483 : rather then calling arp_global at the start
1940 -- of the package, where it can error out NOCOPY since org_id is not yet set,
1941 -- do the call right before it is needed
1942 -- 5885313 commented out init routine here.
1943 -- arp_global.init_global;
1944
1945 ARP_PROCESS_CREDIT_UTIL.GET_CM_HEADER_DEFAULTS(
1946 -- bug 3796595 : pass l_cm_header.trx_date instead of NULL
1947 l_cm_header.trx_date, -- p_trx_date,
1948 l_credited_trx_rec.customer_trx_id,
1949 NULL, -- p_customer_trx_id,
1950 p_batch_source_id, -- bug 3041195/2347286, use provided BS id
1951 p_gl_date, -- p_gl_date, /*Bug 9536019*/
1952 NULL, -- p_currency_code,
1953 NULL, -- p_cust_trx_type_id,
1954 NULL, -- p_ship_to_customer_id,
1955 NULL, -- p_ship_to_site_use_id,
1956 NULL, -- p_ship_to_contact_id,
1957 NULL, -- p_bill_to_customer_id,
1958 NULL, -- p_bill_to_site_use_id,
1959 NULL, -- p_bill_to_contact_id,
1960 NULL, -- p_primary_salesrep_id,
1961 NULL, -- p_receipt_method_id,
1962 NULL, -- p_customer_bank_account_id,
1963 NULL, -- p_paying_customer_id,
1964 NULL, -- p_paying_site_use_id,
1965 NULL, -- Name_In('TCMI_HEADER.ship_via'),
1966 NULL, -- Name_In('TCMI_HEADER.fob_point'),
1967 NULL, -- p_invoicing_rule_id,
1968 NULL, -- Name_In('TCMI_HEADER.rev_recog_run_flag'),
1969 NULL, -- p_complete_flag,
1970 ARP_GLOBAL.sysparam.salesrep_required_flag, -- Name_In('AR_WORLD.salesrep_required_flag'),
1971 -- credited trx info
1972 l_credited_trx_rec.batch_source_id,
1973 l_credited_trx_rec.bs_credit_memo_batch_source_id, -- Name_In('TCMI_CRTRX.bs_credit_memo_batch_source_id'),
1974 l_credited_trx_rec.rab_batch_source_id, -- Name_In('TCMI_HEADER.rab_batch_source_id'),
1975 NULL, -- Name_In('AR_WORLD.ar_ra_batch_source'),
1976 l_credited_trx_rec.cust_trx_type_id,
1977 l_credited_trx_rec.ctt_credit_memo_type_id, -- Name_In('TCMI_CRTRX.ctt_credit_memo_type_id'),
1978 trunc(l_credited_trx_rec.gd_gl_date), --gl_date
1979 trunc(l_credited_trx_rec.trx_date), -- gl_date
1980 l_credited_trx_rec.ship_to_customer_id,
1981 l_credited_trx_rec.ship_to_site_use_id,
1982 l_credited_trx_rec.ship_to_contact_id,
1983 l_credited_trx_rec.bill_to_customer_id,
1984 l_credited_trx_rec.bill_to_site_use_id,
1985 l_credited_trx_rec.bill_to_contact_id,
1986 l_credited_trx_rec.primary_salesrep_id,
1987 l_credited_trx_rec.ctt_open_receivables_flag, -- Name_In('TCMI_CRTRX.ctt_open_receivables_flag'),
1988 l_credited_trx_rec.receipt_method_id,
1989 l_credited_trx_rec.customer_bank_account_id,
1990 l_credited_trx_rec.ship_via, -- Name_In('TCMI_CRTRX.ship_via'),
1991 l_credited_trx_rec.ship_date_actual, -- app_date.field_to_date('TCMI_CRTRX.ship_date_actual'),
1992 l_credited_trx_rec.waybill_number, -- Name_In('TCMI_CRTRX.waybill_number'),
1993 l_credited_trx_rec.fob_point, -- Name_In('TCMI_CRTRX.fob_point'),
1994 --
1995 l_cm_header.batch_source_id,
1996 l_default_bs_name,
1997 l_auto_trx_numbering_flag,
1998 l_bs_type,
1999 l_copy_doc_number_flag,
2000 l_bs_default_cust_trx_type_id,
2001 l_cm_header.cust_trx_type_id,
2002 l_default_type_name,
2003 l_open_receivable_flag,
2004 l_post_to_gl_flag,
2005 l_allow_freight_flag,
2006 l_creation_sign,
2007 l_allow_overapplication_flag,
2008 l_natural_app_only_flag,
2009 l_tax_calculate_flag,
2010 l_cm_header.printing_option,
2011 l_default_gl_date,
2012 l_cm_header.ship_to_customer_id,
2013 l_cm_header.ship_to_site_use_id,
2014 l_cm_header.ship_to_contact_id,
2015 l_cm_header.bill_to_customer_id,
2016 l_cm_header.bill_to_site_use_id,
2017 l_cm_header.bill_to_contact_id,
2018 l_cm_header.primary_salesrep_id,
2019 l_cm_header.receipt_method_id,
2020 l_cm_header.customer_bank_account_id,
2021 l_cm_header.paying_customer_id,
2022 l_cm_header.paying_site_use_id,
2023 l_default_ship_via,
2024 l_default_ship_date_actual,
2025 l_default_waybill_number,
2026 l_default_fob_point);
2027
2028 --
2029 -- However, if values have been passed in, use those
2030 --
2031 IF PG_DEBUG in ('Y', 'C') THEN
2032 arp_util.debug( 'l_cm_header.batch_source_id = '
2033 || to_char(l_cm_header.batch_source_id));
2034 arp_util.debug( 'l_cm_header.cust_trx_type_id = '
2035 || to_char(l_cm_header.cust_trx_type_id));
2036 arp_util.debug( 'l_cm_header.primary_salesrep_id = '
2037 || to_char(l_cm_header.primary_salesrep_id));
2038 arp_util.debug( 'l_cm_header.bill_to_customer_id = '
2039 || to_char(l_cm_header.bill_to_customer_id));
2040 arp_util.debug( 'l_cm_header.bill_to_site_use_id = '
2041 || to_char(l_cm_header.bill_to_site_use_id));
2042 arp_util.debug( 'l_cm_header.bill_to_contact_id = '
2043 || to_char(l_cm_header.bill_to_contact_id));
2044 arp_util.debug( 'l_cm_header.ship_to_customer_id = '
2045 || to_char(l_cm_header.ship_to_customer_id));
2046 arp_util.debug( 'l_cm_header.ship_to_site_use_id = '
2047 || to_char(l_cm_header.ship_to_site_use_id));
2048 arp_util.debug( 'l_cm_header.ship_to_contact_id = '
2049 || to_char(l_cm_header.ship_to_contact_id));
2050 arp_util.debug( 'l_cm_header.receipt_method_id = '
2051 || to_char(l_cm_header.receipt_method_id));
2052 arp_util.debug( 'l_cm_header.paying_customer_id = '
2053 || to_char(l_cm_header.paying_customer_id));
2054 arp_util.debug( 'l_cm_header.customer_bank_account_id = '
2055 || to_char(l_cm_header.customer_bank_account_id));
2056 arp_util.debug( 'l_cm_header.printing_option = '
2057 || l_cm_header.printing_option);
2058 arp_util.debug( 'l_cm_header.set_of_books_id = '
2059 || to_char(l_cm_header.set_of_books_id));
2060 arp_util.debug( 'l_cm_header.legal_entity_id = '
2061 || to_char(l_cm_header.legal_entity_id));
2062 END IF;
2063
2064 --- Assign individual in parameter values to l_cm_header
2065 --- if not null. The transaction flexfields need to be
2066 --- set to the parameter values even if NULL is passed in
2067
2068 IF p_cust_trx_type_id IS NOT NULL THEN
2069 l_cm_header.CUST_TRX_TYPE_ID := p_cust_trx_type_id ;
2070 ELSE
2071 IF l_cm_header.cust_trx_type_id IS NULL THEN
2072 ROLLBACK TO Credit_Transaction_Pub;
2073 IF PG_DEBUG in ('Y', 'C') THEN
2074 arp_util.debug( 'Error: l_cm_header.cust_trx_type_id IS NULL');
2075 END IF;
2076 fnd_message.set_name( 'AR', 'AR_TW_BAD_DATE_TRX_TYPE');
2077 l_message_name := 'AR_TW_BAD_DATE_TRX_TYPE' ;
2078 RAISE e_handled_error;
2079 END IF;
2080 END IF;
2081 IF p_batch_id IS NOT NULL THEN
2082 l_cm_header.batch_id := p_batch_id;
2083 END IF;
2084 IF p_trx_number IS NOT NULL THEN
2085 l_cm_header.trx_number := p_trx_number;
2086 END IF;
2087 IF p_trx_date IS NOT NULL THEN
2088 l_cm_header.trx_date := trunc(p_trx_date);
2089 END IF;
2090 IF p_complete_flag IS NOT NULL THEN
2091 l_cm_header.complete_flag := p_complete_flag;
2092 END IF;
2093 IF p_batch_source_id IS NOT NULL THEN
2094 l_cm_header.batch_source_id := p_batch_source_id;
2095 END IF;
2096 IF p_currency_code IS NOT NULL THEN
2097 l_cm_header.invoice_currency_code := p_currency_code;
2098 END IF;
2099 IF p_exchange_date IS NOT NULL THEN
2100 l_cm_header.exchange_date := p_exchange_date;
2101 END IF;
2102 IF p_exchange_rate_type IS NOT NULL THEN
2103 l_cm_header.exchange_rate_type := p_exchange_rate_type;
2104 END IF;
2105 IF p_exchange_rate IS NOT NULL THEN
2106 l_cm_header.exchange_rate := p_exchange_rate;
2107 END IF;
2108 IF p_method_for_rules IS NOT NULL THEN
2109 l_cm_header.credit_method_for_rules := p_method_for_rules;
2110 END IF;
2111 IF p_split_term_method IS NOT NULL THEN
2112 l_cm_header.credit_method_for_installments := p_split_term_method;
2113 END IF;
2114 IF p_initial_customer_trx_id IS NOT NULL THEN
2115 l_cm_header.initial_customer_trx_id := p_initial_customer_trx_id;
2116 END IF;
2117 IF p_primary_salesrep_id IS NOT NULL THEN
2118 l_cm_header.primary_salesrep_id := p_primary_salesrep_id;
2119 END IF;
2120 IF p_invoicing_rule_id IS NOT NULL THEN
2121 l_cm_header.invoicing_rule_id := p_invoicing_rule_id;
2122 ELSE
2123 l_cm_header.invoicing_rule_id := l_credited_trx_rec.invoicing_rule_id;
2124 END IF;
2125 IF p_bill_to_customer_id IS NOT NULL THEN
2126 l_cm_header.bill_to_customer_id := p_bill_to_customer_id;
2127 END IF;
2128 IF p_bill_to_address_id IS NOT NULL THEN
2129 l_cm_header.bill_to_address_id := p_bill_to_address_id;
2130 END IF;
2131 IF p_bill_to_site_use_id IS NOT NULL THEN
2132 l_cm_header.bill_to_site_use_id := p_bill_to_site_use_id;
2133 END IF;
2134 IF p_bill_to_contact_id IS NOT NULL THEN
2135 l_cm_header.bill_to_contact_id := p_bill_to_contact_id;
2136 END IF;
2137 IF p_ship_to_customer_id IS NOT NULL THEN
2138 l_cm_header.ship_to_customer_id := p_ship_to_customer_id;
2139 END IF;
2140 IF p_ship_to_address_id IS NOT NULL THEN
2141 l_cm_header.ship_to_address_id := p_ship_to_address_id;
2142 END IF;
2143 IF p_ship_to_site_use_id IS NOT NULL THEN
2144 l_cm_header.ship_to_site_use_id := p_ship_to_site_use_id;
2145 END IF;
2146 IF p_ship_to_contact_id IS NOT NULL THEN
2147 l_cm_header.ship_to_contact_id := p_ship_to_contact_id;
2148 END IF;
2149 IF p_receipt_method_id IS NOT NULL THEN
2150 l_cm_header.receipt_method_id := p_receipt_method_id;
2151 END IF;
2152 IF p_paying_customer_id IS NOT NULL THEN
2153 l_cm_header.paying_customer_id := p_paying_customer_id;
2154 END IF;
2155 IF p_paying_site_use_id IS NOT NULL THEN
2156 l_cm_header.paying_site_use_id := p_paying_site_use_id;
2157 END IF;
2158 IF p_customer_bank_account_id IS NOT NULL THEN
2159 l_cm_header.customer_bank_account_id := p_customer_bank_account_id;
2160 END IF;
2161 IF p_printing_option IS NOT NULL THEN
2162 l_cm_header.printing_option := p_printing_option;
2163 END IF;
2164 IF p_printing_last_printed IS NOT NULL THEN
2165 l_cm_header.printing_last_printed := p_printing_last_printed;
2166 END IF;
2167 IF p_printing_pending IS NOT NULL THEN
2168 l_cm_header.printing_pending := p_printing_pending;
2169 END IF;
2170 IF p_reason_code IS NOT NULL THEN
2171 l_cm_header.reason_code := p_reason_code;
2172 END IF;
2173 IF p_doc_sequence_value IS NOT NULL THEN
2174 l_cm_header.doc_sequence_value := p_doc_sequence_value;
2175 END IF;
2176 IF p_doc_sequence_id IS NOT NULL THEN
2177 l_cm_header.doc_sequence_id := p_doc_sequence_id;
2178 END IF;
2179 IF p_customer_reference IS NOT NULL THEN
2180 l_cm_header.customer_reference := p_customer_reference;
2181 END IF;
2182 IF p_customer_reference_date IS NOT NULL THEN
2183 l_cm_header.customer_reference_date := p_customer_reference_date;
2184 END IF;
2185 IF p_internal_notes IS NOT NULL THEN
2186 l_cm_header.internal_notes := p_internal_notes;
2187 END IF;
2188 IF p_set_of_books_id IS NOT NULL THEN
2189 l_cm_header.set_of_books_id := p_set_of_books_id;
2190 END IF;
2191 IF p_old_trx_number IS NOT NULL THEN
2192 l_cm_header.old_trx_number := p_old_trx_number;
2193 END IF;
2194 IF p_attribute_category IS NOT NULL THEN
2195 l_cm_header.attribute_category := p_attribute_category;
2196 END IF;
2197 IF p_attribute1 IS NOT NULL THEN
2198 l_cm_header.attribute1 := p_attribute1;
2199 END IF;
2200 IF p_attribute2 IS NOT NULL THEN
2201 l_cm_header.attribute2 := p_attribute2;
2202 END IF;
2203 IF p_attribute3 IS NOT NULL THEN
2204 l_cm_header.attribute3 := p_attribute3;
2205 END IF;
2206 IF p_attribute4 IS NOT NULL THEN
2207 l_cm_header.attribute4 := p_attribute4;
2208 END IF;
2209 IF p_attribute5 IS NOT NULL THEN
2210 l_cm_header.attribute5 := p_attribute5;
2211 END IF;
2212 IF p_attribute6 IS NOT NULL THEN
2213 l_cm_header.attribute6 := p_attribute6;
2214 END IF;
2215 IF p_attribute7 IS NOT NULL THEN
2216 l_cm_header.attribute7 := p_attribute7;
2217 END IF;
2218 IF p_attribute8 IS NOT NULL THEN
2219 l_cm_header.attribute8 := p_attribute8;
2220 END IF;
2221 IF p_attribute9 IS NOT NULL THEN
2222 l_cm_header.attribute9 := p_attribute9;
2223 END IF;
2224 IF p_attribute10 IS NOT NULL THEN
2225 l_cm_header.attribute10 := p_attribute10;
2226 END IF;
2227 IF p_attribute11 IS NOT NULL THEN
2228 l_cm_header.attribute11 := p_attribute11;
2229 END IF;
2230 IF p_attribute12 IS NOT NULL THEN
2231 l_cm_header.attribute12 := p_attribute12;
2232 END IF;
2233 IF p_attribute13 IS NOT NULL THEN
2234 l_cm_header.attribute13 := p_attribute13;
2235 END IF;
2236 IF p_attribute14 IS NOT NULL THEN
2237 l_cm_header.attribute14 := p_attribute14;
2238 END IF;
2239 IF p_attribute15 IS NOT NULL THEN
2240 l_cm_header.attribute15 := p_attribute15;
2241 END IF;
2242 l_cm_header.interface_header_context := p_interface_header_context;
2243 l_cm_header.interface_header_attribute1 := p_interface_header_attribute1;
2244 l_cm_header.interface_header_attribute2 := p_interface_header_attribute2;
2245 l_cm_header.interface_header_attribute3 := p_interface_header_attribute3;
2246 l_cm_header.interface_header_attribute4 := p_interface_header_attribute4;
2247 l_cm_header.interface_header_attribute5 := p_interface_header_attribute5;
2248 l_cm_header.interface_header_attribute6 := p_interface_header_attribute6;
2249 l_cm_header.interface_header_attribute7 := p_interface_header_attribute7;
2250 l_cm_header.interface_header_attribute8 := p_interface_header_attribute8;
2251 l_cm_header.interface_header_attribute9 := p_interface_header_attribute9;
2252 l_cm_header.interface_header_attribute10 := p_interface_header_attribute10;
2253 l_cm_header.interface_header_attribute11 := p_interface_header_attribute11;
2254 l_cm_header.interface_header_attribute12 := p_interface_header_attribute12;
2255 l_cm_header.interface_header_attribute13 := p_interface_header_attribute13;
2256 l_cm_header.interface_header_attribute14 := p_interface_header_attribute14;
2257 l_cm_header.interface_header_attribute15 := p_interface_header_attribute15;
2258 /*4556000-4606558*/
2259 l_cm_header.global_attribute_category := p_global_attribute_category;
2260 l_cm_header.global_attribute1 := p_global_attribute1;
2261 l_cm_header.global_attribute2 := p_global_attribute2;
2262 l_cm_header.global_attribute3 := p_global_attribute3;
2263 l_cm_header.global_attribute4 := p_global_attribute4;
2264 l_cm_header.global_attribute5 := p_global_attribute5;
2265 l_cm_header.global_attribute6 := p_global_attribute6;
2266 l_cm_header.global_attribute7 := p_global_attribute7;
2267 l_cm_header.global_attribute8 := p_global_attribute8;
2268 l_cm_header.global_attribute9 := p_global_attribute9;
2269 l_cm_header.global_attribute10 := p_global_attribute10;
2270 l_cm_header.global_attribute11 := p_global_attribute11;
2271 l_cm_header.global_attribute12 := p_global_attribute12;
2272 l_cm_header.global_attribute13 := p_global_attribute13;
2273 l_cm_header.global_attribute14 := p_global_attribute14;
2274 l_cm_header.global_attribute15 := p_global_attribute15;
2275 l_cm_header.global_attribute16 := p_global_attribute16;
2276 l_cm_header.global_attribute17 := p_global_attribute17;
2277 l_cm_header.global_attribute18 := p_global_attribute18;
2278 l_cm_header.global_attribute19 := p_global_attribute19;
2279 l_cm_header.global_attribute20 := p_global_attribute20;
2280 l_cm_header.global_attribute21 := p_global_attribute21;
2281 l_cm_header.global_attribute22 := p_global_attribute22;
2282 l_cm_header.global_attribute23 := p_global_attribute23;
2283 l_cm_header.global_attribute24 := p_global_attribute24;
2284 l_cm_header.global_attribute25 := p_global_attribute25;
2285 l_cm_header.global_attribute26 := p_global_attribute26;
2286 l_cm_header.global_attribute27 := p_global_attribute27;
2287 l_cm_header.global_attribute28 := p_global_attribute28;
2288 l_cm_header.global_attribute29 := p_global_attribute29;
2289 l_cm_header.global_attribute30 := p_global_attribute30;
2290 IF p_default_ussgl_trx_code IS NOT NULL THEN
2291 l_cm_header.default_ussgl_transaction_code := p_default_ussgl_trx_code;
2292 END IF;
2293 IF p_comments IS NOT NULL THEN
2294 l_cm_header.comments := p_comments;
2295 END IF;
2296
2297 --
2298 -- default gl_date
2299 --
2300
2301 IF p_gl_date IS NOT NULL THEN
2302 l_default_gl_date := p_gl_date;
2303 END IF;
2304
2305 /* 7658882 - set l_compute_tax based on parameter p_compute_tax.
2306 This value is ultimately set by p_line_credit_flag where a
2307 Y there indicates a Y here and an L there indicates line-only
2308 so we set N here. */
2309
2310 IF p_compute_tax IS NOT NULL THEN
2311 l_compute_tax := p_compute_tax;
2312 ELSE
2313 l_compute_tax := 'N';
2314 END IF;
2315
2316 IF PG_DEBUG in ('Y', 'C') THEN
2317 arp_util.debug( 'l_compute_tax = ' || l_compute_tax);
2318 END IF;
2319
2320 --
2321 -- call the entity handler
2322 --
2323
2324 l_line_amount := NULL;
2325 l_freight_amount := NULL;
2326 l_customer_trx_id := NULL;
2327 l_computed_tax_percent := NULL;
2328 l_computed_tax_amount := NULL;
2329
2330 BEGIN
2331 ARP_PROCESS_CREDIT.INSERT_HEADER(
2332 l_form_name,
2333 1.0,
2334 l_cm_header,
2335 'CM',
2336 l_default_gl_date,
2337 -- p_primary_salesrep_id,
2338 l_cm_header.primary_salesrep_id,
2339 l_cm_header.invoice_currency_code, -- p_currency_code,
2340 p_prev_customer_trx_id,
2341 p_line_percent,
2342 p_freight_percent,
2343 l_line_amount,
2344 l_freight_amount,
2345 l_compute_tax,
2346 p_trx_number,
2347 l_customer_trx_id,
2348 l_computed_tax_percent,
2349 l_computed_tax_amount,
2350 p_status);
2351 p_computed_tax_percent := l_computed_tax_percent;
2352 p_computed_tax_amount := l_computed_tax_amount;
2353
2354 EXCEPTION
2355 WHEN OTHERS THEN
2356 ROLLBACK TO Credit_Transaction_Pub;
2357 IF PG_DEBUG in ('Y', 'C') THEN
2358 arp_util.debug( 'Debug point 2 : Error Calling arp_process_credit.insert_header.');
2359 END IF;
2360 l_debug_point := 2;
2361 l_ue_message := SUBSTR('Error Calling arp_process_credit.insert_header '
2362 || SQLERRM, 1, 2000);
2363 RAISE e_unexpected_error;
2364 END ;
2365
2366 BEGIN
2367
2368 FOR i IN 1..p_credit_line_table.count
2369 LOOP
2370 l_credited_trx_line_tbl(i).Extended_amount
2371 := p_credit_line_table(i).Extended_amount ;
2372 l_credited_trx_line_tbl(i).Unit_selling_price :=
2373 p_credit_line_table(i).Unit_selling_price ;
2374 l_credited_trx_line_tbl(i).QUANTITY_CREDITED :=
2375 p_credit_line_table(i).QUANTITY_CREDITED ;
2376 l_credited_trx_line_tbl(i).customer_trx_line_id := NULL;
2377 l_credited_trx_line_tbl(i).Previous_customer_trx_line_id :=
2378 p_credit_line_table(i).Previous_customer_trx_line_id;
2379 /*4556000 added copy assignment statements for Line level FF attributes*/
2380 l_credited_trx_line_tbl(i).ATTRIBUTE_CATEGORY :=
2381 p_credit_line_table(i).ATTRIBUTE_CATEGORY;
2382 l_credited_trx_line_tbl(i).ATTRIBUTE1 :=
2383 p_credit_line_table(i).ATTRIBUTE1;
2384 l_credited_trx_line_tbl(i).ATTRIBUTE2 :=
2385 p_credit_line_table(i).ATTRIBUTE2;
2386 l_credited_trx_line_tbl(i).ATTRIBUTE3 :=
2387 p_credit_line_table(i).ATTRIBUTE3;
2388 l_credited_trx_line_tbl(i).ATTRIBUTE4 :=
2389 p_credit_line_table(i).ATTRIBUTE4;
2390 l_credited_trx_line_tbl(i).ATTRIBUTE5 :=
2391 p_credit_line_table(i).ATTRIBUTE5;
2392 l_credited_trx_line_tbl(i).ATTRIBUTE6 :=
2393 p_credit_line_table(i).ATTRIBUTE6;
2394 l_credited_trx_line_tbl(i).ATTRIBUTE7 :=
2395 p_credit_line_table(i).ATTRIBUTE7;
2396 l_credited_trx_line_tbl(i).ATTRIBUTE8 :=
2397 p_credit_line_table(i).ATTRIBUTE8;
2398 l_credited_trx_line_tbl(i).ATTRIBUTE9 :=
2399 p_credit_line_table(i).ATTRIBUTE9;
2400 l_credited_trx_line_tbl(i).ATTRIBUTE10 :=
2401 p_credit_line_table(i).ATTRIBUTE10;
2402 l_credited_trx_line_tbl(i).ATTRIBUTE11 :=
2403 p_credit_line_table(i).ATTRIBUTE11;
2404 l_credited_trx_line_tbl(i).ATTRIBUTE12 :=
2405 p_credit_line_table(i).ATTRIBUTE12;
2406 l_credited_trx_line_tbl(i).ATTRIBUTE13 :=
2407 p_credit_line_table(i).ATTRIBUTE13;
2408 l_credited_trx_line_tbl(i).ATTRIBUTE14 :=
2409 p_credit_line_table(i).ATTRIBUTE14;
2410 l_credited_trx_line_tbl(i).ATTRIBUTE15 :=
2411 p_credit_line_table(i).ATTRIBUTE15;
2412
2413 l_credited_trx_line_tbl(i).interface_line_context := p_credit_line_table(i).interface_line_context;
2414 l_credited_trx_line_tbl(i).interface_line_attribute1 := p_credit_line_table(i).interface_line_attribute1;
2415 l_credited_trx_line_tbl(i).interface_line_attribute2 := p_credit_line_table(i).interface_line_attribute2;
2416 l_credited_trx_line_tbl(i).interface_line_attribute3 := p_credit_line_table(i).interface_line_attribute3;
2417 l_credited_trx_line_tbl(i).interface_line_attribute4 := p_credit_line_table(i).interface_line_attribute4;
2418 l_credited_trx_line_tbl(i).interface_line_attribute5 := p_credit_line_table(i).interface_line_attribute5;
2419 l_credited_trx_line_tbl(i).interface_line_attribute6 := p_credit_line_table(i).interface_line_attribute6;
2420 l_credited_trx_line_tbl(i).interface_line_attribute7 := p_credit_line_table(i).interface_line_attribute7;
2421 l_credited_trx_line_tbl(i).interface_line_attribute8 := p_credit_line_table(i).interface_line_attribute8;
2422 l_credited_trx_line_tbl(i).interface_line_attribute9 := p_credit_line_table(i).interface_line_attribute9;
2423 l_credited_trx_line_tbl(i).interface_line_attribute10 := p_credit_line_table(i).interface_line_attribute10;
2424 l_credited_trx_line_tbl(i).interface_line_attribute11 := p_credit_line_table(i).interface_line_attribute11;
2425 l_credited_trx_line_tbl(i).interface_line_attribute12 := p_credit_line_table(i).interface_line_attribute12;
2426 l_credited_trx_line_tbl(i).interface_line_attribute13 := p_credit_line_table(i).interface_line_attribute13;
2427 l_credited_trx_line_tbl(i).interface_line_attribute14 := p_credit_line_table(i).interface_line_attribute14;
2428 l_credited_trx_line_tbl(i).interface_line_attribute15 := p_credit_line_table(i).interface_line_attribute15;
2429
2430 l_credited_trx_line_tbl(i).global_attribute_category := p_credit_line_table(i).global_attribute_category;
2431 l_credited_trx_line_tbl(i).global_attribute1 := p_credit_line_table(i).global_attribute1;
2432 l_credited_trx_line_tbl(i).global_attribute2 := p_credit_line_table(i).global_attribute2;
2433 l_credited_trx_line_tbl(i).global_attribute3 := p_credit_line_table(i).global_attribute3;
2434 l_credited_trx_line_tbl(i).global_attribute4 := p_credit_line_table(i).global_attribute4;
2435 l_credited_trx_line_tbl(i).global_attribute5 := p_credit_line_table(i).global_attribute5;
2436 l_credited_trx_line_tbl(i).global_attribute6 := p_credit_line_table(i).global_attribute6;
2437 l_credited_trx_line_tbl(i).global_attribute7 := p_credit_line_table(i).global_attribute7;
2438 l_credited_trx_line_tbl(i).global_attribute8 := p_credit_line_table(i).global_attribute8;
2439 l_credited_trx_line_tbl(i).global_attribute9 := p_credit_line_table(i).global_attribute9;
2440 l_credited_trx_line_tbl(i).global_attribute10 := p_credit_line_table(i).global_attribute10;
2441 l_credited_trx_line_tbl(i).global_attribute11 := p_credit_line_table(i).global_attribute11;
2442 l_credited_trx_line_tbl(i).global_attribute12 := p_credit_line_table(i).global_attribute12;
2443 l_credited_trx_line_tbl(i).global_attribute13 := p_credit_line_table(i).global_attribute13;
2444 l_credited_trx_line_tbl(i).global_attribute14 := p_credit_line_table(i).global_attribute14;
2445 l_credited_trx_line_tbl(i).global_attribute15 := p_credit_line_table(i).global_attribute15;
2446 l_credited_trx_line_tbl(i).global_attribute16 := p_credit_line_table(i).global_attribute16;
2447 l_credited_trx_line_tbl(i).global_attribute17 := p_credit_line_table(i).global_attribute17;
2448 l_credited_trx_line_tbl(i).global_attribute18 := p_credit_line_table(i).global_attribute18;
2449 l_credited_trx_line_tbl(i).global_attribute19 := p_credit_line_table(i).global_attribute19;
2450 l_credited_trx_line_tbl(i).global_attribute20 := p_credit_line_table(i).global_attribute20;
2451
2452 /*Bug2880106 - Validate Amount Passed
2453 1. If extended amount is null, then quantity has to be passed
2454 2. If extended amount is not zero, then
2455 i) if quantity is passed, it must not be zero
2456 ii) if quantity is not passed, then unit selling price
2457 must not be zero
2458 (If quantity is non zero, unit selling price is zero and amount
2459 is non zero, then unit seeling price will be re-derived to
2460 be non-zero)
2461 */
2462 IF p_credit_line_table(i).Extended_amount IS NULL AND
2463 p_credit_line_table(i).quantity_credited IS NULL
2464 THEN
2465 l_message_name := 'AR_CM_API_NULL_QTY_AMT';
2466 RAISE e_handled_error;
2467 ELSIF l_cm_header.credit_method_for_rules = 'UNIT' AND
2468 p_credit_line_table(i).quantity_credited IS NULL
2469 THEN
2470 l_message_name := 'AR_RAXTRX-1768';
2471 RAISE e_handled_error;
2472 ELSIF p_credit_line_table(i).Extended_amount <> 0 AND
2473 ( (p_credit_line_table(i).quantity_credited is NULL
2474 AND
2475 NVL(p_credit_line_table(i).Unit_selling_price,1) = 0)
2476 OR
2477 NVL(p_credit_line_table(i).quantity_credited,1) = 0 )
2478 THEN
2479 l_message_name := 'AR_CM_API_INVALID_AMOUNT';
2480 RAISE e_handled_error;
2481 END IF;
2482
2483 END LOOP;
2484
2485 EXCEPTION
2486 WHEN e_handled_error THEN
2487 fnd_message.set_name( 'AR', 'l_message_name');
2488 RAISE e_handled_error;
2489 WHEN OTHERS THEN
2490 ROLLBACK TO Credit_Transaction_Pub;
2491 IF PG_DEBUG in ('Y', 'C') THEN
2492 arp_util.debug( 'Debug point 9 : Error fetching credit line details');
2493 END IF;
2494 l_debug_point := 9;
2495 l_ue_message := SUBSTR('Error fetching credit line details '
2496 || SQLERRM, 1, 2000);
2497 RAISE e_unexpected_error;
2498 END ;
2499
2500 -----------------------------Insert_line------------------------
2501 BEGIN
2502 IF PG_DEBUG in ('Y', 'C') THEN
2503 arp_util.debug( 'Before Insert line loop');
2504 END IF;
2505
2506 /* 7658882 - identify source of credit as
2507 either ARXTWCMI or AR_CREDIT_MEMO_API and
2508 handle etax calls differently for each */
2509 l_form_name := p_created_from;
2510
2511 FOR i IN 1..l_credited_trx_line_tbl.COUNT
2512 LOOP
2513
2514 IF PG_DEBUG in ('Y', 'C') THEN
2515 arp_util.debug( 'Before Insert line call');
2516 END IF;
2517 ARP_PROCESS_CREDIT.insert_line(
2518 p_form_name => l_form_name,
2519 p_form_version => 1.0 ,
2520 p_credit_rec => l_credited_trx_line_tbl(i) ,
2521 p_line_amount => p_credit_line_table(i).Extended_amount,
2522 p_freight_amount => NULL,
2523 p_line_percent => NULL,
2524 p_freight_percent => NULL,
2525 p_memo_line_type => 'LINE',
2526 p_gl_date => l_default_gl_date,
2527 p_currency_code => l_cm_header.invoice_currency_code ,
2528 p_primary_salesrep_id => l_cm_header.primary_salesrep_id,
2529 p_compute_tax => l_compute_tax,
2530 p_customer_trx_id => l_customer_trx_id,
2531 p_prev_customer_trx_id => p_prev_customer_trx_id,
2532 p_prev_customer_trx_line_id => p_credit_line_table(i).Previous_customer_trx_line_id,
2533 p_tax_percent => l_computed_tax_percent,
2534 p_tax_amount => l_computed_tax_amount,
2535 p_customer_trx_line_id => l_customer_trx_line_id,
2536 p_status => p_status
2537 );
2538
2539 IF PG_DEBUG in ('Y', 'C') THEN
2540 arp_util.debug( 'After Insert line call');
2541 END IF;
2542 END LOOP;
2543 EXCEPTION
2544 WHEN OTHERS THEN
2545 ROLLBACK TO Credit_Transaction_Pub;
2546 IF PG_DEBUG in ('Y', 'C') THEN
2547 arp_util.debug( 'Debug point 8 : Error inserting credit line details');
2548 END IF;
2549 l_err_mesg := SQLERRM;
2550 IF PG_DEBUG in ('Y', 'C') THEN
2551 arp_util.debug( l_err_mesg);
2552 END IF;
2553 l_debug_point := 8;
2554 l_ue_message := SUBSTR('Error inserting credit line details '
2555 || SQLERRM, 1, 2000);
2556 RAISE e_unexpected_error;
2557 END ;
2558
2559 /* R12 eTax uptake - call to calculate_tax to create tax lines */
2560
2561 ARP_ETAX_SERVICES_PKG.Calculate_tax (
2562 p_customer_trx_id => l_customer_trx_id,
2563 p_action => 'CREATE',
2564 x_return_status => l_return_status,
2565 x_msg_count => l_msg_count,
2566 x_msg_data => l_msg_data);
2567
2568 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2569 p_status := 'ETAX_ERROR';
2570 END IF;
2571
2572 /*
2573 TDEY 99/09/21 : bug 983278 : Need Post commit logic !!!
2574
2575 Bug3041195: Changed the parameters passed to post_commit. We need to pass
2576 the credited trx invoice type settings for - overapplication flag; natural
2577 application flag and previous open receivables flag.
2578
2579 */
2580
2581 BEGIN
2582 arp_process_header.post_commit(
2583 p_form_name => l_form_name
2584 ,p_form_version => 70.1
2585 ,p_customer_trx_id => l_customer_trx_id
2586 ,p_previous_customer_trx_id => p_prev_customer_trx_id
2587 ,p_complete_flag => l_cm_header.complete_flag
2588 ,p_trx_open_receivables_flag => l_open_receivable_flag
2589 ,p_prev_open_receivables_flag => l_credited_trx_rec.ctt_open_receivables_flag
2590 ,p_creation_sign => l_creation_sign
2591 ,p_allow_overapplication_flag => l_credited_trx_rec.ctt_allow_overapp_flag
2592 ,p_natural_application_flag => l_credited_trx_rec.ctt_natural_app_only_flag
2593 ,p_cash_receipt_id => NULL
2594 );
2595 EXCEPTION
2596 WHEN OTHERS THEN
2597 ROLLBACK TO Credit_Transaction_Pub;
2598 IF PG_DEBUG in ('Y', 'C') THEN
2599 arp_util.debug( 'Debug point 3 : Error Calling arp_process_header.post_commit.');
2600 END IF;
2601 l_debug_point := 3;
2602 l_ue_message := SUBSTR('Error Calling arp_process_header.post_commit '
2603 || SQLERRM, 1, 2000);
2604 RAISE e_unexpected_error;
2605 END ;
2606
2607
2608 /*
2609 Bug 2527439 : check if doc sequence is required/used
2610 Bug 3041195 : 1. ra_customer_trx_table was not getting updated with the
2611 doc seq no/value when copy_doc_number_flag = 'N'. Modified
2612 if ..else clause.
2613 2. Document sequence Nos were getting lost if errors were
2614 encountered during completion checking. Re-arranged the
2615 code to generate nos only if no errors were encountered.
2616 */
2617
2618
2619 BEGIN
2620 get_doc_seq(222,
2621 l_default_type_name,
2622 arp_global.set_of_books_id,
2623 'A',
2624 l_cm_header.trx_date,
2625 l_cm_header.complete_flag,
2626 l_cm_header.doc_sequence_value,
2627 l_cm_header.doc_sequence_id,
2628 l_doc_seq_status);
2629
2630 IF l_doc_seq_status = FND_API.G_RET_STS_ERROR THEN
2631 RAISE e_unexpected_error;
2632 END IF;
2633
2634
2635 IF PG_DEBUG in ('Y', 'C') THEN
2636 arp_util.debug( 'l_copy_doc_number_flag = ' || l_copy_doc_number_flag);
2637 arp_util.debug( 'doc_sequence_value = ' || to_char(l_cm_header.doc_sequence_value));
2638 arp_util.debug( 'doc_sequence_id = ' || to_char(l_cm_header.doc_sequence_id));
2639 END IF;
2640
2641 -- check copy_doc_number_flag
2642 IF l_cm_header.doc_sequence_value is not null THEN
2643
2644 IF ( NVL(l_copy_doc_number_flag,'N') = 'Y' ) THEN
2645 l_cm_header.old_trx_number := p_trx_number;
2646 l_cm_header.trx_number := to_char(l_cm_header.doc_sequence_value);
2647
2648 UPDATE ar_payment_schedules
2649 SET trx_number = l_cm_header.trx_number
2650 WHERE customer_trx_id = l_customer_trx_id;
2651 ELSE
2652 l_cm_header.trx_number := p_trx_number;
2653 END IF;
2654
2655 UPDATE ra_customer_trx
2656 SET doc_sequence_value = l_cm_header.doc_sequence_value,
2657 doc_sequence_id = l_cm_header.doc_sequence_id,
2658 trx_number = l_cm_header.trx_number,
2659 old_trx_number = l_cm_header.old_trx_number
2660 WHERE customer_trx_id = l_customer_trx_id;
2661
2662 END IF;
2663
2664 EXCEPTION
2665 WHEN OTHERS THEN
2666 ROLLBACK TO Credit_Transaction_Pub;
2667 IF PG_DEBUG in ('Y', 'C') THEN
2668 arp_util.debug( 'Debug point 4 : Error Processing Doc Seq No.');
2669 END IF;
2670 l_debug_point := 4;
2671 l_ue_message := SUBSTR(' Error Processing Doc Seq No ' || SQLERRM, 1, 2000);
2672 RAISE e_unexpected_error;
2673 END ;
2674
2675 p_customer_trx_id := l_customer_trx_id;
2676 IF PG_DEBUG in ('Y', 'C') THEN
2677 arp_util.debug( 'p_customer_trx_id = ' || to_char(p_customer_trx_id));
2678 arp_util.debug( 'p_trx_number = ' || p_trx_number);
2679 arp_util.debug( 'p_computed_tax_percent = ' || to_char(p_computed_tax_percent));
2680 arp_util.debug( 'p_computed_tax_amount = ' || to_char(p_computed_tax_amount));
2681 arp_util.debug( 'p_status = ' || p_status);
2682 arp_util.debug('create_line_cm()-');
2683 END IF;
2684
2685 EXCEPTION
2686 -- bug 2290738 : populate error table with message and pass value to p_status
2687
2688 WHEN e_handled_error THEN
2689 IF PG_DEBUG in ('Y', 'C') THEN
2690 arp_util.debug('EXCEPTION WHEN e_handled_error : create_line_cm');
2691 END IF;
2692 p_status := 'e_handled_error';
2693
2694 ROLLBACK TO Credit_Transaction_Pub;
2695 p_errors(1).customer_trx_id := p_prev_customer_trx_id;
2696 p_errors(1).message_name := l_message_name;
2697 p_errors(1).translated_message := fnd_message.get;
2698
2699 fnd_message.set_name( 'AR', l_message_name);
2700 FND_MSG_PUB.Add;
2701
2702 IF PG_DEBUG in ('Y', 'C') THEN
2703 arp_util.debug( 'p_errors(1).message_name = '
2704 || p_errors(1).message_name);
2705 arp_util.debug( 'p_errors(1).encoded_message = '
2706 || p_errors(1).encoded_message);
2707 arp_util.debug( 'p_errors(1).translated_message = '
2708 || p_errors(1).translated_message);
2709 END IF;
2710
2711 WHEN e_unexpected_error THEN
2712 IF PG_DEBUG in ('Y', 'C') THEN
2713 arp_util.debug('EXCEPTION WHEN e_unexpected_error : create_line_cm');
2714 END IF;
2715 p_status := 'e_unexpected_error';
2716
2717 ROLLBACK TO Credit_Transaction_Pub;
2718 p_errors(1).customer_trx_id := p_prev_customer_trx_id;
2719 p_errors(1).encoded_message := fnd_message.get_encoded;
2720 fnd_message.set_encoded(p_errors(1).encoded_message);
2721 p_errors(1).translated_message := fnd_message.get;
2722
2723 IF p_errors(1).translated_message IS NULL
2724 THEN
2725 p_errors(1).message_name := 'GENERIC_MESSAGE';
2726 p_errors(1).token_name_1 := 'GENERIC_TEXT';
2727 p_errors(1).token_1 := NVL(l_ue_message, 'CREATE_LINE_CM : UNEXPECTED ERROR') ;
2728
2729 fnd_message.set_name('AR','GENERIC_MESSAGE');
2730 fnd_message.set_token('GENERIC_TEXT', p_errors(1).token_1 );
2731 FND_MSG_PUB.Add;
2732
2733 p_errors(1).translated_message := fnd_message.get;
2734 ELSE
2735 /*Bug3041195 - Set Message on API stack */
2736 fnd_message.set_encoded(p_errors(1).encoded_message);
2737 FND_MSG_PUB.Add;
2738 END IF;
2739 IF PG_DEBUG in ('Y', 'C') THEN
2740 arp_util.debug( 'p_errors(1).message_name = '
2741 || p_errors(1).message_name);
2742 arp_util.debug( 'p_errors(1).encoded_message = '
2743 || p_errors(1).encoded_message);
2744 arp_util.debug( 'p_errors(1).translated_message = '
2745 || p_errors(1).translated_message);
2746 END IF;
2747
2748 WHEN OTHERS THEN
2749 IF PG_DEBUG in ('Y', 'C') THEN
2750 arp_util.debug('EXCEPTION WHEN OTHERS : create_line_cm');
2751 END IF;
2752 p_status := 'others';
2753
2754 ROLLBACK TO Credit_Transaction_Pub;
2755 p_errors(1).customer_trx_id := p_prev_customer_trx_id;
2756 p_errors(1).message_name := 'GENERIC_MESSAGE';
2757 p_errors(1).token_name_1 := 'GENERIC_TEXT';
2758 p_errors(1).token_1 := 'CREATE_LINE_CM : ERROR AT UNKNOWN POINT '|| SQLERRM ;
2759
2760 fnd_message.set_name('AR','GENERIC_MESSAGE');
2761 fnd_message.set_token('GENERIC_TEXT', p_errors(1).token_1 );
2762 FND_MSG_PUB.Add;
2763
2764 p_errors(1).translated_message := fnd_message.get;
2765 IF PG_DEBUG in ('Y', 'C') THEN
2766 arp_util.debug( 'p_errors(1).message_name = '
2767 || p_errors(1).message_name);
2768 arp_util.debug( 'p_errors(1).encoded_message = '
2769 || p_errors(1).encoded_message);
2770 arp_util.debug( 'p_errors(1).translated_message = '
2771 || p_errors(1).translated_message);
2772 END IF;
2773
2774 END create_line_cm;
2775
2776 BEGIN
2777 /*Bug3041195: Need to get profile value only once */
2778 fnd_profile.get('UNIQUE:SEQ_NUMBERS', unique_seq_numbers);
2779 END arw_cm_cover;