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