DBA Data[Home] [Help]

PACKAGE BODY: APPS.ARW_CM_COVER

Source


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