DBA Data[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;