DBA Data[Home] [Help]

PACKAGE BODY: APPS.ARP_DET_DIST_PKG

Source


1 PACKAGE BODY ARP_DET_DIST_PKG AS
2 /* $Header: ARPDDB.pls 120.142.12020000.7 2013/01/31 10:41:34 kkikkise ship $ */
3 
4 --{HYU possible_adj
5 TYPE g_amt_rem_type  IS RECORD (
6    sum_tax_amt_rem              NUMBER,
7    sum_tax_acctd_amt_rem        NUMBER,
8    sum_line_amt_rem             NUMBER,
9    sum_line_acctd_amt_rem       NUMBER,
10    sum_frt_amt_rem              NUMBER,
11    sum_frt_acctd_amt_rem        NUMBER,
12    sum_all_amt_rem              NUMBER,
13    sum_all_acctd_amt_rem        NUMBER,
14    sum_line_frt_amt_rem         NUMBER,
15    sum_line_frt_acctd_amt_rem   NUMBER,
16    --
17    sum_head_frt_amt_rem         NUMBER,
18    sum_head_frt_acctd_amt_rem   NUMBER,
19    --
20    sum_chrg_amt_rem             NUMBER,
21    sum_chrg_acctd_amt_rem       NUMBER,
22    -- Need to display the amount original
23    sum_tax_amt_orig             NUMBER,
24    sum_tax_acctd_amt_orig       NUMBER,
25    sum_line_amt_orig            NUMBER,
26    sum_line_acctd_amt_orig      NUMBER,
27    sum_frt_amt_orig             NUMBER,
28    sum_frt_acctd_amt_orig       NUMBER,
29    --
30    sum_line_chrg_amt_rem        NUMBER,
31    sum_line_chrg_acctd_amt_rem  NUMBER,
32    sum_frt_chrg_amt_rem         NUMBER,
33    sum_frt_chrg_acctd_amt_rem   NUMBER,
34    --
35    sum_head_frt_amt_orig        NUMBER,
36    sum_line_frt_amt_orig        NUMBER,
37    sum_head_frt_acctd_amt_orig  NUMBER,
38    sum_line_frt_acctd_amt_orig  NUMBER,
39    tl_for_rl                    VARCHAR2(1),
40    tl_for_fl                    VARCHAR2(1) );
41 --}
42 
43 g_rowid_tab  DBMS_SQL.VARCHAR2_TABLE;
44 
45 PROCEDURE localdebug(p_txt  IN VARCHAR2);
46 
47 PROCEDURE display_ra_ar_gt
48 (p_code  IN VARCHAR2 DEFAULT NULL,
49  p_gt_id IN VARCHAR2);
50 
51 PROCEDURE display_cust_trx_gt(p_customer_trx_id IN NUMBER);
52 /*
53 PROCEDURE br_set_original_rem_amt
54 (p_customer_trx_id     IN NUMBER);
55 */
56 --}
57 
58 g_bulk_fetch_rows      NUMBER := 10000;
59 g_ed_req               VARCHAR2(1) := 'N';
60 g_uned_req             VARCHAR2(1) := 'N';
61 g_cm_trx_id            NUMBER := null;
62 g_cm_upg_mthd          VARCHAR2(30);
63 g_gt_id                VARCHAR2(30);
64 --{BUG4414391
65 --g_se_gt_id             NUMBER := USERENV('SESSIONID');
66 --}
67 
68 PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
69 
70 --{BUG#4414391
71 g_source_table     VARCHAR2(30) DEFAULT NULL;
72 g_line_flag        VARCHAR2(30) DEFAULT 'NORMAL';
73 g_tax_flag         VARCHAR2(30) DEFAULT 'NORMAL';
74 g_freight_flag     VARCHAR2(30) DEFAULT 'NORMAL';
75 g_charges_flag     VARCHAR2(30) DEFAULT 'NORMAL';
76 g_ed_line_flag     VARCHAR2(30) DEFAULT 'NORMAL';
77 g_ed_tax_flag      VARCHAR2(30) DEFAULT 'NORMAL';
78 g_uned_line_flag   VARCHAR2(30) DEFAULT 'NORMAL';
79 g_uned_tax_flag    VARCHAR2(30) DEFAULT 'NORMAL';
80 --}
81 
82 l_sob_list             gl_ca_utility_pkg.r_sob_list;
83 previous_org_id        NUMBER(15);
84 previous_sob_id        NUMBER(15);
85 previous_ctx_id        NUMBER(15);
86 previous_pk_id_one     NUMBER;
87 previous_pk_id_two     NUMBER;
88 
89 g_line_adj             NUMBER := 0;
90 g_tax_adj              NUMBER := 0;
91 g_frt_adj              NUMBER := 0;
92 g_chrg_adj             NUMBER := 0;
93 g_line_applied         NUMBER := 0;
94 g_tax_applied          NUMBER := 0;
95 g_frt_applied          NUMBER := 0;
96 g_chrg_applied         NUMBER := 0;
97 g_line_ed              NUMBER := 0;
98 g_tax_ed               NUMBER := 0;
99 g_frt_ed               NUMBER := 0;
100 g_chrg_ed              NUMBER := 0;
101 g_line_uned            NUMBER := 0;
102 g_tax_uned             NUMBER := 0;
103 g_frt_uned             NUMBER := 0;
104 g_chrg_uned            NUMBER := 0;
105    --
106 g_acctd_line_adj       NUMBER := 0;
107 g_acctd_tax_adj        NUMBER := 0;
108 g_acctd_frt_adj        NUMBER := 0;
109 g_acctd_chrg_adj       NUMBER := 0;
110 g_acctd_line_applied   NUMBER := 0;
111 g_acctd_tax_applied    NUMBER := 0;
112 g_acctd_frt_applied    NUMBER := 0;
113 g_acctd_chrg_applied   NUMBER := 0;
114 g_acctd_line_ed        NUMBER := 0;
115 g_acctd_tax_ed         NUMBER := 0;
116 g_acctd_frt_ed         NUMBER := 0;
117 g_acctd_chrg_ed        NUMBER := 0;
118 g_acctd_line_uned      NUMBER := 0;
119 g_acctd_tax_uned       NUMBER := 0;
120 g_acctd_frt_uned       NUMBER := 0;
121 g_acctd_chrg_uned      NUMBER := 0;
122 
123 g_cust_inv_rec         ra_customer_trx%ROWTYPE;
124 
125 --{
126 g_run_from_amt               NUMBER;
127 g_run_from_total             NUMBER;
128 g_run_from_acctd_amt         NUMBER;
129 g_run_from_acctd_total       NUMBER;
130 g_current_trx_id             NUMBER;
131 --}
132 
133 --{CASH and MFAR legacy
134 g_mode_process               VARCHAR2(30) := 'R12';
135 --}
136 
137 --{HYU upgrade cash basis
138 g_upgrade_mode              VARCHAR2(30) := 'N';
139 g_currency_code             VARCHAR2(30);
140 g_org_id                    NUMBER;
141 
142 
143 --{FRT and CHRG
144 g_trx_line_frt             VARCHAR2(1) := 'N';
145 g_trx_line_chrg            VARCHAR2(1) := 'N';
146 --}
147 
148 --HY Cash Basis Upgrade
149 FUNCTION CurrRound
150 ( p_amount        IN NUMBER,
151   p_currency_code IN VARCHAR2 DEFAULT NULL)
152 RETURN NUMBER;
153 
154 
155 PROCEDURE conv_acctd_amt
156   (p_pay_adj              IN VARCHAR2,
157    p_adj_rec              IN ar_adjustments%ROWTYPE,
158    p_app_rec              IN ar_receivable_applications%ROWTYPE,
159    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type);
160 
161 PROCEDURE conv_acctd_amt_upg
162   (p_pay_adj              IN VARCHAR2,
163    p_adj_rec              IN ar_adjustments%ROWTYPE,
164    p_app_rec              IN ar_receivable_applications%ROWTYPE,
165    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type);
166 
167 PROCEDURE update_taxable
168 (p_gt_id             IN VARCHAR2,
169  p_customer_trx_id   IN NUMBER,
170  p_ae_sys_rec        IN arp_acct_main.ae_sys_rec_type);
171 
172 
173 PROCEDURE convert_ra_inv_to_cm
174 ( p_inv_ra_rec     IN         ar_receivable_applications%ROWTYPE,
175   p_cm_trx_id      IN         NUMBER,
176   x_cm_ra_rec      IN OUT NOCOPY ar_receivable_applications%ROWTYPE,
177   p_mode           IN         VARCHAR2 DEFAULT 'OLTP',
178   p_gt_id          IN         VARCHAR2 DEFAULT NULL,
179   p_from_llca      IN         VARCHAR2 DEFAULT 'N',
180   p_upg_cm        IN          VARCHAR2 DEFAULT 'N');
181 
182 /*-------------------------------------------------------------------------+
183  | Routine elementary and data structure                                   |
184  +-------------------------------------------------------------------------*/
185 TYPE gt_record    IS RECORD (gt_id      NUMBER,
186                              app_level  VARCHAR2(30),
187                              app_rec    ar_receivable_applications%ROWTYPE);
188 
189 TYPE gt_tab_type  IS TABLE of gt_record INDEX BY BINARY_INTEGER;
190 g_gt_tab       gt_tab_type;
191 clear_gt_tab   gt_tab_type;
192 
193 TYPE CHAR_HASH_TABLE IS TABLE OF VARCHAR2(2000) INDEX BY VARCHAR2(2000);
194 
195 --
196 -- Structure to keep the input amount and the output amount of the proration
197 --
198 TYPE pro_res_tbl_type IS RECORD
199 ( -- Groupe
200   GROUPE                              DBMS_SQL.VARCHAR2_TABLE,
201   -- Base
202      -- ADJ and APP
203      base_pro_amt                     DBMS_SQL.NUMBER_TABLE,
204      base_pro_acctd_amt               DBMS_SQL.NUMBER_TABLE,
205      BASE_CHRG_PRO_AMT                DBMS_SQL.NUMBER_TABLE,
206      BASE_CHRG_PRO_ACCTD_AMT          DBMS_SQL.NUMBER_TABLE,
207      base_frt_pro_amt                 DBMS_SQL.NUMBER_TABLE,
208      base_frt_pro_acctd_amt           DBMS_SQL.NUMBER_TABLE,
209      base_tax_pro_amt                 DBMS_SQL.NUMBER_TABLE,
210      base_tax_pro_acctd_amt           DBMS_SQL.NUMBER_TABLE,
211      -- ED
212      base_ed_pro_amt                  DBMS_SQL.NUMBER_TABLE,
213      base_ed_pro_acctd_amt            DBMS_SQL.NUMBER_TABLE,
214      BASE_ed_CHRG_PRO_AMT             DBMS_SQL.NUMBER_TABLE,
215      BASE_ed_CHRG_PRO_ACCTD_AMT       DBMS_SQL.NUMBER_TABLE,
216      base_ed_frt_pro_amt              DBMS_SQL.NUMBER_TABLE,
217      base_ed_frt_pro_acctd_amt        DBMS_SQL.NUMBER_TABLE,
218      base_ed_tax_pro_amt              DBMS_SQL.NUMBER_TABLE,
219      base_ed_tax_pro_acctd_amt        DBMS_SQL.NUMBER_TABLE,
220      -- UNED
221      base_uned_pro_amt                DBMS_SQL.NUMBER_TABLE,
222      base_uned_pro_acctd_amt          DBMS_SQL.NUMBER_TABLE,
223      BASE_uned_CHRG_PRO_AMT           DBMS_SQL.NUMBER_TABLE,
224      BASE_uned_CHRG_PRO_ACCTD_AMT     DBMS_SQL.NUMBER_TABLE,
225      base_uned_frt_pro_amt            DBMS_SQL.NUMBER_TABLE,
226      base_uned_frt_pro_acctd_amt      DBMS_SQL.NUMBER_TABLE,
227      base_uned_tax_pro_amt            DBMS_SQL.NUMBER_TABLE,
228      base_uned_tax_pro_acctd_amt      DBMS_SQL.NUMBER_TABLE,
229   -- Element numerator
230      -- ADJ and APP
231      elmt_pro_amt                     DBMS_SQL.NUMBER_TABLE,
232      elmt_pro_acctd_amt               DBMS_SQL.NUMBER_TABLE,
233      ELMT_CHRG_PRO_AMT                DBMS_SQL.NUMBER_TABLE,
234      ELMT_CHRG_PRO_ACCTD_AMT          DBMS_SQL.NUMBER_TABLE,
235      elmt_frt_pro_amt                 DBMS_SQL.NUMBER_TABLE,
236      elmt_frt_pro_acctd_amt           DBMS_SQL.NUMBER_TABLE,
237      elmt_tax_pro_amt                 DBMS_SQL.NUMBER_TABLE,
238      elmt_tax_pro_acctd_amt           DBMS_SQL.NUMBER_TABLE,
239      -- ED
240      elmt_ed_pro_amt                  DBMS_SQL.NUMBER_TABLE,
241      elmt_ed_pro_acctd_amt            DBMS_SQL.NUMBER_TABLE,
242      ELMT_ed_CHRG_PRO_AMT             DBMS_SQL.NUMBER_TABLE,
243      ELMT_ed_CHRG_PRO_ACCTD_AMT       DBMS_SQL.NUMBER_TABLE,
244      elmt_ed_frt_pro_amt              DBMS_SQL.NUMBER_TABLE,
245      elmt_ed_frt_pro_acctd_amt        DBMS_SQL.NUMBER_TABLE,
246      elmt_ed_tax_pro_amt              DBMS_SQL.NUMBER_TABLE,
247      elmt_ed_tax_pro_acctd_amt        DBMS_SQL.NUMBER_TABLE,
248      -- UNED
249      elmt_uned_pro_amt                DBMS_SQL.NUMBER_TABLE,
250      elmt_uned_pro_acctd_amt          DBMS_SQL.NUMBER_TABLE,
251      ELMT_uned_CHRG_PRO_AMT           DBMS_SQL.NUMBER_TABLE,
252      ELMT_uned_CHRG_PRO_ACCTD_AMT     DBMS_SQL.NUMBER_TABLE,
253      elmt_uned_frt_pro_amt            DBMS_SQL.NUMBER_TABLE,
254      elmt_uned_frt_pro_acctd_amt      DBMS_SQL.NUMBER_TABLE,
255      elmt_uned_tax_pro_amt            DBMS_SQL.NUMBER_TABLE,
256      elmt_uned_tax_pro_acctd_amt      DBMS_SQL.NUMBER_TABLE,
257   -- Amount to be allocated -- ADJ and APP
258      buc_alloc_amt                    DBMS_SQL.NUMBER_TABLE,
259      buc_alloc_acctd_amt              DBMS_SQL.NUMBER_TABLE,
260      buc_chrg_alloc_amt               DBMS_SQL.NUMBER_TABLE,
261      buc_chrg_alloc_acctd_amt         DBMS_SQL.NUMBER_TABLE,
262      buc_frt_alloc_amt                DBMS_SQL.NUMBER_TABLE,
263      buc_frt_alloc_acctd_amt          DBMS_SQL.NUMBER_TABLE,
264      buc_tax_alloc_amt                DBMS_SQL.NUMBER_TABLE,
265      buc_tax_alloc_acctd_amt          DBMS_SQL.NUMBER_TABLE,
266      -- ED
267      buc_ed_alloc_amt                 DBMS_SQL.NUMBER_TABLE,
268      buc_ed_alloc_acctd_amt           DBMS_SQL.NUMBER_TABLE,
269      buc_ed_chrg_alloc_amt            DBMS_SQL.NUMBER_TABLE,
270      buc_ed_chrg_alloc_acctd_amt      DBMS_SQL.NUMBER_TABLE,
271      buc_ed_frt_alloc_amt             DBMS_SQL.NUMBER_TABLE,
272      buc_ed_frt_alloc_acctd_amt       DBMS_SQL.NUMBER_TABLE,
273      buc_ed_tax_alloc_amt             DBMS_SQL.NUMBER_TABLE,
274      buc_ed_tax_alloc_acctd_amt       DBMS_SQL.NUMBER_TABLE,
275      -- UNED
276      buc_uned_alloc_amt               DBMS_SQL.NUMBER_TABLE,
277      buc_uned_alloc_acctd_amt         DBMS_SQL.NUMBER_TABLE,
278      buc_uned_chrg_alloc_amt          DBMS_SQL.NUMBER_TABLE,
279      buc_uned_chrg_alloc_acctd_amt    DBMS_SQL.NUMBER_TABLE,
280      buc_uned_frt_alloc_amt           DBMS_SQL.NUMBER_TABLE,
281      buc_uned_frt_alloc_acctd_amt     DBMS_SQL.NUMBER_TABLE,
282      buc_uned_tax_alloc_amt           DBMS_SQL.NUMBER_TABLE,
283      buc_uned_tax_alloc_acctd_amt     DBMS_SQL.NUMBER_TABLE,
284   -- Currency
285   FROM_CURRENCY                       DBMS_SQL.VARCHAR2_TABLE,
286   TO_CURRENCY                         DBMS_SQL.VARCHAR2_TABLE,
287   BASE_CURRENCY                       DBMS_SQL.VARCHAR2_TABLE,
288   -- Result of the allocation
289     -- ADJ and APP
290     tl_alloc_amt                      DBMS_SQL.NUMBER_TABLE,
291     tl_alloc_acctd_amt                DBMS_SQL.NUMBER_TABLE,
292     tl_chrg_alloc_amt                 DBMS_SQL.NUMBER_TABLE,
293     tl_chrg_alloc_acctd_amt           DBMS_SQL.NUMBER_TABLE,
294     tl_frt_alloc_amt                  DBMS_SQL.NUMBER_TABLE,
295     tl_frt_alloc_acctd_amt            DBMS_SQL.NUMBER_TABLE,
296     tl_tax_alloc_amt                  DBMS_SQL.NUMBER_TABLE,
297     tl_tax_alloc_acctd_amt            DBMS_SQL.NUMBER_TABLE,
298     -- ED
299     tl_ed_alloc_amt                   DBMS_SQL.NUMBER_TABLE,
300     tl_ed_alloc_acctd_amt             DBMS_SQL.NUMBER_TABLE,
301     tl_ed_chrg_alloc_amt              DBMS_SQL.NUMBER_TABLE,
302     tl_ed_chrg_alloc_acctd_amt        DBMS_SQL.NUMBER_TABLE,
303     tl_ed_frt_alloc_amt               DBMS_SQL.NUMBER_TABLE,
304     tl_ed_frt_alloc_acctd_amt         DBMS_SQL.NUMBER_TABLE,
305     tl_ed_tax_alloc_amt               DBMS_SQL.NUMBER_TABLE,
306     tl_ed_tax_alloc_acctd_amt         DBMS_SQL.NUMBER_TABLE,
307     -- UNED
308     tl_uned_alloc_amt                 DBMS_SQL.NUMBER_TABLE,
309     tl_uned_alloc_acctd_amt           DBMS_SQL.NUMBER_TABLE,
310     tl_uned_chrg_alloc_amt            DBMS_SQL.NUMBER_TABLE,
311     tl_uned_chrg_alloc_acctd_amt      DBMS_SQL.NUMBER_TABLE,
312     tl_uned_frt_alloc_amt             DBMS_SQL.NUMBER_TABLE,
313     tl_uned_frt_alloc_acctd_amt       DBMS_SQL.NUMBER_TABLE,
314     tl_uned_tax_alloc_amt             DBMS_SQL.NUMBER_TABLE,
315     tl_uned_tax_alloc_acctd_amt       DBMS_SQL.NUMBER_TABLE,
316   --
317   ROWID_ID                            DBMS_SQL.VARCHAR2_TABLE,
318   line_type                        DBMS_SQL.VARCHAR2_TABLE);
319 
320 --
321 -- Internal structure for safety on proration
322 --
323 TYPE group_tbl_type IS RECORD
324 ( GROUPE                      DBMS_SQL.VARCHAR2_TABLE,
325   -- ADJ and APP
326   RUN_ALLOC                   DBMS_SQL.NUMBER_TABLE,
327   RUN_ACCTD_ALLOC             DBMS_SQL.NUMBER_TABLE,
328   RUN_AMT                     DBMS_SQL.NUMBER_TABLE,
329   RUN_ACCTD_AMT               DBMS_SQL.NUMBER_TABLE,
330   RUN_CHRG_ALLOC              DBMS_SQL.NUMBER_TABLE,
331   RUN_CHRG_ACCTD_ALLOC        DBMS_SQL.NUMBER_TABLE,
332   RUN_CHRG_AMT                DBMS_SQL.NUMBER_TABLE,
333   RUN_CHRG_ACCTD_AMT          DBMS_SQL.NUMBER_TABLE,
334   RUN_FRT_ALLOC               DBMS_SQL.NUMBER_TABLE,
335   RUN_FRT_ACCTD_ALLOC         DBMS_SQL.NUMBER_TABLE,
336   RUN_FRT_AMT                 DBMS_SQL.NUMBER_TABLE,
337   RUN_FRT_ACCTD_AMT           DBMS_SQL.NUMBER_TABLE,
338   RUN_TAX_ALLOC               DBMS_SQL.NUMBER_TABLE,
339   RUN_TAX_ACCTD_ALLOC         DBMS_SQL.NUMBER_TABLE,
340   RUN_TAX_AMT                 DBMS_SQL.NUMBER_TABLE,
341   RUN_TAX_ACCTD_AMT           DBMS_SQL.NUMBER_TABLE,
342   -- ED
343   RUN_ED_ALLOC                DBMS_SQL.NUMBER_TABLE,
344   RUN_ED_ACCTD_ALLOC          DBMS_SQL.NUMBER_TABLE,
345   RUN_ED_AMT                  DBMS_SQL.NUMBER_TABLE,
346   RUN_ED_ACCTD_AMT            DBMS_SQL.NUMBER_TABLE,
347   RUN_ED_CHRG_ALLOC           DBMS_SQL.NUMBER_TABLE,
348   RUN_ED_CHRG_ACCTD_ALLOC     DBMS_SQL.NUMBER_TABLE,
349   RUN_ED_CHRG_AMT             DBMS_SQL.NUMBER_TABLE,
350   RUN_ED_CHRG_ACCTD_AMT       DBMS_SQL.NUMBER_TABLE,
351   RUN_ED_FRT_ALLOC            DBMS_SQL.NUMBER_TABLE,
352   RUN_ED_FRT_ACCTD_ALLOC      DBMS_SQL.NUMBER_TABLE,
353   RUN_ED_FRT_AMT              DBMS_SQL.NUMBER_TABLE,
354   RUN_ED_FRT_ACCTD_AMT        DBMS_SQL.NUMBER_TABLE,
355   RUN_ED_TAX_ALLOC            DBMS_SQL.NUMBER_TABLE,
356   RUN_ED_TAX_ACCTD_ALLOC      DBMS_SQL.NUMBER_TABLE,
357   RUN_ED_TAX_AMT              DBMS_SQL.NUMBER_TABLE,
358   RUN_ED_TAX_ACCTD_AMT        DBMS_SQL.NUMBER_TABLE,
359   -- UNED
360   RUN_UNED_ALLOC              DBMS_SQL.NUMBER_TABLE,
361   RUN_UNED_ACCTD_ALLOC        DBMS_SQL.NUMBER_TABLE,
362   RUN_UNED_AMT                DBMS_SQL.NUMBER_TABLE,
363   RUN_UNED_ACCTD_AMT          DBMS_SQL.NUMBER_TABLE,
364   RUN_UNED_CHRG_ALLOC         DBMS_SQL.NUMBER_TABLE,
365   RUN_UNED_CHRG_ACCTD_ALLOC   DBMS_SQL.NUMBER_TABLE,
366   RUN_UNED_CHRG_AMT           DBMS_SQL.NUMBER_TABLE,
367   RUN_UNED_CHRG_ACCTD_AMT     DBMS_SQL.NUMBER_TABLE,
368   RUN_UNED_FRT_ALLOC          DBMS_SQL.NUMBER_TABLE,
369   RUN_UNED_FRT_ACCTD_ALLOC    DBMS_SQL.NUMBER_TABLE,
370   RUN_UNED_FRT_AMT            DBMS_SQL.NUMBER_TABLE,
371   RUN_UNED_FRT_ACCTD_AMT      DBMS_SQL.NUMBER_TABLE,
372   RUN_UNED_TAX_ALLOC          DBMS_SQL.NUMBER_TABLE,
373   RUN_UNED_TAX_ACCTD_ALLOC    DBMS_SQL.NUMBER_TABLE,
374   RUN_UNED_TAX_AMT            DBMS_SQL.NUMBER_TABLE,
375   RUN_UNED_TAX_ACCTD_AMT      DBMS_SQL.NUMBER_TABLE,
376   GROUPE_INDEX                CHAR_HASH_TABLE);
377 
378 
379 --HY Cash Basis Upgrade
380 FUNCTION CurrRound
381 ( p_amount        IN NUMBER,
382   p_currency_code IN VARCHAR2 DEFAULT NULL)
383 RETURN NUMBER
384 IS
385   l_return    NUMBER;
386 BEGIN
387   IF g_upgrade_mode = 'Y' THEN
388   l_return    := ar_unposted_item_util.CurrRound(p_amount,g_currency_code);
389   ELSE
390   l_return    := ar_unposted_item_util.CurrRound(p_amount,p_currency_code);
391   END IF;
392   RETURN l_return;
393 END;
394 
395 
396 --BUG#44144391
397 PROCEDURE get_gt_sequence
398 (x_gt_id         OUT NOCOPY NUMBER,
399  x_return_status IN OUT NOCOPY VARCHAR2,
400  x_msg_count     IN OUT NOCOPY NUMBER,
401  x_msg_data      IN OUT NOCOPY VARCHAR2)
402 IS
403   CURSOR c_gt IS
404   SELECT ar_distribution_split_s.NEXTVAL
405     FROM DUAL;
406   no_sequence   EXCEPTION;
407 BEGIN
408   IF PG_DEBUG = 'Y' THEN
409   localdebug('arp_det_dist_pkg.get_gt_sequence()+');
410   END IF;
411   OPEN c_gt;
412   FETCH c_gt INTO x_gt_id;
413   IF c_gt%NOTFOUND THEN
414     RAISE no_sequence;
415   END IF;
416   CLOSE c_gt;
417   IF PG_DEBUG = 'Y' THEN
418   localdebug('arp_det_dist_pkg.get_gt_sequence()-');
419   END IF;
420 EXCEPTION
421   WHEN no_sequence THEN
422    IF c_gt%ISOPEN THEN
423      CLOSE c_gt;
424    END IF;
425    IF PG_DEBUG = 'Y' THEN
426    localdebug('EXCEPTION no_sequence in in arp_dte_dist_pkg.get_gt_sequence');
427    END IF;
428    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
429    FND_MESSAGE.SET_NAME( 'AR', 'AR_CUST_API_ERROR' );
430    FND_MESSAGE.SET_TOKEN( 'TEXT', 'EXCEPTION no_sequence in arp_dte_dist_pkg.get_gt_sequence');
431    FND_MSG_PUB.ADD;
432    FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
433                              p_count   => x_msg_count,
434                              p_data    => x_msg_data);
435 END get_gt_sequence;
436 --}
437 
438 
439 PROCEDURE localdebug(p_txt  IN VARCHAR2) IS
440 BEGIN
441   IF PG_DEBUG = 'Y' THEN
442     arp_debug.debug(p_txt);
443   END IF;
444 END;
445 
446 
447 PROCEDURE set_mode_process
448 (p_customer_trx  IN ra_customer_trx%ROWTYPE,
449  p_from_llca     IN VARCHAR2 DEFAULT 'N'    )
450 IS
451   CURSOR cu_trx IS
452   SELECT * FROM ra_customer_trx
453   WHERE customer_trx_id = p_customer_trx.customer_trx_id;
454   l_mark     VARCHAR2(30);
455 BEGIN
456 IF PG_DEBUG = 'Y' THEN
457 localdebug('arp_det_dist_pkg.set_mode_process()+');
458 localdebug('  p_customer_trx.customer_trx_id :'||p_customer_trx.customer_trx_id);
459 localdebug('  p_customer_trx.upgrade_method        :'||p_customer_trx.upgrade_method);
460 END IF;
461 
462   IF p_customer_trx.upgrade_method IS NULL THEN
463      OPEN cu_trx;
464      FETCH cu_trx INTO g_cust_inv_rec;
465      IF cu_trx%NOTFOUND THEN
466        RAISE no_data_found;
467      ELSE
468        l_mark := g_cust_inv_rec.upgrade_method;
469      END IF;
470      CLOSE cu_trx;
471   ELSE
472      l_mark := p_customer_trx.upgrade_method;
473   END IF;
474 
475   IF l_mark = 'R12' THEN
476     g_mode_process := 'R12';
477   ELSIF l_mark = 'R12_11IMFAR' THEN
478     g_mode_process := 'R12_11IMFAR';
479   ELSIF l_mark = 'R12_11ICASH' THEN
480     g_mode_process := 'R12_11ICASH';
481   --{
482   ELSIF l_mark = 'R12_NLB' THEN
483     g_mode_process := 'R12_NLB';
484   --}
485   ELSIF l_mark = 'R12_MERGE' THEN
486     g_mode_process := 'R12_MERGE';
487   ELSE
488     g_mode_process := 'R12_NLB';
489   END IF;
490 IF PG_DEBUG = 'Y' THEN
491 localdebug('  g_mode_process :'||g_mode_process);
492 localdebug('arp_det_dist_pkg.set_mode_process()-');
493 END IF;
494 
495 END;
496 --}
497 
498 
499 PROCEDURE stamping_ra
500 (p_app_id    IN NUMBER)
501 IS
502 BEGIN
503   --
504   -- application on a 11i Mfar transaction with Mfar adjustments
505   --
506   IF g_mode_process = 'R12_11IMFAR' THEN
507 
508     UPDATE ar_receivable_applications
509        SET upgrade_method = 'R12_11IMFAR'
510      WHERE receivable_application_id = p_app_id;
511 
512   --
513   -- Application on a R12 transaction
514   -- Note all 11i transactions without applications will be stamped as R12
515   --
516   ELSIF g_mode_process IN ('R12','R12_NLB') THEN
517 
518     UPDATE ar_receivable_applications
519        SET upgrade_method = 'R12'
520      WHERE receivable_application_id = p_app_id;
521 
522   --
523   -- application on a 11i transaction with 11i adjustments (no Mfar)
524   --
525   ELSIF g_mode_process = 'R12_11ICASH' THEN
526 
527     UPDATE ar_receivable_applications
528        SET upgrade_method = 'R12_11ICASH'
529      WHERE receivable_application_id = p_app_id;
530 
531   --application on invoice having activity/application with summarized distributions
532   ELSIF g_mode_process = 'R12_MERGE' THEN
533 
534     UPDATE ar_receivable_applications
535        SET upgrade_method = 'R12_MERGE'
536      WHERE receivable_application_id = p_app_id;
537 
538   END IF;
539 END;
540 
541 PROCEDURE stamping_adj
542 (p_adj_id    IN NUMBER)
543 IS
544 BEGIN
545 
546   -- Adjustment has upgrade_method as
547   -- 11I     -- At downtime upgrade
548   -- 11IMFAR -- * At 11I Mfar transaction with Mfar adjustment being applied in R12
549   --              done in set_original_rem_amt procedure
550   --            * At extracted posting time if the adjustment is marked as 11I
551   --              we need to update this flag to retrieve Mfar distributions
552   --            Note this process is needed when application is getting posted
553   -- R12     -- At the end of nornal process
554   IF g_mode_process IN ('R12','R12_NLB','R12_11ICASH','R12_11IMFAR') THEN
555 
556     UPDATE ar_adjustments
557        SET upgrade_method = 'R12'
558      WHERE adjustment_id = p_adj_id;
559 
560   ELSIF g_mode_process IN ('R12_MERGE') THEN
561     UPDATE ar_adjustments
562        SET upgrade_method = 'R12_MERGE'
563      WHERE adjustment_id = p_adj_id;
564   END IF;
565 END;
566 
567 
568 --
569 -- Function procedure declaration
570 --
571 /*-----------------------------------------------------------------------+
572  | plsql_proration                                                       |
573  +-----------------------------------------------------------------------+
574  | Does the proration based on the input pro_res_tbl_type parameter      |
575  | structure                                                             |
576  +-----------------------------------------------------------------------+
577  | parameter IN OUT pro_res_tbl_type                                     |
578  +-----------------------------------------------------------------------*/
579 PROCEDURE plsql_proration
580 ( x_tab                  IN OUT NOCOPY pro_res_tbl_type,
581   x_group_tbl            IN OUT NOCOPY group_tbl_type,
582   p_group_level          IN VARCHAR2 DEFAULT 'NOGROUP',
583   -- ADJ and APP
584   x_run_amt              IN OUT NOCOPY NUMBER,
585   x_run_alloc            IN OUT NOCOPY NUMBER,
586   x_run_acctd_amt        IN OUT NOCOPY NUMBER,
587   x_run_acctd_alloc      IN OUT NOCOPY NUMBER,
588   x_run_chrg_amt         IN OUT NOCOPY NUMBER,
589   x_run_chrg_alloc       IN OUT NOCOPY NUMBER,
590   x_run_chrg_acctd_amt   IN OUT NOCOPY NUMBER,
591   x_run_chrg_acctd_alloc IN OUT NOCOPY NUMBER,
592   x_run_frt_amt         IN OUT NOCOPY NUMBER,
593   x_run_frt_alloc       IN OUT NOCOPY NUMBER,
594   x_run_frt_acctd_amt   IN OUT NOCOPY NUMBER,
595   x_run_frt_acctd_alloc IN OUT NOCOPY NUMBER,
596   x_run_tax_amt         IN OUT NOCOPY NUMBER,
597   x_run_tax_alloc       IN OUT NOCOPY NUMBER,
598   x_run_tax_acctd_amt   IN OUT NOCOPY NUMBER,
599   x_run_tax_acctd_alloc IN OUT NOCOPY NUMBER,
600   -- ED
601   x_run_ed_amt              IN OUT NOCOPY NUMBER,
602   x_run_ed_alloc            IN OUT NOCOPY NUMBER,
603   x_run_ed_acctd_amt        IN OUT NOCOPY NUMBER,
604   x_run_ed_acctd_alloc      IN OUT NOCOPY NUMBER,
605   x_run_ed_chrg_amt         IN OUT NOCOPY NUMBER,
606   x_run_ed_chrg_alloc       IN OUT NOCOPY NUMBER,
607   x_run_ed_chrg_acctd_amt   IN OUT NOCOPY NUMBER,
608   x_run_ed_chrg_acctd_alloc IN OUT NOCOPY NUMBER,
609   x_run_ed_frt_amt         IN OUT NOCOPY NUMBER,
610   x_run_ed_frt_alloc       IN OUT NOCOPY NUMBER,
611   x_run_ed_frt_acctd_amt   IN OUT NOCOPY NUMBER,
612   x_run_ed_frt_acctd_alloc IN OUT NOCOPY NUMBER,
613   x_run_ed_tax_amt         IN OUT NOCOPY NUMBER,
614   x_run_ed_tax_alloc       IN OUT NOCOPY NUMBER,
615   x_run_ed_tax_acctd_amt   IN OUT NOCOPY NUMBER,
616   x_run_ed_tax_acctd_alloc IN OUT NOCOPY NUMBER,
617   -- UNED
618   x_run_uned_amt              IN OUT NOCOPY NUMBER,
619   x_run_uned_alloc            IN OUT NOCOPY NUMBER,
620   x_run_uned_acctd_amt        IN OUT NOCOPY NUMBER,
621   x_run_uned_acctd_alloc      IN OUT NOCOPY NUMBER,
622   x_run_uned_chrg_amt         IN OUT NOCOPY NUMBER,
623   x_run_uned_chrg_alloc       IN OUT NOCOPY NUMBER,
624   x_run_uned_chrg_acctd_amt   IN OUT NOCOPY NUMBER,
625   x_run_uned_chrg_acctd_alloc IN OUT NOCOPY NUMBER,
626   x_run_uned_frt_amt         IN OUT NOCOPY NUMBER,
627   x_run_uned_frt_alloc       IN OUT NOCOPY NUMBER,
628   x_run_uned_frt_acctd_amt   IN OUT NOCOPY NUMBER,
629   x_run_uned_frt_acctd_alloc IN OUT NOCOPY NUMBER,
630   x_run_uned_tax_amt         IN OUT NOCOPY NUMBER,
631   x_run_uned_tax_alloc       IN OUT NOCOPY NUMBER,
632   x_run_uned_tax_acctd_amt   IN OUT NOCOPY NUMBER,
633   x_run_uned_tax_acctd_alloc IN OUT NOCOPY NUMBER);
634 
635 /*-----------------------------------------------------------------------+
636  | update_line                                                           |
637  +-----------------------------------------------------------------------+
638  | Read ra_ar_gt for proration info                                      |
639  | Does the proration plsql_proration                                    |
640  | update ra_ar_gt with the result                                       |
641  | for lines of a transaction                                            |
642  +-----------------------------------------------------------------------+
643  | parameter:                                                            |
644  |  p_customer_trx_id         transaction id                             |
645  |  p_gt_id                   global id                                  |
646  +-----------------------------------------------------------------------*/
647  PROCEDURE update_line
648  (p_gt_id           IN VARCHAR2,
649   p_customer_trx_id IN NUMBER,
650   p_ae_sys_rec      IN arp_acct_main.ae_sys_rec_type);
651 
652 /*-------------------------------------------------------------------------+
653  | get_invoice_line_info                                                   |
654  +-------------------------------------------------------------------------+
655  | parameter :                                                             |
656  |  p_gt_id                 global temporary id                            |
657  |  p_customer_trx_id       transaction id                                 |
658  |  p_ae_sys_rec            receivable system parameter                    |
659  |  p_mode                  NORMAL / REMESTIM                              |
660  +-------------------------------------------------------------------------*/
661 PROCEDURE get_invoice_line_info
662   (p_gt_id                IN VARCHAR2,
663    p_customer_trx_id      IN NUMBER,
664    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type,
665    p_mode                 IN VARCHAR2);
666 
667 /*-------------------------------------------------------------------------+
668  | get_invoice_line_info_cm                                                   |
669  +-------------------------------------------------------------------------+
670  | parameter :                                                             |
671  |  p_gt_id                 global temporary id                            |
672  |  p_customer_trx_id       transaction id                                 |
673  |  p_ae_sys_rec            receivable system parameter                    |
674  |  p_mode                  NORMAL / REMESTIM                              |
675  +-------------------------------------------------------------------------*/
676 PROCEDURE get_invoice_line_info_cm
677   (p_gt_id                IN VARCHAR2,
678    p_customer_trx_id      IN NUMBER,
679    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type,
680    p_mode                 IN VARCHAR2);
681 
682 
683 /*-------------------------------------------------------------------------+
684  | get_invoice_line_info_per_grp                                           |
685  +-------------------------------------------------------------------------+
686  | parameter :                                                             |
687  |  p_gt_id                 global temporary id                            |
688  |  p_customer_trx_id       transaction id                                 |
689  |  p_source_data_key1..5   group identification                           |
690  |  p_ae_sys_rec            receivable system parameter                    |
691  +-------------------------------------------------------------------------*/
692 PROCEDURE get_invoice_line_info_per_grp
693 (p_gt_id               IN VARCHAR2,
694  p_customer_trx_id     IN NUMBER,
695 -- p_group_id            IN VARCHAR2,
696   --{HYUBPAGP
697  p_source_data_key1    IN VARCHAR2,
698  p_source_data_key2    IN VARCHAR2,
699  p_source_data_key3    IN VARCHAR2,
700  p_source_data_key4    IN VARCHAR2,
701  p_source_data_key5    IN VARCHAR2,
702   --}
703  p_ae_sys_rec          IN arp_acct_main.ae_sys_rec_type);
704 
705 /*-------------------------------------------------------------------------+
706  | get_invoice_line_info_per_line                                          |
707  +-------------------------------------------------------------------------+
708  | parameter :                                                             |
709  |  p_gt_id                 global temporary id                            |
710  |  p_customer_trx_id       transaction id                                 |
711  |  p_customer_trx_line_id  customer_trx_line_id                           |
712  |  p_ae_sys_rec            receivable system parameter                    |
713  +-------------------------------------------------------------------------*/
714 PROCEDURE get_invoice_line_info_per_line
715 (p_gt_id                IN VARCHAR2,
716  p_customer_trx_id      IN NUMBER,
717  p_customer_trx_line_id IN NUMBER,
718  p_log_inv_line         IN VARCHAR2 DEFAULT 'N',
719  p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type);
720 
721 /*-------------------------------------------------------------------------+
722  | prepare_trx_line_proration                                              |
723  +-------------------------------------------------------------------------+
724  | This procedure determine the base                                       |
725  |                          the element                                    |
726  |                          the bucket                                     |
727  | line amounts for prorations                                             |
728  | It uses the bucket returned at the GPL gl_level                         |
729  | to determine the buckets                                                |
730  +-------------------------------------------------------------------------+
731  | p_pay_adj         APP / ADJ                                             |
732  |                   in case of APP ED/UNED will be                        |
733  |                   kicked off.                                           |
734  | p_adj_rec         adjustment record                                     |
735  | p_app_rec         receivable application record                         |
736  | p_ae_sys_rec      receivable system parameter                           |
737  +-------------------------------------------------------------------------*/
738   PROCEDURE prepare_trx_line_proration
739   (p_gt_id            IN VARCHAR2,
740    p_customer_trx_id  IN NUMBER,
741    p_pay_adj          IN VARCHAR2,
742    p_adj_rec          IN ar_adjustments%ROWTYPE,
743    p_app_rec          IN ar_receivable_applications%ROWTYPE,
744    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type);
745 
746 /*-------------------------------------------------------------------------+
747  | prepare_group_for_proration                                             |
748  +-------------------------------------------------------------------------+
749  | This procedure determine the base                                       |
750  |                          the element                                    |
751  |                          the bucket                                     |
752  | group of lines proration                                                |
753  | It inserts into ra_ar_gt with gp_level = 'GPL'                          |
754  +-------------------------------------------------------------------------+
755  | p_pay_adj         APP / ADJ                                             |
756  |                   in case of APP ED/UNED will be                        |
757  |                   kicked off.                                           |
758  | p_adj_rec         adjustment record                                     |
759  | p_app_rec         receivable application record                         |
760  | p_ae_sys_rec      receivable system parameter                           |
761  +-------------------------------------------------------------------------*/
762 PROCEDURE prepare_group_for_proration
763   (p_gt_id            IN VARCHAR2,
764    p_customer_trx_id  IN NUMBER,
765    p_pay_adj          IN VARCHAR2,
766    p_adj_rec          IN ar_adjustments%ROWTYPE,
767    p_app_rec          IN ar_receivable_applications%ROWTYPE,
768    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type);
769 
770 /*-------------------------------------------------------------------------+
771  | update_ctl_rem_orig                                                     |
772  +-------------------------------------------------------------------------+
773  | Update ra_customer_trx_lines                                            |
774  | remaining and original amount                                           |
775  | base on result in ra_ar_gt                                              |
776  +-------------------------------------------------------------------------+
777  | parameter:                                                              |
778  |  p_gt_id                   global id                                    |
779  |  p_customer_trx_id         transaction id                               |
780  |  p_pay_adj                 Application or Adjustment                    |
781  |  p_customer_trx_line_id    transaction line id                          |
782  |  p_source_data_key1..5     group identification                         |
783  |  p_log_inv_line
784  |  p_ae_sys_rec              system parameter                             |
785  +-------------------------------------------------------------------------*/
786 PROCEDURE update_ctl_rem_orig
787   (p_gt_id                IN VARCHAR2,
788    p_customer_trx_id      IN NUMBER,
789    p_pay_adj              IN VARCHAR2,
790    p_customer_trx_line_id IN NUMBER   DEFAULT NULL,
791 --   p_group_id             IN VARCHAR2 DEFAULT NULL,
792   --{HYUBPAGP
793    p_source_data_key1     IN VARCHAR2 DEFAULT NULL,
794    p_source_data_key2     IN VARCHAR2 DEFAULT NULL,
795    p_source_data_key3     IN VARCHAR2 DEFAULT NULL,
796    p_source_data_key4     IN VARCHAR2 DEFAULT NULL,
797    p_source_data_key5     IN VARCHAR2 DEFAULT NULL,
798   --}
799    p_log_inv_line         IN VARCHAR2 DEFAULT 'N',
800    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type);
801 
802 
803 /*-------------------------------------------------------------------------+
804  | get_inv_dist                                                            |
805  +-------------------------------------------------------------------------+
806  | parameter :                                                             |
807  |  p_pay_adj          APP / ADJ / ED / UNED                               |
808  |  p_gt_id            global temporary id                                 |
809  |  p_customer_trx_id  transaction id                                      |
810  |  p_adj_rec         adjustment record                                    |
811  |  p_app_rec         receivable application record                        |
812  |  p_ae_sys_rec       receivable system parameter                         |
813  +-------------------------------------------------------------------------*/
814 PROCEDURE get_inv_dist
815  (p_pay_adj                 IN VARCHAR2,
816   p_customer_trx_id         IN NUMBER,
817   p_gt_id                   IN VARCHAR2,
818   p_adj_rec                 IN ar_adjustments%ROWTYPE,
819   p_app_rec                 IN ar_receivable_applications%ROWTYPE,
820   p_ae_sys_rec              IN arp_acct_main.ae_sys_rec_type);
821 
822 
823 /*-------------------------------------------------------------------------+
824  | update_group_line                                                       |
825  +-------------------------------------------------------------------------+
826  | Read ra_ar_gt for proration info                                        |
827  | Does the proration plsql_proration                                      |
828  | update ra_ar_gt with the result                                         |
829  | for group of line of all lines of a invoice                             |
830  +-------------------------------------------------------------------------+
831  | parameter:                                                              |
832  |  p_customer_trx_id         transaction id                               |
833  |  p_gt_id                   global id                                    |
834  |  p_ae_sys_rec              system parameter                             |
835  +-------------------------------------------------------------------------*/
836 PROCEDURE update_group_line
837 (p_gt_id           IN VARCHAR2,
838  p_customer_trx_id IN NUMBER,
839  p_ae_sys_rec      IN arp_acct_main.ae_sys_rec_type);
840 
841 /*-------------------------------------------------------------------------+
842  | create_split_distribution                                               |
843  +-------------------------------------------------------------------------+
844  | create records in ra_ar_concile                                         |
845  | activity on a trx                                                       |
846  +-------------------------------------------------------------------------+
847  | parameters:                                                             |
848  |  p_pay_adj            Application or Adjustment                         |
849  |  p_customer_trx_id    transaction id                                    |
850  |  p_gt_id              global id                                         |
851  |  p_app_level          TRANSACTION/GROUP/LINE                            |
852  |  p_ae_sys_rec         ar syst param                                     |
853  +-------------------------------------------------------------------------*/
854  PROCEDURE create_split_distribution
855  (p_pay_adj                IN VARCHAR2,
856   p_customer_trx_id        IN NUMBER,
857   p_gt_id                  IN VARCHAR2,
858   p_app_level              IN VARCHAR2,
859   p_ae_sys_rec             IN arp_acct_main.ae_sys_rec_type);
860 
861 /*-------------------------------------------------------------------------+
862  | adjustment_detemination                                                 |
863  +-------------------------------------------------------------------------+
864  | ajustment boundary condition treatment                                  |
865  +-------------------------------------------------------------------------+
866  | parameters:                                                             |
867  |  p_customer_trx_id    transaction id                                    |
868  |  p_gt_id              global id                                         |
869  |  p_pay_adj            ADJ/APP/ED/UNED                                   |
870  |  p_ae_sys_rec         ar syst param                                     |
871  |  p_adj_rec            adjustment record                                 |
872  +-------------------------------------------------------------------------*/
873  PROCEDURE adjustment_detemination
874  (p_customer_trx_id   IN NUMBER,
875   p_gt_id             IN VARCHAR2,
876   p_pay_adj           IN VARCHAR2,
877   p_ae_sys_rec        IN arp_acct_main.ae_sys_rec_type,
878   p_adj_rec           IN ar_adjustments%ROWTYPE);
879 
880 /*-------------------------------------------------------------------------+
881  | proration_app_dist_trx                                                  |
882  +-------------------------------------------------------------------------+
883  | does the proration at distrib level and create the detail distributions |
884  | for application                                                         |
885  +-------------------------------------------------------------------------+
886  | parameters:                                                             |
887  |  p_customer_trx_id    transaction id                                    |
888  |  p_gt_id              global id                                         |
889  |  p_app_level          LINE/GROUP/TRANSACTION                            |
890  |  p_ae_sys_rec         ar syst param                                     |
891  |  p_app_rec            application record                                |
892  +-------------------------------------------------------------------------*/
893  PROCEDURE proration_app_dist_trx
894     (p_gt_id            IN VARCHAR2,
895      p_app_level        IN VARCHAR2,
896      p_customer_trx_id  IN NUMBER,
897      p_app_rec          IN ar_receivable_applications%ROWTYPE,
898      p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type);
899 
900  PROCEDURE proration_adj_dist_trx
901     (p_gt_id            IN VARCHAR2,
902      p_app_level        IN VARCHAR2,
903      p_customer_trx_id  IN NUMBER,
904      p_adj_rec          IN ar_adjustments%ROWTYPE,
905      p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type);
906 
907 
908 -------------
909 -- Body of the package
910 -------------
911 /*------------------------------------------+
912  | return_existing_group is used internally |
913  | by  plsql_proration to return an existing|
914  | groupe order happens to be wrong         |
915  +------------------------------------------*/
916 PROCEDURE  return_existing_group
917 (p_groupe                IN VARCHAR2,
918  p_group_level           IN VARCHAR2 DEFAULT 'NOGROUP',
919  x_group_tbl             IN OUT NOCOPY group_tbl_type,
920  x_exist                 IN OUT NOCOPY BOOLEAN,
921  -- ADJ and APP
922  x_run_amt               IN OUT NOCOPY NUMBER,
923  x_run_alloc             IN OUT NOCOPY NUMBER,
924  x_run_acctd_amt         IN OUT NOCOPY NUMBER,
925  x_run_acctd_alloc       IN OUT NOCOPY NUMBER,
926  x_run_chrg_amt          IN OUT NOCOPY NUMBER,
927  x_run_chrg_alloc        IN OUT NOCOPY NUMBER,
928  x_run_chrg_acctd_amt    IN OUT NOCOPY NUMBER,
929  x_run_chrg_acctd_alloc  IN OUT NOCOPY NUMBER,
930  x_run_frt_amt          IN OUT NOCOPY NUMBER,
931  x_run_frt_alloc        IN OUT NOCOPY NUMBER,
932  x_run_frt_acctd_amt    IN OUT NOCOPY NUMBER,
933  x_run_frt_acctd_alloc  IN OUT NOCOPY NUMBER,
934  x_run_tax_amt          IN OUT NOCOPY NUMBER,
935  x_run_tax_alloc        IN OUT NOCOPY NUMBER,
936  x_run_tax_acctd_amt    IN OUT NOCOPY NUMBER,
937  x_run_tax_acctd_alloc  IN OUT NOCOPY NUMBER,
938  -- ED
939  x_run_ed_amt               IN OUT NOCOPY NUMBER,
940  x_run_ed_alloc             IN OUT NOCOPY NUMBER,
941  x_run_ed_acctd_amt         IN OUT NOCOPY NUMBER,
942  x_run_ed_acctd_alloc       IN OUT NOCOPY NUMBER,
943  x_run_ed_chrg_amt          IN OUT NOCOPY NUMBER,
944  x_run_ed_chrg_alloc        IN OUT NOCOPY NUMBER,
945  x_run_ed_chrg_acctd_amt    IN OUT NOCOPY NUMBER,
946  x_run_ed_chrg_acctd_alloc  IN OUT NOCOPY NUMBER,
947  x_run_ed_frt_amt          IN OUT NOCOPY NUMBER,
948  x_run_ed_frt_alloc        IN OUT NOCOPY NUMBER,
949  x_run_ed_frt_acctd_amt    IN OUT NOCOPY NUMBER,
950  x_run_ed_frt_acctd_alloc  IN OUT NOCOPY NUMBER,
951  x_run_ed_tax_amt          IN OUT NOCOPY NUMBER,
952  x_run_ed_tax_alloc        IN OUT NOCOPY NUMBER,
953  x_run_ed_tax_acctd_amt    IN OUT NOCOPY NUMBER,
954  x_run_ed_tax_acctd_alloc  IN OUT NOCOPY NUMBER,
955  -- UNED
956  x_run_uned_amt               IN OUT NOCOPY NUMBER,
957  x_run_uned_alloc             IN OUT NOCOPY NUMBER,
958  x_run_uned_acctd_amt         IN OUT NOCOPY NUMBER,
959  x_run_uned_acctd_alloc       IN OUT NOCOPY NUMBER,
960  x_run_uned_chrg_amt          IN OUT NOCOPY NUMBER,
961  x_run_uned_chrg_alloc        IN OUT NOCOPY NUMBER,
962  x_run_uned_chrg_acctd_amt    IN OUT NOCOPY NUMBER,
963  x_run_uned_chrg_acctd_alloc  IN OUT NOCOPY NUMBER,
964  x_run_uned_frt_amt          IN OUT NOCOPY NUMBER,
965  x_run_uned_frt_alloc        IN OUT NOCOPY NUMBER,
966  x_run_uned_frt_acctd_amt    IN OUT NOCOPY NUMBER,
967  x_run_uned_frt_acctd_alloc  IN OUT NOCOPY NUMBER,
968  x_run_uned_tax_amt          IN OUT NOCOPY NUMBER,
969  x_run_uned_tax_alloc        IN OUT NOCOPY NUMBER,
970  x_run_uned_tax_acctd_amt    IN OUT NOCOPY NUMBER,
971  x_run_uned_tax_acctd_alloc  IN OUT NOCOPY NUMBER)
972 
973 IS
974 i NUMBER(15);
975 BEGIN
976   IF PG_DEBUG = 'Y' THEN
977   localdebug('arp_det_dist_pkg.return_existing_group()+');
978   localdebug('  p_groupe '||p_groupe);
979   END IF;
980   x_exist                := FALSE;
981   -- ADJ and APP
982   x_run_chrg_amt         := 0;
983   x_run_chrg_alloc       := 0;
984   x_run_chrg_acctd_amt   := 0;
985   x_run_chrg_acctd_alloc := 0;
986   x_run_frt_amt         := 0;
987   x_run_frt_alloc       := 0;
988   x_run_frt_acctd_amt   := 0;
989   x_run_frt_acctd_alloc := 0;
990 
991    /*If the current proration is at line level and the source is INTERFACE, then
992     we retain the counter values across various calls to the current procedure
993     with in the context of update_line.This enables cumulative logic for proration
994     of acctd amounts and thus avoids rounding issues. Please refer bug 8220511..*/
995   IF nvl(p_group_level,'NOGROUP') <> 'L' OR g_tax_flag <>  'INTERFACE' OR g_line_flag <> 'INTERFACE' THEN
996     x_run_amt              := 0;
997     x_run_alloc            := 0;
998     x_run_acctd_amt        := 0;
999     x_run_acctd_alloc      := 0;
1000     x_run_tax_amt         := 0;
1001     x_run_tax_alloc       := 0;
1002     x_run_tax_acctd_amt   := 0;
1003     x_run_tax_acctd_alloc := 0;
1004   END IF;
1005 
1006   -- ED
1007   x_run_ed_chrg_amt         := 0;
1008   x_run_ed_chrg_alloc       := 0;
1009   x_run_ed_chrg_acctd_amt   := 0;
1010   x_run_ed_chrg_acctd_alloc := 0;
1011   x_run_ed_frt_amt         := 0;
1012   x_run_ed_frt_alloc       := 0;
1013   x_run_ed_frt_acctd_amt   := 0;
1014   x_run_ed_frt_acctd_alloc := 0;
1015 
1016    /*If the current proration is at line level and the source is INTERFACE, then
1017     we retain the counter values across various calls to the current procedure
1018     with in the context of update_line.This enables cumulative logic for proration
1019     of acctd amounts and thus avoids rounding issues. Please refer bug 8220511..*/
1020   IF nvl(p_group_level,'NOGROUP') <> 'L' OR g_ed_tax_flag <>  'INTERFACE' OR g_ed_line_flag <> 'INTERFACE' THEN
1021     x_run_ed_amt              := 0;
1022     x_run_ed_alloc            := 0;
1023     x_run_ed_acctd_amt        := 0;
1024     x_run_ed_acctd_alloc      := 0;
1025     x_run_ed_tax_amt         := 0;
1026     x_run_ed_tax_alloc       := 0;
1027     x_run_ed_tax_acctd_amt   := 0;
1028     x_run_ed_tax_acctd_alloc := 0;
1029   END IF;
1030 
1031   -- UNED
1032   x_run_uned_chrg_amt         := 0;
1033   x_run_uned_chrg_alloc       := 0;
1034   x_run_uned_chrg_acctd_amt   := 0;
1035   x_run_uned_chrg_acctd_alloc := 0;
1036   x_run_uned_frt_amt         := 0;
1037   x_run_uned_frt_alloc       := 0;
1038   x_run_uned_frt_acctd_amt   := 0;
1039   x_run_uned_frt_acctd_alloc := 0;
1040 
1041    /*If the current proration is at line level and the source is INTERFACE, then
1042     we retain the counter values across various calls to the current procedure
1043     with in the context of update_line.This enables cumulative logic for proration
1044     of acctd amounts and thus avoids rounding issues. Please refer bug 8220511..*/
1045   IF nvl(p_group_level,'NOGROUP') <> 'L' OR g_uned_tax_flag <>  'INTERFACE' OR g_uned_line_flag <> 'INTERFACE' THEN
1046     x_run_uned_amt              := 0;
1047     x_run_uned_alloc            := 0;
1048     x_run_uned_acctd_amt        := 0;
1049     x_run_uned_acctd_alloc      := 0;
1050     x_run_uned_tax_amt         := 0;
1051     x_run_uned_tax_alloc       := 0;
1052     x_run_uned_tax_acctd_amt   := 0;
1053     x_run_uned_tax_acctd_alloc := 0;
1054   END IF;
1055 
1056   IF  p_groupe <> 'NOGROUP' AND x_group_tbl.GROUPE.COUNT <> 0 THEN
1057     IF x_group_tbl.groupe_index.EXISTS( p_groupe ) THEN
1058 
1059 	 i :=  x_group_tbl.groupe_index( p_groupe );
1060 
1061 	 IF PG_DEBUG = 'Y' THEN
1062 	    localdebug('found in cache(hash table) index '||i);
1063 	 END IF;
1064 
1065          x_exist                := TRUE;
1066          -- ADJ and APP
1067          x_run_chrg_amt         := x_group_tbl.run_chrg_amt(i);
1068          x_run_chrg_alloc       := x_group_tbl.run_chrg_alloc(i);
1069          x_run_chrg_acctd_amt   := x_group_tbl.run_chrg_acctd_amt(i);
1070          x_run_chrg_acctd_alloc := x_group_tbl.run_chrg_acctd_alloc(i);
1071          x_run_frt_amt         := x_group_tbl.run_frt_amt(i);
1072          x_run_frt_alloc       := x_group_tbl.run_frt_alloc(i);
1073          x_run_frt_acctd_amt   := x_group_tbl.run_frt_acctd_amt(i);
1074          x_run_frt_acctd_alloc := x_group_tbl.run_frt_acctd_alloc(i);
1075 
1076 	 /*If the current proration is at line level and the source is INTERFACE, then
1077 	  we retain the counter values across various calls to the current procedure
1078 	  with in the context of update_line.This enables cumulative logic for proration
1079 	  of acctd amounts and thus avoids rounding issues. Please refer bug 8220511..*/
1080 	 IF nvl(p_group_level,'NOGROUP') <> 'L' OR g_tax_flag <>  'INTERFACE' OR g_line_flag <> 'INTERFACE' THEN
1081 	    x_run_amt              := x_group_tbl.run_amt(i);
1082 	    x_run_alloc            := x_group_tbl.run_alloc(i);
1083 	    x_run_acctd_amt        := x_group_tbl.run_acctd_amt(i);
1084 	    x_run_acctd_alloc      := x_group_tbl.run_acctd_alloc(i);
1085 	    x_run_tax_amt         := x_group_tbl.run_tax_amt(i);
1086 	    x_run_tax_alloc       := x_group_tbl.run_tax_alloc(i);
1087 	    x_run_tax_acctd_amt   := x_group_tbl.run_tax_acctd_amt(i);
1088 	    x_run_tax_acctd_alloc := x_group_tbl.run_tax_acctd_alloc(i);
1089 	 END IF;
1090 
1091          -- ED
1092          x_run_ed_chrg_amt         := x_group_tbl.run_ed_chrg_amt(i);
1093          x_run_ed_chrg_alloc       := x_group_tbl.run_ed_chrg_alloc(i);
1094          x_run_ed_chrg_acctd_amt   := x_group_tbl.run_ed_chrg_acctd_amt(i);
1095          x_run_ed_chrg_acctd_alloc := x_group_tbl.run_ed_chrg_acctd_alloc(i);
1096          x_run_ed_frt_amt         := x_group_tbl.run_ed_frt_amt(i);
1097          x_run_ed_frt_alloc       := x_group_tbl.run_ed_frt_alloc(i);
1098          x_run_ed_frt_acctd_amt   := x_group_tbl.run_ed_frt_acctd_amt(i);
1099          x_run_ed_frt_acctd_alloc := x_group_tbl.run_ed_frt_acctd_alloc(i);
1100 
1101 	 /*If the current proration is at line level and the source is INTERFACE, then
1102 	  we retain the counter values across various calls to the current procedure
1103 	  with in the context of update_line.This enables cumulative logic for proration
1104 	  of acctd amounts and thus avoids rounding issues. Please refer bug 8220511..*/
1105 	 IF nvl(p_group_level,'NOGROUP') <> 'L' OR g_ed_tax_flag <>  'INTERFACE' OR g_ed_line_flag <> 'INTERFACE' THEN
1106 	    x_run_ed_amt              := x_group_tbl.run_ed_amt(i);
1107 	    x_run_ed_alloc            := x_group_tbl.run_ed_alloc(i);
1108 	    x_run_ed_acctd_amt        := x_group_tbl.run_ed_acctd_amt(i);
1109 	    x_run_ed_acctd_alloc      := x_group_tbl.run_ed_acctd_alloc(i);
1110 	    x_run_ed_tax_amt         := x_group_tbl.run_ed_tax_amt(i);
1111 	    x_run_ed_tax_alloc       := x_group_tbl.run_ed_tax_alloc(i);
1112 	    x_run_ed_tax_acctd_amt   := x_group_tbl.run_ed_tax_acctd_amt(i);
1113 	    x_run_ed_tax_acctd_alloc := x_group_tbl.run_ed_tax_acctd_alloc(i);
1114 	 END IF;
1115 
1116 	 -- UNED
1117          x_run_uned_chrg_amt         := x_group_tbl.run_uned_chrg_amt(i);
1118          x_run_uned_chrg_alloc       := x_group_tbl.run_uned_chrg_alloc(i);
1119          x_run_uned_chrg_acctd_amt   := x_group_tbl.run_uned_chrg_acctd_amt(i);
1120          x_run_uned_chrg_acctd_alloc := x_group_tbl.run_uned_chrg_acctd_alloc(i);
1121          x_run_uned_frt_amt         := x_group_tbl.run_ed_frt_amt(i);
1122          x_run_uned_frt_alloc       := x_group_tbl.run_ed_frt_alloc(i);
1123          x_run_uned_frt_acctd_amt   := x_group_tbl.run_ed_frt_acctd_amt(i);
1124          x_run_uned_frt_acctd_alloc := x_group_tbl.run_ed_frt_acctd_alloc(i);
1125 
1126 	 /*If the current proration is at line level and the source is INTERFACE, then
1127 	  we retain the counter values across various calls to the current procedure
1128 	  with in the context of update_line.This enables cumulative logic for proration
1129 	  of acctd amounts and thus avoids rounding issues. Please refer bug 8220511..*/
1130 	 IF nvl(p_group_level,'NOGROUP') <> 'L' OR g_uned_tax_flag <>  'INTERFACE' OR g_uned_line_flag <> 'INTERFACE' THEN
1131            x_run_uned_amt              := x_group_tbl.run_uned_amt(i);
1132            x_run_uned_alloc            := x_group_tbl.run_uned_alloc(i);
1133            x_run_uned_acctd_amt        := x_group_tbl.run_uned_acctd_amt(i);
1134            x_run_uned_acctd_alloc      := x_group_tbl.run_uned_acctd_alloc(i);
1135            x_run_uned_tax_amt         := x_group_tbl.run_ed_tax_amt(i);
1136            x_run_uned_tax_alloc       := x_group_tbl.run_ed_tax_alloc(i);
1137            x_run_uned_tax_acctd_amt   := x_group_tbl.run_ed_tax_acctd_amt(i);
1138            x_run_uned_tax_acctd_alloc := x_group_tbl.run_ed_tax_acctd_alloc(i);
1139 	 END IF;
1140 
1141          -- ADJ and APP
1142          IF PG_DEBUG = 'Y' THEN
1143 	 localdebug('      x_run_amt              :'|| x_group_tbl.run_amt(i));
1144          localdebug('      x_run_alloc            :'|| x_group_tbl.run_alloc(i));
1145          localdebug('      x_run_acctd_amt        :'|| x_group_tbl.run_acctd_amt(i));
1146          localdebug('      x_run_acctd_alloc      :'|| x_group_tbl.run_acctd_alloc(i));
1147          localdebug('      x_run_chrg_amt         :'|| x_group_tbl.run_chrg_amt(i));
1148          localdebug('      x_run_chrg_alloc       :'|| x_group_tbl.run_chrg_alloc(i));
1149          localdebug('      x_run_chrg_acctd_amt   :'|| x_group_tbl.run_chrg_acctd_amt(i));
1150          localdebug('      x_run_chrg_acctd_alloc :'|| x_group_tbl.run_chrg_acctd_alloc(i));
1151          localdebug('      x_run_frt_amt         :'|| x_group_tbl.run_frt_amt(i));
1152          localdebug('      x_run_frt_alloc       :'|| x_group_tbl.run_frt_alloc(i));
1153          localdebug('      x_run_frt_acctd_amt   :'|| x_group_tbl.run_frt_acctd_amt(i));
1154          localdebug('      x_run_frt_acctd_alloc :'|| x_group_tbl.run_frt_acctd_alloc(i));
1155          localdebug('      x_run_tax_amt         :'|| x_group_tbl.run_tax_amt(i));
1156          localdebug('      x_run_tax_alloc       :'|| x_group_tbl.run_tax_alloc(i));
1157          localdebug('      x_run_tax_acctd_amt   :'|| x_group_tbl.run_tax_acctd_amt(i));
1158          localdebug('      x_run_tax_acctd_alloc :'|| x_group_tbl.run_tax_acctd_alloc(i));
1159          -- ED
1160          localdebug('      x_run_ed_amt              :'|| x_group_tbl.run_ed_amt(i));
1161          localdebug('      x_run_ed_alloc            :'|| x_group_tbl.run_ed_alloc(i));
1162          localdebug('      x_run_ed_acctd_amt        :'|| x_group_tbl.run_ed_acctd_amt(i));
1163          localdebug('      x_run_ed_acctd_alloc      :'|| x_group_tbl.run_ed_acctd_alloc(i));
1164          localdebug('      x_run_ed_chrg_amt         :'|| x_group_tbl.run_ed_chrg_amt(i));
1165          localdebug('      x_run_ed_chrg_alloc       :'|| x_group_tbl.run_ed_chrg_alloc(i));
1166          localdebug('      x_run_ed_chrg_acctd_amt   :'|| x_group_tbl.run_ed_chrg_acctd_amt(i));
1167          localdebug('      x_run_ed_chrg_acctd_alloc :'|| x_group_tbl.run_ed_chrg_acctd_alloc(i));
1168          localdebug('      x_run_ed_frt_amt         :'|| x_group_tbl.run_ed_frt_amt(i));
1169          localdebug('      x_run_ed_frt_alloc       :'|| x_group_tbl.run_ed_frt_alloc(i));
1170          localdebug('      x_run_ed_frt_acctd_amt   :'|| x_group_tbl.run_ed_frt_acctd_amt(i));
1171          localdebug('      x_run_ed_frt_acctd_alloc :'|| x_group_tbl.run_ed_frt_acctd_alloc(i));
1172          localdebug('      x_run_ed_tax_amt         :'|| x_group_tbl.run_ed_tax_amt(i));
1173          localdebug('      x_run_ed_tax_alloc       :'|| x_group_tbl.run_ed_tax_alloc(i));
1174          localdebug('      x_run_ed_tax_acctd_amt   :'|| x_group_tbl.run_ed_tax_acctd_amt(i));
1175          localdebug('      x_run_ed_tax_acctd_alloc :'|| x_group_tbl.run_ed_tax_acctd_alloc(i));
1176          -- UNED
1177          localdebug('      x_run_uned_amt              :'|| x_group_tbl.run_uned_amt(i));
1178          localdebug('      x_run_uned_alloc            :'|| x_group_tbl.run_uned_alloc(i));
1179          localdebug('      x_run_uned_acctd_amt        :'|| x_group_tbl.run_uned_acctd_amt(i));
1180          localdebug('      x_run_uned_acctd_alloc      :'|| x_group_tbl.run_uned_acctd_alloc(i));
1181          localdebug('      x_run_uned_chrg_amt         :'|| x_group_tbl.run_uned_chrg_amt(i));
1182          localdebug('      x_run_uned_chrg_alloc       :'|| x_group_tbl.run_uned_chrg_alloc(i));
1183          localdebug('      x_run_uned_chrg_acctd_amt   :'|| x_group_tbl.run_uned_chrg_acctd_amt(i));
1184          localdebug('      x_run_uned_chrg_acctd_alloc :'|| x_group_tbl.run_uned_chrg_acctd_alloc(i));
1185          localdebug('      x_run_uned_frt_amt         :'|| x_group_tbl.run_uned_frt_amt(i));
1186          localdebug('      x_run_uned_frt_alloc       :'|| x_group_tbl.run_uned_frt_alloc(i));
1187          localdebug('      x_run_uned_frt_acctd_amt   :'|| x_group_tbl.run_uned_frt_acctd_amt(i));
1188          localdebug('      x_run_uned_frt_acctd_alloc :'|| x_group_tbl.run_uned_frt_acctd_alloc(i));
1189          localdebug('      x_run_uned_tax_amt         :'|| x_group_tbl.run_uned_tax_amt(i));
1190          localdebug('      x_run_uned_tax_alloc       :'|| x_group_tbl.run_uned_tax_alloc(i));
1191          localdebug('      x_run_uned_tax_acctd_amt   :'|| x_group_tbl.run_uned_tax_acctd_amt(i));
1192          localdebug('      x_run_uned_tax_acctd_alloc :'|| x_group_tbl.run_uned_tax_acctd_alloc(i));
1193          END IF;
1194       END IF;
1195   END IF;
1196 IF PG_DEBUG = 'Y' THEN
1197   localdebug('arp_det_dist_pkg.return_existing_group()-');
1198 END IF;
1199 END return_existing_group;
1200 
1201 /*------------------------------------------+
1202  | store_group is used internally           |
1203  | by  plsql_proration to store an group    |
1204  | before moving to another                 |
1205  +------------------------------------------*/
1206 PROCEDURE  store_group
1207 (p_groupe                IN VARCHAR2,
1208  -- ADJ and APP
1209  p_run_amt               IN NUMBER,
1210  p_run_alloc             IN NUMBER,
1211  p_run_acctd_amt         IN NUMBER,
1212  p_run_acctd_alloc       IN NUMBER,
1213  p_run_chrg_amt          IN NUMBER,
1214  p_run_chrg_alloc        IN NUMBER,
1215  p_run_chrg_acctd_amt    IN NUMBER,
1216  p_run_chrg_acctd_alloc  IN NUMBER,
1217  p_run_frt_amt          IN NUMBER,
1218  p_run_frt_alloc        IN NUMBER,
1219  p_run_frt_acctd_amt    IN NUMBER,
1220  p_run_frt_acctd_alloc  IN NUMBER,
1221  p_run_tax_amt          IN NUMBER,
1222  p_run_tax_alloc        IN NUMBER,
1223  p_run_tax_acctd_amt    IN NUMBER,
1224  p_run_tax_acctd_alloc  IN NUMBER,
1225  -- ED
1226  p_run_ed_amt               IN NUMBER,
1227  p_run_ed_alloc             IN NUMBER,
1228  p_run_ed_acctd_amt         IN NUMBER,
1229  p_run_ed_acctd_alloc       IN NUMBER,
1230  p_run_ed_chrg_amt          IN NUMBER,
1231  p_run_ed_chrg_alloc        IN NUMBER,
1232  p_run_ed_chrg_acctd_amt    IN NUMBER,
1233  p_run_ed_chrg_acctd_alloc  IN NUMBER,
1234  p_run_ed_frt_amt          IN NUMBER,
1235  p_run_ed_frt_alloc        IN NUMBER,
1236  p_run_ed_frt_acctd_amt    IN NUMBER,
1237  p_run_ed_frt_acctd_alloc  IN NUMBER,
1238  p_run_ed_tax_amt          IN NUMBER,
1239  p_run_ed_tax_alloc        IN NUMBER,
1240  p_run_ed_tax_acctd_amt    IN NUMBER,
1241  p_run_ed_tax_acctd_alloc  IN NUMBER,
1242  -- UNED
1243  p_run_uned_amt               IN NUMBER,
1244  p_run_uned_alloc             IN NUMBER,
1245  p_run_uned_acctd_amt         IN NUMBER,
1246  p_run_uned_acctd_alloc       IN NUMBER,
1247  p_run_uned_chrg_amt          IN NUMBER,
1248  p_run_uned_chrg_alloc        IN NUMBER,
1249  p_run_uned_chrg_acctd_amt    IN NUMBER,
1250  p_run_uned_chrg_acctd_alloc  IN NUMBER,
1251  p_run_uned_frt_amt          IN NUMBER,
1252  p_run_uned_frt_alloc        IN NUMBER,
1253  p_run_uned_frt_acctd_amt    IN NUMBER,
1254  p_run_uned_frt_acctd_alloc  IN NUMBER,
1255  p_run_uned_tax_amt          IN NUMBER,
1256  p_run_uned_tax_alloc        IN NUMBER,
1257  p_run_uned_tax_acctd_amt    IN NUMBER,
1258  p_run_uned_tax_acctd_alloc  IN NUMBER,
1259  --
1260  x_group_tbl             IN OUT NOCOPY group_tbl_type)
1261 IS
1262   l_found   BOOLEAN := FALSE;
1263   l_cnt     NUMBER;
1264   i         NUMBER(15);
1265 BEGIN
1266   IF PG_DEBUG = 'Y' THEN
1267   localdebug('arp_det_dist_pkg.store_group()+');
1268   localdebug('     p_groupe              :'||p_groupe);
1269   -- ADJ and APP
1270   localdebug('     p_run_amt             :'||p_run_amt);
1271   localdebug('     p_run_alloc           :'||p_run_alloc);
1272   localdebug('     p_run_acctd_amt       :'||p_run_acctd_amt);
1273   localdebug('     p_run_acctd_alloc     :'||p_run_acctd_alloc);
1274   localdebug('     p_run_chrg_amt        :'||p_run_chrg_amt);
1275   localdebug('     p_run_chrg_alloc      :'||p_run_chrg_alloc);
1276   localdebug('     p_run_chrg_acctd_amt  :'||p_run_chrg_acctd_amt);
1277   localdebug('     p_run_chrg_acctd_alloc:'||p_run_chrg_acctd_alloc);
1278   localdebug('     p_run_frt_amt        :'||p_run_frt_amt);
1279   localdebug('     p_run_frt_alloc      :'||p_run_frt_alloc);
1280   localdebug('     p_run_frt_acctd_amt  :'||p_run_frt_acctd_amt);
1281   localdebug('     p_run_frt_acctd_alloc:'||p_run_frt_acctd_alloc);
1282   localdebug('     p_run_tax_amt        :'||p_run_tax_amt);
1283   localdebug('     p_run_tax_alloc      :'||p_run_tax_alloc);
1284   localdebug('     p_run_tax_acctd_amt  :'||p_run_tax_acctd_amt);
1285   localdebug('     p_run_tax_acctd_alloc:'||p_run_tax_acctd_alloc);
1286   -- ED
1287   localdebug('     p_run_ed_amt             :'||p_run_ed_amt);
1288   localdebug('     p_run_ed_alloc           :'||p_run_ed_alloc);
1289   localdebug('     p_run_ed_acctd_amt       :'||p_run_ed_acctd_amt);
1290   localdebug('     p_run_ed_acctd_alloc     :'||p_run_ed_acctd_alloc);
1291   localdebug('     p_run_ed_chrg_amt        :'||p_run_ed_chrg_amt);
1292   localdebug('     p_run_ed_chrg_alloc      :'||p_run_ed_chrg_alloc);
1293   localdebug('     p_run_ed_chrg_acctd_amt  :'||p_run_ed_chrg_acctd_amt);
1294   localdebug('     p_run_ed_chrg_acctd_alloc:'||p_run_ed_chrg_acctd_alloc);
1295   localdebug('     p_run_ed_frt_amt        :'||p_run_ed_frt_amt);
1296   localdebug('     p_run_ed_frt_alloc      :'||p_run_ed_frt_alloc);
1297   localdebug('     p_run_ed_frt_acctd_amt  :'||p_run_ed_frt_acctd_amt);
1298   localdebug('     p_run_ed_frt_acctd_alloc:'||p_run_ed_frt_acctd_alloc);
1299   localdebug('     p_run_ed_tax_amt        :'||p_run_ed_tax_amt);
1300   localdebug('     p_run_ed_tax_alloc      :'||p_run_ed_tax_alloc);
1301   localdebug('     p_run_ed_tax_acctd_amt  :'||p_run_ed_tax_acctd_amt);
1302   localdebug('     p_run_ed_tax_acctd_alloc:'||p_run_ed_tax_acctd_alloc);
1303   -- UNED
1304   localdebug('     p_run_uned_amt             :'||p_run_uned_amt);
1305   localdebug('     p_run_uned_alloc           :'||p_run_uned_alloc);
1306   localdebug('     p_run_uned_acctd_amt       :'||p_run_uned_acctd_amt);
1307   localdebug('     p_run_uned_acctd_alloc     :'||p_run_uned_acctd_alloc);
1308   localdebug('     p_run_uned_chrg_amt        :'||p_run_uned_chrg_amt);
1309   localdebug('     p_run_uned_chrg_alloc      :'||p_run_uned_chrg_alloc);
1310   localdebug('     p_run_uned_chrg_acctd_amt  :'||p_run_uned_chrg_acctd_amt);
1311   localdebug('     p_run_uned_chrg_acctd_alloc:'||p_run_uned_chrg_acctd_alloc);
1312   localdebug('     p_run_uned_frt_amt        :'||p_run_uned_frt_amt);
1313   localdebug('     p_run_uned_frt_alloc      :'||p_run_uned_frt_alloc);
1314   localdebug('     p_run_uned_frt_acctd_amt  :'||p_run_uned_frt_acctd_amt);
1315   localdebug('     p_run_uned_frt_acctd_alloc:'||p_run_uned_frt_acctd_alloc);
1316   localdebug('     p_run_uned_tax_amt        :'||p_run_uned_tax_amt);
1317   localdebug('     p_run_uned_tax_alloc      :'||p_run_uned_tax_alloc);
1318   localdebug('     p_run_uned_tax_acctd_amt  :'||p_run_uned_tax_acctd_amt);
1319   localdebug('     p_run_uned_tax_acctd_alloc:'||p_run_uned_tax_acctd_alloc);
1320   END IF;
1321 
1322   IF  p_groupe <> 'NOGROUP' THEN
1323     IF x_group_tbl.groupe.COUNT = 0 THEN
1324 	x_group_tbl.groupe(1)               := p_groupe;
1325 	-- ADJ and APP
1326 	x_group_tbl.run_amt(1)              := p_run_amt;
1327 	x_group_tbl.run_alloc(1)            := p_run_alloc;
1328 	x_group_tbl.run_acctd_amt(1)        := p_run_acctd_amt;
1329 	x_group_tbl.run_acctd_alloc(1)      := p_run_acctd_alloc;
1330 	x_group_tbl.run_chrg_amt(1)         := p_run_chrg_amt;
1331 	x_group_tbl.run_chrg_alloc(1)       := p_run_chrg_alloc;
1332 	x_group_tbl.run_chrg_acctd_amt(1)   := p_run_chrg_acctd_amt;
1333 	x_group_tbl.run_chrg_acctd_alloc(1) := p_run_chrg_acctd_alloc;
1334 	x_group_tbl.run_frt_amt(1)         := p_run_frt_amt;
1335 	x_group_tbl.run_frt_alloc(1)       := p_run_frt_alloc;
1336 	x_group_tbl.run_frt_acctd_amt(1)   := p_run_frt_acctd_amt;
1337 	x_group_tbl.run_frt_acctd_alloc(1) := p_run_frt_acctd_alloc;
1338 	x_group_tbl.run_tax_amt(1)         := p_run_tax_amt;
1339 	x_group_tbl.run_tax_alloc(1)       := p_run_tax_alloc;
1340 	x_group_tbl.run_tax_acctd_amt(1)   := p_run_tax_acctd_amt;
1341 	x_group_tbl.run_tax_acctd_alloc(1) := p_run_tax_acctd_alloc;
1342 	-- ED
1343 	x_group_tbl.run_ed_amt(1)              := p_run_ed_amt;
1344 	x_group_tbl.run_ed_alloc(1)            := p_run_ed_alloc;
1345 	x_group_tbl.run_ed_acctd_amt(1)        := p_run_ed_acctd_amt;
1346 	x_group_tbl.run_ed_acctd_alloc(1)      := p_run_ed_acctd_alloc;
1347 	x_group_tbl.run_ed_chrg_amt(1)         := p_run_ed_chrg_amt;
1348 	x_group_tbl.run_ed_chrg_alloc(1)       := p_run_ed_chrg_alloc;
1349 	x_group_tbl.run_ed_chrg_acctd_amt(1)   := p_run_ed_chrg_acctd_amt;
1350 	x_group_tbl.run_ed_chrg_acctd_alloc(1) := p_run_ed_chrg_acctd_alloc;
1351 	x_group_tbl.run_ed_frt_amt(1)         := p_run_ed_frt_amt;
1352 	x_group_tbl.run_ed_frt_alloc(1)       := p_run_ed_frt_alloc;
1353 	x_group_tbl.run_ed_frt_acctd_amt(1)   := p_run_ed_frt_acctd_amt;
1354 	x_group_tbl.run_ed_frt_acctd_alloc(1) := p_run_ed_frt_acctd_alloc;
1355 	x_group_tbl.run_ed_tax_amt(1)         := p_run_ed_tax_amt;
1356 	x_group_tbl.run_ed_tax_alloc(1)       := p_run_ed_tax_alloc;
1357 	x_group_tbl.run_ed_tax_acctd_amt(1)   := p_run_ed_tax_acctd_amt;
1358 	x_group_tbl.run_ed_tax_acctd_alloc(1) := p_run_ed_tax_acctd_alloc;
1359 	-- UNED
1360 	x_group_tbl.run_uned_amt(1)              := p_run_uned_amt;
1361 	x_group_tbl.run_uned_alloc(1)            := p_run_uned_alloc;
1362 	x_group_tbl.run_uned_acctd_amt(1)        := p_run_uned_acctd_amt;
1363 	x_group_tbl.run_uned_acctd_alloc(1)      := p_run_uned_acctd_alloc;
1364 	x_group_tbl.run_uned_chrg_amt(1)         := p_run_uned_chrg_amt;
1365 	x_group_tbl.run_uned_chrg_alloc(1)       := p_run_uned_chrg_alloc;
1366 	x_group_tbl.run_uned_chrg_acctd_amt(1)   := p_run_uned_chrg_acctd_amt;
1367 	x_group_tbl.run_uned_chrg_acctd_alloc(1) := p_run_uned_chrg_acctd_alloc;
1368 	x_group_tbl.run_uned_frt_amt(1)         := p_run_uned_frt_amt;
1369 	x_group_tbl.run_uned_frt_alloc(1)       := p_run_uned_frt_alloc;
1370 	x_group_tbl.run_uned_frt_acctd_amt(1)   := p_run_uned_frt_acctd_amt;
1371 	x_group_tbl.run_uned_frt_acctd_alloc(1) := p_run_uned_frt_acctd_alloc;
1372 	x_group_tbl.run_uned_tax_amt(1)         := p_run_uned_tax_amt;
1373 	x_group_tbl.run_uned_tax_alloc(1)       := p_run_uned_tax_alloc;
1374 	x_group_tbl.run_uned_tax_acctd_amt(1)   := p_run_uned_tax_acctd_amt;
1375 	x_group_tbl.run_uned_tax_acctd_alloc(1) := p_run_uned_tax_acctd_alloc;
1376 	x_group_tbl.groupe_index(p_groupe)      := 1;
1377 
1378     ELSIF x_group_tbl.groupe_index.EXISTS( p_groupe ) THEN
1379 	 i :=  x_group_tbl.groupe_index( p_groupe );
1380 	 IF PG_DEBUG = 'Y' THEN
1381 	    localdebug('found in cache(hash table) index '||i);
1382 	    localdebug('p_groupe '||p_groupe);
1383 	 END IF;
1384 
1385 	 x_group_tbl.groupe(i)               := p_groupe;
1386 	 -- ADJ and APP
1387 	 x_group_tbl.run_amt(i)              := p_run_amt;
1388 	 x_group_tbl.run_alloc(i)            := p_run_alloc;
1389 	 x_group_tbl.run_acctd_amt(i)        := p_run_acctd_amt;
1390 	 x_group_tbl.run_acctd_alloc(i)      := p_run_acctd_alloc;
1391 	 x_group_tbl.run_chrg_amt(i)         := p_run_chrg_amt;
1392 	 x_group_tbl.run_chrg_alloc(i)       := p_run_chrg_alloc;
1393 	 x_group_tbl.run_chrg_acctd_amt(i)   := p_run_chrg_acctd_amt;
1394 	 x_group_tbl.run_chrg_acctd_alloc(i) := p_run_chrg_acctd_alloc;
1395 	 x_group_tbl.run_frt_amt(i)         := p_run_frt_amt;
1396 	 x_group_tbl.run_frt_alloc(i)       := p_run_frt_alloc;
1397 	 x_group_tbl.run_frt_acctd_amt(i)   := p_run_frt_acctd_amt;
1398 	 x_group_tbl.run_frt_acctd_alloc(i) := p_run_frt_acctd_alloc;
1399 	 x_group_tbl.run_tax_amt(i)         := p_run_tax_amt;
1400 	 x_group_tbl.run_tax_alloc(i)       := p_run_tax_alloc;
1401 	 x_group_tbl.run_tax_acctd_amt(i)   := p_run_tax_acctd_amt;
1402 	 x_group_tbl.run_tax_acctd_alloc(i) := p_run_tax_acctd_alloc;
1403 	 -- ED
1404 	 x_group_tbl.run_ed_amt(i)              := p_run_ed_amt;
1405 	 x_group_tbl.run_ed_alloc(i)            := p_run_ed_alloc;
1406 	 x_group_tbl.run_ed_acctd_amt(i)        := p_run_ed_acctd_amt;
1407 	 x_group_tbl.run_ed_acctd_alloc(i)      := p_run_ed_acctd_alloc;
1408 	 x_group_tbl.run_ed_chrg_amt(i)         := p_run_ed_chrg_amt;
1409 	 x_group_tbl.run_ed_chrg_alloc(i)       := p_run_ed_chrg_alloc;
1410 	 x_group_tbl.run_ed_chrg_acctd_amt(i)   := p_run_ed_chrg_acctd_amt;
1411 	 x_group_tbl.run_ed_chrg_acctd_alloc(i) := p_run_ed_chrg_acctd_alloc;
1412 	 x_group_tbl.run_ed_frt_amt(i)         := p_run_ed_frt_amt;
1413 	 x_group_tbl.run_ed_frt_alloc(i)       := p_run_ed_frt_alloc;
1414 	 x_group_tbl.run_ed_frt_acctd_amt(i)   := p_run_ed_frt_acctd_amt;
1415 	 x_group_tbl.run_ed_frt_acctd_alloc(i) := p_run_ed_frt_acctd_alloc;
1416 	 x_group_tbl.run_ed_tax_amt(i)         := p_run_ed_tax_amt;
1417 	 x_group_tbl.run_ed_tax_alloc(i)       := p_run_ed_tax_alloc;
1418 	 x_group_tbl.run_ed_tax_acctd_amt(i)   := p_run_ed_tax_acctd_amt;
1419 	 x_group_tbl.run_ed_tax_acctd_alloc(i) := p_run_ed_tax_acctd_alloc;
1420 	 -- UNED
1421 	 x_group_tbl.run_uned_amt(i)              := p_run_uned_amt;
1422 	 x_group_tbl.run_uned_alloc(i)            := p_run_uned_alloc;
1423 	 x_group_tbl.run_uned_acctd_amt(i)        := p_run_uned_acctd_amt;
1424 	 x_group_tbl.run_uned_acctd_alloc(i)      := p_run_uned_acctd_alloc;
1425 	 x_group_tbl.run_uned_chrg_amt(i)         := p_run_uned_chrg_amt;
1426 	 x_group_tbl.run_uned_chrg_alloc(i)       := p_run_uned_chrg_alloc;
1427 	 x_group_tbl.run_uned_chrg_acctd_amt(i)   := p_run_uned_chrg_acctd_amt;
1428 	 x_group_tbl.run_uned_chrg_acctd_alloc(i) := p_run_uned_chrg_acctd_alloc;
1429 	 x_group_tbl.run_uned_frt_amt(i)         := p_run_uned_frt_amt;
1430 	 x_group_tbl.run_uned_frt_alloc(i)       := p_run_uned_frt_alloc;
1431 	 x_group_tbl.run_uned_frt_acctd_amt(i)   := p_run_uned_frt_acctd_amt;
1432 	 x_group_tbl.run_uned_frt_acctd_alloc(i) := p_run_uned_frt_acctd_alloc;
1433 	 x_group_tbl.run_uned_tax_amt(i)         := p_run_uned_tax_amt;
1434 	 x_group_tbl.run_uned_tax_alloc(i)       := p_run_uned_tax_alloc;
1435 	 x_group_tbl.run_uned_tax_acctd_amt(i)   := p_run_uned_tax_acctd_amt;
1436 	 x_group_tbl.run_uned_tax_acctd_alloc(i) := p_run_uned_tax_acctd_alloc;
1437      ELSE
1438 	 l_cnt                                     := x_group_tbl.groupe.COUNT;
1439 	 x_group_tbl.groupe_index( p_groupe )      := l_cnt + 1;
1440 
1441 	 IF PG_DEBUG = 'Y' THEN
1442 	    localdebug('Added to cache(hash table) index '||l_cnt);
1443 	    localdebug('p_groupe '||p_groupe);
1444 	 END IF;
1445 
1446 	 x_group_tbl.groupe(l_cnt+1)               := p_groupe;
1447 	 -- ADJ and APP
1448 	 x_group_tbl.run_amt(l_cnt+1)              := p_run_amt;
1449 	 x_group_tbl.run_alloc(l_cnt+1)            := p_run_alloc;
1450 	 x_group_tbl.run_acctd_amt(l_cnt+1)        := p_run_acctd_amt;
1451 	 x_group_tbl.run_acctd_alloc(l_cnt+1)      := p_run_acctd_alloc;
1452 	 x_group_tbl.run_chrg_amt(l_cnt+1)         := p_run_chrg_amt;
1453 	 x_group_tbl.run_chrg_alloc(l_cnt+1)       := p_run_chrg_alloc;
1454 	 x_group_tbl.run_chrg_acctd_amt(l_cnt+1)   := p_run_chrg_acctd_amt;
1455 	 x_group_tbl.run_chrg_acctd_alloc(l_cnt+1) := p_run_chrg_acctd_alloc;
1456 	 x_group_tbl.run_frt_amt(l_cnt+1)         := p_run_frt_amt;
1457 	 x_group_tbl.run_frt_alloc(l_cnt+1)       := p_run_frt_alloc;
1458 	 x_group_tbl.run_frt_acctd_amt(l_cnt+1)   := p_run_frt_acctd_amt;
1459 	 x_group_tbl.run_frt_acctd_alloc(l_cnt+1) := p_run_frt_acctd_alloc;
1460 	 x_group_tbl.run_tax_amt(l_cnt+1)         := p_run_tax_amt;
1461 	 x_group_tbl.run_tax_alloc(l_cnt+1)       := p_run_tax_alloc;
1462 	 x_group_tbl.run_tax_acctd_amt(l_cnt+1)   := p_run_tax_acctd_amt;
1463 	 x_group_tbl.run_tax_acctd_alloc(l_cnt+1) := p_run_tax_acctd_alloc;
1464 	 -- ED
1465 	 x_group_tbl.run_ed_amt(l_cnt+1)              := p_run_ed_amt;
1466 	 x_group_tbl.run_ed_alloc(l_cnt+1)            := p_run_ed_alloc;
1467 	 x_group_tbl.run_ed_acctd_amt(l_cnt+1)        := p_run_ed_acctd_amt;
1468 	 x_group_tbl.run_ed_acctd_alloc(l_cnt+1)      := p_run_ed_acctd_alloc;
1469 	 x_group_tbl.run_ed_chrg_amt(l_cnt+1)         := p_run_ed_chrg_amt;
1470 	 x_group_tbl.run_ed_chrg_alloc(l_cnt+1)       := p_run_ed_chrg_alloc;
1471 	 x_group_tbl.run_ed_chrg_acctd_amt(l_cnt+1)   := p_run_ed_chrg_acctd_amt;
1472 	 x_group_tbl.run_ed_chrg_acctd_alloc(l_cnt+1) := p_run_ed_chrg_acctd_alloc;
1473 	 x_group_tbl.run_ed_frt_amt(l_cnt+1)         := p_run_ed_frt_amt;
1474 	 x_group_tbl.run_ed_frt_alloc(l_cnt+1)       := p_run_ed_frt_alloc;
1475 	 x_group_tbl.run_ed_frt_acctd_amt(l_cnt+1)   := p_run_ed_frt_acctd_amt;
1476 	 x_group_tbl.run_ed_frt_acctd_alloc(l_cnt+1) := p_run_ed_frt_acctd_alloc;
1477 	 x_group_tbl.run_ed_tax_amt(l_cnt+1)         := p_run_ed_tax_amt;
1478 	 x_group_tbl.run_ed_tax_alloc(l_cnt+1)       := p_run_ed_tax_alloc;
1479 	 x_group_tbl.run_ed_tax_acctd_amt(l_cnt+1)   := p_run_ed_tax_acctd_amt;
1480 	 x_group_tbl.run_ed_tax_acctd_alloc(l_cnt+1) := p_run_ed_tax_acctd_alloc;
1481 	 -- UNED
1482 	 x_group_tbl.run_uned_amt(l_cnt+1)              := p_run_uned_amt;
1483 	 x_group_tbl.run_uned_alloc(l_cnt+1)            := p_run_uned_alloc;
1484 	 x_group_tbl.run_uned_acctd_amt(l_cnt+1)        := p_run_uned_acctd_amt;
1485 	 x_group_tbl.run_uned_acctd_alloc(l_cnt+1)      := p_run_uned_acctd_alloc;
1486 	 x_group_tbl.run_uned_chrg_amt(l_cnt+1)         := p_run_uned_chrg_amt;
1487 	 x_group_tbl.run_uned_chrg_alloc(l_cnt+1)       := p_run_uned_chrg_alloc;
1488 	 x_group_tbl.run_uned_chrg_acctd_amt(l_cnt+1)   := p_run_uned_chrg_acctd_amt;
1489 	 x_group_tbl.run_uned_chrg_acctd_alloc(l_cnt+1) := p_run_uned_chrg_acctd_alloc;
1490 	 x_group_tbl.run_uned_frt_amt(l_cnt+1)         := p_run_uned_frt_amt;
1491 	 x_group_tbl.run_uned_frt_alloc(l_cnt+1)       := p_run_uned_frt_alloc;
1492 	 x_group_tbl.run_uned_frt_acctd_amt(l_cnt+1)   := p_run_uned_frt_acctd_amt;
1493 	 x_group_tbl.run_uned_frt_acctd_alloc(l_cnt+1) := p_run_uned_frt_acctd_alloc;
1494 	 x_group_tbl.run_uned_tax_amt(l_cnt+1)         := p_run_uned_tax_amt;
1495 	 x_group_tbl.run_uned_tax_alloc(l_cnt+1)       := p_run_uned_tax_alloc;
1496 	 x_group_tbl.run_uned_tax_acctd_amt(l_cnt+1)   := p_run_uned_tax_acctd_amt;
1497 	 x_group_tbl.run_uned_tax_acctd_alloc(l_cnt+1) := p_run_uned_tax_acctd_alloc;
1498      END IF;
1499    END IF;
1500    IF PG_DEBUG = 'Y' THEN
1501    localdebug('arp_det_dist_pkg.store_group()-');
1502    END IF;
1503 END;
1504 
1505 
1506 PROCEDURE plsql_proration
1507 ( x_tab                  IN OUT NOCOPY pro_res_tbl_type,
1508   x_group_tbl            IN OUT NOCOPY group_tbl_type,
1509   p_group_level          IN VARCHAR2 DEFAULT 'NOGROUP',
1510   -- ADJ and APP
1511   x_run_amt              IN OUT NOCOPY NUMBER,
1512   x_run_alloc            IN OUT NOCOPY NUMBER,
1513   x_run_acctd_amt        IN OUT NOCOPY NUMBER,
1514   x_run_acctd_alloc      IN OUT NOCOPY NUMBER,
1515   x_run_chrg_amt         IN OUT NOCOPY NUMBER,
1516   x_run_chrg_alloc       IN OUT NOCOPY NUMBER,
1517   x_run_chrg_acctd_amt   IN OUT NOCOPY NUMBER,
1518   x_run_chrg_acctd_alloc IN OUT NOCOPY NUMBER,
1519   x_run_frt_amt         IN OUT NOCOPY NUMBER,
1520   x_run_frt_alloc       IN OUT NOCOPY NUMBER,
1521   x_run_frt_acctd_amt   IN OUT NOCOPY NUMBER,
1522   x_run_frt_acctd_alloc IN OUT NOCOPY NUMBER,
1523   x_run_tax_amt         IN OUT NOCOPY NUMBER,
1524   x_run_tax_alloc       IN OUT NOCOPY NUMBER,
1525   x_run_tax_acctd_amt   IN OUT NOCOPY NUMBER,
1526   x_run_tax_acctd_alloc IN OUT NOCOPY NUMBER,
1527   -- ED
1528   x_run_ed_amt              IN OUT NOCOPY NUMBER,
1529   x_run_ed_alloc            IN OUT NOCOPY NUMBER,
1530   x_run_ed_acctd_amt        IN OUT NOCOPY NUMBER,
1531   x_run_ed_acctd_alloc      IN OUT NOCOPY NUMBER,
1532   x_run_ed_chrg_amt         IN OUT NOCOPY NUMBER,
1533   x_run_ed_chrg_alloc       IN OUT NOCOPY NUMBER,
1534   x_run_ed_chrg_acctd_amt   IN OUT NOCOPY NUMBER,
1535   x_run_ed_chrg_acctd_alloc IN OUT NOCOPY NUMBER,
1536   x_run_ed_frt_amt         IN OUT NOCOPY NUMBER,
1537   x_run_ed_frt_alloc       IN OUT NOCOPY NUMBER,
1538   x_run_ed_frt_acctd_amt   IN OUT NOCOPY NUMBER,
1539   x_run_ed_frt_acctd_alloc IN OUT NOCOPY NUMBER,
1540   x_run_ed_tax_amt         IN OUT NOCOPY NUMBER,
1541   x_run_ed_tax_alloc       IN OUT NOCOPY NUMBER,
1542   x_run_ed_tax_acctd_amt   IN OUT NOCOPY NUMBER,
1543   x_run_ed_tax_acctd_alloc IN OUT NOCOPY NUMBER,
1544   -- UNED
1545   x_run_uned_amt              IN OUT NOCOPY NUMBER,
1546   x_run_uned_alloc            IN OUT NOCOPY NUMBER,
1547   x_run_uned_acctd_amt        IN OUT NOCOPY NUMBER,
1548   x_run_uned_acctd_alloc      IN OUT NOCOPY NUMBER,
1549   x_run_uned_chrg_amt         IN OUT NOCOPY NUMBER,
1550   x_run_uned_chrg_alloc       IN OUT NOCOPY NUMBER,
1551   x_run_uned_chrg_acctd_amt   IN OUT NOCOPY NUMBER,
1552   x_run_uned_chrg_acctd_alloc IN OUT NOCOPY NUMBER,
1553   x_run_uned_frt_amt         IN OUT NOCOPY NUMBER,
1554   x_run_uned_frt_alloc       IN OUT NOCOPY NUMBER,
1555   x_run_uned_frt_acctd_amt   IN OUT NOCOPY NUMBER,
1556   x_run_uned_frt_acctd_alloc IN OUT NOCOPY NUMBER,
1557   x_run_uned_tax_amt         IN OUT NOCOPY NUMBER,
1558   x_run_uned_tax_alloc       IN OUT NOCOPY NUMBER,
1559   x_run_uned_tax_acctd_amt   IN OUT NOCOPY NUMBER,
1560   x_run_uned_tax_acctd_alloc IN OUT NOCOPY NUMBER)
1561 IS
1562   l_group                VARCHAR2(900);
1563   -- ADJ and APP
1564   l_alloc                NUMBER          := 0;
1565   l_acctd_alloc          NUMBER          := 0;
1566   l_chrg_alloc           NUMBER          := 0;
1567   l_chrg_acctd_alloc     NUMBER          := 0;
1568   l_frt_alloc           NUMBER          := 0;
1569   l_frt_acctd_alloc     NUMBER          := 0;
1570   l_tax_alloc           NUMBER          := 0;
1571   l_tax_acctd_alloc           NUMBER          := 0;
1572   -- ED
1573   l_ed_alloc                  NUMBER          := 0;
1574   l_ed_acctd_alloc            NUMBER          := 0;
1575   l_ed_chrg_alloc             NUMBER          := 0;
1576   l_ed_chrg_acctd_alloc       NUMBER          := 0;
1577   l_ed_frt_alloc              NUMBER          := 0;
1578   l_ed_frt_acctd_alloc        NUMBER          := 0;
1579   l_ed_tax_alloc              NUMBER          := 0;
1580   l_ed_tax_acctd_alloc        NUMBER          := 0;
1581   -- UNED
1582   l_uned_alloc                NUMBER          := 0;
1583   l_uned_acctd_alloc          NUMBER          := 0;
1584   l_uned_chrg_alloc           NUMBER          := 0;
1585   l_uned_chrg_acctd_alloc     NUMBER          := 0;
1586   l_uned_frt_alloc           NUMBER          := 0;
1587   l_uned_frt_acctd_alloc     NUMBER          := 0;
1588   l_uned_tax_alloc           NUMBER          := 0;
1589   l_uned_tax_acctd_alloc     NUMBER          := 0;
1590 
1591   l_exist                BOOLEAN;
1592   tbl_pro_res_tbl_empty  EXCEPTION;
1593 BEGIN
1594   IF PG_DEBUG = 'Y' THEN
1595   localdebug('arp_det_dist_pkg.plsql_proration()+');
1596   END IF;
1597   IF x_tab.ROWID_ID.COUNT = 0 THEN
1598     RAISE tbl_pro_res_tbl_empty;
1599   END IF;
1600 
1601   IF x_group_tbl.GROUPE.COUNT <> 0 THEN
1602     l_group := x_group_tbl.GROUPE.LAST;
1603   ELSE
1604     l_group := 'NOGROUP';
1605   END IF;
1606 
1607   FOR i IN x_tab.ROWID_ID.FIRST .. x_tab.ROWID_ID.LAST LOOP
1608      IF PG_DEBUG = 'Y' THEN
1609      localdebug('current indice i:'||i);
1610      END IF;
1611 
1612      IF l_group <> x_tab.GROUPE(i) THEN
1613         -- put away the current group value
1614         store_group
1615         (p_groupe                => l_group,
1616          -- ADJ and APP
1617          p_run_amt               => x_run_amt,
1618          p_run_alloc             => x_run_alloc,
1619          p_run_acctd_amt         => x_run_acctd_amt,
1620          p_run_acctd_alloc       => x_run_acctd_alloc,
1621          p_run_chrg_amt          => x_run_chrg_amt,
1622          p_run_chrg_alloc        => x_run_chrg_alloc,
1623          p_run_chrg_acctd_amt    => x_run_chrg_acctd_amt,
1624          p_run_chrg_acctd_alloc  => x_run_chrg_acctd_alloc,
1625          p_run_frt_amt          => x_run_frt_amt,
1626          p_run_frt_alloc        => x_run_frt_alloc,
1627          p_run_frt_acctd_amt    => x_run_frt_acctd_amt,
1628          p_run_frt_acctd_alloc  => x_run_frt_acctd_alloc,
1629          p_run_tax_amt          => x_run_tax_amt,
1630          p_run_tax_alloc        => x_run_tax_alloc,
1631          p_run_tax_acctd_amt    => x_run_tax_acctd_amt,
1632          p_run_tax_acctd_alloc  => x_run_tax_acctd_alloc,
1633          -- ED
1634          p_run_ed_amt               => x_run_ed_amt,
1635          p_run_ed_alloc             => x_run_ed_alloc,
1636          p_run_ed_acctd_amt         => x_run_ed_acctd_amt,
1637          p_run_ed_acctd_alloc       => x_run_ed_acctd_alloc,
1638          p_run_ed_chrg_amt          => x_run_ed_chrg_amt,
1639          p_run_ed_chrg_alloc        => x_run_ed_chrg_alloc,
1640          p_run_ed_chrg_acctd_amt    => x_run_ed_chrg_acctd_amt,
1641          p_run_ed_chrg_acctd_alloc  => x_run_ed_chrg_acctd_alloc,
1642          p_run_ed_frt_amt          => x_run_ed_frt_amt,
1643          p_run_ed_frt_alloc        => x_run_ed_frt_alloc,
1644          p_run_ed_frt_acctd_amt    => x_run_ed_frt_acctd_amt,
1645          p_run_ed_frt_acctd_alloc  => x_run_ed_frt_acctd_alloc,
1646          p_run_ed_tax_amt          => x_run_ed_tax_amt,
1647          p_run_ed_tax_alloc        => x_run_ed_tax_alloc,
1648          p_run_ed_tax_acctd_amt    => x_run_ed_tax_acctd_amt,
1649          p_run_ed_tax_acctd_alloc  => x_run_ed_tax_acctd_alloc,
1650          -- UNED
1651          p_run_uned_amt               => x_run_uned_amt,
1652          p_run_uned_alloc             => x_run_uned_alloc,
1653          p_run_uned_acctd_amt         => x_run_uned_acctd_amt,
1654          p_run_uned_acctd_alloc       => x_run_uned_acctd_alloc,
1655          p_run_uned_chrg_amt          => x_run_uned_chrg_amt,
1656          p_run_uned_chrg_alloc        => x_run_uned_chrg_alloc,
1657          p_run_uned_chrg_acctd_amt    => x_run_uned_chrg_acctd_amt,
1658          p_run_uned_chrg_acctd_alloc  => x_run_uned_chrg_acctd_alloc,
1659          p_run_uned_frt_amt          => x_run_uned_frt_amt,
1660          p_run_uned_frt_alloc        => x_run_uned_frt_alloc,
1661          p_run_uned_frt_acctd_amt    => x_run_uned_frt_acctd_amt,
1662          p_run_uned_frt_acctd_alloc  => x_run_uned_frt_acctd_alloc,
1663          p_run_uned_tax_amt          => x_run_uned_tax_amt,
1664          p_run_uned_tax_alloc        => x_run_uned_tax_alloc,
1665          p_run_uned_tax_acctd_amt    => x_run_uned_tax_acctd_amt,
1666          p_run_uned_tax_acctd_alloc  => x_run_uned_tax_acctd_alloc,
1667          --
1668          x_group_tbl             => x_group_tbl);
1669         -- Check if the new group already exists in case DB ordering problem
1670         -- to initiate the correct running amount
1671         -- and initiate the running amount
1672         return_existing_group
1673         (p_groupe               => x_tab.GROUPE(i),
1674          x_group_tbl            => x_group_tbl,
1675          p_group_level          => p_group_level,
1676 	 x_exist                => l_exist,
1677          -- ADJ and APP
1678          x_run_amt              => x_run_amt,
1679          x_run_alloc            => x_run_alloc,
1680          x_run_acctd_amt        => x_run_acctd_amt,
1681          x_run_acctd_alloc      => x_run_acctd_alloc,
1682          x_run_chrg_amt         => x_run_chrg_amt,
1683          x_run_chrg_alloc       => x_run_chrg_alloc,
1684          x_run_chrg_acctd_amt   => x_run_chrg_acctd_amt,
1685          x_run_chrg_acctd_alloc => x_run_chrg_acctd_alloc,
1686          x_run_frt_amt         => x_run_frt_amt,
1687          x_run_frt_alloc       => x_run_frt_alloc,
1688          x_run_frt_acctd_amt   => x_run_frt_acctd_amt,
1689          x_run_frt_acctd_alloc => x_run_frt_acctd_alloc,
1690          x_run_tax_amt         => x_run_tax_amt,
1691          x_run_tax_alloc       => x_run_tax_alloc,
1692          x_run_tax_acctd_amt   => x_run_tax_acctd_amt,
1693          x_run_tax_acctd_alloc => x_run_tax_acctd_alloc,
1694          -- ED
1695          x_run_ed_amt              => x_run_ed_amt,
1696          x_run_ed_alloc            => x_run_ed_alloc,
1697          x_run_ed_acctd_amt        => x_run_ed_acctd_amt,
1698          x_run_ed_acctd_alloc      => x_run_ed_acctd_alloc,
1699          x_run_ed_chrg_amt         => x_run_ed_chrg_amt,
1700          x_run_ed_chrg_alloc       => x_run_ed_chrg_alloc,
1701          x_run_ed_chrg_acctd_amt   => x_run_ed_chrg_acctd_amt,
1702          x_run_ed_chrg_acctd_alloc => x_run_ed_chrg_acctd_alloc,
1703          x_run_ed_frt_amt         => x_run_ed_frt_amt,
1704          x_run_ed_frt_alloc       => x_run_ed_frt_alloc,
1705          x_run_ed_frt_acctd_amt   => x_run_ed_frt_acctd_amt,
1706          x_run_ed_frt_acctd_alloc => x_run_ed_frt_acctd_alloc,
1707          x_run_ed_tax_amt         => x_run_ed_tax_amt,
1708          x_run_ed_tax_alloc       => x_run_ed_tax_alloc,
1709          x_run_ed_tax_acctd_amt   => x_run_ed_tax_acctd_amt,
1710          x_run_ed_tax_acctd_alloc => x_run_ed_tax_acctd_alloc,
1711          -- UNED
1712          x_run_uned_amt              => x_run_uned_amt,
1713          x_run_uned_alloc            => x_run_uned_alloc,
1714          x_run_uned_acctd_amt        => x_run_uned_acctd_amt,
1715          x_run_uned_acctd_alloc      => x_run_uned_acctd_alloc,
1716          x_run_uned_chrg_amt         => x_run_uned_chrg_amt,
1717          x_run_uned_chrg_alloc       => x_run_uned_chrg_alloc,
1718          x_run_uned_chrg_acctd_amt   => x_run_uned_chrg_acctd_amt,
1719          x_run_uned_chrg_acctd_alloc => x_run_uned_chrg_acctd_alloc,
1720          x_run_uned_frt_amt         => x_run_uned_frt_amt,
1721          x_run_uned_frt_alloc       => x_run_uned_frt_alloc,
1722          x_run_uned_frt_acctd_amt   => x_run_uned_frt_acctd_amt,
1723          x_run_uned_frt_acctd_alloc => x_run_uned_frt_acctd_alloc,
1724          x_run_uned_tax_amt         => x_run_uned_tax_amt,
1725          x_run_uned_tax_alloc       => x_run_uned_tax_alloc,
1726          x_run_uned_tax_acctd_amt   => x_run_uned_tax_acctd_amt,
1727          x_run_uned_tax_acctd_alloc => x_run_uned_tax_acctd_alloc);
1728        -- the current group is the new group
1729        l_group := x_tab.GROUPE(i);
1730      END IF;
1731 
1732    /********************************
1733     -- ADJ AND APP
1734     ********************************/
1735     /*-------------------------------------------------+
1736      | Running Rev amount in trx currency              |
1737      +-------------------------------------------------*/
1738      IF PG_DEBUG = 'Y' THEN
1739        localdebug('  x_tab.line_type(i):'||x_tab.line_type(i));
1740      END IF;
1741 
1742     IF x_tab.base_pro_amt(i) <> 0 AND x_tab.buc_alloc_amt(i) <> 0 THEN
1743     IF PG_DEBUG = 'Y' THEN
1744     localdebug('  x_run_amt:'||x_run_amt);
1745     localdebug('  x_tab.elmt_pro_amt(i):'||x_tab.elmt_pro_amt(i));
1746     localdebug('  x_tab.buc_alloc_amt(i):'||x_tab.buc_alloc_amt(i));
1747     localdebug('  x_tab.base_pro_amt(i):'||x_tab.base_pro_amt(i));
1748     END IF;
1749       x_run_amt := x_run_amt + x_tab.elmt_pro_amt(i);
1750       l_alloc    := CurrRound(  x_run_amt
1751                                  / x_tab.base_pro_amt(i)
1752                                  * x_tab.buc_alloc_amt(i),
1753                                    x_tab.to_currency(i))
1754                                - x_run_alloc;
1755       -- MAJ proration_res_tbl.res_pro := l_alloc;
1756       x_tab.tl_alloc_amt(i) := l_alloc;
1757       x_run_alloc := x_run_alloc + l_alloc;
1758     IF PG_DEBUG = 'Y' THEN
1759     localdebug('  x_tab.tl_alloc_amt(i):'||x_tab.tl_alloc_amt(i));
1760     localdebug('  x_run_alloc:'||x_run_alloc);
1761     localdebug('  l_alloc:'||l_alloc);
1762     END IF;
1763     ELSIF ((p_group_level = 'D' AND x_tab.elmt_pro_amt(i) = 0 AND x_tab.base_pro_amt(i) = 0 AND x_tab.buc_alloc_amt(i) <> 0)
1764           OR (x_tab.base_pro_amt(i) = 0 AND (g_line_adj <> 0 OR g_line_applied <> 0) AND (x_tab.line_type(i) = 'LINE'))) THEN -- Bug14415571
1765     IF PG_DEBUG = 'Y' THEN
1766     localdebug('  x_run_amt:'||x_run_amt);
1767     localdebug('  x_tab.elmt_pro_amt(i):'||x_tab.elmt_pro_amt(i));
1768     localdebug('  x_tab.buc_alloc_amt(i):'||x_tab.buc_alloc_amt(i));
1769     localdebug('  x_tab.base_pro_amt(i):'||x_tab.base_pro_amt(i));
1770     END IF;
1771      IF x_tab.buc_alloc_amt(i) <> 0 THEN
1772           l_alloc   :=  x_tab.buc_alloc_amt(i) - x_run_alloc;
1773           x_tab.tl_alloc_amt(i) := l_alloc;
1774           x_run_alloc := x_run_alloc + l_alloc;
1775       ELSE x_tab.tl_alloc_amt(i) := 0;
1776       END IF;
1777     IF PG_DEBUG = 'Y' THEN
1778     localdebug('  x_tab.tl_alloc_amt(i):'||x_tab.tl_alloc_amt(i));
1779     localdebug('  x_run_alloc:'||x_run_alloc);
1780     localdebug('  l_alloc:'||l_alloc);
1781     END IF;
1782     ELSE
1783       x_tab.tl_alloc_amt(i) := 0;
1784     END IF;
1785 
1786 
1787     /*-------------------------------------------------+
1788      | Running Rev amount in base currency             |
1789      +-------------------------------------------------*/
1790 
1791     IF x_tab.base_pro_acctd_amt(i) <> 0 AND x_tab.buc_alloc_acctd_amt(i) <> 0 THEN
1792     IF PG_DEBUG = 'Y' THEN
1793     localdebug('  x_run_acctd_amt:'||x_run_acctd_amt);
1794     localdebug('  x_tab.elmt_pro_acctd_amt(i):'||x_tab.elmt_pro_acctd_amt(i));
1795     localdebug('  x_tab.buc_alloc_acctd_amt(i):'||x_tab.buc_alloc_acctd_amt(i));
1796     localdebug('  x_tab.base_pro_acctd_amt(i):'||x_tab.base_pro_acctd_amt(i));
1797     END IF;
1798       x_run_acctd_amt := x_run_acctd_amt + x_tab.elmt_pro_acctd_amt(i);
1799       l_acctd_alloc    := CurrRound(  x_run_acctd_amt
1800                                  / x_tab.base_pro_acctd_amt(i)
1801                                  * x_tab.buc_alloc_acctd_amt(i),
1802                                    x_tab.base_currency(i))
1803                                - x_run_acctd_alloc;
1804       -- MAJ proration_res_tbl.res_pro := l_alloc;
1805       x_tab.tl_alloc_acctd_amt(i) := l_acctd_alloc;
1806       x_run_acctd_alloc := x_run_acctd_alloc + l_acctd_alloc;
1807     IF PG_DEBUG = 'Y' THEN
1808     localdebug('  x_tab.tl_alloc_acctd_amt(i):'||x_tab.tl_alloc_acctd_amt(i));
1809     localdebug('  x_run_acctd_alloc:'||x_run_acctd_alloc);
1810     localdebug('  l_acctd_alloc:'||l_acctd_alloc);
1811     END IF;
1812     ELSIF ((p_group_level = 'D' AND x_tab.elmt_pro_acctd_amt(i) = 0 AND x_tab.base_pro_acctd_amt(i) = 0 AND x_tab.buc_alloc_acctd_amt(i) <> 0)
1813            OR (x_tab.base_pro_acctd_amt(i) = 0 AND (g_acctd_line_adj <> 0 OR g_acctd_line_applied <> 0) AND (x_tab.line_type(i) = 'LINE'))) THEN  -- Bug14415571
1814     IF PG_DEBUG = 'Y' THEN
1815     localdebug('  x_run_acctd_amt:'||x_run_acctd_amt);
1816     localdebug('  x_tab.elmt_pro_acctd_amt(i):'||x_tab.elmt_pro_acctd_amt(i));
1817     localdebug('  x_tab.buc_alloc_acctd_amt(i):'||x_tab.buc_alloc_acctd_amt(i));
1818     localdebug('  x_tab.base_pro_acctd_amt(i):'||x_tab.base_pro_acctd_amt(i));
1819     END IF;
1820         IF x_tab.buc_alloc_acctd_amt(i) <> 0 THEN
1821           l_acctd_alloc   :=  x_tab.buc_alloc_acctd_amt(i) - x_run_acctd_alloc;
1822           x_tab.tl_alloc_acctd_amt(i) := l_acctd_alloc;
1823           x_run_acctd_alloc := x_run_acctd_alloc + l_acctd_alloc;
1824       ELSE  x_tab.tl_alloc_acctd_amt(i) := 0;
1825       END IF;
1826     IF PG_DEBUG = 'Y' THEN
1827     localdebug('  x_tab.tl_alloc_acctd_amt(i):'||x_tab.tl_alloc_acctd_amt(i));
1828     localdebug('  x_run_acctd_alloc:'||x_run_acctd_alloc);
1829     localdebug('  l_acctd_alloc:'||l_acctd_alloc);
1830     END IF;
1831     ELSE
1832       x_tab.tl_alloc_acctd_amt(i) := 0;
1833     END IF;
1834 
1835     /*-------------------------------------------------+
1836      | Running tax amount in trx currency              |
1837      +-------------------------------------------------*/
1838 
1839     IF x_tab.BASE_tax_PRO_AMT(i) <> 0 AND x_tab.buc_tax_alloc_amt(i) <> 0 THEN
1840     IF PG_DEBUG = 'Y' THEN
1841     localdebug('  x_run_tax_amt:'||x_run_tax_amt);
1842     localdebug('  x_tab.ELMT_tax_PRO_AMT(i):'||x_tab.ELMT_tax_PRO_AMT(i));
1843     localdebug('  x_tab.buc_tax_alloc_amt(i):'||x_tab.buc_tax_alloc_amt(i));
1844     localdebug('  x_tab.BASE_TAX_PRO_AMT(i):'||x_tab.BASE_tax_PRO_AMT(i));
1845     END IF;
1846       x_run_tax_amt := x_run_tax_amt + x_tab.ELMT_tax_PRO_AMT(i);
1847       l_tax_alloc    := CurrRound(  x_run_tax_amt
1848                                  / x_tab.BASE_tax_PRO_AMT(i)
1849                                  * x_tab.buc_tax_alloc_amt(i),
1850                                    x_tab.to_currency(i))
1851                                - x_run_tax_alloc;
1852       x_tab.tl_tax_alloc_amt(i) := l_tax_alloc;
1853       x_run_tax_alloc := x_run_tax_alloc + l_tax_alloc;
1854     IF PG_DEBUG = 'Y' THEN
1855     localdebug('  x_tab.tl_tax_alloc_amt(i):'||x_tab.tl_tax_alloc_amt(i));
1856     localdebug('  x_run_tax_alloc:'||x_run_tax_alloc);
1857     localdebug('  l_tax_alloc:'||l_tax_alloc);
1858     END IF;
1859     ELSIF ((p_group_level = 'D' AND x_tab.ELMT_tax_PRO_AMT(i) = 0 AND x_tab.BASE_tax_PRO_AMT(i) = 0 AND x_tab.buc_tax_alloc_amt(i) <> 0)
1860 	  OR (x_tab.BASE_tax_PRO_AMT(i) = 0 AND (g_tax_adj <> 0 OR g_tax_applied <> 0) AND (x_tab.line_type(i) = 'TAX'))) THEN  -- Bug14415571
1861     IF PG_DEBUG = 'Y' THEN
1862     localdebug('  x_run_tax_amt:'||x_run_tax_amt);
1863     localdebug('  x_tab.ELMT_tax_PRO_AMT(i):'||x_tab.ELMT_tax_PRO_AMT(i));
1864     localdebug('  x_tab.buc_tax_alloc_amt(i):'||x_tab.buc_tax_alloc_amt(i));
1865     localdebug('  x_tab.BASE_TAX_PRO_AMT(i):'||x_tab.BASE_tax_PRO_AMT(i));
1866     END IF;
1867     IF x_tab.buc_tax_alloc_amt(i) <> 0 THEN
1868           l_tax_alloc   :=  x_tab.buc_tax_alloc_amt(i) - x_run_tax_amt;
1869           x_tab.tl_tax_alloc_amt(i) := l_tax_alloc;
1870           x_run_tax_amt := x_run_tax_amt + l_tax_alloc;
1871     ELSE x_tab.tl_tax_alloc_amt(i) := 0;
1872      END IF;
1873     IF PG_DEBUG = 'Y' THEN
1874     localdebug('  x_tab.tl_tax_alloc_amt(i):'||x_tab.tl_tax_alloc_amt(i));
1875     localdebug('  x_run_tax_alloc:'||x_run_tax_alloc);
1876     localdebug('  l_tax_alloc:'||l_tax_alloc);
1877     END IF;
1878     ELSE
1879       x_tab.tl_tax_alloc_amt(i) := 0;
1880     END IF;
1881 
1882 
1883     /*-------------------------------------------------+
1884      | Running tax acctd amount in trx currency        |
1885      +-------------------------------------------------*/
1886     IF x_tab.BASE_tax_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_tax_alloc_acctd_amt(i) <> 0 THEN
1887     IF PG_DEBUG = 'Y' THEN
1888     localdebug('  x_run_tax_amt:'||x_run_tax_amt);
1889     localdebug('  x_tab.ELMT_tax_PRO_acctd_AMT(i):'||x_tab.ELMT_tax_PRO_acctd_AMT(i));
1890     localdebug('  x_tab.buc_tax_alloc_acctd_amt(i):'||x_tab.buc_tax_alloc_acctd_amt(i));
1891     localdebug('  x_tab.BASE_TAX_PRO_acctd_AMT(i):'||x_tab.BASE_tax_PRO_acctd_AMT(i));
1892     END IF;
1893       x_run_tax_acctd_amt := x_run_tax_acctd_amt + x_tab.ELMT_tax_PRO_ACCTD_AMT(i);
1894       l_tax_acctd_alloc    := CurrRound(  x_run_tax_acctd_amt
1895                                  / x_tab.BASE_tax_PRO_ACCTD_AMT(i)
1896                                  * x_tab.buc_tax_alloc_acctd_amt(i),
1897                                    x_tab.base_currency(i))
1898                                - x_run_tax_acctd_alloc;
1899       x_tab.tl_tax_alloc_acctd_amt(i) := l_tax_acctd_alloc;
1900       x_run_tax_acctd_alloc := x_run_tax_acctd_alloc + l_tax_acctd_alloc;
1901     IF PG_DEBUG = 'Y' THEN
1902     localdebug('  x_tab.tl_tax_alloc_acctd_amt(i):'||x_tab.tl_tax_alloc_acctd_amt(i));
1903     localdebug('  x_run_tax_acctd_alloc:'||x_run_tax_acctd_alloc);
1904     localdebug('  l_tax_acctd_alloc:'||l_tax_acctd_alloc);
1905     END IF;
1906     ELSIF ((p_group_level = 'D' AND x_tab.ELMT_tax_PRO_ACCTD_AMT(i) = 0 AND x_tab.BASE_tax_PRO_ACCTD_AMT(i) = 0 AND x_tab.buc_tax_alloc_acctd_amt(i) <> 0)
1907 	  OR (x_tab.BASE_tax_PRO_ACCTD_AMT(i) = 0 AND (g_acctd_tax_adj <> 0 OR g_acctd_tax_applied <> 0) AND (x_tab.line_type(i) = 'TAX'))) THEN  -- Bug14415571
1908     IF PG_DEBUG = 'Y' THEN
1909     localdebug('  x_run_tax_amt:'||x_run_tax_amt);
1910     localdebug('  x_tab.ELMT_tax_PRO_acctd_AMT(i):'||x_tab.ELMT_tax_PRO_acctd_AMT(i));
1911     localdebug('  x_tab.buc_tax_alloc_acctd_amt(i):'||x_tab.buc_tax_alloc_acctd_amt(i));
1912     localdebug('  x_tab.BASE_TAX_PRO_acctd_AMT(i):'||x_tab.BASE_tax_PRO_acctd_AMT(i));
1913     END IF;
1914        IF x_tab.buc_tax_alloc_acctd_amt(i) <> 0 THEN
1915           l_tax_acctd_alloc   :=  x_tab.buc_tax_alloc_acctd_amt(i) - x_run_tax_acctd_amt;
1916           x_tab.tl_tax_alloc_acctd_amt(i) := l_tax_acctd_alloc;
1917           x_run_tax_acctd_amt := x_run_tax_acctd_amt + l_tax_acctd_alloc;
1918        ELSE  x_tab.tl_tax_alloc_acctd_amt(i) := 0;
1919       END IF;
1920     IF PG_DEBUG = 'Y' THEN
1921     localdebug('  x_tab.tl_tax_alloc_acctd_amt(i):'||x_tab.tl_tax_alloc_acctd_amt(i));
1922     localdebug('  x_run_tax_acctd_alloc:'||x_run_tax_acctd_alloc);
1923     localdebug('  l_tax_acctd_alloc:'||l_tax_acctd_alloc);
1924     END IF;
1925     ELSE
1926       x_tab.tl_tax_alloc_acctd_amt(i) := 0;
1927     END IF;
1928 
1929 
1930     /*-------------------------------------------------+
1931      | Running frt amount in trx currency              |
1932      +-------------------------------------------------*/
1933 
1934     IF x_tab.BASE_FRT_PRO_AMT(i) <> 0 AND x_tab.buc_frt_alloc_amt(i) <> 0 THEN
1935     IF PG_DEBUG = 'Y' THEN
1936     localdebug('  x_run_frt_amt:'||x_run_frt_amt);
1937     localdebug('  x_tab.ELMT_frt_PRO_AMT(i):'||x_tab.ELMT_frt_PRO_AMT(i));
1938     localdebug('  x_tab.buc_frt_alloc_amt(i):'||x_tab.buc_frt_alloc_amt(i));
1939     localdebug('  x_tab.BASE_FRT_PRO_AMT(i):'||x_tab.BASE_FRT_PRO_AMT(i));
1940     END IF;
1941       x_run_frt_amt := x_run_frt_amt + x_tab.ELMT_FRT_PRO_AMT(i);
1942       l_frt_alloc    := CurrRound(  x_run_frt_amt
1943                                  / x_tab.BASE_FRT_PRO_AMT(i)
1944                                  * x_tab.buc_frt_alloc_amt(i),
1945                                    x_tab.to_currency(i))
1946                                - x_run_frt_alloc;
1947       x_tab.tl_frt_alloc_amt(i) := l_frt_alloc;
1948       x_run_frt_alloc := x_run_frt_alloc + l_frt_alloc;
1949     IF PG_DEBUG = 'Y' THEN
1950     localdebug('  x_tab.tl_frt_alloc_amt(i):'||x_tab.tl_frt_alloc_amt(i));
1951     localdebug('  x_run_frt_alloc:'||x_run_frt_alloc);
1952     localdebug('  l_frt_alloc:'||l_frt_alloc);
1953     END IF;
1954     ELSIF ((p_group_level = 'D' AND x_tab.ELMT_FRT_PRO_AMT(i) = 0 AND x_tab.BASE_FRT_PRO_AMT(i) = 0 AND x_tab.buc_frt_alloc_amt(i) <> 0)
1955 	  OR (x_tab.BASE_FRT_PRO_AMT(i) = 0 AND (g_frt_adj <> 0 OR g_frt_applied <> 0) AND (x_tab.line_type(i) = 'FREIGHT'))) THEN  -- Bug14415571
1956     IF PG_DEBUG = 'Y' THEN
1957     localdebug('  x_run_frt_amt:'||x_run_frt_amt);
1958     localdebug('  x_tab.ELMT_frt_PRO_AMT(i):'||x_tab.ELMT_frt_PRO_AMT(i));
1959     localdebug('  x_tab.buc_frt_alloc_amt(i):'||x_tab.buc_frt_alloc_amt(i));
1960     localdebug('  x_tab.BASE_FRT_PRO_AMT(i):'||x_tab.BASE_FRT_PRO_AMT(i));
1961     END IF;
1962         IF x_tab.buc_frt_alloc_amt(i) <> 0 THEN
1963           l_frt_alloc   :=  x_tab.buc_frt_alloc_amt(i) - x_run_frt_alloc;
1964           x_tab.tl_frt_alloc_amt(i) := l_frt_alloc;
1965           x_run_frt_alloc := x_run_frt_alloc + l_frt_alloc;
1966         ELSE  x_tab.tl_frt_alloc_amt(i) := 0;
1967         END IF;
1968     IF PG_DEBUG = 'Y' THEN
1969     localdebug('  x_tab.tl_frt_alloc_amt(i):'||x_tab.tl_frt_alloc_amt(i));
1970     localdebug('  x_run_frt_alloc:'||x_run_frt_alloc);
1971     localdebug('  l_frt_alloc:'||l_frt_alloc);
1972     END IF;
1973     ELSE
1974       x_tab.tl_frt_alloc_amt(i) := 0;
1975     END IF;
1976 
1977 
1978     /*-------------------------------------------------+
1979      | Running frt acctd amount in trx currency        |
1980      +-------------------------------------------------*/
1981     IF x_tab.BASE_FRT_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_frt_alloc_acctd_amt(i) <> 0 THEN
1982     IF PG_DEBUG = 'Y' THEN
1983     localdebug('  x_run_frt_acctd_amt:'||x_run_frt_acctd_amt);
1984     localdebug('  x_tab.ELMT_FRT_PRO_ACCTD_AMT(i):'||x_tab.ELMT_FRT_PRO_ACCTD_AMT(i));
1985     localdebug('  x_tab.buc_frt_alloc_acctd_amt(i):'||x_tab.buc_frt_alloc_acctd_amt(i));
1986     localdebug('  x_tab.BASE_FRT_PRO_ACCTD_AMT(i):'||x_tab.BASE_FRT_PRO_ACCTD_AMT(i));
1987     END IF;
1988       x_run_frt_acctd_amt := x_run_frt_acctd_amt + x_tab.ELMT_FRT_PRO_ACCTD_AMT(i);
1989       l_frt_acctd_alloc    := CurrRound(  x_run_frt_acctd_amt
1990                                  / x_tab.BASE_FRT_PRO_ACCTD_AMT(i)
1991                                  * x_tab.buc_frt_alloc_acctd_amt(i),
1992                                    x_tab.base_currency(i))
1993                                - x_run_frt_acctd_alloc;
1994       x_tab.tl_frt_alloc_acctd_amt(i) := l_frt_acctd_alloc;
1995       x_run_frt_acctd_alloc := x_run_frt_acctd_alloc + l_frt_acctd_alloc;
1996     IF PG_DEBUG = 'Y' THEN
1997     localdebug('  x_tab.tl_frt_alloc_acctd_amt(i):'||x_tab.tl_frt_alloc_acctd_amt(i));
1998     localdebug('  x_run_frt_acctd_alloc:'||x_run_frt_acctd_alloc);
1999     localdebug('  l_frt_acctd_alloc:'||l_frt_acctd_alloc);
2000     END IF;
2001     ELSIF ((p_group_level = 'D' AND x_tab.ELMT_FRT_PRO_ACCTD_AMT(i) = 0 AND x_tab.BASE_FRT_PRO_ACCTD_AMT(i) = 0 AND x_tab.buc_frt_alloc_acctd_amt(i) <> 0)
2002 	  OR (x_tab.BASE_FRT_PRO_ACCTD_AMT(i) = 0 AND (g_acctd_frt_adj <> 0 OR g_acctd_frt_applied <> 0) AND (x_tab.line_type(i) = 'FREIGHT'))) THEN  -- Bug14415571
2003     IF PG_DEBUG = 'Y' THEN
2004     localdebug('  x_run_frt_acctd_amt:'||x_run_frt_acctd_amt);
2005     localdebug('  x_tab.ELMT_FRT_PRO_ACCTD_AMT(i):'||x_tab.ELMT_FRT_PRO_ACCTD_AMT(i));
2006     localdebug('  x_tab.buc_frt_alloc_acctd_amt(i):'||x_tab.buc_frt_alloc_acctd_amt(i));
2007     localdebug('  x_tab.BASE_FRT_PRO_ACCTD_AMT(i):'||x_tab.BASE_FRT_PRO_ACCTD_AMT(i));
2008     END IF;
2009       IF x_tab.buc_frt_alloc_acctd_amt(i) <> 0 THEN
2010           l_frt_acctd_alloc   :=  x_tab.buc_frt_alloc_acctd_amt(i) - x_run_frt_acctd_amt;
2011           x_tab.tl_frt_alloc_acctd_amt(i) := l_frt_acctd_alloc;
2012           x_run_frt_acctd_amt := x_run_frt_acctd_amt + l_frt_acctd_alloc;
2013       ELSE  x_tab.tl_frt_alloc_acctd_amt(i) := 0;
2014       END IF;
2015     IF PG_DEBUG = 'Y' THEN
2016     localdebug('  x_tab.tl_frt_alloc_acctd_amt(i):'||x_tab.tl_frt_alloc_acctd_amt(i));
2017     localdebug('  x_run_frt_acctd_alloc:'||x_run_frt_acctd_alloc);
2018     localdebug('  l_frt_acctd_alloc:'||l_frt_acctd_alloc);
2019     END IF;
2020     ELSE
2021       x_tab.tl_frt_alloc_acctd_amt(i) := 0;
2022     END IF;
2023 
2024     /*-------------------------------------------------+
2025      | Running chrg amount in trx currency             |
2026      +-------------------------------------------------*/
2027 
2028     IF x_tab.BASE_CHRG_PRO_AMT(i) <> 0 AND x_tab.buc_chrg_alloc_amt(i) <> 0 THEN
2029     IF PG_DEBUG = 'Y' THEN
2030     localdebug('  x_run_chrg_amt:'||x_run_chrg_amt);
2031     localdebug('  x_tab.ELMT_CHRG_PRO_AMT(i):'||x_tab.ELMT_CHRG_PRO_AMT(i));
2032     localdebug('  x_tab.buc_chrg_alloc_amt(i):'||x_tab.buc_chrg_alloc_amt(i));
2033     localdebug('  x_tab.BASE_CHRG_PRO_AMT(i):'||x_tab.BASE_CHRG_PRO_AMT(i));
2034     END IF;
2035       x_run_chrg_amt := x_run_chrg_amt + x_tab.ELMT_CHRG_PRO_AMT(i);
2036       l_chrg_alloc    := CurrRound(  x_run_chrg_amt
2037                                  / x_tab.BASE_CHRG_PRO_AMT(i)
2038                                  * x_tab.buc_chrg_alloc_amt(i),
2039                                    x_tab.to_currency(i))
2040                                - x_run_chrg_alloc;
2041       x_tab.tl_chrg_alloc_amt(i) := l_chrg_alloc;
2042       x_run_chrg_alloc := x_run_chrg_alloc + l_chrg_alloc;
2043     IF PG_DEBUG = 'Y' THEN
2044     localdebug('  x_tab.tl_chrg_alloc_amt(i):'||x_tab.tl_chrg_alloc_amt(i));
2045     localdebug('  x_run_chrg_alloc:'||x_run_chrg_alloc);
2046     localdebug('  l_chrg_alloc:'||l_chrg_alloc);
2047     END IF;
2048     ELSIF ((p_group_level = 'D' AND x_tab.ELMT_CHRG_PRO_AMT(i) = 0 AND x_tab.BASE_CHRG_PRO_AMT(i) = 0 AND x_tab.buc_chrg_alloc_amt(i) <> 0)
2049 	  OR (x_tab.BASE_CHRG_PRO_AMT(i) = 0 AND (g_chrg_adj <> 0 OR g_chrg_applied <> 0) AND (x_tab.line_type(i) = 'CHARGES'))) THEN  -- Bug14415571
2050     IF PG_DEBUG = 'Y' THEN
2051     localdebug('  x_run_chrg_amt:'||x_run_chrg_amt);
2052     localdebug('  x_tab.ELMT_CHRG_PRO_AMT(i):'||x_tab.ELMT_CHRG_PRO_AMT(i));
2053     localdebug('  x_tab.buc_chrg_alloc_amt(i):'||x_tab.buc_chrg_alloc_amt(i));
2054     localdebug('  x_tab.BASE_CHRG_PRO_AMT(i):'||x_tab.BASE_CHRG_PRO_AMT(i));
2055     END IF;
2056     IF x_tab.buc_chrg_alloc_amt(i) <> 0 THEN
2057       l_chrg_alloc   :=  x_tab.buc_chrg_alloc_amt(i) - x_run_chrg_amt;
2058       x_tab.tl_chrg_alloc_amt(i) := l_chrg_alloc;
2059       x_run_chrg_amt := x_run_chrg_amt + l_chrg_alloc;
2060     ELSE   x_tab.tl_chrg_alloc_amt(i) := 0;
2061       END IF;
2062     IF PG_DEBUG = 'Y' THEN
2063     localdebug('  x_tab.tl_chrg_alloc_amt(i):'||x_tab.tl_chrg_alloc_amt(i));
2064     localdebug('  x_run_chrg_alloc:'||x_run_chrg_alloc);
2065     localdebug('  l_chrg_alloc:'||l_chrg_alloc);
2066     END IF;
2067     ELSE
2068       x_tab.tl_chrg_alloc_amt(i) := 0;
2069     END IF;
2070 
2071 
2072     /*-------------------------------------------------+
2073      | Running chrg acctd amount in trx currency       |
2074      +-------------------------------------------------*/
2075     IF x_tab.BASE_CHRG_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_chrg_alloc_acctd_amt(i) <> 0 THEN
2076     IF PG_DEBUG = 'Y' THEN
2077     localdebug('  x_run_chrg_acctd_amt:'||x_run_chrg_acctd_amt);
2078     localdebug('  x_tab.ELMT_CHRG_PRO_ACCTD_AMT(i):'||x_tab.ELMT_CHRG_PRO_ACCTD_AMT(i));
2079     localdebug('  x_tab.buc_chrg_alloc_acctd_amt(i):'||x_tab.buc_chrg_alloc_acctd_amt(i));
2080     localdebug('  x_tab.BASE_CHRG_PRO_ACCTD_AMT(i):'||x_tab.BASE_CHRG_PRO_ACCTD_AMT(i));
2081     END IF;
2082       x_run_chrg_acctd_amt := x_run_chrg_acctd_amt + x_tab.ELMT_CHRG_PRO_ACCTD_AMT(i);
2083       l_chrg_acctd_alloc    := CurrRound(  x_run_chrg_acctd_amt
2084                                  / x_tab.BASE_CHRG_PRO_ACCTD_AMT(i)
2085                                  * x_tab.buc_chrg_alloc_acctd_amt(i),
2086                                    x_tab.base_currency(i))
2087                                - x_run_chrg_acctd_alloc;
2088       x_tab.tl_chrg_alloc_acctd_amt(i) := l_chrg_acctd_alloc;
2089       x_run_chrg_acctd_alloc := x_run_chrg_acctd_alloc + l_chrg_acctd_alloc;
2090     IF PG_DEBUG = 'Y' THEN
2091     localdebug('  x_tab.tl_chrg_alloc_acctd_amt(i):'||x_tab.tl_chrg_alloc_acctd_amt(i));
2092     localdebug('  x_run_chrg_acctd_amt:'||x_run_chrg_acctd_amt);
2093     localdebug('  l_chrg_acctd_alloc:'||l_chrg_acctd_alloc);
2094     END IF;
2095     ELSIF ((p_group_level = 'D' AND x_tab.ELMT_CHRG_PRO_ACCTD_AMT(i) = 0 AND x_tab.BASE_CHRG_PRO_ACCTD_AMT(i) = 0 AND x_tab.buc_chrg_alloc_acctd_amt(i) <> 0)
2096 	  OR (x_tab.BASE_CHRG_PRO_ACCTD_AMT(i) = 0 AND (g_acctd_chrg_adj <> 0 OR g_acctd_chrg_applied <> 0) AND (x_tab.line_type(i) = 'CHARGES'))) THEN  -- Bug14415571
2097     IF PG_DEBUG = 'Y' THEN
2098     localdebug('  x_run_chrg_acctd_amt:'||x_run_chrg_acctd_amt);
2099     localdebug('  x_tab.ELMT_CHRG_PRO_ACCTD_AMT(i):'||x_tab.ELMT_CHRG_PRO_ACCTD_AMT(i));
2100     localdebug('  x_tab.buc_chrg_alloc_acctd_amt(i):'||x_tab.buc_chrg_alloc_acctd_amt(i));
2101     localdebug('  x_tab.BASE_CHRG_PRO_ACCTD_AMT(i):'||x_tab.BASE_CHRG_PRO_ACCTD_AMT(i));
2102     END IF;
2103     IF x_tab.buc_chrg_alloc_acctd_amt(i) <> 0 THEN
2104       l_chrg_acctd_alloc   :=  x_tab.buc_chrg_alloc_acctd_amt(i) - x_run_chrg_acctd_amt;
2105       x_tab.tl_chrg_alloc_acctd_amt(i) := l_chrg_acctd_alloc;
2106       x_run_chrg_acctd_amt := x_run_chrg_acctd_amt + l_chrg_acctd_alloc;
2107     ELSE  x_tab.tl_chrg_alloc_acctd_amt(i) := 0;
2108     END IF;
2109     IF PG_DEBUG = 'Y' THEN
2110     localdebug('  x_tab.tl_chrg_alloc_acctd_amt(i):'||x_tab.tl_chrg_alloc_acctd_amt(i));
2111     localdebug('  x_run_chrg_acctd_amt:'||x_run_chrg_acctd_amt);
2112     localdebug('  l_chrg_acctd_alloc:'||l_chrg_acctd_alloc);
2113     END IF;
2114     ELSE
2115       x_tab.tl_chrg_alloc_acctd_amt(i) := 0;
2116     END IF;
2117 
2118 
2119    /********************************
2120     -- ED
2121     ********************************/
2122    IF g_ed_req  = 'Y' THEN
2123       /*-------------------------------------------------+
2124        | Running Revenue amount in trx currency          |
2125        +-------------------------------------------------*/
2126 
2127       IF x_tab.base_ed_pro_amt(i) <> 0 AND x_tab.buc_ed_alloc_amt(i) <> 0 THEN
2128       IF PG_DEBUG = 'Y' THEN
2129       localdebug('  x_run_ed_amt:'||x_run_ed_amt);
2130       localdebug('  x_tab.elmt_ed_pro_amt(i):'||x_tab.elmt_ed_pro_amt(i));
2131       localdebug('  x_tab.buc_ed_alloc_amt(i):'||x_tab.buc_ed_alloc_amt(i));
2132       localdebug('  x_tab.base_ed_pro_amt(i):'||x_tab.base_ed_pro_amt(i));
2133       END IF;
2134         x_run_ed_amt := x_run_ed_amt + x_tab.elmt_ed_pro_amt(i);
2135         l_ed_alloc    := CurrRound(  x_run_ed_amt
2136                                  / x_tab.base_ed_pro_amt(i)
2137                                  * x_tab.buc_ed_alloc_amt(i),
2138                                    x_tab.to_currency(i))
2139                                - x_run_ed_alloc;
2140         -- MAJ proration_res_tbl.res_pro := l_alloc;
2141         x_tab.tl_ed_alloc_amt(i) := l_ed_alloc;
2142         x_run_ed_alloc := x_run_ed_alloc + l_ed_alloc;
2143       IF PG_DEBUG = 'Y' THEN
2144       localdebug('  x_tab.tl_ed_alloc_amt(i):'||x_tab.tl_ed_alloc_amt(i));
2145       localdebug('  x_run_ed_alloc:'||x_run_ed_alloc);
2146       localdebug('  l_ed_alloc:'||l_ed_alloc);
2147       END IF;
2148       ELSIF x_tab.base_ed_pro_amt(i) = 0 AND g_line_ed <> 0 AND x_tab.line_type(i) = 'LINE' THEN  -- Bug14415571
2149       IF PG_DEBUG = 'Y' THEN
2150       localdebug('  x_run_ed_amt:'||x_run_ed_amt);
2151       localdebug('  x_tab.elmt_ed_pro_amt(i):'||x_tab.elmt_ed_pro_amt(i));
2152       localdebug('  x_tab.buc_ed_alloc_amt(i):'||x_tab.buc_ed_alloc_amt(i));
2153       localdebug('  x_tab.base_ed_pro_amt(i):'||x_tab.base_ed_pro_amt(i));
2154       END IF;
2155       IF x_tab.buc_ed_alloc_amt(i) <> 0 THEN
2156         l_ed_alloc    := x_tab.buc_ed_alloc_amt(i) - x_run_ed_alloc;
2157 	x_tab.tl_ed_alloc_amt(i) := l_ed_alloc;
2158         x_run_ed_amt := x_run_ed_amt + l_ed_alloc;
2159       ELSE x_tab.tl_ed_alloc_amt(i) := 0;
2160       END IF;
2161       IF PG_DEBUG = 'Y' THEN
2162       localdebug('  x_tab.tl_ed_alloc_amt(i):'||x_tab.tl_ed_alloc_amt(i));
2163       localdebug('  x_run_ed_alloc:'||x_run_ed_alloc);
2164       localdebug('  l_ed_alloc:'||l_ed_alloc);
2165       END IF;
2166       ELSE
2167         x_tab.tl_ed_alloc_amt(i) := 0;
2168       END IF;
2169 
2170 
2171       /*-------------------------------------------------+
2172        | Running Revenue amount in base currency         |
2173        +-------------------------------------------------*/
2174       IF x_tab.base_ed_pro_acctd_amt(i) <> 0 AND x_tab.buc_ed_alloc_acctd_amt(i) <> 0 THEN
2175 	IF PG_DEBUG = 'Y' THEN
2176 	  localdebug('  x_run_ed_acctd_amt:'||x_run_ed_acctd_amt);
2177 	  localdebug('  x_tab.elmt_ed_pro_acctd_amt(i):'||x_tab.elmt_ed_pro_acctd_amt(i));
2178 	  localdebug('  x_tab.buc_ed_alloc_acctd_amt(i):'||x_tab.buc_ed_alloc_acctd_amt(i));
2179 	  localdebug('  x_tab.base_ed_pro_acctd_amt(i):'||x_tab.base_ed_pro_acctd_amt(i));
2180 	END IF;
2181         x_run_ed_acctd_amt := x_run_ed_acctd_amt + x_tab.elmt_ed_pro_acctd_amt(i);
2182         l_ed_acctd_alloc    := CurrRound(  x_run_ed_acctd_amt
2183                                  / x_tab.base_ed_pro_acctd_amt(i)
2184                                  * x_tab.buc_ed_alloc_acctd_amt(i),
2185                                    x_tab.base_currency(i))
2186                                - x_run_ed_acctd_alloc;
2187         -- MAJ proration_res_tbl.res_pro := l_alloc;
2188         x_tab.tl_ed_alloc_acctd_amt(i) := l_ed_acctd_alloc;
2189         x_run_ed_acctd_alloc := x_run_ed_acctd_alloc + l_ed_acctd_alloc;
2190 	IF PG_DEBUG = 'Y' THEN
2191 	  localdebug('  x_tab.tl_ed_alloc_acctd_amt(i):'||x_tab.tl_ed_alloc_acctd_amt(i));
2192 	  localdebug('  x_run_ed_acctd_alloc:'||x_run_ed_acctd_alloc);
2193 	  localdebug('  l_ed_acctd_alloc:'||l_ed_acctd_alloc);
2194 	END IF;
2195       ELSIF x_tab.base_ed_pro_acctd_amt(i) = 0 AND g_acctd_line_ed <> 0 AND x_tab.line_type(i) = 'LINE' THEN  -- Bug14415571
2196 	IF PG_DEBUG = 'Y' THEN
2197 	  localdebug('  x_run_ed_acctd_amt:'||x_run_ed_acctd_amt);
2198 	  localdebug('  x_tab.elmt_ed_pro_acctd_amt(i):'||x_tab.elmt_ed_pro_acctd_amt(i));
2199 	  localdebug('  x_tab.buc_ed_alloc_acctd_amt(i):'||x_tab.buc_ed_alloc_acctd_amt(i));
2200 	  localdebug('  x_tab.base_ed_pro_acctd_amt(i):'||x_tab.base_ed_pro_acctd_amt(i));
2201 	END IF;
2202 	IF x_tab.buc_ed_alloc_acctd_amt(i) <> 0 THEN
2203 	l_ed_acctd_alloc    := x_tab.buc_ed_alloc_acctd_amt(i) - x_run_ed_acctd_alloc;
2204 	x_tab.tl_ed_alloc_acctd_amt(i) := l_ed_acctd_alloc;
2205 	x_run_ed_acctd_amt := x_run_ed_acctd_amt + l_ed_acctd_alloc;
2206 	ELSE x_tab.tl_ed_alloc_acctd_amt(i) := 0;
2207 	END IF;
2208 	IF PG_DEBUG = 'Y' THEN
2209 	  localdebug('  x_tab.tl_ed_alloc_acctd_amt(i):'||x_tab.tl_ed_alloc_acctd_amt(i));
2210 	  localdebug('  x_run_ed_acctd_alloc:'||x_run_ed_acctd_alloc);
2211 	  localdebug('  l_ed_acctd_alloc:'||l_ed_acctd_alloc);
2212 	END IF;
2213       ELSE
2214         x_tab.tl_ed_alloc_acctd_amt(i) := 0;
2215       END IF;
2216 
2217 
2218 
2219       /*-------------------------------------------------+
2220        | Running tax amount in trx currency              |
2221        +-------------------------------------------------*/
2222 
2223       IF x_tab.BASE_ed_tax_PRO_AMT(i) <> 0 AND x_tab.buc_ed_tax_alloc_amt(i) <> 0 THEN
2224       IF PG_DEBUG = 'Y' THEN
2225       localdebug('  x_run_ed_tax_amt:'||x_run_ed_tax_amt);
2226       localdebug('  x_tab.ELMT_ed_tax_PRO_AMT(i):'||x_tab.ELMT_ed_tax_PRO_AMT(i));
2227       localdebug('  x_tab.buc_ed_tax_alloc_amt(i):'||x_tab.buc_ed_tax_alloc_amt(i));
2228       localdebug('  x_tab.BASE_ed_tax_PRO_AMT(i):'||x_tab.BASE_ed_tax_PRO_AMT(i));
2229       END IF;
2230         x_run_ed_tax_amt := x_run_ed_tax_amt + x_tab.ELMT_ed_tax_PRO_AMT(i);
2231         l_ed_tax_alloc    := CurrRound(  x_run_ed_tax_amt
2232                                  / x_tab.BASE_ed_tax_PRO_AMT(i)
2233                                  * x_tab.buc_ed_tax_alloc_amt(i),
2234                                    x_tab.to_currency(i))
2235                                - x_run_ed_tax_alloc;
2236         x_tab.tl_ed_tax_alloc_amt(i) := l_ed_tax_alloc;
2237         x_run_ed_tax_alloc := x_run_ed_tax_alloc + l_ed_tax_alloc;
2238       IF PG_DEBUG = 'Y' THEN
2239       localdebug('  x_tab.tl_ed_tax_alloc_amt(i):'||x_tab.tl_ed_tax_alloc_amt(i));
2240       localdebug('  x_run_ed_tax_alloc:'||x_run_ed_tax_alloc);
2241       localdebug('  l_ed_tax_alloc:'||l_ed_tax_alloc);
2242       END IF;
2243       ELSIF x_tab.BASE_ed_tax_PRO_AMT(i) = 0 AND g_tax_ed <> 0 AND x_tab.line_type(i) = 'TAX' THEN  -- Bug14415571
2244       IF PG_DEBUG = 'Y' THEN
2245       localdebug('  x_run_ed_tax_amt:'||x_run_ed_tax_amt);
2246       localdebug('  x_tab.ELMT_ed_tax_PRO_AMT(i):'||x_tab.ELMT_ed_tax_PRO_AMT(i));
2247       localdebug('  x_tab.buc_ed_tax_alloc_amt(i):'||x_tab.buc_ed_tax_alloc_amt(i));
2248       localdebug('  x_tab.BASE_ed_tax_PRO_AMT(i):'||x_tab.BASE_ed_tax_PRO_AMT(i));
2249       END IF;
2250       IF x_tab.buc_ed_tax_alloc_amt(i) <> 0 THEN
2251         l_ed_tax_alloc     := x_tab.buc_ed_tax_alloc_amt(i) - x_run_ed_tax_alloc;
2252         x_tab.tl_ed_tax_alloc_amt(i) := l_ed_tax_alloc;
2253         x_run_ed_tax_amt := x_run_ed_tax_amt + l_ed_tax_alloc;
2254       ELSE  x_tab.tl_ed_tax_alloc_amt(i) := 0;
2255       END IF;
2256       IF PG_DEBUG = 'Y' THEN
2257       localdebug('  x_tab.tl_ed_tax_alloc_amt(i):'||x_tab.tl_ed_tax_alloc_amt(i));
2258       localdebug('  x_run_ed_tax_alloc:'||x_run_ed_tax_alloc);
2259       localdebug('  l_ed_tax_alloc:'||l_ed_tax_alloc);
2260       END IF;
2261       ELSE
2262         x_tab.tl_ed_tax_alloc_amt(i) := 0;
2263       END IF;
2264 
2265 
2266       /*-------------------------------------------------+
2267        | Running tax acctd amount in trx currency        |
2268        +-------------------------------------------------*/
2269       IF x_tab.BASE_ed_tax_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_ed_tax_alloc_acctd_amt(i) <> 0 THEN
2270 	IF PG_DEBUG = 'Y' THEN
2271 	  localdebug('  x_run_ed_tax_acctd_amt:'||x_run_ed_tax_acctd_amt);
2272 	  localdebug('  x_tab.ELMT_ed_tax_PRO_ACCTD_AMT(i):'||x_tab.ELMT_ed_tax_PRO_ACCTD_AMT(i));
2273 	  localdebug('  x_tab.buc_ed_tax_alloc_acctd_amt(i):'||x_tab.buc_ed_tax_alloc_acctd_amt(i));
2274 	  localdebug('  x_tab.BASE_ed_tax_PRO_ACCTD_AMT(i):'||x_tab.BASE_ed_tax_PRO_ACCTD_AMT(i));
2275 	END IF;
2276         x_run_ed_tax_acctd_amt := x_run_ed_tax_acctd_amt + x_tab.ELMT_ed_tax_PRO_ACCTD_AMT(i);
2277         l_ed_tax_acctd_alloc    := CurrRound(  x_run_ed_tax_acctd_amt
2278                                  / x_tab.BASE_ed_tax_PRO_ACCTD_AMT(i)
2279                                  * x_tab.buc_ed_tax_alloc_acctd_amt(i),
2280                                    x_tab.base_currency(i))
2281                                - x_run_ed_tax_acctd_alloc;
2282         x_tab.tl_ed_tax_alloc_acctd_amt(i) := l_ed_tax_acctd_alloc;
2283         x_run_ed_tax_acctd_alloc := x_run_ed_tax_acctd_alloc + l_ed_tax_acctd_alloc;
2284 	IF PG_DEBUG = 'Y' THEN
2285 	  localdebug('  x_tab.tl_ed_tax_alloc_acctd_amt(i):'||x_tab.tl_ed_tax_alloc_acctd_amt(i));
2286 	  localdebug('  x_run_ed_tax_acctd_alloc:'||x_run_ed_tax_acctd_alloc);
2287 	  localdebug('  l_ed_tax_acctd_alloc:'||l_ed_tax_acctd_alloc);
2288 	END IF;
2289       ELSIF x_tab.BASE_ed_tax_PRO_ACCTD_AMT(i) = 0 AND g_acctd_tax_ed <> 0 AND x_tab.line_type(i) = 'TAX' THEN  -- Bug14415571
2290         IF PG_DEBUG = 'Y' THEN
2291 	  localdebug('  x_run_ed_tax_acctd_amt:'||x_run_ed_tax_acctd_amt);
2292 	  localdebug('  x_tab.ELMT_ed_tax_PRO_ACCTD_AMT(i):'||x_tab.ELMT_ed_tax_PRO_ACCTD_AMT(i));
2293 	  localdebug('  x_tab.buc_ed_tax_alloc_acctd_amt(i):'||x_tab.buc_ed_tax_alloc_acctd_amt(i));
2294 	  localdebug('  x_tab.BASE_ed_tax_PRO_ACCTD_AMT(i):'||x_tab.BASE_ed_tax_PRO_ACCTD_AMT(i));
2295 	END IF;
2296 	IF x_tab.buc_ed_tax_alloc_acctd_amt(i) <> 0 THEN
2297 	    l_ed_tax_acctd_alloc    := x_tab.buc_ed_tax_alloc_acctd_amt(i) - x_run_ed_tax_acctd_alloc;
2298 	    x_tab.tl_ed_tax_alloc_acctd_amt(i) := l_ed_tax_acctd_alloc;
2299             x_run_ed_tax_acctd_amt := x_run_ed_tax_acctd_amt + l_ed_tax_acctd_alloc;
2300 	ELSE x_tab.tl_ed_tax_alloc_acctd_amt(i) := 0;
2301 	END IF;
2302 	IF PG_DEBUG = 'Y' THEN
2303 	  localdebug('  x_tab.tl_ed_tax_alloc_acctd_amt(i):'||x_tab.tl_ed_tax_alloc_acctd_amt(i));
2304 	  localdebug('  x_run_ed_tax_acctd_alloc:'||x_run_ed_tax_acctd_alloc);
2305 	  localdebug('  l_ed_tax_acctd_alloc:'||l_ed_tax_acctd_alloc);
2306 	END IF;
2307       ELSE
2308         x_tab.tl_ed_tax_alloc_acctd_amt(i) := 0;
2309       END IF;
2310 
2311       /*-------------------------------------------------+
2312        | Running frt amount in trx currency              |
2313        +-------------------------------------------------*/
2314 
2315       IF x_tab.BASE_ed_FRT_PRO_AMT(i) <> 0 AND x_tab.buc_ed_frt_alloc_amt(i) <> 0 THEN
2316       IF PG_DEBUG = 'Y' THEN
2317       localdebug('  x_run_ed_frt_amt:'||x_run_ed_frt_amt);
2318       localdebug('  x_tab.ELMT_ed_FRT_PRO_AMT(i):'||x_tab.ELMT_ed_FRT_PRO_AMT(i));
2319       localdebug('  x_tab.buc_ed_frt_alloc_amt(i):'||x_tab.buc_ed_frt_alloc_amt(i));
2320       localdebug('  x_tab.BASE_ed_FRT_PRO_AMT(i):'||x_tab.BASE_ed_FRT_PRO_AMT(i));
2321       END IF;
2322         x_run_ed_frt_amt := x_run_ed_frt_amt + x_tab.ELMT_ed_FRT_PRO_AMT(i);
2323         l_ed_frt_alloc    := CurrRound(  x_run_ed_frt_amt
2324                                  / x_tab.BASE_ed_frt_PRO_AMT(i)
2325                                  * x_tab.buc_ed_frt_alloc_amt(i),
2326                                    x_tab.to_currency(i))
2327                                - x_run_ed_frt_alloc;
2328         x_tab.tl_ed_frt_alloc_amt(i) := l_ed_frt_alloc;
2329         x_run_ed_frt_alloc := x_run_ed_frt_alloc + l_ed_frt_alloc;
2330       IF PG_DEBUG = 'Y' THEN
2331       localdebug('  x_tab.tl_ed_frt_alloc_amt(i):'||x_tab.tl_ed_frt_alloc_amt(i));
2332       localdebug('  x_run_ed_frt_alloc:'||x_run_ed_frt_alloc);
2333       localdebug('  l_ed_frt_alloc:'||l_ed_frt_alloc);
2334       END IF;
2335       ELSIF x_tab.BASE_ed_FRT_PRO_AMT(i) = 0 AND g_frt_ed <> 0 AND x_tab.line_type(i) = 'FREIGHT' THEN  -- Bug14415571
2336       IF PG_DEBUG = 'Y' THEN
2337       localdebug('  x_run_ed_frt_amt:'||x_run_ed_frt_amt);
2338       localdebug('  x_tab.ELMT_ed_FRT_PRO_AMT(i):'||x_tab.ELMT_ed_FRT_PRO_AMT(i));
2339       localdebug('  x_tab.buc_ed_frt_alloc_amt(i):'||x_tab.buc_ed_frt_alloc_amt(i));
2340       localdebug('  x_tab.BASE_ed_FRT_PRO_AMT(i):'||x_tab.BASE_ed_FRT_PRO_AMT(i));
2341       END IF;
2342       IF x_tab.buc_ed_frt_alloc_amt(i) <> 0 THEN
2343         l_ed_frt_alloc    := x_tab.buc_ed_frt_alloc_amt(i) - x_run_ed_frt_alloc;
2344 	x_tab.tl_ed_frt_alloc_amt(i) := l_ed_frt_alloc;
2345 	x_run_ed_frt_amt := x_run_ed_frt_amt + l_ed_frt_alloc;
2346       ELSE x_tab.tl_ed_frt_alloc_amt(i) := 0;
2347       END IF;
2348       IF PG_DEBUG = 'Y' THEN
2349       localdebug('  x_tab.tl_ed_frt_alloc_amt(i):'||x_tab.tl_ed_frt_alloc_amt(i));
2350       localdebug('  x_run_ed_frt_alloc:'||x_run_ed_frt_alloc);
2351       localdebug('  l_ed_frt_alloc:'||l_ed_frt_alloc);
2352       END IF;
2353       ELSE
2354         x_tab.tl_ed_frt_alloc_amt(i) := 0;
2355       END IF;
2356 
2357 
2358       /*-------------------------------------------------+
2359        | Running frt acctd amount in trx currency        |
2360        +-------------------------------------------------*/
2361       IF x_tab.BASE_ed_FRT_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_ed_frt_alloc_acctd_amt(i) <> 0 THEN
2362         x_run_ed_frt_acctd_amt := x_run_ed_frt_acctd_amt + x_tab.ELMT_ed_FRT_PRO_ACCTD_AMT(i);
2363         l_ed_frt_acctd_alloc    := CurrRound(  x_run_ed_frt_acctd_amt
2364                                  / x_tab.BASE_ed_FRT_PRO_ACCTD_AMT(i)
2365                                  * x_tab.buc_ed_frt_alloc_acctd_amt(i),
2366                                    x_tab.base_currency(i))
2367                                - x_run_ed_frt_acctd_alloc;
2368         x_tab.tl_ed_frt_alloc_acctd_amt(i) := l_ed_frt_acctd_alloc;
2369         x_run_ed_frt_acctd_alloc := x_run_ed_frt_acctd_alloc + l_ed_frt_acctd_alloc;
2370       ELSIF x_tab.BASE_ed_FRT_PRO_ACCTD_AMT(i) = 0 AND g_acctd_frt_ed <> 0 AND x_tab.line_type(i) = 'FREIGHT' THEN  -- Bug14415571
2371       IF PG_DEBUG = 'Y' THEN
2372       localdebug('  x_run_ed_frt_acctd_amt:'||x_run_ed_frt_acctd_amt);
2373       localdebug('  x_tab.ELMT_ed_FRT_PRO_ACCTD_AMT(i):'||x_tab.ELMT_ed_FRT_PRO_ACCTD_AMT(i));
2374       localdebug('  x_tab.buc_ed_frt_alloc_acctd_amt(i):'||x_tab.buc_ed_frt_alloc_acctd_amt(i));
2375       localdebug('  x_tab.BASE_ed_FRT_PRO_ACCTD_AMT(i):'||x_tab.BASE_ed_FRT_PRO_ACCTD_AMT(i));
2376       END IF;
2377       IF x_tab.buc_ed_frt_alloc_acctd_amt(i) <> 0 THEN
2378         l_ed_frt_acctd_alloc    := x_tab.buc_ed_frt_alloc_acctd_amt(i) - x_run_ed_frt_acctd_alloc;
2379 	x_tab.tl_ed_frt_alloc_acctd_amt(i) := l_ed_frt_acctd_alloc;
2380 	x_run_ed_frt_acctd_amt := x_run_ed_frt_acctd_amt + l_ed_frt_acctd_alloc;
2381       ELSE x_tab.tl_ed_frt_alloc_acctd_amt(i) := 0;
2382       END IF;
2383       IF PG_DEBUG = 'Y' THEN
2384       localdebug('  x_tab.tl_ed_frt_alloc_acctd_amt(i):'||x_tab.tl_ed_frt_alloc_acctd_amt(i));
2385       localdebug('  x_run_ed_frt_acctd_amt:'||x_run_ed_frt_acctd_amt);
2386       localdebug('  l_ed_frt_acctd_alloc:'||l_ed_frt_acctd_alloc);
2387       END IF;
2388       ELSE
2389         x_tab.tl_ed_frt_alloc_acctd_amt(i) := 0;
2390       END IF;
2391 
2392       /*-------------------------------------------------+
2393        | Running chrg amount in trx currency             |
2394        +-------------------------------------------------*/
2395 
2396       IF x_tab.BASE_ed_CHRG_PRO_AMT(i) <> 0 AND x_tab.buc_ed_chrg_alloc_amt(i) <> 0 THEN
2397       IF PG_DEBUG = 'Y' THEN
2398       localdebug('  x_run_ed_chrg_amt:'||x_run_ed_chrg_amt);
2399       localdebug('  x_tab.ELMT_ed_CHRG_PRO_AMT(i):'||x_tab.ELMT_ed_CHRG_PRO_AMT(i));
2400       localdebug('  x_tab.buc_ed_chrg_alloc_amt(i):'||x_tab.buc_ed_chrg_alloc_amt(i));
2401       localdebug('  x_tab.BASE_ed_CHRG_PRO_AMT(i):'||x_tab.BASE_ed_CHRG_PRO_AMT(i));
2402       END IF;
2403         x_run_ed_chrg_amt := x_run_ed_chrg_amt + x_tab.ELMT_ed_CHRG_PRO_AMT(i);
2404         l_ed_chrg_alloc    := CurrRound(  x_run_ed_chrg_amt
2405                                  / x_tab.BASE_ed_CHRG_PRO_AMT(i)
2406                                  * x_tab.buc_ed_chrg_alloc_amt(i),
2407                                    x_tab.to_currency(i))
2408                                - x_run_ed_chrg_alloc;
2409         x_tab.tl_ed_chrg_alloc_amt(i) := l_ed_chrg_alloc;
2410         x_run_ed_chrg_alloc := x_run_ed_chrg_alloc + l_ed_chrg_alloc;
2411       IF PG_DEBUG = 'Y' THEN
2412       localdebug('  x_tab.tl_ed_chrg_alloc_amt(i):'||x_tab.tl_ed_chrg_alloc_amt(i));
2413       localdebug('  x_run_ed_chrg_alloc:'||x_run_ed_chrg_alloc);
2414       localdebug('  l_ed_chrg_alloc:'||l_ed_chrg_alloc);
2415       END IF;
2416       ELSIF x_tab.BASE_ed_CHRG_PRO_AMT(i) = 0 AND g_chrg_ed <> 0 AND x_tab.line_type(i) = 'CHARGES' THEN  -- Bug14415571
2417       IF PG_DEBUG = 'Y' THEN
2418       localdebug('  x_run_ed_chrg_amt:'||x_run_ed_chrg_amt);
2419       localdebug('  x_tab.ELMT_ed_CHRG_PRO_AMT(i):'||x_tab.ELMT_ed_CHRG_PRO_AMT(i));
2420       localdebug('  x_tab.buc_ed_chrg_alloc_amt(i):'||x_tab.buc_ed_chrg_alloc_amt(i));
2421       localdebug('  x_tab.BASE_ed_CHRG_PRO_AMT(i):'||x_tab.BASE_ed_CHRG_PRO_AMT(i));
2422       END IF;
2423       IF x_tab.buc_ed_chrg_alloc_amt(i) <> 0 THEN
2424         l_ed_chrg_alloc    := x_tab.buc_ed_chrg_alloc_amt(i) - x_run_ed_chrg_alloc;
2425 	x_tab.tl_ed_chrg_alloc_amt(i) := l_ed_chrg_alloc;
2426 	x_run_ed_chrg_amt := x_run_ed_chrg_amt + l_ed_chrg_alloc;
2427       ELSE x_tab.tl_ed_chrg_alloc_amt(i) := 0;
2428       END IF;
2429       IF PG_DEBUG = 'Y' THEN
2430       localdebug('  x_tab.tl_ed_chrg_alloc_amt(i):'||x_tab.tl_ed_chrg_alloc_amt(i));
2431       localdebug('  x_run_ed_chrg_alloc:'||x_run_ed_chrg_alloc);
2432       localdebug('  l_ed_chrg_alloc:'||l_ed_chrg_alloc);
2433       END IF;
2434       ELSE
2435         x_tab.tl_ed_chrg_alloc_amt(i) := 0;
2436       END IF;
2437 
2438 
2439       /*-------------------------------------------------+
2440        | Running chrg acctd amount in trx currency       |
2441        +-------------------------------------------------*/
2442       IF x_tab.BASE_ed_CHRG_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_ed_chrg_alloc_acctd_amt(i) <> 0 THEN
2443         x_run_ed_chrg_acctd_amt := x_run_ed_chrg_acctd_amt + x_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT(i);
2444         l_ed_chrg_acctd_alloc    := CurrRound(  x_run_ed_chrg_acctd_amt
2445                                  / x_tab.BASE_ed_CHRG_PRO_ACCTD_AMT(i)
2446                                  * x_tab.buc_ed_chrg_alloc_acctd_amt(i),
2447                                    x_tab.base_currency(i))
2448                                - x_run_ed_chrg_acctd_alloc;
2449         x_tab.tl_ed_chrg_alloc_acctd_amt(i) := l_ed_chrg_acctd_alloc;
2450         x_run_ed_chrg_acctd_alloc := x_run_ed_chrg_acctd_alloc + l_ed_chrg_acctd_alloc;
2451       ELSIF x_tab.BASE_ed_CHRG_PRO_ACCTD_AMT(i) = 0 AND g_acctd_chrg_ed <> 0 AND x_tab.line_type(i) = 'CHARGES' THEN  -- Bug14415571
2452       IF PG_DEBUG = 'Y' THEN
2453         localdebug('  x_run_ed_chrg_acctd_amt:'||x_run_ed_chrg_acctd_amt);
2454         localdebug('  x_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT(i):'||x_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT(i));
2455         localdebug('  x_tab.buc_ed_chrg_alloc_acctd_amt(i):'||x_tab.buc_ed_chrg_alloc_acctd_amt(i));
2456         localdebug('  x_tab.BASE_ed_CHRG_PRO_ACCTD_AMT(i):'||x_tab.BASE_ed_CHRG_PRO_ACCTD_AMT(i));
2457         END IF;
2458 	IF x_tab.buc_ed_chrg_alloc_acctd_amt(i) <> 0 THEN
2459         l_ed_chrg_acctd_alloc    := x_tab.buc_ed_chrg_alloc_acctd_amt(i) - x_run_ed_chrg_acctd_alloc;
2460 	x_tab.tl_ed_chrg_alloc_acctd_amt(i) := l_ed_chrg_acctd_alloc;
2461 	x_run_ed_chrg_acctd_amt := x_run_ed_chrg_acctd_amt + l_ed_chrg_acctd_alloc;
2462 	ELSE x_tab.tl_ed_chrg_alloc_acctd_amt(i) := 0;
2463 	END IF;
2464 	IF PG_DEBUG = 'Y' THEN
2465         localdebug('  x_tab.tl_ed_chrg_alloc_acctd_amt(i):'||x_tab.tl_ed_chrg_alloc_acctd_amt(i));
2466         localdebug('  x_run_ed_chrg_acctd_amt:'||x_run_ed_chrg_acctd_amt);
2467         localdebug('  l_ed_chrg_acctd_alloc:'||l_ed_chrg_acctd_alloc);
2468         END IF;
2469       ELSE
2470         x_tab.tl_ed_chrg_alloc_acctd_amt(i) := 0;
2471       END IF;
2472 
2473     ELSE
2474 
2475       x_tab.tl_ed_alloc_amt(i) := 0;
2476       x_tab.tl_ed_alloc_acctd_amt(i) := 0;
2477       x_tab.tl_ed_tax_alloc_amt(i) := 0;
2478       x_tab.tl_ed_tax_alloc_acctd_amt(i) := 0;
2479       x_tab.tl_ed_frt_alloc_amt(i) := 0;
2480       x_tab.tl_ed_frt_alloc_acctd_amt(i) := 0;
2481       x_tab.tl_ed_chrg_alloc_amt(i) := 0;
2482       x_tab.tl_ed_chrg_alloc_acctd_amt(i) := 0;
2483 
2484     END IF;
2485 
2486     /********************************
2487     -- UNED
2488     ********************************/
2489     IF g_uned_req = 'Y' THEN
2490       /*-------------------------------------------------+
2491        | Running revenue in trx currency                 |
2492        +-------------------------------------------------*/
2493       IF PG_DEBUG = 'Y' THEN
2494       localdebug('  x_run_uned_amt:'||x_run_uned_amt);
2495       localdebug('  x_tab.elmt_uned_pro_amt(i):'||x_tab.elmt_uned_pro_amt(i));
2496       localdebug('  x_tab.buc_uned_alloc_amt(i):'||x_tab.buc_uned_alloc_amt(i));
2497       localdebug('  x_tab.base_uned_pro_amt(i):'||x_tab.base_uned_pro_amt(i));
2498       END IF;
2499 
2500       IF x_tab.base_uned_pro_amt(i) <> 0 AND x_tab.buc_uned_alloc_amt(i) <> 0 THEN
2501         x_run_uned_amt := x_run_uned_amt + x_tab.elmt_uned_pro_amt(i);
2502         l_uned_alloc    := CurrRound(  x_run_uned_amt
2503                                  / x_tab.base_uned_pro_amt(i)
2504                                  * x_tab.buc_uned_alloc_amt(i),
2505                                    x_tab.to_currency(i))
2506                                - x_run_uned_alloc;
2507         -- MAJ proration_res_tbl.res_pro := l_alloc;
2508         x_tab.tl_uned_alloc_amt(i) := l_uned_alloc;
2509         x_run_uned_alloc := x_run_uned_alloc + l_uned_alloc;
2510       ELSIF x_tab.base_uned_pro_amt(i) = 0 AND g_line_uned <> 0 AND x_tab.line_type(i) = 'LINE' THEN  -- Bug14415571
2511       IF PG_DEBUG = 'Y' THEN
2512       localdebug('  x_run_uned_amt:'||x_run_uned_amt);
2513       localdebug('  x_tab.elmt_uned_pro_amt(i):'||x_tab.elmt_uned_pro_amt(i));
2514       localdebug('  x_tab.buc_uned_alloc_amt(i):'||x_tab.buc_uned_alloc_amt(i));
2515       localdebug('  x_tab.base_uned_pro_amt(i):'||x_tab.base_uned_pro_amt(i));
2516       END IF;
2517      	 IF x_tab.buc_uned_alloc_amt(i) <> 0 THEN
2518       	   l_uned_alloc    := x_tab.buc_uned_alloc_amt(i) - x_run_uned_alloc;
2519            x_tab.tl_uned_alloc_amt(i) := l_uned_alloc;
2520 	   x_run_uned_amt := x_run_uned_amt + l_uned_alloc;
2521 	 ELSE   x_tab.tl_uned_alloc_amt(i) := 0;
2522 	 END IF;
2523       IF PG_DEBUG = 'Y' THEN
2524       localdebug('  x_tab.tl_uned_alloc_amt(i):'||x_tab.tl_uned_alloc_amt(i));
2525       localdebug('  x_run_uned_amt:'||x_run_uned_amt);
2526       localdebug('  l_uned_alloc:'||l_uned_alloc);
2527       END IF;
2528       ELSE
2529         x_tab.tl_uned_alloc_amt(i) := 0;
2530       END IF;
2531 
2532       IF PG_DEBUG = 'Y' THEN
2533       localdebug('  x_tab.tl_uned_alloc_amt(i):'||x_tab.tl_uned_alloc_amt(i));
2534       localdebug('  x_run_uned_alloc:'||x_run_uned_alloc);
2535       localdebug('  l_uned_alloc:'||l_uned_alloc);
2536       END IF;
2537 
2538       /*-------------------------------------------------+
2539        | Running revenue in base currency                |
2540        +-------------------------------------------------*/
2541       IF x_tab.base_uned_pro_acctd_amt(i) <> 0 AND x_tab.buc_uned_alloc_acctd_amt(i) <> 0 THEN
2542         x_run_uned_acctd_amt := x_run_uned_acctd_amt + x_tab.elmt_uned_pro_acctd_amt(i);
2543         l_uned_acctd_alloc    := CurrRound(  x_run_uned_acctd_amt
2544                                  / x_tab.base_uned_pro_acctd_amt(i)
2545                                  * x_tab.buc_uned_alloc_acctd_amt(i),
2546                                    x_tab.base_currency(i))
2547                                - x_run_uned_acctd_alloc;
2548         -- MAJ proration_res_tbl.res_pro := l_alloc;
2549         x_tab.tl_uned_alloc_acctd_amt(i) := l_uned_acctd_alloc;
2550         x_run_uned_acctd_alloc := x_run_uned_acctd_alloc + l_uned_acctd_alloc;
2551       ELSIF x_tab.base_uned_pro_acctd_amt(i) = 0 AND g_acctd_line_uned <> 0 AND x_tab.line_type(i) = 'LINE' THEN  -- Bug14415571
2552       IF PG_DEBUG = 'Y' THEN
2553       localdebug('  x_run_uned_acctd_amt:'||x_run_uned_acctd_amt);
2554       localdebug('  x_tab.elmt_uned_pro_acctd_amt(i):'||x_tab.elmt_uned_pro_acctd_amt(i));
2555       localdebug('  x_tab.buc_uned_alloc_acctd_amt(i):'||x_tab.buc_uned_alloc_acctd_amt(i));
2556       localdebug('  x_tab.base_uned_pro_acctd_amt(i):'||x_tab.base_uned_pro_acctd_amt(i));
2557       END IF;
2558       IF x_tab.buc_uned_alloc_acctd_amt(i) <> 0 THEN
2559         l_uned_acctd_alloc    := x_tab.buc_uned_alloc_acctd_amt(i) - x_run_uned_acctd_alloc;
2560 	x_tab.tl_uned_alloc_acctd_amt(i) := l_uned_acctd_alloc;
2561 	x_run_uned_acctd_amt := x_run_uned_acctd_amt + l_uned_acctd_alloc;
2562       ELSE x_tab.tl_uned_alloc_acctd_amt(i) := 0;
2563       END IF;
2564       IF PG_DEBUG = 'Y' THEN
2565       localdebug('  x_tab.tl_uned_alloc_acctd_amt(i):'||x_tab.tl_uned_alloc_acctd_amt(i));
2566       localdebug('  x_run_uned_acctd_amt:'||x_run_uned_acctd_amt);
2567       localdebug('  l_uned_acctd_alloc:'||l_uned_acctd_alloc);
2568       END IF;
2569       ELSE
2570         x_tab.tl_uned_alloc_acctd_amt(i) := 0;
2571       END IF;
2572 
2573 
2574 
2575       /*-------------------------------------------------+
2576        | Running tax amount in trx currency              |
2577        +-------------------------------------------------*/
2578       IF PG_DEBUG = 'Y' THEN
2579       localdebug('  x_run_uned_tax_amt:'||x_run_uned_tax_amt);
2580       localdebug('  x_tab.ELMT_uned_tax_PRO_AMT(i):'||x_tab.ELMT_uned_tax_PRO_AMT(i));
2581       localdebug('  x_tab.buc_uned_tax_alloc_amt(i):'||x_tab.buc_uned_tax_alloc_amt(i));
2582       localdebug('  x_tab.BASE_uned_tax_PRO_AMT(i):'||x_tab.BASE_uned_tax_PRO_AMT(i));
2583       END IF;
2584 
2585       IF x_tab.BASE_uned_tax_PRO_AMT(i) <> 0 AND x_tab.buc_uned_tax_alloc_amt(i) <> 0 THEN
2586         x_run_uned_tax_amt := x_run_uned_tax_amt + x_tab.ELMT_uned_tax_PRO_AMT(i);
2587         l_uned_tax_alloc    := CurrRound(  x_run_uned_tax_amt
2588                                  / x_tab.BASE_uned_tax_PRO_AMT(i)
2589                                  * x_tab.buc_uned_tax_alloc_amt(i),
2590                                    x_tab.to_currency(i))
2591                                - x_run_uned_tax_alloc;
2592         x_tab.tl_uned_tax_alloc_amt(i) := l_uned_tax_alloc;
2593         x_run_uned_tax_alloc := x_run_uned_tax_alloc + l_uned_tax_alloc;
2594       ELSIF x_tab.BASE_uned_tax_PRO_AMT(i) = 0 AND g_tax_uned <> 0 AND x_tab.line_type(i) = 'TAX' THEN  -- Bug14415571
2595       IF PG_DEBUG = 'Y' THEN
2596       localdebug('  x_run_uned_tax_amt:'||x_run_uned_tax_amt);
2597       localdebug('  x_tab.ELMT_uned_tax_PRO_AMT(i):'||x_tab.ELMT_uned_tax_PRO_AMT(i));
2598       localdebug('  x_tab.buc_uned_tax_alloc_amt(i):'||x_tab.buc_uned_tax_alloc_amt(i));
2599       localdebug('  x_tab.BASE_uned_tax_PRO_AMT(i):'||x_tab.BASE_uned_tax_PRO_AMT(i));
2600       END IF;
2601       IF x_tab.buc_uned_tax_alloc_amt(i) <> 0 THEN
2602         l_uned_tax_alloc    := x_tab.buc_uned_tax_alloc_amt(i) - x_run_uned_tax_alloc;
2603 	x_tab.tl_uned_tax_alloc_amt(i) := l_uned_tax_alloc;
2604 	x_run_uned_tax_amt := x_run_uned_tax_amt + l_uned_tax_alloc;
2605 	ELSE x_tab.tl_uned_tax_alloc_amt(i) := 0;
2606       END IF;
2607       IF PG_DEBUG = 'Y' THEN
2608       localdebug('  x_tab.tl_uned_tax_alloc_amt(i):'||x_tab.tl_uned_tax_alloc_amt(i));
2609       localdebug('  x_run_uned_tax_amt:'||x_run_uned_tax_amt);
2610       localdebug('  l_uned_tax_alloc:'||l_uned_tax_alloc);
2611       END IF;
2612       ELSE
2613         x_tab.tl_uned_tax_alloc_amt(i) := 0;
2614       END IF;
2615 
2616       IF PG_DEBUG = 'Y' THEN
2617       localdebug('  x_tab.tl_uned_tax_alloc_amt(i):'||x_tab.tl_uned_tax_alloc_amt(i));
2618       localdebug('  x_run_uned_tax_alloc:'||x_run_uned_tax_alloc);
2619       localdebug('  l_uned_tax_alloc:'||l_uned_tax_alloc);
2620       END IF;
2621 
2622       /*-------------------------------------------------+
2623        | Running tax acctd amount in trx currency        |
2624        +-------------------------------------------------*/
2625       IF x_tab.BASE_uned_tax_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_uned_tax_alloc_acctd_amt(i) <> 0 THEN
2626         x_run_uned_tax_acctd_amt := x_run_uned_tax_acctd_amt + x_tab.ELMT_uned_tax_PRO_ACCTD_AMT(i);
2627         l_uned_tax_acctd_alloc    := CurrRound(  x_run_uned_tax_acctd_amt
2628                                  / x_tab.BASE_uned_tax_PRO_ACCTD_AMT(i)
2629                                  * x_tab.buc_uned_tax_alloc_acctd_amt(i),
2630                                    x_tab.base_currency(i))
2631                                - x_run_uned_tax_acctd_alloc;
2632         x_tab.tl_uned_tax_alloc_acctd_amt(i) := l_uned_tax_acctd_alloc;
2633         x_run_uned_tax_acctd_alloc := x_run_uned_tax_acctd_alloc + l_uned_tax_acctd_alloc;
2634       ELSIF x_tab.BASE_uned_tax_PRO_ACCTD_AMT(i) = 0 AND g_acctd_tax_uned <> 0 AND x_tab.line_type(i) = 'TAX' THEN  -- Bug14415571
2635       IF PG_DEBUG = 'Y' THEN
2636       localdebug('  x_run_uned_tax_acctd_amt:'||x_run_uned_tax_acctd_amt);
2637       localdebug('  x_tab.ELMT_uned_tax_PRO_ACCTD_AMT(i):'||x_tab.ELMT_uned_tax_PRO_ACCTD_AMT(i));
2638       localdebug('  x_tab.buc_uned_tax_alloc_acctd_amt(i):'||x_tab.buc_uned_tax_alloc_acctd_amt(i));
2639       localdebug('  x_tab.BASE_uned_tax_PRO_ACCTD_AMT(i):'||x_tab.BASE_uned_tax_PRO_ACCTD_AMT(i));
2640       END IF;
2641       IF x_tab.buc_uned_tax_alloc_acctd_amt(i) <> 0 THEN
2642         l_uned_tax_acctd_alloc    := x_tab.buc_uned_tax_alloc_acctd_amt(i) - x_run_uned_tax_acctd_alloc;
2643 	x_tab.tl_uned_tax_alloc_acctd_amt(i) := l_uned_tax_acctd_alloc;
2644 	x_run_uned_tax_acctd_amt := x_run_uned_tax_acctd_amt + l_uned_tax_acctd_alloc;
2645       ELSE x_tab.tl_uned_tax_alloc_acctd_amt(i) := 0;
2646       END IF;
2647        IF PG_DEBUG = 'Y' THEN
2648       localdebug('  x_tab.tl_uned_tax_alloc_acctd_amt(i):'||x_tab.tl_uned_tax_alloc_acctd_amt(i));
2649       localdebug('  x_run_uned_tax_acctd_amt:'||x_run_uned_tax_acctd_amt);
2650       localdebug('  l_uned_tax_acctd_alloc:'||l_uned_tax_acctd_alloc);
2651       END IF;
2652       ELSE
2653         x_tab.tl_uned_tax_alloc_acctd_amt(i) := 0;
2654       END IF;
2655 
2656 
2657       /*-------------------------------------------------+
2658        | Running frt amount in trx currency              |
2659        +-------------------------------------------------*/
2660       IF PG_DEBUG = 'Y' THEN
2661       localdebug('  x_run_uned_frt_amt:'||x_run_uned_frt_amt);
2662       localdebug('  x_tab.ELMT_uned_frt_PRO_AMT(i):'||x_tab.ELMT_uned_frt_PRO_AMT(i));
2663       localdebug('  x_tab.buc_uned_frt_alloc_amt(i):'||x_tab.buc_uned_frt_alloc_amt(i));
2664       localdebug('  x_tab.BASE_uned_frt_PRO_AMT(i):'||x_tab.BASE_uned_frt_PRO_AMT(i));
2665       END IF;
2666 
2667       IF x_tab.BASE_uned_frt_PRO_AMT(i) <> 0 AND x_tab.buc_uned_frt_alloc_amt(i) <> 0 THEN
2668         x_run_uned_frt_amt := x_run_uned_frt_amt + x_tab.ELMT_uned_frt_PRO_AMT(i);
2669         l_uned_frt_alloc    := CurrRound(  x_run_uned_frt_amt
2670                                  / x_tab.BASE_uned_frt_PRO_AMT(i)
2671                                  * x_tab.buc_uned_frt_alloc_amt(i),
2672                                    x_tab.to_currency(i))
2673                                - x_run_uned_frt_alloc;
2674         x_tab.tl_uned_frt_alloc_amt(i) := l_uned_frt_alloc;
2675         x_run_uned_frt_alloc := x_run_uned_frt_alloc + l_uned_frt_alloc;
2676       ELSIF x_tab.BASE_uned_frt_PRO_AMT(i) = 0 AND g_frt_uned <> 0 AND x_tab.line_type(i) = 'FREIGHT' THEN  -- Bug14415571
2677       IF PG_DEBUG = 'Y' THEN
2678       localdebug('  x_run_uned_frt_amt:'||x_run_uned_frt_amt);
2679       localdebug('  x_tab.ELMT_uned_frt_PRO_AMT(i):'||x_tab.ELMT_uned_frt_PRO_AMT(i));
2680       localdebug('  x_tab.buc_uned_frt_alloc_amt(i):'||x_tab.buc_uned_frt_alloc_amt(i));
2681       localdebug('  x_tab.BASE_uned_frt_PRO_AMT(i):'||x_tab.BASE_uned_frt_PRO_AMT(i));
2682       END IF;
2683         IF x_tab.buc_uned_frt_alloc_amt(i) <> 0 THEN
2684          l_uned_frt_alloc    := x_tab.buc_uned_frt_alloc_amt(i) - x_run_uned_frt_alloc;
2685 	 x_tab.tl_uned_frt_alloc_amt(i) := l_uned_frt_alloc;
2686 	 x_run_uned_frt_amt := x_run_uned_frt_amt + l_uned_frt_alloc;
2687 	ELSE  x_tab.tl_uned_frt_alloc_amt(i) := 0;
2688 	END IF;
2689       IF PG_DEBUG = 'Y' THEN
2690       localdebug('  x_tab.tl_uned_frt_alloc_amt(i):'||x_tab.tl_uned_frt_alloc_amt(i));
2691       localdebug('  x_run_uned_frt_amt:'||x_run_uned_frt_amt);
2692       localdebug('  l_uned_frt_alloc:'||l_uned_frt_alloc);
2693       END IF;
2694       ELSE
2695         x_tab.tl_uned_frt_alloc_amt(i) := 0;
2696       END IF;
2697 
2698       IF PG_DEBUG = 'Y' THEN
2699       localdebug('  x_tab.tl_uned_frt_alloc_amt(i):'||x_tab.tl_uned_frt_alloc_amt(i));
2700       localdebug('  x_run_uned_frt_alloc:'||x_run_uned_frt_alloc);
2701       localdebug('  l_uned_frt_alloc:'||l_uned_frt_alloc);
2702       END IF;
2703 
2704       /*-------------------------------------------------+
2705        | Running frt acctd amount in trx currency        |
2706        +-------------------------------------------------*/
2707       IF x_tab.BASE_uned_frt_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_uned_frt_alloc_acctd_amt(i) <> 0 THEN
2708         x_run_uned_frt_acctd_amt := x_run_uned_frt_acctd_amt + x_tab.ELMT_uned_frt_PRO_ACCTD_AMT(i);
2709         l_uned_frt_acctd_alloc    := CurrRound(  x_run_uned_frt_acctd_amt
2710                                  / x_tab.BASE_uned_frt_PRO_ACCTD_AMT(i)
2711                                  * x_tab.buc_uned_frt_alloc_acctd_amt(i),
2712                                    x_tab.base_currency(i))
2713                                - x_run_uned_frt_acctd_alloc;
2714         x_tab.tl_uned_frt_alloc_acctd_amt(i) := l_uned_frt_acctd_alloc;
2715         x_run_uned_frt_acctd_alloc := x_run_uned_frt_acctd_alloc + l_uned_frt_acctd_alloc;
2716       ELSIF x_tab.BASE_uned_frt_PRO_ACCTD_AMT(i) = 0 AND g_acctd_frt_uned <> 0 AND x_tab.line_type(i) = 'FREIGHT' THEN  -- Bug14415571
2717       IF PG_DEBUG = 'Y' THEN
2718       localdebug('  x_run_uned_frt_acctd_amt:'||x_run_uned_frt_acctd_amt);
2719       localdebug('  x_tab.ELMT_uned_frt_PRO_ACCTD_AMT(i):'||x_tab.ELMT_uned_frt_PRO_ACCTD_AMT(i));
2720       localdebug('  x_tab.buc_uned_frt_alloc_acctd_amt(i):'||x_tab.buc_uned_frt_alloc_acctd_amt(i));
2721       localdebug('  x_tab.BASE_uned_frt_PRO_ACCTD_AMT(i):'||x_tab.BASE_uned_frt_PRO_ACCTD_AMT(i));
2722       END IF;
2723         IF x_tab.buc_uned_frt_alloc_acctd_amt(i) <> 0 THEN
2724         l_uned_frt_acctd_alloc    := x_tab.buc_uned_frt_alloc_acctd_amt(i) - x_run_uned_frt_acctd_alloc;
2725 	x_tab.tl_uned_frt_alloc_acctd_amt(i) := l_uned_frt_acctd_alloc;
2726 	x_run_uned_frt_acctd_amt := x_run_uned_frt_acctd_amt + l_uned_frt_acctd_alloc;
2727 	ELSE x_tab.tl_uned_frt_alloc_acctd_amt(i) := 0;
2728 	END IF;
2729       IF PG_DEBUG = 'Y' THEN
2730       localdebug('  x_tab.tl_uned_frt_alloc_acctd_amt(i):'||x_tab.tl_uned_frt_alloc_acctd_amt(i));
2731       localdebug('  x_run_uned_frt_acctd_amt:'||x_run_uned_frt_acctd_amt);
2732       localdebug('  l_uned_frt_acctd_alloc:'||l_uned_frt_acctd_alloc);
2733       END IF;
2734       ELSE
2735         x_tab.tl_uned_frt_alloc_acctd_amt(i) := 0;
2736       END IF;
2737 
2738       /*-------------------------------------------------+
2739        | Running chrg amount in trx currency             |
2740        +-------------------------------------------------*/
2741       IF PG_DEBUG = 'Y' THEN
2742       localdebug('  x_run_uned_chrg_amt:'||x_run_uned_chrg_amt);
2743       localdebug('  x_tab.ELMT_uned_CHRG_PRO_AMT(i):'||x_tab.ELMT_uned_CHRG_PRO_AMT(i));
2744       localdebug('  x_tab.buc_uned_chrg_alloc_amt(i):'||x_tab.buc_uned_chrg_alloc_amt(i));
2745       localdebug('  x_tab.BASE_uned_CHRG_PRO_AMT(i):'||x_tab.BASE_uned_CHRG_PRO_AMT(i));
2746       END IF;
2747 
2748       IF x_tab.BASE_uned_CHRG_PRO_AMT(i) <> 0 AND x_tab.buc_uned_chrg_alloc_amt(i) <> 0 THEN
2749         x_run_uned_chrg_amt := x_run_uned_chrg_amt + x_tab.ELMT_uned_CHRG_PRO_AMT(i);
2750         l_uned_chrg_alloc    := CurrRound(  x_run_uned_chrg_amt
2751                                  / x_tab.BASE_uned_CHRG_PRO_AMT(i)
2752                                  * x_tab.buc_uned_chrg_alloc_amt(i),
2753                                    x_tab.to_currency(i))
2754                                - x_run_uned_chrg_alloc;
2755         x_tab.tl_uned_chrg_alloc_amt(i) := l_uned_chrg_alloc;
2756         x_run_uned_chrg_alloc := x_run_uned_chrg_alloc + l_uned_chrg_alloc;
2757       ELSIF x_tab.BASE_uned_CHRG_PRO_AMT(i) = 0 AND g_chrg_uned <> 0 AND x_tab.line_type(i) = 'CHARGES' THEN  -- Bug14415571
2758       IF PG_DEBUG = 'Y' THEN
2759       localdebug('  x_run_uned_chrg_amt:'||x_run_uned_chrg_amt);
2760       localdebug('  x_tab.ELMT_uned_CHRG_PRO_AMT(i):'||x_tab.ELMT_uned_CHRG_PRO_AMT(i));
2761       localdebug('  x_tab.buc_uned_chrg_alloc_amt(i):'||x_tab.buc_uned_chrg_alloc_amt(i));
2762       localdebug('  x_tab.BASE_uned_CHRG_PRO_AMT(i):'||x_tab.BASE_uned_CHRG_PRO_AMT(i));
2763       END IF;
2764         IF x_tab.buc_uned_chrg_alloc_amt(i) <> 0 THEN
2765          l_uned_chrg_alloc    := x_tab.buc_uned_chrg_alloc_amt(i) - x_run_uned_chrg_alloc;
2766 	 x_tab.tl_uned_chrg_alloc_amt(i) := l_uned_chrg_alloc;
2767 	 x_run_uned_chrg_amt := x_run_uned_chrg_amt + l_uned_chrg_alloc;
2768 	ELSE x_tab.tl_uned_chrg_alloc_amt(i) := 0;
2769 	END IF;
2770       IF PG_DEBUG = 'Y' THEN
2771       localdebug('  x_tab.tl_uned_chrg_alloc_amt(i):'||x_tab.tl_uned_chrg_alloc_amt(i));
2772       localdebug('  x_run_uned_chrg_amt:'||x_run_uned_chrg_amt);
2773       localdebug('  l_uned_chrg_alloc:'||l_uned_chrg_alloc);
2774       END IF;
2775       ELSE
2776         x_tab.tl_uned_chrg_alloc_amt(i) := 0;
2777       END IF;
2778 
2779       IF PG_DEBUG = 'Y' THEN
2780       localdebug('  x_tab.tl_uned_chrg_alloc_amt(i):'||x_tab.tl_uned_chrg_alloc_amt(i));
2781       localdebug('  x_run_uned_chrg_alloc:'||x_run_uned_chrg_alloc);
2782       localdebug('  l_uned_chrg_alloc:'||l_uned_chrg_alloc);
2783       END IF;
2784 
2785       /*-------------------------------------------------+
2786        | Running chrg acctd amount in trx currency       |
2787        +-------------------------------------------------*/
2788       IF x_tab.BASE_uned_CHRG_PRO_ACCTD_AMT(i) <> 0 AND x_tab.buc_uned_chrg_alloc_acctd_amt(i) <> 0 THEN
2789         x_run_uned_chrg_acctd_amt := x_run_uned_chrg_acctd_amt + x_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT(i);
2790         l_uned_chrg_acctd_alloc    := CurrRound(  x_run_uned_chrg_acctd_amt
2791                                  / x_tab.BASE_uned_CHRG_PRO_ACCTD_AMT(i)
2792                                  * x_tab.buc_uned_chrg_alloc_acctd_amt(i),
2793                                    x_tab.base_currency(i))
2794                                - x_run_uned_chrg_acctd_alloc;
2795         x_tab.tl_uned_chrg_alloc_acctd_amt(i) := l_uned_chrg_acctd_alloc;
2796         x_run_uned_chrg_acctd_alloc := x_run_uned_chrg_acctd_alloc + l_uned_chrg_acctd_alloc;
2797       ELSIF x_tab.BASE_uned_CHRG_PRO_ACCTD_AMT(i) = 0 AND g_acctd_chrg_uned <> 0 AND x_tab.line_type(i) = 'CHARGES' THEN  -- Bug14415571
2798       IF PG_DEBUG = 'Y' THEN
2799       localdebug('  x_run_uned_chrg_acctd_amt:'||x_run_uned_chrg_acctd_amt);
2800       localdebug('  x_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT(i):'||x_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT(i));
2801       localdebug('  x_tab.buc_uned_chrg_alloc_acctd_amt(i):'||x_tab.buc_uned_chrg_alloc_acctd_amt(i));
2802       localdebug('  x_tab.BASE_uned_CHRG_PRO_ACCTD_AMT(i):'||x_tab.BASE_uned_CHRG_PRO_ACCTD_AMT(i));
2803       END IF;
2804         IF x_tab.buc_uned_chrg_alloc_acctd_amt(i) <> 0 THEN
2805          l_uned_chrg_acctd_alloc    := x_tab.buc_uned_chrg_alloc_acctd_amt(i) - x_run_uned_chrg_acctd_alloc;
2806 	 x_tab.tl_uned_chrg_alloc_acctd_amt(i) := l_uned_chrg_acctd_alloc;
2807 	 x_run_uned_chrg_acctd_amt := x_run_uned_chrg_acctd_amt + l_uned_chrg_acctd_alloc;
2808 	ELSE x_tab.tl_uned_chrg_alloc_acctd_amt(i) := 0;
2809 	END IF;
2810       IF PG_DEBUG = 'Y' THEN
2811       localdebug('  x_tab.tl_uned_chrg_alloc_acctd_amt(i):'||x_tab.tl_uned_chrg_alloc_acctd_amt(i));
2812       localdebug('  x_run_uned_chrg_acctd_amt:'||x_run_uned_chrg_acctd_amt);
2813       localdebug('  l_uned_chrg_acctd_alloc:'||l_uned_chrg_acctd_alloc);
2814       END IF;
2815       ELSE
2816         x_tab.tl_uned_chrg_alloc_acctd_amt(i) := 0;
2817       END IF;
2818     ELSE
2819 
2820       x_tab.tl_uned_alloc_amt(i) := 0;
2821       x_tab.tl_uned_alloc_acctd_amt(i) := 0;
2822       x_tab.tl_uned_tax_alloc_amt(i) := 0;
2823       x_tab.tl_uned_tax_alloc_acctd_amt(i) := 0;
2824       x_tab.tl_uned_frt_alloc_amt(i) := 0;
2825       x_tab.tl_uned_frt_alloc_acctd_amt(i) := 0;
2826       x_tab.tl_uned_chrg_alloc_amt(i) := 0;
2827       x_tab.tl_uned_chrg_alloc_acctd_amt(i) := 0;
2828 
2829     END IF;
2830 
2831     IF i = x_tab.ROWID_ID.LAST THEN
2832       -- Store the last group
2833       store_group
2834       (p_groupe                => l_group,
2835        -- ADJ and APP
2836        p_run_amt               => x_run_amt,
2837        p_run_alloc             => x_run_alloc,
2838        p_run_acctd_amt         => x_run_acctd_amt,
2839        p_run_acctd_alloc       => x_run_acctd_alloc,
2840        p_run_chrg_amt          => x_run_chrg_amt,
2841        p_run_chrg_alloc        => x_run_chrg_alloc,
2842        p_run_chrg_acctd_amt    => x_run_chrg_acctd_amt,
2843        p_run_chrg_acctd_alloc  => x_run_chrg_acctd_alloc,
2844        p_run_frt_amt          => x_run_frt_amt,
2845        p_run_frt_alloc        => x_run_frt_alloc,
2846        p_run_frt_acctd_amt    => x_run_frt_acctd_amt,
2847        p_run_frt_acctd_alloc  => x_run_frt_acctd_alloc,
2848        p_run_tax_amt          => x_run_tax_amt,
2849        p_run_tax_alloc        => x_run_tax_alloc,
2850        p_run_tax_acctd_amt    => x_run_tax_acctd_amt,
2851        p_run_tax_acctd_alloc  => x_run_tax_acctd_alloc,
2852        -- ED
2853        p_run_ed_amt               => x_run_ed_amt,
2854        p_run_ed_alloc             => x_run_ed_alloc,
2855        p_run_ed_acctd_amt         => x_run_ed_acctd_amt,
2856        p_run_ed_acctd_alloc       => x_run_ed_acctd_alloc,
2857        p_run_ed_chrg_amt          => x_run_ed_chrg_amt,
2858        p_run_ed_chrg_alloc        => x_run_ed_chrg_alloc,
2859        p_run_ed_chrg_acctd_amt    => x_run_ed_chrg_acctd_amt,
2860        p_run_ed_chrg_acctd_alloc  => x_run_ed_chrg_acctd_alloc,
2861        p_run_ed_frt_amt          => x_run_ed_frt_amt,
2862        p_run_ed_frt_alloc        => x_run_ed_frt_alloc,
2863        p_run_ed_frt_acctd_amt    => x_run_ed_frt_acctd_amt,
2864        p_run_ed_frt_acctd_alloc  => x_run_ed_frt_acctd_alloc,
2865        p_run_ed_tax_amt          => x_run_ed_tax_amt,
2866        p_run_ed_tax_alloc        => x_run_ed_tax_alloc,
2867        p_run_ed_tax_acctd_amt    => x_run_ed_tax_acctd_amt,
2868        p_run_ed_tax_acctd_alloc  => x_run_ed_tax_acctd_alloc,
2869        -- UNED
2870        p_run_uned_amt               => x_run_uned_amt,
2871        p_run_uned_alloc             => x_run_uned_alloc,
2872        p_run_uned_acctd_amt         => x_run_uned_acctd_amt,
2873        p_run_uned_acctd_alloc       => x_run_uned_acctd_alloc,
2874        p_run_uned_chrg_amt          => x_run_uned_chrg_amt,
2875        p_run_uned_chrg_alloc        => x_run_uned_chrg_alloc,
2876        p_run_uned_chrg_acctd_amt    => x_run_uned_chrg_acctd_amt,
2877        p_run_uned_chrg_acctd_alloc  => x_run_uned_chrg_acctd_alloc,
2878        p_run_uned_frt_amt          => x_run_uned_frt_amt,
2879        p_run_uned_frt_alloc        => x_run_uned_frt_alloc,
2880        p_run_uned_frt_acctd_amt    => x_run_uned_frt_acctd_amt,
2881        p_run_uned_frt_acctd_alloc  => x_run_uned_frt_acctd_alloc,
2882        p_run_uned_tax_amt          => x_run_uned_tax_amt,
2883        p_run_uned_tax_alloc        => x_run_uned_tax_alloc,
2884        p_run_uned_tax_acctd_amt    => x_run_uned_tax_acctd_amt,
2885        p_run_uned_tax_acctd_alloc  => x_run_uned_tax_acctd_alloc,
2886        --
2887        x_group_tbl             => x_group_tbl);
2888     END IF;
2889 
2890   END LOOP;
2891   IF PG_DEBUG = 'Y' THEN
2892   localdebug('arp_det_dist_pkg.plsql_proration()-');
2893   END IF;
2894 EXCEPTION
2895  WHEN tbl_pro_res_tbl_empty THEN
2896    IF PG_DEBUG = 'Y' THEN
2897    localdebug('EXCEPTION tbl_pro_res_tbl_empty in PLSQL_PRORATION '||
2898                       ' table containing element over which proration should happen is empty');
2899    END IF;
2900  WHEN OTHERS THEN
2901    IF PG_DEBUG = 'Y' THEN
2902    localdebug('EXCEPTION OTHERS in PLSQL_PRORATION :'|| SQLERRM);
2903    END IF;
2904     RAISE;
2905 END plsql_proration;
2906 
2907 
2908 
2909 PROCEDURE update_line
2910 (p_gt_id           IN VARCHAR2,
2911  p_customer_trx_id IN NUMBER,
2912  p_ae_sys_rec      IN arp_acct_main.ae_sys_rec_type)
2913 IS
2914   CURSOR c_read_for_line IS
2915     SELECT /*+ leading(b) INDEX (b ra_ar_n1) INDEX( d RA_AR_AMOUNTS_GT_N1 )
2916 use_nl(D) */
2917            b.group_id||'-'||b.line_type||'-'||
2918            b.ref_customer_trx_id || '-' ||
2919 		   b.ref_customer_trx_line_id    groupe,
2920          -- ADJ AND APP
2921            --Base
2922            d.base_pro_amt,
2923            d.base_pro_acctd_amt,
2924            d.base_frt_pro_amt,
2925            d.base_frt_pro_acctd_amt,
2926            d.base_tax_pro_amt,
2927            d.base_tax_pro_acctd_amt,
2928            d.BASE_CHRG_PRO_AMT,
2929            d.BASE_CHRG_PRO_ACCTD_AMT,
2930            --Element
2931            d.elmt_pro_amt,
2932            d.elmt_pro_acctd_amt,
2933            d.ELMT_FRT_PRO_AMT,
2934            d.ELMT_FRT_PRO_ACCTD_AMT,
2935            d.ELMT_tax_PRO_AMT,
2936            d.ELMT_tax_PRO_ACCTD_AMT,
2937            d.ELMT_CHRG_PRO_AMT,
2938            d.ELMT_CHRG_PRO_ACCTD_AMT,
2939            --Amount to be allocated
2940            d.buc_alloc_amt,
2941            d.buc_alloc_acctd_amt,
2942            d.buc_frt_alloc_amt,
2943            d.buc_frt_alloc_acctd_amt,
2944            d.buc_tax_alloc_amt,
2945            d.buc_tax_alloc_acctd_amt,
2946            d.buc_chrg_alloc_amt,
2947            d.buc_chrg_alloc_acctd_amt,
2948          -- ED
2949            --Base
2950            d.base_ed_pro_amt,
2951            d.base_ed_pro_acctd_amt,
2952            d.BASE_ed_frt_PRO_AMT,
2953            d.BASE_ed_frt_PRO_ACCTD_AMT,
2954            d.BASE_ed_tax_PRO_AMT,
2955            d.BASE_ed_tax_PRO_ACCTD_AMT,
2956            d.BASE_ed_CHRG_PRO_AMT,
2957            d.BASE_ed_CHRG_PRO_ACCTD_AMT,
2958            --Element
2959            d.elmt_ed_pro_amt,
2960            d.elmt_ed_pro_acctd_amt,
2961            d.ELMT_ed_FRT_PRO_AMT,
2962            d.ELMT_ed_FRT_PRO_ACCTD_AMT,
2963            d.ELMT_ed_tax_PRO_AMT,
2964            d.ELMT_ed_tax_PRO_ACCTD_AMT,
2965            d.ELMT_ed_CHRG_PRO_AMT,
2966            d.ELMT_ed_CHRG_PRO_ACCTD_AMT,
2967            --Amount to be allocated
2968            d.buc_ed_alloc_amt,
2969            d.buc_ed_alloc_acctd_amt,
2970            d.buc_ed_frt_alloc_amt,
2971            d.buc_ed_frt_alloc_acctd_amt,
2972            d.buc_ed_tax_alloc_amt,
2973            d.buc_ed_tax_alloc_acctd_amt,
2974            d.buc_ed_chrg_alloc_amt,
2975            d.buc_ed_chrg_alloc_acctd_amt,
2976          -- UNED
2977            --Base
2978            d.base_uned_pro_amt,
2979            d.base_uned_pro_acctd_amt,
2980            d.BASE_uned_FRT_PRO_AMT,
2981            d.BASE_uned_FRT_PRO_ACCTD_AMT,
2982            d.BASE_uned_tax_PRO_AMT,
2983            d.BASE_uned_tax_PRO_ACCTD_AMT,
2984            d.BASE_uned_CHRG_PRO_AMT,
2985            d.BASE_uned_CHRG_PRO_ACCTD_AMT,
2986            --Element
2987            d.elmt_uned_pro_amt,
2988            d.elmt_uned_pro_acctd_amt,
2989            d.ELMT_uned_FRT_PRO_AMT,
2990            d.ELMT_uned_FRT_PRO_ACCTD_AMT,
2991            d.ELMT_uned_tax_PRO_AMT,
2992            d.ELMT_uned_tax_PRO_ACCTD_AMT,
2993            d.ELMT_uned_CHRG_PRO_AMT,
2994            d.ELMT_uned_CHRG_PRO_ACCTD_AMT,
2995            --Amount to be allocated
2996            d.buc_uned_alloc_amt,
2997            d.buc_uned_alloc_acctd_amt,
2998            d.buc_uned_frt_alloc_amt,
2999            d.buc_uned_frt_alloc_acctd_amt,
3000            d.buc_uned_tax_alloc_amt,
3001            d.buc_uned_tax_alloc_acctd_amt,
3002            d.buc_uned_chrg_alloc_amt,
3003            d.buc_uned_chrg_alloc_acctd_amt,
3004          ----
3005            --Currencies
3006            b.BASE_CURRENCY  ,
3007            b.TO_CURRENCY    ,
3008            b.FROM_CURRENCY  ,
3009            -- Rowid
3010            b.rowid,
3011 	   b.line_type
3012      FROM  RA_AR_GT b,
3013            RA_AR_AMOUNTS_GT d
3014     WHERE b.gt_id  = p_gt_id
3015       AND b.ref_customer_trx_id = p_customer_trx_id
3016       AND b.gp_level            = 'L'
3017       AND d.gt_id               = b.gt_id
3018       AND d.base_rec_rowid      = b.rowid
3019       --Bug#3611016
3020       AND b.SET_OF_BOOKS_ID     = p_ae_sys_rec.set_of_books_id
3021       AND (b.SOB_TYPE   = p_ae_sys_rec.sob_type OR
3022            (b.SOB_TYPE IS NULL AND p_ae_sys_rec.sob_type IS NULL))
3023      ORDER BY b.group_id||'-'||
3024               b.line_type||'-'||b.ref_customer_trx_id || '-' ||b.ref_customer_trx_line_id;
3025   l_tab  pro_res_tbl_type;
3026 
3027   l_group_tbl            group_tbl_type;
3028   l_group                VARCHAR2(900)    := 'NOGROUP';
3029 
3030   -- ADJ and APP
3031   l_run_amt              NUMBER          := 0;
3032   l_run_alloc            NUMBER          := 0;
3033   l_run_acctd_amt        NUMBER          := 0;
3034   l_run_acctd_alloc      NUMBER          := 0;
3035   l_alloc                NUMBER          := 0;
3036   l_acctd_alloc          NUMBER          := 0;
3037 
3038   l_run_chrg_amt         NUMBER          := 0;
3039   l_run_chrg_alloc       NUMBER          := 0;
3040   l_run_chrg_acctd_amt   NUMBER          := 0;
3041   l_run_chrg_acctd_alloc NUMBER          := 0;
3042   l_chrg_alloc           NUMBER          := 0;
3043   l_chrg_acctd_alloc     NUMBER          := 0;
3044 
3045   l_run_frt_amt         NUMBER          := 0;
3046   l_run_frt_alloc       NUMBER          := 0;
3047   l_run_frt_acctd_amt   NUMBER          := 0;
3048   l_run_frt_acctd_alloc NUMBER          := 0;
3049   l_frt_alloc           NUMBER          := 0;
3050   l_frt_acctd_alloc     NUMBER          := 0;
3051 
3052   l_run_tax_amt         NUMBER          := 0;
3053   l_run_tax_alloc       NUMBER          := 0;
3054   l_run_tax_acctd_amt   NUMBER          := 0;
3055   l_run_tax_acctd_alloc NUMBER          := 0;
3056   l_tax_alloc           NUMBER          := 0;
3057   l_tax_acctd_alloc     NUMBER          := 0;
3058 
3059 
3060   -- ED
3061   l_run_ed_amt              NUMBER          := 0;
3062   l_run_ed_alloc            NUMBER          := 0;
3063   l_run_ed_acctd_amt        NUMBER          := 0;
3064   l_run_ed_acctd_alloc      NUMBER          := 0;
3065   l_ed_alloc                NUMBER          := 0;
3066   l_ed_acctd_alloc          NUMBER          := 0;
3067 
3068   l_run_ed_chrg_amt         NUMBER          := 0;
3069   l_run_ed_chrg_alloc       NUMBER          := 0;
3070   l_run_ed_chrg_acctd_amt   NUMBER          := 0;
3071   l_run_ed_chrg_acctd_alloc NUMBER          := 0;
3072   l_ed_chrg_alloc           NUMBER          := 0;
3073   l_ed_chrg_acctd_alloc     NUMBER          := 0;
3074 
3075   l_run_ed_frt_amt         NUMBER          := 0;
3076   l_run_ed_frt_alloc       NUMBER          := 0;
3077   l_run_ed_frt_acctd_amt   NUMBER          := 0;
3078   l_run_ed_frt_acctd_alloc NUMBER          := 0;
3079   l_ed_frt_alloc           NUMBER          := 0;
3080   l_ed_frt_acctd_alloc     NUMBER          := 0;
3081 
3082   l_run_ed_tax_amt         NUMBER          := 0;
3083   l_run_ed_tax_alloc       NUMBER          := 0;
3084   l_run_ed_tax_acctd_amt   NUMBER          := 0;
3085   l_run_ed_tax_acctd_alloc NUMBER          := 0;
3086   l_ed_tax_alloc           NUMBER          := 0;
3087   l_ed_tax_acctd_alloc     NUMBER          := 0;
3088 
3089   -- UNED
3090   l_run_uned_amt              NUMBER          := 0;
3091   l_run_uned_alloc            NUMBER          := 0;
3092   l_run_uned_acctd_amt        NUMBER          := 0;
3093   l_run_uned_acctd_alloc      NUMBER          := 0;
3094   l_uned_alloc                NUMBER          := 0;
3095   l_uned_acctd_alloc          NUMBER          := 0;
3096 
3097   l_run_uned_chrg_amt         NUMBER          := 0;
3098   l_run_uned_chrg_alloc       NUMBER          := 0;
3099   l_run_uned_chrg_acctd_amt   NUMBER          := 0;
3100   l_run_uned_chrg_acctd_alloc NUMBER          := 0;
3101   l_uned_chrg_alloc           NUMBER          := 0;
3102   l_uned_chrg_acctd_alloc     NUMBER          := 0;
3103 
3104   l_run_uned_frt_amt         NUMBER          := 0;
3105   l_run_uned_frt_alloc       NUMBER          := 0;
3106   l_run_uned_frt_acctd_amt   NUMBER          := 0;
3107   l_run_uned_frt_acctd_alloc NUMBER          := 0;
3108   l_uned_frt_alloc           NUMBER          := 0;
3109   l_uned_frt_acctd_alloc     NUMBER          := 0;
3110 
3111   l_run_uned_tax_amt         NUMBER          := 0;
3112   l_run_uned_tax_alloc       NUMBER          := 0;
3113   l_run_uned_tax_acctd_amt   NUMBER          := 0;
3114   l_run_uned_tax_acctd_alloc NUMBER          := 0;
3115   l_uned_tax_alloc           NUMBER          := 0;
3116   l_uned_tax_acctd_alloc     NUMBER          := 0;
3117 
3118   l_exist                BOOLEAN;
3119   l_last_fetch           BOOLEAN;
3120 
3121 BEGIN
3122   IF PG_DEBUG = 'Y' THEN
3123   localdebug('arp_det_dist_pkg.update_line()+');
3124   END IF;
3125 
3126   OPEN  c_read_for_line;
3127   LOOP
3128     FETCH c_read_for_line BULK COLLECT INTO
3129      l_tab.GROUPE                  ,
3130    -- ADJ and APP
3131      -- Base
3132      l_tab.base_pro_amt       ,
3133      l_tab.base_pro_acctd_amt ,
3134      l_tab.BASE_FRT_PRO_AMT       ,
3135      l_tab.BASE_FRT_PRO_ACCTD_AMT ,
3136      l_tab.BASE_tax_PRO_AMT       ,
3137      l_tab.BASE_tax_PRO_ACCTD_AMT ,
3138      l_tab.BASE_CHRG_PRO_AMT       ,
3139      l_tab.BASE_CHRG_PRO_ACCTD_AMT ,
3140      -- Element numerator
3141      l_tab.elmt_pro_amt       ,
3142      l_tab.elmt_pro_acctd_amt ,
3143      l_tab.ELMT_FRT_PRO_AMT       ,
3144      l_tab.ELMT_FRT_PRO_ACCTD_AMT ,
3145      l_tab.ELMT_tax_PRO_AMT       ,
3146      l_tab.ELMT_tax_PRO_ACCTD_AMT ,
3147      l_tab.ELMT_CHRG_PRO_AMT       ,
3148      l_tab.ELMT_CHRG_PRO_ACCTD_AMT ,
3149      -- Amount to be allocated
3150      l_tab.buc_alloc_amt      ,
3151      l_tab.buc_alloc_acctd_amt,
3152      l_tab.buc_frt_alloc_amt      ,
3153      l_tab.buc_frt_alloc_acctd_amt,
3154      l_tab.buc_tax_alloc_amt      ,
3155      l_tab.buc_tax_alloc_acctd_amt,
3156      l_tab.buc_chrg_alloc_amt      ,
3157      l_tab.buc_chrg_alloc_acctd_amt,
3158    -- ED
3159      -- Base
3160      l_tab.base_ed_pro_amt       ,
3161      l_tab.base_ed_pro_acctd_amt ,
3162      l_tab.BASE_ed_FRT_PRO_AMT       ,
3163      l_tab.BASE_ed_FRT_PRO_ACCTD_AMT ,
3164      l_tab.BASE_ed_tax_PRO_AMT       ,
3165      l_tab.BASE_ed_tax_PRO_ACCTD_AMT ,
3166      l_tab.BASE_ed_CHRG_PRO_AMT       ,
3167      l_tab.BASE_ed_CHRG_PRO_ACCTD_AMT ,
3168      -- Element numerator
3169      l_tab.elmt_ed_pro_amt       ,
3170      l_tab.elmt_ed_pro_acctd_amt ,
3171      l_tab.ELMT_ed_FRT_PRO_AMT       ,
3172      l_tab.ELMT_ed_FRT_PRO_ACCTD_AMT ,
3173      l_tab.ELMT_ed_tax_PRO_AMT       ,
3174      l_tab.ELMT_ed_tax_PRO_ACCTD_AMT ,
3175      l_tab.ELMT_ed_CHRG_PRO_AMT       ,
3176      l_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT ,
3177      -- Amount to be allocated
3178      l_tab.buc_ed_alloc_amt      ,
3179      l_tab.buc_ed_alloc_acctd_amt,
3180      l_tab.buc_ed_frt_alloc_amt      ,
3181      l_tab.buc_ed_frt_alloc_acctd_amt,
3182      l_tab.buc_ed_tax_alloc_amt      ,
3183      l_tab.buc_ed_tax_alloc_acctd_amt,
3184      l_tab.buc_ed_chrg_alloc_amt      ,
3185      l_tab.buc_ed_chrg_alloc_acctd_amt,
3186    -- UNED
3187      -- Base
3188      l_tab.base_uned_pro_amt       ,
3189      l_tab.base_uned_pro_acctd_amt ,
3190      l_tab.BASE_uned_FRT_PRO_AMT       ,
3191      l_tab.BASE_uned_FRT_PRO_ACCTD_AMT ,
3192      l_tab.BASE_uned_tax_PRO_AMT       ,
3193      l_tab.BASE_uned_tax_PRO_ACCTD_AMT ,
3194      l_tab.BASE_uned_CHRG_PRO_AMT       ,
3195      l_tab.BASE_uned_CHRG_PRO_ACCTD_AMT ,
3196      -- Element numerator
3197      l_tab.elmt_uned_pro_amt       ,
3198      l_tab.elmt_uned_pro_acctd_amt ,
3199      l_tab.ELMT_uned_FRT_PRO_AMT       ,
3200      l_tab.ELMT_uned_FRT_PRO_ACCTD_AMT ,
3201      l_tab.ELMT_uned_tax_PRO_AMT       ,
3202      l_tab.ELMT_uned_tax_PRO_ACCTD_AMT ,
3203      l_tab.ELMT_uned_CHRG_PRO_AMT       ,
3204      l_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT ,
3205      -- Amount to be allocated
3206      l_tab.buc_uned_alloc_amt      ,
3207      l_tab.buc_uned_alloc_acctd_amt,
3208      l_tab.buc_uned_frt_alloc_amt      ,
3209      l_tab.buc_uned_frt_alloc_acctd_amt,
3210      l_tab.buc_uned_tax_alloc_amt      ,
3211      l_tab.buc_uned_tax_alloc_acctd_amt,
3212      l_tab.buc_uned_chrg_alloc_amt      ,
3213      l_tab.buc_uned_chrg_alloc_acctd_amt,
3214      --
3215      l_tab.BASE_CURRENCY  ,
3216      l_tab.TO_CURRENCY    ,
3217      l_tab.FROM_CURRENCY  ,
3218      --
3219      l_tab.ROWID_ID,
3220      l_tab.line_type  LIMIT g_bulk_fetch_rows;
3221 
3222      IF c_read_for_line%NOTFOUND THEN
3223           l_last_fetch := TRUE;
3224      END IF;
3225 
3226      IF (l_tab.ROWID_ID.COUNT = 0) AND (l_last_fetch) THEN
3227        IF PG_DEBUG = 'Y' THEN
3228        localdebug('COUNT = 0 and LAST FETCH ');
3229        END IF;
3230        EXIT;
3231      END IF;
3232 
3233      plsql_proration( x_tab               => l_tab,
3234                    x_group_tbl            => l_group_tbl,
3235                    p_group_level          => 'L',
3236 		   -- ADJ and APP
3237                    x_run_amt              => l_run_amt,
3238                    x_run_alloc            => l_run_alloc,
3239                    x_run_acctd_amt        => l_run_acctd_amt,
3240                    x_run_acctd_alloc      => l_run_acctd_alloc,
3241                    x_run_chrg_amt         => l_run_chrg_amt,
3242                    x_run_chrg_alloc       => l_run_chrg_alloc,
3243                    x_run_chrg_acctd_amt   => l_run_chrg_acctd_amt,
3244                    x_run_chrg_acctd_alloc => l_run_chrg_acctd_alloc,
3245                    x_run_frt_amt         => l_run_frt_amt,
3246                    x_run_frt_alloc       => l_run_frt_alloc,
3247                    x_run_frt_acctd_amt   => l_run_frt_acctd_amt,
3248                    x_run_frt_acctd_alloc => l_run_frt_acctd_alloc,
3249                    x_run_tax_amt         => l_run_tax_amt,
3250                    x_run_tax_alloc       => l_run_tax_alloc,
3251                    x_run_tax_acctd_amt   => l_run_tax_acctd_amt,
3252                    x_run_tax_acctd_alloc => l_run_tax_acctd_alloc,
3253                    -- ED
3254                    x_run_ed_amt              => l_run_ed_amt,
3255                    x_run_ed_alloc            => l_run_ed_alloc,
3256                    x_run_ed_acctd_amt        => l_run_ed_acctd_amt,
3257                    x_run_ed_acctd_alloc      => l_run_ed_acctd_alloc,
3258                    x_run_ed_chrg_amt         => l_run_ed_chrg_amt,
3259                    x_run_ed_chrg_alloc       => l_run_ed_chrg_alloc,
3260                    x_run_ed_chrg_acctd_amt   => l_run_ed_chrg_acctd_amt,
3261                    x_run_ed_chrg_acctd_alloc => l_run_ed_chrg_acctd_alloc,
3262                    x_run_ed_frt_amt         => l_run_ed_frt_amt,
3263                    x_run_ed_frt_alloc       => l_run_ed_frt_alloc,
3264                    x_run_ed_frt_acctd_amt   => l_run_ed_frt_acctd_amt,
3265                    x_run_ed_frt_acctd_alloc => l_run_ed_frt_acctd_alloc,
3266                    x_run_ed_tax_amt         => l_run_ed_tax_amt,
3267                    x_run_ed_tax_alloc       => l_run_ed_tax_alloc,
3268                    x_run_ed_tax_acctd_amt   => l_run_ed_tax_acctd_amt,
3269                    x_run_ed_tax_acctd_alloc => l_run_ed_tax_acctd_alloc,
3270                    -- UNED
3271                    x_run_uned_amt              => l_run_uned_amt,
3272                    x_run_uned_alloc            => l_run_uned_alloc,
3273                    x_run_uned_acctd_amt        => l_run_uned_acctd_amt,
3274                    x_run_uned_acctd_alloc      => l_run_uned_acctd_alloc,
3275                    x_run_uned_chrg_amt         => l_run_uned_chrg_amt,
3276                    x_run_uned_chrg_alloc       => l_run_uned_chrg_alloc,
3277                    x_run_uned_chrg_acctd_amt   => l_run_uned_chrg_acctd_amt,
3278                    x_run_uned_chrg_acctd_alloc => l_run_uned_chrg_acctd_alloc,
3279                    x_run_uned_frt_amt         => l_run_uned_frt_amt,
3280                    x_run_uned_frt_alloc       => l_run_uned_frt_alloc,
3281                    x_run_uned_frt_acctd_amt   => l_run_uned_frt_acctd_amt,
3282                    x_run_uned_frt_acctd_alloc => l_run_uned_frt_acctd_alloc,
3283                    x_run_uned_tax_amt         => l_run_uned_tax_amt,
3284                    x_run_uned_tax_alloc       => l_run_uned_tax_alloc,
3285                    x_run_uned_tax_acctd_amt   => l_run_uned_tax_acctd_amt,
3286                    x_run_uned_tax_acctd_alloc => l_run_uned_tax_acctd_alloc
3287                    );
3288 
3289     IF PG_DEBUG = 'Y' THEN
3290     localdebug('     update ra_ar_gt trx_line_all ');
3291     END IF;
3292     FORALL i IN l_tab.ROWID_ID.FIRST .. l_tab.ROWID_ID.LAST
3293       UPDATE ra_ar_gt
3294       SET
3295           -- ADJ and APP
3296            tl_alloc_amt         = l_tab.tl_alloc_amt(i),
3297            tl_alloc_acctd_amt   = l_tab.tl_alloc_acctd_amt(i),
3298            tl_chrg_alloc_amt    = l_tab.tl_chrg_alloc_amt(i),
3299            tl_chrg_alloc_acctd_amt = l_tab.tl_chrg_alloc_acctd_amt(i),
3300            tl_frt_alloc_amt       = l_tab.tl_frt_alloc_amt(i),
3301            tl_frt_alloc_acctd_amt = l_tab.tl_frt_alloc_acctd_amt(i),
3302            tl_tax_alloc_amt       = l_tab.tl_tax_alloc_amt(i),
3303            tl_tax_alloc_acctd_amt = l_tab.tl_tax_alloc_acctd_amt(i),
3304           -- ED
3305            tl_ed_alloc_amt         = l_tab.tl_ed_alloc_amt(i),
3306            tl_ed_alloc_acctd_amt   = l_tab.tl_ed_alloc_acctd_amt(i),
3307            tl_ed_chrg_alloc_amt    = l_tab.tl_ed_chrg_alloc_amt(i),
3308            tl_ed_chrg_alloc_acctd_amt = l_tab.tl_ed_chrg_alloc_acctd_amt(i),
3309            tl_ed_frt_alloc_amt       = l_tab.tl_ed_frt_alloc_amt(i),
3310            tl_ed_frt_alloc_acctd_amt = l_tab.tl_ed_frt_alloc_acctd_amt(i),
3311            tl_ed_tax_alloc_amt       = l_tab.tl_ed_tax_alloc_amt(i),
3312            tl_ed_tax_alloc_acctd_amt = l_tab.tl_ed_tax_alloc_acctd_amt(i),
3313           -- UNED
3314            tl_uned_alloc_amt         = l_tab.tl_uned_alloc_amt(i),
3315            tl_uned_alloc_acctd_amt   = l_tab.tl_uned_alloc_acctd_amt(i),
3316            tl_uned_chrg_alloc_amt    = l_tab.tl_uned_chrg_alloc_amt(i),
3317            tl_uned_chrg_alloc_acctd_amt = l_tab.tl_uned_chrg_alloc_acctd_amt(i),
3318            tl_uned_frt_alloc_amt       = l_tab.tl_uned_frt_alloc_amt(i),
3319            tl_uned_frt_alloc_acctd_amt = l_tab.tl_uned_frt_alloc_acctd_amt(i),
3320            tl_uned_tax_alloc_amt       = l_tab.tl_uned_tax_alloc_amt(i),
3321            tl_uned_tax_alloc_acctd_amt = l_tab.tl_uned_tax_alloc_acctd_amt(i)
3322       WHERE rowid                     = l_tab.ROWID_ID(i);
3323     IF PG_DEBUG = 'Y' THEN
3324     localdebug('     update ra_ar_gt trx_line_all ');
3325     END IF;
3326 
3327   END LOOP;
3328   CLOSE c_read_for_line;
3329   IF PG_DEBUG = 'Y' THEN
3330   localdebug('arp_det_dist_pkg.update_line()-');
3331   END IF;
3332 END update_line;
3333 
3334 
3335 PROCEDURE get_invoice_line_info
3336   (p_gt_id                IN VARCHAR2,
3337    p_customer_trx_id      IN NUMBER,
3338    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type,
3339    p_mode                 IN VARCHAR2)
3340 IS
3341 
3342   l_rows NUMBER;
3343 
3344 BEGIN
3345   IF PG_DEBUG = 'Y' THEN
3346   localdebug('arp_det_dist_pkg.get_invoice_line_info()+');
3347   localdebug('   p_mode            :'||p_mode);
3348   localdebug('   p_customer_trx_id :'||p_customer_trx_id);
3349   localdebug('   sob_type          :'||p_ae_sys_rec.sob_type);
3350   localdebug('   set_of_books_id   :'||p_ae_sys_rec.set_of_books_id);
3351   END IF;
3352 
3353   IF PG_DEBUG = 'Y' THEN
3354   localdebug('   for regular transaction');
3355   END IF;
3356       INSERT INTO RA_AR_GT
3357       ( GT_ID                     ,
3358         BASE_CURRENCY             ,
3359         TO_CURRENCY               ,
3360         REF_CUSTOMER_TRX_ID       ,
3361         REF_CUSTOMER_TRX_LINE_ID  ,
3362         --
3363         DUE_ORIG_AMT              ,
3364         DUE_ORIG_ACCTD_AMT        ,
3365 --{line of type CHRG
3366         CHRG_ORIG_AMT             ,
3367         CHRG_ORIG_ACCTD_AMT       ,
3368 --}
3369         --
3370         FRT_ORIG_AMT              ,
3371         FRT_ORIG_ACCTD_AMT        ,
3372         TAX_ORIG_AMT              ,
3373         TAX_ORIG_ACCTD_AMT        ,
3374         --
3375         DUE_REM_AMT               ,
3376         DUE_REM_ACCTD_AMT         ,
3377         CHRG_REM_AMT              ,
3378         CHRG_REM_ACCTD_AMT        ,
3379         --
3380           FRT_REM_AMT               ,
3381           FRT_REM_ACCTD_AMT         ,
3382           TAX_REM_AMT               ,
3383           TAX_REM_ACCTD_AMT         ,
3384           --
3385 --{line of type CHRG
3386           CHRG_ADJ_REM_AMT        ,
3387           CHRG_ADJ_REM_ACCTD_AMT  ,
3388 --}
3389           FRT_ADJ_REM_AMT           ,
3390           FRT_ADJ_REM_ACCTD_AMT     ,
3391         --
3392         LINE_TYPE                 ,
3393         group_id                  ,
3394         --{HYUBPAGP
3395         source_data_key1  ,
3396         source_data_key2  ,
3397         source_data_key3  ,
3398         source_data_key4  ,
3399         source_data_key5  ,
3400         --}
3401         --
3402         SUM_LINE_ORIG_AMT        ,
3403         SUM_LINE_ORIG_ACCTD_AMT  ,
3404 --{line of type CHRG
3405         SUM_LINE_CHRG_ORIG_AMT        ,
3406         SUM_LINE_CHRG_ORIG_ACCTD_AMT  ,
3407 --}
3408         SUM_LINE_FRT_ORIG_AMT        ,
3409         SUM_LINE_FRT_ORIG_ACCTD_AMT  ,
3410         SUM_LINE_TAX_ORIG_AMT        ,
3411         SUM_LINE_TAX_ORIG_ACCTD_AMT  ,
3412         --
3413         SUM_LINE_REM_AMT         ,
3414         SUM_LINE_REM_ACCTD_AMT   ,
3415         SUM_LINE_CHRG_REM_AMT    ,
3416         SUM_LINE_CHRG_REM_ACCTD_AMT,
3417         --
3418           SUM_LINE_FRT_REM_AMT        ,
3419           SUM_LINE_FRT_REM_ACCTD_AMT  ,
3420           SUM_LINE_TAX_REM_AMT        ,
3421           SUM_LINE_TAX_REM_ACCTD_AMT  ,
3422         --
3423         gp_level,
3424         --3611016
3425         set_of_books_id,
3426         sob_type,
3427 --        se_gt_id,
3428         tax_link_id,
3429         tax_inc_flag
3430 --{BUG#4415037
3431  ,INT_LINE_AMOUNT
3432  ,INT_TAX_AMOUNT
3433  ,INT_ED_LINE_AMOUNT
3434  ,INT_ED_TAX_AMOUNT
3435  ,INT_UNED_LINE_AMOUNT
3436  ,INT_UNED_TAX_AMOUNT
3437  ,SUM_INT_LINE_AMOUNT
3438  ,SUM_INT_TAX_AMOUNT
3439  ,SUM_INT_ED_LINE_AMOUNT
3440  ,SUM_INT_ED_TAX_AMOUNT
3441  ,SUM_INT_UNED_LINE_AMOUNT
3442  ,SUM_INT_UNED_TAX_AMOUNT
3443 --}
3444         )
3445      SELECT  /*+INDEX (ctl ra_customer_trx_lines_gt_n1)*/
3446 	        p_gt_id                       ,  --GT_ID
3447             p_ae_sys_rec.base_currency    ,  --BASE_CURRENCY
3448             trx.invoice_currency_code     ,  --TO_CURRENCY
3449             trx.customer_trx_id           ,  --REF_CUSTOMER_TRX_ID
3450             ctl.customer_trx_line_id      ,  --REF_CUSTOMER_TRX_LINE_ID
3451          -- Orig
3452             DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
3453                                  'CB'  ,ctl.amount_due_original, 0),          --DUE_ORIG_AMT
3454             DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
3455                                  'CB'  ,ctl.acctd_amount_due_original,0),    --DUE_ORIG_ACCTD_AMT
3456 --{line of type CHRG
3457            DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0),        --CHRG_ORIG_AMT
3458            DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0),  --CHRG_ORIG_ACCTD_AMT
3459 --}
3460             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0),       --FRT_ORIG_AMT
3461             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0), --FRT_ORIG_ACCTD_AMT
3462             DECODE(ctl.line_type,'TAX',ctl.amount_due_original, 0),          --TAX_ORIG_AMT
3463             DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0),     --TAX_ORIG_ACCTD_AMT
3464          -- Remaining
3465             CASE WHEN SUM(DECODE(ctl.line_type,'LINE',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),
3466                                      'CB'  ,abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),0))
3467                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3468             THEN
3469               DECODE(ctl.line_type,'LINE',1,
3470                                  'CB'  ,1,0)
3471             ELSE
3472              CASE WHEN SUM(DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
3473                                      'CB'  ,ctl.amount_due_remaining,0))
3474                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3475              THEN
3476               DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
3477                                  'CB'  ,ctl.amount_due_original,0)
3478              ELSE
3479               DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
3480                                  'CB'  ,ctl.amount_due_remaining, 0) END
3481             END,         --DUE_REM_AMT
3482             CASE WHEN SUM(DECODE(ctl.line_type,'LINE',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),
3483                                      'CB'  ,abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),0))
3484                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3485             THEN
3486               DECODE(ctl.line_type,'LINE',1,
3487                                  'CB'  ,1,0)
3488             ELSE
3489              CASE WHEN SUM(DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_remaining,
3490                                      'CB'  ,ctl.acctd_amount_due_remaining,0))
3491                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3492              THEN
3493               DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
3494                                  'CB'  ,ctl.acctd_amount_due_original,0)
3495              ELSE
3496               DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_remaining,
3497                                  'CB'  ,ctl.acctd_amount_due_remaining,0) END
3498             END,   --DUE_REM_ACCTD_AMT
3499 --{line of type CHRG
3500            CASE WHEN SUM(DECODE
3501                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.chrg_amount_remaining,0)),
3502                                 'CB'     ,abs(NVL(ctl.chrg_amount_remaining,0)),
3503                                 'CHARGES',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),   /*HYU*/
3504                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3505            THEN DECODE(ctl.line_type,'CHARGES',1,0)
3506            ELSE
3507             CASE WHEN SUM(DECODE
3508                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_amount_remaining,0),
3509                                 'CB'     ,NVL(ctl.chrg_amount_remaining,0),
3510                                 'CHARGES',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3511                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3512             THEN
3513              DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0)
3514             ELSE
3515              DECODE(ctl.line_type,'CHARGES',ctl.amount_due_remaining,0) END
3516            END,        --CHRG_REM_AMT
3517            CASE WHEN SUM(DECODE
3518                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.chrg_acctd_amount_remaining,0)),
3519                                 'CB'     ,abs(NVL(ctl.chrg_acctd_amount_remaining,0)),
3520                                 'CHARGES',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),   /*HYU*/
3521                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3522            THEN DECODE(ctl.line_type,'CHARGES',1,0)
3523            ELSE
3524             CASE WHEN SUM(DECODE
3525                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_acctd_amount_remaining,0),
3526                                 'CB'     ,NVL(ctl.chrg_acctd_amount_remaining,0),
3527                                 'CHARGES',NVL(ctl.acctd_amount_due_remaining,0),
3528                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3529             THEN
3530              DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0)
3531             ELSE
3532              DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_remaining,0) END
3533            END,  --CHRG_REM_ACCTD_AMT
3534             --
3535            CASE WHEN SUM(DECODE
3536                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.frt_adj_remaining,0)),
3537                                 'CB'     ,abs(NVL(ctl.frt_adj_remaining,0)),
3538                                 'FREIGHT',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),   /*HYU*/
3539                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3540            THEN DECODE(ctl.line_type,'FREIGHT',1,0)
3541            ELSE
3542             CASE WHEN SUM(DECODE
3543                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_remaining,0),
3544                                 'CB'     ,NVL(ctl.frt_adj_remaining,0),
3545                                 'FREIGHT',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3546                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3547             THEN
3548             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0)
3549             ELSE
3550             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_remaining,0) END
3551            END,      --FRT_REM_AMT
3552                                                             /*Frt Rem on freight is the
3553                                                               rem amount of the freight calculated
3554                                                               from orig frt - cash application
3555                                                               frt adjustment variations are excluded
3556                                                               they are kept in frt_adj_rem_amt on rev line */
3557            CASE WHEN SUM(DECODE
3558                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.frt_adj_acctd_remaining,0)),
3559                                 'CB'     ,abs(NVL(ctl.frt_adj_acctd_remaining,0)),
3560                                 'FREIGHT',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),   /*HYU*/
3561                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3562            THEN DECODE(ctl.line_type,'FREIGHT',1,0)
3563            ELSE
3564             CASE WHEN SUM(DECODE
3565                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_acctd_remaining,0),
3566                                 'CB'     ,NVL(ctl.frt_adj_acctd_remaining,0),
3567                                 'FREIGHT',NVL(ctl.acctd_amount_due_remaining,0),
3568                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3569             THEN
3570             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0)
3571             ELSE
3572             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_remaining,0) END
3573            END, --FRT_REM_ACCTD_AMT
3574             CASE WHEN SUM(DECODE(ctl.line_type,'TAX',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),0))
3575                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3576             THEN
3577               DECODE(ctl.line_type,'TAX',1,0)
3578             ELSE
3579              CASE WHEN SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0))
3580                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3581              THEN
3582               DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0)
3583              ELSE
3584               DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0) END
3585             END,           --TAX_REM_AMT
3586             CASE WHEN SUM(DECODE(ctl.line_type,'TAX',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),0))
3587                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3588             THEN
3589               DECODE(ctl.line_type,'TAX',1,0)
3590             ELSE
3591              CASE WHEN SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0))
3592                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3593              THEN
3594               DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0)
3595              ELSE
3596               DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0) END
3597             END,    --TAX_REM_ACCTD_AMT
3598 --{line of type CHRG
3599            CASE WHEN SUM(DECODE
3600                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.chrg_amount_remaining,0)),
3601                                 'CB'     ,abs(NVL(ctl.chrg_amount_remaining,0)),
3602                                 'CHARGES',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),   /*HYU*/
3603                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3604            THEN 0
3605            ELSE
3606             CASE WHEN SUM(DECODE
3607                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_amount_remaining,0),
3608                                 'CB'     ,NVL(ctl.chrg_amount_remaining,0),
3609                                 'CHARGES',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3610                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3611             THEN 0
3612             ELSE
3613             NVL(ctl.chrg_amount_remaining,0) END
3614            END,                                       --CHRG_ADJ_REM_AMT
3615            CASE WHEN SUM(DECODE
3616                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.chrg_acctd_amount_remaining,0)),
3617                                 'CB'     ,abs(NVL(ctl.chrg_acctd_amount_remaining,0)),
3618                                 'CHARGES',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),   /*HYU*/
3619                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3620            THEN 0
3621            ELSE
3622             CASE WHEN SUM(DECODE
3623                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_acctd_amount_remaining,0),
3624                                 'CB'     ,NVL(ctl.chrg_acctd_amount_remaining,0),
3625                                 'CHARGES',NVL(ctl.acctd_amount_due_remaining,0),
3626                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3627             THEN 0
3628             ELSE
3629             NVL(ctl.chrg_acctd_amount_remaining,0) END
3630            END,                                 --CHRG_ADJ_REM_ACCTD_AMT
3631 --}
3632            CASE WHEN SUM(DECODE
3633                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.frt_adj_remaining,0)),
3634                                 'CB'     ,abs(NVL(ctl.frt_adj_remaining,0)),
3635                                 'FREIGHT',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),   /*HYU*/
3636                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3637            THEN 0
3638            ELSE
3639             CASE WHEN SUM(DECODE
3640                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_remaining,0),
3641                                 'CB'     ,NVL(ctl.frt_adj_remaining,0),
3642                                 'FREIGHT',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3643                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3644             THEN 0
3645             ELSE
3646             NVL(ctl.frt_adj_remaining,0) END
3647            END,                                            --FRT_ADJ_REM_AMT
3648            CASE WHEN SUM(DECODE
3649                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.frt_adj_acctd_remaining,0)),
3650                                 'CB'     ,abs(NVL(ctl.frt_adj_acctd_remaining,0)),
3651                                 'FREIGHT',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),   /*HYU*/
3652                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3653            THEN 0
3654            ELSE
3655             CASE WHEN SUM(DECODE
3656                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_acctd_remaining,0),
3657                                 'CB'     ,NVL(ctl.frt_adj_acctd_remaining,0),
3658                                 'FREIGHT',NVL(ctl.acctd_amount_due_remaining,0),
3659                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3660             THEN 0
3661             ELSE
3662             NVL(ctl.frt_adj_acctd_remaining,0) END
3663            END,                                      --FRT_ADJ_REM_ACCTD_AMT
3664             --
3665             ctl.line_type                 ,                                  --LINE_TYPE
3666             '00-00-00-00-00',                                    --GROUP_ID
3667             '00'  ,
3668             '00'  ,
3669             '00'  ,
3670             '00'  ,
3671             '00'  ,
3672             --
3673             SUM(DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
3674                                      'CB'  ,ctl.amount_due_original,0))
3675                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_ORIG_AMT
3676             SUM(DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
3677                                      'CB'  ,ctl.acctd_amount_due_original,0))
3678                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_ORIG_ACCTD_AMT
3679             --
3680 --{HYUCHRG
3681             SUM(DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0))
3682                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_CHRG_ORIG_AMT
3683             SUM(DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0))
3684                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_CHRG_ORIG_ACCTD_AMT
3685 --}
3686             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0))
3687                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_FRT_ORIG_AMT
3688             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0))
3689                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_FRT_ORIG_ACCTD_AMT
3690             --
3691             SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0))
3692                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_ORIG_AMT
3693             SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0))
3694                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_ORIG_ACCTD_AMT
3695             --
3696             CASE WHEN SUM(DECODE(ctl.line_type,'LINE',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),
3697                                      'CB'  ,abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),0))
3698                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3699             THEN
3700               SUM(DECODE(ctl.line_type,'LINE',1,
3701                                  'CB'  ,1,0))
3702               OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3703             ELSE
3704              CASE WHEN SUM(DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
3705                                      'CB'  ,ctl.amount_due_remaining,0))
3706                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3707              THEN SUM(DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
3708                                      'CB'  ,ctl.amount_due_original,0))
3709                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3710              ELSE
3711               SUM(DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
3712                                      'CB'  ,ctl.amount_due_remaining,0))
3713                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) END
3714             END,     --SUM_LINE_REM_AMT
3715             CASE WHEN SUM(DECODE(ctl.line_type,'LINE',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),
3716                                      'CB'  ,abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),0))
3717                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3718             THEN
3719               SUM(DECODE(ctl.line_type,'LINE',1,
3720                                  'CB'  ,1,0))
3721               OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3722             ELSE
3723              CASE WHEN SUM(DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_remaining,
3724                                      'CB'  ,ctl.acctd_amount_due_remaining,0))
3725                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3726              THEN SUM(DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
3727                                      'CB'  ,ctl.acctd_amount_due_original,0))
3728                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3729              ELSE
3730               SUM(DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_remaining,
3731                                      'CB'  ,ctl.acctd_amount_due_remaining,0))
3732                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) END
3733             END,     --SUM_LINE_REM_ACCTD_AMT
3734 
3735            CASE WHEN SUM(DECODE
3736                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.chrg_amount_remaining,0)),
3737                                 'CB'     ,abs(NVL(ctl.chrg_amount_remaining,0)),
3738                                 'CHARGES',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),   /*HYU*/
3739                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3740            THEN SUM(DECODE(ctl.line_type,'CHARGES',1,0))
3741                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3742            ELSE
3743             CASE WHEN SUM(DECODE
3744                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_amount_remaining,0),
3745                                 'CB'     ,NVL(ctl.chrg_amount_remaining,0),
3746                                 'CHARGES',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3747                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3748             THEN SUM(DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0))
3749                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3750             ELSE
3751             SUM(DECODE
3752                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_amount_remaining,0),
3753                                 'CB'     ,NVL(ctl.chrg_amount_remaining,0),
3754                                 'CHARGES',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3755                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) END
3756            END,--SUM_LINE_CHRG_REM_AMT
3757            CASE WHEN SUM(DECODE
3758                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.chrg_acctd_amount_remaining,0)),
3759                                 'CB'     ,abs(NVL(ctl.chrg_acctd_amount_remaining,0)),
3760                                 'CHARGES',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),   /*HYU*/
3761                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3762            THEN SUM(DECODE(ctl.line_type,'CHARGES',1,0))
3763                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3764            ELSE
3765             CASE WHEN SUM(DECODE
3766                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_acctd_amount_remaining,0),
3767                                 'CB'     ,NVL(ctl.chrg_acctd_amount_remaining,0),
3768                                 'CHARGES',NVL(ctl.acctd_amount_due_remaining,0),
3769                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3770             THEN SUM(DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0))
3771                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3772             ELSE SUM(DECODE
3773                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_acctd_amount_remaining,0),
3774                                 'CB'     ,NVL(ctl.chrg_acctd_amount_remaining,0),
3775                                 'CHARGES',NVL(ctl.acctd_amount_due_remaining,0),
3776                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) END
3777            END,--SUM_LINE_CHRG_REM_ACCTD_AMT
3778 --}
3779             --
3780             /*This is the sum of freight amount adjusted on the revenue line
3781               + sum of freight amount due remaining on the original freight line
3782               Those 2 amounts combined form the basis for cash receipt apps */
3783            CASE WHEN SUM(DECODE
3784                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.frt_adj_remaining,0)),
3785                                 'CB'     ,abs(NVL(ctl.frt_adj_remaining,0)),
3786                                 'FREIGHT',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),   /*HYU*/
3787                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3788            THEN SUM(DECODE(ctl.line_type,'FREIGHT',1,0))
3789                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3790            ELSE
3791             CASE WHEN SUM(DECODE
3792                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_remaining,0),
3793                                 'CB'     ,NVL(ctl.frt_adj_remaining,0),
3794                                 'FREIGHT',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3795                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3796             THEN SUM(DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0))
3797                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3798             ELSE SUM(DECODE
3799                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_remaining,0),
3800                                 'CB'     ,NVL(ctl.frt_adj_remaining,0),
3801                                 'FREIGHT',NVL(ctl.amount_due_remaining,0),   /*HYU*/
3802                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) END
3803            END,--SUM_LINE_FRT_REM_AMT
3804            CASE WHEN SUM(DECODE
3805                  (ctl.line_type,'LINE'   ,abs(NVL(ctl.frt_adj_acctd_remaining,0)),
3806                                 'CB'     ,abs(NVL(ctl.frt_adj_acctd_remaining,0)),
3807                                 'FREIGHT',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),   /*HYU*/
3808                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3809            THEN SUM(DECODE(ctl.line_type,'FREIGHT',1,0))
3810                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3811            ELSE
3812             CASE WHEN SUM(DECODE
3813                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_acctd_remaining,0),
3814                                 'CB'     ,NVL(ctl.frt_adj_acctd_remaining,0),
3815                                 'FREIGHT',NVL(ctl.acctd_amount_due_remaining,0),
3816                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) = 0
3817             THEN SUM(DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0))
3818                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3819             ELSE SUM(DECODE
3820                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_acctd_remaining,0),
3821                                 'CB'     ,NVL(ctl.frt_adj_acctd_remaining,0),
3822                                 'FREIGHT',NVL(ctl.acctd_amount_due_remaining,0),
3823                                  0)) OVER (PARTITION BY trx.customer_trx_id  ) END
3824            END,--SUM_LINE_FRT_REM_ACCTD_AMT
3825             --
3826             CASE WHEN SUM(DECODE(ctl.line_type,'TAX',abs(ctl.amount_due_remaining)+abs(ctl.amount_due_original),0))
3827                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3828             THEN
3829               SUM(DECODE(ctl.line_type,'TAX',1,0))
3830               OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3831             ELSE
3832              CASE WHEN SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0))
3833                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3834              THEN SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0))
3835                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3836              ELSE SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0))
3837                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) END
3838             END,       --SUM_LINE_TAX_REM_AMT
3839             CASE WHEN SUM(DECODE(ctl.line_type,'TAX',abs(ctl.acctd_amount_due_remaining)+abs(ctl.acctd_amount_due_original),0))
3840                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3841             THEN
3842               SUM(DECODE(ctl.line_type,'TAX',1,0))
3843               OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3844             ELSE
3845              CASE WHEN SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0))
3846                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) = 0
3847              THEN SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0))
3848                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type )
3849              ELSE SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0))
3850                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ) END
3851             END,       --SUM_LINE_TAX_REM_ACCTD_AMT
3852             --
3853             'L',
3854             --Bug#3611016
3855             p_ae_sys_rec.set_of_books_id,
3856             p_ae_sys_rec.sob_type,
3857 --            g_se_gt_id,
3858             --{Taxable_amount
3859             DECODE(ctl.line_type, 'TAX' ,ctl.link_to_cust_trx_line_id,
3860                                   'LINE',ctl.customer_trx_line_id,
3861                                   'CB'  ,ctl.customer_trx_line_id,
3862                                   NULL),
3863             DECODE(ctl.line_type,'LINE','Y',
3864                                  'CB'  ,'Y',
3865                                  'TAX','Y','N')
3866 --{BUG#4415037
3867            ,CASE WHEN g_line_flag      = 'INTERFACE' THEN it.line_amount          ELSE NULL END  -- INT_LINE_AMOUNT
3868            ,CASE WHEN g_tax_flag       = 'INTERFACE' THEN it.tax_amount           ELSE NULL END  -- INT_TAX_AMOUNT
3869            ,CASE WHEN g_ed_line_flag   = 'INTERFACE' THEN it.ed_line_amount       ELSE NULL END  -- INT_ED_LINE_AMOUNT
3870            ,CASE WHEN g_ed_tax_flag    = 'INTERFACE' THEN it.ed_tax_amount        ELSE NULL END  -- INT_ED_TAX_AMOUNT
3871            ,CASE WHEN g_uned_line_flag = 'INTERFACE' THEN it.uned_line_amount     ELSE NULL END  -- INT_UNED_LINE_AMOUNT
3872            ,CASE WHEN g_uned_tax_flag  = 'INTERFACE' THEN it.uned_tax_amount     ELSE NULL END  -- INT_UNED_TAX_AMOUNT >> BUG 5736570
3873            ,CASE WHEN g_line_flag      = 'INTERFACE' THEN it.sum_line_amount      ELSE NULL END  -- SUM_INT_LINE_AMOUNT
3874            ,CASE WHEN g_tax_flag       = 'INTERFACE' THEN it.sum_tax_amount       ELSE NULL END  -- SUM_INT_TAX_AMOUNT
3875            ,CASE WHEN g_ed_line_flag   = 'INTERFACE' THEN it.sum_ed_line_amount   ELSE NULL END  -- SUM_INT_ED_LINE_AMOUNT
3876            ,CASE WHEN g_ed_tax_flag    = 'INTERFACE' THEN it.sum_ed_tax_amount    ELSE NULL END  -- SUM_INT_ED_TAX_AMOUNT
3877            ,CASE WHEN g_uned_line_flag = 'INTERFACE' THEN it.sum_uned_line_amount ELSE NULL END  -- SUM_INT_UNED_LINE_AMOUNT
3878            ,CASE WHEN g_uned_tax_flag  = 'INTERFACE' THEN it.sum_uned_tax_amount  ELSE NULL END  -- SUM_INT_UNED_TAX_AMOUNT
3879 --}
3880        FROM ra_customer_trx          trx,
3881             ra_customer_trx_lines_gt ctl,
3882             (SELECT
3883 			         gt_id                   gt_id
3884                     ,customer_trx_id         customer_trx_id
3885                     ,customer_trx_line_id    customer_trx_line_id
3886                     ,line_type               line_type
3887                     ,NVL(line_amount,0)      line_amount
3888                     ,NVL(tax_amount,0)       tax_amount
3889                     ,NVL(ed_line_amount,0)   ed_line_amount
3890                     ,NVL(ed_tax_amount,0)    ed_tax_amount
3891                     ,NVL(uned_line_amount,0) uned_line_amount
3892                     ,NVL(uned_tax_amount,0)  uned_tax_amount
3893                     ,SUM(NVL(line_amount,0)) OVER (PARTITION BY gt_id, customer_trx_id, line_type)      sum_line_amount
3894                     ,SUM(NVL(tax_amount,0))  OVER (PARTITION BY gt_id, customer_trx_id, line_type)      sum_tax_amount
3895                     ,SUM(NVL(ed_line_amount,0)) OVER (PARTITION BY gt_id, customer_trx_id, line_type)   sum_ed_line_amount
3896                     ,SUM(NVL(ed_tax_amount,0))  OVER (PARTITION BY gt_id, customer_trx_id, line_type)   sum_ed_tax_amount
3897                     ,SUM(NVL(uned_line_amount,0)) OVER (PARTITION BY gt_id, customer_trx_id, line_type) sum_uned_line_amount
3898                     ,SUM(NVL(uned_tax_amount,0))  OVER (PARTITION BY gt_id, customer_trx_id, line_type) sum_uned_tax_amount
3899                FROM
3900                 (SELECT /*+INDEX (ar_line_dist_interface_gt ar_line_dist_interface_gt_n1)*/
3901                      gt_id                   gt_id
3902                     ,customer_trx_id         customer_trx_id
3903                     ,customer_trx_line_id    customer_trx_line_id
3904                     ,line_type               line_type
3905                     ,MAX(NVL(line_amount,0))      line_amount
3906                     ,MAX(NVL(tax_amount,0))       tax_amount
3907                     ,SUM(NVL(ed_line_amount,0))   ed_line_amount
3908                     ,SUM(NVL(ed_tax_amount,0))    ed_tax_amount
3909                     ,SUM(NVL(uned_line_amount,0)) uned_line_amount
3910                     ,SUM(NVL(uned_tax_amount,0))  uned_tax_amount
3911                  FROM ar_line_dist_interface_gt
3912               WHERE gt_id = p_gt_id
3913                 AND customer_trx_id = p_customer_trx_id
3914                 GROUP BY gt_id, customer_trx_id, customer_trx_line_id, line_type))    it
3915       WHERE trx.customer_trx_id  = p_customer_trx_id
3916         AND trx.customer_trx_id  = ctl.customer_trx_id
3917         AND ctl.customer_trx_line_id  = it.customer_trx_line_id (+);
3918 
3919   l_rows := sql%rowcount;
3920   g_appln_count := g_appln_count + l_rows;
3921   IF PG_DEBUG = 'Y' THEN
3922   localdebug('  rows inserted = ' || l_rows);
3923   END IF;
3924 
3925   IF PG_DEBUG = 'Y' THEN
3926   display_ra_ar_gt(p_gt_id => p_gt_id);
3927   END IF;
3928 
3929   IF PG_DEBUG = 'Y' THEN
3930   localdebug('arp_det_dist_pkg.get_invoice_line_info()-');
3931   END IF;
3932 EXCEPTION
3933   WHEN OTHERS THEN
3934      IF PG_DEBUG = 'Y' THEN
3935      localdebug('EXCEPTION get_invoice_line_info OTHERS :'||SQLERRM);
3936      END IF;
3937 END get_invoice_line_info;
3938 
3939 
3940 PROCEDURE get_invoice_line_info_cm
3941   (p_gt_id                IN VARCHAR2,
3942    p_customer_trx_id      IN NUMBER,
3943    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type,
3944    p_mode                 IN VARCHAR2)
3945 IS
3946 
3947   l_rows NUMBER;
3948 
3949 BEGIN
3950   localdebug('arp_det_dist_pkg.get_invoice_line_info_cm()+');
3951   localdebug('   p_mode            :'||p_mode);
3952   localdebug('   p_customer_trx_id :'||p_customer_trx_id);
3953   localdebug('   sob_type          :'||p_ae_sys_rec.sob_type);
3954   localdebug('   set_of_books_id   :'||p_ae_sys_rec.set_of_books_id);
3955 
3956   localdebug('   for regular transaction against cm');
3957       INSERT INTO RA_AR_GT
3958       ( GT_ID                     ,
3959         BASE_CURRENCY             ,
3960         TO_CURRENCY               ,
3961         REF_CUSTOMER_TRX_ID       ,
3962         REF_CUSTOMER_TRX_LINE_ID  ,
3963         --
3964         DUE_ORIG_AMT              ,
3965         DUE_ORIG_ACCTD_AMT        ,
3966 
3967         CHRG_ORIG_AMT             ,
3968         CHRG_ORIG_ACCTD_AMT       ,
3969 
3970         --
3971         FRT_ORIG_AMT              ,
3972         FRT_ORIG_ACCTD_AMT        ,
3973         TAX_ORIG_AMT              ,
3974         TAX_ORIG_ACCTD_AMT        ,
3975         --
3976         DUE_REM_AMT               ,
3977         DUE_REM_ACCTD_AMT         ,
3978         CHRG_REM_AMT              ,
3979         CHRG_REM_ACCTD_AMT        ,
3980         --
3981           FRT_REM_AMT               ,
3982           FRT_REM_ACCTD_AMT         ,
3983           TAX_REM_AMT               ,
3984           TAX_REM_ACCTD_AMT         ,
3985           --
3986 
3987           CHRG_ADJ_REM_AMT        ,
3988           CHRG_ADJ_REM_ACCTD_AMT  ,
3989 
3990           FRT_ADJ_REM_AMT           ,
3991           FRT_ADJ_REM_ACCTD_AMT     ,
3992         --
3993         LINE_TYPE                 ,
3994         group_id                  ,
3995 
3996         source_data_key1  ,
3997         source_data_key2  ,
3998         source_data_key3  ,
3999         source_data_key4  ,
4000         source_data_key5  ,
4001 
4002         --
4003         SUM_LINE_ORIG_AMT        ,
4004         SUM_LINE_ORIG_ACCTD_AMT  ,
4005 
4006         SUM_LINE_CHRG_ORIG_AMT        ,
4007         SUM_LINE_CHRG_ORIG_ACCTD_AMT  ,
4008 
4009         SUM_LINE_FRT_ORIG_AMT        ,
4010         SUM_LINE_FRT_ORIG_ACCTD_AMT  ,
4011         SUM_LINE_TAX_ORIG_AMT        ,
4012         SUM_LINE_TAX_ORIG_ACCTD_AMT  ,
4013         --
4014         SUM_LINE_REM_AMT         ,
4015         SUM_LINE_REM_ACCTD_AMT   ,
4016         SUM_LINE_CHRG_REM_AMT    ,
4017         SUM_LINE_CHRG_REM_ACCTD_AMT,
4018         --
4019           SUM_LINE_FRT_REM_AMT        ,
4020           SUM_LINE_FRT_REM_ACCTD_AMT  ,
4021           SUM_LINE_TAX_REM_AMT        ,
4022           SUM_LINE_TAX_REM_ACCTD_AMT  ,
4023         --
4024         gp_level,
4025         set_of_books_id,
4026         sob_type,
4027         tax_link_id,
4028         tax_inc_flag
4029         )
4030      SELECT  /*+INDEX (ctl ra_customer_trx_lines_gt_n1)*/
4031             p_gt_id                       ,  --GT_ID
4032             p_ae_sys_rec.base_currency    ,  --BASE_CURRENCY
4033             trx.invoice_currency_code     ,  --TO_CURRENCY
4034             trx.customer_trx_id           ,  --REF_CUSTOMER_TRX_ID
4035             ctl.customer_trx_line_id      ,  --REF_CUSTOMER_TRX_LINE_ID
4036          -- Orig
4037             DECODE(ctl.line_type,'LINE',ctl.cm_amt_due_orig,
4038                                  'CB'  ,ctl.cm_amt_due_orig, 0),          --DUE_ORIG_AMT
4039             DECODE(ctl.line_type,'LINE',ctl.cm_acctd_amt_due_orig,
4040                                  'CB'  ,ctl.cm_acctd_amt_due_orig,0),    --DUE_ORIG_ACCTD_AMT
4041 
4042            DECODE(ctl.line_type,'CHARGES',ctl.cm_amt_due_orig,0),        --CHRG_ORIG_AMT
4043            DECODE(ctl.line_type,'CHARGES',ctl.cm_acctd_amt_due_orig,0),  --CHRG_ORIG_ACCTD_AMT
4044 
4045             DECODE(ctl.line_type,'FREIGHT',ctl.cm_amt_due_orig,0),       --FRT_ORIG_AMT
4046             DECODE(ctl.line_type,'FREIGHT',ctl.cm_acctd_amt_due_orig,0), --FRT_ORIG_ACCTD_AMT
4047             DECODE(ctl.line_type,'TAX',ctl.cm_amt_due_orig, 0),          --TAX_ORIG_AMT
4048             DECODE(ctl.line_type,'TAX',ctl.cm_acctd_amt_due_orig,0),     --TAX_ORIG_ACCTD_AMT
4049          -- Remaining
4050             DECODE(ctl.line_type,'LINE',ctl.cm_amt_due_rem,
4051                                  'CB'  ,ctl.cm_amt_due_rem,0),         --DUE_REM_AMT
4052             DECODE(ctl.line_type,'LINE',ctl.cm_acctd_amt_due_rem,
4053                                  'CB'  ,ctl.cm_acctd_amt_due_rem,0),   --DUE_REM_ACCTD_AMT
4054 
4055            DECODE(ctl.line_type,'CHARGES',ctl.cm_amt_due_rem,0),        --CHRG_REM_AMT
4056            DECODE(ctl.line_type,'CHARGES',ctl.cm_acctd_amt_due_rem,0),  --CHRG_REM_ACCTD_AMT
4057 
4058             --
4059             DECODE(ctl.line_type,'FREIGHT',ctl.cm_amt_due_rem,0),      --FRT_REM_AMT
4060             DECODE(ctl.line_type,'FREIGHT',ctl.cm_acctd_amt_due_rem,0), --FRT_REM_ACCTD_AMT
4061             DECODE(ctl.line_type,'TAX',ctl.cm_amt_due_rem,0),           --TAX_REM_AMT
4062             DECODE(ctl.line_type,'TAX',ctl.cm_acctd_amt_due_rem,0) ,    --TAX_REM_ACCTD_AMT
4063 
4064             0,                                       --CHRG_ADJ_REM_AMT
4065             0,                                 --CHRG_ADJ_REM_ACCTD_AMT
4066 
4067             0,                                            --FRT_ADJ_REM_AMT
4068             0,                                      --FRT_ADJ_REM_ACCTD_AMT
4069             --
4070             ctl.line_type                 ,                                  --LINE_TYPE
4071 
4072             '00-00-00-00-00',                                    --GROUP_ID
4073             '00'  ,
4074             '00'  ,
4075             '00'  ,
4076             '00'  ,
4077             '00'  ,
4078             --
4079             SUM(DECODE(ctl.line_type,'LINE',ctl.cm_amt_due_orig,
4080                                      'CB'  ,ctl.cm_amt_due_orig,0))
4081                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_ORIG_AMT
4082             SUM(DECODE(ctl.line_type,'LINE',ctl.cm_acctd_amt_due_orig,
4083                                      'CB'  ,ctl.cm_acctd_amt_due_orig,0))
4084                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_ORIG_ACCTD_AMT
4085             --
4086 
4087             SUM(DECODE(ctl.line_type,'CHARGES',ctl.cm_amt_due_orig,0))
4088                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_CHRG_ORIG_AMT
4089             SUM(DECODE(ctl.line_type,'CHARGES',ctl.cm_acctd_amt_due_orig,0))
4090                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_CHRG_ORIG_ACCTD_AMT
4091 
4092             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.cm_amt_due_orig,0))
4093                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_FRT_ORIG_AMT
4094             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.cm_acctd_amt_due_orig,0))
4095                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_FRT_ORIG_ACCTD_AMT
4096             --
4097             SUM(DECODE(ctl.line_type,'TAX',ctl.cm_amt_due_orig,0))
4098                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_ORIG_AMT
4099             SUM(DECODE(ctl.line_type,'TAX',ctl.cm_acctd_amt_due_orig,0))
4100                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_ORIG_ACCTD_AMT
4101             --
4102             SUM(DECODE(ctl.line_type,'LINE',ctl.cm_amt_due_rem,
4103                                      'CB'  ,ctl.cm_amt_due_rem,0))
4104                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ),     --SUM_LINE_REM_AMT
4105             SUM(DECODE(ctl.line_type,'LINE',ctl.cm_acctd_amt_due_rem,
4106                                      'CB'  ,ctl.cm_acctd_amt_due_rem,0))
4107                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ),     --SUM_LINE_REM_ACCTD_AMT
4108 
4109             SUM(DECODE(ctl.line_type,'CHARGES',ctl.cm_amt_due_rem,0))
4110                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_CHRG_REM_AMT
4111             SUM(DECODE(ctl.line_type,'CHARGES',ctl.cm_acctd_amt_due_rem,0))
4112                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_CHRG_REM_ACCTD_AMT
4113             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.cm_amt_due_rem,0))
4114                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_FRT_REM_AMT
4115             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.cm_acctd_amt_due_rem,0))
4116                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_FRT_REM_ACCTD_AMT
4117             --
4118             SUM(DECODE(ctl.line_type,'TAX',ctl.cm_amt_due_rem,0))
4119                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ),       --SUM_LINE_TAX_REM_AMT
4120             SUM(DECODE(ctl.line_type,'TAX',ctl.cm_acctd_amt_due_rem,0))
4121                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type  ),       --SUM_LINE_TAX_REM_ACCTD_AMT
4122             --
4123             'L',
4124             p_ae_sys_rec.set_of_books_id,
4125             p_ae_sys_rec.sob_type,
4126             --{Taxable_amount
4127             DECODE(ctl.line_type, 'TAX' ,ctl.link_to_cust_trx_line_id,
4128                                   'LINE',ctl.customer_trx_line_id,
4129                                   'CB'  ,ctl.customer_trx_line_id,
4130                                   NULL),
4131             DECODE(ctl.line_type,'LINE','Y',
4132                                  'CB'  ,'Y',
4133                                  'TAX','Y','N')
4134        FROM ra_customer_trx          trx,
4135             ra_customer_trx_lines_gt ctl
4136       WHERE trx.customer_trx_id  = p_customer_trx_id
4137         AND trx.customer_trx_id  = ctl.customer_trx_id
4138         AND ctl.cm_amt_due_orig is not null;
4139 
4140   l_rows := sql%rowcount;
4141   localdebug('  rows inserted = ' || l_rows);
4142 
4143   IF PG_DEBUG = 'Y' THEN
4144   display_ra_ar_gt(p_gt_id => p_gt_id);
4145   END IF;
4146 
4147   localdebug('arp_det_dist_pkg.get_invoice_line_info_cm()-');
4148 EXCEPTION
4149   WHEN OTHERS THEN
4150      localdebug('EXCEPTION get_invoice_line_info_cm OTHERS :'||SQLERRM);
4151 END get_invoice_line_info_cm;
4152 
4153 
4154 
4155 PROCEDURE prepare_group_for_proration
4156   (p_gt_id            IN VARCHAR2,
4157    p_customer_trx_id  IN NUMBER,
4158    p_pay_adj          IN VARCHAR2,
4159    p_adj_rec          IN ar_adjustments%ROWTYPE,
4160    p_app_rec          IN ar_receivable_applications%ROWTYPE,
4161    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type)
4162 IS
4163   l_rows NUMBER;
4164 BEGIN
4165   IF PG_DEBUG = 'Y' THEN
4166   localdebug('arp_det_dist_pkg.prepare_group_for_proration()+');
4167   END IF;
4168 
4169   IF p_pay_adj = 'APP' THEN
4170       IF(p_app_rec.LINE_EDISCOUNTED IS NOT NULL    AND p_app_rec.LINE_EDISCOUNTED <> 0)    OR
4171         (p_app_rec.TAX_EDISCOUNTED  IS NOT NULL    AND p_app_rec.TAX_EDISCOUNTED <> 0)     OR
4172         (p_app_rec.FREIGHT_EDISCOUNTED IS NOT NULL AND p_app_rec.FREIGHT_EDISCOUNTED <> 0) OR
4173         (p_app_rec.CHARGES_EDISCOUNTED IS NOT NULL AND p_app_rec.CHARGES_EDISCOUNTED <> 0)
4174       THEN
4175          g_ed_req := 'Y';
4176       ELSE
4177          g_ed_req := 'N';
4178       END IF;
4179       IF(p_app_rec.LINE_UEDISCOUNTED IS NOT NULL AND p_app_rec.LINE_UEDISCOUNTED <> 0)    OR
4180         (p_app_rec.TAX_UEDISCOUNTED  IS NOT NULL    AND p_app_rec.TAX_UEDISCOUNTED <> 0)     OR
4181         (p_app_rec.FREIGHT_UEDISCOUNTED IS NOT NULL AND p_app_rec.FREIGHT_UEDISCOUNTED <> 0) OR
4182         (p_app_rec.CHARGES_UEDISCOUNTED IS NOT NULL AND p_app_rec.CHARGES_UEDISCOUNTED <> 0)
4183       THEN
4184          g_uned_req := 'Y';
4185       ELSE
4186          g_uned_req := 'N';
4187       END IF;
4188    END IF;
4189 
4190    IF PG_DEBUG = 'Y' THEN
4191    localdebug(' g_ed_req   :'||g_ed_req);
4192    localdebug(' g_uned_req :'||g_uned_req);
4193    END IF;
4194   ------------------------------------------------------------------------
4195   -- Create groups
4196   -- The group_id used currently is ra_customer_trx_lines.SOURCE_DATA_KEY1
4197   ------------------------------------------------------------------------
4198   INSERT INTO ra_ar_gt
4199   (gt_id,
4200    gp_level,
4201    group_id,
4202   --{HYUBPAGP
4203   source_data_key1  ,
4204   source_data_key2  ,
4205   source_data_key3  ,
4206   source_data_key4  ,
4207   source_data_key5  ,
4208   --}
4209    ref_customer_trx_id,
4210    from_currency,
4211    to_currency,
4212    base_currency,
4213    line_type,
4214    --
4215    SUM_LINE_ORIG_AMT           ,
4216    SUM_LINE_ORIG_ACCTD_AMT     ,
4217 --{HYUCHRG
4218    SUM_LINE_CHRG_ORIG_AMT           ,
4219    SUM_LINE_CHRG_ORIG_ACCTD_AMT     ,
4220 --}
4221    SUM_LINE_FRT_ORIG_AMT           ,
4222    SUM_LINE_FRT_ORIG_ACCTD_AMT     ,
4223    SUM_LINE_TAX_ORIG_AMT           ,
4224    SUM_LINE_TAX_ORIG_ACCTD_AMT     ,
4225    --
4226    SUM_LINE_REM_AMT            ,
4227    SUM_LINE_REM_ACCTD_AMT      ,
4228    SUM_LINE_CHRG_REM_AMT       ,
4229    SUM_LINE_CHRG_REM_ACCTD_AMT ,
4230    SUM_LINE_FRT_REM_AMT       ,
4231    SUM_LINE_FRT_REM_ACCTD_AMT ,
4232    SUM_LINE_TAX_REM_AMT            ,
4233    SUM_LINE_TAX_REM_ACCTD_AMT      ,
4234    --
4235    SUM_GP_LINE_ORIG_AMT        ,
4236    SUM_GP_LINE_ORIG_ACCTD_AMT  ,
4237 --{HYUCHRG
4238    SUM_GP_LINE_CHRG_ORIG_AMT,
4239    SUM_GP_LINE_CHRG_ORIG_ACCTD_AM,
4240 --}
4241    SUM_GP_LINE_FRT_ORIG_AMT        ,
4242    SUM_GP_LINE_FRT_ORIG_ACCTD_AMT  ,
4243    SUM_GP_LINE_TAX_ORIG_AMT        ,
4244    SUM_GP_LINE_TAX_ORIG_ACCTD_AMT  ,
4245    --
4246    SUM_GP_LINE_REM_AMT         ,
4247    SUM_GP_LINE_REM_ACCTD_AMT   ,
4248    SUM_GP_LINE_CHRG_REM_AMT    ,
4249    SUM_GP_LINE_CHRG_REM_ACCTD_AMT,
4250    SUM_GP_LINE_FRT_REM_AMT       ,
4251    SUM_GP_LINE_FRT_REM_ACCTD_AMT,
4252    SUM_GP_LINE_TAX_REM_AMT      ,
4253    SUM_GP_LINE_TAX_REM_ACCTD_AMT,
4254    --BUG#3611016
4255    set_of_books_id   ,
4256    sob_type,
4257 --{HYUIssue
4258    ref_customer_trx_line_id
4259 --}
4260 --   se_gt_id
4261    --{Taxable amount
4262 --   ,tax_link_id,
4263 --   tax_inc_flag
4264    --}
4265    )
4266   SELECT /*+INDEX (rar ra_ar_n1)*/
4267           p_gt_id                        --GT_ID
4268          ,'GPL'                          --GP_LEVEL
4269          ,rar.group_id                   --GROUP_ID
4270          --{HYUBPAGP
4271          ,rar.source_data_key1
4272          ,rar.source_data_key2
4273          ,rar.source_data_key3
4274          ,rar.source_data_key4
4275          ,rar.source_data_key5
4276          --}
4277          ,rar.ref_customer_trx_id        --REF_CUSTOMER_TRX_ID
4278          ,rar.from_currency              --FROM_CURRENCY
4279          ,rar.to_currency                --TO_CURRENCY
4280          ,rar.base_currency              --BASE_CURRENCY
4281          ,rar.line_type                  --LINE_TYPE
4282          --
4283          ,rar.SUM_LINE_ORIG_AMT          --SUM_LINE_ORIG_AMT
4284          ,rar.SUM_LINE_ORIG_ACCTD_AMT    --SUM_LINE_ORIG_ACCTD_AMT
4285            --
4286 --{HYUCHRG
4287          ,rar.SUM_LINE_CHRG_ORIG_AMT          --SUM_LINE_CHRG_ORIG_AMT
4288          ,rar.SUM_LINE_CHRG_ORIG_ACCTD_AMT    --SUM_LINE_CHRG_ORIG_ACCTD_AMT
4289 --}
4290          ,rar.SUM_LINE_FRT_ORIG_AMT          --SUM_LINE_FRT_ORIG_AMT
4291          ,rar.SUM_LINE_FRT_ORIG_ACCTD_AMT    --SUM_LINE_FRT_ORIG_ACCTD_AMT
4292            --
4293          ,rar.SUM_LINE_TAX_ORIG_AMT          --SUM_LINE_TAX_ORIG_AMT
4294          ,rar.SUM_LINE_TAX_ORIG_ACCTD_AMT    --SUM_LINE_TAX_ORIG_ACCTD_AMT
4295          --
4296          ,rar.SUM_LINE_REM_AMT
4297          ,rar.SUM_LINE_REM_ACCTD_AMT
4298            --
4299          ,rar.SUM_LINE_CHRG_REM_AMT
4300          ,rar.SUM_LINE_CHRG_REM_ACCTD_AMT
4301            --
4302          ,rar.SUM_LINE_FRT_REM_AMT            --SUM_LINE_FRT_REM_AMT
4303          ,rar.SUM_LINE_FRT_REM_ACCTD_AMT      --SUM_LINE_FRT_REM_ACCTD_AMT
4304            --
4305          ,rar.SUM_LINE_TAX_REM_AMT
4306          ,rar.SUM_LINE_TAX_REM_ACCTD_AMT
4307          --
4308          ,SUM(rar.DUE_ORIG_AMT)        -- SUM_GP_LINE_ORIG_AMT
4309          ,SUM(rar.DUE_ORIG_ACCTD_AMT)  -- SUM_GP_LINE_ORIG_ACCTD_AMT
4310 --{HYUCHRG
4311          ,SUM(rar.CHRG_ORIG_AMT)        -- SUM_GP_LINE_CHRG_ORIG_AMT
4312          ,SUM(rar.CHRG_ORIG_ACCTD_AMT)  -- SUM_GP_LINE_CHRG_ORIG_ACCTD_AM
4313 --}
4314          ,SUM(rar.FRT_ORIG_AMT)        -- SUM_GP_LINE_FRT_ORIG_AMT
4315          ,SUM(rar.FRT_ORIG_ACCTD_AMT)  -- SUM_GP_LINE_FRT_ORIG_ACCTD_AMT
4316          ,SUM(rar.TAX_ORIG_AMT)        -- SUM_GP_LINE_TAX_ORIG_AMT
4317          ,SUM(rar.TAX_ORIG_ACCTD_AMT)  -- SUM_GP_LINE_TAX_ORIG_ACCTD_AMT
4318          --
4319          ,SUM(rar.DUE_REM_AMT)         -- SUM_GP_LINE_REM_AMT
4320          ,SUM(rar.DUE_REM_ACCTD_AMT)   -- SUM_GP_LINE_REM_ACCTD_AMT
4321 --{HYUCHRG
4322          ,sgch.sum_gp_chrg_rem_amt       --SUM_GP_LINE_CHRG_REM_AMT       HYUCHRG
4323          ,sgch.sum_gp_chrg_rem_acctd_amt --SUM_GP_LINE_CHRG_REM_ACCTD_AMT HYUCHRG
4324 --         ,SUM(rar.CHRG_REM_AMT)        -- SUM_GP_LINE_CHRG_REM_AMT
4325 --         ,SUM(rar.CHRG_REM_ACCTD_AMT)  -- SUM_GP_LINE_CHRG_REM_ACCTD_AMT
4326 --}
4327          ,sgfr.sum_gp_frt_rem_amt       --SUM_GP_LINE_FRT_REM_AMT       HYUFR
4328          ,sgfr.sum_gp_frt_rem_acctd_amt --SUM_GP_LINE_FRT_REM_ACCTD_AMT HYUFR
4329          ,SUM(rar.TAX_REM_AMT)         -- SUM_GP_LINE_TAX_REM_AMT
4330          ,SUM(rar.TAX_REM_ACCTD_AMT)   -- SUM_GP_LINE_TAX_REM_ACCTD_AMT
4331          --Bug#3611016
4332          ,p_ae_sys_rec.set_of_books_id
4333          ,p_ae_sys_rec.sob_type
4334 --{HYUIssue
4335          ,rar.ref_customer_trx_line_id
4336 --}
4337 --         ,g_se_gt_id
4338          --{Taxable Amount
4339   --       ,rar.tax_link_id
4340   --       ,rar.tax_inc_flag
4341          --}
4342        FROM ra_ar_gt       rar,
4343             (SELECT /*+INDEX (b ra_ar_n1)*/
4344 			         SUM(DECODE(b.line_type,'LINE'   ,b.FRT_ADJ_REM_AMT,
4345                                              'CB'     ,b.FRT_ADJ_REM_AMT,
4346                                              'FREIGHT',b.FRT_REM_AMT,
4347                                              0))                     sum_gp_frt_rem_amt
4348                      ,SUM(DECODE(b.line_type,'LINE'   ,b.FRT_ADJ_REM_ACCTD_AMT,
4349                                              'CB'     ,b.FRT_ADJ_REM_ACCTD_AMT,
4350                                              'FREIGHT',b.frt_rem_acctd_amt,
4351                                              0))                     sum_gp_frt_rem_acctd_amt
4352                      ,b.group_id
4353                      --{HYUBPAGP
4354                      ,b.source_data_key1
4355                      ,b.source_data_key2
4356                      ,b.source_data_key3
4357                      ,b.source_data_key4
4358                      ,b.source_data_key5
4359                      --{HYUIssue
4360                      ,b.ref_customer_trx_line_id
4361                      --}
4362                FROM ra_ar_gt  b
4363               WHERE b.ref_customer_trx_id  = p_customer_trx_id
4364                 AND b.gt_id                = p_gt_id
4365                 AND b.gp_level         = 'L'
4366                 AND b.set_of_books_id  = p_ae_sys_rec.set_of_books_id
4367                 AND (b.sob_type         = p_ae_sys_rec.sob_type OR
4368                      (b.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
4369                group by b.group_id
4370                         --{HYUBPAGP
4371                        ,b.source_data_key1
4372                        ,b.source_data_key2
4373                        ,b.source_data_key3
4374                        ,b.source_data_key4
4375                        ,b.source_data_key5
4376                      --{HYUIssue
4377                      ,b.ref_customer_trx_line_id
4378                      --}
4379                         --}
4380                )   sgfr,
4381 --{HYUCHRG
4382             (SELECT  /*+INDEX (b ra_ar_n1)*/
4383 			         SUM(DECODE(b.line_type,'LINE'   ,b.CHRG_ADJ_REM_AMT,
4384                                              'CB'     ,b.CHRG_ADJ_REM_AMT,
4385                                              'CHARGES',b.CHRG_REM_AMT,
4386                                              0))                     sum_gp_chrg_rem_amt
4387                      ,SUM(DECODE(b.line_type,'LINE'   ,b.CHRG_ADJ_REM_ACCTD_AMT,
4388                                              'CB'     ,b.CHRG_ADJ_REM_ACCTD_AMT,
4389                                              'CHARGES',b.chrg_rem_acctd_amt,
4390                                              0))                     sum_gp_chrg_rem_acctd_amt
4391                      ,b.group_id
4392                      --{HYUBPAGP
4393                      ,b.source_data_key1
4394                      ,b.source_data_key2
4395                      ,b.source_data_key3
4396                      ,b.source_data_key4
4397                      ,b.source_data_key5
4398                      --{HYUIssue
4399                      ,b.ref_customer_trx_line_id
4400                      --}
4401                      --}
4402                FROM ra_ar_gt  b
4403               WHERE b.ref_customer_trx_id  = p_customer_trx_id
4404                 AND b.gt_id                = p_gt_id
4405                 AND b.gp_level         = 'L'
4406                 AND b.set_of_books_id  = p_ae_sys_rec.set_of_books_id
4407                 AND (b.sob_type         = p_ae_sys_rec.sob_type OR
4408                       (b.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
4409                group by b.group_id
4410                         --{HYUBPAGP
4411                        ,b.source_data_key1
4412                        ,b.source_data_key2
4413                        ,b.source_data_key3
4414                        ,b.source_data_key4
4415                        ,b.source_data_key5
4416                      --{HYUIssue
4417                      ,b.ref_customer_trx_line_id
4418                      --}
4419                         --}
4420                )   sgch
4421 --}
4422       WHERE rar.ref_customer_trx_id  = p_customer_trx_id
4423         AND rar.gt_id                = p_gt_id
4424         AND rar.gp_level             = 'L'
4425         AND rar.group_id             = sgfr.group_id
4426         --{HYUBPAGP
4427         AND rar.source_data_key1     = sgfr.source_data_key1
4428         AND rar.source_data_key2     = sgfr.source_data_key2
4429         AND rar.source_data_key3     = sgfr.source_data_key3
4430         AND rar.source_data_key4     = sgfr.source_data_key4
4431         AND rar.source_data_key5     = sgfr.source_data_key5
4432         --{HYUIssue
4433         AND rar.ref_customer_trx_line_id = sgfr.ref_customer_trx_line_id
4434         --}
4435         --}
4436 --{HYUCHRG
4437         AND rar.group_id             = sgch.group_id
4438         AND rar.source_data_key1     = sgch.source_data_key1
4439         AND rar.source_data_key2     = sgch.source_data_key2
4440         AND rar.source_data_key3     = sgch.source_data_key3
4441         AND rar.source_data_key4     = sgch.source_data_key4
4442         AND rar.source_data_key5     = sgch.source_data_key5
4443         --{HYUIssue
4444         AND rar.ref_customer_trx_line_id = sgch.ref_customer_trx_line_id
4445         --}
4446 --}
4447         --BUG#3611016
4448         AND rar.set_of_books_id      = p_ae_sys_rec.set_of_books_id
4449         AND (rar.sob_type             = p_ae_sys_rec.sob_type OR
4450               (rar.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
4451       GROUP BY  p_gt_id
4452                ,'GPL'
4453                ,rar.group_id
4454                --{HYUBPAGP
4455                ,rar.source_data_key1
4456                ,rar.source_data_key2
4457                ,rar.source_data_key3
4458                ,rar.source_data_key4
4459                ,rar.source_data_key5
4460                --}
4461                ,rar.ref_customer_trx_id
4462                --{HYUIssue
4463                ,rar.ref_customer_trx_line_id
4464                --}
4465                ,rar.from_currency
4466                ,rar.to_currency
4467                ,rar.base_currency
4468                ,rar.line_type
4469               --
4470                ,rar.SUM_LINE_ORIG_AMT
4471                ,rar.SUM_LINE_ORIG_ACCTD_AMT
4472                ,rar.SUM_LINE_CHRG_ORIG_AMT
4473                ,rar.SUM_LINE_CHRG_ORIG_ACCTD_AMT
4474                ,rar.SUM_LINE_FRT_ORIG_AMT
4475                ,rar.SUM_LINE_FRT_ORIG_ACCTD_AMT
4476                ,rar.SUM_LINE_TAX_ORIG_AMT
4477                ,rar.SUM_LINE_TAX_ORIG_ACCTD_AMT
4478               --
4479                ,rar.SUM_LINE_REM_AMT
4480                ,rar.SUM_LINE_REM_ACCTD_AMT
4481                ,rar.SUM_LINE_CHRG_REM_AMT
4482                ,rar.SUM_LINE_CHRG_REM_ACCTD_AMT
4483                ,rar.SUM_LINE_FRT_REM_AMT
4484                ,rar.SUM_LINE_FRT_REM_ACCTD_AMT
4485                ,rar.SUM_LINE_TAX_REM_AMT
4486                ,rar.SUM_LINE_TAX_REM_ACCTD_AMT
4487 --{HYUCHRG
4488                ,sgch.sum_gp_chrg_rem_amt
4489                ,sgch.sum_gp_chrg_rem_acctd_amt
4490 --}
4491                ,sgfr.sum_gp_frt_rem_amt
4492                ,sgfr.sum_gp_frt_rem_acctd_amt
4493                ,p_ae_sys_rec.set_of_books_id
4494                ,p_ae_sys_rec.sob_type;
4495 --               ,g_se_gt_id;
4496                --{Taxble Amount
4497 --               ,rar.tax_link_id
4498 --               ,rar.tax_inc_flag;
4499                --}
4500     l_rows := sql%rowcount;
4501     g_appln_count := g_appln_count + l_rows;
4502     IF PG_DEBUG = 'Y' THEN
4503     localdebug('  rows inserted = ' || l_rows);
4504     END IF;
4505 
4506     IF PG_DEBUG = 'Y' THEN
4507     display_ra_ar_gt(p_code => 'GPL', p_gt_id => p_gt_id);
4508     END IF;
4509 
4510    ---------------------------------
4511    -- Determine the bucket for group
4512    ---------------------------------
4513    INSERT INTO RA_AR_AMOUNTS_GT (
4514       gt_id
4515       ,gp_level
4516       ,base_rec_rowid
4517       ,ref_customer_trx_id
4518       ,ref_customer_trx_line_id
4519       ,base_pro_amt
4520       ,base_pro_acctd_amt
4521       ,base_frt_pro_amt
4522       ,base_frt_pro_acctd_amt
4523       ,base_tax_pro_amt
4524       ,base_tax_pro_acctd_amt
4525       ,BASE_CHRG_PRO_AMT
4526       ,BASE_CHRG_PRO_ACCTD_AMT
4527 
4528       ,elmt_pro_amt
4529       ,elmt_pro_acctd_amt
4530       ,ELMT_FRT_PRO_AMT
4531       ,ELMT_FRT_PRO_ACCTD_AMT
4532       ,ELMT_TAX_PRO_AMT
4533       ,ELMT_TAX_PRO_ACCTD_AMT
4534       ,ELMT_CHRG_PRO_AMT
4535       ,ELMT_CHRG_PRO_ACCTD_AMT
4536 
4537       ,buc_alloc_amt
4538       ,buc_alloc_acctd_amt
4539       ,buc_frt_alloc_amt
4540       ,buc_frt_alloc_acctd_amt
4541       ,buc_tax_alloc_amt
4542       ,buc_tax_alloc_acctd_amt
4543       ,buc_chrg_alloc_amt
4544       ,buc_chrg_alloc_acctd_amt
4545 
4546       ,base_ed_pro_amt
4547       ,base_ed_pro_acctd_amt
4548       ,BASE_ed_FRT_PRO_AMT
4549       ,BASE_ed_FRT_PRO_ACCTD_AMT
4550       ,BASE_ed_TAX_PRO_AMT
4551       ,BASE_ed_TAX_PRO_ACCTD_AMT
4552       ,BASE_ed_CHRG_PRO_AMT
4553       ,BASE_ed_CHRG_PRO_ACCTD_AMT
4554 
4555       ,elmt_ed_pro_amt
4556       ,elmt_ed_pro_acctd_amt
4557       ,ELMT_ed_FRT_PRO_AMT
4558       ,ELMT_ed_FRT_PRO_ACCTD_AMT
4559       ,ELMT_ed_TAX_PRO_AMT
4560       ,ELMT_ed_TAX_PRO_ACCTD_AMT
4561       ,ELMT_ed_CHRG_PRO_AMT
4562       ,ELMT_ed_CHRG_PRO_ACCTD_AMT
4563 
4564       ,buc_ed_alloc_amt
4565       ,buc_ed_alloc_acctd_amt
4566       ,buc_ed_frt_alloc_amt
4567       ,buc_ed_frt_alloc_acctd_amt
4568       ,buc_ed_tax_alloc_amt
4569       ,buc_ed_tax_alloc_acctd_amt
4570       ,buc_ed_chrg_alloc_amt
4571       ,buc_ed_chrg_alloc_acctd_amt
4572 
4573       ,base_uned_pro_amt
4574       ,base_uned_pro_acctd_amt
4575       ,BASE_uned_FRT_PRO_AMT
4576       ,BASE_uned_FRT_PRO_ACCTD_AMT
4577       ,BASE_uned_TAX_PRO_AMT
4578       ,BASE_uned_TAX_PRO_ACCTD_AMT
4579       ,BASE_uned_CHRG_PRO_AMT
4580       ,BASE_uned_CHRG_PRO_ACCTD_AMT
4581 
4582       ,elmt_uned_pro_amt
4583       ,elmt_uned_pro_acctd_amt
4584       ,ELMT_uned_FRT_PRO_AMT
4585       ,ELMT_uned_FRT_PRO_ACCTD_AMT
4586       ,ELMT_uned_TAX_PRO_AMT
4587       ,ELMT_uned_TAX_PRO_ACCTD_AMT
4588       ,ELMT_uned_CHRG_PRO_AMT
4589       ,ELMT_uned_CHRG_PRO_ACCTD_AMT
4590 
4591       ,buc_uned_alloc_amt
4592       ,buc_uned_alloc_acctd_amt
4593       ,buc_uned_frt_alloc_amt
4594       ,buc_uned_frt_alloc_acctd_amt
4595       ,buc_uned_tax_alloc_amt
4596       ,buc_uned_tax_alloc_acctd_amt
4597       ,buc_uned_chrg_alloc_amt
4598       ,buc_uned_chrg_alloc_acctd_amt
4599    )
4600    SELECT   /*+INDEX(a ra_ar_n1)*/
4601             a.gt_id,
4602             a.gp_level,
4603 	    a.rowid,
4604             a.ref_customer_trx_id,
4605             a.ref_customer_trx_line_id,
4606  /**************************
4607   -- ADJ and APP
4608   **************************/
4609  -------
4610  -- BASE
4611  -------
4612             DECODE(p_pay_adj,
4613                   'ADJ',DECODE(a.SUM_LINE_REM_AMT, 0 ,
4614                              a.SUM_LINE_ORIG_AMT ,
4615                              a.SUM_LINE_REM_AMT),
4616                  a.SUM_LINE_REM_AMT),
4617             DECODE(p_pay_adj,
4618                  'ADJ',DECODE(a.SUM_LINE_REM_ACCTD_AMT, 0 ,
4619                               a.SUM_LINE_ORIG_ACCTD_AMT,
4620                               a.SUM_LINE_REM_ACCTD_AMT),
4621                  a.SUM_LINE_REM_ACCTD_AMT),
4622 
4623             DECODE(p_pay_adj,
4624                  'ADJ',DECODE(a.SUM_LINE_REM_AMT, 0 ,
4625                               a.SUM_LINE_ORIG_AMT ,
4626                               a.SUM_LINE_REM_AMT),
4627                  a.SUM_LINE_FRT_REM_AMT),
4628             DECODE(p_pay_adj,
4629                  'ADJ',DECODE(a.SUM_LINE_REM_ACCTD_AMT, 0 ,
4630                               a.SUM_LINE_ORIG_ACCTD_AMT,
4631                               a.SUM_LINE_REM_ACCTD_AMT),
4632                  a.SUM_LINE_FRT_REM_ACCTD_AMT),
4633    -- Base Tax
4634             DECODE(p_pay_adj,
4635                  'ADJ',DECODE(a.SUM_LINE_TAX_REM_AMT, 0 ,
4636                               a.SUM_LINE_TAX_ORIG_AMT ,
4637                               a.SUM_LINE_TAX_REM_AMT),
4638                  a.SUM_LINE_TAX_REM_AMT),
4639             DECODE(p_pay_adj,
4640                  'ADJ',DECODE(a.SUM_LINE_TAX_REM_ACCTD_AMT, 0 ,
4641                               a.SUM_LINE_TAX_ORIG_ACCTD_AMT,
4642                               a.SUM_LINE_TAX_REM_ACCTD_AMT),
4643                  a.SUM_LINE_TAX_REM_ACCTD_AMT),
4644    -- Base Chrg
4645            DECODE(p_pay_adj,
4646                  'ADJ',DECODE(a.SUM_LINE_REM_AMT, 0 ,
4647                               a.SUM_LINE_ORIG_AMT ,
4648                               a.SUM_LINE_REM_AMT),
4649                  a.SUM_LINE_CHRG_REM_AMT),
4650             DECODE(p_pay_adj,
4651                  'ADJ',DECODE(a.SUM_LINE_REM_ACCTD_AMT, 0 ,
4652                               a.SUM_LINE_ORIG_ACCTD_AMT ,
4653                               a.SUM_LINE_REM_ACCTD_AMT),
4654                  a.SUM_LINE_CHRG_REM_ACCTD_AMT),
4655   ----------
4656   -- Element
4657   ----------
4658    -- Elmt Rev
4659             DECODE(p_pay_adj,
4660                  'ADJ',DECODE(a.SUM_LINE_REM_AMT, 0 ,
4661                               a.SUM_GP_LINE_ORIG_AMT ,
4662                               a.SUM_GP_LINE_REM_AMT),
4663                  a.SUM_GP_LINE_REM_AMT),
4664             DECODE(p_pay_adj,
4665                  'ADJ',DECODE(a.SUM_LINE_REM_ACCTD_AMT, 0 ,
4666                               a.SUM_GP_LINE_ORIG_ACCTD_AMT ,
4667                               a.SUM_GP_LINE_REM_ACCTD_AMT),
4668                  a.SUM_GP_LINE_REM_ACCTD_AMT),
4669    -- Elt Frt
4670             DECODE(p_pay_adj,
4671                  'ADJ',DECODE(a.SUM_LINE_REM_AMT, 0 ,
4672                               a.SUM_GP_LINE_ORIG_AMT ,
4673                               a.SUM_GP_LINE_REM_AMT),
4674                  a.SUM_GP_LINE_FRT_REM_AMT),
4675             DECODE(p_pay_adj,
4676                  'ADJ',DECODE(a.SUM_LINE_REM_ACCTD_AMT, 0 ,
4677                               a.SUM_GP_LINE_ORIG_ACCTD_AMT ,
4678                               a.SUM_GP_LINE_REM_ACCTD_AMT),
4679                  a.SUM_GP_LINE_FRT_REM_ACCTD_AMT),
4680    -- Elt Tax
4681             DECODE(p_pay_adj,
4682                  'ADJ',DECODE(a.SUM_LINE_TAX_REM_AMT, 0 ,
4683                               a.SUM_GP_LINE_TAX_ORIG_AMT ,
4684                               a.SUM_GP_LINE_TAX_REM_AMT),
4685                  a.SUM_GP_LINE_TAX_REM_AMT),
4686             DECODE(p_pay_adj,
4687                  'ADJ',DECODE(a.SUM_LINE_TAX_REM_ACCTD_AMT, 0 ,
4688                               a.SUM_GP_LINE_TAX_ORIG_ACCTD_AMT ,
4689                               a.SUM_GP_LINE_TAX_REM_ACCTD_AMT),
4690                  a.SUM_GP_LINE_TAX_REM_ACCTD_AMT),
4691    -- Elt Chrg
4692             DECODE(p_pay_adj,
4693                  'ADJ',DECODE(a.SUM_LINE_REM_AMT, 0 ,
4694                               a.SUM_GP_LINE_ORIG_AMT ,
4695                               a.SUM_GP_LINE_REM_AMT),
4696                  a.sum_gp_line_chrg_rem_amt),
4697             DECODE(p_pay_adj,
4698                  'ADJ',DECODE(a.SUM_LINE_REM_ACCTD_AMT, 0 ,
4699                               a.SUM_GP_LINE_ORIG_ACCTD_AMT ,
4700                               a.SUM_GP_LINE_REM_ACCTD_AMT),
4701                  a.sum_gp_line_chrg_rem_acctd_amt),
4702    ---------
4703    -- Bucket
4704    ---------
4705     -- Buc Rev
4706             arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4707                                                 a.line_type,
4708                                                 'N',
4709                                                 'N',
4710                                                 'N'),
4711            arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4712                                                 a.line_type,
4713                                                 'Y',
4714                                                 'N',
4715                                                 'N'),
4716     --Buc Freight
4717            arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4718                                                 a.line_type,
4719                                                 'N',
4720                                                 'N',
4721                                                 'Y'),
4722            arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4723                                                 a.line_type,
4724                                                 'Y',
4725                                                 'N',
4726                                                 'Y'),
4727     -- Buc Tax
4728            arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4729                                                 a.line_type,
4730                                                 'N',
4731                                                 'N',
4732                                                 'N'),
4733            arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4734                                                 a.line_type,
4735                                                 'Y',
4736                                                 'N',
4737                                                 'N'),
4738     -- Buc Chrg
4739            arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4740                                                 a.line_type,
4741                                                 'N',
4742                                                 'Y',
4743                                                 'N'),
4744            arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
4745                                                 a.line_type,
4746                                                 'Y',
4747                                                 'Y',
4748                                                 'N'),
4749    /**************************
4750     -- ED
4751     **************************/
4752 	    a.SUM_LINE_REM_AMT,     -- Base ED Rev over Rev line
4753 	    a.SUM_LINE_REM_ACCTD_AMT,
4754 	    a.SUM_LINE_FRT_REM_AMT, -- a.SUM_LINE_REM_AMT
4755 	    a.SUM_LINE_FRT_REM_ACCTD_AMT,  -- a.SUM_LINE_REM_ACCTD_AMT
4756 	    a.SUM_LINE_TAX_REM_AMT,
4757 	    a.SUM_LINE_TAX_REM_ACCTD_AMT,
4758 	    a.SUM_LINE_CHRG_REM_AMT,
4759 	    a.SUM_LINE_CHRG_REM_ACCTD_AMT,
4760      --
4761 	    a.SUM_GP_LINE_REM_AMT,         -- Elmt ED Rev
4762 	    a.SUM_GP_LINE_REM_ACCTD_AMT,
4763 	    a.SUM_GP_LINE_FRT_REM_AMT,     -- a.SUM_GP_LINE_REM_AMT
4764 	    a.SUM_GP_LINE_FRT_REM_ACCTD_AMT,
4765 	    a.SUM_GP_LINE_TAX_REM_AMT,
4766 	    a.SUM_GP_LINE_TAX_REM_ACCTD_AMT,
4767 	    a.SUM_GP_LINE_CHRG_REM_AMT,
4768 	    a.SUM_GP_LINE_CHRG_REM_ACCTD_AMT,
4769 
4770           CASE
4771              when g_ed_req = 'Y' then
4772               arp_det_dist_pkg.the_concern_bucket('ED',
4773                                                 a.line_type,
4774                                                 'N',
4775                                                 'N',
4776                                                 'N')
4777              else 0 end,
4778           CASE
4779              when  g_ed_req = 'Y' then
4780               arp_det_dist_pkg.the_concern_bucket('ED',
4781                                                 a.line_type,
4782                                                 'Y',
4783                                                 'N',
4784                                                 'N')
4785              else 0 end,
4786           CASE
4787              when  g_ed_req = 'Y' then
4788               arp_det_dist_pkg.the_concern_bucket('ED',
4789                                                 a.line_type,
4790                                                 'N',
4791                                                 'N',
4792                                                 'Y')
4793              else 0 end,
4794           CASE
4795              when  g_ed_req = 'Y' then
4796               arp_det_dist_pkg.the_concern_bucket('ED',
4797                                                 a.line_type,
4798                                                 'Y',
4799                                                 'N',
4800                                                 'Y')
4801              else 0 end,
4802           CASE
4803              when g_ed_req = 'Y' then
4804               arp_det_dist_pkg.the_concern_bucket('ED',
4805                                                 a.line_type,
4806                                                 'N',
4807                                                 'N',
4808                                                 'N')
4809              else 0 end,
4810           CASE
4811              when  g_ed_req = 'Y' then
4812               arp_det_dist_pkg.the_concern_bucket('ED',
4813                                                 a.line_type,
4814                                                 'Y',
4815                                                 'N',
4816                                                 'N')
4817              else 0 end,
4818           CASE
4819              when  g_ed_req = 'Y' then
4820               arp_det_dist_pkg.the_concern_bucket('ED',
4821                                                 a.line_type,
4822                                                 'N',
4823                                                 'Y',
4824                                                 'N')
4825              else 0 end,
4826           CASE
4827              when  g_ed_req = 'Y' then
4828               arp_det_dist_pkg.the_concern_bucket('ED',
4829                                                 a.line_type,
4830                                                 'Y',
4831                                                 'Y',
4832                                                 'N')
4833              else 0 end,
4834    /**************************
4835     -- UNED
4836     **************************/
4837 	    a.SUM_LINE_REM_AMT,
4838 	    a.SUM_LINE_REM_ACCTD_AMT,
4839 	    a.SUM_LINE_FRT_REM_AMT,
4840 	    a.SUM_LINE_FRT_REM_ACCTD_AMT,
4841 	    a.SUM_LINE_TAX_REM_AMT,
4842 	    a.SUM_LINE_TAX_REM_ACCTD_AMT,
4843 	    a.SUM_LINE_CHRG_REM_AMT,
4844 	    a.SUM_LINE_CHRG_REM_ACCTD_AMT,
4845      --
4846 	    a.SUM_GP_LINE_REM_AMT,
4847 	    a.SUM_GP_LINE_REM_ACCTD_AMT,
4848 	    a.SUM_GP_LINE_FRT_REM_AMT,
4849 	    a.SUM_GP_LINE_FRT_REM_ACCTD_AMT,
4850 	    a.SUM_GP_LINE_TAX_REM_AMT,
4851 	    a.SUM_GP_LINE_TAX_REM_ACCTD_AMT,
4852 	    a.SUM_GP_LINE_CHRG_REM_AMT,
4853 	    a.SUM_GP_LINE_CHRG_REM_ACCTD_AMT,
4854      --
4855          CASE
4856              when  g_uned_req = 'Y' then
4857               arp_det_dist_pkg.the_concern_bucket('UNED',
4858                                                 a.line_type,
4859                                                 'N',
4860                                                 'N',
4861                                                 'N')
4862             else 0 end,
4863          CASE
4864              when  g_uned_req = 'Y' then
4865               arp_det_dist_pkg.the_concern_bucket('UNED',
4866                                                 a.line_type,
4867                                                 'Y',
4868                                                 'N',
4869                                                 'N')
4870             else 0 end,
4871          CASE
4872              when  g_uned_req = 'Y' then
4873               arp_det_dist_pkg.the_concern_bucket('UNED',
4874                                                 a.line_type,
4875                                                 'N',
4876                                                 'N',
4877                                                 'Y')
4878             else 0 end,
4879          CASE
4880              when  g_uned_req = 'Y' then
4881               arp_det_dist_pkg.the_concern_bucket('UNED',
4882                                                 a.line_type,
4883                                                 'Y',
4884                                                 'N',
4885                                                 'Y')
4886                else 0 end,
4887          CASE
4888              when  g_uned_req = 'Y' then
4889                arp_det_dist_pkg.the_concern_bucket('UNED',
4890                                                 a.line_type,
4891                                                 'N',
4892                                                 'N',
4893                                                 'N')
4894             else 0 end,
4895          CASE
4896              when  g_uned_req = 'Y' then
4897               arp_det_dist_pkg.the_concern_bucket('UNED',
4898                                                 a.line_type,
4899                                                 'Y',
4900                                                 'N',
4901                                                 'N')
4902             else 0 end,
4903          CASE
4904              when  g_uned_req = 'Y' then
4905               arp_det_dist_pkg.the_concern_bucket('UNED',
4906                                                 a.line_type,
4907                                                 'N',
4908                                                 'Y',
4909                                                 'N')
4910             else 0 end,
4911          CASE
4912              when  g_uned_req = 'Y' then
4913               arp_det_dist_pkg.the_concern_bucket('UNED',
4914                                                 a.line_type,
4915                                                 'Y',
4916                                                 'Y',
4917                                                 'N')
4918                else 0 end
4919    FROM RA_AR_GT a
4920      WHERE a.gt_id                    = p_gt_id
4921        AND a.ref_customer_trx_id      = p_customer_trx_id
4922        AND a.gp_level                 = 'GPL'
4923        AND a.set_of_books_id          = p_ae_sys_rec.set_of_books_id
4924        AND (a.sob_type                 = p_ae_sys_rec.sob_type OR
4925              (a.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL));
4926 
4927     IF PG_DEBUG = 'Y' THEN
4928     display_ra_ar_gt(p_code => 'GPL',p_gt_id => p_gt_id);
4929     END IF;
4930 
4931   IF PG_DEBUG = 'Y' THEN
4932   localdebug('arp_det_dist_pkg.prepare_group_for_proration()-');
4933   END IF;
4934 END prepare_group_for_proration;
4935 
4936 PROCEDURE dump_g_amt
4937 IS
4938 BEGIN
4939 IF PG_DEBUG = 'Y' THEN
4940 localdebug('-----------');
4941 localdebug('g_line_adj           : '|| g_line_adj);
4942 localdebug('g_tax_adj            : '|| g_tax_adj);
4943 localdebug('g_frt_adj            : '|| g_frt_adj);
4944 localdebug('g_chrg_adj           : '|| g_chrg_adj);
4945 localdebug('g_acctd_line_adj     : '|| g_acctd_line_adj);
4946 localdebug('g_acctd_tax_adj      : '|| g_acctd_tax_adj);
4947 localdebug('g_acctd_frt_adj      : '|| g_acctd_frt_adj);
4948 localdebug('g_acctd_chrg_adj     : '|| g_acctd_chrg_adj);
4949 
4950 localdebug('-----------');
4951 localdebug('g_line_applied  : '|| g_line_applied);
4952 localdebug('g_tax_applied   : '|| g_tax_applied);
4953 localdebug('g_frt_applied   : '|| g_frt_applied);
4954 localdebug('g_chrg_applied  : '|| g_chrg_applied );
4955 localdebug('g_line_ed       : '|| g_line_ed);
4956 localdebug('g_tax_ed        : '|| g_tax_ed);
4957 localdebug('g_frt_ed        : '|| g_frt_ed);
4958 localdebug('g_chrg_ed       : '|| g_chrg_ed);
4959 localdebug('g_line_uned     : '|| g_line_uned);
4960 localdebug('g_tax_uned      : '|| g_tax_uned);
4961 localdebug('g_frt_uned      : '|| g_frt_uned);
4962 localdebug('g_chrg_uned     : '|| g_chrg_uned);
4963 
4964 localdebug('g_acctd_line_applied   : '||g_acctd_line_applied);
4965 localdebug('g_acctd_tax_applied    : '|| g_acctd_tax_applied);
4966 localdebug('g_acctd_frt_applied    : '|| g_acctd_frt_applied);
4967 localdebug('g_acctd_chrg_applied   : '|| g_acctd_chrg_applied);
4968 localdebug('g_acctd_line_ed        : '|| g_acctd_line_ed);
4969 localdebug('g_acctd_tax_ed         : '|| g_acctd_tax_ed);
4970 localdebug('g_acctd_frt_ed         : '|| g_acctd_frt_ed);
4971 localdebug('g_acctd_chrg_ed        : '|| g_acctd_chrg_ed);
4972 localdebug('g_acctd_line_uned      : '|| g_acctd_line_uned);
4973 localdebug('g_acctd_tax_uned       : '|| g_acctd_tax_uned);
4974 localdebug('g_acctd_frt_uned       : '|| g_acctd_frt_uned);
4975 localdebug('g_acctd_chrg_uned      : '|| g_acctd_chrg_uned);
4976 localdebug('-----------');
4977 END IF;
4978 END;
4979 
4980 PROCEDURE conv_acctd_amt
4981   (p_pay_adj              IN VARCHAR2,
4982    p_adj_rec              IN ar_adjustments%ROWTYPE,
4983    p_app_rec              IN ar_receivable_applications%ROWTYPE,
4984    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type)
4985 IS
4986   l_acctd_amt  NUMBER;
4987 BEGIN
4988 IF PG_DEBUG = 'Y' THEN
4989 localdebug('arp_det_dist_pkg.conv_acctd_amt()+');
4990 localdebug('    p_pay_adj :'||p_pay_adj);
4991 localdebug('    p_app_rec.AMOUNT_APPLIED  :'||p_app_rec.AMOUNT_APPLIED);
4992 localdebug('    p_app_rec.LINE_APPLIED    :'||p_app_rec.LINE_APPLIED);
4993 localdebug('    p_app_rec.TAX_APPLIED     :'||p_app_rec.TAX_APPLIED);
4994 END IF;
4995 
4996   g_line_adj       := 0;
4997   g_tax_adj        := 0;
4998   g_frt_adj        := 0;
4999   g_chrg_adj       := 0;
5000   g_line_applied   := 0;
5001   g_tax_applied    := 0;
5002   g_frt_applied    := 0;
5003   g_chrg_applied   := 0;
5004   g_line_ed        := 0;
5005   g_tax_ed         := 0;
5006   g_frt_ed         := 0;
5007   g_chrg_ed        := 0;
5008   g_line_uned      := 0;
5009   g_tax_uned       := 0;
5010   g_frt_uned       := 0;
5011   g_chrg_uned      := 0;
5012 
5013 
5014   g_acctd_line_adj       := 0;
5015   g_acctd_tax_adj        := 0;
5016   g_acctd_frt_adj        := 0;
5017   g_acctd_chrg_adj       := 0;
5018   g_acctd_line_applied   := 0;
5019   g_acctd_tax_applied    := 0;
5020   g_acctd_frt_applied    := 0;
5021   g_acctd_chrg_applied   := 0;
5022   g_acctd_line_ed        := 0;
5023   g_acctd_tax_ed         := 0;
5024   g_acctd_frt_ed         := 0;
5025   g_acctd_chrg_ed        := 0;
5026   g_acctd_line_uned      := 0;
5027   g_acctd_tax_uned       := 0;
5028   g_acctd_frt_uned       := 0;
5029   g_acctd_chrg_uned      := 0;
5030 
5031 
5032   IF p_pay_adj   = 'ADJ' THEN
5033     -- Trx currency
5034     -- HYU Adjustment distribution in the same sign of the header adjustment rem * -1
5035     -- because detail distribution passed for a negative adjustment ends to create
5036     -- debit write-off distributions in ARD. ARALLOCB create the write-off distributions
5037     -- in case of adjustments
5038     g_line_adj      := NVL(p_adj_rec.LINE_ADJUSTED,0);    -- -1*
5039     g_frt_adj       := NVL(p_adj_rec.FREIGHT_ADJUSTED,0); -- -1*
5040     g_tax_adj       := NVL(p_adj_rec.TAX_ADJUSTED,0);     -- -1*
5041     g_chrg_adj      := NVL(p_adj_rec.RECEIVABLES_CHARGES_ADJUSTED ,0);  -- -1*
5042     -- Based currency
5043     l_acctd_amt     := NVL(p_adj_rec.acctd_amount,0);     -- -1*
5044 
5045     arp_util.Set_Buckets(
5046                      p_header_acctd_amt   => l_acctd_amt                     ,
5047                      p_base_currency      => p_ae_sys_rec.base_currency      ,
5048                      p_exchange_rate      => g_cust_inv_rec.exchange_rate    ,
5049                      p_base_precision     => p_ae_sys_rec.base_precision     ,
5050                      p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit  ,
5051                      p_tax_amt            => g_tax_adj                       ,
5052                      p_charges_amt        => g_chrg_adj                      ,
5053                      p_line_amt           => g_line_adj                      ,
5054                      p_freight_amt        => g_frt_adj                       ,
5055                      p_tax_acctd_amt      => g_acctd_tax_adj                 ,
5056                      p_charges_acctd_amt  => g_acctd_chrg_adj                ,
5057                      p_line_acctd_amt     => g_acctd_line_adj                ,
5058                      p_freight_acctd_amt  => g_acctd_frt_adj                  );
5059 
5060   ELSE
5061     -- Distribution sign integration between ARPDDB and ARALLOCB
5062     -- To integrate with ARALLOCB as application distributions are * -1 in ARALLOCB
5063     -- For positive distributions creation, we need to pass a negative distribution
5064     -- => -1 * detail_dist (DR side) --> ARALLOCB (* -1) becomes positive distribution
5065     --    therefore created as Credit side of the accounting. Note ARALLOCB creates
5066     --    Credit REC distributions for Application
5067     g_line_applied    := NVL(p_app_rec.LINE_APPLIED,0)  * -1;
5068     g_tax_applied     := NVL(p_app_rec.TAX_APPLIED,0)   * -1;
5069     g_frt_applied     := NVL(p_app_rec.FREIGHT_APPLIED,0) * -1;
5070     g_chrg_applied    := NVL(p_app_rec.RECEIVABLES_CHARGES_APPLIED,0) * -1;
5071     l_acctd_amt       := NVL(p_app_rec.ACCTD_AMOUNT_APPLIED_TO,0) * -1;
5072 
5073     IF l_acctd_amt <> 0 THEN
5074 
5075       arp_util.Set_Buckets(p_header_acctd_amt   => l_acctd_amt                        ,
5076                            p_base_currency      => p_ae_sys_rec.base_currency         ,
5077                            p_exchange_rate      => g_cust_inv_rec.exchange_rate       ,
5078                            p_base_precision     => p_ae_sys_rec.base_precision        ,
5079                            p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit     ,
5080                            p_tax_amt            => g_tax_applied                      ,
5081                            p_charges_amt        => g_chrg_applied                     ,
5082                            p_line_amt           => g_line_applied                     ,
5083                            p_freight_amt        => g_frt_applied                      ,
5084                            p_tax_acctd_amt      => g_acctd_tax_applied                ,
5085                            p_charges_acctd_amt  => g_acctd_chrg_applied               ,
5086                            p_line_acctd_amt     => g_acctd_line_applied               ,
5087                            p_freight_acctd_amt  => g_acctd_frt_applied                 );
5088     END IF;
5089 
5090     --
5091     -- For ED and UNED discounts they are handled as adjustment distributions
5092     --    ARALLOCB that is ARALLOCB will create the Write-off side
5093     --    The credit REC for ED UNED are created by ARRECACB arp_receipt_main
5094     --    so for a positive ED it is like a negative adjustments, so detail_distributions
5095     --    for ED and UNED from ARPDDB need to be multiplied by -1 to be passed to ARALLOCB
5096     --
5097     g_line_ed         := NVL(p_app_rec.LINE_EDISCOUNTED,0) * -1;
5098     g_tax_ed          := NVL(p_app_rec.TAX_EDISCOUNTED,0)  * -1;
5099     g_frt_ed          := NVL(p_app_rec.FREIGHT_EDISCOUNTED,0) * -1;
5100     g_chrg_ed         := NVL(p_app_rec.CHARGES_EDISCOUNTED,0) * -1;
5101     l_acctd_amt       := NVL(p_app_rec.ACCTD_EARNED_DISCOUNT_TAKEN,0) * -1;
5102 
5103     IF l_acctd_amt <> 0 THEN
5104 
5105         arp_util.Set_Buckets(
5106                   p_header_acctd_amt   => l_acctd_amt                    ,
5107                   p_base_currency      => p_ae_sys_rec.base_currency     ,
5108                   p_exchange_rate      => g_cust_inv_rec.exchange_rate   ,
5109                   p_base_precision     => p_ae_sys_rec.base_precision    ,
5110                   p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit ,
5111                   p_tax_amt            => g_tax_ed                       ,
5112                   p_charges_amt        => g_chrg_ed                      ,
5113                   p_line_amt           => g_line_ed                      ,
5114                   p_freight_amt        => g_frt_ed                       ,
5115                   p_tax_acctd_amt      => g_acctd_tax_ed                 ,
5116                   p_charges_acctd_amt  => g_acctd_chrg_ed                ,
5117                   p_line_acctd_amt     => g_acctd_line_ed                ,
5118                   p_freight_acctd_amt  => g_acctd_frt_ed                  );
5119     END IF;
5120 
5121 
5122     g_line_uned       := NVL(p_app_rec.LINE_UEDISCOUNTED,0) * -1;
5123     g_tax_uned        := NVL(p_app_rec.TAX_UEDISCOUNTED,0)  * -1;
5124     g_frt_uned        := NVL(p_app_rec.FREIGHT_UEDISCOUNTED,0) * -1;
5125     g_chrg_uned       := NVL(p_app_rec.CHARGES_UEDISCOUNTED,0) * -1;
5126     l_acctd_amt       := NVL(p_app_rec.ACCTD_UNEARNED_DISCOUNT_TAKEN,0) * -1;
5127 
5128     IF l_acctd_amt <> 0 THEN
5129 
5130         arp_util.Set_Buckets(
5131                   p_header_acctd_amt   => l_acctd_amt                     ,
5132                   p_base_currency      => p_ae_sys_rec.base_currency      ,
5133                   p_exchange_rate      => g_cust_inv_rec.exchange_rate    ,
5134                   p_base_precision     => p_ae_sys_rec.base_precision     ,
5135                   p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit  ,
5136                   p_tax_amt            => g_tax_uned                      ,
5137                   p_charges_amt        => g_chrg_uned                     ,
5138                   p_line_amt           => g_line_uned                     ,
5139                   p_freight_amt        => g_frt_uned                      ,
5140                   p_tax_acctd_amt      => g_acctd_tax_uned                ,
5141                   p_charges_acctd_amt  => g_acctd_chrg_uned               ,
5142                   p_line_acctd_amt     => g_acctd_line_uned               ,
5143                   p_freight_acctd_amt  => g_acctd_frt_uned                 );
5144     END IF;
5145 
5146   END IF;
5147   dump_g_amt;
5148 IF PG_DEBUG = 'Y' THEN
5149 localdebug('arp_det_dist_pkg.conv_acctd_amt()-');
5150 END IF;
5151 END conv_acctd_amt;
5152 
5153 --
5154 -- This routine is similar to conv_acctd_amt, the only thing is it removes dependencies on
5155 -- org context so that it is usable in Down time upgrade
5156 --
5157 PROCEDURE conv_acctd_amt_upg
5158   (p_pay_adj              IN VARCHAR2,
5159    p_adj_rec              IN ar_adjustments%ROWTYPE,
5160    p_app_rec              IN ar_receivable_applications%ROWTYPE,
5161    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type)
5162 IS
5163   l_acctd_amt  NUMBER;
5164 BEGIN
5165   g_acctd_line_adj       := 0;
5166   g_acctd_tax_adj        := 0;
5167   g_acctd_frt_adj        := 0;
5168   g_acctd_chrg_adj       := 0;
5169   g_acctd_line_applied   := 0;
5170   g_acctd_tax_applied    := 0;
5171   g_acctd_frt_applied    := 0;
5172   g_acctd_chrg_applied   := 0;
5173   g_acctd_line_ed        := 0;
5174   g_acctd_tax_ed         := 0;
5175   g_acctd_frt_ed         := 0;
5176   g_acctd_chrg_ed        := 0;
5177   g_acctd_line_uned      := 0;
5178   g_acctd_tax_uned       := 0;
5179   g_acctd_frt_uned       := 0;
5180   g_acctd_chrg_uned      := 0;
5181 
5182 
5183   IF p_pay_adj   = 'ADJ' THEN
5184     -- Trx currency
5185     -- HYU Adjustment distribution in the same sign of the header adjustment rem * -1
5186     -- because detail distribution passed for a negative adjustment ends to create
5187     -- debit write-off distributions in ARD. ARALLOCB create the write-off distributions
5188     -- in case of adjustments
5189     g_line_adj      := NVL(p_adj_rec.LINE_ADJUSTED,0);    -- -1*
5190     g_frt_adj       := NVL(p_adj_rec.FREIGHT_ADJUSTED,0); -- -1*
5191     g_tax_adj       := NVL(p_adj_rec.TAX_ADJUSTED,0);     -- -1*
5192     g_chrg_adj      := NVL(p_adj_rec.RECEIVABLES_CHARGES_ADJUSTED ,0);  -- -1*
5193     -- Based currency
5194     l_acctd_amt     := NVL(p_adj_rec.acctd_amount,0);     -- -1*
5195 
5196     ar_unposted_item_util.Set_Buckets(
5197                      p_header_acctd_amt   => l_acctd_amt                     ,
5198                      p_base_currency      => p_ae_sys_rec.base_currency      ,
5199                      p_exchange_rate      => g_cust_inv_rec.exchange_rate    ,
5200                      p_base_precision     => p_ae_sys_rec.base_precision     ,
5201                      p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit  ,
5202                      p_tax_amt            => g_tax_adj                       ,
5203                      p_charges_amt        => g_chrg_adj                      ,
5204                      p_line_amt           => g_line_adj                      ,
5205                      p_freight_amt        => g_frt_adj                       ,
5206                      p_tax_acctd_amt      => g_acctd_tax_adj                 ,
5207                      p_charges_acctd_amt  => g_acctd_chrg_adj                ,
5208                      p_line_acctd_amt     => g_acctd_line_adj                ,
5209                      p_freight_acctd_amt  => g_acctd_frt_adj                  );
5210 
5211   ELSE
5212     -- Distribution sign integration between ARPDDB and ARALLOCB
5213     -- To integrate with ARALLOCB as application distributions are * -1 in ARALLOCB
5214     -- For positive distributions creation, we need to pass a negative distribution
5215     -- => -1 * detail_dist (DR side) --> ARALLOCB (* -1) becomes positive distribution
5216     --    therefore created as Credit side of the accounting. Note ARALLOCB creates
5217     --    Credit REC distributions for Application
5218     g_line_applied    := NVL(p_app_rec.LINE_APPLIED,0)  * -1;
5219     g_tax_applied     := NVL(p_app_rec.TAX_APPLIED,0)   * -1;
5220     g_frt_applied     := NVL(p_app_rec.FREIGHT_APPLIED,0) * -1;
5221     g_chrg_applied    := NVL(p_app_rec.RECEIVABLES_CHARGES_APPLIED,0) * -1;
5222     l_acctd_amt       := NVL(p_app_rec.ACCTD_AMOUNT_APPLIED_TO,0) * -1;
5223 
5224     IF l_acctd_amt <> 0 THEN
5225 
5226       ar_unposted_item_util.Set_Buckets(p_header_acctd_amt   => l_acctd_amt                        ,
5227                            p_base_currency      => p_ae_sys_rec.base_currency         ,
5228                            p_exchange_rate      => g_cust_inv_rec.exchange_rate       ,
5229                            p_base_precision     => p_ae_sys_rec.base_precision        ,
5230                            p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit     ,
5231                            p_tax_amt            => g_tax_applied                      ,
5232                            p_charges_amt        => g_chrg_applied                     ,
5233                            p_line_amt           => g_line_applied                     ,
5234                            p_freight_amt        => g_frt_applied                      ,
5235                            p_tax_acctd_amt      => g_acctd_tax_applied                ,
5236                            p_charges_acctd_amt  => g_acctd_chrg_applied               ,
5237                            p_line_acctd_amt     => g_acctd_line_applied               ,
5238                            p_freight_acctd_amt  => g_acctd_frt_applied                 );
5239     END IF;
5240 
5241     --
5242     -- For ED and UNED discounts they are handled as adjustment distributions
5243     --    ARALLOCB that is ARALLOCB will create the Write-off side
5244     --    The credit REC for ED UNED are created by ARRECACB arp_receipt_main
5245     --    so for a positive ED it is like a negative adjustments, so detail_distributions
5246     --    for ED and UNED from ARPDDB need to be multiplied by -1 to be passed to ARALLOCB
5247     --
5248     g_line_ed         := NVL(p_app_rec.LINE_EDISCOUNTED,0) * -1;
5249     g_tax_ed          := NVL(p_app_rec.TAX_EDISCOUNTED,0)  * -1;
5250     g_frt_ed          := NVL(p_app_rec.FREIGHT_EDISCOUNTED,0) * -1;
5251     g_chrg_ed         := NVL(p_app_rec.CHARGES_EDISCOUNTED,0) * -1;
5252     l_acctd_amt       := NVL(p_app_rec.ACCTD_EARNED_DISCOUNT_TAKEN,0) * -1;
5253 
5254     IF l_acctd_amt <> 0 THEN
5255 
5256         ar_unposted_item_util.Set_Buckets(
5257                   p_header_acctd_amt   => l_acctd_amt                    ,
5258                   p_base_currency      => p_ae_sys_rec.base_currency     ,
5259                   p_exchange_rate      => g_cust_inv_rec.exchange_rate   ,
5260                   p_base_precision     => p_ae_sys_rec.base_precision    ,
5261                   p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit ,
5262                   p_tax_amt            => g_tax_ed                       ,
5263                   p_charges_amt        => g_chrg_ed                      ,
5264                   p_line_amt           => g_line_ed                      ,
5265                   p_freight_amt        => g_frt_ed                       ,
5266                   p_tax_acctd_amt      => g_acctd_tax_ed                 ,
5267                   p_charges_acctd_amt  => g_acctd_chrg_ed                ,
5268                   p_line_acctd_amt     => g_acctd_line_ed                ,
5269                   p_freight_acctd_amt  => g_acctd_frt_ed                  );
5270     END IF;
5271 
5272 
5273     g_line_uned       := NVL(p_app_rec.LINE_UEDISCOUNTED,0) * -1;
5274     g_tax_uned        := NVL(p_app_rec.TAX_UEDISCOUNTED,0)  * -1;
5275     g_frt_uned        := NVL(p_app_rec.FREIGHT_UEDISCOUNTED,0) * -1;
5276     g_chrg_uned       := NVL(p_app_rec.CHARGES_UEDISCOUNTED,0) * -1;
5277     l_acctd_amt       := NVL(p_app_rec.ACCTD_UNEARNED_DISCOUNT_TAKEN,0) * -1;
5278 
5279     IF l_acctd_amt <> 0 THEN
5280 
5281         ar_unposted_item_util.Set_Buckets(
5282                   p_header_acctd_amt   => l_acctd_amt                     ,
5283                   p_base_currency      => p_ae_sys_rec.base_currency      ,
5284                   p_exchange_rate      => g_cust_inv_rec.exchange_rate    ,
5285                   p_base_precision     => p_ae_sys_rec.base_precision     ,
5286                   p_base_min_acc_unit  => p_ae_sys_rec.base_min_acc_unit  ,
5287                   p_tax_amt            => g_tax_uned                      ,
5288                   p_charges_amt        => g_chrg_uned                     ,
5289                   p_line_amt           => g_line_uned                     ,
5290                   p_freight_amt        => g_frt_uned                      ,
5291                   p_tax_acctd_amt      => g_acctd_tax_uned                ,
5292                   p_charges_acctd_amt  => g_acctd_chrg_uned               ,
5293                   p_line_acctd_amt     => g_acctd_line_uned               ,
5294                   p_freight_acctd_amt  => g_acctd_frt_uned                 );
5295     END IF;
5296 
5297   END IF;
5298 END conv_acctd_amt_upg;
5299 
5300 
5301 
5302 FUNCTION the_concern_bucket
5303   (p_pay_adj        IN VARCHAR2,
5304    p_line_type      IN VARCHAR2,
5305    p_acctd          IN VARCHAR2,
5306    p_chrg_bucket    IN VARCHAR2,
5307    p_frt_bucket     IN VARCHAR2)
5308 RETURN NUMBER IS
5309     l_res   NUMBER;
5310 BEGIN
5311     IF PG_DEBUG = 'Y' THEN
5312     localdebug('arp_det_dist_pkg.the_concern_bucket()+');
5313     localdebug('  p_pay_adj     :' ||p_pay_adj);
5314     localdebug('  p_line_type   :' ||p_line_type);
5315     localdebug('  p_acctd       :' ||p_acctd);
5316     localdebug('  p_chrg_bucket :' ||p_chrg_bucket);
5317     localdebug('  p_frt_bucket  :' ||p_frt_bucket);
5318     END IF;
5319     -- LINE over LINE
5320     -- TAX over TAX
5321     -- FREIGHT over LINE FOR ADJ
5322     --   and FREIGHT over LINE frt_adj_rem and over FREIGHT on amt_rem
5323       -- Chrg bucket on LINE for 11i
5324       -- Chrg bucket on LINE+FREIGHT for 11iX
5325     -- ED and UNED Revenue on Revenue line
5326     -- ED and UNED Tax on Tax line
5327     -- ED and UNED Chrg on Rev Line
5328     -- ED and UNED frt  on Rev Line
5329 
5330 
5331 IF PG_DEBUG = 'Y' THEN
5332 localdebug(' For Regular Transaction');
5333 END IF;
5334 
5335     IF p_chrg_bucket = 'Y' THEN
5336 
5337       IF p_line_type IN ('LINE','CB') THEN
5338         IF    p_pay_adj = 'ADJ' THEN
5339           -- Chrg adjusted on Rev Line
5340           IF p_acctd = 'Y' THEN
5341            l_res    := g_acctd_chrg_adj;     ELSE l_res    := g_chrg_adj;
5342           END IF;
5343         ELSIF p_pay_adj = 'APP' THEN
5344           -- Chrg paied on Rev line
5345           IF   p_acctd = 'Y' THEN
5346            l_res    := g_acctd_chrg_applied; ELSE l_res    := g_chrg_applied;
5347           END IF;
5348         ELSIF p_pay_adj = 'ED' THEN
5349           -- ED charge on Rev line
5350           IF   p_acctd = 'Y' THEN
5351            l_res    := g_acctd_chrg_ed;      ELSE l_res    := g_chrg_ed;
5352           END IF;
5353         ELSIF p_pay_adj = 'UNED' THEN
5354           --UNED charge on Rev line
5355           IF   p_acctd = 'Y' THEN
5356            l_res    := g_acctd_chrg_uned;    ELSE l_res    := g_chrg_uned;
5357           END IF;
5358         END IF;
5359       ELSIF  p_line_type IN ('CHARGES') THEN
5360 --{HYUCHRG
5361         IF p_pay_adj = 'APP' THEN
5362           -- Chrg paid on Chrg line
5363           IF   p_acctd = 'Y' THEN
5364            l_res    := g_acctd_chrg_applied; ELSE l_res    := g_chrg_applied;
5365           END IF;
5366         ELSE
5367            l_res := 0;
5368         END IF;
5369 --}
5370 
5371       ELSE
5372         -- Not line type LINE not chrg should be returned
5373         l_res := 0;
5374       END IF;
5375 
5376     ELSIF  p_frt_bucket = 'Y' THEN
5377 
5378       IF    p_line_type IN ('LINE','CB') THEN
5379         IF    p_pay_adj = 'ADJ' THEN
5380           -- Freight adjusted over Rev lines only
5381           IF   p_acctd = 'Y' THEN
5382            l_res    :=  g_acctd_frt_adj;     ELSE l_res    :=  g_frt_adj;
5383           END IF;
5384         ELSIF p_pay_adj = 'APP' THEN
5385           -- Freight paied over Rev line frt_adj_rem
5386           IF   p_acctd = 'Y' THEN
5387            l_res    := g_acctd_frt_applied;  ELSE l_res    := g_frt_applied;
5388           END IF;
5389         ELSIF p_pay_adj = 'ED' THEN
5390           -- ED Frt on Rev line
5391           IF   p_acctd = 'Y' THEN
5392            l_res    := g_acctd_frt_ed;       ELSE l_res    := g_frt_ed;
5393           END IF;
5394         ELSIF p_pay_adj = 'UNED' THEN
5395           -- UNED Frt on Rev line
5396           IF   p_acctd = 'Y' THEN
5397            l_res    := g_acctd_frt_uned;     ELSE l_res    := g_frt_uned;
5398           END IF;
5399         END IF;
5400       ELSIF p_line_type  = 'FREIGHT' THEN
5401         IF    p_pay_adj = 'ADJ' THEN
5402            -- Freight adjusted over rev line only
5403            l_res   := 0;
5404         ELSIF p_pay_adj = 'APP' THEN
5405           -- Freight paied over freight line remaining amount
5406           IF   p_acctd = 'Y' THEN
5407             l_res    := g_acctd_frt_applied; ELSE l_res    := g_frt_applied;
5408           END IF;
5409         ELSIF p_pay_adj = 'ED' THEN
5410           IF   p_acctd = 'Y' THEN
5411            --{ HYUED Frt over Rev line Only
5412             l_res    := g_acctd_frt_ed;       ELSE l_res    := g_frt_ed;
5413 --           l_res := 0;                      ELSE l_res := 0;
5414            --}
5415           END IF;
5416         ELSIF p_pay_adj = 'UNED' THEN
5417           IF   p_acctd = 'Y' THEN
5418            --{ Frt HYUUNED over Rev line Only
5419            l_res    := g_acctd_frt_uned;     ELSE l_res    := g_frt_uned;
5420           -- l_res := 0;                      ELSE l_res := 0;
5421           END IF;
5422         END IF;
5423       ELSE
5424         -- Not Freight amount affected if the line type is TAX
5425         l_res := 0;
5426       END IF;
5427 
5428     ELSIF  p_chrg_bucket = 'N' AND p_frt_bucket = 'N' THEN
5429 
5430       IF p_line_type IN ('LINE','CB') THEN
5431         IF    p_pay_adj = 'ADJ' THEN
5432           -- Rev adjusted over Rev Line
5433           IF p_acctd = 'Y' THEN
5434             l_res    := g_acctd_line_adj;    ELSE  l_res    := g_line_adj;
5435           END IF;
5436         ELSIF p_pay_adj = 'APP' THEN
5437           -- Rev paied over Rev Line
5438           IF p_acctd = 'Y' THEN
5439            l_res    := g_acctd_line_applied; ELSE  l_res    := g_line_applied;
5440           END IF;
5441         ELSIF p_pay_adj = 'ED' THEN
5442           -- ED Rev on Rev line
5443           IF p_acctd = 'Y' THEN
5444            l_res    := g_acctd_line_ed;      ELSE  l_res    := g_line_ed;
5445           END IF;
5446         ELSIF p_pay_adj = 'UNED' THEN
5447           -- UNED Rev on Rev line
5448           IF p_acctd = 'Y' THEN
5449            l_res    := g_acctd_line_uned;    ELSE  l_res    := g_line_uned;
5450           END IF;
5451         END IF;
5452       ELSIF p_line_type = 'TAX' THEN
5453         IF    p_pay_adj = 'ADJ' THEN
5454           --Tax adjusted on Tax Line
5455           IF p_acctd = 'Y' THEN
5456            l_res    := g_acctd_tax_adj;      ELSE l_res    := g_tax_adj;
5457           END IF;
5458         ELSIF p_pay_adj = 'APP' THEN
5459           -- Tax applied on Tax line
5460           IF p_acctd = 'Y' THEN
5461            l_res    := g_acctd_tax_applied;  ELSE l_res    := g_tax_applied;
5462           END IF;
5463         ELSIF p_pay_adj = 'ED' THEN
5464           -- ED Tax over Tax line
5465           IF p_acctd = 'Y' THEN
5466            l_res    := g_acctd_tax_ed;       ELSE l_res    := g_tax_ed;
5467           END IF;
5468         ELSIF p_pay_adj = 'UNED' THEN
5469           -- UNED Tax over Tax Line
5470           IF p_acctd = 'Y' THEN
5471            l_res    := g_acctd_tax_uned;     ELSE l_res    := g_tax_uned;
5472           END IF;
5473         END IF;
5474       ELSE
5475         -- No tax amount affected to Rev or Frt line
5476         l_res := 0;
5477       END IF;
5478     END IF;
5479 
5480     IF PG_DEBUG = 'Y' THEN
5481     localdebug('  l_res : '|| l_res);
5482     localdebug('arp_det_dist_pkg.the_concern_bucket()-');
5483     END IF;
5484     RETURN l_res;
5485 END the_concern_bucket;
5486 
5487 
5488 
5489 PROCEDURE prepare_trx_line_proration
5490   (p_gt_id            IN VARCHAR2,
5491    p_customer_trx_id  IN NUMBER,
5492    p_pay_adj          IN VARCHAR2,
5493    p_adj_rec          IN ar_adjustments%ROWTYPE,
5494    p_app_rec          IN ar_receivable_applications%ROWTYPE,
5495    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type)
5496 IS
5497 BEGIN
5498   IF PG_DEBUG = 'Y' THEN
5499   localdebug('arp_det_dist_pkg.prepare_trx_line_proration()+');
5500   END IF;
5501 
5502 
5503 -- To executed independently
5504 --    prepare_group_for_proration(p_gt_id            => p_gt_id,
5505 --                                p_customer_trx_id  => p_customer_trx_id);
5506 --    update_group_line(p_gt_id           => p_gt_id,
5507 --                   p_customer_trx_id => p_customer_trx_id);
5508 
5509    --replaced the update with an insert for better performance[Bug 6454022]
5510    INSERT INTO RA_AR_AMOUNTS_GT (
5511 	gt_id ,
5512 	gp_level,
5513 	base_rec_rowid,
5514 	ref_customer_trx_id ,
5515 	ref_customer_trx_line_id,
5516 
5517    -- ADJ and APP
5518 	base_pro_amt       ,
5519 	base_pro_acctd_amt ,
5520 	BASE_FRT_PRO_AMT       ,
5521 	BASE_FRT_PRO_ACCTD_AMT ,
5522 	BASE_TAX_PRO_AMT       ,
5523 	BASE_TAX_PRO_ACCTD_AMT ,
5524 	BASE_CHRG_PRO_AMT       ,
5525 	BASE_CHRG_PRO_ACCTD_AMT ,
5526 
5527 	elmt_pro_amt       ,
5528 	elmt_pro_acctd_amt ,
5529 	ELMT_FRT_PRO_AMT       ,
5530 	ELMT_FRT_PRO_ACCTD_AMT ,
5531 	ELMT_TAX_PRO_AMT       ,
5532 	ELMT_TAX_PRO_ACCTD_AMT ,
5533 	ELMT_CHRG_PRO_AMT       ,
5534 	ELMT_CHRG_PRO_ACCTD_AMT ,
5535 
5536 	buc_alloc_amt      ,
5537 	buc_alloc_acctd_amt,
5538 	buc_frt_alloc_amt      ,
5539 	buc_frt_alloc_acctd_amt,
5540 	buc_tax_alloc_amt      ,
5541 	buc_tax_alloc_acctd_amt,
5542 	buc_chrg_alloc_amt      ,
5543 	buc_chrg_alloc_acctd_amt,
5544 	--D
5545 	base_ed_pro_amt       ,
5546 	base_ed_pro_acctd_amt ,
5547 	BASE_ed_FRT_PRO_AMT       ,
5548 	BASE_ed_FRT_PRO_ACCTD_AMT ,
5549 	BASE_ed_TAX_PRO_AMT       ,
5550 	BASE_ed_TAX_PRO_ACCTD_AMT ,
5551 	BASE_ed_CHRG_PRO_AMT       ,
5552 	BASE_ed_CHRG_PRO_ACCTD_AMT ,
5553 
5554 	elmt_ed_pro_amt       ,
5555 	elmt_ed_pro_acctd_amt ,
5556 	ELMT_ed_FRT_PRO_AMT       ,
5557 	ELMT_ed_FRT_PRO_ACCTD_AMT ,
5558 	ELMT_ed_TAX_PRO_AMT       ,
5559 	ELMT_ed_TAX_PRO_ACCTD_AMT ,
5560 	ELMT_ed_CHRG_PRO_AMT       ,
5561 	ELMT_ed_CHRG_PRO_ACCTD_AMT ,
5562 
5563 	buc_ed_alloc_amt      ,
5564 	buc_ed_alloc_acctd_amt,
5565 	buc_ed_frt_alloc_amt      ,
5566 	buc_ed_frt_alloc_acctd_amt,
5567 	buc_ed_tax_alloc_amt      ,
5568 	buc_ed_tax_alloc_acctd_amt,
5569 	buc_ed_chrg_alloc_amt      ,
5570 	buc_ed_chrg_alloc_acctd_amt,
5571 	--NED
5572 	base_uned_pro_amt       ,
5573 	base_uned_pro_acctd_amt ,
5574 	BASE_uned_FRT_PRO_AMT       ,
5575 	BASE_uned_FRT_PRO_ACCTD_AMT ,
5576 	BASE_uned_TAX_PRO_AMT       ,
5577 	BASE_uned_TAX_PRO_ACCTD_AMT ,
5578 	BASE_uned_CHRG_PRO_AMT       ,
5579 	BASE_uned_CHRG_PRO_ACCTD_AMT ,
5580 
5581 	elmt_uned_pro_amt       ,
5582 	elmt_uned_pro_acctd_amt ,
5583 	ELMT_uned_FRT_PRO_AMT       ,
5584 	ELMT_uned_FRT_PRO_ACCTD_AMT ,
5585 	ELMT_uned_TAX_PRO_AMT       ,
5586 	ELMT_uned_TAX_PRO_ACCTD_AMT ,
5587 	ELMT_uned_CHRG_PRO_AMT       ,
5588 	ELMT_uned_CHRG_PRO_ACCTD_AMT ,
5589 
5590 	buc_uned_alloc_amt      ,
5591 	buc_uned_alloc_acctd_amt,
5592 	buc_uned_frt_alloc_amt      ,
5593 	buc_uned_frt_alloc_acctd_amt,
5594 	buc_uned_tax_alloc_amt      ,
5595 	buc_uned_tax_alloc_acctd_amt,
5596 	buc_uned_chrg_alloc_amt      ,
5597 	buc_uned_chrg_alloc_acctd_amt
5598      )
5599 
5600 
5601     SELECT /*+INDEX(c ra_ar_n1) INDEX(b ra_ar_n1) INDEX(d RA_AR_AMOUNTS_GT_N1)*/
5602            c.gt_id
5603 	   ,b.gp_level
5604 	   ,b.rowid
5605            ,c.ref_customer_trx_id
5606            ,c.ref_customer_trx_line_id
5607           /**************************
5608           -- ADJ and APP
5609           **************************/
5610       --Base
5611            ,CASE WHEN g_line_flag = 'INTERFACE' THEN b.sum_int_line_amount ELSE d.elmt_pro_amt END
5612            ,CASE WHEN g_line_flag = 'INTERFACE' THEN b.sum_int_line_amount ELSE d.elmt_pro_acctd_amt END
5613            ,d.ELMT_FRT_PRO_AMT
5614            ,d.ELMT_FRT_PRO_ACCTD_AMT
5615            ,CASE WHEN g_tax_flag = 'INTERFACE' THEN b.sum_int_tax_amount ELSE d.ELMT_TAX_PRO_AMT END
5616            ,CASE WHEN g_tax_flag = 'INTERFACE' THEN b.sum_int_tax_amount ELSE d.ELMT_TAX_PRO_ACCTD_AMT END
5617            ,d.ELMT_CHRG_PRO_AMT
5618            ,d.ELMT_CHRG_PRO_ACCTD_AMT
5619        --Elmt
5620             -- For line
5621            ,CASE WHEN g_line_flag = 'INTERFACE' THEN b.int_line_amount
5622             ELSE
5623             DECODE(p_pay_adj,
5624                  'ADJ',DECODE(b.SUM_LINE_REM_AMT, 0 ,
5625                               b.DUE_ORIG_AMT ,
5626                               b.DUE_REM_AMT),
5627                  b.DUE_REM_AMT)
5628             END
5629            ,CASE WHEN g_line_flag = 'INTERFACE' THEN b.int_line_amount
5630             ELSE
5631             DECODE(p_pay_adj,
5632                  'ADJ',DECODE(b.SUM_LINE_REM_ACCTD_AMT, 0 ,
5633                               b.DUE_ORIG_ACCTD_AMT ,
5634                               b.DUE_REM_ACCTD_AMT),
5635                  b.DUE_REM_ACCTD_AMT)
5636             END
5637             -- For freight
5638            ,DECODE(p_pay_adj,
5639                  'ADJ',DECODE(b.SUM_LINE_REM_AMT, 0 ,
5640                               b.DUE_ORIG_AMT ,
5641                               b.DUE_REM_AMT),
5642                  DECODE(b.line_type,'FREIGHT', b.FRT_REM_AMT,
5643                                     'LINE'   , b.frt_adj_rem_amt,
5644                                     'CB'     , b.frt_adj_rem_amt, 0))
5645            ,DECODE(p_pay_adj,
5646                  'ADJ',DECODE(b.SUM_LINE_REM_ACCTD_AMT, 0 ,
5647                               b.DUE_ORIG_ACCTD_AMT ,
5648                               b.DUE_REM_ACCTD_AMT),
5649                  DECODE(b.line_type,'FREIGHT', b.FRT_REM_ACCTD_AMT,
5650                                     'LINE'   , b.frt_adj_rem_acctd_amt,
5651                                     'CB'     , b.frt_adj_rem_acctd_amt,0))
5652             -- For tax
5653            ,CASE WHEN g_tax_flag = 'INTERFACE' THEN b.int_tax_amount
5654             ELSE
5655             DECODE(p_pay_adj,
5656                  'ADJ',DECODE(b.SUM_LINE_TAX_REM_AMT, 0 ,
5657                               b.TAX_ORIG_AMT ,
5658                               b.TAX_REM_AMT),
5659                  b.TAX_REM_AMT)
5660             END
5661            ,CASE WHEN g_tax_flag = 'INTERFACE' THEN b.int_tax_amount
5662             ELSE
5663             DECODE(p_pay_adj,
5664                  'ADJ',DECODE(b.SUM_LINE_TAX_REM_ACCTD_AMT, 0 ,
5665                               b.TAX_ORIG_ACCTD_AMT ,
5666                               b.TAX_REM_ACCTD_AMT),
5667                  b.TAX_REM_ACCTD_AMT)
5668             END
5669             -- For Chrg
5670            ,DECODE(p_pay_adj,
5671                  'ADJ',DECODE(b.SUM_LINE_REM_AMT, 0 ,
5672                               b.DUE_ORIG_AMT ,
5673                               b.DUE_REM_AMT),
5674                  DECODE(b.line_type,'CHARGES', b.CHRG_REM_AMT,
5675                                     'LINE'   , b.chrg_adj_rem_amt,
5676                                     'CB'     , b.chrg_adj_rem_amt, 0))
5677            ,DECODE(p_pay_adj,
5678                  'ADJ',DECODE(b.SUM_LINE_REM_ACCTD_AMT, 0 ,
5679                               b.DUE_ORIG_ACCTD_AMT ,
5680                               b.DUE_REM_ACCTD_AMT),
5681                  DECODE(b.line_type,'CHARGES', b.CHRG_REM_ACCTD_AMT,
5682                                     'LINE'   , b.chrg_adj_rem_acctd_amt,
5683                                     'CB'     , b.chrg_adj_rem_acctd_amt,0))
5684      --Bucket
5685            ,CASE WHEN g_line_flag = 'NORMAL' THEN c.TL_ALLOC_AMT ELSE
5686              arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
5687 	                                             b.line_type,
5688                                                 'N',
5689                                                 'N',
5690                                                 'N') END
5691            ,CASE WHEN g_line_flag = 'NORMAL' THEN c.TL_ALLOC_ACCTD_AMT ELSE
5692              arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
5693                                                 b.line_type,
5694                                                 'Y',
5695                                                 'N',
5696                                                 'N') END
5697            ,c.tl_frt_alloc_amt
5698            ,c.tl_frt_alloc_acctd_amt
5699            ,CASE WHEN g_tax_flag = 'NORMAL' THEN c.TL_TAX_ALLOC_AMT ELSE
5700               arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
5701                                                 b.line_type,
5702                                                 'N',
5703                                                 'N',
5704                                                 'N') END
5705            ,CASE WHEN g_tax_flag = 'NORMAL' THEN c.TL_TAX_ALLOC_ACCTD_AMT  ELSE
5706               arp_det_dist_pkg.the_concern_bucket(p_pay_adj,
5707                                                 b.line_type,
5708                                                 'Y',
5709                                                 'N',
5710                                                 'N') END
5711            ,c.TL_CHRG_ALLOC_AMT
5712            ,c.TL_CHRG_ALLOC_ACCTD_AMT
5713           /**************************
5714           -- ED
5715           **************************/
5716   --Base
5717            ,CASE WHEN g_ed_line_flag = 'INTERFACE' THEN b.sum_int_ed_line_amount ELSE d.elmt_ed_pro_amt END
5718            ,CASE WHEN g_ed_line_flag = 'INTERFACE' THEN b.sum_int_ed_line_amount ELSE d.elmt_ed_pro_acctd_amt END
5719            ,d.elmt_ed_frt_pro_amt
5720            ,d.elmt_ed_frt_pro_acctd_amt
5721            ,CASE WHEN g_ed_tax_flag = 'INTERFACE' THEN b.sum_int_ed_tax_amount ELSE d.elmt_ed_tax_pro_amt END
5722            ,CASE WHEN g_ed_tax_flag = 'INTERFACE' THEN b.sum_int_ed_tax_amount ELSE d.elmt_ed_tax_pro_acctd_amt END
5723            ,d.ELMT_ed_CHRG_PRO_AMT
5724            ,d.ELMT_ed_CHRG_PRO_ACCTD_AMT
5725             --
5726    --Elmt
5727            ,CASE WHEN g_ed_line_flag = 'INTERFACE' THEN b.int_ed_line_amount
5728             ELSE
5729             DECODE(b.line_type,'LINE'   , b.DUE_REM_AMT,
5730                                'CB'     , b.due_rem_amt, 0)
5731             END
5732            ,CASE WHEN g_ed_line_flag = 'INTERFACE' THEN b.int_ed_line_amount
5733             ELSE
5734             DECODE(b.line_type,'LINE'   , b.DUE_REM_ACCTD_AMT,
5735                                'CB'     , b.due_rem_acctd_amt,0)
5736             END
5737            ,DECODE(b.line_type,'FREIGHT', b.frt_REM_AMT,
5738                                'LINE'   , b.frt_adj_rem_amt,
5739                                'CB'     , b.frt_adj_rem_amt,0)
5740            ,DECODE(b.line_type,'FREIGHT', b.frt_REM_ACCTD_AMT,
5741                                'LINE'   , b.frt_adj_rem_acctd_amt,
5742                                'CB'     , b.frt_adj_rem_acctd_amt,0)
5743            ,CASE WHEN g_ed_tax_flag = 'INTERFACE' THEN b.int_ed_tax_amount ELSE  b.TAX_REM_AMT  END
5744            ,CASE WHEN g_ed_tax_flag = 'INTERFACE' THEN b.int_ed_tax_amount ELSE  b.TAX_REM_ACCTD_AMT END
5745            ,DECODE(b.line_type,'CHARGES', b.chrg_REM_AMT,
5746                                'LINE'   , b.chrg_adj_rem_amt,
5747                                'CB'     , b.chrg_adj_rem_amt,0)
5748            ,DECODE(b.line_type,'CHARGES', b.chrg_REM_ACCTD_AMT,
5749                                'LINE'   , b.chrg_adj_rem_acctd_amt,
5750                                'CB'     , b.chrg_adj_rem_acctd_amt,0)
5751    --Bucket
5752            ,CASE WHEN g_ed_line_flag = 'NORMAL' THEN c.TL_ED_ALLOC_AMT ELSE
5753              CASE when g_ed_req = 'Y' then
5754               arp_det_dist_pkg.the_concern_bucket('ED',
5755                                                 b.line_type,
5756                                                 'N',
5757                                                 'N',
5758                                                 'N')
5759              else 0 end
5760             END
5761            ,CASE WHEN g_ed_line_flag = 'NORMAL' THEN c.TL_ED_ALLOC_ACCTD_AMT ELSE
5762              CASE
5763                when  g_ed_req = 'Y' then
5764                 arp_det_dist_pkg.the_concern_bucket('ED',
5765                                                 b.line_type,
5766                                                 'Y',
5767                                                 'N',
5768                                                 'N')
5769                else 0 end
5770             END
5771            ,c.TL_ED_FRT_ALLOC_AMT
5772            ,c.TL_ED_FRT_ALLOC_ACCTD_AMT
5773            ,CASE WHEN g_ed_tax_flag = 'NORMAL' THEN c.TL_ED_TAX_ALLOC_AMT ELSE
5774              CASE
5775               when g_ed_req = 'Y' then
5776               arp_det_dist_pkg.the_concern_bucket('ED',
5777                                                 b.line_type,
5778                                                 'N',
5779                                                 'N',
5780                                                 'N')
5781               else 0 end
5782             END
5783            ,CASE WHEN g_ed_tax_flag = 'NORMAL' THEN c.TL_ED_TAX_ALLOC_ACCTD_AMT ELSE
5784              CASE
5785               when  g_ed_req = 'Y' then
5786                arp_det_dist_pkg.the_concern_bucket('ED',
5787                                                 b.line_type,
5788                                                 'Y',
5789                                                 'N',
5790                                                 'N')
5791               else 0 end
5792             END
5793            ,c.TL_ED_CHRG_ALLOC_AMT
5794            ,c.TL_ED_CHRG_ALLOC_ACCTD_AMT
5795 
5796           /**************************
5797           -- UNED
5798           **************************/
5799    --Base
5800            ,CASE WHEN g_uned_line_flag = 'INTERFACE' THEN b.sum_int_uned_line_amount ELSE d.elmt_uned_pro_amt END
5801            ,CASE WHEN g_uned_line_flag = 'INTERFACE' THEN b.sum_int_uned_line_amount ELSE d.elmt_uned_pro_acctd_amt END
5802            ,d.elmt_uned_frt_pro_amt
5803            ,d.elmt_uned_frt_pro_acctd_amt
5804            ,CASE WHEN g_uned_tax_flag = 'INTERFACE' THEN b.sum_int_uned_tax_amount ELSE d.elmt_uned_tax_pro_amt END
5805            ,CASE WHEN g_uned_tax_flag = 'INTERFACE' THEN b.sum_int_uned_tax_amount ELSE d.elmt_uned_tax_pro_acctd_amt END
5806            ,d.ELMT_uned_CHRG_PRO_AMT
5807            ,d.ELMT_uned_CHRG_PRO_ACCTD_AMT
5808             --
5809 --           ,b.DUE_REM_AMT
5810 --           ,b.DUE_REM_ACCTD_AMT
5811 --{BUG#4415037
5812 --           ,DECODE(b.line_type,'LINE'   , b.DUE_REM_AMT,
5813 --                               'CB'     , b.due_rem_amt,0)
5814 --           ,DECODE(b.line_type,'LINE'   , b.DUE_REM_ACCTD_AMT,
5815 --                               'CB'     , b.due_rem_acctd_amt,0)
5816    --Elmt
5817            ,CASE WHEN g_uned_line_flag = 'INTERFACE' THEN b.int_uned_line_amount
5818             ELSE
5819             DECODE(b.line_type,'LINE'   , b.DUE_REM_AMT,
5820                                'CB'     , b.due_rem_amt,0)
5821             END
5822            ,CASE WHEN g_uned_line_flag = 'INTERFACE' THEN b.int_uned_line_amount
5823             ELSE
5824             DECODE(b.line_type,'LINE'   , b.DUE_REM_ACCTD_AMT,
5825 	                       'CB'     , b.due_rem_acctd_amt,0)
5826             END
5827            ,DECODE(b.line_type,'FREIGHT', b.frt_REM_AMT,
5828                                'LINE'   , b.frt_adj_rem_amt,
5829                                'CB'     , b.frt_adj_rem_amt,0)
5830            ,DECODE(b.line_type,'FREIGHT', b.frt_REM_ACCTD_AMT,
5831                                'LINE'   , b.frt_adj_rem_acctd_amt,
5832                                'CB'     , b.frt_adj_rem_acctd_amt,0)
5833 --           ,DECODE(b.line_type,'LINE'   , b.DUE_REM_AMT,0)
5834 --           ,DECODE(b.line_type,'LINE'   , b.DUE_REM_ACCTD_AMT,0)
5835            ,CASE WHEN g_uned_tax_flag = 'INTERFACE' THEN b.int_uned_tax_amount ELSE b.TAX_REM_AMT  END
5836            ,CASE WHEN g_uned_tax_flag = 'INTERFACE' THEN b.int_uned_tax_amount ELSE b.TAX_REM_ACCTD_AMT END
5837            ,DECODE(b.line_type,'CHARGES', b.chrg_REM_AMT,
5838                                'LINE'   , b.chrg_adj_rem_amt,
5839                                'CB'     , b.chrg_adj_rem_amt,0)
5840            ,DECODE(b.line_type,'CHARGES', b.chrg_REM_ACCTD_AMT,
5841                                'LINE'   , b.chrg_adj_rem_acctd_amt,
5842                                'CB'     , b.chrg_adj_rem_acctd_amt,0)
5843    --Bucket
5844            ,CASE WHEN g_uned_line_flag = 'NORMAL' THEN c.TL_UNED_ALLOC_AMT ELSE
5845              CASE
5846               when  g_uned_req = 'Y' then
5847                arp_det_dist_pkg.the_concern_bucket('UNED',
5848                                                 b.line_type,
5849                                                 'N',
5850                                                 'N',
5851                                                 'N')
5852               else 0 end
5853             END
5854            ,CASE WHEN g_uned_line_flag = 'NORMAL' THEN c.TL_UNED_ALLOC_ACCTD_AMT ELSE
5855              CASE
5856              when  g_uned_req = 'Y' then
5857               arp_det_dist_pkg.the_concern_bucket('UNED',
5858                                                 b.line_type,
5859                                                 'Y',
5860                                                 'N',
5861                                                 'N')
5862              else 0 end
5863             END
5864            ,c.TL_UNED_FRT_ALLOC_AMT
5865            ,c.TL_UNED_FRT_ALLOC_ACCTD_AMT
5866            ,CASE WHEN g_uned_tax_flag = 'NORMAL' THEN c.TL_UNED_TAX_ALLOC_AMT  ELSE
5867              CASE
5868              when  g_uned_req = 'Y' then
5869                arp_det_dist_pkg.the_concern_bucket('UNED',
5870                                                 b.line_type,
5871                                                 'N',
5872                                                 'N',
5873                                                 'N')
5874              else 0 end
5875             END
5876            ,CASE WHEN g_uned_tax_flag = 'NORMAL' THEN c.TL_UNED_TAX_ALLOC_ACCTD_AMT ELSE
5877              CASE
5878              when  g_uned_req = 'Y' then
5879               arp_det_dist_pkg.the_concern_bucket('UNED',
5880                                                 b.line_type,
5881                                                 'Y',
5882                                                 'N',
5883                                                 'N')
5884               else 0 end
5885             END
5886            ,c.TL_UNED_CHRG_ALLOC_AMT
5887            ,c.TL_UNED_CHRG_ALLOC_ACCTD_AMT
5888        FROM RA_AR_GT b,
5889             RA_AR_GT c,
5890 	    RA_AR_AMOUNTS_GT d
5891       WHERE b.gt_id               = p_gt_id
5892 --        AND b.se_gt_id            = g_se_gt_id
5893         AND b.ref_customer_trx_id = p_customer_trx_id
5894         AND b.gp_level            = 'L'
5895         --Bug#3611016
5896         AND b.set_of_books_id     = p_ae_sys_rec.set_of_books_id
5897         AND (b.sob_type            = p_ae_sys_rec.sob_type OR
5898              (b.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
5899         AND c.gt_id               = p_gt_id
5900         AND c.gp_level            = 'GPL'
5901         AND c.ref_customer_trx_id = p_customer_trx_id
5902         --Bug#3611016
5903         AND c.set_of_books_id     = p_ae_sys_rec.set_of_books_id
5904         AND (c.sob_type            = p_ae_sys_rec.sob_type OR
5905               (c.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
5906         AND c.gt_id               = d.gt_id
5907 	AND c.rowid               = d.base_rec_rowid
5908   --      AND c.group_id            = b.group_id
5909   --{HYUBPAGP
5910         AND c.source_data_key1    = b.source_data_key1
5911         AND c.source_data_key2    = b.source_data_key2
5912         AND c.source_data_key3    = b.source_data_key3
5913         AND c.source_data_key4    = b.source_data_key4
5914         AND c.source_data_key5    = b.source_data_key5
5915   --}
5916         AND c.line_type           = b.line_type
5917   --{HYUIssue
5918         AND c.ref_customer_trx_line_id = b.ref_customer_trx_line_id;
5919   --}
5920 
5921   IF PG_DEBUG = 'Y' THEN
5922   display_ra_ar_gt(p_code  => 'L', p_gt_id => p_gt_id);
5923   END IF;
5924 
5925   IF PG_DEBUG = 'Y' THEN
5926   localdebug('arp_det_dist_pkg.prepare_trx_line_proration()-');
5927   END IF;
5928 EXCEPTION
5929   WHEN OTHERS THEN
5930   IF PG_DEBUG = 'Y' THEN
5931   localdebug('EXCEPTION OTHERS prepare_trx_line_proration:'||SQLERRM);
5932   END IF;
5933 END  prepare_trx_line_proration;
5934 
5935 
5936 
5937 PROCEDURE update_ctl_rem_orig
5938   (p_gt_id                IN VARCHAR2,
5939    p_customer_trx_id      IN NUMBER,
5940    p_pay_adj              IN VARCHAR2,
5941    p_customer_trx_line_id IN NUMBER   DEFAULT NULL,
5942    --{HYUBPAGP
5943    p_source_data_key1     IN VARCHAR2 DEFAULT NULL,
5944    p_source_data_key2     IN VARCHAR2 DEFAULT NULL,
5945    p_source_data_key3     IN VARCHAR2 DEFAULT NULL,
5946    p_source_data_key4     IN VARCHAR2 DEFAULT NULL,
5947    p_source_data_key5     IN VARCHAR2 DEFAULT NULL,
5948    --}
5949    p_log_inv_line         IN VARCHAR2 DEFAULT 'N',
5950    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type)
5951 IS
5952 BEGIN
5953   IF PG_DEBUG = 'Y' THEN
5954   localdebug('arp_det_dist_pkg.update_ctl_rem_orig()+');
5955   localdebug('  p_customer_trx_line_id:'||p_customer_trx_line_id);
5956   localdebug('  p_source_data_key1    :'||p_source_data_key1);
5957   localdebug('  p_source_data_key2    :'||p_source_data_key2);
5958   localdebug('  p_source_data_key3    :'||p_source_data_key3);
5959   localdebug('  p_source_data_key4    :'||p_source_data_key4);
5960   localdebug('  p_source_data_key5    :'||p_source_data_key5);
5961   localdebug('  p_log_inv_line        :'||p_log_inv_line);
5962   localdebug('  Update rem amount in ra_customer_trx_lines_gt for regular transaction');
5963   END IF;
5964    IF p_customer_trx_line_id IS NOT NULL THEN
5965   IF p_log_inv_line = 'N' THEN
5966 
5967     UPDATE /*+ index(A  RA_CUSTOMER_TRX_LINES_GT_N1)*/ ra_customer_trx_lines_gt a
5968        SET (a.AMOUNT_DUE_REMAINING        ,
5969             a.ACCTD_AMOUNT_DUE_REMAINING  ,
5970             a.AMOUNT_DUE_ORIGINAL         ,
5971             a.ACCTD_AMOUNT_DUE_ORIGINAL   ,
5972             a.CHRG_AMOUNT_REMAINING       ,
5973             a.CHRG_ACCTD_AMOUNT_REMAINING ,
5974             a.FRT_ADJ_REMAINING           ,
5975             a.FRT_ADJ_ACCTD_REMAINING     ,
5976             a.frt_ed_amount,
5977             a.frt_ed_acctd_amount,
5978             a.frt_uned_amount,
5979             a.frt_uned_acctd_amount) =
5980        (SELECT /*+INDEX (b ra_ar_n1)*/
5981 	           DECODE(a.line_type, 'LINE',
5982                       NVL(a.AMOUNT_DUE_REMAINING,0)
5983                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
5984                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
5985                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
5986                                    'CB',
5987                       NVL(a.AMOUNT_DUE_REMAINING,0)
5988                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
5989                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
5990                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
5991                                    'TAX',
5992                       NVL(a.AMOUNT_DUE_REMAINING,0)
5993                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_amt,0),NVL(b.tl_tax_alloc_amt,0))
5994                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_amt,0),NVL(b.tl_ed_tax_alloc_amt,0))
5995                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_amt,0),NVL(b.tl_uned_tax_alloc_amt,0)),
5996                                    'FREIGHT',
5997                       NVL(a.AMOUNT_DUE_REMAINING,0)
5998                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_amt,0)),
5999                                    'CHARGES',
6000                       NVL(a.AMOUNT_DUE_REMAINING,0)
6001                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_amt,0)),
6002 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_amt,0))
6003 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_amt,0)),
6004                      0)                                                 -- AMOUNT_DUE_REMAINING
6005                ,DECODE(a.line_type, 'LINE',
6006                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6007                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6008                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6009                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6010                                     'CB',
6011                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6012                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6013                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6014                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6015                                     'TAX',
6016                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6017                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_acctd_amt,0),NVL(b.tl_tax_alloc_acctd_amt,0))
6018                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_acctd_amt,0),NVL(b.tl_ed_tax_alloc_acctd_amt,0))
6019                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_acctd_amt,0),NVL(b.tl_uned_tax_alloc_acctd_amt,0)),
6020                                     'FREIGHT',
6021                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6022                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_acctd_amt,0)),
6023 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0))
6024 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)),
6025 --{HYUCHRG
6026                                     'CHARGES',
6027                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6028                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_acctd_amt,0)),
6029                      0)                                                -- ACCTD_AMOUNT_DUE_REMAINING
6030 --}
6031                ,DECODE(a.line_type, 'LINE', NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6032                                      'CB' , NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6033                                  'FREIGHT', NVL(a.AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_AMT),
6034                                  'CHARGES', NVL(a.AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_AMT),
6035                                      'TAX', NVL(a.AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_AMT),
6036                                             0)                         -- AMOUNT_DUE_ORIGINAL
6037                ,DECODE(a.line_type, 'LINE', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6038                                      'CB' , NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6039                                  'FREIGHT', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_ACCTD_AMT),
6040                                  'CHARGES', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_ACCTD_AMT),
6041                                      'TAX', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_ACCTD_AMT),
6042                                             0)                         -- ACCTD_AMOUNT_DUE_ORIGINAL
6043 --{HYUCHRG
6044 --               ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6045 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),NVL(b.tl_chrg_alloc_amt,0))
6046 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_amt,0),NVL(b.tl_ed_chrg_alloc_amt,0))
6047 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_amt,0),NVL(b.tl_uned_chrg_alloc_amt,0))
6048 --                                                                       -- CHRG_AMOUNT_REMAINING
6049 --               ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6050 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),NVL(b.tl_chrg_alloc_acctd_amt,0))
6051 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_acctd_amt,0),NVL(b.tl_ed_chrg_alloc_acctd_amt,0))
6052 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_acctd_amt,0),NVL(b.tl_uned_chrg_alloc_acctd_amt,0))
6053 --                                                                       -- CHRG_ACCTD_AMOUNT_REMAINING
6054                ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6055                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),
6056                                               DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_amt,0),
6057                                                                  'CB'  ,NVL(b.tl_chrg_alloc_amt,0),0))
6058                                                                        -- CHRG_AMOUNT_REMAINING
6059                ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6060                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),
6061                                               DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_acctd_amt,0),
6062                                                                  'CB'  ,NVL(b.tl_chrg_alloc_acctd_amt,0),0))
6063                                                                        -- CHRG_ACCTD_AMOUNT_REMAINING
6064 --}
6065                ,NVL(a.FRT_ADJ_REMAINING,0)
6066                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_amt,0),
6067                                               DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_amt,0),
6068                                                                  'CB'  ,NVL(b.tl_frt_alloc_amt,0),0))
6069                                                                        -- FRT_ADJ_REMAINING
6070 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_amt,0),
6071 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_amt,0),0))
6072 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_amt,0),
6073 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_amt,0),0))
6074                ,NVL(a.FRT_ADJ_ACCTD_REMAINING,0)
6075                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_acctd_amt,0),
6076                                               DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_acctd_amt,0),
6077                                                                  'CB'  ,NVL(b.tl_frt_alloc_acctd_amt,0),0))
6078 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6079 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0)))
6080 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6081 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)))
6082                                                                        -- FRT_ADJ_ACCTD_REMAINING
6083                ,NVL(a.frt_ed_amount,0)
6084                      + DECODE(p_pay_adj,'ADJ',0,
6085                               DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_amt,0),
6086                                                  'CB'  ,NVL(b.tl_ed_frt_alloc_amt,0), 0))
6087                ,NVL(a.frt_ed_acctd_amount,0)
6088                      + DECODE(p_pay_adj,'ADJ',0,
6089                               DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6090                                                  'CB'  ,NVL(b.tl_ed_frt_alloc_acctd_amt,0),0))
6091                ,NVL(a.frt_uned_amount,0)
6092                      + DECODE(p_pay_adj,'ADJ',0,
6093                               DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_amt,0),
6094                                                  'CB'  ,NVL(b.tl_uned_frt_alloc_amt,0),0))
6095                ,NVL(a.frt_uned_acctd_amount,0)
6096                      + DECODE(p_pay_adj,'ADJ',0,
6097                               DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6098                                                  'CB'  ,NVL(b.tl_uned_frt_alloc_acctd_amt,0),0))
6099           FROM RA_AR_GT b
6100          WHERE b.gt_id                = p_gt_id
6101 --           AND b.se_gt_id             = g_se_gt_id
6102            AND a.customer_trx_id      = b.ref_customer_trx_id
6103            AND a.customer_trx_line_id = b.ref_customer_trx_line_id
6104 --           AND a.group_id             = b.group_id
6105   --{HYUBPAGP
6106            AND NVL(a.source_data_key1,'00')     = b.source_data_key1
6107            AND NVL(a.source_data_key2,'00')     = b.source_data_key2
6108            AND NVL(a.source_data_key3,'00')     = b.source_data_key3
6109            AND NVL(a.source_data_key4,'00')     = b.source_data_key4
6110            AND NVL(a.source_data_key5,'00')     = b.source_data_key5
6111   --}
6112            --Bug#3611016
6113            AND (b.sob_type             = 'P' OR b.sob_type IS NULL)
6114            AND b.set_of_books_id      = a.set_of_books_id
6115            AND b.gp_level             = 'L')
6116      WHERE a.customer_trx_id   = p_customer_trx_id
6117        AND a.set_of_books_id   = p_ae_sys_rec.set_of_books_id
6118        AND p_customer_trx_line_id = a.customer_trx_line_id
6119 --       AND DECODE( p_group_id, NULL, '-99', p_group_id)
6120 --                   = DECODE(p_group_id, NULL, '-99', a.group_id)
6121   --{HYUBPAGP
6122        AND DECODE( p_source_data_key1, NULL, '-99', p_source_data_key1)
6123                    = DECODE(p_source_data_key1, NULL, '-99', a.source_data_key1)
6124        AND DECODE( p_source_data_key2, NULL, '-99', p_source_data_key2)
6125                    = DECODE(p_source_data_key2, NULL, '-99', a.source_data_key2)
6126        AND DECODE( p_source_data_key3, NULL, '-99', p_source_data_key3)
6127                    = DECODE(p_source_data_key3, NULL, '-99', a.source_data_key3)
6128        AND DECODE( p_source_data_key4, NULL, '-99', p_source_data_key4)
6129                    = DECODE(p_source_data_key4, NULL, '-99', a.source_data_key4)
6130        AND DECODE( p_source_data_key5, NULL, '-99', p_source_data_key5)
6131                    = DECODE(p_source_data_key5, NULL, '-99', a.source_data_key5)
6132   --}
6133        AND a.line_type IN ('LINE','FREIGHT','TAX','CB','CHARGES');
6134 
6135 ELSE
6136         UPDATE /*+ index(A  RA_CUSTOMER_TRX_LINES_GT_N1)*/ ra_customer_trx_lines_gt a
6137 		       SET (a.AMOUNT_DUE_REMAINING        ,
6138 			    a.ACCTD_AMOUNT_DUE_REMAINING  ,
6139 			    a.AMOUNT_DUE_ORIGINAL         ,
6140 			    a.ACCTD_AMOUNT_DUE_ORIGINAL   ,
6141 			    a.CHRG_AMOUNT_REMAINING       ,
6142 			    a.CHRG_ACCTD_AMOUNT_REMAINING ,
6143 			    a.FRT_ADJ_REMAINING           ,
6144 			    a.FRT_ADJ_ACCTD_REMAINING     ,
6145 			    a.frt_ed_amount,
6146 			    a.frt_ed_acctd_amount,
6147 			    a.frt_uned_amount,
6148 			    a.frt_uned_acctd_amount) =
6149 		       (SELECT /*+INDEX (b ra_ar_n1)*/
6150 				   DECODE(a.line_type, 'LINE',
6151 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6152 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
6153 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
6154 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
6155 						   'CB',
6156 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6157 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
6158 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
6159 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
6160 						   'TAX',
6161 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6162 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_amt,0),NVL(b.tl_tax_alloc_amt,0))
6163 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_amt,0),NVL(b.tl_ed_tax_alloc_amt,0))
6164 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_amt,0),NVL(b.tl_uned_tax_alloc_amt,0)),
6165 						   'FREIGHT',
6166 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6167 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_amt,0)),
6168 						   'CHARGES',
6169 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6170 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_amt,0)),
6171 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_amt,0))
6172 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_amt,0)),
6173 				     0)                                                 -- AMOUNT_DUE_REMAINING
6174 			       ,DECODE(a.line_type, 'LINE',
6175 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6176 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6177 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6178 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6179 						    'CB',
6180 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6181 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6182 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6183 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6184 						    'TAX',
6185 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6186 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_acctd_amt,0),NVL(b.tl_tax_alloc_acctd_amt,0))
6187 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_acctd_amt,0),NVL(b.tl_ed_tax_alloc_acctd_amt,0))
6188 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_acctd_amt,0),NVL(b.tl_uned_tax_alloc_acctd_amt,0)),
6189 						    'FREIGHT',
6190 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6191 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_acctd_amt,0)),
6192 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0))
6193 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)),
6194 		--{HYUCHRG
6195 						    'CHARGES',
6196 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6197 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_acctd_amt,0)),
6198 				     0)                                                -- ACCTD_AMOUNT_DUE_REMAINING
6199 		--}
6200 			       ,DECODE(a.line_type, 'LINE', NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6201 						     'CB' , NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6202 						 'FREIGHT', NVL(a.AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_AMT),
6203 						 'CHARGES', NVL(a.AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_AMT),
6204 						     'TAX', NVL(a.AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_AMT),
6205 							    0)                         -- AMOUNT_DUE_ORIGINAL
6206 			       ,DECODE(a.line_type, 'LINE', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6207 						     'CB' , NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6208 						 'FREIGHT', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_ACCTD_AMT),
6209 						 'CHARGES', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_ACCTD_AMT),
6210 						     'TAX', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_ACCTD_AMT),
6211 							    0)                         -- ACCTD_AMOUNT_DUE_ORIGINAL
6212 		--{HYUCHRG
6213 		--               ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6214 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),NVL(b.tl_chrg_alloc_amt,0))
6215 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_amt,0),NVL(b.tl_ed_chrg_alloc_amt,0))
6216 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_amt,0),NVL(b.tl_uned_chrg_alloc_amt,0))
6217 		--                                                                       -- CHRG_AMOUNT_REMAINING
6218 		--               ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6219 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),NVL(b.tl_chrg_alloc_acctd_amt,0))
6220 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_acctd_amt,0),NVL(b.tl_ed_chrg_alloc_acctd_amt,0))
6221 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_acctd_amt,0),NVL(b.tl_uned_chrg_alloc_acctd_amt,0))
6222 		--                                                                       -- CHRG_ACCTD_AMOUNT_REMAINING
6223 			       ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6224 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),
6225 							      DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_amt,0),
6226 										 'CB'  ,NVL(b.tl_chrg_alloc_amt,0),0))
6227 										       -- CHRG_AMOUNT_REMAINING
6228 			       ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6229 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),
6230 							      DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_acctd_amt,0),
6231 										 'CB'  ,NVL(b.tl_chrg_alloc_acctd_amt,0),0))
6232 										       -- CHRG_ACCTD_AMOUNT_REMAINING
6233 		--}
6234 			       ,NVL(a.FRT_ADJ_REMAINING,0)
6235 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_amt,0),
6236 							      DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_amt,0),
6237 										 'CB'  ,NVL(b.tl_frt_alloc_amt,0),0))
6238 										       -- FRT_ADJ_REMAINING
6239 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_amt,0),
6240 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_amt,0),0))
6241 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_amt,0),
6242 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_amt,0),0))
6243 			       ,NVL(a.FRT_ADJ_ACCTD_REMAINING,0)
6244 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_acctd_amt,0),
6245 							      DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_acctd_amt,0),
6246 										 'CB'  ,NVL(b.tl_frt_alloc_acctd_amt,0),0))
6247 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6248 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0)))
6249 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6250 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)))
6251 										       -- FRT_ADJ_ACCTD_REMAINING
6252 			       ,NVL(a.frt_ed_amount,0)
6253 				     + DECODE(p_pay_adj,'ADJ',0,
6254 					      DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_amt,0),
6255 								 'CB'  ,NVL(b.tl_ed_frt_alloc_amt,0), 0))
6256 			       ,NVL(a.frt_ed_acctd_amount,0)
6257 				     + DECODE(p_pay_adj,'ADJ',0,
6258 					      DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6259 								 'CB'  ,NVL(b.tl_ed_frt_alloc_acctd_amt,0),0))
6260 			       ,NVL(a.frt_uned_amount,0)
6261 				     + DECODE(p_pay_adj,'ADJ',0,
6262 					      DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_amt,0),
6263 								 'CB'  ,NVL(b.tl_uned_frt_alloc_amt,0),0))
6264 			       ,NVL(a.frt_uned_acctd_amount,0)
6265 				     + DECODE(p_pay_adj,'ADJ',0,
6266 					      DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6267 								 'CB'  ,NVL(b.tl_uned_frt_alloc_acctd_amt,0),0))
6268 			  FROM RA_AR_GT b
6269 			 WHERE b.gt_id                = p_gt_id
6270 		--           AND b.se_gt_id             = g_se_gt_id
6271 			   AND a.customer_trx_id      = b.ref_customer_trx_id
6272 			   AND a.customer_trx_line_id = b.ref_customer_trx_line_id
6273 		--           AND a.group_id             = b.group_id
6274 		  --{HYUBPAGP
6275 			   AND NVL(a.source_data_key1,'00')     = b.source_data_key1
6276 			   AND NVL(a.source_data_key2,'00')     = b.source_data_key2
6277 			   AND NVL(a.source_data_key3,'00')     = b.source_data_key3
6278 			   AND NVL(a.source_data_key4,'00')     = b.source_data_key4
6279 			   AND NVL(a.source_data_key5,'00')     = b.source_data_key5
6280 		  --}
6281 			   --Bug#3611016
6282 			   AND (b.sob_type             = 'P' OR b.sob_type IS NULL)
6283 			   AND b.set_of_books_id      = a.set_of_books_id
6284 			   AND b.gp_level             = 'L')
6285 		     WHERE a.customer_trx_id   = p_customer_trx_id
6286 		       AND a.set_of_books_id   = p_ae_sys_rec.set_of_books_id
6287 		       AND p_customer_trx_line_id = a.customer_trx_line_id
6288 		--       AND DECODE( p_group_id, NULL, '-99', p_group_id)
6289 		--                   = DECODE(p_group_id, NULL, '-99', a.group_id)
6290 		  --{HYUBPAGP
6291 		       AND DECODE( p_source_data_key1, NULL, '-99', p_source_data_key1)
6292 				   = DECODE(p_source_data_key1, NULL, '-99', a.source_data_key1)
6293 		       AND DECODE( p_source_data_key2, NULL, '-99', p_source_data_key2)
6294 				   = DECODE(p_source_data_key2, NULL, '-99', a.source_data_key2)
6295 		       AND DECODE( p_source_data_key3, NULL, '-99', p_source_data_key3)
6296 				   = DECODE(p_source_data_key3, NULL, '-99', a.source_data_key3)
6297 		       AND DECODE( p_source_data_key4, NULL, '-99', p_source_data_key4)
6298 				   = DECODE(p_source_data_key4, NULL, '-99', a.source_data_key4)
6299 		       AND DECODE( p_source_data_key5, NULL, '-99', p_source_data_key5)
6300 				   = DECODE(p_source_data_key5, NULL, '-99', a.source_data_key5)
6301 		  --}
6302 		       AND a.line_type IN ('LINE','CB');
6303 
6304             UPDATE /*+ index(A  RA_CUSTOMER_TRX_LINES_GT_N2)*/ ra_customer_trx_lines_gt a
6305 		       SET (a.AMOUNT_DUE_REMAINING        ,
6306 			    a.ACCTD_AMOUNT_DUE_REMAINING  ,
6307 			    a.AMOUNT_DUE_ORIGINAL         ,
6308 			    a.ACCTD_AMOUNT_DUE_ORIGINAL   ,
6309 			    a.CHRG_AMOUNT_REMAINING       ,
6310 			    a.CHRG_ACCTD_AMOUNT_REMAINING ,
6311 			    a.FRT_ADJ_REMAINING           ,
6312 			    a.FRT_ADJ_ACCTD_REMAINING     ,
6313 			    a.frt_ed_amount,
6314 			    a.frt_ed_acctd_amount,
6315 			    a.frt_uned_amount,
6316 			    a.frt_uned_acctd_amount) =
6317 		       (SELECT /*+INDEX (b ra_ar_n1)*/
6318 				   DECODE(a.line_type, 'LINE',
6319 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6320 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
6321 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
6322 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
6323 						   'CB',
6324 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6325 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
6326 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
6327 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
6328 						   'TAX',
6329 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6330 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_amt,0),NVL(b.tl_tax_alloc_amt,0))
6331 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_amt,0),NVL(b.tl_ed_tax_alloc_amt,0))
6332 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_amt,0),NVL(b.tl_uned_tax_alloc_amt,0)),
6333 						   'FREIGHT',
6334 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6335 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_amt,0)),
6336 						   'CHARGES',
6337 				      NVL(a.AMOUNT_DUE_REMAINING,0)
6338 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_amt,0)),
6339 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_amt,0))
6340 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_amt,0)),
6341 				     0)                                                 -- AMOUNT_DUE_REMAINING
6342 			       ,DECODE(a.line_type, 'LINE',
6343 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6344 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6345 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6346 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6347 						    'CB',
6348 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6349 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6350 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6351 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6352 						    'TAX',
6353 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6354 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_acctd_amt,0),NVL(b.tl_tax_alloc_acctd_amt,0))
6355 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_acctd_amt,0),NVL(b.tl_ed_tax_alloc_acctd_amt,0))
6356 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_acctd_amt,0),NVL(b.tl_uned_tax_alloc_acctd_amt,0)),
6357 						    'FREIGHT',
6358 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6359 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_acctd_amt,0)),
6360 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0))
6361 		--                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)),
6362 		--{HYUCHRG
6363 						    'CHARGES',
6364 				      NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6365 				     + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_acctd_amt,0)),
6366 				     0)                                                -- ACCTD_AMOUNT_DUE_REMAINING
6367 		--}
6368 			       ,DECODE(a.line_type, 'LINE', NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6369 						     'CB' , NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6370 						 'FREIGHT', NVL(a.AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_AMT),
6371 						 'CHARGES', NVL(a.AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_AMT),
6372 						     'TAX', NVL(a.AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_AMT),
6373 							    0)                         -- AMOUNT_DUE_ORIGINAL
6374 			       ,DECODE(a.line_type, 'LINE', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6375 						     'CB' , NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6376 						 'FREIGHT', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_ACCTD_AMT),
6377 						 'CHARGES', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_ACCTD_AMT),
6378 						     'TAX', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_ACCTD_AMT),
6379 							    0)                         -- ACCTD_AMOUNT_DUE_ORIGINAL
6380 		--{HYUCHRG
6381 		--               ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6382 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),NVL(b.tl_chrg_alloc_amt,0))
6383 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_amt,0),NVL(b.tl_ed_chrg_alloc_amt,0))
6384 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_amt,0),NVL(b.tl_uned_chrg_alloc_amt,0))
6385 		--                                                                       -- CHRG_AMOUNT_REMAINING
6386 		--               ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6387 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),NVL(b.tl_chrg_alloc_acctd_amt,0))
6388 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_acctd_amt,0),NVL(b.tl_ed_chrg_alloc_acctd_amt,0))
6389 		--                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_acctd_amt,0),NVL(b.tl_uned_chrg_alloc_acctd_amt,0))
6390 		--                                                                       -- CHRG_ACCTD_AMOUNT_REMAINING
6391 			       ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6392 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),
6393 							      DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_amt,0),
6394 										 'CB'  ,NVL(b.tl_chrg_alloc_amt,0),0))
6395 										       -- CHRG_AMOUNT_REMAINING
6396 			       ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6397 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),
6398 							      DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_acctd_amt,0),
6399 										 'CB'  ,NVL(b.tl_chrg_alloc_acctd_amt,0),0))
6400 										       -- CHRG_ACCTD_AMOUNT_REMAINING
6401 		--}
6402 			       ,NVL(a.FRT_ADJ_REMAINING,0)
6403 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_amt,0),
6404 							      DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_amt,0),
6405 										 'CB'  ,NVL(b.tl_frt_alloc_amt,0),0))
6406 										       -- FRT_ADJ_REMAINING
6407 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_amt,0),
6408 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_amt,0),0))
6409 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_amt,0),
6410 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_amt,0),0))
6411 			       ,NVL(a.FRT_ADJ_ACCTD_REMAINING,0)
6412 				     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_acctd_amt,0),
6413 							      DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_acctd_amt,0),
6414 										 'CB'  ,NVL(b.tl_frt_alloc_acctd_amt,0),0))
6415 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6416 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0)))
6417 		--                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6418 		--                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)))
6419 										       -- FRT_ADJ_ACCTD_REMAINING
6420 			       ,NVL(a.frt_ed_amount,0)
6421 				     + DECODE(p_pay_adj,'ADJ',0,
6422 					      DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_amt,0),
6423 								 'CB'  ,NVL(b.tl_ed_frt_alloc_amt,0), 0))
6424 			       ,NVL(a.frt_ed_acctd_amount,0)
6425 				     + DECODE(p_pay_adj,'ADJ',0,
6426 					      DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6427 								 'CB'  ,NVL(b.tl_ed_frt_alloc_acctd_amt,0),0))
6428 			       ,NVL(a.frt_uned_amount,0)
6429 				     + DECODE(p_pay_adj,'ADJ',0,
6430 					      DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_amt,0),
6431 								 'CB'  ,NVL(b.tl_uned_frt_alloc_amt,0),0))
6432 			       ,NVL(a.frt_uned_acctd_amount,0)
6433 				     + DECODE(p_pay_adj,'ADJ',0,
6434 					      DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6435 								 'CB'  ,NVL(b.tl_uned_frt_alloc_acctd_amt,0),0))
6436 			  FROM RA_AR_GT b
6437 			 WHERE b.gt_id                = p_gt_id
6438 		--           AND b.se_gt_id             = g_se_gt_id
6439 			   AND a.customer_trx_id      = b.ref_customer_trx_id
6440 			   AND a.customer_trx_line_id = b.ref_customer_trx_line_id
6441 		--           AND a.group_id             = b.group_id
6442 		  --{HYUBPAGP
6443 			   AND NVL(a.source_data_key1,'00')     = b.source_data_key1
6444 			   AND NVL(a.source_data_key2,'00')     = b.source_data_key2
6445 			   AND NVL(a.source_data_key3,'00')     = b.source_data_key3
6446 			   AND NVL(a.source_data_key4,'00')     = b.source_data_key4
6447 			   AND NVL(a.source_data_key5,'00')     = b.source_data_key5
6448 		  --}
6449 			   --Bug#3611016
6450 			   AND (b.sob_type             = 'P' OR b.sob_type IS NULL)
6451 			   AND b.set_of_books_id      = a.set_of_books_id
6452 			   AND b.gp_level             = 'L')
6453 		     WHERE a.customer_trx_id   = p_customer_trx_id
6454 		       AND a.set_of_books_id   = p_ae_sys_rec.set_of_books_id
6455 		       AND p_customer_trx_line_id = a.LINK_TO_CUST_TRX_LINE_ID
6456 		--       AND DECODE( p_group_id, NULL, '-99', p_group_id)
6457 		--                   = DECODE(p_group_id, NULL, '-99', a.group_id)
6458 		  --{HYUBPAGP
6459 		       AND DECODE( p_source_data_key1, NULL, '-99', p_source_data_key1)
6460 				   = DECODE(p_source_data_key1, NULL, '-99', a.source_data_key1)
6461 		       AND DECODE( p_source_data_key2, NULL, '-99', p_source_data_key2)
6462 				   = DECODE(p_source_data_key2, NULL, '-99', a.source_data_key2)
6463 		       AND DECODE( p_source_data_key3, NULL, '-99', p_source_data_key3)
6464 				   = DECODE(p_source_data_key3, NULL, '-99', a.source_data_key3)
6465 		       AND DECODE( p_source_data_key4, NULL, '-99', p_source_data_key4)
6466 				   = DECODE(p_source_data_key4, NULL, '-99', a.source_data_key4)
6467 		       AND DECODE( p_source_data_key5, NULL, '-99', p_source_data_key5)
6468 				   = DECODE(p_source_data_key5, NULL, '-99', a.source_data_key5)
6469 		  --}
6470 		       AND a.line_type IN ('FREIGHT','TAX','CHARGES');
6471    END IF; -- End of p_log_inv_line check
6472 ELSE
6473       UPDATE /*+ index(A  RA_CUSTOMER_TRX_LINES_GT_N1)*/ ra_customer_trx_lines_gt a
6474        SET (a.AMOUNT_DUE_REMAINING        ,
6475             a.ACCTD_AMOUNT_DUE_REMAINING  ,
6476             a.AMOUNT_DUE_ORIGINAL         ,
6477             a.ACCTD_AMOUNT_DUE_ORIGINAL   ,
6478             a.CHRG_AMOUNT_REMAINING       ,
6479             a.CHRG_ACCTD_AMOUNT_REMAINING ,
6480             a.FRT_ADJ_REMAINING           ,
6481             a.FRT_ADJ_ACCTD_REMAINING     ,
6482             a.frt_ed_amount,
6483             a.frt_ed_acctd_amount,
6484             a.frt_uned_amount,
6485             a.frt_uned_acctd_amount) =
6486        (SELECT /*+INDEX (b ra_ar_n1)*/
6487 	           DECODE(a.line_type, 'LINE',
6488                       NVL(a.AMOUNT_DUE_REMAINING,0)
6489                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
6490                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
6491                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
6492                                    'CB',
6493                       NVL(a.AMOUNT_DUE_REMAINING,0)
6494                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_amt,0),NVL(b.tl_alloc_amt,0))
6495                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_amt,0),NVL(b.tl_ed_alloc_amt,0))
6496                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_amt,0),NVL(b.tl_uned_alloc_amt,0)),
6497                                    'TAX',
6498                       NVL(a.AMOUNT_DUE_REMAINING,0)
6499                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_amt,0),NVL(b.tl_tax_alloc_amt,0))
6500                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_amt,0),NVL(b.tl_ed_tax_alloc_amt,0))
6501                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_amt,0),NVL(b.tl_uned_tax_alloc_amt,0)),
6502                                    'FREIGHT',
6503                       NVL(a.AMOUNT_DUE_REMAINING,0)
6504                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_amt,0)),
6505                                    'CHARGES',
6506                       NVL(a.AMOUNT_DUE_REMAINING,0)
6507                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_amt,0)),
6508 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_amt,0))
6509 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_amt,0)),
6510                      0)                                                 -- AMOUNT_DUE_REMAINING
6511                ,DECODE(a.line_type, 'LINE',
6512                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6513                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6514                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6515                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6516                                     'CB',
6517                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6518                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_alloc_acctd_amt,0),NVL(b.tl_alloc_acctd_amt,0))
6519                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_alloc_acctd_amt,0),NVL(b.tl_ed_alloc_acctd_amt,0))
6520                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_alloc_acctd_amt,0),NVL(b.tl_uned_alloc_acctd_amt,0)),
6521                                     'TAX',
6522                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6523                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_tax_alloc_acctd_amt,0),NVL(b.tl_tax_alloc_acctd_amt,0))
6524                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_tax_alloc_acctd_amt,0),NVL(b.tl_ed_tax_alloc_acctd_amt,0))
6525                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_tax_alloc_acctd_amt,0),NVL(b.tl_uned_tax_alloc_acctd_amt,0)),
6526                                     'FREIGHT',
6527                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6528                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_frt_alloc_acctd_amt,0)),
6529 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0))
6530 --                     + DECODE(p_pay_adj,'ADJ',0,-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)),
6531 --{HYUCHRG
6532                                     'CHARGES',
6533                       NVL(a.ACCTD_AMOUNT_DUE_REMAINING,0)
6534                      + DECODE(p_pay_adj,'ADJ',0,NVL(b.tl_chrg_alloc_acctd_amt,0)),
6535                      0)                                                -- ACCTD_AMOUNT_DUE_REMAINING
6536 --}
6537                ,DECODE(a.line_type, 'LINE', NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6538                                      'CB' , NVL(a.AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_AMT),
6539                                  'FREIGHT', NVL(a.AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_AMT),
6540                                  'CHARGES', NVL(a.AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_AMT),
6541                                      'TAX', NVL(a.AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_AMT),
6542                                             0)                         -- AMOUNT_DUE_ORIGINAL
6543                ,DECODE(a.line_type, 'LINE', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6544                                      'CB' , NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.DUE_ORIG_ACCTD_AMT),
6545                                  'FREIGHT', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.FRT_ORIG_ACCTD_AMT),
6546                                  'CHARGES', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.CHRG_ORIG_ACCTD_AMT),
6547                                      'TAX', NVL(a.ACCTD_AMOUNT_DUE_ORIGINAL,b.TAX_ORIG_ACCTD_AMT),
6548                                             0)                         -- ACCTD_AMOUNT_DUE_ORIGINAL
6549 --{HYUCHRG
6550 --               ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6551 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),NVL(b.tl_chrg_alloc_amt,0))
6552 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_amt,0),NVL(b.tl_ed_chrg_alloc_amt,0))
6553 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_amt,0),NVL(b.tl_uned_chrg_alloc_amt,0))
6554 --                                                                       -- CHRG_AMOUNT_REMAINING
6555 --               ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6556 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),NVL(b.tl_chrg_alloc_acctd_amt,0))
6557 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_ed_chrg_alloc_acctd_amt,0),NVL(b.tl_ed_chrg_alloc_acctd_amt,0))
6558 --                     + DECODE(p_pay_adj,'ADJ',NVL(b.tl_uned_chrg_alloc_acctd_amt,0),NVL(b.tl_uned_chrg_alloc_acctd_amt,0))
6559 --                                                                       -- CHRG_ACCTD_AMOUNT_REMAINING
6560                ,NVL(a.CHRG_AMOUNT_REMAINING,0)
6561                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_amt,0),
6562                                               DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_amt,0),
6563                                                                  'CB'  ,NVL(b.tl_chrg_alloc_amt,0),0))
6564                                                                        -- CHRG_AMOUNT_REMAINING
6565                ,NVL(a.CHRG_ACCTD_AMOUNT_REMAINING,0)
6566                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_chrg_alloc_acctd_amt,0),
6567                                               DECODE(b.line_type,'LINE',NVL(b.tl_chrg_alloc_acctd_amt,0),
6568                                                                  'CB'  ,NVL(b.tl_chrg_alloc_acctd_amt,0),0))
6569                                                                        -- CHRG_ACCTD_AMOUNT_REMAINING
6570 --}
6571                ,NVL(a.FRT_ADJ_REMAINING,0)
6572                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_amt,0),
6573                                               DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_amt,0),
6574                                                                  'CB'  ,NVL(b.tl_frt_alloc_amt,0),0))
6575                                                                        -- FRT_ADJ_REMAINING
6576 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_amt,0),
6577 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_amt,0),0))
6578 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_amt,0),
6579 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_amt,0),0))
6580                ,NVL(a.FRT_ADJ_ACCTD_REMAINING,0)
6581                      + DECODE(p_pay_adj,'ADJ',NVL(b.tl_frt_alloc_acctd_amt,0),
6582                                               DECODE(b.line_type,'LINE',NVL(b.tl_frt_alloc_acctd_amt,0),
6583                                                                  'CB'  ,NVL(b.tl_frt_alloc_acctd_amt,0),0))
6584 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6585 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_ed_frt_alloc_acctd_amt,0)))
6586 --                     + DECODE(p_pay_adj,'ADJ',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6587 --                                              DECODE(b.line_type,'LINE',-1*NVL(b.tl_uned_frt_alloc_acctd_amt,0)))
6588                                                                        -- FRT_ADJ_ACCTD_REMAINING
6589                ,NVL(a.frt_ed_amount,0)
6590                      + DECODE(p_pay_adj,'ADJ',0,
6591                               DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_amt,0),
6592                                                  'CB'  ,NVL(b.tl_ed_frt_alloc_amt,0), 0))
6593                ,NVL(a.frt_ed_acctd_amount,0)
6594                      + DECODE(p_pay_adj,'ADJ',0,
6595                               DECODE(b.line_type,'LINE',NVL(b.tl_ed_frt_alloc_acctd_amt,0),
6596                                                  'CB'  ,NVL(b.tl_ed_frt_alloc_acctd_amt,0),0))
6597                ,NVL(a.frt_uned_amount,0)
6598                      + DECODE(p_pay_adj,'ADJ',0,
6599                               DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_amt,0),
6600                                                  'CB'  ,NVL(b.tl_uned_frt_alloc_amt,0),0))
6601                ,NVL(a.frt_uned_acctd_amount,0)
6602                      + DECODE(p_pay_adj,'ADJ',0,
6603                               DECODE(b.line_type,'LINE',NVL(b.tl_uned_frt_alloc_acctd_amt,0),
6604                                                  'CB'  ,NVL(b.tl_uned_frt_alloc_acctd_amt,0),0))
6605           FROM RA_AR_GT b
6606          WHERE b.gt_id                = p_gt_id
6607 --           AND b.se_gt_id             = g_se_gt_id
6608            AND a.customer_trx_id      = b.ref_customer_trx_id
6609            AND a.customer_trx_line_id = b.ref_customer_trx_line_id
6610 --           AND a.group_id             = b.group_id
6611   --{HYUBPAGP
6612            AND NVL(a.source_data_key1,'00')     = b.source_data_key1
6613            AND NVL(a.source_data_key2,'00')     = b.source_data_key2
6614            AND NVL(a.source_data_key3,'00')     = b.source_data_key3
6615            AND NVL(a.source_data_key4,'00')     = b.source_data_key4
6616            AND NVL(a.source_data_key5,'00')     = b.source_data_key5
6617   --}
6618            --Bug#3611016
6619            AND (b.sob_type             = 'P' OR b.sob_type IS NULL)
6620            AND b.set_of_books_id      = a.set_of_books_id
6621            AND b.gp_level             = 'L')
6622      WHERE a.customer_trx_id   = p_customer_trx_id
6623        AND a.set_of_books_id   = p_ae_sys_rec.set_of_books_id
6624    --     AND DECODE( p_customer_trx_line_id, NULL, -99, p_customer_trx_line_id)
6625    --                = DECODE(p_customer_trx_line_id, NULL, -99,
6626    --                         DECODE(p_log_inv_line, 'N', a.customer_trx_line_id,
6627    --                                DECODE(a.line_type,'LINE', a.customer_trx_line_id,
6628    --                                                   'CB'  , a.customer_trx_line_id,
6629    --                                        a.LINK_TO_CUST_TRX_LINE_ID)))
6630 --       AND DECODE( p_group_id, NULL, '-99', p_group_id)
6631 --                   = DECODE(p_group_id, NULL, '-99', a.group_id)
6632   --{HYUBPAGP
6633        AND DECODE( p_source_data_key1, NULL, '-99', p_source_data_key1)
6634                    = DECODE(p_source_data_key1, NULL, '-99', a.source_data_key1)
6635        AND DECODE( p_source_data_key2, NULL, '-99', p_source_data_key2)
6636                    = DECODE(p_source_data_key2, NULL, '-99', a.source_data_key2)
6637        AND DECODE( p_source_data_key3, NULL, '-99', p_source_data_key3)
6638                    = DECODE(p_source_data_key3, NULL, '-99', a.source_data_key3)
6639        AND DECODE( p_source_data_key4, NULL, '-99', p_source_data_key4)
6640                    = DECODE(p_source_data_key4, NULL, '-99', a.source_data_key4)
6641        AND DECODE( p_source_data_key5, NULL, '-99', p_source_data_key5)
6642                    = DECODE(p_source_data_key5, NULL, '-99', a.source_data_key5)
6643   --}
6644        AND a.line_type IN ('LINE','FREIGHT','TAX','CB','CHARGES')
6645        AND   EXISTS (
6646 		SELECT 'X' FROM RA_AR_GT R
6647         	WHERE R.gt_id                = p_gt_id
6648         	AND   a.customer_trx_id      = R.ref_customer_trx_id
6649         	AND   a.customer_trx_line_id = R.ref_customer_trx_line_id
6650         	AND   NVL(a.source_data_key1,'00')     = R.source_data_key1
6651         	AND   NVL(a.source_data_key2,'00')     = R.source_data_key2
6652         	AND   NVL(a.source_data_key3,'00')     = R.source_data_key3
6653         	AND   NVL(a.source_data_key4,'00')     = R.source_data_key4
6654         	AND   NVL(a.source_data_key5,'00')     = R.source_data_key5
6655         	AND   (R.sob_type             = 'P' OR R.sob_type IS NULL)
6656         	AND   R.set_of_books_id      = a.set_of_books_id
6657         	AND   R.gp_level             = 'L');
6658 
6659 END IF; -- End of p_customer_trx_line_id check
6660 
6661   IF PG_DEBUG = 'Y' THEN
6662   localdebug('arp_det_dist_pkg.update_ctl_rem_orig()-');
6663   END IF;
6664 EXCEPTION
6665  WHEN OTHERS THEN
6666         IF PG_DEBUG = 'Y' THEN
6667 	localdebug('update_ctl_rem_orig EXCEPTION OTHERS :'||SQLERRM);
6668 	END IF;
6669 END update_ctl_rem_orig;
6670 
6671 
6672 
6673 PROCEDURE get_inv_dist
6674  (p_pay_adj                 IN VARCHAR2,
6675   p_customer_trx_id         IN NUMBER,
6676   p_gt_id                   IN VARCHAR2,
6677   p_adj_rec                 IN ar_adjustments%ROWTYPE,
6678   p_app_rec                 IN ar_receivable_applications%ROWTYPE,
6679   p_ae_sys_rec              IN arp_acct_main.ae_sys_rec_type)
6680  IS
6681 
6682    l_rows NUMBER;
6683 BEGIN
6684   IF PG_DEBUG = 'Y' THEN
6685   localdebug('arp_det_dist_pkg.get_inv_dist()+');
6686   localdebug('  p_ae_sys_rec.set_of_books_id :'||p_ae_sys_rec.set_of_books_id);
6687   localdebug('  p_ae_sys_rec.sob_type        :'||p_ae_sys_rec.sob_type);
6688   END IF;
6689 
6690    INSERT INTO RA_AR_GT
6691    ( GT_ID                       ,
6692      AMT                         ,
6693      ACCTD_AMT                   ,
6694      ACCOUNT_CLASS               ,
6695      CCID_SECONDARY              ,
6696      REF_CUST_TRX_LINE_GL_DIST_ID,
6697      REF_CUSTOMER_TRX_LINE_ID    ,
6698      REF_CUSTOMER_TRX_ID         ,
6699      TO_CURRENCY                 ,
6700      BASE_CURRENCY               ,
6701   -- ADJ and APP Elmt
6702      DIST_AMT,             --HYUD LINE
6703      DIST_ACCTD_AMT,       --HYUD LINE
6704      DIST_CHRG_AMT,        --HYUD CHRG
6705      DIST_CHRG_ACCTD_AMT,  --HYUD CHRG
6706      DIST_FRT_AMT,         --HYUD FRT
6707      DIST_FRT_ACCTD_AMT,   --HYUD FRT
6708      DIST_TAX_AMT,         --HYUD TAX
6709      DIST_TAX_ACCTD_AMT,   --HYUD TAX
6710      -- Buc
6711        tl_alloc_amt          ,
6712        tl_alloc_acctd_amt    ,
6713        tl_chrg_alloc_amt     ,
6714        tl_chrg_alloc_acctd_amt,
6715        tl_frt_alloc_amt     ,
6716        tl_frt_alloc_acctd_amt,
6717        tl_tax_alloc_amt     ,
6718        tl_tax_alloc_acctd_amt,
6719   -- ED Elmt
6720      DIST_ed_AMT,
6721      DIST_ed_ACCTD_AMT,
6722      DIST_ed_chrg_AMT,
6723      DIST_ed_chrg_ACCTD_AMT,
6724      DIST_ed_frt_AMT      ,
6725      DIST_ed_frt_ACCTD_AMT,
6726      DIST_ed_tax_AMT      ,
6727      DIST_ed_tax_ACCTD_AMT,
6728      --
6729      tl_ed_alloc_amt          ,
6730      tl_ed_alloc_acctd_amt    ,
6731      tl_ed_chrg_alloc_amt     ,
6732      tl_ed_chrg_alloc_acctd_amt,
6733      tl_ed_frt_alloc_amt     ,
6734      tl_ed_frt_alloc_acctd_amt,
6735      tl_ed_tax_alloc_amt     ,
6736      tl_ed_tax_alloc_acctd_amt,
6737      --
6738   -- UNED
6739      DIST_uned_AMT                    ,
6740      DIST_uned_ACCTD_AMT              ,
6741      DIST_uned_chrg_AMT,
6742      DIST_uned_chrg_ACCTD_AMT,
6743      DIST_uned_frt_AMT      ,
6744      DIST_uned_frt_ACCTD_AMT,
6745      DIST_uned_tax_AMT      ,
6746      DIST_uned_tax_ACCTD_AMT,
6747      --
6748      tl_uned_alloc_amt          ,
6749      tl_uned_alloc_acctd_amt    ,
6750      tl_uned_chrg_alloc_amt     ,
6751      tl_uned_chrg_alloc_acctd_amt,
6752      tl_uned_frt_alloc_amt     ,
6753      tl_uned_frt_alloc_acctd_amt,
6754      tl_uned_tax_alloc_amt     ,
6755      tl_uned_tax_alloc_acctd_amt,
6756      --
6757      source_type               ,
6758      source_table              ,
6759      source_id                 ,
6760      line_type,
6761      --
6762      group_id,
6763      source_data_key1  ,
6764      source_data_key2  ,
6765      source_data_key3  ,
6766      source_data_key4  ,
6767      source_data_key5  ,
6768      gp_level,
6769      --
6770      set_of_books_id,
6771      sob_type,
6772      tax_link_id,
6773      tax_inc_flag
6774      )
6775    SELECT /*+INDEX (rar ra_ar_n1) LEADING(rar,ctlgd) USE_NL_WITH_INDEX(rar ra_ar_n1) USE_NL_WITH_INDEX(ctlgd RA_CUST_TRX_LINE_GL_DIST_N1)*/
6776           p_gt_id,
6777           ctlgd.amount,
6778           ctlgd.acctd_amount,
6779           ctlgd.account_class,
6780           -- The ccid_secondary is used to populate ar_line_apps_det.ccid
6781           -- which in turn served as ref_dist_ccid for cash basis accounting
6782           -- therefor only used at payment, hence should hit the collected ccid
6783           DECODE(ctlgd.account_class,'TAX',
6784 		           DECODE(ctlgd.collected_tax_ccid,NULL,
6785                            ctlgd.code_combination_id,
6786                            ctlgd.collected_tax_ccid),
6787                  ctlgd.code_combination_id),
6788           ctlgd.cust_trx_line_gl_dist_id,
6789           ctlgd.customer_trx_line_id,
6790           ctlgd.customer_trx_id,
6791           rar.to_currency,
6792           rar.base_currency,
6793        -- ADJ and APP
6794           DECODE(rar.line_type,'LINE',ctlgd.amount,
6795 	                       'CB'  ,ctlgd.amount,0),               --For Line DIST_AMT
6796           DECODE(rar.line_type,'LINE',ctlgd.acctd_amount,
6797 	                       'CB'  ,ctlgd.acctd_amount,0),         --         DIST_ACCTD_AMT
6798           DECODE(p_pay_adj,'APP',
6799                  DECODE(rar.line_type,'CHARGES',ctlgd.amount,0),
6800                         DECODE(rar.line_type,'LINE',ctlgd.amount,
6801                                              'CB'  ,ctlgd.amount,0)),   --For Chrg DIST_CHRG_AMT
6802           DECODE(p_pay_adj,'APP',
6803                  DECODE(rar.line_type,'CHARGES',ctlgd.amount,0),
6804                         DECODE(rar.line_type,'LINE',ctlgd.acctd_amount,
6805                                            'CB'  ,ctlgd.acctd_amount,0)),--   DIST_CHRG_ACCTD_AMT
6806           DECODE(p_pay_adj,'APP',
6807                  DECODE(rar.line_type,'FREIGHT',ctlgd.amount,0),
6808                         DECODE(rar.line_type,'LINE',ctlgd.amount,
6809                                              'CB'  ,ctlgd.amount,0)),--For Frt  DIST_FRT_AMT
6810           DECODE(p_pay_adj,'APP',
6811                  DECODE(rar.line_type,'FREIGHT',ctlgd.amount,0),
6812                         DECODE(rar.line_type,'LINE',ctlgd.acctd_amount,
6813                                              'CB'  ,ctlgd.acctd_amount,0)),--   DIST_FRT_AMT
6814           DECODE(rar.line_type,'TAX',ctlgd.amount,0),                --For Tax  DIST_AMT
6815           DECODE(rar.line_type,'TAX',ctlgd.acctd_amount,0),          --         DIST_ACCTD_AMT
6816           --
6817           tl_alloc_amt          ,
6818           tl_alloc_acctd_amt    ,
6819           tl_chrg_alloc_amt     ,
6820           tl_chrg_alloc_acctd_amt,
6821           tl_frt_alloc_amt,
6822           tl_frt_alloc_acctd_amt,
6823           tl_tax_alloc_amt     ,
6824           tl_tax_alloc_acctd_amt,
6825           --
6826        -- ED
6827           DECODE(rar.line_type,'LINE',ctlgd.amount,
6828                                'CB'  ,ctlgd.amount,0),               --For Line DIST_AMT
6829           DECODE(rar.line_type,'LINE',ctlgd.acctd_amount,
6830                               'CB'  ,ctlgd.acctd_amount,0),         --         DIST_ACCTD_AMT
6831           DECODE(p_pay_adj,'APP',
6832                  DECODE(rar.line_type,'CHARGES',ctlgd.amount,0),
6833                  0),                                                 --For Chrg  DIST_CHRG_AMT
6834           DECODE(p_pay_adj,'APP',
6835                  DECODE(rar.line_type,'CHARGES',ctlgd.acctd_amount,0),
6836                  0),                                                 --          DIST_CHRG_ACCTD_AMT
6837           DECODE(p_pay_adj,'APP',
6838                  DECODE(rar.line_type,'FREIGHT',ctlgd.amount,0),
6839                  0),                                                 --For Frt DIST_FRT_AMT
6840           DECODE(p_pay_adj,'APP',
6841                  DECODE(rar.line_type,'FREIGHT',ctlgd.acctd_amount,0),
6842                  0),                                                 --        DIST_FRT_ACCTD_AMT
6843 
6844           DECODE(rar.line_type,'TAX',ctlgd.amount,0),                --For Tax  DIST_AMT
6845           DECODE(rar.line_type,'TAX',ctlgd.acctd_amount,0),          --         DIST_ACCTD_AMT
6846           tl_ed_alloc_amt          ,
6847           tl_ed_alloc_acctd_amt    ,
6848           tl_ed_chrg_alloc_amt     ,
6849           tl_ed_chrg_alloc_acctd_amt,
6850 
6851             tl_ed_frt_alloc_amt     ,
6852             tl_ed_frt_alloc_acctd_amt,
6853             tl_ed_tax_alloc_amt     ,
6854             tl_ed_tax_alloc_acctd_amt,
6855           --
6856        -- UNED
6857           DECODE(rar.line_type,'LINE',ctlgd.amount,
6858 	                       'CB'  ,ctlgd.amount,0),               --For Line DIST_AMT
6859           DECODE(rar.line_type,'LINE',ctlgd.acctd_amount,
6860 	                       'CB'  ,ctlgd.acctd_amount,0),         --         DIST_ACCTD_AMT
6861 
6862           DECODE(p_pay_adj,'APP',
6863                  DECODE(rar.line_type,'CHARGES',ctlgd.amount,0),
6864                         0),                                          --For Charges  DIST_CHRG_AMT
6865           DECODE(p_pay_adj,'APP',
6866                  DECODE(rar.line_type,'CHARGES',ctlgd.acctd_amount,0),
6867                         0),                                           --            DIST_CHRG_ACCTD_AMT
6868 --{ Uned Frt Element
6869           DECODE(p_pay_adj,'APP',
6870                  DECODE(rar.line_type,'FREIGHT',ctlgd.amount,0),
6871                         0),                                           --For Frt  DIST_FRT_AMT
6872           DECODE(p_pay_adj,'APP',
6873                  DECODE(rar.line_type,'FREIGHT',ctlgd.acctd_amount,0),
6874                         0),                                           --   DIST_FRT_ACCTD_AMT
6875 --}
6876           DECODE(rar.line_type,'TAX',ctlgd.amount,0),                --For Tax  DIST_AMT
6877           DECODE(rar.line_type,'TAX',ctlgd.acctd_amount,0),          --         DIST_ACCTD_AMT
6878           -- Buc
6879           tl_uned_alloc_amt          ,
6880           tl_uned_alloc_acctd_amt    ,
6881           tl_uned_chrg_alloc_amt     ,
6882           tl_uned_chrg_alloc_acctd_amt,
6883           tl_uned_frt_alloc_amt     ,
6884           tl_uned_frt_alloc_acctd_amt,
6885           tl_uned_tax_alloc_amt     ,
6886           tl_uned_tax_alloc_acctd_amt,
6887           DECODE(p_pay_adj,'ADJ',p_adj_rec.TYPE,p_app_rec.APPLICATION_TYPE),
6888           DECODE(p_pay_adj,'ADJ','ADJ','RA'),
6889           DECODE(p_pay_adj,'ADJ',p_adj_rec.adjustment_id, p_app_rec.receivable_application_id),
6890           rar.line_type,
6891           --
6892           rar.group_id,
6893           rar.source_data_key1  ,
6894           rar.source_data_key2  ,
6895           rar.source_data_key3  ,
6896           rar.source_data_key4  ,
6897           rar.source_data_key5  ,
6898           'D',
6899           --BUG#3611016
6900           p_ae_sys_rec.set_of_books_id,
6901           p_ae_sys_rec.sob_type,
6902           rar.tax_link_id,
6903           rar.tax_inc_flag
6904      FROM ra_ar_gt                     rar,
6905           ra_cust_trx_line_gl_dist     ctlgd
6906     WHERE rar.gt_id                      = p_gt_id
6907       AND rar.ref_customer_trx_id        = p_customer_trx_id
6908       AND rar.gp_level                   = 'L'
6909       AND rar.ref_customer_trx_id        = ctlgd.customer_trx_id
6910       AND rar.ref_customer_trx_line_id   = ctlgd.customer_trx_line_id(+)
6911       --{HYU revrec adj api restriction
6912       AND ctlgd.account_set_flag         = 'N';
6913 --{HYUTREATUNEARNUNBILLED
6914 --      AND ctlgd.account_class         NOT IN ('UNEARN','UNBILL');
6915 
6916   l_rows := sql%rowcount;
6917   g_appln_count := g_appln_count + l_rows;
6918   IF PG_DEBUG = 'Y' THEN
6919   localdebug('  rows inserted = ' || l_rows);
6920   localdebug('   -->Distributions gotten from transaction ');
6921   END IF;
6922 
6923 
6924 /* Commented this portion of de code out for no adjustment will use LLCA in 11i,
6925    and unification of cash basis and accrual basis accounting is not required in 11i
6926    the is portion of the code is necessary in 11iX for unification of cash basis and accrual
6927    Without commenting out this piece of code the mechanism will not break
6928    because not adjustment will be created with detail distributions in 11i
6929    For performance reason, we might need to comment out this piece in 11i
6930 */
6931 
6932   IF p_pay_adj <> 'ADJ' THEN
6933 
6934    -- Need to insert adjustment distributions for cash basis representation
6935    -- Use for R12 and R12_11IMFAR, but not for R12_11ICASH (online_lazy_upg)
6936    -- As online_lazy_upg never goes here no need to add a if condition, add it for safety
6937 
6938    IF PG_DEBUG = 'Y' THEN
6939    localdebug('Get_inv_dist: Insert Adjustoment distributions');
6940    localdebug('  g_mode_process:'||g_mode_process);
6941    END IF;
6942 
6943    IF g_mode_process NOT IN ('R12_MERGE') THEN
6944 
6945    IF PG_DEBUG = 'Y' THEN
6946    localdebug('  Normal R12 distributions');
6947    END IF;
6948 
6949    -- Adj Distribution R12
6950    INSERT INTO RA_AR_GT
6951    ( GT_ID                       ,
6952      AMT                         ,
6953      ACCTD_AMT                   ,
6954      ACCOUNT_CLASS               ,
6955      CCID_SECONDARY              ,
6956      REF_CUST_TRX_LINE_GL_DIST_ID,
6957      REF_CUSTOMER_TRX_LINE_ID    ,
6958      REF_CUSTOMER_TRX_ID         ,
6959      TO_CURRENCY                 ,
6960      BASE_CURRENCY               ,
6961   -- ADJ and APP Elmt
6962      DIST_AMT,             --HYUD LINE
6963      DIST_ACCTD_AMT,       --HYUD LINE
6964      DIST_CHRG_AMT,        --HYUD CHRG
6965      DIST_CHRG_ACCTD_AMT,  --HYUD CHRG
6966      DIST_FRT_AMT,         --HYUD FRT
6967      DIST_FRT_ACCTD_AMT,   --HYUD FRT
6968      DIST_TAX_AMT,         --HYUD TAX
6969      DIST_TAX_ACCTD_AMT,   --HYUD TAX
6970      --
6971      tl_alloc_amt          ,
6972      tl_alloc_acctd_amt    ,
6973      tl_chrg_alloc_amt     ,
6974      tl_chrg_alloc_acctd_amt,
6975      tl_frt_alloc_amt     ,
6976      tl_frt_alloc_acctd_amt,
6977      tl_tax_alloc_amt     ,
6978      tl_tax_alloc_acctd_amt,
6979   -- ED Elmt
6980      DIST_ed_AMT,
6981      DIST_ed_ACCTD_AMT,
6982      DIST_ed_chrg_AMT,
6983      DIST_ed_chrg_ACCTD_AMT,
6984      DIST_ed_frt_AMT      ,
6985      DIST_ed_frt_ACCTD_AMT,
6986      DIST_ed_tax_AMT      ,
6987      DIST_ed_tax_ACCTD_AMT,
6988      --
6989      tl_ed_alloc_amt          ,
6990      tl_ed_alloc_acctd_amt    ,
6991      tl_ed_chrg_alloc_amt     ,
6992      tl_ed_chrg_alloc_acctd_amt,
6993      tl_ed_frt_alloc_amt     ,
6994      tl_ed_frt_alloc_acctd_amt,
6995      tl_ed_tax_alloc_amt     ,
6996      tl_ed_tax_alloc_acctd_amt,
6997      --
6998   -- UNED
6999      DIST_uned_AMT                    ,
7000      DIST_uned_ACCTD_AMT              ,
7001      DIST_uned_chrg_AMT,
7002      DIST_uned_chrg_ACCTD_AMT,
7003      DIST_uned_frt_AMT      ,
7004      DIST_uned_frt_ACCTD_AMT,
7005      DIST_uned_tax_AMT      ,
7006      DIST_uned_tax_ACCTD_AMT,
7007      --
7008      tl_uned_alloc_amt          ,
7009      tl_uned_alloc_acctd_amt    ,
7010      tl_uned_chrg_alloc_amt     ,
7011      tl_uned_chrg_alloc_acctd_amt,
7012      tl_uned_frt_alloc_amt     ,
7013      tl_uned_frt_alloc_acctd_amt,
7014      tl_uned_tax_alloc_amt     ,
7015      tl_uned_tax_alloc_acctd_amt,
7016      --
7017      source_type               ,
7018      source_table              ,
7019      source_id                 ,
7020      ref_line_id              ,
7021      line_type                 ,
7022      --
7023      group_id,
7024      source_data_key1  ,
7025      source_data_key2  ,
7026      source_data_key3  ,
7027      source_data_key4  ,
7028      source_data_key5  ,
7029      gp_level,
7030      --
7031      set_of_books_id,
7032      sob_type,
7033      tax_link_id,
7034      tax_inc_flag
7035      )
7036    SELECT /*+INDEX (rar ra_ar_n1)*/
7037           p_gt_id,     --gt_id
7038           NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),  --amt
7039                     --HYU A negative adj distrib increase the inv rec therefore the rem on trx line
7040                     -- For ARPDDB and ARALLOCB integration detail distribution from ARPDDB needs
7041                     -- to be created in the same sign of the parent adjustment <=>
7042                     -- ADJ -100 will create a set of det_dist for the Write-off account with a total
7043                     -- of -100 ending decrease the line balance, no need to multply by -1 removing it
7044           NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0), --acctd_amt  Rem * -1
7045           rrc.ref_account_class,   --account_class
7046           rrc.code_combination_id,  --ccid_secondary
7047 
7048           NVL(rrc.ref_cust_trx_line_gl_dist_id,
7049                DECODE(rrc.ref_account_class,'REV',
7050                       DECODE(rrc.activity_bucket,'ADJ_LINE' ,-6,  --Boundary line : -6
7051                                         'ADJ_FRT'  ,-9,  --Boundary frt  : -9 frt adjustment over Rev line
7052                              -7),                        --Boundary charge:-7
7053                                             'UNEARN',
7054                       DECODE(rrc.activity_bucket,'ADJ_LINE' ,-6,  --Boundary line : -6
7055                                         'ADJ_FRT'  ,-9,  --Boundary frt  : -9 frt adjustment over Rev line
7056                              -7),                        --Boundary charge:-7
7057                                             'UNBILL',
7058                       DECODE(rrc.activity_bucket,'ADJ_LINE' ,-6,  --Boundary line : -6
7059                                         'ADJ_FRT'  ,-9,  --Boundary frt  : -9 frt adjustment over Rev line
7060                              -7),                        --Boundary charge:-7
7061 
7062                       'TAX', -8,                        -- Boundary tax
7063                       'FREIGHT',-9)),                   -- Boundary freight : This should not happens as not adjustment
7064                                                                          --   will be tied to freight line
7065           NVL(rrc.ref_customer_trx_line_id,
7066                DECODE(rrc.ref_account_class,'REV',
7067                       DECODE(rrc.activity_bucket,'ADJ_LINE' ,-6, -- Boundary line:-6
7068                                         'ADJ_FRT'  ,-9, -- Boundary freight:-6
7069                              -7),                          -- Boundary charge:-7
7070                                             'UNEARN',
7071                       DECODE(rrc.activity_bucket,'ADJ_LINE' ,-6, -- Boundary line:-6
7072                                         'ADJ_FRT'  ,-9, -- Boundary freight:-6
7073                              -7),                          -- Boundary charge:-7
7074                                             'UNBILL',
7075                       DECODE(rrc.activity_bucket,'ADJ_LINE' ,-6, -- Boundary line:-6
7076                                         'ADJ_FRT'  ,-9, -- Boundary freight:-6
7077                              -7),                          -- Boundary charge:-7
7078                       'TAX', -8,                        -- Boundary tax
7079                       'FREIGHT',-9)),                   -- Boundary freight : This should not happens as not adjustment
7080                                                                          --   will be tied to freight line
7081           rar.ref_customer_trx_id,
7082           rar.to_currency,
7083           rar.base_currency,
7084       -- ADJ and APP  -- HYU "A reprendre ici"
7085          DECODE(rrc.ref_account_class,'REV',
7086                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7087                                   'ADJ_CHRG',0,
7088                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7089                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7090                                             + rar.DUE_ORIG_AMT = 0 THEN
7091                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7092                                       'UNEARN',
7093                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7094                                   'ADJ_CHRG',0,
7095                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7096                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7097                                             + rar.DUE_ORIG_AMT = 0 THEN
7098                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7099                                       'UNBILL',
7100                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7101                                   'ADJ_CHRG',0,
7102                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7103                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7104                                             + rar.DUE_ORIG_AMT = 0 THEN
7105                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7106 								   0),         -- DIST_AMT
7107          DECODE(rrc.ref_account_class,'REV',
7108                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7109                                   'ADJ_CHRG',0,
7110                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7111                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7112                                             + rar.DUE_ORIG_AMT = 0 THEN
7113                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7114                                       'UNEARN',
7115                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7116                                   'ADJ_CHRG',0,
7117                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7118                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7119                                             + rar.DUE_ORIG_AMT = 0 THEN
7120                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7121                                       'UNBILL',
7122                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7123                                   'ADJ_CHRG',0,
7124                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7125                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7126                                             + rar.DUE_ORIG_AMT = 0 THEN
7127                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7128 						   0),    -- DIST_ACCTD_AMT
7129          DECODE(rrc.ref_account_class,'REV',
7130                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7131                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7132                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7133                                             + rar.CHRG_ORIG_AMT = 0 THEN
7134                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7135                                    0           ),
7136                                       'UNEARN',
7137                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7138                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7139                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7140                                             + rar.CHRG_ORIG_AMT = 0 THEN
7141                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7142                                    0           ),
7143                                       'UNBILL',
7144                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7145                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7146                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7147                                             + rar.CHRG_ORIG_AMT = 0 THEN
7148                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7149                                    0           ),
7150 								   0),         -- DIST_CHRG_AMT
7151          DECODE(rrc.ref_account_class,'REV',
7152                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7153                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7154                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7155                                             + rar.CHRG_ORIG_AMT = 0 THEN
7156                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7157                                         0           ),
7158                                       'UNEARN',
7159                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7160                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7161                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7162                                             + rar.CHRG_ORIG_AMT = 0 THEN
7163                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7164                                         0           ),
7165                                       'UNBILL',
7166                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7167                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7168                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7169                                             + rar.CHRG_ORIG_AMT = 0 THEN
7170                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7171                                         0           ),
7172 										0),         -- DIST_CHRG_ACCTD_AMT
7173          DECODE(rrc.ref_account_class,'REV',
7174                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7175                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7176                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7177                                             + rar.FRT_ORIG_AMT = 0 THEN
7178                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7179                                         0           ),
7180                                       'UNEARN',
7181                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7182                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7183                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7184                                             + rar.FRT_ORIG_AMT = 0 THEN
7185                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7186                                         0           ),
7187                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7188                                       'UNBILL',
7189                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7190                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7191                                             + rar.FRT_ORIG_AMT = 0 THEN
7192                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7193                                         0           ),
7194 										0),         -- DIST_FRT_AMT
7195          DECODE(rrc.ref_account_class,'REV',
7196                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7197                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7198                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7199                                             + rar.FRT_ORIG_AMT = 0 THEN
7200                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7201                                         0           ),
7202                                       'UNEARN',
7203                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7204                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7205                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7206                                             + rar.FRT_ORIG_AMT = 0 THEN
7207                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7208                                         0           ),
7209                                       'UNBILL',
7210                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7211                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7212                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7213                                             + rar.FRT_ORIG_AMT = 0 THEN
7214                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7215                                         0           ),
7216 										0),         -- DIST_FRT_ACCTD_AMT
7217          DECODE(rrc.ref_account_class,'TAX',
7218                        CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7219                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7220                                             + rar.TAX_ORIG_AMT = 0 THEN
7221                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,0),             -- DIST_TAX_AMT
7222          DECODE(rrc.ref_account_class,'TAX',
7223                        CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7224                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7225                                             + rar.TAX_ORIG_AMT = 0 THEN
7226                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,0),       -- DIST_TAX_ACCTD_AMT
7227          --
7228          rar.tl_alloc_amt          ,
7229          rar.tl_alloc_acctd_amt    ,
7230          rar.tl_chrg_alloc_amt     ,
7231          rar.tl_chrg_alloc_acctd_amt,
7232          rar.tl_frt_alloc_amt          ,
7233          rar.tl_frt_alloc_acctd_amt    ,
7234          rar.tl_tax_alloc_amt          ,
7235          rar.tl_tax_alloc_acctd_amt    ,
7236          -- Elemt Rev
7237          DECODE(rrc.ref_account_class,'REV',
7238                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7239                                   'ADJ_CHRG',0,
7240                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7241                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7242                                             + rar.DUE_ORIG_AMT = 0 THEN
7243                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7244                                       'UNEARN',
7245                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7246                                   'ADJ_CHRG',0,
7247                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7248                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7249                                             + rar.DUE_ORIG_AMT = 0 THEN
7250                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7251                                       'UNBILL',
7252                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7253                                   'ADJ_CHRG',0,
7254                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7255                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7256                                             + rar.DUE_ORIG_AMT = 0 THEN
7257                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7258 					   0) ,        -- DIST_ED_AMT  Rem * -1
7259          DECODE(rrc.ref_account_class,'REV',
7260                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7261                                   'ADJ_CHRG',0,
7262                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7263                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7264                                             + rar.DUE_ORIG_AMT = 0 THEN
7265                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7266                                       'UNEARN',
7267                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7268                                   'ADJ_CHRG',0,
7269                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7270                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7271                                             + rar.DUE_ORIG_AMT = 0 THEN
7272                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7273                                       'UNBILL',
7274                 DECODE(rrc.activity_bucket,'ADJ_FRT' ,0,
7275                                   'ADJ_CHRG',0,
7276                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7277                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7278                                             + rar.DUE_ORIG_AMT = 0 THEN
7279                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7280 
7281                        0),    -- DIST_ED_ACCTD_AMT  Rem * -1
7282          -- Elemt Chrg
7283          DECODE(rrc.ref_account_class,'REV',
7284                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7285                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7286                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7287                                             + rar.CHRG_ORIG_AMT = 0 THEN
7288                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7289                                         0           ),
7290 									  'UNEARN',
7291                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7292                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7293                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7294                                             + rar.CHRG_ORIG_AMT = 0 THEN
7295                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7296                                         0           ),
7297 									  'UNBILL',
7298                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7299                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7300                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7301                                             + rar.CHRG_ORIG_AMT = 0 THEN
7302                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7303                                         0           ),
7304 										0),         -- DIST_ED_CHRG_AMT Rem * -1
7305          DECODE(rrc.ref_account_class,'REV',
7306                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7307                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7308                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7309                                             + rar.CHRG_ORIG_AMT = 0 THEN
7310                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7311                                         0           ),
7312                                        'UNEARN',
7313                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7314                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7315                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7316                                             + rar.CHRG_ORIG_AMT = 0 THEN
7317                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7318                                         0           ),
7319                                        'UNBILL',
7320                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7321                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7322                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7323                                             + rar.CHRG_ORIG_AMT = 0 THEN
7324                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7325                                         0           ),
7326 										0),         -- DIST_ED_CHRG_ACCTD_AMT Rem * -1
7327          -- Elemt Frt
7328          DECODE(rrc.ref_account_class,'REV',
7329                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7330                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7331                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7332                                             + rar.FRT_ORIG_AMT = 0 THEN
7333                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7334                                         0           ),
7335                                       'UNEARN',
7336                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7337                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7338                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7339                                             + rar.FRT_ORIG_AMT = 0 THEN
7340                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7341                                         0           ),
7342                                       'UNBILL',
7343                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7344                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7345                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7346                                             + rar.FRT_ORIG_AMT = 0 THEN
7347                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7348                                         0           ),
7349 										0),         -- DIST_ED_FRT_AMT Rem * -1
7350          DECODE(rrc.ref_account_class,'REV',
7351                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7352                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7353                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7354                                             + rar.FRT_ORIG_AMT = 0 THEN
7355                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7356                                         0           ),
7357                                        'UNEARN',
7358                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7359                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7360                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7361                                             + rar.FRT_ORIG_AMT = 0 THEN
7362                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7363                                         0           ),
7364                                        'UNBILL',
7365                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7366                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7367                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7368                                             + rar.FRT_ORIG_AMT = 0 THEN
7369                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7370                                         0           ),
7371 										0),         -- DIST_ED_FRT_ACCTD_AMT Rem * -1
7372          -- Elemt Tax
7373          DECODE(rrc.ref_account_class,'TAX',
7374                        CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7375                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7376                                             + rar.TAX_ORIG_AMT = 0 THEN
7377                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,0),             -- DIST_ED_TAX_AMT  Rem * -1
7378          DECODE(rrc.ref_account_class,'TAX',
7379                        CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7380                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7381                                             + rar.TAX_ORIG_AMT = 0 THEN
7382                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,0),       -- DIST_ED_TAX_ACCTD_AMT Rem * -1
7383          --Bucket
7384           -- Buc Rev
7385           rar.tl_ed_alloc_amt          ,
7386           rar.tl_ed_alloc_acctd_amt    ,
7387           --Buc Chrg
7388           rar.tl_ed_chrg_alloc_amt     ,
7389           rar.tl_ed_chrg_alloc_acctd_amt,
7390           --Buc Frt
7391           rar.tl_ed_frt_alloc_amt          ,
7392           rar.tl_ed_frt_alloc_acctd_amt    ,
7393           --Buc Tax
7394           rar.tl_ed_tax_alloc_amt          ,
7395           rar.tl_ed_tax_alloc_acctd_amt    ,
7396           --
7397       -- UNED
7398          -- Rev Elemt
7399          DECODE(rrc.ref_account_class,'REV',
7400                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7401                                   'ADJ_CHRG',0,
7402                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7403                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7404                                             + rar.DUE_ORIG_AMT = 0 THEN
7405                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7406                                        'UNEARN',
7407                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7408                                   'ADJ_CHRG',0,
7409                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7410                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7411                                             + rar.DUE_ORIG_AMT = 0 THEN
7412                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7413                                        'UNBILL',
7414                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7415                                   'ADJ_CHRG',0,
7416                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7417                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7418                                             + rar.DUE_ORIG_AMT = 0 THEN
7419                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END),
7420 						  0),         -- DIST_UNED_AMT  Rem * -1
7421          DECODE(rrc.ref_account_class,'REV',
7422                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7423                                   'ADJ_CHRG',0,
7424                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7425                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7426                                             + rar.DUE_ORIG_AMT = 0 THEN
7427                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7428                                       'UNEARN',
7429                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7430                                   'ADJ_CHRG',0,
7431                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7432                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7433                                             + rar.DUE_ORIG_AMT = 0 THEN
7434                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7435                                       'UNBILL',
7436                 DECODE(rrc.activity_bucket,'ADJ_FRT',0,
7437                                   'ADJ_CHRG',0,
7438                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7439                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7440                                             + rar.DUE_ORIG_AMT = 0 THEN
7441                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END),
7442                          0),   -- DIST_UNED_ACCTD_AMT  Rem * -1
7443          -- Chrg Elemt
7444          DECODE(rrc.ref_account_class,'REV',
7445                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7446                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7447                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7448                                             + rar.CHRG_ORIG_AMT = 0 THEN
7449                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7450                                         0           ),
7451                                       'UNEARN',
7452                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7453                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7454                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7455                                             + rar.CHRG_ORIG_AMT = 0 THEN
7456                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7457                                         0           ),
7458                                       'UNBILL',
7459                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7460                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7461                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7462                                             + rar.CHRG_ORIG_AMT = 0 THEN
7463                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7464                                         0           ),
7465 										0),         -- DIST_UNED_CHRG_AMT Rem * -1
7466          DECODE(rrc.ref_account_class,'REV',
7467                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7468                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7469                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7470                                             + rar.CHRG_ORIG_AMT = 0 THEN
7471                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7472                                         0           ),
7473                                       'UNEARN',
7474                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7475                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7476                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7477                                             + rar.CHRG_ORIG_AMT = 0 THEN
7478                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7479                                         0           ),
7480                                       'UNBILL',
7481                 DECODE(rrc.activity_bucket,'ADJ_CHRG',
7482                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7483                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7484                                             + rar.CHRG_ORIG_AMT = 0 THEN
7485                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7486                                         0           ),
7487 										0),         -- DIST_UNED_CHRG_ACCTD_AMT  Rem * -1
7488          -- Frt Elemt
7489          DECODE(rrc.ref_account_class,'REV',
7490                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7491                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7492                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7493                                             + rar.FRT_ORIG_AMT = 0 THEN
7494                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7495                                         0           ),
7496                                       'UNEARN',
7497                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7498                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7499                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7500                                             + rar.FRT_ORIG_AMT = 0 THEN
7501                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7502                                         0           ),
7503                                       'UNBILL',
7504                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7505                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7506                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7507                                             + rar.FRT_ORIG_AMT = 0 THEN
7508                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,
7509                                         0           ),
7510 										0),         -- DIST_UNED_FRT_AMT  Rem * -1
7511          DECODE(rrc.ref_account_class,'REV',
7512                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7513                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7514                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7515                                             + rar.FRT_ORIG_AMT = 0 THEN
7516                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7517                                         0           ),
7518                                       'UNEARN',
7519                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7520                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7521                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7522                                             + rar.FRT_ORIG_AMT = 0 THEN
7523                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7524                                         0           ),
7525                                       'UNBILL',
7526                 DECODE(rrc.activity_bucket,'ADJ_FRT',
7527                                   CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7528                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7529                                             + rar.FRT_ORIG_AMT = 0 THEN
7530                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,
7531                                         0           ),
7532 										0),         -- DIST_UNED_FRT_ACCTD_AMT  Rem * -1
7533          -- Tax Elemt
7534          DECODE(rrc.ref_account_class,'TAX',
7535                        CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7536                                             OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7537                                             + rar.TAX_ORIG_AMT = 0 THEN
7538                                   0 ELSE NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0) END,0),             -- DIST_UNED_TAX_AMT  Rem * -1
7539          DECODE(rrc.ref_account_class,'TAX',
7540                        CASE WHEN SUM(NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0))
7541                                      OVER (PARTITION BY rar.ref_customer_trx_line_id||rrc.activity_bucket)
7542                                             + rar.TAX_ORIG_AMT = 0 THEN
7543                            0 ELSE NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0) END,0),       -- DIST_UNED_TAX_ACCTD_AMT Rem * -1
7544        --Bucket
7545          -- Rev
7546          rar.tl_uned_alloc_amt          ,
7547          rar.tl_uned_alloc_acctd_amt    ,
7548          --Chrg
7549          rar.tl_uned_chrg_alloc_amt     ,
7550          rar.tl_uned_chrg_alloc_acctd_amt,
7551          --Frt
7552          rar.tl_uned_frt_alloc_amt          ,
7553          rar.tl_uned_frt_alloc_acctd_amt    ,
7554          --Tax
7555          rar.tl_uned_tax_alloc_amt          ,
7556          rar.tl_uned_tax_alloc_acctd_amt    ,
7557          --
7558           p_app_rec.APPLICATION_TYPE,
7559           'RA',
7560           p_app_rec.receivable_application_id,
7561           rrc.line_id,
7562           rar.line_type,
7563           --
7564           rar.group_id,
7565           rar.source_data_key1  ,
7566           rar.source_data_key2  ,
7567           rar.source_data_key3  ,
7568           rar.source_data_key4  ,
7569           rar.source_data_key5  ,
7570           'D',
7571           --BUG#3611016
7572           p_ae_sys_rec.set_of_books_id,
7573           p_ae_sys_rec.sob_type,
7574           rrc.tax_link_id,   -- tax_link_id
7575           DECODE(rrc.ref_account_class,'TAX','Y',
7576                      --'REV',DECODE(NVL(adj.tax_adjusted,0),0, 'N','Y'),
7577 		     'REV','Y', -- BUG 7597090
7578                      'N')   -- tax_inc_flag
7579      FROM ra_ar_gt                    rar,
7580           ar_distributions            rrc,
7581           ar_adjustments              adj
7582     WHERE rar.gt_id                      = p_gt_id
7583       AND rar.ref_customer_trx_id        = p_customer_trx_id
7584       AND rar.gp_level                   = 'L'
7585       AND adj.customer_trx_id            = p_customer_trx_id
7586       AND rrc.source_table               = 'ADJ'
7587       AND rrc.source_id                  = adj.adjustment_id
7588       AND rar.ref_customer_trx_line_id   = rrc.ref_customer_trx_line_id
7589       AND rar.ref_cust_trx_line_gl_dist_id IS NULL
7590       AND (adj.upgrade_method   = 'R12' OR adj.upgrade_method IS NULL);
7591 -- exclude the FREIGHT from REV line
7592 --      AND rrc.source_type               <> 'FREIGHT'; /*FREIGHT adjustment is included in REV*/
7593 
7594    l_rows := sql%rowcount;
7595    g_appln_count := g_appln_count + l_rows;
7596    IF PG_DEBUG = 'Y' THEN
7597    localdebug('  rows inserted = ' || l_rows);
7598    localdebug('  App Frt/Chrg R12 distributions');
7599    END IF;
7600 
7601    -- App Frt/Chrg Distribution R12
7602    INSERT INTO RA_AR_GT
7603    ( GT_ID                       ,
7604      AMT                         ,
7605      ACCTD_AMT                   ,
7606      ACCOUNT_CLASS               ,
7607      CCID_SECONDARY              ,
7608      REF_CUST_TRX_LINE_GL_DIST_ID,
7609      REF_CUSTOMER_TRX_LINE_ID    ,
7610      REF_CUSTOMER_TRX_ID         ,
7611      TO_CURRENCY                 ,
7612      BASE_CURRENCY               ,
7613   -- ADJ and APP Elmt
7614      DIST_AMT,             --HYUD LINE
7615      DIST_ACCTD_AMT,       --HYUD LINE
7616      DIST_CHRG_AMT,        --HYUD CHRG
7617      DIST_CHRG_ACCTD_AMT,  --HYUD CHRG
7618      DIST_FRT_AMT,         --HYUD FRT
7619      DIST_FRT_ACCTD_AMT,   --HYUD FRT
7620      DIST_TAX_AMT,         --HYUD TAX
7621      DIST_TAX_ACCTD_AMT,   --HYUD TAX
7622      --
7623      tl_alloc_amt          ,
7624      tl_alloc_acctd_amt    ,
7625      tl_chrg_alloc_amt     ,
7626      tl_chrg_alloc_acctd_amt,
7627      tl_frt_alloc_amt     ,
7628      tl_frt_alloc_acctd_amt,
7629      tl_tax_alloc_amt     ,
7630      tl_tax_alloc_acctd_amt,
7631   -- ED Elmt
7632      DIST_ed_AMT,
7633      DIST_ed_ACCTD_AMT,
7634      DIST_ed_chrg_AMT,
7635      DIST_ed_chrg_ACCTD_AMT,
7636      DIST_ed_frt_AMT      ,
7637      DIST_ed_frt_ACCTD_AMT,
7638      DIST_ed_tax_AMT      ,
7639      DIST_ed_tax_ACCTD_AMT,
7640      --
7641      tl_ed_alloc_amt          ,
7642      tl_ed_alloc_acctd_amt    ,
7643      tl_ed_chrg_alloc_amt     ,
7644      tl_ed_chrg_alloc_acctd_amt,
7645      tl_ed_frt_alloc_amt     ,
7646      tl_ed_frt_alloc_acctd_amt,
7647      tl_ed_tax_alloc_amt     ,
7648      tl_ed_tax_alloc_acctd_amt,
7649      --
7650   -- UNED
7651      DIST_uned_AMT                    ,
7652      DIST_uned_ACCTD_AMT              ,
7653      DIST_uned_chrg_AMT,
7654      DIST_uned_chrg_ACCTD_AMT,
7655      DIST_uned_frt_AMT      ,
7656      DIST_uned_frt_ACCTD_AMT,
7657      DIST_uned_tax_AMT      ,
7658      DIST_uned_tax_ACCTD_AMT,
7659      --
7660      tl_uned_alloc_amt          ,
7661      tl_uned_alloc_acctd_amt    ,
7662      tl_uned_chrg_alloc_amt     ,
7663      tl_uned_chrg_alloc_acctd_amt,
7664      tl_uned_frt_alloc_amt     ,
7665      tl_uned_frt_alloc_acctd_amt,
7666      tl_uned_tax_alloc_amt     ,
7667      tl_uned_tax_alloc_acctd_amt,
7668      --
7669      source_type               ,
7670      source_table              ,
7671      source_id                 ,
7672      ref_line_id              ,
7673      line_type                 ,
7674      --
7675      group_id,
7676      source_data_key1  ,
7677      source_data_key2  ,
7678      source_data_key3  ,
7679      source_data_key4  ,
7680      source_data_key5  ,
7681      gp_level,
7682      --
7683      set_of_books_id,
7684      sob_type,
7685      tax_link_id,
7686      tax_inc_flag
7687      )
7688    SELECT /*+INDEX (rar ra_ar_n1)*/
7689           p_gt_id,     --gt_id
7690           NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),  --amt
7691                     --HYU A negative adj distrib increase the inv rec therefore the rem on trx line
7692                     -- For ARPDDB and ARALLOCB integration detail distribution from ARPDDB needs
7693                     -- to be created in the same sign of the parent adjustment <=>
7694                     -- ADJ -100 will create a set of det_dist for the Write-off account with a total
7695                     -- of -100 ending decrease the line balance, no need to multply by -1 removing it
7696           NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0), --acctd_amt  Rem * -1
7697           rrc.ref_account_class,   --account_class
7698           rrc.code_combination_id,  --ccid_secondary
7699 
7700           NVL(rrc.ref_cust_trx_line_gl_dist_id,
7701                DECODE(rrc.ref_account_class,'REV',
7702                       DECODE(rrc.activity_bucket,'APP_LINE' ,-6,  --Boundary line : -6
7703                                         'APP_FRT'  ,-9,  --Boundary frt  : -9 frt adjustment over Rev line
7704                              -7),                        --Boundary charge:-7
7705                                             'UNEARN',
7706                       DECODE(rrc.activity_bucket,'APP_LINE' ,-6,  --Boundary line : -6
7707                                         'APP_FRT'  ,-9,  --Boundary frt  : -9 frt adjustment over Rev line
7708                              -7),                        --Boundary charge:-7
7709                                             'UNBILL',
7710                       DECODE(rrc.activity_bucket,'APP_LINE' ,-6,  --Boundary line : -6
7711                                         'APP_FRT'  ,-9,  --Boundary frt  : -9 frt adjustment over Rev line
7712                              -7),                        --Boundary charge:-7
7713 
7714                       'TAX', -8,                        -- Boundary tax
7715                       'FREIGHT',-9)),                   -- Boundary freight : This should not happens as not adjustment
7716                                                                          --   will be tied to freight line
7717           NVL(rrc.ref_customer_trx_line_id,
7718                DECODE(rrc.ref_account_class,'REV',
7719                       DECODE(rrc.activity_bucket,'APP_LINE' ,-6, -- Boundary line:-6
7720                                         'APP_FRT'  ,-9, -- Boundary freight:-6
7721                              -7),                          -- Boundary charge:-7
7722                                             'UNEARN',
7723                       DECODE(rrc.activity_bucket,'APP_LINE' ,-6, -- Boundary line:-6
7724                                         'APP_FRT'  ,-9, -- Boundary freight:-6
7725                              -7),                          -- Boundary charge:-7
7726                                             'UNBILL',
7727                       DECODE(rrc.activity_bucket,'APP_LINE' ,-6, -- Boundary line:-6
7728                                         'APP_FRT'  ,-9, -- Boundary freight:-6
7729                              -7),                          -- Boundary charge:-7
7730                       'TAX', -8,                        -- Boundary tax
7731                       'FREIGHT',-9)),                   -- Boundary freight : This should not happens as not adjustment
7732                                                                          --   will be tied to freight line
7733           rar.ref_customer_trx_id,
7734           rar.to_currency,
7735           rar.base_currency,
7736       -- ADJ and APP  -- HYU "A reprendre ici"
7737          0,         -- DIST_AMT
7738          0,    -- DIST_ACCTD_AMT
7739          DECODE(rrc.ref_account_class,'REV',
7740                 DECODE(rrc.activity_bucket,'APP_CHRG',
7741                                   NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7742                                    0           ),
7743                                       'UNEARN',
7744                 DECODE(rrc.activity_bucket,'APP_CHRG',
7745                                   NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7746                                    0           ),
7747                                       'UNBILL',
7748                 DECODE(rrc.activity_bucket,'APP_CHRG',
7749                                   NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7750                                    0           ),
7751 								   0),         -- DIST_CHRG_AMT
7752          DECODE(rrc.ref_account_class,'REV',
7753                 DECODE(rrc.activity_bucket,'APP_CHRG',
7754                            NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7755                                         0           ),
7756                                       'UNEARN',
7757                 DECODE(rrc.activity_bucket,'APP_CHRG',
7758                            NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7759                                         0           ),
7760                                       'UNBILL',
7761                 DECODE(rrc.activity_bucket,'APP_CHRG',
7762                            NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7763                                         0           ),
7764 										0),         -- DIST_CHRG_ACCTD_AMT
7765          DECODE(rrc.ref_account_class,'REV',
7766                 DECODE(rrc.activity_bucket,'APP_FRT',
7767                                  NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7768                                         0           ),
7769                                       'UNEARN',
7770                 DECODE(rrc.activity_bucket,'APP_FRT',
7771                                  NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7772                                         0           ),
7773                 DECODE(rrc.activity_bucket,'APP_FRT',
7774                                       'UNBILL',
7775                                  NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7776                                         0           ),
7777 										0),         -- DIST_FRT_AMT
7778          DECODE(rrc.ref_account_class,'REV',
7779                 DECODE(rrc.activity_bucket,'APP_FRT',
7780                                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7781                                         0           ),
7782                                       'UNEARN',
7783                 DECODE(rrc.activity_bucket,'APP_FRT',
7784                                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7785                                         0           ),
7786                                       'UNBILL',
7787                 DECODE(rrc.activity_bucket,'APP_FRT',
7788                                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7789                                         0           ),
7790 										0),         -- DIST_FRT_ACCTD_AMT
7791          0,             -- DIST_TAX_AMT
7792          0,       -- DIST_TAX_ACCTD_AMT
7793          --
7794          rar.tl_alloc_amt          ,
7795          rar.tl_alloc_acctd_amt    ,
7796          rar.tl_chrg_alloc_amt     ,
7797          rar.tl_chrg_alloc_acctd_amt,
7798          rar.tl_frt_alloc_amt          ,
7799          rar.tl_frt_alloc_acctd_amt    ,
7800          rar.tl_tax_alloc_amt          ,
7801          rar.tl_tax_alloc_acctd_amt    ,
7802          -- Elemt Rev
7803          0,        -- DIST_ED_AMT  Rem * -1
7804          0,    -- DIST_ED_ACCTD_AMT  Rem * -1
7805          -- Elemt Chrg
7806          DECODE(rrc.ref_account_class,'REV',
7807                 DECODE(rrc.activity_bucket,'APP_CHRG',
7808                        NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7809                                         0           ),
7810 									  'UNEARN',
7811                 DECODE(rrc.activity_bucket,'APP_CHRG',
7812                        NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7813                                         0           ),
7814 									  'UNBILL',
7815                 DECODE(rrc.activity_bucket,'APP_CHRG',
7816                        NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7817                                         0           ),
7818 										0),         -- DIST_ED_CHRG_AMT Rem * -1
7819          DECODE(rrc.ref_account_class,'REV',
7820                 DECODE(rrc.activity_bucket,'APP_CHRG',
7821                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7822                                         0           ),
7823                                        'UNEARN',
7824                 DECODE(rrc.activity_bucket,'APP_CHRG',
7825                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7826                                         0           ),
7827                                        'UNBILL',
7828                 DECODE(rrc.activity_bucket,'APP_CHRG',
7829                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7830                                         0           ),
7831 										0),         -- DIST_ED_CHRG_ACCTD_AMT Rem * -1
7832          -- Elemt Frt
7833          DECODE(rrc.ref_account_class,'REV',
7834                 DECODE(rrc.activity_bucket,'APP_FRT',
7835                      NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7836                                         0           ),
7837                                       'UNEARN',
7838                 DECODE(rrc.activity_bucket,'APP_FRT',
7839                      NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7840                                         0           ),
7841                                       'UNBILL',
7842                 DECODE(rrc.activity_bucket,'APP_FRT',
7843                      NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7844                                         0           ),
7845 										0),         -- DIST_ED_FRT_AMT Rem * -1
7846          DECODE(rrc.ref_account_class,'REV',
7847                 DECODE(rrc.activity_bucket,'APP_FRT',
7848                      NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7849                                         0           ),
7850                                        'UNEARN',
7851                 DECODE(rrc.activity_bucket,'APP_FRT',
7852                      NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7853                                         0           ),
7854                                        'UNBILL',
7855                 DECODE(rrc.activity_bucket,'APP_FRT',
7856                      NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7857                                         0           ),
7858 										0),         -- DIST_ED_FRT_ACCTD_AMT Rem * -1
7859          -- Elemt Tax
7860          0,             -- DIST_ED_TAX_AMT  Rem * -1
7861          0,       -- DIST_ED_TAX_ACCTD_AMT Rem * -1
7862          --Bucket
7863           -- Buc Rev
7864           rar.tl_ed_alloc_amt          ,
7865           rar.tl_ed_alloc_acctd_amt    ,
7866           --Buc Chrg
7867           rar.tl_ed_chrg_alloc_amt     ,
7868           rar.tl_ed_chrg_alloc_acctd_amt,
7869           --Buc Frt
7870           rar.tl_ed_frt_alloc_amt          ,
7871           rar.tl_ed_frt_alloc_acctd_amt    ,
7872           --Buc Tax
7873           rar.tl_ed_tax_alloc_amt          ,
7874           rar.tl_ed_tax_alloc_acctd_amt    ,
7875           --
7876       -- UNED
7877          -- Rev Elemt
7878          0,         -- DIST_UNED_AMT  Rem * -1
7879          0,   -- DIST_UNED_ACCTD_AMT  Rem * -1
7880          -- Chrg Elemt
7881          DECODE(rrc.ref_account_class,'REV',
7882                 DECODE(rrc.activity_bucket,'APP_CHRG',
7883                            NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7884                                         0           ),
7885                                       'UNEARN',
7886                 DECODE(rrc.activity_bucket,'APP_CHRG',
7887                            NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7888                                         0           ),
7889                                       'UNBILL',
7890                 DECODE(rrc.activity_bucket,'APP_CHRG',
7891                            NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7892                                         0           ),
7893 										0),         -- DIST_UNED_CHRG_AMT Rem * -1
7894          DECODE(rrc.ref_account_class,'REV',
7895                 DECODE(rrc.activity_bucket,'APP_CHRG',
7896                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7897                                         0           ),
7898                                       'UNEARN',
7899                 DECODE(rrc.activity_bucket,'APP_CHRG',
7900                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7901                                         0           ),
7902                                       'UNBILL',
7903                 DECODE(rrc.activity_bucket,'APP_CHRG',
7904                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7905                                         0           ),
7906 										0),         -- DIST_UNED_CHRG_ACCTD_AMT  Rem * -1
7907          -- Frt Elemt
7908          DECODE(rrc.ref_account_class,'REV',
7909                 DECODE(rrc.activity_bucket,'APP_FRT',
7910                            NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7911                                         0           ),
7912                                       'UNEARN',
7913                 DECODE(rrc.activity_bucket,'APP_FRT',
7914                            NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7915                                         0           ),
7916                                       'UNBILL',
7917                 DECODE(rrc.activity_bucket,'APP_FRT',
7918                            NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),
7919                                         0           ),
7920 										0),         -- DIST_UNED_FRT_AMT  Rem * -1
7921          DECODE(rrc.ref_account_class,'REV',
7922                 DECODE(rrc.activity_bucket,'APP_FRT',
7923                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7924                                         0           ),
7925                                       'UNEARN',
7926                 DECODE(rrc.activity_bucket,'APP_FRT',
7927                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7928                                         0           ),
7929                                       'UNBILL',
7930                 DECODE(rrc.activity_bucket,'APP_FRT',
7931                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),
7932                                         0           ),
7933 										0),         -- DIST_UNED_FRT_ACCTD_AMT  Rem * -1
7934          -- Tax Elemt
7935          0,             -- DIST_UNED_TAX_AMT  Rem * -1
7936          0,       -- DIST_UNED_TAX_ACCTD_AMT Rem * -1
7937        --Bucket
7938          -- Rev
7939          rar.tl_uned_alloc_amt          ,
7940          rar.tl_uned_alloc_acctd_amt    ,
7941          --Chrg
7942          rar.tl_uned_chrg_alloc_amt     ,
7943          rar.tl_uned_chrg_alloc_acctd_amt,
7944          --Frt
7945          rar.tl_uned_frt_alloc_amt          ,
7946          rar.tl_uned_frt_alloc_acctd_amt    ,
7947          --Tax
7948          rar.tl_uned_tax_alloc_amt          ,
7949          rar.tl_uned_tax_alloc_acctd_amt    ,
7950          --
7951           p_app_rec.APPLICATION_TYPE,
7952           'RA',
7953           p_app_rec.receivable_application_id,
7954           rrc.ref_line_id,
7955           rar.line_type,
7956           --
7957           rar.group_id,
7958           rar.source_data_key1  ,
7959           rar.source_data_key2  ,
7960           rar.source_data_key3  ,
7961           rar.source_data_key4  ,
7962           rar.source_data_key5  ,
7963           'D',
7964           --BUG#3611016
7965           p_ae_sys_rec.set_of_books_id,
7966           p_ae_sys_rec.sob_type,
7967           rrc.tax_link_id,   -- tax_link_id
7968           DECODE(rrc.ref_account_class,'TAX','Y',
7969                      --'REV',DECODE(NVL(adj.tax_adjusted,0),0, 'N','Y'),
7970 		     'REV','Y', -- BUG 7597090
7971                      'N')   -- tax_inc_flag
7972      FROM ra_ar_gt                    rar,
7973           ar_distributions            rrc,
7974           ar_receivable_applications  ra,
7975           ra_customer_trx_lines        ctl
7976     WHERE rar.gt_id                      = p_gt_id
7977       AND rar.ref_customer_trx_id        = p_customer_trx_id
7978       AND rar.gp_level                   = 'L'
7979       AND ra.applied_customer_trx_id     = p_customer_trx_id
7980       AND rrc.source_table               = 'RA'
7981       AND rrc.source_id                  = ra.receivable_application_id
7982       AND rar.ref_customer_trx_line_id   = rrc.ref_customer_trx_line_id
7983       AND rrc.ref_customer_trx_line_id   = ctl.customer_trx_line_id
7984       AND ctl.line_type                  = 'LINE'
7985       AND rrc.activity_bucket in ('APP_FRT','APP_CHRG')
7986       AND rar.ref_cust_trx_line_gl_dist_id IS NULL
7987       AND (ra.upgrade_method   = 'R12' OR ra.upgrade_method IS NULL);
7988 
7989    l_rows := sql%rowcount;
7990    g_appln_count := g_appln_count + l_rows;
7991    IF PG_DEBUG = 'Y' THEN
7992    localdebug('  rows inserted = ' || l_rows);
7993 
7994    --{Boundary distributions
7995    localdebug('  Boundary R12 distributions');
7996    END IF;
7997 
7998    INSERT INTO RA_AR_GT
7999    ( GT_ID                       ,
8000      AMT                         ,
8001      ACCTD_AMT                   ,
8002      ACCOUNT_CLASS               ,
8003      CCID_SECONDARY              ,
8004      REF_CUST_TRX_LINE_GL_DIST_ID,
8005      REF_CUSTOMER_TRX_LINE_ID    ,
8006      REF_CUSTOMER_TRX_ID         ,
8007      TO_CURRENCY                 ,
8008      BASE_CURRENCY               ,
8009   -- ADJ and APP Elmt
8010      DIST_AMT,             --HYUD LINE
8011      DIST_ACCTD_AMT,       --HYUD LINE
8012      DIST_CHRG_AMT,        --HYUD CHRG
8013      DIST_CHRG_ACCTD_AMT,  --HYUD CHRG
8014      DIST_FRT_AMT,         --HYUD FRT
8015      DIST_FRT_ACCTD_AMT,   --HYUD FRT
8016      DIST_TAX_AMT,         --HYUD TAX
8017      DIST_TAX_ACCTD_AMT,   --HYUD TAX
8018      --
8019      tl_alloc_amt          ,
8020      tl_alloc_acctd_amt    ,
8021      tl_chrg_alloc_amt     ,
8022      tl_chrg_alloc_acctd_amt,
8023      tl_frt_alloc_amt     ,
8024      tl_frt_alloc_acctd_amt,
8025      tl_tax_alloc_amt     ,
8026      tl_tax_alloc_acctd_amt,
8027   -- ED Elmt
8028      DIST_ed_AMT,
8029      DIST_ed_ACCTD_AMT,
8030      DIST_ed_chrg_AMT,
8031      DIST_ed_chrg_ACCTD_AMT,
8032      DIST_ed_frt_AMT      ,
8033      DIST_ed_frt_ACCTD_AMT,
8034      DIST_ed_tax_AMT      ,
8035      DIST_ed_tax_ACCTD_AMT,
8036      --
8037      tl_ed_alloc_amt          ,
8038      tl_ed_alloc_acctd_amt    ,
8039      tl_ed_chrg_alloc_amt     ,
8040      tl_ed_chrg_alloc_acctd_amt,
8041      tl_ed_frt_alloc_amt     ,
8042      tl_ed_frt_alloc_acctd_amt,
8043      tl_ed_tax_alloc_amt     ,
8044      tl_ed_tax_alloc_acctd_amt,
8045      --
8046   -- UNED
8047      DIST_uned_AMT                    ,
8048      DIST_uned_ACCTD_AMT              ,
8049      DIST_uned_chrg_AMT,
8050      DIST_uned_chrg_ACCTD_AMT,
8051      DIST_uned_frt_AMT      ,
8052      DIST_uned_frt_ACCTD_AMT,
8053      DIST_uned_tax_AMT      ,
8054      DIST_uned_tax_ACCTD_AMT,
8055      --
8056      tl_uned_alloc_amt          ,
8057      tl_uned_alloc_acctd_amt    ,
8058      tl_uned_chrg_alloc_amt     ,
8059      tl_uned_chrg_alloc_acctd_amt,
8060      tl_uned_frt_alloc_amt     ,
8061      tl_uned_frt_alloc_acctd_amt,
8062      tl_uned_tax_alloc_amt     ,
8063      tl_uned_tax_alloc_acctd_amt,
8064      --
8065      source_type               ,
8066      source_table              ,
8067      source_id                 ,
8068      ref_line_id              ,
8069      line_type                 ,
8070      --
8071      group_id,
8072      source_data_key1  ,
8073      source_data_key2  ,
8074      source_data_key3  ,
8075      source_data_key4  ,
8076      source_data_key5  ,
8077      gp_level,
8078      --
8079      set_of_books_id,
8080      sob_type,
8081      tax_link_id,
8082      tax_inc_flag
8083      )
8084    SELECT p_gt_id,                              --gt_id
8085           NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),                        --amt   Rem * -1
8086           NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),                  --acctd_amt  Rem * -1
8087           rrc.ref_account_class,                        --account_class
8088           rrc.code_combination_id,              --ccid_secondary
8089           rrc.ref_cust_trx_line_gl_dist_id,     -- (-6 line, -7 chrg, -8 tax, -9 frt)
8090           rrc.ref_customer_trx_line_id,
8091           p_customer_trx_id,
8092           trx.invoice_currency_code,
8093           arp_global.functional_currency,
8094       -- APP
8095          -- Elemt Rev
8096          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-6,
8097                NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_AMT  Rem * -1
8098          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-6,
8099                NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_ACCTD_AMT Rem * -1
8100          --Elemt Chrg
8101          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-7,
8102                NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_CHRG_AMT  Rem * -1
8103          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-7,
8104                NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_CHRG_ACCTD_AMT Rem * -1
8105          --Elemt Frt
8106          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-9,
8107                NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_FRT_AMT  Rem * -1
8108          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-9,
8109                NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_FRT_ACCTD_AMT Rem * -1
8110          --Elemt Tax
8111          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-8,
8112                NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_TAX_AMT  Rem * -1
8113          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-8,
8114                NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_TAX_ACCTD_AMT  Rem * -1
8115        --Bucket
8116          --Rev
8117          decode(rrc.ref_customer_trx_line_id, -6, g_line_applied, 0)          ,
8118          decode(rrc.ref_customer_trx_line_id, -6, g_acctd_line_applied, 0)    ,
8119          --Chrg
8120          decode(rrc.ref_customer_trx_line_id, -7, g_chrg_applied, 0)          ,
8121          decode(rrc.ref_customer_trx_line_id, -7, g_acctd_chrg_applied, 0)    ,
8122          --Frt
8123          decode(rrc.ref_customer_trx_line_id, -9, g_frt_applied, 0)           ,
8124          decode(rrc.ref_customer_trx_line_id, -9, g_acctd_frt_applied, 0)     ,
8125          --Tax
8126          decode(rrc.ref_customer_trx_line_id, -8, g_tax_applied, 0)           ,
8127          decode(rrc.ref_customer_trx_line_id, -8, g_acctd_tax_applied, 0)     ,
8128          --
8129       -- ED
8130          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-6,
8131                  NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_ED_AMT  Rem * -1
8132          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-6,
8133                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_ED_ACCTD_AMT Rem * -1
8134          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-7,
8135                  NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_ED_CHRG_AMT  Rem * -1
8136          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-7,
8137                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_ED_CHRG_ACCTD_AMT Rem * -1
8138          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-9,
8139                  NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_ED_FRT_AMT  Rem * -1
8140          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-9,
8141                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_ED_FRT_ACCTD_AMT Rem * -1
8142          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-8,
8143                  NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_ED_TAX_AMT  Rem * -1
8144          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-8,
8145                  NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_ED_TAX_ACCTD_AMT  Rem * -1
8146          --
8147           g_line_ed          ,
8148           g_acctd_line_ed    ,
8149           g_chrg_ed          ,
8150           g_acctd_chrg_ed    ,
8151           g_frt_ed           ,
8152           g_acctd_frt_ed     ,
8153           g_tax_ed           ,
8154           g_acctd_tax_ed     ,
8155           --
8156       -- UNED
8157          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-6,
8158              NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_UNED_AMT  Rem * -1
8159          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-6,
8160              NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_UNED_ACCTD_AMT Rem * -1
8161          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-7,
8162              NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_UNED_CHRG_AMT   Rem * -1
8163          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-7,
8164              NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_UNED_CHRG_ACCTD_AMT  Rem * -1
8165          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-9,
8166              NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_UNED_FRT_AMT  Rem * -1
8167          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-9,
8168              NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_UNED_FRT_ACCTD_AMT  Rem * -1
8169          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-8,
8170              NVL(rrc.AMOUNT_CR,0) - NVL(rrc.AMOUNT_DR,0),0),         -- DIST_UNED_TAX_AMT  Rem * -1
8171          DECODE(rrc.ref_cust_trx_line_gl_dist_id,-8,
8172              NVL(rrc.ACCTD_AMOUNT_CR,0) - NVL(rrc.ACCTD_AMOUNT_DR,0),0),   -- DIST_UNED_TAX_ACCTD_AMT  Rem * -1
8173          --
8174           g_line_uned          ,
8175           g_acctd_line_uned    ,
8176           g_chrg_uned          ,
8177           g_acctd_chrg_uned    ,
8178           g_frt_uned           ,
8179           g_acctd_frt_uned     ,
8180           g_tax_uned           ,
8181           g_acctd_tax_uned     ,
8182           --
8183           p_app_rec.APPLICATION_TYPE,
8184           'RA',
8185           p_app_rec.receivable_application_id,
8186           rrc.line_id,
8187           DECODE(rrc.ref_cust_trx_line_gl_dist_id,-6,'LINE',
8188                                                   -7,'LINE',
8189                                                   -9,'LINE',
8190                                                   -8,'TAX' ),
8191           --
8192           g.group_id,
8193           g.source_data_key1  ,
8194           g.source_data_key2  ,
8195           g.source_data_key3  ,
8196           g.source_data_key4  ,
8197           g.source_data_key5  ,
8198           'D',
8199           p_ae_sys_rec.set_of_books_id,
8200           p_ae_sys_rec.sob_type,
8201           rrc.tax_link_id,   -- tax_link_id
8202           'N'   -- tax_inc_flag
8203      FROM ar_distributions   rrc,
8204           (SELECT /*+INDEX (ra_ar_gt ra_ar_n1)*/
8205 		          MAX(group_id)  group_id,
8206                   --{HYUBPAGP
8207                   MAX(source_data_key1)  source_data_key1,
8208                   MAX(source_data_key2)  source_data_key2,
8209                   MAX(source_data_key3)  source_data_key3,
8210                   MAX(source_data_key4)  source_data_key4,
8211                   MAX(source_data_key5)  source_data_key5
8212                   --}
8213              FROM ra_ar_gt
8214             WHERE gt_id                      = p_gt_id
8215               AND ref_customer_trx_id        = p_customer_trx_id
8216               AND gp_level                   = 'L')  g,
8217           ar_adjustments     adj,
8218           ra_customer_trx    trx
8219 --{Line Charge and Freight boundary
8220 -- Insert freight dist or the charge dist only in the no CHARGES or FREIGHT line exist
8221 -- As by default the boundary on those 2 lines exist only if there are no REV line on the invoice
8222 -- But in the case the CHARGES or FREIGHT exist and we are not maintaining the balance on lines
8223 -- The issue will be the amount applied in FRT or CHRG will get prorated on the initial
8224 -- Freight line and charge line as there is no remaining on REV line for FRT and CHRG 100% of the amount
8225 -- will be on the FRT and CHRG line, if we insert the boundary line here, the amount will be double accounted
8226 --}
8227     WHERE adj.customer_trx_id              = p_customer_trx_id
8228       AND adj.adjustment_id                = rrc.source_id
8229       AND rrc.source_table                 = 'ADJ'
8230       AND ((rrc.ref_customer_trx_line_id = -6) OR  --Line
8231            (rrc.ref_customer_trx_line_id = -8) OR  --Tax
8232            (rrc.ref_customer_trx_line_id = -7 AND g_trx_line_chrg = 'N') OR  --Charges
8233            (rrc.ref_customer_trx_line_id = -9 AND g_trx_line_frt  = 'N'))    --Freight
8234       AND (adj.upgrade_method    = 'R12'   OR adj.upgrade_method IS NULL)
8235       AND adj.customer_trx_id    = trx.customer_trx_id;
8236 
8237    l_rows := sql%rowcount;
8238    g_appln_count := g_appln_count + l_rows;
8239    IF PG_DEBUG = 'Y' THEN
8240    localdebug('  rows inserted = ' || l_rows);
8241    localdebug('   -->Distribution gotten from adjustment R12 ');
8242    END IF;
8243 
8244 
8245   --{Get the dist from MFAR if required
8246   IF g_mode_process = 'R12_11IMFAR' THEN
8247    IF PG_DEBUG = 'Y' THEN
8248    localdebug('  Mfar 11I legacy to R12 distributions');
8249    END IF;
8250    INSERT INTO RA_AR_GT
8251    ( GT_ID                       ,
8252      AMT                         ,
8253      ACCTD_AMT                   ,
8254      ACCOUNT_CLASS               ,
8255      CCID_SECONDARY              ,
8256      REF_CUST_TRX_LINE_GL_DIST_ID,
8257      REF_CUSTOMER_TRX_LINE_ID    ,
8258      REF_CUSTOMER_TRX_ID         ,
8259      TO_CURRENCY                 ,
8260      BASE_CURRENCY               ,
8261   -- ADJ and APP Elmt
8262      DIST_AMT,             --HYUD LINE
8263      DIST_ACCTD_AMT,       --HYUD LINE
8264      DIST_CHRG_AMT,        --HYUD CHRG
8265      DIST_CHRG_ACCTD_AMT,  --HYUD CHRG
8266      DIST_FRT_AMT,         --HYUD FRT
8267      DIST_FRT_ACCTD_AMT,   --HYUD FRT
8268      DIST_TAX_AMT,         --HYUD TAX
8269      DIST_TAX_ACCTD_AMT,   --HYUD TAX
8270      --
8271      tl_alloc_amt          ,
8272      tl_alloc_acctd_amt    ,
8273      tl_chrg_alloc_amt     ,
8274      tl_chrg_alloc_acctd_amt,
8275      tl_frt_alloc_amt     ,
8276      tl_frt_alloc_acctd_amt,
8277      tl_tax_alloc_amt     ,
8278      tl_tax_alloc_acctd_amt,
8279   -- ED Elmt
8280      DIST_ed_AMT,
8281      DIST_ed_ACCTD_AMT,
8282      DIST_ed_chrg_AMT,
8283      DIST_ed_chrg_ACCTD_AMT,
8284      DIST_ed_frt_AMT      ,
8285      DIST_ed_frt_ACCTD_AMT,
8286      DIST_ed_tax_AMT      ,
8287      DIST_ed_tax_ACCTD_AMT,
8288      --
8289      tl_ed_alloc_amt          ,
8290      tl_ed_alloc_acctd_amt    ,
8291      tl_ed_chrg_alloc_amt     ,
8292      tl_ed_chrg_alloc_acctd_amt,
8293      tl_ed_frt_alloc_amt     ,
8294      tl_ed_frt_alloc_acctd_amt,
8295      tl_ed_tax_alloc_amt     ,
8296      tl_ed_tax_alloc_acctd_amt,
8297   -- UNED
8298      DIST_uned_AMT                    ,
8299      DIST_uned_ACCTD_AMT              ,
8300      DIST_uned_chrg_AMT,
8301      DIST_uned_chrg_ACCTD_AMT,
8302      DIST_uned_frt_AMT      ,
8303      DIST_uned_frt_ACCTD_AMT,
8304      DIST_uned_tax_AMT      ,
8305      DIST_uned_tax_ACCTD_AMT,
8306      --
8307      tl_uned_alloc_amt          ,
8308      tl_uned_alloc_acctd_amt    ,
8309      tl_uned_chrg_alloc_amt     ,
8310      tl_uned_chrg_alloc_acctd_amt,
8311      tl_uned_frt_alloc_amt     ,
8312      tl_uned_frt_alloc_acctd_amt,
8313      tl_uned_tax_alloc_amt     ,
8314      tl_uned_tax_alloc_acctd_amt,
8315      --
8316      source_type               ,
8317      source_table              ,
8318      source_id                 ,
8319      ref_line_id              ,
8320      line_type                 ,
8321      --
8322      group_id,
8323      source_data_key1  ,
8324      source_data_key2  ,
8325      source_data_key3  ,
8326      source_data_key4  ,
8327      source_data_key5  ,
8328      gp_level,
8329      set_of_books_id,
8330      sob_type,
8331      tax_link_id,
8332      tax_inc_flag,
8333      ref_mf_dist_flag
8334      )
8335    SELECT /*+INDEX (rar ra_ar_n1)*/
8336           p_gt_id,                  --gt_id
8337           NVL(rrc.AMOUNT,0),        --amt in the sign of cor adj dist
8338           NVL(rrc.AMOUNT,0),        --acctd_amt is iden amt because in mfar world base and trx currency are the same
8339           ctlgd.account_class,      --account_class
8340           rrc.mf_adjustment_ccid,   --ccid_secondary
8341           rrc.cust_trx_line_gl_dist_id,  --ref_cust_trx_line_gl_dist_id no boundary can exist
8342           ctlgd.customer_trx_line_id,  -- ref_customer_trx_line_id  no boundary can exist
8343           rar.ref_customer_trx_id,
8344           rar.to_currency,
8345           rar.base_currency,
8346       -- ADJ and APP
8347          DECODE(ctlgd.account_class,'REV',NVL(rrc.AMOUNT,0),0),   -- DIST_AMT
8348          DECODE(ctlgd.account_class,'REV',NVL(rrc.AMOUNT,0),0),   -- DIST_ACCTD_AMT
8349          0,                         -- DIST_CHRG_AMT charges in psa are prorate on other lines
8350                                     -- need revisit at charge line introduced in AR
8351          0,                         -- DIST_CHRG_ACCTD_AMT
8352          DECODE(ctlgd.account_class,'FREIGHT',NVL(rrc.AMOUNT,0),0), -- DIST_FRT_AMT
8353                                                                     -- frt adjusted in psa are over frt line
8354          DECODE(ctlgd.account_class,'FREIGHT',NVL(rrc.AMOUNT,0),0), -- DIST_FRT_ACCTD_AMT
8355                                                                     -- frt adjusted in psa are over frt line
8356          DECODE(ctlgd.account_class,'TAX',NVL(rrc.AMOUNT,0),0),     -- DIST_TAX_AMT
8357          DECODE(ctlgd.account_class,'TAX',NVL(rrc.AMOUNT,0),0),     -- DIST_TAX_ACCTD_AMT
8358          --
8359          rar.tl_alloc_amt          ,
8360          rar.tl_alloc_acctd_amt    ,
8361          rar.tl_chrg_alloc_amt     ,
8362          rar.tl_chrg_alloc_acctd_amt,
8363          rar.tl_frt_alloc_amt          ,
8364          rar.tl_frt_alloc_acctd_amt    ,
8365          rar.tl_tax_alloc_amt          ,
8366          rar.tl_tax_alloc_acctd_amt    ,
8367       -- ED
8368          -- Elemt Rev
8369          DECODE(ctlgd.account_class,'REV',NVL(rrc.AMOUNT,0),0),  -- DIST_ED_AMT
8370          DECODE(ctlgd.account_class,'REV',NVL(rrc.AMOUNT,0),0),  -- DIST_ED_ACCTD_AMT
8371          -- Elemt Chrg
8372          0,         -- DIST_ED_CHRG_AMT
8373          0,         -- DIST_ED_CHRG_ACCTD_AMT
8374          -- Elemt Frt
8375          DECODE(ctlgd.account_class,'FREIGHT',NVL(rrc.AMOUNT,0),0),  -- DIST_ED_FRT_AMT
8376          DECODE(ctlgd.account_class,'FREIGHT',NVL(rrc.AMOUNT,0),0),  -- DIST_ED_FRT_ACCTD_AMT
8377          -- Elemt Tax
8378          DECODE(ctlgd.account_class,'TAX',NVL(rrc.AMOUNT,0),0),      -- DIST_ED_TAX_AMT
8379          DECODE(ctlgd.account_class,'TAX',NVL(rrc.AMOUNT,0),0),      -- DIST_ED_TAX_ACCTD_AMT
8380          --Bucket
8381           -- Buc Rev
8382           rar.tl_ed_alloc_amt          ,
8383           rar.tl_ed_alloc_acctd_amt    ,
8384           --Buc Chrg
8385           rar.tl_ed_chrg_alloc_amt     ,
8386           rar.tl_ed_chrg_alloc_acctd_amt,
8387           --Buc Frt
8388           rar.tl_ed_frt_alloc_amt          ,
8389           rar.tl_ed_frt_alloc_acctd_amt    ,
8390           --Buc Tax
8391           rar.tl_ed_tax_alloc_amt          ,
8392           rar.tl_ed_tax_alloc_acctd_amt    ,
8393           --
8394       -- UNED
8395          -- Rev Elemt
8396          DECODE(ctlgd.account_class,'REV',NVL(rrc.AMOUNT,0),0),   -- DIST_UNED_AMT
8397          DECODE(ctlgd.account_class,'REV',NVL(rrc.AMOUNT,0),0),   -- DIST_UNED_ACCTD_AMT
8398          -- Chrg Elemt
8399          0,         -- DIST_UNED_CHRG_AMT
8400          0,         -- DIST_UNED_CHRG_ACCTD_AMT
8401          -- Frt Elemt
8402          DECODE(ctlgd.account_class,'FREIGHT',NVL(rrc.AMOUNT,0),0), -- DIST_UNED_FRT_AMT
8403          DECODE(ctlgd.account_class,'FREIGHT',NVL(rrc.AMOUNT,0),0), -- DIST_UNED_FRT_ACCTD_AMT
8404          -- Tax Elemt
8405          DECODE(ctlgd.account_class,'TAX',NVL(rrc.AMOUNT,0),0),      -- DIST_UNED_TAX_AMT
8406          DECODE(ctlgd.account_class,'TAX',NVL(rrc.AMOUNT,0),0),      -- DIST_UNED_TAX_ACCTD_AMT
8407        --Bucket
8408          -- Rev
8409          rar.tl_uned_alloc_amt          ,
8410          rar.tl_uned_alloc_acctd_amt    ,
8411          --Chrg
8412          rar.tl_uned_chrg_alloc_amt     ,
8413          rar.tl_uned_chrg_alloc_acctd_amt,
8414          --Frt
8415          rar.tl_uned_frt_alloc_amt          ,
8416          rar.tl_uned_frt_alloc_acctd_amt    ,
8417          --Tax
8418          rar.tl_uned_tax_alloc_amt          ,
8419          rar.tl_uned_tax_alloc_acctd_amt    ,
8420          --
8421           p_app_rec.APPLICATION_TYPE,
8422           'RA',
8423           p_app_rec.receivable_application_id,
8424           -12345,           --ref_line_id -12345 at the insertion time need to interpret the ref_psa_dist_flag
8425           rar.line_type,
8426           --
8427           rar.group_id,
8428           rar.source_data_key1  ,
8429           rar.source_data_key2  ,
8430           rar.source_data_key3  ,
8431           rar.source_data_key4  ,
8432           rar.source_data_key5  ,
8433           'D',
8434           --BUG#3611016
8435           p_ae_sys_rec.set_of_books_id,
8436           p_ae_sys_rec.sob_type,
8437 --          g_se_gt_id,
8438           DECODE(ctl.line_type,'TAX',ctl.link_to_cust_trx_line_id,
8439                       'LINE',ctl.customer_trx_line_id,
8440                       NULL),  -- tax_link_id
8441           DECODE(ctl.line_type,'TAX','Y',
8442                      'REV',DECODE(NVL(adj.tax_adjusted,0),0, 'N','Y'),
8443                      'N'),    -- tax_inc_flag
8444           'Y'                 -- ref_mf_dist_flag
8445      FROM ra_ar_gt                    rar,
8446           psa_mf_adj_dist_all         rrc,
8447           ra_cust_trx_line_gl_dist    ctlgd,
8448           ra_customer_trx_lines       ctl,
8449           ar_adjustments              adj
8450     WHERE rar.gt_id                      = p_gt_id
8451       AND rar.ref_customer_trx_id        = p_customer_trx_id
8452       AND rar.gp_level                   = 'L'
8453       AND rar.ref_customer_trx_line_id   = ctl.customer_trx_line_id
8454       AND rar.ref_customer_trx_line_id   = ctlgd.customer_trx_line_id
8455       AND rar.ref_cust_trx_line_gl_dist_id IS NULL
8456       AND ctlgd.cust_trx_line_gl_dist_id = rrc.cust_trx_line_gl_dist_id
8457       AND rrc.adjustment_id              = adj.adjustment_id
8458       AND adj.upgrade_method                   = '11IMFAR';  -- For adjustment the marks are R12 - 11I (cash) - 11IMFAR (Mfar)
8459 
8460    l_rows := sql%rowcount;
8461    g_appln_count := g_appln_count + l_rows;
8462    IF PG_DEBUG = 'Y' THEN
8463    localdebug('  rows inserted = ' || l_rows);
8464    localdebug('   -->Distribution gotten from adjustment 11IMFAR ');
8465    END IF;
8466 
8467    END IF;
8468 
8469    END IF;  -- g_mode_process <> 'R12_11iCASH'
8470  END IF;
8471 
8472   --Populate base distribution amounts
8473   INSERT INTO AR_BASE_DIST_AMTS_GT
8474    ( gt_id
8475      ,gp_level
8476      ,ref_customer_trx_id
8477      ,ref_customer_trx_line_id
8478      ,base_dist_amt
8479      ,base_dist_acctd_amt
8480      ,base_dist_chrg_amt
8481      ,base_dist_chrg_acctd_amt
8482      ,base_dist_frt_amt
8483      ,base_dist_frt_acctd_amt
8484      ,base_dist_tax_amt
8485      ,base_dist_tax_acctd_amt
8486      ,base_ed_dist_amt
8487      ,base_ed_dist_acctd_amt
8488      ,base_ed_dist_chrg_amt
8489      ,base_ed_dist_chrg_acctd_amt
8490      ,base_ed_dist_frt_amt
8491      ,base_ed_dist_frt_acctd_amt
8492      ,base_ed_dist_tax_amt
8493      ,base_ed_dist_tax_acctd_amt
8494      ,base_uned_dist_amt
8495      ,base_uned_dist_acctd_amt
8496      ,base_uned_dist_chrg_amt
8497      ,base_uned_dist_chrg_acctd_amt
8498      ,base_uned_dist_frt_amt
8499      ,base_uned_dist_frt_acctd_amt
8500      ,base_uned_dist_tax_amt
8501      ,base_uned_dist_tax_acctd_amt
8502      ,set_of_books_id
8503      ,sob_type)
8504   SELECT /*+INDEX (b ra_ar_n1)*/
8505 	p_gt_id
8506 	,b.gp_level
8507 	,b.ref_customer_trx_id
8508 	,b.ref_customer_trx_line_id
8509 	-- ADJ and APP
8510 	,SUM(b.dist_amt)                base_dist_amt
8511 	,SUM(b.dist_acctd_amt)          base_dist_acctd_amt
8512 	,SUM(b.dist_chrg_amt)           base_dist_chrg_amt
8513 	,SUM(b.dist_chrg_acctd_amt)     base_dist_chrg_acctd_amt
8514 	,SUM(b.dist_frt_amt)            base_dist_frt_amt
8515 	,SUM(b.dist_frt_acctd_amt)      base_dist_frt_acctd_amt
8516 	,SUM(b.dist_tax_amt)            base_dist_tax_amt
8517 	,SUM(b.dist_tax_acctd_amt)      base_dist_tax_acctd_amt
8518 	-- ED
8519 	,SUM(b.dist_ed_amt)             base_ed_dist_amt
8520 	,SUM(b.dist_ed_acctd_amt)       base_ed_dist_acctd_amt
8521 	,SUM(b.dist_ed_chrg_amt)        base_ed_dist_chrg_amt
8522 	,SUM(b.dist_ed_chrg_acctd_amt)  base_ed_dist_chrg_acctd_amt
8523 	,SUM(b.dist_ed_frt_amt)         base_ed_dist_frt_amt
8524 	,SUM(b.dist_ed_frt_acctd_amt)   base_ed_dist_frt_acctd_amt
8525 	,SUM(b.dist_ed_tax_amt)         base_ed_dist_tax_amt
8526 	,SUM(b.dist_ed_tax_acctd_amt)   base_ed_dist_tax_acctd_amt
8527 	-- UNED
8528 	,SUM(b.dist_uned_amt)             base_uned_dist_amt
8529 	,SUM(b.dist_uned_acctd_amt)       base_uned_dist_acctd_amt
8530 	,SUM(b.dist_uned_chrg_amt)        base_uned_dist_chrg_amt
8531 	,SUM(b.dist_uned_chrg_acctd_amt)  base_uned_dist_chrg_acctd_amt
8532 	,SUM(b.dist_uned_frt_amt)         base_uned_dist_frt_amt
8533 	,SUM(b.dist_uned_frt_acctd_amt)   base_uned_dist_frt_acctd_amt
8534 	,SUM(b.dist_uned_tax_amt)         base_uned_dist_tax_amt
8535 	,SUM(b.dist_uned_tax_acctd_amt)   base_uned_dist_tax_acctd_amt
8536 	,set_of_books_id
8537 	,sob_type
8538    FROM ra_ar_gt b
8539    WHERE b.gt_id    = p_gt_id
8540    AND b.gp_level = 'D'
8541    AND b.set_of_books_id = p_ae_sys_rec.set_of_books_id
8542    AND (b.sob_type        = p_ae_sys_rec.sob_type OR
8543 	 (b.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
8544    AND b.ref_cust_trx_line_gl_dist_id IS NOT NULL
8545    GROUP BY b.ref_customer_trx_id,
8546 	    b.ref_customer_trx_line_id,
8547 	    b.gp_level,
8548 	    b.sob_type,b.set_of_books_id;
8549 
8550             --
8551 
8552    l_rows := sql%rowcount;
8553    IF PG_DEBUG = 'Y' THEN
8554    localdebug('  rows inserted(ar_base_dist_amts_gt) = ' || l_rows);
8555 
8556  localdebug('arp_det_dist_pkg.get_inv_dist()-');
8557  END IF;
8558 END get_inv_dist;
8559 
8560 
8561 PROCEDURE update_dist
8562 (p_gt_id             IN VARCHAR2,
8563  p_customer_trx_id   IN NUMBER,
8564  p_ae_sys_rec        IN arp_acct_main.ae_sys_rec_type)
8565 IS
8566   l_rows NUMBER;
8567 
8568   CURSOR c_read_for_line IS
8569     SELECT /*+ leading (A) index(A ra_ar_n1) INDEX(B ar_base_dist_amts_gt_n1)*/
8570 	       line_type||'-'||a.ref_customer_trx_id||'-'||a.ref_customer_trx_line_id  groupe,
8571         -- ADJ and APP
8572            --Base
8573            b.BASE_dist_AMT,       --Base for Revenue distributions
8574            b.BASE_dist_ACCTD_AMT,
8575            b.BASE_dist_frt_AMT,       --Base for freight distributions HYUFR
8576            b.BASE_dist_frt_ACCTD_AMT,
8577            b.BASE_dist_tax_AMT,       --Base for tax distributions HYUFRTAX
8578            b.BASE_dist_tax_ACCTD_AMT,
8579            b.BASE_dist_chrg_AMT,       --Base for charge distributions
8580            b.BASE_dist_chrg_ACCTD_AMT,
8581            --Element
8582            DIST_AMT,                 --Element for Revenue distributions
8583            DIST_ACCTD_AMT,
8584            DIST_frt_AMT,                 --Element for freight distributions
8585            DIST_frt_ACCTD_AMT,
8586            DIST_tax_AMT,                 --Element for tax distributions
8587            DIST_tax_ACCTD_AMT,
8588            DIST_chrg_AMT,                 --Element for charge distributions
8589            DIST_chrg_ACCTD_AMT,
8590            --Amount to be allocated
8591            tl_alloc_amt,             --Allocation for Revenue distributions
8592            tl_alloc_acctd_amt,
8593            tl_frt_alloc_amt,         --Allocation for freight distributions
8594            tl_frt_alloc_acctd_amt,
8595            tl_tax_alloc_amt,         --Allocation for tax ditsributions
8596            tl_tax_alloc_acctd_amt,
8597            tl_chrg_alloc_amt,        --Allocation for charge distributions
8598            tl_chrg_alloc_acctd_amt,
8599         -- ED
8600            --Base
8601            b.BASE_ed_dist_AMT,      --Base ED on Rev
8602            b.BASE_ed_dist_ACCTD_AMT,
8603            b.BASE_ed_dist_frt_AMT,      --Base ED on Freight HYUFR
8604            b.BASE_ed_dist_frt_ACCTD_AMT,
8605            b.BASE_ed_dist_tax_AMT,      --Base ED on Tax HYUFRTAX
8606            b.BASE_ed_dist_tax_ACCTD_AMT,
8607            b.BASE_ed_dist_chrg_AMT,      --Base ED on Charge
8608            b.BASE_ed_dist_chrg_ACCTD_AMT,
8609            --Element
8610            DIST_ed_AMT,               --Element ED on Rev
8611            DIST_ed_ACCTD_AMT,
8612            DIST_ed_frt_AMT,               --Element ED on Freight HYUFR
8613            DIST_ed_frt_ACCTD_AMT,
8614            DIST_ed_tax_AMT,               --Element ED on Tax HYUFRTAX
8615            DIST_ed_tax_ACCTD_AMT,
8616            DIST_ed_chrg_AMT,               --Element ED on Charge
8617            DIST_ed_chrg_ACCTD_AMT,
8618            --Amount to be allocated
8619            tl_ed_alloc_amt,           --Allocation ED on Rev
8620            tl_ed_alloc_acctd_amt,
8621            tl_ed_frt_alloc_amt,       --Allocation ED on Freight HYUFR
8622            tl_ed_frt_alloc_acctd_amt,
8623            tl_ed_tax_alloc_amt,       --Allocation ED on Tax HYUFRTAX
8624            tl_ed_tax_alloc_acctd_amt,
8625            tl_ed_chrg_alloc_amt,
8626            tl_ed_chrg_alloc_acctd_amt,
8627         -- UNED
8628            --Base
8629            b.BASE_uned_dist_AMT,
8630            b.BASE_uned_dist_ACCTD_AMT,
8631            b.BASE_uned_dist_frt_AMT,
8632            b.BASE_uned_dist_frt_ACCTD_AMT,
8633            b.BASE_uned_dist_tax_AMT,
8634            b.BASE_uned_dist_tax_ACCTD_AMT,
8635            b.BASE_uned_dist_chrg_AMT,
8636            b.BASE_uned_dist_chrg_ACCTD_AMT,
8637            --Element
8638            DIST_uned_AMT,
8639            DIST_uned_ACCTD_AMT,
8640            DIST_uned_frt_AMT,
8641            DIST_uned_frt_ACCTD_AMT,
8642            DIST_uned_tax_AMT,
8643            DIST_uned_tax_ACCTD_AMT,
8644            DIST_uned_chrg_AMT,
8645            DIST_uned_chrg_ACCTD_AMT,
8646            --Amount to be allocated
8647            tl_uned_alloc_amt,
8648            tl_uned_alloc_acctd_amt,
8649            tl_uned_frt_alloc_amt,
8650            tl_uned_frt_alloc_acctd_amt,
8651            tl_uned_tax_alloc_amt,
8652            tl_uned_tax_alloc_acctd_amt,
8653            tl_uned_chrg_alloc_amt,
8654            tl_uned_chrg_alloc_acctd_amt,
8655            --Currencies
8656            NVL(BASE_CURRENCY, p_ae_sys_rec.base_currency) ,
8657            TO_CURRENCY    ,
8658            FROM_CURRENCY  ,
8659            -- Rowid
8660            a.rowid,
8661 	   a.line_type
8662      FROM  RA_AR_GT a,AR_BASE_DIST_AMTS_GT  b--[bug 6454022]
8663     WHERE a.gt_id  = p_gt_id
8664 --      AND se_gt_id  = g_se_gt_id
8665       AND a.ref_customer_trx_id = p_customer_trx_id
8666       AND a.ref_cust_trx_line_gl_dist_id IS NOT NULL
8667       AND a.gp_level            = 'D'
8668       --BUG#3611016
8669       AND a.set_of_books_id     = p_ae_sys_rec.set_of_books_id
8670       AND (a.sob_type            = p_ae_sys_rec.sob_type OR (
8671             a.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
8672       AND b.gt_id    = a.gt_id
8673       AND b.gp_level = 'D'
8674       AND a.ref_customer_trx_id = b.ref_customer_trx_id
8675       AND a.ref_customer_trx_line_id = b.ref_customer_trx_line_id
8676       AND b.set_of_books_id     = p_ae_sys_rec.set_of_books_id
8677       AND (b.sob_type            = p_ae_sys_rec.sob_type OR (
8678             b.sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
8679       --source_table is populated in AR_BASE_DIST_AMTS_GT only for online_lazy_apply flow,the condition
8680       --is modified to restrict duplicate matching pairs [bug 8359020]
8681       AND nvl( a.source_type,'#$%') =
8682                DECODE( b.source_table,'CTLGD',nvl(b.source_type,'#$%'),
8683 	               DECODE(b.source_type,null,nvl(a.source_type,'#$%'),b.source_type))
8684      ORDER BY a.line_type||'-'||a.ref_customer_trx_id||'-'||a.ref_customer_trx_line_id||'-'||a.account_class;
8685 
8686   l_tab  pro_res_tbl_type;
8687 
8688   l_group_tbl            group_tbl_type;
8689   l_group                VARCHAR2(60)    := 'NOGROUP';
8690 
8691 -- ADJ and APP
8692   l_run_amt              NUMBER          := 0;
8693   l_run_alloc            NUMBER          := 0;
8694   l_run_acctd_amt        NUMBER          := 0;
8695   l_run_acctd_alloc      NUMBER          := 0;
8696   l_alloc                NUMBER          := 0;
8697   l_acctd_alloc          NUMBER          := 0;
8698 
8699   l_run_chrg_amt         NUMBER          := 0;
8700   l_run_chrg_alloc       NUMBER          := 0;
8701   l_run_chrg_acctd_amt   NUMBER          := 0;
8702   l_run_chrg_acctd_alloc NUMBER          := 0;
8703   l_chrg_alloc           NUMBER          := 0;
8704   l_chrg_acctd_alloc     NUMBER          := 0;
8705 
8706   l_run_frt_amt         NUMBER          := 0;
8707   l_run_frt_alloc       NUMBER          := 0;
8708   l_run_frt_acctd_amt   NUMBER          := 0;
8709   l_run_frt_acctd_alloc NUMBER          := 0;
8710   l_frt_alloc           NUMBER          := 0;
8711   l_frt_acctd_alloc     NUMBER          := 0;
8712 
8713   l_run_tax_amt         NUMBER          := 0;
8714   l_run_tax_alloc       NUMBER          := 0;
8715   l_run_tax_acctd_amt   NUMBER          := 0;
8716   l_run_tax_acctd_alloc NUMBER          := 0;
8717   l_tax_alloc           NUMBER          := 0;
8718   l_tax_acctd_alloc     NUMBER          := 0;
8719 
8720 -- ED
8721   l_run_ed_amt              NUMBER          := 0;
8722   l_run_ed_alloc            NUMBER          := 0;
8723   l_run_ed_acctd_amt        NUMBER          := 0;
8724   l_run_ed_acctd_alloc      NUMBER          := 0;
8725   l_ed_alloc                NUMBER          := 0;
8726   l_ed_acctd_alloc          NUMBER          := 0;
8727 
8728   l_run_ed_chrg_amt         NUMBER          := 0;
8729   l_run_ed_chrg_alloc       NUMBER          := 0;
8730   l_run_ed_chrg_acctd_amt   NUMBER          := 0;
8731   l_run_ed_chrg_acctd_alloc NUMBER          := 0;
8732   l_ed_chrg_alloc           NUMBER          := 0;
8733   l_ed_chrg_acctd_alloc     NUMBER          := 0;
8734 
8735   l_run_ed_frt_amt         NUMBER          := 0;
8736   l_run_ed_frt_alloc       NUMBER          := 0;
8737   l_run_ed_frt_acctd_amt   NUMBER          := 0;
8738   l_run_ed_frt_acctd_alloc NUMBER          := 0;
8739   l_ed_frt_alloc           NUMBER          := 0;
8740   l_ed_frt_acctd_alloc     NUMBER          := 0;
8741 
8742   l_run_ed_tax_amt         NUMBER          := 0;
8743   l_run_ed_tax_alloc       NUMBER          := 0;
8744   l_run_ed_tax_acctd_amt   NUMBER          := 0;
8745   l_run_ed_tax_acctd_alloc NUMBER          := 0;
8746   l_ed_tax_alloc           NUMBER          := 0;
8747   l_ed_tax_acctd_alloc     NUMBER          := 0;
8748 
8749 -- UNED
8750   l_run_uned_amt              NUMBER          := 0;
8751   l_run_uned_alloc            NUMBER          := 0;
8752   l_run_uned_acctd_amt        NUMBER          := 0;
8753   l_run_uned_acctd_alloc      NUMBER          := 0;
8754   l_uned_alloc                NUMBER          := 0;
8755   l_uned_acctd_alloc          NUMBER          := 0;
8756 
8757   l_run_uned_chrg_amt         NUMBER          := 0;
8758   l_run_uned_chrg_alloc       NUMBER          := 0;
8759   l_run_uned_chrg_acctd_amt   NUMBER          := 0;
8760   l_run_uned_chrg_acctd_alloc NUMBER          := 0;
8761   l_uned_chrg_alloc           NUMBER          := 0;
8762   l_uned_chrg_acctd_alloc     NUMBER          := 0;
8763 
8764   l_run_uned_frt_amt         NUMBER          := 0;
8765   l_run_uned_frt_alloc       NUMBER          := 0;
8766   l_run_uned_frt_acctd_amt   NUMBER          := 0;
8767   l_run_uned_frt_acctd_alloc NUMBER          := 0;
8768   l_uned_frt_alloc           NUMBER          := 0;
8769   l_uned_frt_acctd_alloc     NUMBER          := 0;
8770 
8771   l_run_uned_tax_amt         NUMBER          := 0;
8772   l_run_uned_tax_alloc       NUMBER          := 0;
8773   l_run_uned_tax_acctd_amt   NUMBER          := 0;
8774   l_run_uned_tax_acctd_alloc NUMBER          := 0;
8775   l_uned_tax_alloc           NUMBER          := 0;
8776   l_uned_tax_acctd_alloc     NUMBER          := 0;
8777 
8778   l_exist                BOOLEAN;
8779   l_last_fetch           BOOLEAN;
8780 
8781 BEGIN
8782   IF PG_DEBUG = 'Y' THEN
8783   localdebug('arp_det_dist_pkg.update_dist()+');
8784   localdebug('   p_ae_sys_rec.set_of_books_id :'|| p_ae_sys_rec.set_of_books_id);
8785   localdebug('   p_ae_sys_rec.sob_type        :'|| p_ae_sys_rec.sob_type);
8786   END IF;
8787   OPEN  c_read_for_line;
8788   LOOP
8789     FETCH c_read_for_line BULK COLLECT INTO
8790      l_tab.GROUPE                  ,
8791   -- ADJ and APP
8792      -- Base
8793      l_tab.base_pro_amt       ,
8794      l_tab.base_pro_acctd_amt ,
8795      l_tab.BASE_FRT_PRO_AMT       ,
8796      l_tab.BASE_FRT_PRO_ACCTD_AMT ,
8797      l_tab.BASE_TAX_PRO_AMT       ,
8798      l_tab.BASE_TAX_PRO_ACCTD_AMT ,
8799      l_tab.BASE_CHRG_PRO_AMT       ,
8800      l_tab.BASE_CHRG_PRO_ACCTD_AMT ,
8801      -- Element numerator
8802      l_tab.elmt_pro_amt       ,
8803      l_tab.elmt_pro_acctd_amt ,
8804      l_tab.ELMT_FRT_PRO_AMT       ,
8805      l_tab.ELMT_FRT_PRO_ACCTD_AMT ,
8806      l_tab.ELMT_TAX_PRO_AMT       ,
8807      l_tab.ELMT_TAX_PRO_ACCTD_AMT ,
8808      l_tab.ELMT_CHRG_PRO_AMT       ,
8809      l_tab.ELMT_CHRG_PRO_ACCTD_AMT ,
8810      -- Amount to be allocated
8811      l_tab.buc_alloc_amt      ,
8812      l_tab.buc_alloc_acctd_amt,
8813      l_tab.buc_frt_alloc_amt      ,
8814      l_tab.buc_frt_alloc_acctd_amt,
8815      l_tab.buc_tax_alloc_amt      ,
8816      l_tab.buc_tax_alloc_acctd_amt,
8817      l_tab.buc_chrg_alloc_amt      ,
8818      l_tab.buc_chrg_alloc_acctd_amt,
8819   -- ED
8820      -- Base
8821      l_tab.base_ed_pro_amt       ,
8822      l_tab.base_ed_pro_acctd_amt ,
8823      l_tab.BASE_ed_FRT_PRO_AMT       ,
8824      l_tab.BASE_ed_FRT_PRO_ACCTD_AMT ,
8825      l_tab.BASE_ed_TAX_PRO_AMT       ,
8826      l_tab.BASE_ed_TAX_PRO_ACCTD_AMT ,
8827      l_tab.BASE_ed_CHRG_PRO_AMT       ,
8828      l_tab.BASE_ed_CHRG_PRO_ACCTD_AMT ,
8829      -- Element numerator
8830      l_tab.elmt_ed_pro_amt       ,
8831      l_tab.elmt_ed_pro_acctd_amt ,
8832      l_tab.ELMT_ed_FRT_PRO_AMT       ,
8833      l_tab.ELMT_ed_FRT_PRO_ACCTD_AMT ,
8834      l_tab.ELMT_ed_TAX_PRO_AMT       ,
8835      l_tab.ELMT_ed_TAX_PRO_ACCTD_AMT ,
8836      l_tab.ELMT_ed_CHRG_PRO_AMT       ,
8837      l_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT ,
8838      -- Amount to be allocated
8839      l_tab.buc_ed_alloc_amt      ,
8840      l_tab.buc_ed_alloc_acctd_amt,
8841      l_tab.buc_ed_frt_alloc_amt      ,
8842      l_tab.buc_ed_frt_alloc_acctd_amt,
8843      l_tab.buc_ed_tax_alloc_amt      ,
8844      l_tab.buc_ed_tax_alloc_acctd_amt,
8845      l_tab.buc_ed_chrg_alloc_amt      ,
8846      l_tab.buc_ed_chrg_alloc_acctd_amt,
8847   -- UNED
8848      -- Base
8849      l_tab.base_uned_pro_amt       ,
8850      l_tab.base_uned_pro_acctd_amt ,
8851      l_tab.BASE_uned_FRT_PRO_AMT       ,
8852      l_tab.BASE_uned_FRT_PRO_ACCTD_AMT ,
8853      l_tab.BASE_uned_TAX_PRO_AMT       ,
8854      l_tab.BASE_uned_TAX_PRO_ACCTD_AMT ,
8855      l_tab.BASE_uned_CHRG_PRO_AMT       ,
8856      l_tab.BASE_uned_CHRG_PRO_ACCTD_AMT ,
8857      -- Element numerator
8858      l_tab.elmt_uned_pro_amt       ,
8859      l_tab.elmt_uned_pro_acctd_amt ,
8860      l_tab.ELMT_uned_FRT_PRO_AMT       ,
8861      l_tab.ELMT_uned_FRT_PRO_ACCTD_AMT ,
8862      l_tab.ELMT_uned_TAX_PRO_AMT       ,
8863      l_tab.ELMT_uned_TAX_PRO_ACCTD_AMT ,
8864      l_tab.ELMT_uned_CHRG_PRO_AMT       ,
8865      l_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT ,
8866      -- Amount to be allocated
8867      l_tab.buc_uned_alloc_amt      ,
8868      l_tab.buc_uned_alloc_acctd_amt,
8869      l_tab.buc_uned_frt_alloc_amt      ,
8870      l_tab.buc_uned_frt_alloc_acctd_amt,
8871      l_tab.buc_uned_tax_alloc_amt      ,
8872      l_tab.buc_uned_tax_alloc_acctd_amt,
8873      l_tab.buc_uned_chrg_alloc_amt      ,
8874      l_tab.buc_uned_chrg_alloc_acctd_amt,
8875      --
8876      l_tab.BASE_CURRENCY  ,
8877      l_tab.TO_CURRENCY    ,
8878      l_tab.FROM_CURRENCY  ,
8879      --
8880      l_tab.ROWID_ID,
8881      l_tab.line_type  LIMIT g_bulk_fetch_rows;
8882 
8883      IF c_read_for_line%NOTFOUND THEN
8884           l_last_fetch := TRUE;
8885      END IF;
8886 
8887      IF (l_tab.ROWID_ID.COUNT = 0) AND (l_last_fetch) THEN
8888        IF PG_DEBUG = 'Y' THEN
8889        localdebug('COUNT = 0 and LAST FETCH ');
8890        END IF;
8891        EXIT;
8892      END IF;
8893 
8894      plsql_proration( x_tab               => l_tab,
8895                    x_group_tbl            => l_group_tbl,
8896                    p_group_level          => 'D',
8897                  -- ADJ and APP
8898                    x_run_amt              => l_run_amt,
8899                    x_run_alloc            => l_run_alloc,
8900                    x_run_acctd_amt        => l_run_acctd_amt,
8901                    x_run_acctd_alloc      => l_run_acctd_alloc,
8902                    x_run_chrg_amt         => l_run_chrg_amt,
8903                    x_run_chrg_alloc       => l_run_chrg_alloc,
8904                    x_run_chrg_acctd_amt   => l_run_chrg_acctd_amt,
8905                    x_run_chrg_acctd_alloc => l_run_chrg_acctd_alloc,
8906                    x_run_frt_amt         => l_run_frt_amt,
8907                    x_run_frt_alloc       => l_run_frt_alloc,
8908                    x_run_frt_acctd_amt   => l_run_frt_acctd_amt,
8909                    x_run_frt_acctd_alloc => l_run_frt_acctd_alloc,
8910                    x_run_tax_amt         => l_run_tax_amt,
8911                    x_run_tax_alloc       => l_run_tax_alloc,
8912                    x_run_tax_acctd_amt   => l_run_tax_acctd_amt,
8913                    x_run_tax_acctd_alloc => l_run_tax_acctd_alloc,
8914                  -- ED
8915                    x_run_ed_amt              => l_run_ed_amt,
8916                    x_run_ed_alloc            => l_run_ed_alloc,
8917                    x_run_ed_acctd_amt        => l_run_ed_acctd_amt,
8918                    x_run_ed_acctd_alloc      => l_run_ed_acctd_alloc,
8919                    x_run_ed_chrg_amt         => l_run_ed_chrg_amt,
8920                    x_run_ed_chrg_alloc       => l_run_ed_chrg_alloc,
8921                    x_run_ed_chrg_acctd_amt   => l_run_ed_chrg_acctd_amt,
8922                    x_run_ed_chrg_acctd_alloc => l_run_ed_chrg_acctd_alloc,
8923                    x_run_ed_frt_amt         => l_run_ed_frt_amt,
8924                    x_run_ed_frt_alloc       => l_run_ed_frt_alloc,
8925                    x_run_ed_frt_acctd_amt   => l_run_ed_frt_acctd_amt,
8926                    x_run_ed_frt_acctd_alloc => l_run_ed_frt_acctd_alloc,
8927                    x_run_ed_tax_amt         => l_run_ed_tax_amt,
8928                    x_run_ed_tax_alloc       => l_run_ed_tax_alloc,
8929                    x_run_ed_tax_acctd_amt   => l_run_ed_tax_acctd_amt,
8930                    x_run_ed_tax_acctd_alloc => l_run_ed_tax_acctd_alloc,
8931                  -- UNED
8932                    x_run_uned_amt              => l_run_uned_amt,
8933                    x_run_uned_alloc            => l_run_uned_alloc,
8934                    x_run_uned_acctd_amt        => l_run_uned_acctd_amt,
8935                    x_run_uned_acctd_alloc      => l_run_uned_acctd_alloc,
8936                    x_run_uned_chrg_amt         => l_run_uned_chrg_amt,
8937                    x_run_uned_chrg_alloc       => l_run_uned_chrg_alloc,
8938                    x_run_uned_chrg_acctd_amt   => l_run_uned_chrg_acctd_amt,
8939                    x_run_uned_chrg_acctd_alloc => l_run_uned_chrg_acctd_alloc,
8940                    x_run_uned_frt_amt         => l_run_uned_frt_amt,
8941                    x_run_uned_frt_alloc       => l_run_uned_frt_alloc,
8942                    x_run_uned_frt_acctd_amt   => l_run_uned_frt_acctd_amt,
8943                    x_run_uned_frt_acctd_alloc => l_run_uned_frt_acctd_alloc,
8944                    x_run_uned_tax_amt         => l_run_uned_tax_amt,
8945                    x_run_uned_tax_alloc       => l_run_uned_tax_alloc,
8946                    x_run_uned_tax_acctd_amt   => l_run_uned_tax_acctd_amt,
8947                    x_run_uned_tax_acctd_alloc => l_run_uned_tax_acctd_alloc);
8948 
8949     FORALL i IN l_tab.ROWID_ID.FIRST .. l_tab.ROWID_ID.LAST
8950     UPDATE ra_ar_gt
8951       SET
8952         -- ADJ and APP
8953            tl_alloc_amt         = l_tab.tl_alloc_amt(i),
8954            tl_alloc_acctd_amt   = l_tab.tl_alloc_acctd_amt(i),
8955            tl_chrg_alloc_amt    = l_tab.tl_chrg_alloc_amt(i),
8956            tl_chrg_alloc_acctd_amt = l_tab.tl_chrg_alloc_acctd_amt(i),
8957            tl_frt_alloc_amt       = l_tab.tl_frt_alloc_amt(i),
8958            tl_frt_alloc_acctd_amt = l_tab.tl_frt_alloc_acctd_amt(i),
8959            tl_tax_alloc_amt       = l_tab.tl_tax_alloc_amt(i),
8960            tl_tax_alloc_acctd_amt = l_tab.tl_tax_alloc_acctd_amt(i),
8961         -- ED
8962            tl_ed_alloc_amt         = l_tab.tl_ed_alloc_amt(i),
8963            tl_ed_alloc_acctd_amt   = l_tab.tl_ed_alloc_acctd_amt(i),
8964            tl_ed_chrg_alloc_amt    = l_tab.tl_ed_chrg_alloc_amt(i),
8965            tl_ed_chrg_alloc_acctd_amt = l_tab.tl_ed_chrg_alloc_acctd_amt(i),
8966            tl_ed_frt_alloc_amt       = l_tab.tl_ed_frt_alloc_amt(i),
8967            tl_ed_frt_alloc_acctd_amt = l_tab.tl_ed_frt_alloc_acctd_amt(i),
8968            tl_ed_tax_alloc_amt       = l_tab.tl_ed_tax_alloc_amt(i),
8969            tl_ed_tax_alloc_acctd_amt = l_tab.tl_ed_tax_alloc_acctd_amt(i),
8970         -- UNED
8971            tl_uned_alloc_amt         = l_tab.tl_uned_alloc_amt(i),
8972            tl_uned_alloc_acctd_amt   = l_tab.tl_uned_alloc_acctd_amt(i),
8973            tl_uned_chrg_alloc_amt    = l_tab.tl_uned_chrg_alloc_amt(i),
8974            tl_uned_chrg_alloc_acctd_amt = l_tab.tl_uned_chrg_alloc_acctd_amt(i),
8975            tl_uned_frt_alloc_amt       = l_tab.tl_uned_frt_alloc_amt(i),
8976            tl_uned_frt_alloc_acctd_amt = l_tab.tl_uned_frt_alloc_acctd_amt(i),
8977            tl_uned_tax_alloc_amt       = l_tab.tl_uned_tax_alloc_amt(i),
8978            tl_uned_tax_alloc_acctd_amt = l_tab.tl_uned_tax_alloc_acctd_amt(i)
8979      WHERE rowid                     = l_tab.ROWID_ID(i);
8980 
8981      l_rows := sql%rowcount;
8982      IF PG_DEBUG = 'Y' THEN
8983      localdebug('  rows updated = ' || l_rows);
8984      END IF;
8985 
8986   END LOOP;
8987   CLOSE c_read_for_line;
8988 
8989   IF PG_DEBUG = 'Y' THEN
8990   localdebug('arp_det_dist_pkg.update_dist()-');
8991   END IF;
8992 EXCEPTION
8993   WHEN OTHERS THEN
8994     IF PG_DEBUG = 'Y' THEN
8995     localdebug('  EXCEPTION OTHERS update_dist :'||SQLERRM);
8996     END IF;
8997 END update_dist;
8998 
8999 PROCEDURE create_split_distribution
9000  (p_pay_adj                IN VARCHAR2,
9001   p_customer_trx_id        IN NUMBER,
9002   p_gt_id                  IN VARCHAR2,
9003   p_app_level              IN VARCHAR2,
9004   p_ae_sys_rec             IN arp_acct_main.ae_sys_rec_type)
9005 IS
9006    l_amt    NUMBER;
9007    l_ind    VARCHAR2(10);
9008    l_org_id NUMBER;
9009    l_rows   NUMBER;
9010 BEGIN
9011 IF PG_DEBUG = 'Y' THEN
9012 localdebug('arp_det_dist_pkg.create_split_distribution()+');
9013 localdebug('  p_pay_adj        :'||p_pay_adj);
9014 localdebug('  p_customer_trx_id:'||p_customer_trx_id);
9015 localdebug('  p_app_level      :'||p_app_level);
9016 localdebug('  p_ae_sys_rec.set_of_books_id  :'||p_ae_sys_rec.set_of_books_id);
9017 localdebug('  p_ae_sys_rec.sob_type         :'||p_ae_sys_rec.sob_type);
9018 localdebug('  p_gt_id          :'||p_gt_id);
9019 END IF;
9020 
9021 --Monoparsing
9022 IF g_upgrade_mode = 'Y' THEN
9023   INSERT INTO AR_LINE_APP_DETAIL_GT
9024        ( DET_ID
9025          ,APP_LEVEL
9026          ,GROUP_ID
9027          ,source_data_key1
9028          ,source_data_key2
9029          ,source_data_key3
9030          ,source_data_key4
9031          ,source_data_key5
9032          ,REF_CUSTOMER_TRX_ID
9033          ,REF_CUSTOMER_TRX_LINE_ID
9034          ,REF_CUST_TRX_LINE_GL_DIST_ID
9035          ,REF_LINE_ID
9036          ,REF_DET_ID
9037          ,SOURCE_TYPE
9038          ,SOURCE_TABLE
9039          ,SOURCE_ID
9040          ,AMOUNT
9041          ,ACCTD_AMOUNT
9042          ,CCID
9043          ,BASE_CURRENCY
9044          ,FROM_CURRENCY
9045          ,TO_CURRENCY
9046          ,ref_account_class
9047          ,activity_bucket
9048          ,CREATION_DATE
9049          ,CREATED_BY
9050          ,LAST_UPDATED_BY
9051          ,LAST_UPDATE_DATE
9052          ,LAST_UPDATE_LOGIN
9053          ,gt_id
9054          ,tax_link_id
9055          ,tax_inc_flag
9056        ,  ledger_id
9057        ,  ref_mf_dist_flag
9058        ,  org_id
9059        ,  tax_code_id
9060        ,  location_segment_id
9061          )
9062       SELECT /*+INDEX (A ra_ar_n1)*/
9063 	         NULL --ra_ar_s.NEXTVAL,
9064              ,p_app_level
9065              ,group_id
9066              ,source_data_key1
9067              ,source_data_key2
9068              ,source_data_key3
9069              ,source_data_key4
9070              ,source_data_key5
9071              ,REF_CUSTOMER_TRX_ID
9072 ,DECODE(b.act,'RAADJLINE'   , DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-6,REF_CUSTOMER_TRX_LINE_ID),
9073              'RAADJFREIGHT', DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-9,REF_CUSTOMER_TRX_LINE_ID),
9074              'RAADJTAX'    , DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-8,REF_CUSTOMER_TRX_LINE_ID),
9075              'RAADJCHARGES', DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-7,REF_CUSTOMER_TRX_LINE_ID),
9076                        REF_CUSTOMER_TRX_LINE_ID)
9077              ,REF_CUST_TRX_LINE_GL_DIST_ID
9078              ,REF_LINE_ID
9079              ,REF_DET_ID
9080              ,source_type
9081              ,source_table
9082              ,source_id
9083 ,DECODE(b.act,'RAADJLINE'   , tl_alloc_amt,
9084              'RAADJFREIGHT', tl_frt_alloc_amt,
9085              'RAADJTAX'    , tl_tax_alloc_amt,
9086              'RAADJCHARGES', tl_chrg_alloc_amt,
9087              'EDLINE'      , tl_ed_alloc_amt,
9088              'EDFREIGHT'   , tl_ed_frt_alloc_amt,
9089              'EDTAX'       , tl_ed_tax_alloc_amt,
9090              'EDCHARGES'   , tl_ed_chrg_alloc_amt,
9091              'UNEDLINE'    , tl_uned_alloc_amt,
9092              'UNEDFREIGHT' , tl_uned_frt_alloc_amt,
9093              'UNEDTAX'     , tl_uned_tax_alloc_amt,
9094              'UNEDCHARGES' , tl_uned_chrg_alloc_amt)
9095 --acctd_alloc
9096 ,DECODE(b.act,'RAADJLINE'   , tl_alloc_acctd_amt,
9097              'RAADJFREIGHT', tl_frt_alloc_acctd_amt,
9098              'RAADJTAX'    , tl_tax_alloc_acctd_amt,
9099              'RAADJCHARGES', tl_chrg_alloc_acctd_amt,
9100              'EDLINE'      , tl_ed_alloc_acctd_amt,
9101              'EDFREIGHT'   , tl_ed_frt_alloc_acctd_amt,
9102              'EDTAX'       , tl_ed_tax_alloc_acctd_amt,
9103              'EDCHARGES'   , tl_ed_chrg_alloc_acctd_amt,
9104              'UNEDLINE'    , tl_uned_alloc_acctd_amt,
9105              'UNEDFREIGHT' , tl_uned_frt_alloc_acctd_amt,
9106              'UNEDTAX'     , tl_uned_tax_alloc_acctd_amt,
9107              'UNEDCHARGES' , tl_uned_chrg_alloc_acctd_amt)
9108              ,CCID_SECONDARY
9109              ,BASE_CURRENCY
9110              ,FROM_CURRENCY
9111              ,TO_CURRENCY
9112 --Account_class
9113 ,DECODE(b.act,
9114  'RAADJLINE'   , DECODE(ACCOUNT_CLASS, 'INVOICE','REV',ACCOUNT_CLASS),
9115  'RAADJFREIGHT', DECODE(ACCOUNT_CLASS, 'INVOICE','FREIGHT',ACCOUNT_CLASS),
9116  'RAADJTAX'    , DECODE(ACCOUNT_CLASS, 'INVOICE','TAX',ACCOUNT_CLASS),
9117  'RAADJCHARGES', DECODE(ACCOUNT_CLASS, 'INVOICE','CHARGES',ACCOUNT_CLASS),
9118           ACCOUNT_CLASS)
9119 --Activity Bucket
9120 ,DECODE(b.act,
9121  'RAADJLINE'   , DECODE(p_pay_adj,'APP','APP_LINE','ADJ','ADJ_LINE',''),
9122  'RAADJFREIGHT', DECODE(p_pay_adj,'APP','APP_FRT','ADJ','ADJ_FRT',''),
9123  'RAADJTAX'    , DECODE(p_pay_adj,'APP','APP_TAX','ADJ','ADJ_TAX',''),
9124  'RAADJCHARGES', DECODE(p_pay_adj,'APP','APP_CHRG','ADJ','ADJ_CHRG',''),
9125  'EDLINE'      , 'ED_LINE',
9126  'EDFREIGHT'   , 'ED_FRT',
9127  'EDTAX'       , 'ED_TAX',
9128  'EDCHARGES'   , 'ED_CHRG',
9129  'UNEDLINE'    , 'UNED_LINE',
9130  'UNEDFREIGHT' , 'UNED_FRT',
9131  'UNEDTAX'     , 'UNED_TAX',
9132  'UNEDCHARGES' , 'UNED_CHRG')
9133              ,SYSDATE
9134              ,1
9135              ,1
9136              ,SYSDATE
9137              ,1
9138              ,gt_id
9139             ,tax_link_id
9140             ,tax_inc_flag
9141            , p_ae_sys_rec.set_of_books_id
9142            , ref_mf_dist_flag
9143            , g_org_id
9144            , tax_code_id
9145            , location_segment_id
9146         FROM RA_AR_GT                                       a,
9147 	    (SELECT DECODE(ROWNUM,1, 'RAADJLINE',
9148 				 2,'RAADJFREIGHT',
9149 				 3,'RAADJTAX',
9150 				 4,'RAADJCHARGES',
9151 				 5,'EDLINE',
9152 				 6,'EDFREIGHT',
9153 				 7,'EDTAX',
9154 				 8,'EDCHARGES',
9155 				 9,'UNEDLINE',
9156 				 10,'UNEDFREIGHT',
9157 				 11,'UNEDTAX',
9158 				 12,'UNEDCHARGES',NULL) act
9159 	    FROM DUAL CONNECT BY ROWNUM < 13 )  b
9160        WHERE REF_CUSTOMER_TRX_ID  = p_customer_trx_id
9161          AND gt_id                = p_gt_id
9162          AND REF_CUST_TRX_LINE_GL_DIST_ID IS NOT NULL
9163          AND gp_level             = 'D'
9164          AND set_of_books_id      = p_ae_sys_rec.set_of_books_id
9165          AND (sob_type             = p_ae_sys_rec.sob_type OR
9166                 (sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
9167          AND (( NVL(DECODE(b.act,
9168              'RAADJLINE'   , tl_alloc_amt,
9169              'RAADJFREIGHT', tl_frt_alloc_amt,
9170              'RAADJTAX'    , tl_tax_alloc_amt,
9171              'RAADJCHARGES', tl_chrg_alloc_amt,
9172              'EDLINE'      , tl_ed_alloc_amt,
9173              'EDFREIGHT'   , tl_ed_frt_alloc_amt,
9174              'EDTAX'       , tl_ed_tax_alloc_amt,
9175              'EDCHARGES'   , tl_ed_chrg_alloc_amt,
9176              'UNEDLINE'    , tl_uned_alloc_amt,
9177              'UNEDFREIGHT' , tl_uned_frt_alloc_amt,
9178              'UNEDTAX'     , tl_uned_tax_alloc_amt,
9179              'UNEDCHARGES' , tl_uned_chrg_alloc_amt),0)<> 0)
9180              OR
9181              ( NVL(DECODE(p_pay_adj||line_type,'ADJTAX', DECODE(b.act,'RAADJTAX',abs(amt)+abs(tl_tax_alloc_amt)),
9182 	                            'APPTAX', DECODE(b.act, 'RAADJTAX',abs(amt)+abs(tl_tax_alloc_amt),
9183                                                'EDTAX',decode(g_ed_req,'Y',decode(abs(amt)+abs(tl_tax_alloc_amt),0,tl_ed_tax_alloc_amt,1),1),
9184                                                'UNEDTAX',decode(g_uned_req,'Y',decode(abs(amt)+abs(tl_tax_alloc_amt),0,tl_uned_tax_alloc_amt,1),1))),1)=0)
9185              OR
9186              ( NVL(DECODE(b.act,
9187              'RAADJLINE'   , tl_alloc_acctd_amt,
9188              'RAADJFREIGHT', tl_frt_alloc_acctd_amt,
9189              'RAADJTAX'    , tl_tax_alloc_acctd_amt,
9190              'RAADJCHARGES', tl_chrg_alloc_acctd_amt,
9191              'EDLINE'      , tl_ed_alloc_acctd_amt,
9192              'EDFREIGHT'   , tl_ed_frt_alloc_acctd_amt,
9193              'EDTAX'       , tl_ed_tax_alloc_acctd_amt,
9194              'EDCHARGES'   , tl_ed_chrg_alloc_acctd_amt,
9195              'UNEDLINE'    , tl_uned_alloc_acctd_amt,
9196              'UNEDFREIGHT' , tl_uned_frt_alloc_acctd_amt,
9197              'UNEDTAX'     , tl_uned_tax_alloc_acctd_amt,
9198              'UNEDCHARGES' , tl_uned_chrg_alloc_acctd_amt),0)<>0)
9199 	     OR
9200              ( NVL(DECODE(p_pay_adj||line_type,'ADJTAX', DECODE(b.act,'RAADJTAX',abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt)),
9201 	                            'APPTAX', DECODE(b.act,'RAADJTAX',abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt),
9202                                                'EDTAX',decode(g_ed_req,'Y',decode(abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt),0,tl_ed_tax_alloc_acctd_amt,1),1),
9203                                                'UNEDTAX',decode(g_uned_req,'Y',decode(abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt),0,tl_uned_tax_alloc_acctd_amt,1),1))),1)=0));
9204 
9205   -- l_rows := sql%rowcount;
9206   -- localdebug('  rows inserted = ' || l_rows);
9207 ELSE
9208   INSERT INTO AR_LINE_APP_DETAIL_GT
9209        ( DET_ID                       ,
9210          APP_LEVEL                    ,
9211          GROUP_ID                     ,
9212          source_data_key1  ,
9213          source_data_key2  ,
9214          source_data_key3  ,
9215          source_data_key4  ,
9216          source_data_key5  ,
9217          REF_CUSTOMER_TRX_ID          ,
9218          REF_CUSTOMER_TRX_LINE_ID     ,
9219          REF_CUST_TRX_LINE_GL_DIST_ID ,
9220          REF_LINE_ID                  ,
9221          REF_DET_ID                 ,
9222          SOURCE_TYPE                  ,
9223          SOURCE_TABLE                 ,
9224          SOURCE_ID                    ,
9225          AMOUNT                       ,
9226          ACCTD_AMOUNT                 ,
9227          CCID                         ,
9228          BASE_CURRENCY                ,
9229          FROM_CURRENCY                ,
9230          TO_CURRENCY                  ,
9231          ref_account_class                    ,
9232          activity_bucket                       ,
9233          CREATION_DATE                ,
9234          CREATED_BY                   ,
9235          LAST_UPDATED_BY              ,
9236          LAST_UPDATE_DATE             ,
9237          LAST_UPDATE_LOGIN            ,
9238          gt_id                        ,
9239          tax_link_id,
9240          tax_inc_flag,
9241          ledger_id,
9242          ref_mf_dist_flag,
9243          org_id,
9244          tax_code_id,
9245          location_segment_id
9246          )
9247       SELECT /*+INDEX (A RA_ar_n1)*/
9248 	         NULL, --ra_ar_s.NEXTVAL,
9249              p_app_level    ,
9250              group_id       ,
9251              source_data_key1  ,
9252              source_data_key2  ,
9253              source_data_key3  ,
9254              source_data_key4  ,
9255              source_data_key5  ,
9256              REF_CUSTOMER_TRX_ID          ,
9257 DECODE(b.act,'RAADJLINE'   , DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-6,REF_CUSTOMER_TRX_LINE_ID),
9258              'RAADJFREIGHT', DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-9,REF_CUSTOMER_TRX_LINE_ID),
9259              'RAADJTAX'    , DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-8,REF_CUSTOMER_TRX_LINE_ID),
9260              'RAADJCHARGES', DECODE(REF_CUSTOMER_TRX_LINE_ID,-10,-7,REF_CUSTOMER_TRX_LINE_ID),
9261                        REF_CUSTOMER_TRX_LINE_ID),
9262              REF_CUST_TRX_LINE_GL_DIST_ID,
9263              REF_LINE_ID       ,
9264              REF_DET_ID        ,
9265              source_type       ,
9266              source_table      ,
9267              source_id         ,
9268 DECODE(b.act,'RAADJLINE'   , tl_alloc_amt,
9269              'RAADJFREIGHT', tl_frt_alloc_amt,
9270              'RAADJTAX'    , tl_tax_alloc_amt,
9271              'RAADJCHARGES', tl_chrg_alloc_amt,
9272              'EDLINE'      , tl_ed_alloc_amt,
9273              'EDFREIGHT'   , tl_ed_frt_alloc_amt,
9274              'EDTAX'       , tl_ed_tax_alloc_amt,
9275              'EDCHARGES'   , tl_ed_chrg_alloc_amt,
9276              'UNEDLINE'    , tl_uned_alloc_amt,
9277              'UNEDFREIGHT' , tl_uned_frt_alloc_amt,
9278              'UNEDTAX'     , tl_uned_tax_alloc_amt,
9279              'UNEDCHARGES' , tl_uned_chrg_alloc_amt),
9280 --acctd_alloc
9281 DECODE(b.act,'RAADJLINE'   , tl_alloc_acctd_amt,
9282              'RAADJFREIGHT', tl_frt_alloc_acctd_amt,
9283              'RAADJTAX'    , tl_tax_alloc_acctd_amt,
9284              'RAADJCHARGES', tl_chrg_alloc_acctd_amt,
9285              'EDLINE'      , tl_ed_alloc_acctd_amt,
9286              'EDFREIGHT'   , tl_ed_frt_alloc_acctd_amt,
9287              'EDTAX'       , tl_ed_tax_alloc_acctd_amt,
9288              'EDCHARGES'   , tl_ed_chrg_alloc_acctd_amt,
9289              'UNEDLINE'    , tl_uned_alloc_acctd_amt,
9290              'UNEDFREIGHT' , tl_uned_frt_alloc_acctd_amt,
9291              'UNEDTAX'     , tl_uned_tax_alloc_acctd_amt,
9292              'UNEDCHARGES' , tl_uned_chrg_alloc_acctd_amt),
9293              CCID_SECONDARY,
9294              BASE_CURRENCY,
9295              FROM_CURRENCY,
9296              TO_CURRENCY,
9297 --Account_class
9298 DECODE(b.act,
9299  'RAADJLINE'   , DECODE(ACCOUNT_CLASS, 'INVOICE','REV',ACCOUNT_CLASS),
9300  'RAADJFREIGHT', DECODE(ACCOUNT_CLASS, 'INVOICE','FREIGHT',ACCOUNT_CLASS),
9301  'RAADJTAX'    , DECODE(ACCOUNT_CLASS, 'INVOICE','TAX',ACCOUNT_CLASS),
9302  'RAADJCHARGES', DECODE(ACCOUNT_CLASS, 'INVOICE','CHARGES',ACCOUNT_CLASS),
9303           ACCOUNT_CLASS),
9304 --Activity Bucket
9305 DECODE(b.act,
9306  'RAADJLINE'   , DECODE(p_pay_adj,'APP','APP_LINE','ADJ','ADJ_LINE',''),
9307  'RAADJFREIGHT', DECODE(p_pay_adj,'APP','APP_FRT','ADJ','ADJ_FRT',''),
9308  'RAADJTAX'    , DECODE(p_pay_adj,'APP','APP_TAX','ADJ','ADJ_TAX',''),
9309  'RAADJCHARGES', DECODE(p_pay_adj,'APP','APP_CHRG','ADJ','ADJ_CHRG',''),
9310  'EDLINE'      , 'ED_LINE',
9311  'EDFREIGHT'   , 'ED_FRT',
9312  'EDTAX'       , 'ED_TAX',
9313  'EDCHARGES'   , 'ED_CHRG',
9314  'UNEDLINE'    , 'UNED_LINE',
9315  'UNEDFREIGHT' , 'UNED_FRT',
9316  'UNEDTAX'     , 'UNED_TAX',
9317  'UNEDCHARGES' , 'UNED_CHRG'),
9318              SYSDATE,
9319              arp_standard.profile.user_id,
9320              arp_standard.profile.user_id,
9321              SYSDATE,
9322              arp_standard.profile.last_update_login,
9323              gt_id,
9324             tax_link_id,
9325             tax_inc_flag,
9326             p_ae_sys_rec.set_of_books_id,
9327             ref_mf_dist_flag,
9328             arp_standard.sysparm.org_id,
9329             tax_code_id,
9330             location_segment_id
9331         FROM RA_AR_GT                                       a,
9332 	    (SELECT DECODE(ROWNUM,1, 'RAADJLINE',
9333 				 2,'RAADJFREIGHT',
9334 				 3,'RAADJTAX',
9335 				 4,'RAADJCHARGES',
9336 				 5,'EDLINE',
9337 				 6,'EDFREIGHT',
9338 				 7,'EDTAX',
9339 				 8,'EDCHARGES',
9340 				 9,'UNEDLINE',
9341 				 10,'UNEDFREIGHT',
9342 				 11,'UNEDTAX',
9343 				 12,'UNEDCHARGES',NULL) act
9344 	    FROM DUAL CONNECT BY ROWNUM < 13 )  b
9345        WHERE REF_CUSTOMER_TRX_ID  = p_customer_trx_id
9346          AND gt_id                = p_gt_id
9347          AND REF_CUST_TRX_LINE_GL_DIST_ID IS NOT NULL
9348          AND gp_level             = 'D'
9349          AND set_of_books_id      = p_ae_sys_rec.set_of_books_id
9350          AND (sob_type             = p_ae_sys_rec.sob_type OR
9351                 (sob_type IS NULL AND p_ae_sys_rec.sob_type IS NULL))
9352          AND (( NVL(DECODE(b.act,
9353              'RAADJLINE'   , tl_alloc_amt,
9354              'RAADJFREIGHT', tl_frt_alloc_amt,
9355              'RAADJTAX'    , tl_tax_alloc_amt,
9356              'RAADJCHARGES', tl_chrg_alloc_amt,
9357              'EDLINE'      , tl_ed_alloc_amt,
9358              'EDFREIGHT'   , tl_ed_frt_alloc_amt,
9359              'EDTAX'       , tl_ed_tax_alloc_amt,
9360              'EDCHARGES'   , tl_ed_chrg_alloc_amt,
9361              'UNEDLINE'    , tl_uned_alloc_amt,
9362              'UNEDFREIGHT' , tl_uned_frt_alloc_amt,
9363              'UNEDTAX'     , tl_uned_tax_alloc_amt,
9364              'UNEDCHARGES' , tl_uned_chrg_alloc_amt),0)<> 0)
9365              OR
9366              ( NVL(DECODE(p_pay_adj||line_type,'ADJTAX', DECODE(b.act,'RAADJTAX',abs(amt)+abs(tl_tax_alloc_amt)),
9367 	                            'APPTAX', DECODE(b.act, 'RAADJTAX',abs(amt)+abs(tl_tax_alloc_amt),
9368                                                 'EDTAX',decode(g_ed_req,'Y',decode(abs(amt)+abs(tl_tax_alloc_amt),0,tl_ed_tax_alloc_amt,1),1),
9369                                                 'UNEDTAX',decode(g_uned_req,'Y',decode(abs(amt)+abs(tl_tax_alloc_amt),0,tl_uned_tax_alloc_amt,1),1))),1)=0)
9370              OR
9371              ( NVL(DECODE(b.act,
9372              'RAADJLINE'   , tl_alloc_acctd_amt,
9373              'RAADJFREIGHT', tl_frt_alloc_acctd_amt,
9374              'RAADJTAX'    , tl_tax_alloc_acctd_amt,
9375              'RAADJCHARGES', tl_chrg_alloc_acctd_amt,
9376              'EDLINE'      , tl_ed_alloc_acctd_amt,
9377              'EDFREIGHT'   , tl_ed_frt_alloc_acctd_amt,
9378              'EDTAX'       , tl_ed_tax_alloc_acctd_amt,
9379              'EDCHARGES'   , tl_ed_chrg_alloc_acctd_amt,
9380              'UNEDLINE'    , tl_uned_alloc_acctd_amt,
9381              'UNEDFREIGHT' , tl_uned_frt_alloc_acctd_amt,
9382              'UNEDTAX'     , tl_uned_tax_alloc_acctd_amt,
9383              'UNEDCHARGES' , tl_uned_chrg_alloc_acctd_amt),0)<>0)
9384 	     OR
9385              ( NVL(DECODE(p_pay_adj||line_type,'ADJTAX', DECODE(b.act,'RAADJTAX',abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt)),
9386 	                            'APPTAX', DECODE(b.act, 'RAADJTAX',abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt),
9387                                                 'EDTAX',decode(g_ed_req,'Y',decode(abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt),0,tl_ed_tax_alloc_acctd_amt,1),1),
9388                                                 'UNEDTAX',decode(g_uned_req,'Y',decode(abs(acctd_amt)+abs(tl_tax_alloc_acctd_amt),0,tl_uned_tax_alloc_acctd_amt,1),1))),1)=0));
9389 
9390        l_rows := sql%rowcount;
9391        IF PG_DEBUG = 'Y' THEN
9392        localdebug('  rows inserted = ' || l_rows);
9393        END IF;
9394 END IF;
9395 
9396 --{Taxable_amount
9397 /*update_taxable
9398 (p_gt_id             => p_gt_id,
9399  p_customer_trx_id   => p_customer_trx_id,
9400  p_ae_sys_rec        => p_ae_sys_rec);*/
9401 --}
9402 
9403     UPDATE /*+INDEX (APP_OUT AR_LINE_APP_DETAIL_GT_N1) */
9404        AR_LINE_APP_DETAIL_GT app_out
9405        SET (taxable_amount, taxable_acctd_amount)
9406        =
9407        (SELECT /*+INDEX (APP_IN AR_LINE_APP_DETAIL_GT_N1) */
9408                   DECODE(app_out.activity_bucket, 'APP_TAX',
9409                               SUM(DECODE(activity_bucket,'APP_LINE',amount,
9410                                                          'ADJ_LINE',amount,
9411                                                          'APP_CHRG',amount,
9412                                                          'ADJ_CHRG',amount,
9413                                                          'APP_FRT' ,amount,
9414                                                          'ADJ_FRT' ,amount, 0)),
9415                                                   'ADJ_TAX',
9416                               SUM(DECODE(activity_bucket,'APP_LINE',amount,
9417                                                          'ADJ_LINE',amount,
9418                                                          'APP_CHRG',amount,
9419                                                          'ADJ_CHRG',amount,
9420                                                          'APP_FRT' ,amount,
9421                                                          'ADJ_FRT' ,amount, 0)),
9422                                                   'ED_TAX',
9423                               SUM(DECODE(activity_bucket,'ED_LINE',amount,
9424                                                          'ED_CHRG',amount,
9425                                                          'ED_FRT' ,amount, 0)),
9426                                                   'UNED_TAX',
9427                               SUM(DECODE(activity_bucket,'UNED_LINE',amount,
9428                                                          'UNED_CHRG',amount,
9429                                                          'UNED_FRT' ,amount, 0)),0) taxable_amount,
9430                   DECODE(app_out.activity_bucket, 'APP_TAX',
9431                               SUM(DECODE(activity_bucket,'APP_LINE',acctd_amount,
9432                                                          'ADJ_LINE',acctd_amount,
9433                                                          'APP_CHRG',acctd_amount,
9434                                                          'ADJ_CHRG',acctd_amount,
9435                                                          'APP_FRT' ,acctd_amount,
9436                                                          'ADJ_FRT' ,acctd_amount, 0)),
9437                                                   'ADJ_TAX',
9438                               SUM(DECODE(activity_bucket,'APP_LINE',acctd_amount,
9439                                                          'ADJ_LINE',acctd_amount,
9440                                                          'APP_CHRG',acctd_amount,
9441                                                          'ADJ_CHRG',acctd_amount,
9442                                                          'APP_FRT' ,acctd_amount,
9443                                                          'ADJ_FRT' ,acctd_amount, 0)),
9444                                                   'ED_TAX',
9445                               SUM(DECODE(activity_bucket,'ED_LINE',acctd_amount,
9446                                                          'ED_CHRG',acctd_amount,
9447                                                          'ED_FRT' ,acctd_amount, 0)),
9448                                                   'UNED_TAX',
9449                               SUM(DECODE(activity_bucket,'UNED_LINE',acctd_amount,
9450                                                          'UNED_CHRG',acctd_amount,
9451                                                          'UNED_FRT' ,acctd_amount, 0)),0) taxable_acctd_amount
9452         FROM AR_LINE_APP_DETAIL_GT  app_in
9453          WHERE gt_id = p_gt_id
9454          AND ref_customer_trx_id = p_customer_trx_id
9455          AND tax_link_id           IS NOT NULL
9456          AND tax_link_id         = app_out.tax_link_id)
9457     WHERE gt_id  = p_gt_id
9458       AND ref_customer_trx_id = p_customer_trx_id
9459       AND tax_link_id         IS NOT NULL
9460       AND DECODE(ref_account_class,'REV',tax_inc_flag,
9461                            'FREIGHT',tax_inc_flag,
9462                            'TAX','Y','N')  = 'Y';
9463 
9464 IF PG_DEBUG = 'Y' THEN
9465 localdebug('arp_det_dist_pkg.create_split_distribution()-');
9466 END IF;
9467 EXCEPTION
9468 WHEN OTHERS THEN
9469   IF PG_DEBUG = 'Y' THEN
9470   localdebug('  EXCEPTION OTHERS : create_split_distribution :'||SQLERRM);
9471   END IF;
9472 END create_split_distribution;
9473 
9474 
9475 PROCEDURE set_original_rem_amt_r12
9476 (p_customer_trx     IN ra_customer_trx%ROWTYPE,
9477  x_return_status    IN OUT NOCOPY VARCHAR2,
9478  x_msg_count        IN OUT NOCOPY NUMBER,
9479  x_msg_data         IN OUT NOCOPY VARCHAR2,
9480  p_from_llca        IN VARCHAR2 DEFAULT 'N')
9481 IS
9482   CURSOR c(p_customer_trx_id  IN NUMBER) IS
9483   SELECT SUM(AMOUNT),
9484          SUM(ACCTD_AMOUNT),
9485          customer_trx_line_id
9486     FROM ra_cust_trx_line_gl_dist
9487    WHERE customer_trx_id  = p_customer_trx_id
9488    GROUP BY customer_trx_line_id;
9489 
9490   l_amt_tab                   DBMS_SQL.NUMBER_TABLE;
9491   l_acctd_amt_tab             DBMS_SQL.NUMBER_TABLE;
9492   l_ctl_tab                   DBMS_SQL.NUMBER_TABLE;
9493   l_last_fetch                BOOLEAN := FALSE;
9494   l_found                     VARCHAR2(1) := 'N';
9495   l_trx_type                  VARCHAR2(30);
9496   l_c                             c%ROWTYPE;
9497   no_a_valid_trx              EXCEPTION;
9498 
9499 BEGIN
9500   IF PG_DEBUG = 'Y' THEN
9501   localdebug('arp_det_dist_pkg.set_original_rem_amt_r12()+');
9502   localdebug('     p_customer_trx.customer_trx_id:'||p_customer_trx.customer_trx_id);
9503   END IF;
9504     OPEN c(p_customer_trx.customer_trx_id);
9505     LOOP
9506     FETCH c BULK COLLECT INTO l_amt_tab,
9507                               l_acctd_amt_tab,
9508                               l_ctl_tab
9509                     LIMIT g_bulk_fetch_rows;
9510 
9511        IF c%NOTFOUND THEN
9512           l_last_fetch := TRUE;
9513        END IF;
9514 
9515        IF (l_ctl_tab.COUNT = 0) AND (l_last_fetch) THEN
9516          IF PG_DEBUG = 'Y' THEN
9517 	 localdebug('  COUNT = 0 and LAST FETCH ');
9518 	 END IF;
9519          EXIT;
9520        END IF;
9521        l_found := 'Y';
9522 
9523        IF PG_DEBUG = 'Y' THEN
9524        localdebug('  Setting the Original and Remaining amounts R12');
9525        END IF;
9526 
9527        FORALL i IN l_ctl_tab.FIRST .. l_ctl_tab.LAST
9528        UPDATE ra_customer_trx_lines
9529           SET AMOUNT_DUE_REMAINING        = l_amt_tab(i),
9530               ACCTD_AMOUNT_DUE_REMAINING  = l_acctd_amt_tab(i),
9531               AMOUNT_DUE_ORIGINAL         = l_amt_tab(i),
9532               ACCTD_AMOUNT_DUE_ORIGINAL   = l_acctd_amt_tab(i),
9533               CHRG_AMOUNT_REMAINING       = 0,
9534               CHRG_ACCTD_AMOUNT_REMAINING = 0,
9535               FRT_ADJ_REMAINING           = 0,
9536               FRT_ADJ_ACCTD_REMAINING     = 0,
9537               FRT_ED_AMOUNT               = 0,
9538               FRT_ED_ACCTD_AMOUNT         = 0,
9539               FRT_UNED_AMOUNT             = 0,
9540               FRT_UNED_ACCTD_AMOUNT       = 0
9541         WHERE customer_trx_line_id        = l_ctl_tab(i);
9542     END LOOP;
9543     CLOSE c;
9544 
9545      IF l_found = 'N' THEN
9546 	RAISE no_a_valid_trx;
9547      END IF;
9548 
9549 	  IF PG_DEBUG = 'Y' THEN
9550 	  localdebug('Setting transaction.upgrade_method to R12' );
9551 	  END IF;
9552           UPDATE ra_customer_trx SET upgrade_method = 'R12'
9553           WHERE customer_trx_id = p_customer_trx.customer_trx_id;
9554 
9555    IF PG_DEBUG = 'Y' THEN
9556    localdebug('arp_det_dist_pkg.set_original_rem_amt_r12()-');
9557    END IF;
9558 
9559 EXCEPTION
9560 WHEN no_a_valid_trx  THEN
9561     IF c%ISOPEN THEN CLOSE c; END IF;
9562     IF PG_DEBUG = 'Y' THEN
9563     localdebug('EXCEPTION no_a_valid_trx :'||p_customer_trx.customer_trx_id);
9564     END IF;
9565     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9566    FND_MESSAGE.SET_NAME( 'AR', 'AR_CUST_API_ERROR' );
9567    FND_MESSAGE.SET_TOKEN( 'TEXT', 'EXCEPTION Not a Valid Trx ID');
9568    FND_MSG_PUB.ADD;
9569    FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
9570                              p_count   => x_msg_count,
9571                              p_data    => x_msg_data);
9572   WHEN OTHERS THEN
9573     IF c%ISOPEN THEN CLOSE c; END IF;
9574     IF PG_DEBUG = 'Y' THEN
9575     localdebug('EXCEPTION OTHERS in set_original_rem_amt_r12 :'||SQLERRM);
9576     END IF;
9577     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9578     x_msg_data := 'EXCEPTION OTHERS in set_original_rem_amt_r12 :'||SQLERRM;
9579 END set_original_rem_amt_r12;
9580 
9581 
9582 
9583 PROCEDURE set_original_rem_amt_mfar
9584 (p_customer_trx     IN ra_customer_trx%ROWTYPE)
9585 IS
9586   CURSOR cmfar(p_customer_trx_id  IN NUMBER)  IS
9587   SELECT SUM(NVL(amount_due_remaining,0)) sum_due_rem,
9588          SUM(NVL(amount_due_original,0))  sum_due_orig,
9589          customer_trx_line_id             customer_trx_line_id
9590     FROM psa_mf_balances_view
9591    WHERE customer_trx_id      = p_customer_trx_id
9592    GROUP BY customer_trx_line_id;
9593   l_rem_amt_tab               DBMS_SQL.NUMBER_TABLE;
9594   l_orig_amt_tab              DBMS_SQL.NUMBER_TABLE;
9595   l_ctl_tab                   DBMS_SQL.NUMBER_TABLE;
9596   l_last_fetch                BOOLEAN := FALSE;
9597   l_found                     VARCHAR2(1);
9598 BEGIN
9599   IF PG_DEBUG = 'Y' THEN
9600   localdebug('arp_det_dist_pkg.set_original_rem_amt_mfar()+');
9601   localdebug('    p_customer_trx.customer_trx_id:'||p_customer_trx.customer_trx_id);
9602   END IF;
9603 
9604     OPEN cmfar(p_customer_trx.customer_trx_id);
9605     LOOP
9606     FETCH cmfar BULK COLLECT INTO l_rem_amt_tab,    --for mfar remaining
9607                                   l_orig_amt_tab,   --for mfar original
9608                                   l_ctl_tab
9609                     LIMIT g_bulk_fetch_rows;
9610 
9611        IF cmfar%NOTFOUND THEN
9612           l_last_fetch := TRUE;
9613        END IF;
9614 
9615        IF (l_ctl_tab.COUNT = 0) AND (l_last_fetch) THEN
9616          IF PG_DEBUG = 'Y' THEN
9617 	 localdebug('  COUNT = 0 and LAST FETCH ');
9618 	 END IF;
9619          EXIT;
9620        END IF;
9621 
9622        IF PG_DEBUG = 'Y' THEN
9623        localdebug('  Setting the Original and Remaining amounts MFAR');
9624        END IF;
9625 
9626        FORALL i IN l_ctl_tab.FIRST .. l_ctl_tab.LAST
9627        UPDATE ra_customer_trx_lines
9628           SET AMOUNT_DUE_REMAINING        = l_rem_amt_tab(i),   -- Rem
9629               ACCTD_AMOUNT_DUE_REMAINING  = l_rem_amt_tab(i),   -- Rem transaction currency = functional
9630               AMOUNT_DUE_ORIGINAL         = l_orig_amt_tab(i),  -- original
9631               ACCTD_AMOUNT_DUE_ORIGINAL   = l_orig_amt_tab(i),  -- original
9632               CHRG_AMOUNT_REMAINING       = 0,
9633               CHRG_ACCTD_AMOUNT_REMAINING = 0,
9634               FRT_ADJ_REMAINING           = 0,
9635               FRT_ADJ_ACCTD_REMAINING     = 0,
9636               FRT_ED_AMOUNT               = 0,
9637               FRT_ED_ACCTD_AMOUNT         = 0,
9638               FRT_UNED_AMOUNT             = 0,
9639               FRT_UNED_ACCTD_AMOUNT       = 0
9640         WHERE customer_trx_line_id        = l_ctl_tab(i);
9641 
9642     END LOOP;
9643     CLOSE cmfar;
9644 
9645   IF PG_DEBUG = 'Y' THEN
9646   localdebug('arp_det_dist_pkg.set_original_rem_amt_mfar()-');
9647   END IF;
9648 EXCEPTION
9649   WHEN OTHERS THEN
9650     IF cmfar%ISOPEN THEN CLOSE cmfar; END IF;
9651     IF PG_DEBUG = 'Y' THEN
9652     localdebug('  EXCEPTION OTHERS in set_original_rem_amt_mfar :'||SQLERRM);
9653     END IF;
9654 END set_original_rem_amt_mfar;
9655 
9656 
9657 
9658 PROCEDURE  re_calcul_rem_amt(p_customer_trx IN ra_customer_trx%ROWTYPE)
9659 IS
9660 
9661 /*bug6133206, multiplied APP amounts with '-1' to make them negative,
9662   for calculating the remaining amounts. */
9663 
9664 CURSOR cu_rem_amt(p_customer_trx_id IN NUMBER) IS
9665  SELECT b.sum_orig                                                          sum_orig
9666        ,b.sum_acctd_orig                                                    sum_acctd_orig
9667        ,SUM((DECODE(a.activity_bucket,'ADJ_CHRG',amt
9668                     ,'APP_CHRG',DECODE(a.line_type,'LINE',amt,0) * -1,0)))       CHRG_ON_REV_LINE
9669        ,SUM((DECODE(a.activity_bucket,'ADJ_CHRG',acctd_amt
9670                     ,'APP_CHRG',DECODE(a.line_type,'LINE',acctd_amt,0) * -1,0))) ACCTD_CHRG_ON_REV_LINE
9671        ,SUM((DECODE(a.activity_bucket,'ADJ_FRT',amt
9672                     ,'APP_FRT',DECODE(a.line_type,'LINE',amt,0) * -1,0)))        FRT_ON_REV_LINE
9673        ,SUM((DECODE(a.activity_bucket,'ADJ_FRT',amt
9674                     ,'APP_FRT',DECODE(a.line_type,'LINE',acctd_amt,0) * -1,0)))  ACCTD_FRT_ON_REV_LINE
9675        ,SUM((DECODE(a.activity_bucket,'ED_FRT',amt,0)))                              ED_FRT_REV_LINE
9676        ,SUM((DECODE(a.activity_bucket,'ED_FRT',acctd_amt,0)))                        ACCTD_ED_FRT_REV_LINE
9677        ,SUM((DECODE(a.activity_bucket,'UNED_FRT',amt,0)))                            UNED_FRT_REV_LINE
9678        ,SUM((DECODE(a.activity_bucket,'UNED_FRT',acctd_amt,0)))                      ACCTD_UNED_FRT_REV_LINE
9679        ,SUM((DECODE(a.activity_bucket,'ADJ_LINE',amt
9680                             ,'APP_LINE',(amt * -1)
9681                             ,'ED_LINE' ,amt
9682                             ,'UNED_LINE',amt -- line
9683                             ,'ADJ_TAX' ,amt
9684                             ,'APP_TAX' ,(amt * -1)
9685                             ,'ED_TAX' ,amt
9686                             ,'UNED_TAX',amt  --tax
9687                             ,'APP_FRT' ,(DECODE(a.line_type,'FREIGHT',amt,0) * -1)
9688                             ,'APP_CHRG',(DECODE(a.line_type,'CHARGES',amt,0) * -1)
9689                             ,0)))                                           REM_TYPE_LINE
9690        ,SUM((DECODE(a.activity_bucket,'ADJ_LINE',acctd_amt
9691                             ,'APP_LINE',(acctd_amt * -1)
9692                             ,'ED_LINE' ,acctd_amt
9693                             ,'UNED_LINE',acctd_amt -- line
9694                             ,'ADJ_TAX' ,acctd_amt
9695                             ,'APP_TAX' ,(acctd_amt * -1)
9696                             ,'ED_TAX' ,acctd_amt
9697                             ,'UNED_TAX',acctd_amt  --tax
9698                             ,'APP_FRT' ,(DECODE(a.line_type,'FREIGHT',acctd_amt,0) * -1)
9699                             ,'APP_CHRG',(DECODE(a.line_type,'CHARGES',acctd_amt,0) * -1)
9700                             ,0)))                                           ACCTD_REM_TYPE_LINE
9701        ,b.customer_trx_line_id                                              CUSTOMER_TRX_LINE_ID
9702 FROM
9703 (SELECT SUM( NVL(ard.amount_cr,0)       - NVL(ard.amount_dr,0)      ) amt,
9704        SUM( NVL(ard.acctd_amount_cr,0) - NVL(ard.acctd_amount_dr,0)) acctd_amt,
9705        ard.ref_customer_trx_line_id,
9706        ard.ref_account_class,
9707        ard.activity_bucket,
9708        ctl.line_type
9709   FROM ar_distributions      ard,
9710        ra_customer_trx_lines ctl
9711  WHERE ctl.customer_trx_id      = p_customer_trx_id
9712    AND ctl.customer_trx_line_id = ard.ref_customer_trx_line_id
9713  GROUP BY
9714        ard.ref_customer_trx_line_id,
9715        ard.ref_account_class,
9716        ard.activity_bucket,
9717        ctl.line_type) a,
9718 (SELECT SUM(AMOUNT)          sum_orig,
9719         SUM(ACCTD_AMOUNT)    sum_acctd_orig,
9720         customer_trx_line_id
9721    FROM ra_cust_trx_line_gl_dist
9722   WHERE customer_trx_id  = p_customer_trx_id
9723   GROUP BY customer_trx_line_id) b
9724 WHERE a.ref_customer_trx_line_id (+) =  b.customer_trx_line_id
9725 GROUP BY b.customer_trx_line_id,
9726          b.sum_orig,
9727          b.sum_acctd_orig;
9728 
9729 l_sum_orig                     DBMS_SQL.NUMBER_TABLE;
9730 l_sum_acctd_orig               DBMS_SQL.NUMBER_TABLE;
9731 l_CHRG_ON_REV_LINE             DBMS_SQL.NUMBER_TABLE;
9732 l_ACCTD_CHRG_ON_REV_LINE       DBMS_SQL.NUMBER_TABLE;
9733 l_FRT_ON_REV_LINE              DBMS_SQL.NUMBER_TABLE;
9734 l_ACCTD_FRT_ON_REV_LINE        DBMS_SQL.NUMBER_TABLE;
9735 l_ED_FRT_REV_LINE              DBMS_SQL.NUMBER_TABLE;
9736 l_ACCTD_ED_FRT_REV_LINE        DBMS_SQL.NUMBER_TABLE;
9737 l_UNED_FRT_REV_LINE            DBMS_SQL.NUMBER_TABLE;
9738 l_ACCTD_UNED_FRT_REV_LINE      DBMS_SQL.NUMBER_TABLE;
9739 l_REM_TYPE_LINE                DBMS_SQL.VARCHAR2_TABLE;
9740 l_ACCTD_REM_TYPE_LINE          DBMS_SQL.NUMBER_TABLE;
9741 l_CUSTOMER_TRX_LINE_ID         DBMS_SQL.NUMBER_TABLE;
9742 
9743 l_last_fetch                   BOOLEAN := FALSE;
9744 
9745 BEGIN
9746   IF PG_DEBUG = 'Y' THEN
9747   localdebug('arp_det_dist_pkg.re_calcul_rem_amt()+');
9748   localdebug('p_customer_trx_id = ' || p_customer_trx.customer_trx_id);
9749   END IF;
9750   OPEN cu_rem_amt(p_customer_trx.customer_trx_id);
9751   LOOP
9752     FETCH cu_rem_amt BULK COLLECT INTO
9753               l_sum_orig              ,
9754               l_sum_acctd_orig        ,
9755               l_chrg_on_rev_line      ,
9756               l_acctd_chrg_on_rev_line,
9757               l_frt_on_rev_line       ,
9758               l_acctd_frt_on_rev_line ,
9759               l_ed_frt_rev_line       ,
9760               l_acctd_ed_frt_rev_line ,
9761               l_uned_frt_rev_line     ,
9762               l_acctd_uned_frt_rev_line,
9763               l_rem_type_line         ,
9764               l_acctd_rem_type_line   ,
9765               l_customer_trx_line_id
9766             LIMIT g_bulk_fetch_rows;
9767 
9768      IF cu_rem_amt%NOTFOUND THEN
9769           l_last_fetch := TRUE;
9770      END IF;
9771 
9772      IF (l_CUSTOMER_TRX_LINE_ID.COUNT = 0) AND (l_last_fetch) THEN
9773        IF PG_DEBUG = 'Y' THEN
9774        localdebug('COUNT = 0 and LAST FETCH ');
9775        END IF;
9776        EXIT;
9777      END IF;
9778 
9779      FORALL i IN l_CUSTOMER_TRX_LINE_ID.FIRST .. l_CUSTOMER_TRX_LINE_ID.LAST
9780      UPDATE ra_customer_trx_lines
9781         SET amount_due_original         = l_sum_orig(i),
9782             acctd_amount_due_original   = l_sum_acctd_orig(i),
9783 		    AMOUNT_DUE_REMAINING        = l_sum_orig(i) + l_REM_TYPE_LINE(i),
9784             ACCTD_AMOUNT_DUE_REMAINING  = l_sum_acctd_orig(i) + l_ACCTD_REM_TYPE_LINE(i),
9785             CHRG_AMOUNT_REMAINING       = l_chrg_on_rev_line(i),
9786             CHRG_ACCTD_AMOUNT_REMAINING = l_ACCTD_chrg_on_rev_line(i),
9787             FRT_ADJ_REMAINING           = l_FRT_ON_REV_LINE(i),
9788             FRT_ADJ_ACCTD_REMAINING     = l_ACCTD_FRT_ON_REV_LINE(i),
9789             frt_ed_amount               = l_ED_FRT_REV_LINE(i),
9790             frt_ed_acctd_amount         = l_ACCTD_ED_FRT_REV_LINE(i),
9791             frt_uned_amount             = l_UNED_FRT_REV_LINE(i),
9792             frt_uned_acctd_amount       = l_ACCTD_UNED_FRT_REV_LINE(i)
9793       WHERE customer_trx_line_id        = l_CUSTOMER_TRX_LINE_ID(i)
9794         AND customer_trx_id             = p_customer_trx.customer_trx_id;
9795    END LOOP;
9796    CLOSE cu_rem_amt;
9797   IF PG_DEBUG = 'Y' THEN
9798   localdebug('arp_det_dist_pkg.re_calcul_rem_amt()-');
9799   END IF;
9800 EXCEPTION
9801   WHEN OTHERS THEN
9802     IF PG_DEBUG = 'Y' THEN
9803     localdebug(' EXCEPTION OTHERS re_calcul_rem_amt :'|| SQLERRM);
9804     END IF;
9805     RAISE;
9806 END re_calcul_rem_amt;
9807 
9808 
9809 /* For AUTOINV call, Overloaded call*/
9810 
9811 PROCEDURE set_original_rem_amt_r12(p_request_id IN NUMBER)
9812 AS
9813 
9814 -- Get all invoices / debit memos which need balance stamping
9815 --
9816 CURSOR c01  IS
9817 SELECT
9818       SUM(gld.AMOUNT),
9819       SUM(gld.ACCTD_AMOUNT),
9820       gld.customer_trx_line_id,
9821       inv.customer_trx_id
9822 FROM
9823       ra_customer_trx inv,
9824       ra_cust_trx_line_gl_dist gld,
9825       ra_cust_trx_types ctt
9826 WHERE inv.customer_trx_id = gld.customer_trx_id
9827       AND ctt.CUST_TRX_TYPE_ID = inv.CUST_TRX_TYPE_ID
9828       AND inv.request_id         = p_request_id
9829       AND ctt.TYPE in ('INV','DM')
9830 GROUP BY gld.customer_trx_line_id,inv.customer_trx_id;
9831 
9832 CURSOR c02  IS
9833 SELECT
9834      customer_trx_id
9835 FROM
9836      ra_customer_trx inv,
9837      ra_cust_trx_types ctt
9838 WHERE request_id = P_request_id
9839       AND ctt.CUST_TRX_TYPE_ID = inv.CUST_TRX_TYPE_ID
9840       AND ctt.TYPE in ('INV','DM')
9841       AND EXISTS
9842 	(SELECT 1
9843 	 FROM ar_receivable_applications ar
9844 	 WHERE ar.applied_customer_trx_id = inv.customer_trx_id
9845 	 UNION
9846 	 SELECT 1
9847 	 FROM ar_adjustments ad
9848 	 WHERE ad.customer_trx_id = inv.customer_trx_id
9849 	);
9850 
9851 
9852 
9853   l_amt_tab                   DBMS_SQL.NUMBER_TABLE;
9854   l_acctd_amt_tab             DBMS_SQL.NUMBER_TABLE;
9855   l_ctl_tab                   DBMS_SQL.NUMBER_TABLE;
9856   l_ctl_hd_tab		      DBMS_SQL.NUMBER_TABLE;
9857   l_ctl_app_tab		      DBMS_SQL.NUMBER_TABLE;
9858   l_customer_trx              ra_customer_trx%ROWTYPE;
9859   l_last_fetch                BOOLEAN := FALSE;
9860 
9861   l_msg                   RA_INTERFACE_ERRORS.MESSAGE_TEXT%TYPE;
9862   l_return_status         VARCHAR2(100);
9863   l_msg_count             NUMBER:=0;
9864   l_msg_data              VARCHAR2(20000):= NULL;
9865 
9866 BEGIN
9867 
9868  IF PG_DEBUG = 'Y' THEN
9869  localdebug('arp_det_dist_pkg.set_original_rem_amt_r12() OVERLOAD +');
9870  END IF;
9871 
9872 
9873    OPEN c01;
9874     LOOP
9875     FETCH c01 BULK COLLECT INTO l_amt_tab,
9876                               l_acctd_amt_tab,
9877                               l_ctl_tab,
9878 			      l_ctl_hd_tab
9879                     LIMIT g_bulk_fetch_rows;
9880 
9881       IF c01%NOTFOUND THEN
9882           l_last_fetch := TRUE;
9883        END IF;
9884 
9885         IF (l_ctl_tab.COUNT = 0) AND (l_last_fetch) THEN
9886          IF PG_DEBUG = 'Y' THEN
9887 	 localdebug('  COUNT = 0 and LAST FETCH ');
9888 	 END IF;
9889         EXIT;
9890 	END IF;
9891 
9892 
9893 	       IF PG_DEBUG = 'Y' THEN
9894 	       localdebug('  Setting the Original R12');
9895 	       END IF;
9896 	/*FORALL*/
9897        FOR i IN l_ctl_tab.FIRST .. l_ctl_tab.LAST
9898        LOOP
9899 	  BEGIN
9900 		       UPDATE ra_customer_trx_lines
9901 			  SET AMOUNT_DUE_REMAINING        = l_amt_tab(i),
9902 			      ACCTD_AMOUNT_DUE_REMAINING  = l_acctd_amt_tab(i),
9903 			      AMOUNT_DUE_ORIGINAL         = l_amt_tab(i),
9904 			      ACCTD_AMOUNT_DUE_ORIGINAL   = l_acctd_amt_tab(i),
9905 			      CHRG_AMOUNT_REMAINING       = 0,
9906 			      CHRG_ACCTD_AMOUNT_REMAINING = 0,
9907 			      FRT_ADJ_REMAINING           = 0,
9908 			      FRT_ADJ_ACCTD_REMAINING     = 0,
9909 			      FRT_ED_AMOUNT               = 0,
9910 			      FRT_ED_ACCTD_AMOUNT         = 0,
9911 			      FRT_UNED_AMOUNT             = 0,
9912 			      FRT_UNED_ACCTD_AMOUNT       = 0
9913 			WHERE customer_trx_line_id        = l_ctl_tab(i);
9914 	 EXCEPTION
9915 	  WHEN OTHERS THEN
9916 			    IF PG_DEBUG in ('Y', 'C') THEN
9917 			       arp_standard.debug('Inserting into errors...');
9918 			    END IF;
9919 
9920 			    IF c01%ISOPEN THEN CLOSE c01; END IF;
9921 
9922 			   l_msg := 'Error while stamping the balance amt'||l_ctl_hd_tab(i);
9923 
9924 
9925 			    INSERT INTO ra_interface_errors
9926 				   (
9927 				   --org_id,
9928 				   interface_line_id,
9929 				   message_text
9930 				   )
9931 			    SELECT
9932 				   --org_id,
9933 				   customer_trx_line_id,
9934 				   l_msg
9935 			    FROM
9936 				   ra_customer_trx_lines lines
9937 			    WHERE
9938 				   lines.customer_trx_id = l_ctl_hd_tab(i);
9939 	 END;
9940 	 END LOOP;
9941 
9942     END LOOP;
9943  CLOSE c01;
9944 
9945 
9946 	  IF PG_DEBUG = 'Y' THEN
9947 	  localdebug('Setting transaction.upgrade_method to R12' );
9948 	  END IF;
9949           UPDATE ra_customer_trx inv SET upgrade_method = 'R12'
9950           WHERE request_id = p_request_id
9951 	   AND EXISTS
9952 	     ( SELECT 1
9953 	       FROM ra_cust_trx_types ctt
9954 	       WHERE ctt.CUST_TRX_TYPE_ID = inv.CUST_TRX_TYPE_ID
9955 	       AND ctt.TYPE in ('INV','DM'))
9956            AND NOT EXISTS (
9957 		      SELECT 1
9958 		      FROM  ra_customer_trx_lines l, ra_interface_errors e
9959 		      WHERE l.customer_trx_id = inv.customer_trx_id
9960 		      AND   l.customer_trx_line_id = e.interface_line_id);
9961 
9962 -- Setting the Original and Remaining amounts R12
9963 --
9964 l_last_fetch := FALSE;
9965 
9966 OPEN c02;
9967     LOOP
9968     FETCH c02 BULK COLLECT INTO l_ctl_app_tab
9969                  LIMIT g_bulk_fetch_rows;
9970 
9971       IF c02%NOTFOUND THEN
9972           l_last_fetch := TRUE;
9973        END IF;
9974 
9975         IF (l_ctl_app_tab.COUNT = 0) AND (l_last_fetch) THEN
9976          IF PG_DEBUG = 'Y' THEN
9977 	 localdebug('  COUNT = 0 and LAST FETCH ');
9978 	 END IF;
9979         EXIT;
9980 	END IF;
9981 
9982        IF PG_DEBUG = 'Y' THEN
9983        localdebug('  Setting the Original and Remaining amounts R12');
9984        END IF;
9985         FOR i IN l_ctl_app_tab.FIRST .. l_ctl_app_tab.LAST
9986        LOOP
9987 	 BEGIN
9988 		l_customer_trx.customer_trx_id := l_ctl_app_tab(i);
9989 		re_calcul_rem_amt(p_customer_trx => l_customer_trx);
9990 
9991 	 EXCEPTION
9992 		  WHEN OTHERS THEN
9993 				    IF PG_DEBUG in ('Y', 'C') THEN
9994 				       arp_standard.debug('Inserting into errors...');
9995 				    END IF;
9996 
9997 				    IF c02%ISOPEN THEN CLOSE c02; END IF;
9998 
9999 				   l_msg := 'Error while stamping the balance amt'||l_ctl_app_tab(i);
10000 
10001 
10002 				    INSERT INTO ra_interface_errors
10003 					   (
10004 					   --org_id,
10005 					   interface_line_id,
10006 					   message_text
10007 					   )
10008 				    SELECT
10009 					   --org_id,
10010 					   customer_trx_line_id,
10011 					   l_msg
10012 				    FROM
10013 					   ra_customer_trx_lines lines
10014 				    WHERE
10015 					   lines.customer_trx_id = l_ctl_app_tab(i);
10016 	 END;
10017 	END LOOP;
10018 
10019     END LOOP;
10020  CLOSE c02;
10021 
10022 -- Setting the Original and Remaining amounts R12 END
10023 --
10024 
10025  IF PG_DEBUG = 'Y' THEN
10026  localdebug('arp_det_dist_pkg.set_original_rem_amt_r12() OVERLOAD -');
10027  END IF;
10028 EXCEPTION
10029 
10030  WHEN OTHERS THEN
10031     IF PG_DEBUG = 'Y' THEN
10032     localdebug('  EXCEPTION OTHERS in set_original_rem_amt_r12 OVERLOAD :'||SQLERRM(SQLCODE));
10033     END IF;
10034     RAISE;
10035 END set_original_rem_amt_r12; -- End of OVERLOAD procedure
10036 
10037 
10038 PROCEDURE set_original_rem_amt
10039 (p_customer_trx     IN ra_customer_trx%ROWTYPE,
10040  p_adj_id           IN NUMBER DEFAULT NULL,
10041  p_app_id           IN NUMBER DEFAULT NULL,
10042 --{HYUNLB
10043  p_from_llca        IN VARCHAR2 DEFAULT 'N')
10044 --}
10045 IS
10046 
10047   CURSOR c_verif(p_customer_trx_id  IN NUMBER) IS
10048   SELECT trx.upgrade_method,
10049          ctl.amount_due_original,
10050          ctl.amount_due_remaining
10051     FROM ra_customer_trx       trx,
10052 	     ra_customer_trx_lines ctl
10053    WHERE trx.customer_trx_id = p_customer_trx_id
10054      AND ctl.customer_trx_id = trx.customer_trx_id;
10055 
10056   l_trx_type                  VARCHAR2(30);
10057   l_lazy_res                  VARCHAR2(1) := 'N';
10058   l_mfar_res                  VARCHAR2(1) := 'N';
10059   l_11i_adj        VARCHAR2(1);
10060   l_mfar_adj       VARCHAR2(1);
10061   l_11i_app        VARCHAR2(1);
10062   l_mfar_app       VARCHAR2(1);
10063   l_return_status  VARCHAR2(1)   := fnd_api.g_ret_sts_success;
10064   l_msg_data       VARCHAR2(2000);
10065   l_msg_count      NUMBER;
10066 --{HYUNBL
10067   l_verif_rec      c_verif%ROWTYPE;
10068 --}
10069   no_need_to_set_orig_rem_amt EXCEPTION;
10070   no_a_valid_trx              EXCEPTION;
10071   no_llca_allowed             EXCEPTION;
10072   excep_set_org_rem_amt_r12 EXCEPTION; --LLCA
10073 BEGIN
10074   IF PG_DEBUG = 'Y' THEN
10075   localdebug('arp_det_dist_pkg.set_original_rem_amt()+');
10076   localdebug('  p_adj_id :'||p_adj_id );
10077   localdebug('  p_app_id :'||p_app_id );
10078   END IF;
10079 
10080   OPEN c_verif(p_customer_trx.customer_trx_id);
10081   FETCH c_verif INTO l_verif_rec;
10082   IF c_verif%NOTFOUND THEN  -- 1
10083      RAISE no_a_valid_trx;
10084   ELSE  --1
10085     IF l_verif_rec.upgrade_method IN ('R12','R12_11IMFAR') THEN --2
10086 
10087       IF PG_DEBUG = 'Y' THEN
10088       localdebug('balance on the transaction should have been updated ');
10089       localdebug('    No matter LLCA or not, they should be maintained ');
10090       localdebug('    transaction current upgrade_method :'|| l_verif_rec.upgrade_method);
10091       localdebug('    p_from_llca                  :'|| p_from_llca);
10092       localdebug('We are showing the balances on the first line to avoid loop');
10093       localdebug('    l_verif_rec.amount_due_original  :'||l_verif_rec.amount_due_original);
10094       localdebug('    l_verif_rec.amount_due_remaining :'||l_verif_rec.amount_due_remaining);
10095       END IF;
10096       -- The transaction has been llca applied, hence the balance is up to date
10097       -- NB balance should maintained after the activity
10098       RAISE no_need_to_set_orig_rem_amt;
10099 
10100     ELSIF l_verif_rec.upgrade_method = 'R12_NLB' AND p_from_llca = 'Y' THEN --2
10101 
10102       IF PG_DEBUG = 'Y' THEN
10103       localdebug('balance on the transaction should not be maintained untill today ');
10104 	  localdebug('   Need to update it and the transaction will have balance maintained as the user is doing LLCA');
10105       END IF;
10106       --{HYUNLB
10107       -- Update rem amount
10108       re_calcul_rem_amt(p_customer_trx => p_customer_trx);
10109 
10110       IF PG_DEBUG = 'Y' THEN
10111       localdebug('   going forward and it should be marked as R12');
10112       END IF;
10113        UPDATE ra_customer_trx
10114           SET upgrade_method = 'R12'
10115         WHERE customer_trx_id = p_customer_trx.customer_trx_id;
10116        --}
10117 
10118     ELSIF l_verif_rec.upgrade_method = 'R12_11ICASH'  THEN --2
10119 
10120        IF p_from_llca = 'Y' THEN
10121           IF PG_DEBUG = 'Y' THEN
10122 	  localdebug('As p_from_llca = Y and  transacation.upgrade_method = R12_11ICASH ');
10123           localdebug('11i legacy transaction none MFAR, no Line Level Cash Application is allowed');
10124 	  END IF;
10125           RAISE no_llca_allowed;
10126        ELSE
10127           IF PG_DEBUG = 'Y' THEN
10128 	  localdebug('Transaction level activity on R12_11ICASH transaction balance will not be maintained');
10129 	  END IF;
10130        END IF;
10131 
10132     ELSIF l_verif_rec.upgrade_method = 'R12_MERGE'  THEN
10133 
10134        IF p_from_llca = 'Y' THEN
10135           IF PG_DEBUG = 'Y' THEN
10136 	  localdebug('As p_from_llca = Y and  transacation.upgrade_method = R12_MERGE ');
10137           localdebug('This transaction is having activities with summarized distributions, '||
10138 	             ' no Line Level Cash Application is allowed');
10139 	  END IF;
10140           RAISE no_llca_allowed;
10141        ELSE
10142           IF PG_DEBUG = 'Y' THEN
10143 	  localdebug('Transaction level activity on R12_MERGE transaction balance will not be maintained');
10144 	  END IF;
10145        END IF;
10146     ELSE  --2
10147       IF PG_DEBUG = 'Y' THEN
10148       localdebug('At this point the transaction upgrade_method is not set');
10149       localdebug('  l_verif_rec.upgrade_method :'||l_verif_rec.upgrade_method );
10150       END IF;
10151 
10152       check_legacy_status
10153       (p_trx_id           => p_customer_trx.customer_trx_id,
10154        p_adj_id           => p_adj_id,
10155        p_app_id           => p_app_id,
10156        x_11i_adj          => l_11i_adj,
10157        x_mfar_adj         => l_mfar_adj,
10158        x_11i_app          => l_11i_app,
10159        x_mfar_app         => l_mfar_app);
10160 
10161       -- Normal R12
10162       IF     ((l_11i_adj  = 'N') AND (l_mfar_adj = 'N') AND
10163              (l_11i_app  = 'N') AND (l_mfar_app = 'N'))
10164       THEN  --3
10165        --{HYUNLB
10166         IF p_from_llca = 'Y' THEN
10167 
10168           IF PG_DEBUG = 'Y' THEN
10169 	  localdebug('As user is Line Level activating the trx - p_from_llca:'||p_from_llca);
10170           localdebug('Updating the Line Balance' );
10171 	  END IF;
10172 --LLCA
10173 	  --set_original_rem_amt_r12(p_customer_trx => p_customer_trx);
10174 	set_original_rem_amt_r12(p_customer_trx => p_customer_trx,
10175 	x_return_status   =>  l_return_status,
10176 	x_msg_count      =>  l_msg_count,
10177 	x_msg_data        =>  l_msg_data,
10178 	p_from_llca    => 'Y');
10179 
10180       IF l_return_status <> fnd_api.g_ret_sts_success THEN
10181         RAISE excep_set_org_rem_amt_r12;
10182      END IF;
10183 
10184 
10185           /* localdebug('Setting transaction.upgrade_method to R12' );
10186           UPDATE ra_customer_trx SET upgrade_method = 'R12'
10187           WHERE customer_trx_id = p_customer_trx.customer_trx_id; */
10188 
10189         ELSE
10190 
10191           IF PG_DEBUG = 'Y' THEN
10192 	  localdebug('This is a direct activity on the transaction - p_from_llca:'||p_from_llca);
10193           localdebug('No balance maintenance and setting transaction.upg_flag to R12_NLB');
10194 	  END IF;
10195           --{HYUNLB
10196           -- By setting the upg_make to R12_NLB
10197           -- <=> Do not maintain the line balance
10198           -- R12_NLB
10199           UPDATE ra_customer_trx SET upgrade_method = 'R12_NLB'
10200           WHERE customer_trx_id = p_customer_trx.customer_trx_id;
10201           --}
10202         END IF;
10203 
10204       -- MFAR legacy R12_11IMFAR
10205       ELSIF  ((l_mfar_adj = 'Y') OR (l_mfar_app = 'Y'))
10206       THEN --3
10207        --
10208        -- The starting balance should start from PSA
10209        --
10210         IF PG_DEBUG = 'Y' THEN
10211 	localdebug('No matter LLCA or not, this a 11I MFAR transaction, we need to maintained balance');
10212 	END IF;
10213         set_original_rem_amt_mfar(p_customer_trx => p_customer_trx);
10214 
10215         IF PG_DEBUG = 'Y' THEN
10216 	localdebug('Setting the transaction.upgrade_method to R12_11IMFAR');
10217 	END IF;
10218         UPDATE ra_customer_trx SET upgrade_method = 'R12_11IMFAR'
10219          WHERE customer_trx_id = p_customer_trx.customer_trx_id;
10220 
10221 
10222       ELSIF ((l_11i_adj  = 'N') AND (l_11i_app  = 'Y'))
10223       THEN --3
10224        -- Normal we do not maintain the line level balance
10225        -- In this case the balance on the line are inaccurate
10226        -- Although future adjustment and future application can tied
10227        -- back to original transaction distributions, I mark them to use
10228        -- R12_11ICASH method, because a application in 11i can increase
10229        -- the balance of the lines as AR allow
10230 	   -- positive credit memo applied to an invoice
10231        -- If we use the R12 method for applications, over applications can happen
10232        -- resulting impossibility to close the transaction
10233        IF p_from_llca = 'Y' THEN
10234          IF PG_DEBUG = 'Y' THEN
10235 	 localdebug('On this transaction no 11i adjustments has occurs');
10236          localdebug('But some applications in 11i has happened');
10237          localdebug('This is a 11i legacy transaction with 11i activity- LLCA should be allowed');
10238 	 END IF;
10239          RAISE no_llca_allowed;
10240 
10241        ELSE
10242          IF PG_DEBUG = 'Y' THEN
10243 	 localdebug('On this transaction no 11i adjustments has occurs');
10244          localdebug('But some applications in 11i has happened');
10245          localdebug('No maintenace of the line balances, but we set them as original for cm');
10246 	 --        set_original_rem_amt_r12(p_customer_trx => p_customer_trx);
10247 
10248          localdebug('Setting the transaction.upgrade_method');
10249 	 END IF;
10250          UPDATE ra_customer_trx SET upgrade_method = 'R12_11ICASH'
10251          WHERE customer_trx_id = p_customer_trx.customer_trx_id;
10252        END IF;
10253      ELSE --3
10254      -- CASH legacy R12_11ICASH
10255      -- (l_11i_adj  = 'Y')
10256      -- In this case future applications need to be prorated over
10257      -- existing adjustment distributions without the possibility
10258      -- to tied back to the original distributions only buckets will
10259      -- be identificable
10260 
10261 
10262        IF p_from_llca = 'Y' THEN
10263          IF PG_DEBUG = 'Y' THEN
10264 	 localdebug('On this transaction 11i adjustments has occurs');
10265          localdebug('This is a 11i legacy transaction with 11i activity- LLCA should be allowed');
10266 	 END IF;
10267          RAISE no_llca_allowed;
10268 
10269        ELSE
10270          IF PG_DEBUG = 'Y' THEN
10271 	 localdebug('On this transaction 11i adjustments has occurs');
10272          localdebug('No maintenace of the line balances');
10273 
10274 --        set_original_rem_amt_r12(p_customer_trx => p_customer_trx);
10275 
10276          localdebug('Setting the transaction.upgrade_method');
10277 	 END IF;
10278          UPDATE ra_customer_trx SET upgrade_method = 'R12_11ICASH'
10279           WHERE customer_trx_id = p_customer_trx.customer_trx_id;
10280 
10281        END IF;
10282 
10283      END IF; --3
10284     END IF; --2
10285   END IF; --1
10286   CLOSE c_verif;
10287 
10288   IF PG_DEBUG = 'Y' THEN
10289   localdebug('arp_det_dist_pkg.set_original_rem_amt()-');
10290   END IF;
10291 EXCEPTION
10292   WHEN no_need_to_set_orig_rem_amt THEN
10293     IF c_verif%ISOPEN THEN     CLOSE c_verif;   END IF;
10294     IF PG_DEBUG = 'Y' THEN
10295     localdebug('  No need to set orig rem amount');
10296     localdebug('arp_det_dist_pkg.set_original_rem_amt()-');
10297     END IF;
10298 
10299   WHEN no_a_valid_trx  THEN
10300     IF c_verif%ISOPEN THEN     CLOSE c_verif;   END IF;
10301     IF PG_DEBUG = 'Y' THEN
10302     localdebug('EXCEPTION no_a_valid_trx :'||p_customer_trx.customer_trx_id);
10303     END IF;
10304     RAISE;
10305 
10306   WHEN  no_llca_allowed   THEN
10307     IF c_verif%ISOPEN THEN     CLOSE c_verif;   END IF;
10308     IF PG_DEBUG = 'Y' THEN
10309     localdebug('EXCEPTION NO_llca_allowed customer_trx_id :'||p_customer_trx.customer_trx_id);
10310     END IF;
10311     RAISE;
10312 
10313  WHEN excep_set_org_rem_amt_r12 THEN
10314   IF PG_DEBUG = 'Y' THEN
10315   localdebug('EXCEPTION_set_original_rem_amt_r12 error count:'||l_msg_count);
10316   localdebug('last error:'||l_msg_data);
10317   END IF;
10318   RAISE;
10319 
10320 
10321   WHEN OTHERS THEN
10322     IF c_verif%ISOPEN THEN     CLOSE c_verif;   END IF;
10323     IF PG_DEBUG = 'Y' THEN
10324     localdebug(' EXCEPTION OTHERS set_original_rem_amt:'||SQLERRM);
10325     END IF;
10326     RAISE;
10327 END set_original_rem_amt;
10328 
10329 
10330 PROCEDURE insert_ra_ar_gt
10331 ( p_ra_ar_gt             IN ra_ar_gt%ROWTYPE,
10332   p_ar_base_dist_amts_gt IN ar_base_dist_amts_gt%ROWTYPE,
10333   p_ra_ar_amounts_gt     IN ra_ar_amounts_gt%ROWTYPE
10334  )
10335 IS
10336   l_rows NUMBER;
10337   l_base_rowid ROWID;
10338 BEGIN
10339   INSERT INTO ra_ar_gt
10340    (
10341       GT_ID
10342    ,BASE_CURRENCY
10343    ,TO_CURRENCY
10344    ,FROM_CURRENCY
10345    ,DET_ID
10346    ,LINE_ID
10347    ,REF_CUSTOMER_TRX_ID
10348    ,REF_CUSTOMER_TRX_LINE_ID
10349    ,REF_CUST_TRX_LINE_GL_DIST_ID
10350    ,REF_LINE_ID
10351    ,REF_DET_ID
10352    ,ACCOUNT_CLASS
10353    ,SOURCE_TYPE
10354    ,SOURCE_TABLE
10355    ,SOURCE_ID
10356    ,AMT
10357    ,ACCTD_AMT
10358    ,AMT_DR
10359    ,AMT_CR
10360    ,ACCTD_AMT_DR
10361    ,ACCTD_AMT_CR
10362    ,FROM_ACCTD_AMT_DR
10363    ,FROM_ACCTD_AMT_CR
10364    ,CCID
10365    ,CCID_SECONDARY
10366    ,DIST_AMT
10367    ,DIST_ACCTD_AMT
10368    ,ALLOC_AMT
10369    ,ALLOC_ACCTD_AMT
10370    ,FROM_ALLOC_AMT
10371    ,FROM_ALLOC_ACCTD_AMT
10372    ,tl_alloc_amt
10373    ,tl_alloc_acctd_amt
10374    ,tl_chrg_alloc_amt
10375    ,tl_chrg_alloc_acctd_amt
10376    --
10377      ,tl_frt_alloc_amt
10378      ,tl_frt_alloc_acctd_amt
10379      ,tl_tax_alloc_amt
10380      ,tl_tax_alloc_acctd_amt
10381    --
10382    ,DUE_REM_AMT
10383    ,DUE_REM_ACCTD_AMT
10384    --
10385       ,FRT_REM_AMT
10386       ,FRT_REM_ACCTD_AMT
10387       ,TAX_REM_AMT
10388       ,TAX_REM_ACCTD_AMT
10389    --
10390    ,DUE_ORIG_AMT
10391    ,DUE_ORIG_ACCTD_AMT
10392    --
10393       ,FRT_ORIG_AMT
10394       ,FRT_ORIG_ACCTD_AMT
10395       ,TAX_ORIG_AMT
10396       ,TAX_ORIG_ACCTD_AMT
10397    --
10398    ,CHRG_REM_AMT
10399    ,CHRG_REM_ACCTD_AMT
10400    --
10401       ,FRT_ADJ_REM_AMT
10402       ,FRT_ADJ_REM_ACCTD_AMT
10403    --
10404    ,LINE_TYPE
10405    ,SUM_LINE_REM_AMT
10406    ,SUM_LINE_REM_ACCTD_AMT
10407    --
10408       ,SUM_LINE_FRT_REM_AMT
10409       ,SUM_LINE_FRT_REM_ACCTD_AMT
10410       ,SUM_LINE_TAX_REM_AMT
10411       ,SUM_LINE_TAX_REM_ACCTD_AMT
10412    --
10413    ,SUM_LINE_ORIG_AMT
10414    ,SUM_LINE_ORIG_ACCTD_AMT
10415    --
10416       ,SUM_LINE_FRT_ORIG_AMT
10417       ,SUM_LINE_FRT_ORIG_ACCTD_AMT
10418       ,SUM_LINE_TAX_ORIG_AMT
10419       ,SUM_LINE_TAX_ORIG_ACCTD_AMT
10420    --
10421    ,SUM_LINE_CHRG_REM_AMT
10422    ,SUM_LINE_CHRG_REM_ACCTD_AMT
10423    --
10424    ,TL_ED_ALLOC_AMT
10425    ,TL_ED_ALLOC_ACCTD_AMT
10426    ,TL_ED_CHRG_ALLOC_AMT
10427    ,TL_ED_CHRG_ALLOC_ACCTD_AMT
10428    --
10429       ,TL_ED_FRT_ALLOC_AMT
10430       ,TL_ED_FRT_ALLOC_ACCTD_AMT
10431       ,TL_ED_TAX_ALLOC_AMT
10432       ,TL_ED_TAX_ALLOC_ACCTD_AMT
10433    --
10434    ,TL_UNED_ALLOC_AMT
10435    ,TL_UNED_ALLOC_ACCTD_AMT
10436    ,TL_UNED_CHRG_ALLOC_AMT
10437    ,TL_UNED_CHRG_ALLOC_ACCTD_AMT
10438    --
10439       ,TL_UNED_FRT_ALLOC_AMT
10440       ,TL_UNED_FRT_ALLOC_ACCTD_AMT
10441       ,TL_UNED_TAX_ALLOC_AMT
10442       ,TL_UNED_TAX_ALLOC_ACCTD_AMT
10443    --
10444    ,DIST_ED_AMT
10445    ,DIST_ED_ACCTD_AMT
10446    ,DIST_UNED_AMT
10447    ,DIST_UNED_ACCTD_AMT
10448    ,gp_level
10449    ,group_id
10450 
10451    ,source_data_key1
10452    ,source_data_key2
10453    ,source_data_key3
10454    ,source_data_key4
10455    ,source_data_key5
10456 
10457    , SET_OF_BOOKS_ID
10458    , SOB_TYPE
10459    , activity_bucket
10460     )
10461    VALUES
10462     (
10463       p_ra_ar_gt.GT_ID                                --GT_ID
10464    ,p_ra_ar_gt.BASE_CURRENCY                        --BASE_CURRENCY
10465    ,p_ra_ar_gt.TO_CURRENCY                          --TO_CURRENCY
10466    ,p_ra_ar_gt.FROM_CURRENCY                        --FROM_CURRENCY
10467    ,p_ra_ar_gt.DET_ID                             --DET_ID
10468    ,p_ra_ar_gt.LINE_ID                              --LINE_ID
10469    ,p_ra_ar_gt.REF_CUSTOMER_TRX_ID                  --REF_CUSTOMER_TRX_ID
10470    ,p_ra_ar_gt.REF_CUSTOMER_TRX_LINE_ID             --REF_CUSTOMER_TRX_LINE_ID
10471    ,p_ra_ar_gt.REF_CUST_TRX_LINE_GL_DIST_ID         --REF_CUST_TRX_LINE_GL_DIST_ID
10472    ,p_ra_ar_gt.REF_LINE_ID                          --REF_LINE_ID
10473    ,p_ra_ar_gt.REF_DET_ID                         --REF_DET_ID
10474    ,p_ra_ar_gt.ACCOUNT_CLASS                        --ACCOUNT_CLASS
10475    ,p_ra_ar_gt.SOURCE_TYPE                          --SOURCE_TYPE
10476    ,p_ra_ar_gt.SOURCE_TABLE                         --SOURCE_TABLE
10477    ,p_ra_ar_gt.SOURCE_ID                            --SOURCE_ID
10478    ,p_ra_ar_gt.AMT                                  --AMT
10479    ,p_ra_ar_gt.ACCTD_AMT                            --ACCTD_AMT
10480    ,p_ra_ar_gt.AMT_DR                               --AMT_DR
10481    ,p_ra_ar_gt.AMT_CR                               --AMT_CR
10482    ,p_ra_ar_gt.ACCTD_AMT_DR                         --ACCTD_AMT_DR
10483    ,p_ra_ar_gt.ACCTD_AMT_CR                         --ACCTD_AMT_CR
10484    ,p_ra_ar_gt.FROM_ACCTD_AMT_DR                    --FROM_ACCTD_AMT_DR
10485    ,p_ra_ar_gt.FROM_ACCTD_AMT_CR                    --FROM_ACCTD_AMT_CR
10486    ,p_ra_ar_gt.CCID                                 --CCID
10487    ,p_ra_ar_gt.CCID_SECONDARY                       --CCID_SECONDARY
10488    ,p_ra_ar_gt.DIST_AMT                             --DIST_AMT
10489    ,p_ra_ar_gt.DIST_ACCTD_AMT                       --DIST_ACCTD_AMT
10490    ,p_ra_ar_gt.ALLOC_AMT                            --ALLOC_AMT
10491    ,p_ra_ar_gt.ALLOC_ACCTD_AMT                      --ALLOC_ACCTD_AMT
10492    ,p_ra_ar_gt.FROM_ALLOC_AMT                       --FROM_ALLOC_AMT
10493    ,p_ra_ar_gt.FROM_ALLOC_ACCTD_AMT                 --FROM_ALLOC_ACCTD_AMT
10494    ,p_ra_ar_gt.tl_alloc_amt                         --TL_ALLOC_AMT
10495    ,p_ra_ar_gt.tl_alloc_acctd_amt                   --TL_ALLOC_ACCTD_AMT
10496    ,p_ra_ar_gt.tl_chrg_alloc_amt
10497    ,p_ra_ar_gt.tl_chrg_alloc_acctd_amt
10498    --
10499      ,p_ra_ar_gt.tl_frt_alloc_amt                    --TL_FRT_ALLOC_AMT
10500      ,p_ra_ar_gt.tl_frt_alloc_acctd_amt              --TL_FRT_ALLOC_ACCTD_AMT
10501      ,p_ra_ar_gt.tl_tax_alloc_amt
10502      ,p_ra_ar_gt.tl_tax_alloc_acctd_amt
10503    --
10504    ,p_ra_ar_gt.DUE_REM_AMT
10505    ,p_ra_ar_gt.DUE_REM_ACCTD_AMT
10506    --
10507      ,p_ra_ar_gt.FRT_REM_AMT
10508      ,p_ra_ar_gt.FRT_REM_ACCTD_AMT
10509      ,p_ra_ar_gt.TAX_REM_AMT
10510      ,p_ra_ar_gt.TAX_REM_ACCTD_AMT
10511    --
10512    ,p_ra_ar_gt.DUE_ORIG_AMT
10513    ,p_ra_ar_gt.DUE_ORIG_ACCTD_AMT
10514    --
10515      ,p_ra_ar_gt.FRT_ORIG_AMT
10516      ,p_ra_ar_gt.FRT_ORIG_ACCTD_AMT
10517      ,p_ra_ar_gt.TAX_ORIG_AMT
10518      ,p_ra_ar_gt.TAX_ORIG_ACCTD_AMT
10519    --
10520    ,p_ra_ar_gt.CHRG_REM_AMT
10521    ,p_ra_ar_gt.CHRG_REM_ACCTD_AMT
10522    --
10523      ,p_ra_ar_gt.FRT_ADJ_REM_AMT
10524      ,p_ra_ar_gt.FRT_ADJ_REM_ACCTD_AMT
10525    --
10526    ,p_ra_ar_gt.LINE_TYPE
10527    ,p_ra_ar_gt.SUM_LINE_REM_AMT
10528    ,p_ra_ar_gt.SUM_LINE_REM_ACCTD_AMT
10529    --
10530      ,p_ra_ar_gt.SUM_LINE_FRT_REM_AMT
10531      ,p_ra_ar_gt.SUM_LINE_FRT_REM_ACCTD_AMT
10532      ,p_ra_ar_gt.SUM_LINE_TAX_REM_AMT
10533      ,p_ra_ar_gt.SUM_LINE_TAX_REM_ACCTD_AMT
10534    --
10535    ,p_ra_ar_gt.SUM_LINE_ORIG_AMT
10536    ,p_ra_ar_gt.SUM_LINE_ORIG_ACCTD_AMT
10537    --
10538      ,p_ra_ar_gt.SUM_LINE_FRT_ORIG_AMT
10539      ,p_ra_ar_gt.SUM_LINE_FRT_ORIG_ACCTD_AMT
10540      ,p_ra_ar_gt.SUM_LINE_TAX_ORIG_AMT
10541      ,p_ra_ar_gt.SUM_LINE_TAX_ORIG_ACCTD_AMT
10542    --
10543    ,p_ra_ar_gt.SUM_LINE_CHRG_REM_AMT
10544    ,p_ra_ar_gt.SUM_LINE_CHRG_REM_ACCTD_AMT
10545    --
10546    ,p_ra_ar_gt.TL_ED_ALLOC_AMT
10547    ,p_ra_ar_gt.TL_ED_ALLOC_ACCTD_AMT
10548    ,p_ra_ar_gt.TL_ED_CHRG_ALLOC_AMT
10549    ,p_ra_ar_gt.TL_ED_CHRG_ALLOC_ACCTD_AMT
10550    --
10551      ,p_ra_ar_gt.TL_ED_FRT_ALLOC_AMT
10552      ,p_ra_ar_gt.TL_ED_FRT_ALLOC_ACCTD_AMT
10553      ,p_ra_ar_gt.TL_ED_TAX_ALLOC_AMT
10554      ,p_ra_ar_gt.TL_ED_TAX_ALLOC_ACCTD_AMT
10555    --
10556    ,p_ra_ar_gt.TL_UNED_ALLOC_AMT
10557    ,p_ra_ar_gt.TL_UNED_ALLOC_ACCTD_AMT
10558    ,p_ra_ar_gt.TL_UNED_CHRG_ALLOC_AMT
10559    ,p_ra_ar_gt.TL_UNED_CHRG_ALLOC_ACCTD_AMT
10560    --
10561      ,p_ra_ar_gt.TL_UNED_FRT_ALLOC_AMT
10562      ,p_ra_ar_gt.TL_UNED_FRT_ALLOC_ACCTD_AMT
10563      ,p_ra_ar_gt.TL_UNED_TAX_ALLOC_AMT
10564      ,p_ra_ar_gt.TL_UNED_TAX_ALLOC_ACCTD_AMT
10565    --
10566    ,p_ra_ar_gt.DIST_ED_AMT
10567    ,p_ra_ar_gt.DIST_ED_ACCTD_AMT
10568    ,p_ra_ar_gt.DIST_UNED_AMT
10569    ,p_ra_ar_gt.DIST_UNED_ACCTD_AMT
10570    ,p_ra_ar_gt.gp_level
10571    ,p_ra_ar_gt.group_id
10572 
10573    ,p_ra_ar_gt.source_data_key1
10574    ,p_ra_ar_gt.source_data_key2
10575    ,p_ra_ar_gt.source_data_key3
10576    ,p_ra_ar_gt.source_data_key4
10577    ,p_ra_ar_gt.source_data_key5
10578 
10579    ,p_ra_ar_gt.SET_OF_BOOKS_ID
10580    ,p_ra_ar_gt.SOB_TYPE
10581    ,p_ra_ar_gt.activity_bucket
10582     )  RETURNING ROWID INTO l_base_rowid;
10583 
10584   l_rows := sql%rowcount;
10585   g_appln_count := g_appln_count + l_rows;
10586   IF PG_DEBUG = 'Y' THEN
10587   localdebug('  rows inserted = ' || l_rows);
10588   END IF;
10589 
10590 
10591   INSERT INTO AR_BASE_DIST_AMTS_GT
10592     (
10593       gt_id
10594       ,gp_level
10595       ,ref_customer_trx_id
10596       ,ref_customer_trx_line_id
10597       ,base_dist_amt
10598       ,base_dist_acctd_amt
10599       ,base_ed_dist_amt
10600       ,base_ed_dist_acctd_amt
10601       ,base_uned_dist_amt
10602       ,base_uned_dist_acctd_amt
10603       ,set_of_books_id
10604       ,sob_type
10605       ,source_table
10606     )
10607   VALUES
10608     (
10609       p_ra_ar_gt.gt_id
10610       ,p_ra_ar_gt.gp_level
10611       ,p_ra_ar_gt.ref_customer_trx_id
10612       ,p_ra_ar_gt.ref_customer_trx_line_id
10613       ,p_ar_base_dist_amts_gt.base_dist_amt
10614       ,p_ar_base_dist_amts_gt.base_dist_acctd_amt
10615       ,p_ar_base_dist_amts_gt.base_ed_dist_amt
10616       ,p_ar_base_dist_amts_gt.base_ed_dist_acctd_amt
10617       ,p_ar_base_dist_amts_gt.base_uned_dist_amt
10618       ,p_ar_base_dist_amts_gt.base_uned_dist_acctd_amt
10619       ,p_ra_ar_gt.SET_OF_BOOKS_ID
10620       ,p_ra_ar_gt.SOB_TYPE
10621       ,p_ra_ar_gt.SOURCE_TABLE
10622     );
10623 
10624   INSERT INTO RA_AR_AMOUNTS_GT
10625    (
10626       gt_id
10627       ,gp_level
10628       ,base_rec_rowid
10629       ,ref_customer_trx_id
10630       ,ref_customer_trx_line_id
10631 
10632       ,base_pro_amt
10633       ,base_pro_acctd_amt
10634       ,BASE_CHRG_PRO_AMT
10635       ,BASE_CHRG_PRO_ACCTD_AMT
10636       --
10637       ,BASE_FRT_PRO_AMT
10638       ,BASE_FRT_PRO_ACCTD_AMT
10639       ,BASE_TAX_PRO_AMT
10640       ,BASE_TAX_PRO_ACCTD_AMT
10641       --
10642       ,elmt_pro_amt
10643       ,elmt_pro_acctd_amt
10644       ,ELMT_CHRG_PRO_AMT
10645       ,ELMT_CHRG_PRO_ACCTD_AMT
10646       --
10647       ,ELMT_FRT_PRO_AMT
10648       ,ELMT_FRT_PRO_ACCTD_AMT
10649       ,ELMT_TAX_PRO_AMT
10650       ,ELMT_TAX_PRO_ACCTD_AMT
10651       --
10652       ,buc_alloc_amt
10653       ,buc_alloc_acctd_amt
10654       ,buc_chrg_alloc_amt
10655       ,buc_chrg_alloc_acctd_amt
10656       --
10657       ,buc_frt_alloc_amt
10658       ,buc_frt_alloc_acctd_amt
10659       ,buc_tax_alloc_amt
10660       ,buc_tax_alloc_acctd_amt
10661 
10662       ,BUC_ED_ALLOC_AMT
10663       ,BUC_ED_ALLOC_ACCTD_AMT
10664       ,BUC_ED_CHRG_ALLOC_AMT
10665       ,BUC_ED_CHRG_ALLOC_ACCTD_AMT
10666       --
10667       ,BUC_ED_FRT_ALLOC_AMT
10668       ,BUC_ED_FRT_ALLOC_ACCTD_AMT
10669       ,BUC_ED_TAX_ALLOC_AMT
10670       ,BUC_ED_TAX_ALLOC_ACCTD_AMT
10671       --
10672       ,ELMT_ED_PRO_AMT
10673       ,ELMT_ED_PRO_ACCTD_AMT
10674       ,ELMT_ED_CHRG_PRO_AMT
10675       ,ELMT_ED_CHRG_PRO_ACCTD_AMT
10676       --
10677       ,ELMT_ED_FRT_PRO_AMT
10678       ,ELMT_ED_FRT_PRO_ACCTD_AMT
10679       ,ELMT_ED_TAX_PRO_AMT
10680       ,ELMT_ED_TAX_PRO_ACCTD_AMT
10681       --
10682       ,BASE_ED_PRO_AMT
10683       ,BASE_ED_PRO_ACCTD_AMT
10684       ,BASE_ED_CHRG_PRO_AMT
10685       ,BASE_ED_CHRG_PRO_ACCTD_AMT
10686       --
10687       ,BASE_ED_FRT_PRO_AMT
10688       ,BASE_ED_FRT_PRO_ACCTD_AMT
10689       ,BASE_ED_TAX_PRO_AMT
10690       ,BASE_ED_TAX_PRO_ACCTD_AMT
10691 
10692       ,BUC_UNED_ALLOC_AMT
10693       ,BUC_UNED_ALLOC_ACCTD_AMT
10694       ,BUC_UNED_CHRG_ALLOC_AMT
10695       ,BUC_UNED_CHRG_ALLOC_ACCTD_AMT
10696       --
10697       ,BUC_UNED_FRT_ALLOC_AMT
10698       ,BUC_UNED_FRT_ALLOC_ACCTD_AMT
10699       ,BUC_UNED_TAX_ALLOC_AMT
10700       ,BUC_UNED_TAX_ALLOC_ACCTD_AMT
10701       --
10702       ,ELMT_UNED_PRO_AMT
10703       ,ELMT_UNED_PRO_ACCTD_AMT
10704       ,ELMT_UNED_CHRG_PRO_AMT
10705       ,ELMT_UNED_CHRG_PRO_ACCTD_AMT
10706       --
10707       ,ELMT_UNED_FRT_PRO_AMT
10708       ,ELMT_UNED_FRT_PRO_ACCTD_AMT
10709       ,ELMT_UNED_TAX_PRO_AMT
10710       ,ELMT_UNED_TAX_PRO_ACCTD_AMT
10711       --
10712       ,BASE_UNED_PRO_AMT
10713       ,BASE_UNED_PRO_ACCTD_AMT
10714       ,BASE_UNED_CHRG_PRO_AMT
10715       ,BASE_UNED_CHRG_PRO_ACCTD_AMT
10716       --
10717       ,BASE_UNED_FRT_PRO_AMT
10718       ,BASE_UNED_FRT_PRO_ACCTD_AMT
10719       ,BASE_UNED_TAX_PRO_AMT
10720       ,BASE_UNED_TAX_PRO_ACCTD_AMT
10721     )
10722   VALUES
10723    (
10724       p_ra_ar_gt.gt_id
10725       ,p_ra_ar_gt.gp_level
10726       ,l_base_rowid
10727       ,p_ra_ar_gt.ref_customer_trx_id
10728       ,p_ra_ar_gt.ref_customer_trx_line_id
10729 
10730       ,p_ra_ar_amounts_gt.base_pro_amt
10731       ,p_ra_ar_amounts_gt.base_pro_acctd_amt
10732       ,p_ra_ar_amounts_gt.BASE_CHRG_PRO_AMT
10733       ,p_ra_ar_amounts_gt.BASE_CHRG_PRO_ACCTD_AMT
10734       --
10735       ,p_ra_ar_amounts_gt.BASE_FRT_PRO_AMT
10736       ,p_ra_ar_amounts_gt.BASE_FRT_PRO_ACCTD_AMT
10737       ,p_ra_ar_amounts_gt.BASE_TAX_PRO_AMT
10738       ,p_ra_ar_amounts_gt.BASE_TAX_PRO_ACCTD_AMT
10739       --
10740       ,p_ra_ar_amounts_gt.elmt_pro_amt
10741       ,p_ra_ar_amounts_gt.elmt_pro_acctd_amt
10742       ,p_ra_ar_amounts_gt.ELMT_CHRG_PRO_AMT
10743       ,p_ra_ar_amounts_gt.ELMT_CHRG_PRO_ACCTD_AMT
10744       --
10745       ,p_ra_ar_amounts_gt.ELMT_FRT_PRO_AMT
10746       ,p_ra_ar_amounts_gt.ELMT_FRT_PRO_ACCTD_AMT
10747       ,p_ra_ar_amounts_gt.ELMT_TAX_PRO_AMT
10748       ,p_ra_ar_amounts_gt.ELMT_TAX_PRO_ACCTD_AMT
10749       --
10750       ,p_ra_ar_amounts_gt.buc_alloc_amt
10751       ,p_ra_ar_amounts_gt.buc_alloc_acctd_amt
10752       ,p_ra_ar_amounts_gt.buc_chrg_alloc_amt
10753       ,p_ra_ar_amounts_gt.buc_chrg_alloc_acctd_amt
10754       --
10755       ,p_ra_ar_amounts_gt.buc_frt_alloc_amt
10756       ,p_ra_ar_amounts_gt.buc_frt_alloc_acctd_amt
10757       ,p_ra_ar_amounts_gt.buc_tax_alloc_amt
10758       ,p_ra_ar_amounts_gt.buc_tax_alloc_acctd_amt
10759 
10760       ,p_ra_ar_amounts_gt.BUC_ED_ALLOC_AMT
10761       ,p_ra_ar_amounts_gt.BUC_ED_ALLOC_ACCTD_AMT
10762       ,p_ra_ar_amounts_gt.BUC_ED_CHRG_ALLOC_AMT
10763       ,p_ra_ar_amounts_gt.BUC_ED_CHRG_ALLOC_ACCTD_AMT
10764       --
10765       ,p_ra_ar_amounts_gt.BUC_ED_FRT_ALLOC_AMT
10766       ,p_ra_ar_amounts_gt.BUC_ED_FRT_ALLOC_ACCTD_AMT
10767       ,p_ra_ar_amounts_gt.BUC_ED_TAX_ALLOC_AMT
10768       ,p_ra_ar_amounts_gt.BUC_ED_TAX_ALLOC_ACCTD_AMT
10769       --
10770       ,p_ra_ar_amounts_gt.ELMT_ED_PRO_AMT
10771       ,p_ra_ar_amounts_gt.ELMT_ED_PRO_ACCTD_AMT
10772       ,p_ra_ar_amounts_gt.ELMT_ED_CHRG_PRO_AMT
10773       ,p_ra_ar_amounts_gt.ELMT_ED_CHRG_PRO_ACCTD_AMT
10774       --
10775       ,p_ra_ar_amounts_gt.ELMT_ED_FRT_PRO_AMT
10776       ,p_ra_ar_amounts_gt.ELMT_ED_FRT_PRO_ACCTD_AMT
10777       ,p_ra_ar_amounts_gt.ELMT_ED_TAX_PRO_AMT
10778       ,p_ra_ar_amounts_gt.ELMT_ED_TAX_PRO_ACCTD_AMT
10779       --
10780       ,p_ra_ar_amounts_gt.BASE_ED_PRO_AMT
10781       ,p_ra_ar_amounts_gt.BASE_ED_PRO_ACCTD_AMT
10782       ,p_ra_ar_amounts_gt.BASE_ED_CHRG_PRO_AMT
10783       ,p_ra_ar_amounts_gt.BASE_ED_CHRG_PRO_ACCTD_AMT
10784       --
10785       ,p_ra_ar_amounts_gt.BASE_ED_FRT_PRO_AMT
10786       ,p_ra_ar_amounts_gt.BASE_ED_FRT_PRO_ACCTD_AMT
10787       ,p_ra_ar_amounts_gt.BASE_ED_TAX_PRO_AMT
10788       ,p_ra_ar_amounts_gt.BASE_ED_TAX_PRO_ACCTD_AMT
10789 
10790       ,p_ra_ar_amounts_gt.BUC_UNED_ALLOC_AMT
10791       ,p_ra_ar_amounts_gt.BUC_UNED_ALLOC_ACCTD_AMT
10792       ,p_ra_ar_amounts_gt.BUC_UNED_CHRG_ALLOC_AMT
10793       ,p_ra_ar_amounts_gt.BUC_UNED_CHRG_ALLOC_ACCTD_AMT
10794       --
10795       ,p_ra_ar_amounts_gt.BUC_UNED_FRT_ALLOC_AMT
10796       ,p_ra_ar_amounts_gt.BUC_UNED_FRT_ALLOC_ACCTD_AMT
10797       ,p_ra_ar_amounts_gt.BUC_UNED_TAX_ALLOC_AMT
10798       ,p_ra_ar_amounts_gt.BUC_UNED_TAX_ALLOC_ACCTD_AMT
10799       --
10800       ,p_ra_ar_amounts_gt.ELMT_UNED_PRO_AMT
10801       ,p_ra_ar_amounts_gt.ELMT_UNED_PRO_ACCTD_AMT
10802       ,p_ra_ar_amounts_gt.ELMT_UNED_CHRG_PRO_AMT
10803       ,p_ra_ar_amounts_gt.ELMT_UNED_CHRG_PRO_ACCTD_AMT
10804       --
10805       ,p_ra_ar_amounts_gt.ELMT_UNED_FRT_PRO_AMT
10806       ,p_ra_ar_amounts_gt.ELMT_UNED_FRT_PRO_ACCTD_AMT
10807       ,p_ra_ar_amounts_gt.ELMT_UNED_TAX_PRO_AMT
10808       ,p_ra_ar_amounts_gt.ELMT_UNED_TAX_PRO_ACCTD_AMT
10809       --
10810       ,p_ra_ar_amounts_gt.BASE_UNED_PRO_AMT
10811       ,p_ra_ar_amounts_gt.BASE_UNED_PRO_ACCTD_AMT
10812       ,p_ra_ar_amounts_gt.BASE_UNED_CHRG_PRO_AMT
10813       ,p_ra_ar_amounts_gt.BASE_UNED_CHRG_PRO_ACCTD_AMT
10814       --
10815       ,p_ra_ar_amounts_gt.BASE_UNED_FRT_PRO_AMT
10816       ,p_ra_ar_amounts_gt.BASE_UNED_FRT_PRO_ACCTD_AMT
10817       ,p_ra_ar_amounts_gt.BASE_UNED_TAX_PRO_AMT
10818       ,p_ra_ar_amounts_gt.BASE_UNED_TAX_PRO_ACCTD_AMT
10819     );
10820   l_rows := sql%rowcount;
10821   IF PG_DEBUG = 'Y' THEN
10822   localdebug('  rows inserted into AR_BASE_DIST_AMTS_GT = ' || l_rows);
10823   END IF;
10824 END insert_ra_ar_gt;
10825 
10826 
10827 PROCEDURE adjustment_detemination
10828 (p_customer_trx_id   IN NUMBER,
10829  p_gt_id             IN VARCHAR2,
10830  p_pay_adj           IN VARCHAR2,
10831  p_ae_sys_rec        IN arp_acct_main.ae_sys_rec_type,
10832  p_adj_rec           IN ar_adjustments%ROWTYPE)
10833 IS
10834   CURSOR get_sum_per_line_type IS
10835   SELECT /*+INDEX (RA_AR_GT ra_ar_n1)*/
10836          MAX(sum_line_rem_amt),
10837          MAX(sum_line_rem_acctd_amt),
10838          MAX(sum_line_orig_amt),
10839          MAX(sum_line_orig_acctd_amt),
10840          MAX(sum_line_chrg_rem_amt),
10841          MAX(sum_line_chrg_rem_acctd_amt),
10842          --
10843          MAX(sum_line_frt_rem_amt),
10844          MAX(sum_line_frt_rem_acctd_amt),
10845          MAX(sum_line_frt_orig_amt),
10846          MAX(sum_line_frt_orig_acctd_amt),
10847          --
10848          MAX(sum_line_tax_rem_amt),
10849          MAX(sum_line_tax_rem_acctd_amt),
10850          MAX(sum_line_tax_orig_amt),
10851          MAX(sum_line_tax_orig_acctd_amt),
10852          --
10853          line_type
10854     FROM ra_ar_gt
10855    WHERE gt_id                = p_gt_id
10856 --     AND se_gt_id             = g_se_gt_id
10857      AND ref_customer_trx_id  = p_customer_trx_id
10858      AND gp_level             = 'L' --'D'
10859    GROUP BY line_type;
10860 
10861   CURSOR cu_inv_cur IS
10862   SELECT invoice_currency_code,exchange_rate
10863     FROM ra_customer_trx
10864    WHERE customer_trx_id      = p_customer_trx_id;
10865   l_inv_currency                 VARCHAR2(30) := NULL;
10866   l_exchange_rate                ra_customer_trx.exchange_rate%type;
10867   l_sum_line_rem_amt             DBMS_SQL.NUMBER_TABLE;
10868   l_sum_line_rem_acctd_amt       DBMS_SQL.NUMBER_TABLE;
10869   l_sum_line_orig_amt            DBMS_SQL.NUMBER_TABLE;
10870   l_sum_line_orig_acctd_amt      DBMS_SQL.NUMBER_TABLE;
10871   l_sum_line_chrg_rem_amt        DBMS_SQL.NUMBER_TABLE;
10872   l_sum_line_chrg_rem_acctd_amt  DBMS_SQL.NUMBER_TABLE;
10873   --
10874   l_sum_line_frt_rem_amt             DBMS_SQL.NUMBER_TABLE;
10875   l_sum_line_frt_rem_acctd_amt       DBMS_SQL.NUMBER_TABLE;
10876   l_sum_line_frt_orig_amt            DBMS_SQL.NUMBER_TABLE;
10877   l_sum_line_frt_orig_acctd_amt      DBMS_SQL.NUMBER_TABLE;
10878   --
10879   l_sum_line_tax_rem_amt             DBMS_SQL.NUMBER_TABLE;
10880   l_sum_line_tax_rem_acctd_amt       DBMS_SQL.NUMBER_TABLE;
10881   l_sum_line_tax_orig_amt            DBMS_SQL.NUMBER_TABLE;
10882   l_sum_line_tax_orig_acctd_amt      DBMS_SQL.NUMBER_TABLE;
10883   --
10884   l_line_type                    DBMS_SQL.VARCHAR2_TABLE;
10885   l_ra_ar_gt                     ra_ar_gt%ROWTYPE;
10886   invoice_has_no_lines           EXCEPTION;
10887   not_an_adjustment              EXCEPTION;
10888   l_freight_boundary_done        VARCHAR2(1) := 'N';
10889   l_line_boundary_done           VARCHAR2(1) := 'N';
10890   l_tax_boundary_done            VARCHAR2(1) := 'N';
10891   l_chrg_boundary_done           VARCHAR2(1) := 'N';
10892   PROCEDURE line_boundary
10893   (p_adj_rec            IN ar_adjustments%ROWTYPE,
10894    p_sum_line_orig_amt  IN NUMBER,
10895    p_sum_line_rem_amt   IN NUMBER,
10896    p_inv_currency       IN VARCHAR2,
10897    p_customer_trx_id    IN NUMBER,
10898    p_gt_id              IN VARCHAR2,
10899    p_ae_sys_rec         IN arp_acct_main.ae_sys_rec_type,
10900    P_exchange_rate      IN ra_customer_trx.exchange_rate%type)
10901   IS
10902     l_ra_ar_gt              ra_ar_gt%ROWTYPE;
10903     l_ar_base_dist_amts_gt  ar_base_dist_amts_gt%ROWTYPE;
10904     l_ra_ar_amounts_gt      ra_ar_amounts_gt%ROWTYPE;
10905   BEGIN
10906      --Rev line boundary
10907      IF  NVL(p_adj_rec.line_adjusted,0) <> 0 AND
10908          NVL(p_sum_line_orig_amt,0)  =  0 AND
10909          NVL(p_sum_line_rem_amt,0)   =  0
10910      THEN
10911         IF PG_DEBUG = 'Y' THEN
10912 	localdebug('   -6 Adjustment Boundary LINE condition met');
10913 	END IF;
10914         l_ra_ar_gt.GT_ID      :=  p_gt_id;
10915         l_ra_ar_gt.AMT        :=  p_adj_rec.line_adjusted;
10916         l_ra_ar_gt.ACCTD_AMT  :=  currRound(p_adj_rec.line_adjusted * P_exchange_rate,
10917                                                     p_ae_sys_rec.base_currency);
10918         l_ra_ar_gt.ACCOUNT_CLASS               :=  'REV';
10919         l_ra_ar_gt.CCID_SECONDARY              :=  NULL; --Normally the auto accounting ccid
10920         l_ra_ar_gt.REF_CUST_TRX_LINE_GL_DIST_ID:=  -6;
10921         l_ra_ar_gt.REF_CUSTOMER_TRX_LINE_ID    :=  -6;
10922         l_ra_ar_gt.REF_CUSTOMER_TRX_ID         :=  p_customer_trx_id;
10923         l_ra_ar_gt.DIST_AMT                    :=  p_adj_rec.line_adjusted;
10924         l_ra_ar_gt.DIST_ACCTD_AMT              :=  currRound(p_adj_rec.line_adjusted * P_exchange_rate,
10925                                                                      p_ae_sys_rec.base_currency);
10926         l_ra_ar_gt.TO_CURRENCY                 :=  p_inv_currency;
10927         l_ra_ar_gt.BASE_CURRENCY               :=  p_ae_sys_rec.base_currency;
10928         l_ra_ar_gt.tl_alloc_amt                :=  p_adj_rec.line_adjusted;
10929         l_ra_ar_gt.tl_alloc_acctd_amt          :=  currRound(p_adj_rec.line_adjusted * P_exchange_rate,
10930                                                                      p_ae_sys_rec.base_currency);
10931         l_ra_ar_gt.tl_chrg_alloc_amt           :=  0;
10932         l_ra_ar_gt.tl_chrg_alloc_acctd_amt     :=  0;
10933         l_ra_ar_gt.tl_frt_alloc_amt            :=  0;
10934         l_ra_ar_gt.tl_frt_alloc_acctd_amt      :=  0;
10935         l_ra_ar_gt.tl_tax_alloc_amt            :=  0;
10936         l_ra_ar_gt.tl_tax_alloc_acctd_amt      :=  0;
10937         l_ar_base_dist_amts_gt.base_dist_amt        :=  p_adj_rec.line_adjusted;
10938         l_ar_base_dist_amts_gt.base_dist_acctd_amt  :=  currRound(p_adj_rec.line_adjusted * P_exchange_rate,
10939                                                                      p_ae_sys_rec.base_currency);
10940         l_ra_ar_gt.source_type                 :=  'LINE';
10941         l_ra_ar_gt.source_table                :=  'ADJ';
10942         l_ra_ar_gt.source_id                   :=  p_adj_rec.adjustment_id;
10943         l_ra_ar_gt.gp_level                    :=  'D';
10944         l_ra_ar_gt.group_id                    :=  '00';
10945   --{HYUBPAGP
10946         l_ra_ar_gt.source_data_key1            :=  '00';
10947         l_ra_ar_gt.source_data_key2            :=  '00';
10948         l_ra_ar_gt.source_data_key3            :=  '00';
10949         l_ra_ar_gt.source_data_key4            :=  '00';
10950         l_ra_ar_gt.source_data_key5            :=  '00';
10951   --}
10952 --        l_ra_ar_gt.se_gt_id                    := g_se_gt_id;
10953         l_ra_ar_gt.set_of_books_id             := p_ae_sys_rec.set_of_books_id;
10954         l_ra_ar_gt.sob_type                    := p_ae_sys_rec.sob_type;
10955         l_ra_ar_gt.activity_bucket                      := 'ADJ';
10956         insert_ra_ar_gt(p_ra_ar_gt  =>  l_ra_ar_gt,
10957 	                p_ar_base_dist_amts_gt => l_ar_base_dist_amts_gt,
10958 			p_ra_ar_amounts_gt => l_ra_ar_amounts_gt
10959 			);
10960       END IF;
10961 
10962       --Charge boundary is part of line boundary estimation because frt over revenue line
10963       IF NVL(p_adj_rec.receivables_charges_adjusted,0) <> 0 AND
10964          NVL(p_sum_line_orig_amt,0)                  = 0 AND
10965          NVL(p_sum_line_rem_amt,0)                   = 0
10966       THEN
10967         IF PG_DEBUG = 'Y' THEN
10968 	localdebug('   -7 Adjustment Boundary CHARGES condition met');
10969 	END IF;
10970         l_ra_ar_gt.GT_ID      :=  p_gt_id;
10971         l_ra_ar_gt.AMT        :=  p_adj_rec.receivables_charges_adjusted;
10972         l_ra_ar_gt.ACCTD_AMT  :=  currRound(p_adj_rec.receivables_charges_adjusted * P_exchange_rate,
10973                                                     p_ae_sys_rec.base_currency);
10974         l_ra_ar_gt.ACCOUNT_CLASS               :=  'REV';
10975         l_ra_ar_gt.CCID_SECONDARY              :=  NULL; --Normally the auto accounting ccid
10976         l_ra_ar_gt.REF_CUST_TRX_LINE_GL_DIST_ID:=  -7;
10977         l_ra_ar_gt.REF_CUSTOMER_TRX_LINE_ID    :=  -7;
10978         l_ra_ar_gt.REF_CUSTOMER_TRX_ID         :=  p_customer_trx_id;
10979         l_ra_ar_gt.DIST_AMT                    :=  p_adj_rec.receivables_charges_adjusted;
10980         l_ra_ar_gt.DIST_ACCTD_AMT              :=  currRound(p_adj_rec.receivables_charges_adjusted * P_exchange_rate,
10981                                                                      p_ae_sys_rec.base_currency);
10982         l_ra_ar_gt.TO_CURRENCY                 :=  p_inv_currency;
10983         l_ra_ar_gt.BASE_CURRENCY               :=  p_ae_sys_rec.base_currency;
10984         l_ra_ar_gt.tl_alloc_amt                :=  0;
10985         l_ra_ar_gt.tl_alloc_acctd_amt          :=  0;
10986         l_ra_ar_gt.tl_chrg_alloc_amt           :=  p_adj_rec.receivables_charges_adjusted;
10987         l_ra_ar_gt.tl_chrg_alloc_acctd_amt     := currRound(p_adj_rec.receivables_charges_adjusted * P_exchange_rate,
10988                                                                     p_ae_sys_rec.base_currency);
10989         l_ra_ar_gt.tl_frt_alloc_amt            :=  0;
10990         l_ra_ar_gt.tl_frt_alloc_acctd_amt      :=  0;
10991         l_ra_ar_gt.tl_tax_alloc_amt            :=  0;
10992         l_ra_ar_gt.tl_tax_alloc_acctd_amt      :=  0;
10993         l_ar_base_dist_amts_gt.base_dist_amt        :=  p_adj_rec.receivables_charges_adjusted;
10994         l_ar_base_dist_amts_gt.base_dist_acctd_amt  :=  currRound(p_adj_rec.receivables_charges_adjusted * P_exchange_rate,
10995                                                                      p_ae_sys_rec.base_currency);
10996         l_ra_ar_gt.source_type                 :=  'CHARGES';
10997         l_ra_ar_gt.source_table                :=  'ADJ';
10998         l_ra_ar_gt.source_id                   :=  p_adj_rec.adjustment_id;
10999         l_ra_ar_gt.gp_level                    :=  'D';
11000         l_ra_ar_gt.group_id                    :=  '00';
11001   --{HYUBPAGP
11002         l_ra_ar_gt.source_data_key1            :=  '00';
11003         l_ra_ar_gt.source_data_key2            :=  '00';
11004         l_ra_ar_gt.source_data_key3            :=  '00';
11005         l_ra_ar_gt.source_data_key4            :=  '00';
11006         l_ra_ar_gt.source_data_key5            :=  '00';
11007   --}
11008 --        l_ra_ar_gt.se_gt_id                    := g_se_gt_id;
11009         l_ra_ar_gt.set_of_books_id             := p_ae_sys_rec.set_of_books_id;
11010         l_ra_ar_gt.sob_type                    := p_ae_sys_rec.sob_type;
11011         l_ra_ar_gt.activity_bucket                      := 'ADJ';
11012         insert_ra_ar_gt(p_ra_ar_gt  =>  l_ra_ar_gt,
11013 	                p_ar_base_dist_amts_gt => l_ar_base_dist_amts_gt,
11014 			p_ra_ar_amounts_gt => l_ra_ar_amounts_gt
11015 			);
11016       END IF;
11017 
11018       --Frt boundary is part of line boundary estimation because frt over revenue line
11019       IF NVL(p_adj_rec.freight_adjusted,0) <> 0 AND
11020          NVL(p_sum_line_orig_amt,0)  = 0 AND
11021          NVL(p_sum_line_rem_amt,0)   = 0
11022       THEN
11023         IF PG_DEBUG = 'Y' THEN
11024 	localdebug('   -9 Adjustment Boundary FREIGHT condition met');
11025 	END IF;
11026         l_ra_ar_gt.GT_ID      :=  p_gt_id;
11027         l_ra_ar_gt.AMT        :=  p_adj_rec.freight_adjusted;
11028         l_ra_ar_gt.ACCTD_AMT  :=  currRound(p_adj_rec.freight_adjusted * P_exchange_rate,
11029                                                     p_ae_sys_rec.base_currency);
11030         l_ra_ar_gt.ACCOUNT_CLASS               := 'REV';
11031         l_ra_ar_gt.CCID_SECONDARY              := NULL; --Normally the auto accounting ccid
11032         l_ra_ar_gt.REF_CUST_TRX_LINE_GL_DIST_ID:= -9;
11033         l_ra_ar_gt.REF_CUSTOMER_TRX_LINE_ID    := -9;
11034         l_ra_ar_gt.REF_CUSTOMER_TRX_ID         := p_customer_trx_id;
11035         l_ra_ar_gt.DIST_AMT                    := p_adj_rec.freight_adjusted;
11036         l_ra_ar_gt.DIST_ACCTD_AMT              := currRound(p_adj_rec.tax_adjusted * P_exchange_rate,
11037                                                                     p_ae_sys_rec.base_currency);
11038         l_ra_ar_gt.TO_CURRENCY                 := p_inv_currency;
11039         l_ra_ar_gt.BASE_CURRENCY               := p_ae_sys_rec.base_currency;
11040         l_ra_ar_gt.tl_chrg_alloc_amt           := 0;
11041         l_ra_ar_gt.tl_chrg_alloc_acctd_amt     := 0;
11042         l_ra_ar_gt.tl_tax_alloc_amt            := 0;
11043         l_ra_ar_gt.tl_tax_alloc_acctd_amt      := 0;
11044         l_ra_ar_gt.tl_alloc_amt                := 0;
11045         l_ra_ar_gt.tl_alloc_acctd_amt          := 0;
11046         l_ra_ar_gt.tl_frt_alloc_amt            := p_adj_rec.freight_adjusted;
11047         l_ra_ar_gt.tl_frt_alloc_acctd_amt      := currRound(p_adj_rec.freight_adjusted * P_exchange_rate,
11048                                                                     p_ae_sys_rec.base_currency);
11049         l_ar_base_dist_amts_gt.base_dist_amt       := p_adj_rec.freight_adjusted;
11050         l_ar_base_dist_amts_gt.base_dist_acctd_amt := currRound(p_adj_rec.freight_adjusted * P_exchange_rate,
11051                                                                     p_ae_sys_rec.base_currency);
11052         l_ra_ar_gt.source_type                 := 'FREIGHT';
11053         l_ra_ar_gt.source_table                := 'ADJ';
11054         l_ra_ar_gt.source_id                   := p_adj_rec.adjustment_id;
11055         l_ra_ar_gt.gp_level                    := 'D';
11056         l_ra_ar_gt.group_id                    := '00';
11057   --{HYUBPAGP
11058         l_ra_ar_gt.source_data_key1            :=  '00';
11059         l_ra_ar_gt.source_data_key2            :=  '00';
11060         l_ra_ar_gt.source_data_key3            :=  '00';
11061         l_ra_ar_gt.source_data_key4            :=  '00';
11062         l_ra_ar_gt.source_data_key5            :=  '00';
11063   --}
11064 --        l_ra_ar_gt.se_gt_id                    := g_se_gt_id;
11065         l_ra_ar_gt.set_of_books_id             := p_ae_sys_rec.set_of_books_id;
11066         l_ra_ar_gt.sob_type                    := p_ae_sys_rec.sob_type;
11067         l_ra_ar_gt.activity_bucket                      := 'ADJ';
11068         insert_ra_ar_gt(p_ra_ar_gt  =>  l_ra_ar_gt,
11069 	                p_ar_base_dist_amts_gt => l_ar_base_dist_amts_gt,
11070 			p_ra_ar_amounts_gt => l_ra_ar_amounts_gt
11071 			);
11072       END IF;
11073   END  line_boundary;
11074 
11075   PROCEDURE tax_boundary
11076   (p_adj_rec            IN ar_adjustments%ROWTYPE,
11077    p_sum_line_tax_orig_amt  IN NUMBER,
11078    p_sum_line_tax_rem_amt   IN NUMBER,
11079    p_inv_currency       IN VARCHAR2,
11080    p_customer_trx_id    IN NUMBER,
11081    p_gt_id              IN VARCHAR2,
11082    p_ae_sys_rec         IN arp_acct_main.ae_sys_rec_type,
11083    P_exchange_rate      IN ra_customer_trx.exchange_rate%type)
11084   IS
11085     l_ra_ar_gt              ra_ar_gt%ROWTYPE;
11086     l_ar_base_dist_amts_gt  ar_base_dist_amts_gt%ROWTYPE;
11087     l_ra_ar_amounts_gt      ra_ar_amounts_gt%ROWTYPE;
11088   BEGIN
11089       IF NVL(p_adj_rec.tax_adjusted,0) <> 0 AND
11090          NVL(p_sum_line_tax_orig_amt,0)  = 0 AND
11091          NVL(p_sum_line_tax_rem_amt,0)   = 0
11092       THEN
11093         IF PG_DEBUG = 'Y' THEN
11094 	localdebug('   -8 Adjustment Boundary TAX condition met');
11095 	END IF;
11096         l_ra_ar_gt.GT_ID      :=  p_gt_id;
11097         l_ra_ar_gt.AMT        :=  p_adj_rec.tax_adjusted;
11098 
11099         /* anjprasa: bug 13375280 - get accounted amount directly from adj record
11100         l_ra_ar_gt.ACCTD_AMT  :=  currRound(p_adj_rec.tax_adjusted * P_exchange_rate,
11101                                                     p_ae_sys_rec.base_currency);*/
11102 
11103         l_ra_ar_gt.ACCTD_AMT  :=  p_adj_rec.acctd_amount ;
11104         l_ra_ar_gt.ACCOUNT_CLASS               :=  'TAX';
11105         l_ra_ar_gt.CCID_SECONDARY              :=  NULL; --Normally the auto accounting ccid
11106         l_ra_ar_gt.REF_CUST_TRX_LINE_GL_DIST_ID:=  -8;
11107         l_ra_ar_gt.REF_CUSTOMER_TRX_LINE_ID    :=  -8;
11108         l_ra_ar_gt.REF_CUSTOMER_TRX_ID         :=  p_customer_trx_id;
11109         l_ra_ar_gt.DIST_AMT                    :=  p_adj_rec.tax_adjusted;
11110 
11111         /* anjprasa: bug 13375280 - get accounted amount directly from adj record
11112         l_ra_ar_gt.DIST_ACCTD_AMT :=  currRound(p_adj_rec.tax_adjusted * P_exchange_rate,
11113                                                         p_ae_sys_rec.base_currency);*/
11114         l_ra_ar_gt.DIST_ACCTD_AMT :=  p_adj_rec.acctd_amount ;
11115         l_ra_ar_gt.TO_CURRENCY                 :=  p_inv_currency;
11116         l_ra_ar_gt.BASE_CURRENCY               :=  p_ae_sys_rec.base_currency;
11117         l_ra_ar_gt.tl_chrg_alloc_amt           :=  0;
11118         l_ra_ar_gt.tl_chrg_alloc_acctd_amt     :=  0;
11119         l_ra_ar_gt.tl_frt_alloc_amt            :=  0;
11120         l_ra_ar_gt.tl_frt_alloc_acctd_amt      :=  0;
11121         l_ra_ar_gt.tl_alloc_amt                :=  0;
11122         l_ra_ar_gt.tl_alloc_acctd_amt          :=  0;
11123         l_ra_ar_gt.tl_tax_alloc_amt            :=  p_adj_rec.tax_adjusted;
11124 
11125         /* anjprasa: bug 13375280 - get accounted amount directly from adj record
11126         l_ra_ar_gt.tl_tax_alloc_acctd_amt      := currRound(p_adj_rec.tax_adjusted * P_exchange_rate,
11127                                                                     p_ae_sys_rec.base_currency);*/
11128         l_ra_ar_gt.tl_tax_alloc_acctd_amt      := p_adj_rec.acctd_amount ;
11129         l_ar_base_dist_amts_gt.base_dist_amt        :=  p_adj_rec.tax_adjusted;
11130 
11131         /* anjprasa: bug 13375280 - get accounted amount directly from adj record
11132         l_ar_base_dist_amts_gt.base_dist_acctd_amt  :=  currRound(p_adj_rec.tax_adjusted * P_exchange_rate,
11133                                                                      p_ae_sys_rec.base_currency);*/
11134         l_ar_base_dist_amts_gt.base_dist_acctd_amt  :=  p_adj_rec.acctd_amount ;
11135         l_ra_ar_gt.source_type                 :=  'TAX';
11136         l_ra_ar_gt.source_table                :=  'ADJ';
11137         l_ra_ar_gt.source_id                   :=  p_adj_rec.adjustment_id;
11138         l_ra_ar_gt.gp_level                    :=  'D';
11139         l_ra_ar_gt.group_id                    :=  '00';
11140   --{HYUBPAGP
11141         l_ra_ar_gt.source_data_key1            :=  '00';
11142         l_ra_ar_gt.source_data_key2            :=  '00';
11143         l_ra_ar_gt.source_data_key3            :=  '00';
11144         l_ra_ar_gt.source_data_key4            :=  '00';
11145         l_ra_ar_gt.source_data_key5            :=  '00';
11146   --}
11147 --        l_ra_ar_gt.se_gt_id                    := g_se_gt_id;
11148         l_ra_ar_gt.set_of_books_id             := p_ae_sys_rec.set_of_books_id;
11149         l_ra_ar_gt.sob_type                    := p_ae_sys_rec.sob_type;
11150         l_ra_ar_gt.activity_bucket                      := 'ADJ';
11151         insert_ra_ar_gt(p_ra_ar_gt  =>  l_ra_ar_gt,
11152 	                p_ar_base_dist_amts_gt => l_ar_base_dist_amts_gt,
11153 			p_ra_ar_amounts_gt => l_ra_ar_amounts_gt
11154 			);
11155       END IF;
11156   END tax_boundary;
11157 /*
11158   Freight boundary procedure is not usefull at this time because frt adjustment
11159   is over revenue line and not freight lines
11160   Keep this procedure for future
11161 
11162   PROCEDURE freight_boundary
11163   (p_adj_rec            IN ar_adjustments%ROWTYPE,
11164    p_sum_line_frt_orig_amt  IN NUMBER,
11165    p_sum_line_frt_rem_amt   IN NUMBER,
11166    p_inv_currency       IN VARCHAR2,
11167    p_customer_trx_id    IN NUMBER,
11168    p_gt_id              IN NUMBER,
11169    p_ae_sys_rec         IN arp_acct_main.ae_sys_rec_type)
11170   IS
11171     l_ra_ar_gt              ra_ar_gt%ROWTYPE;
11172   BEGIN
11173       IF NVL(p_adj_rec.freight_adjusted,0) <> 0 AND
11174          NVL(p_sum_line_frt_orig_amt,0)  = 0 AND
11175          NVL(p_sum_line_frt_rem_amt,0)   = 0
11176       THEN
11177         localdebug('   -9 Adjustment Boundary FREIGHT condition met');
11178         l_ra_ar_gt.GT_ID      :=  p_gt_id;
11179         l_ra_ar_gt.AMT        :=  p_adj_rec.freight_adjusted;
11180         l_ra_ar_gt.ACCTD_AMT  :=  currRound(p_adj_rec.freight_adjusted,
11181                                                     p_ae_sys_rec.base_currency);
11182         l_ra_ar_gt.ACCOUNT_CLASS               :=  'FREIGHT';
11183         l_ra_ar_gt.CCID_SECONDARY              :=  NULL; --Normally the auto accounting ccid
11184         l_ra_ar_gt.REF_CUST_TRX_LINE_GL_DIST_ID:=  -9;
11185         l_ra_ar_gt.REF_CUSTOMER_TRX_LINE_ID    :=  -9;
11186         l_ra_ar_gt.REF_CUSTOMER_TRX_ID         :=  p_customer_trx_id;
11187         l_ra_ar_gt.DIST_AMT  :=  p_adj_rec.freight_adjusted;
11188         l_ra_ar_gt.DIST_ACCTD_AMT :=  currRound(p_adj_rec.tax_adjusted,
11189                                                         p_ae_sys_rec.base_currency);
11190         l_ra_ar_gt.TO_CURRENCY    :=  p_inv_currency;
11191         l_ra_ar_gt.BASE_CURRENCY  :=  p_ae_sys_rec.base_currency;
11192         l_ra_ar_gt.tl_chrg_alloc_amt          :=  0;
11193         l_ra_ar_gt.tl_chrg_alloc_acctd_amt    :=  0;
11194         l_ra_ar_gt.tl_tax_alloc_amt          := 0;
11195         l_ra_ar_gt.tl_tax_alloc_acctd_amt    := 0;
11196         l_ra_ar_gt.tl_alloc_amt          := 0;
11197         l_ra_ar_gt.tl_alloc_acctd_amt    := 0;
11198         l_ra_ar_gt.tl_frt_alloc_amt          :=  p_adj_rec.freight_adjusted;
11199         l_ra_ar_gt.tl_frt_alloc_acctd_amt    := currRound(p_adj_rec.freight_adjusted,
11200                                                               p_ae_sys_rec.base_currency);
11201         l_ra_ar_gt.base_dist_amt           :=  p_adj_rec.freight_adjusted;
11202         l_ra_ar_gt.base_dist_acctd_amt     :=  currRound(p_adj_rec.freight_adjusted,
11203                                                                      p_ae_sys_rec.base_currency);
11204         l_ra_ar_gt.source_type                 :=  'FREIGHT';
11205         l_ra_ar_gt.source_table                :=  'ADJ';
11206         l_ra_ar_gt.source_id                   :=  p_adj_rec.adjustment_id;
11207         l_ra_ar_gt.gp_level                    :=  'D';
11208         l_ra_ar_gt.group_id                    :=  '00';
11209         insert_ra_ar_gt(p_ra_ar_gt  =>  l_ra_ar_gt);
11210       END IF;
11211   END freight_boundary;
11212 */
11213 BEGIN
11214   IF PG_DEBUG = 'Y' THEN
11215   localdebug('arp_det_dist_pkg.adjustment_detemination()+');
11216   END IF;
11217 
11218   IF p_pay_adj <> 'ADJ' THEN
11219      RAISE not_an_adjustment;
11220   END IF;
11221 
11222   OPEN get_sum_per_line_type;
11223   FETCH get_sum_per_line_type BULK COLLECT INTO
11224              l_sum_line_rem_amt           ,
11225              l_sum_line_rem_acctd_amt     ,
11226              l_sum_line_orig_amt          ,
11227              l_sum_line_orig_acctd_amt    ,
11228              l_sum_line_chrg_rem_amt      ,
11229              l_sum_line_chrg_rem_acctd_amt,
11230              --
11231              l_sum_line_frt_rem_amt       ,
11232              l_sum_line_frt_rem_acctd_amt ,
11233              l_sum_line_frt_orig_amt      ,
11234              l_sum_line_frt_orig_acctd_amt,
11235              --
11236              l_sum_line_tax_rem_amt       ,
11237              l_sum_line_tax_rem_acctd_amt ,
11238              l_sum_line_tax_orig_amt      ,
11239              l_sum_line_tax_orig_acctd_amt,
11240              --
11241              l_line_type;
11242   CLOSE get_sum_per_line_type;
11243 /*
11244   OPEN get_sum_per_line_type;
11245   FETCH get_sum_per_line_type BULK COLLECT INTO
11246              l_sum_line_rem_amt           ,
11247              l_sum_line_rem_acctd_amt     ,
11248              --
11249              l_sum_line_chrg_rem_amt      ,
11250              l_sum_line_chrg_rem_acctd_amt,
11251              --
11252              l_sum_line_frt_rem_amt       ,
11253              l_sum_line_frt_rem_acctd_amt ,
11254              --
11255              l_sum_line_tax_rem_amt       ,
11256              l_sum_line_tax_rem_acctd_amt ,
11257              --
11258              l_line_type;
11259   CLOSE get_sum_per_line_type;
11260 */
11261   IF l_line_type.COUNT = 0 THEN
11262      RAISE invoice_has_no_lines;
11263   END IF;
11264   /*Bug 7698161 Added new parameter in boundary condition for exchange rate
11265     passed value for it in calls for rutines
11266     line_boundary
11267     tax_boundary
11268     Used exchange rate to get accounted amount
11269   */
11270   l_exchange_rate := NULL;
11271   OPEN cu_inv_cur;
11272     FETCH cu_inv_cur INTO l_inv_currency,l_exchange_rate;
11273   CLOSE cu_inv_cur;
11274   l_exchange_rate := nvl(l_exchange_rate,1);
11275 
11276   FOR i IN l_line_type.FIRST .. l_line_type.LAST LOOP
11277     IF PG_DEBUG = 'Y' THEN
11278     localdebug('  Current line type :'||l_line_type(i));
11279     END IF;
11280       IF     l_line_type(i) IN ('LINE','CB') THEN
11281         line_boundary  (p_adj_rec            => p_adj_rec,
11282                         p_sum_line_orig_amt  => l_sum_line_orig_amt(i),
11283                         p_sum_line_rem_amt   => l_sum_line_rem_amt(i),
11284                         p_inv_currency       => l_inv_currency,
11285                         p_customer_trx_id    => p_customer_trx_id,
11286                         p_gt_id              => p_gt_id,
11287                         p_ae_sys_rec         => p_ae_sys_rec,
11288 				p_exchange_rate      => l_exchange_rate);
11289         l_line_boundary_done := 'Y';
11290         l_freight_boundary_done  := 'Y';
11291         l_chrg_boundary_done := 'Y';
11292       ELSIF  l_line_type(i) = 'TAX' THEN
11293 
11294         tax_boundary   (p_adj_rec            => p_adj_rec,
11295                         p_sum_line_tax_orig_amt  => l_sum_line_tax_orig_amt(i),
11296                         p_sum_line_tax_rem_amt   => l_sum_line_tax_rem_amt(i),
11297                         p_inv_currency       => l_inv_currency,
11298                         p_customer_trx_id    => p_customer_trx_id,
11299                         p_gt_id              => p_gt_id,
11300                         p_ae_sys_rec         => p_ae_sys_rec,
11301 				p_exchange_rate      => l_exchange_rate);
11302         l_tax_boundary_done := 'Y';
11303 
11304       /* Freight adj boundary part on revenue line because frt adj are tied to
11305          Rev lines
11306       ELSIF  l_line_type(i) = 'FREIGHT' THEN
11307 
11308         freight_boundary(p_adj_rec            => p_adj_rec,
11309                         p_sum_line_frt_orig_amt  => l_sum_line_frt_orig_amt(i),
11310                         p_sum_line_frt_rem_amt   => l_sum_line_frt_rem_amt(i),
11311                         p_inv_currency       => l_inv_currency,
11312                         p_customer_trx_id    => p_customer_trx_id,
11313                         p_gt_id              => p_gt_id,
11314                         p_ae_sys_rec         => p_ae_sys_rec);
11315         l_freight_boundary_done := 'Y';
11316         */
11317      END IF;
11318   END LOOP;
11319 
11320   IF  l_line_boundary_done <> 'Y' THEN
11321         line_boundary  (p_adj_rec            => p_adj_rec,
11322                         p_sum_line_orig_amt  => 0,
11323                         p_sum_line_rem_amt   => 0,
11324                         p_inv_currency       => l_inv_currency,
11325                         p_customer_trx_id    => p_customer_trx_id,
11326                         p_gt_id              => p_gt_id,
11327                         p_ae_sys_rec         => p_ae_sys_rec,
11328 				p_exchange_rate      => l_exchange_rate);
11329         l_line_boundary_done    := 'Y';
11330         l_freight_boundary_done := 'Y';
11331         l_chrg_boundary_done    := 'Y';
11332   END IF;
11333 
11334 /*
11335   IF l_freight_boundary_done <> 'Y' THEN
11336         freight_boundary(p_adj_rec           => p_adj_rec,
11337                         p_sum_line_frt_orig_amt  => 0,
11338                         p_sum_line_frt_rem_amt   => 0,
11339                         p_inv_currency       => l_inv_currency,
11340                         p_customer_trx_id    => p_customer_trx_id,
11341                         p_gt_id              => p_gt_id,
11342                         p_ae_sys_rec         => p_ae_sys_rec);
11343         l_freight_boundary_done := 'Y';
11344   END IF;
11345 */
11346   IF  l_tax_boundary_done <> 'Y' THEN
11347         tax_boundary   (p_adj_rec            => p_adj_rec,
11348                         p_sum_line_tax_orig_amt  => 0,
11349                         p_sum_line_tax_rem_amt   => 0,
11350                         p_inv_currency       => l_inv_currency,
11351                         p_customer_trx_id    => p_customer_trx_id,
11352                         p_gt_id              => p_gt_id,
11353                         p_ae_sys_rec         => p_ae_sys_rec,
11354 				p_exchange_rate      => l_exchange_rate);
11355         l_tax_boundary_done := 'Y';
11356   END IF;
11357 
11358   IF PG_DEBUG = 'Y' THEN
11359   localdebug('arp_det_dist_pkg.adjustment_detemination()-');
11360   END IF;
11361 EXCEPTION
11362   WHEN not_an_adjustment  THEN
11363     IF PG_DEBUG = 'Y' THEN
11364     localdebug('  EXCEPTION not_an_adjustment IN adjustment_detemination:'||'
11365 '||                    '    p_customer_trx_id : '||p_customer_trx_id ||'
11366 '||                    '    p_pay_adj         : '||p_pay_adj);
11367 
11368 END IF;
11369   WHEN invoice_has_no_lines THEN
11370     IF PG_DEBUG = 'Y' THEN
11371     localdebug('  EXCEPTION invoice_has_no_lines IN adjustment_detemination:'||'
11372 '||                    '    p_customer_trx_id : '||p_customer_trx_id );
11373 
11374 END IF;
11375 --    RAISE;
11376 END adjustment_detemination;
11377 
11378 
11379 
11380 
11381 PROCEDURE update_group_line
11382 (p_gt_id           IN VARCHAR2,
11383  p_customer_trx_id IN NUMBER,
11384  p_ae_sys_rec      IN arp_acct_main.ae_sys_rec_type)
11385 IS
11386   CURSOR c_read_for_gline IS
11387     SELECT /*+ leading(B) INDEX(B ra_ar_n1) INDEX(D RA_AR_AMOUNTS_GT_N1)*/
11388            b.group_id     groupe,
11389          -- ADJ AND APP
11390            --Base
11391            d.base_pro_amt,
11392            d.base_pro_acctd_amt,
11393            d.base_frt_pro_amt,
11394            d.base_frt_pro_acctd_amt,
11395            d.base_tax_pro_amt,
11396            d.base_tax_pro_acctd_amt,
11397            d.BASE_CHRG_PRO_AMT,
11398            d.BASE_CHRG_PRO_ACCTD_AMT,
11399            --Element
11400            d.elmt_pro_amt,
11401            d.elmt_pro_acctd_amt,
11402            d.elmt_frt_pro_amt,
11403            d.elmt_frt_pro_acctd_amt,
11404            d.elmt_tax_pro_amt,
11405            d.elmt_tax_pro_acctd_amt,
11406            d.ELMT_CHRG_PRO_AMT,
11407            d.ELMT_CHRG_PRO_ACCTD_AMT,
11408            --Amount to be allocated
11409            d.buc_alloc_amt,
11410            d.buc_alloc_acctd_amt,
11411            d.buc_frt_alloc_amt,
11412            d.buc_frt_alloc_acctd_amt,
11413            d.buc_tax_alloc_amt,
11414            d.buc_tax_alloc_acctd_amt,
11415            d.buc_chrg_alloc_amt,
11416            d.buc_chrg_alloc_acctd_amt,
11417          -- ED
11418            --Base
11419            d.base_ed_pro_amt,
11420            d.base_ed_pro_acctd_amt,
11421            d.base_ed_frt_pro_amt,
11422            d.base_ed_frt_pro_acctd_amt,
11423            d.base_ed_tax_pro_amt,
11424            d.base_ed_tax_pro_acctd_amt,
11425            d.BASE_ed_CHRG_PRO_AMT,
11426            d.BASE_ed_CHRG_PRO_ACCTD_AMT,
11427            --Element
11428            d.elmt_ed_pro_amt,
11429            d.elmt_ed_pro_acctd_amt,
11430            d.elmt_ed_frt_pro_amt,
11431            d.elmt_ed_frt_pro_acctd_amt,
11432            d.elmt_ed_tax_pro_amt,
11433            d.elmt_ed_tax_pro_acctd_amt,
11434            d.ELMT_ed_CHRG_PRO_AMT,
11435            d.ELMT_ed_CHRG_PRO_ACCTD_AMT,
11436            --Amount to be allocated
11437            d.buc_ed_alloc_amt,
11438            d.buc_ed_alloc_acctd_amt,
11439            d.buc_ed_frt_alloc_amt,
11440            d.buc_ed_frt_alloc_acctd_amt,
11441            d.buc_ed_tax_alloc_amt,
11442            d.buc_ed_tax_alloc_acctd_amt,
11443            d.buc_ed_chrg_alloc_amt,
11444            d.buc_ed_chrg_alloc_acctd_amt,
11445          -- UNED
11446            --Base
11447            d.base_uned_pro_amt,
11448            d.base_uned_pro_acctd_amt,
11449            d.base_uned_frt_pro_amt,
11450            d.base_uned_frt_pro_acctd_amt,
11451            d.base_uned_tax_pro_amt,
11452            d.base_uned_tax_pro_acctd_amt,
11453            d.BASE_uned_CHRG_PRO_AMT,
11454            d.BASE_uned_CHRG_PRO_ACCTD_AMT,
11455            --Element
11456            d.elmt_uned_pro_amt,
11457            d.elmt_uned_pro_acctd_amt,
11458            d.elmt_uned_frt_pro_amt,
11459            d.elmt_uned_frt_pro_acctd_amt,
11460            d.elmt_uned_tax_pro_amt,
11461            d.elmt_uned_tax_pro_acctd_amt,
11462            d.ELMT_uned_CHRG_PRO_AMT,
11463            d.ELMT_uned_CHRG_PRO_ACCTD_AMT,
11464            --Amount to be allocated
11465            d.buc_uned_alloc_amt,
11466            d.buc_uned_alloc_acctd_amt,
11467            d.buc_uned_frt_alloc_amt,
11468            d.buc_uned_frt_alloc_acctd_amt,
11469            d.buc_uned_tax_alloc_amt,
11470            d.buc_uned_tax_alloc_acctd_amt,
11471            d.buc_uned_chrg_alloc_amt,
11472            d.buc_uned_chrg_alloc_acctd_amt,
11473          ----
11474            --Currencies
11475            b.BASE_CURRENCY  ,
11476            b.TO_CURRENCY    ,
11477            b.FROM_CURRENCY  ,
11478            -- Rowid
11479            b.rowid,
11480 	   b.line_type
11481      FROM  RA_AR_GT b,
11482            RA_AR_AMOUNTS_GT d
11483     WHERE b.gt_id               = p_gt_id
11484       AND b.ref_customer_trx_id = p_customer_trx_id
11485       AND b.gp_level            = 'GPL'
11486       AND d.gt_id               = b.gt_id
11487       AND d.base_rec_rowid      = b.rowid
11488       AND b.SET_OF_BOOKS_ID     = p_ae_sys_rec.set_of_books_id
11489       AND (b.SOB_TYPE            = p_ae_sys_rec.sob_type OR
11490             (b.SOB_TYPE IS NULL AND p_ae_sys_rec.sob_type IS NULL))
11491     ORDER BY b.group_id||'-'||
11492              b.line_type||'-'||
11493 	     b.ref_customer_trx_line_id;
11494 
11495   l_tab  pro_res_tbl_type;
11496 
11497   l_group_tbl            group_tbl_type;
11498   l_group                VARCHAR2(60)    := 'NOGROUP';
11499 
11500   -- ADJ and APP
11501   l_run_amt              NUMBER          := 0;
11502   l_run_alloc            NUMBER          := 0;
11503   l_run_acctd_amt        NUMBER          := 0;
11504   l_run_acctd_alloc      NUMBER          := 0;
11505   l_alloc                NUMBER          := 0;
11506   l_acctd_alloc          NUMBER          := 0;
11507 
11508   l_run_chrg_amt         NUMBER          := 0;
11509   l_run_chrg_alloc       NUMBER          := 0;
11510   l_run_chrg_acctd_amt   NUMBER          := 0;
11511   l_run_chrg_acctd_alloc NUMBER          := 0;
11512   l_chrg_alloc           NUMBER          := 0;
11513   l_chrg_acctd_alloc     NUMBER          := 0;
11514 
11515   l_run_frt_amt         NUMBER          := 0;
11516   l_run_frt_alloc       NUMBER          := 0;
11517   l_run_frt_acctd_amt   NUMBER          := 0;
11518   l_run_frt_acctd_alloc NUMBER          := 0;
11519   l_frt_alloc           NUMBER          := 0;
11520   l_frt_acctd_alloc     NUMBER          := 0;
11521 
11522   l_run_tax_amt         NUMBER          := 0;
11523   l_run_tax_alloc       NUMBER          := 0;
11524   l_run_tax_acctd_amt   NUMBER          := 0;
11525   l_run_tax_acctd_alloc NUMBER          := 0;
11526   l_tax_alloc           NUMBER          := 0;
11527   l_tax_acctd_alloc     NUMBER          := 0;
11528 
11529   -- ED
11530   l_run_ed_amt              NUMBER          := 0;
11531   l_run_ed_alloc            NUMBER          := 0;
11532   l_run_ed_acctd_amt        NUMBER          := 0;
11533   l_run_ed_acctd_alloc      NUMBER          := 0;
11534   l_ed_alloc                NUMBER          := 0;
11535   l_ed_acctd_alloc          NUMBER          := 0;
11536 
11537   l_run_ed_chrg_amt         NUMBER          := 0;
11538   l_run_ed_chrg_alloc       NUMBER          := 0;
11539   l_run_ed_chrg_acctd_amt   NUMBER          := 0;
11540   l_run_ed_chrg_acctd_alloc NUMBER          := 0;
11541   l_ed_chrg_alloc           NUMBER          := 0;
11542   l_ed_chrg_acctd_alloc     NUMBER          := 0;
11543 
11544   l_run_ed_frt_amt         NUMBER          := 0;
11545   l_run_ed_frt_alloc       NUMBER          := 0;
11546   l_run_ed_frt_acctd_amt   NUMBER          := 0;
11547   l_run_ed_frt_acctd_alloc NUMBER          := 0;
11548   l_ed_frt_alloc           NUMBER          := 0;
11549   l_ed_frt_acctd_alloc     NUMBER          := 0;
11550 
11551   l_run_ed_tax_amt         NUMBER          := 0;
11552   l_run_ed_tax_alloc       NUMBER          := 0;
11553   l_run_ed_tax_acctd_amt   NUMBER          := 0;
11554   l_run_ed_tax_acctd_alloc NUMBER          := 0;
11555   l_ed_tax_alloc           NUMBER          := 0;
11556   l_ed_tax_acctd_alloc     NUMBER          := 0;
11557 
11558   -- UNED
11559   l_run_uned_amt              NUMBER          := 0;
11560   l_run_uned_alloc            NUMBER          := 0;
11561   l_run_uned_acctd_amt        NUMBER          := 0;
11562   l_run_uned_acctd_alloc      NUMBER          := 0;
11563   l_uned_alloc                NUMBER          := 0;
11564   l_uned_acctd_alloc          NUMBER          := 0;
11565 
11566   l_run_uned_chrg_amt         NUMBER          := 0;
11567   l_run_uned_chrg_alloc       NUMBER          := 0;
11568   l_run_uned_chrg_acctd_amt   NUMBER          := 0;
11569   l_run_uned_chrg_acctd_alloc NUMBER          := 0;
11570   l_uned_chrg_alloc           NUMBER          := 0;
11571   l_uned_chrg_acctd_alloc     NUMBER          := 0;
11572 
11573   l_run_uned_frt_amt         NUMBER          := 0;
11574   l_run_uned_frt_alloc       NUMBER          := 0;
11575   l_run_uned_frt_acctd_amt   NUMBER          := 0;
11576   l_run_uned_frt_acctd_alloc NUMBER          := 0;
11577   l_uned_frt_alloc           NUMBER          := 0;
11578   l_uned_frt_acctd_alloc     NUMBER          := 0;
11579 
11580   l_run_uned_tax_amt         NUMBER          := 0;
11581   l_run_uned_tax_alloc       NUMBER          := 0;
11582   l_run_uned_tax_acctd_amt   NUMBER          := 0;
11583   l_run_uned_tax_acctd_alloc NUMBER          := 0;
11584   l_uned_tax_alloc           NUMBER          := 0;
11585   l_uned_tax_acctd_alloc     NUMBER          := 0;
11586 
11587   l_exist                BOOLEAN;
11588   l_last_fetch           BOOLEAN;
11589 
11590 BEGIN
11591   IF PG_DEBUG = 'Y' THEN
11592   localdebug('arp_det_dist_pkg.update_group_line()+');
11593   END IF;
11594 
11595   OPEN  c_read_for_gline;
11596   LOOP
11597     FETCH c_read_for_gline BULK COLLECT INTO
11598      l_tab.GROUPE                  ,
11599    -- ADJ and APP
11600      -- Base
11601      l_tab.base_pro_amt       ,
11602      l_tab.base_pro_acctd_amt ,
11603      l_tab.base_frt_pro_amt       ,
11604      l_tab.base_frt_pro_acctd_amt ,
11605      l_tab.base_tax_pro_amt       ,
11606      l_tab.base_tax_pro_acctd_amt ,
11607      l_tab.BASE_CHRG_PRO_AMT       ,
11608      l_tab.BASE_CHRG_PRO_ACCTD_AMT ,
11609      -- Element numerator
11610      l_tab.elmt_pro_amt       ,
11611      l_tab.elmt_pro_acctd_amt ,
11612      l_tab.elmt_frt_pro_amt       ,
11613      l_tab.elmt_frt_pro_acctd_amt ,
11614      l_tab.elmt_tax_pro_amt       ,
11615      l_tab.elmt_tax_pro_acctd_amt ,
11616      l_tab.ELMT_CHRG_PRO_AMT       ,
11617      l_tab.ELMT_CHRG_PRO_ACCTD_AMT ,
11618      -- Amount to be allocated
11619      l_tab.buc_alloc_amt      ,
11620      l_tab.buc_alloc_acctd_amt,
11621      l_tab.buc_frt_alloc_amt      ,
11622      l_tab.buc_frt_alloc_acctd_amt,
11623      l_tab.buc_tax_alloc_amt      ,
11624      l_tab.buc_tax_alloc_acctd_amt,
11625      l_tab.buc_chrg_alloc_amt      ,
11626      l_tab.buc_chrg_alloc_acctd_amt,
11627    -- ED
11628      -- Base
11629      l_tab.base_ed_pro_amt       ,
11630      l_tab.base_ed_pro_acctd_amt ,
11631      l_tab.base_ed_frt_pro_amt       ,
11632      l_tab.base_ed_frt_pro_acctd_amt ,
11633      l_tab.base_ed_tax_pro_amt       ,
11634      l_tab.base_ed_tax_pro_acctd_amt ,
11635      l_tab.BASE_ed_CHRG_PRO_AMT       ,
11636      l_tab.BASE_ed_CHRG_PRO_ACCTD_AMT ,
11637      -- Element numerator
11638      l_tab.elmt_ed_pro_amt       ,
11639      l_tab.elmt_ed_pro_acctd_amt ,
11640      l_tab.elmt_ed_frt_pro_amt       ,
11641      l_tab.elmt_ed_frt_pro_acctd_amt ,
11642      l_tab.elmt_ed_tax_pro_amt       ,
11643      l_tab.elmt_ed_tax_pro_acctd_amt ,
11644      l_tab.ELMT_ed_CHRG_PRO_AMT       ,
11645      l_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT ,
11646      -- Amount to be allocated
11647      l_tab.buc_ed_alloc_amt      ,
11648      l_tab.buc_ed_alloc_acctd_amt,
11649      l_tab.buc_ed_frt_alloc_amt      ,
11650      l_tab.buc_ed_frt_alloc_acctd_amt,
11651      l_tab.buc_ed_tax_alloc_amt      ,
11652      l_tab.buc_ed_tax_alloc_acctd_amt,
11653      l_tab.buc_ed_chrg_alloc_amt      ,
11654      l_tab.buc_ed_chrg_alloc_acctd_amt,
11655    -- UNED
11656      -- Base
11657      l_tab.base_uned_pro_amt       ,
11658      l_tab.base_uned_pro_acctd_amt ,
11659      l_tab.base_uned_frt_pro_amt       ,
11660      l_tab.base_uned_frt_pro_acctd_amt ,
11661      l_tab.base_uned_tax_pro_amt       ,
11662      l_tab.base_uned_tax_pro_acctd_amt ,
11663      l_tab.BASE_uned_CHRG_PRO_AMT       ,
11664      l_tab.BASE_uned_CHRG_PRO_ACCTD_AMT ,
11665      -- Element numerator
11666      l_tab.elmt_uned_pro_amt       ,
11667      l_tab.elmt_uned_pro_acctd_amt ,
11668      l_tab.elmt_uned_frt_pro_amt       ,
11669      l_tab.elmt_uned_frt_pro_acctd_amt ,
11670      l_tab.elmt_uned_tax_pro_amt       ,
11671      l_tab.elmt_uned_tax_pro_acctd_amt ,
11672      l_tab.ELMT_uned_CHRG_PRO_AMT       ,
11673      l_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT ,
11674      -- Amount to be allocated
11675      l_tab.buc_uned_alloc_amt      ,
11676      l_tab.buc_uned_alloc_acctd_amt,
11677      l_tab.buc_uned_frt_alloc_amt      ,
11678      l_tab.buc_uned_frt_alloc_acctd_amt,
11679      l_tab.buc_uned_tax_alloc_amt      ,
11680      l_tab.buc_uned_tax_alloc_acctd_amt,
11681      l_tab.buc_uned_chrg_alloc_amt      ,
11682      l_tab.buc_uned_chrg_alloc_acctd_amt,
11683      --
11684      l_tab.BASE_CURRENCY  ,
11685      l_tab.TO_CURRENCY    ,
11686      l_tab.FROM_CURRENCY  ,
11687      --
11688      l_tab.ROWID_ID,
11689      l_tab.line_type   LIMIT g_bulk_fetch_rows;
11690 
11691      IF c_read_for_gline%NOTFOUND THEN
11692           l_last_fetch := TRUE;
11693      END IF;
11694 
11695      IF (l_tab.ROWID_ID.COUNT = 0) AND (l_last_fetch) THEN
11696        IF PG_DEBUG = 'Y' THEN
11697        localdebug('COUNT = 0 and LAST FETCH ');
11698        END IF;
11699        EXIT;
11700      END IF;
11701 
11702      plsql_proration( x_tab               => l_tab,
11703                    x_group_tbl            => l_group_tbl,
11704                    -- ADJ and APP
11705                    x_run_amt              => l_run_amt,
11706                    x_run_alloc            => l_run_alloc,
11707                    x_run_acctd_amt        => l_run_acctd_amt,
11708                    x_run_acctd_alloc      => l_run_acctd_alloc,
11709                    x_run_frt_amt         => l_run_frt_amt,
11710                    x_run_frt_alloc       => l_run_frt_alloc,
11711                    x_run_frt_acctd_amt   => l_run_frt_acctd_amt,
11712                    x_run_frt_acctd_alloc => l_run_frt_acctd_alloc,
11713                    x_run_tax_amt         => l_run_tax_amt,
11714                    x_run_tax_alloc       => l_run_tax_alloc,
11715                    x_run_tax_acctd_amt   => l_run_tax_acctd_amt,
11716                    x_run_tax_acctd_alloc => l_run_tax_acctd_alloc,
11717                    x_run_chrg_amt         => l_run_chrg_amt,
11718                    x_run_chrg_alloc       => l_run_chrg_alloc,
11719                    x_run_chrg_acctd_amt   => l_run_chrg_acctd_amt,
11720                    x_run_chrg_acctd_alloc => l_run_chrg_acctd_alloc,
11721                    -- ED
11722                    x_run_ed_amt              => l_run_ed_amt,
11723                    x_run_ed_alloc            => l_run_ed_alloc,
11724                    x_run_ed_acctd_amt        => l_run_ed_acctd_amt,
11725                    x_run_ed_acctd_alloc      => l_run_ed_acctd_alloc,
11726                    x_run_ed_frt_amt         => l_run_ed_frt_amt,
11727                    x_run_ed_frt_alloc       => l_run_ed_frt_alloc,
11728                    x_run_ed_frt_acctd_amt   => l_run_ed_frt_acctd_amt,
11729                    x_run_ed_frt_acctd_alloc => l_run_ed_frt_acctd_alloc,
11730                    x_run_ed_tax_amt         => l_run_ed_tax_amt,
11731                    x_run_ed_tax_alloc       => l_run_ed_tax_alloc,
11732                    x_run_ed_tax_acctd_amt   => l_run_ed_tax_acctd_amt,
11733                    x_run_ed_tax_acctd_alloc => l_run_ed_tax_acctd_alloc,
11734                    x_run_ed_chrg_amt         => l_run_ed_chrg_amt,
11735                    x_run_ed_chrg_alloc       => l_run_ed_chrg_alloc,
11736                    x_run_ed_chrg_acctd_amt   => l_run_ed_chrg_acctd_amt,
11737                    x_run_ed_chrg_acctd_alloc => l_run_ed_chrg_acctd_alloc,
11738                    -- UNED
11739                    x_run_uned_amt              => l_run_uned_amt,
11740                    x_run_uned_alloc            => l_run_uned_alloc,
11741                    x_run_uned_acctd_amt        => l_run_uned_acctd_amt,
11742                    x_run_uned_acctd_alloc      => l_run_uned_acctd_alloc,
11743                    x_run_uned_frt_amt         => l_run_uned_frt_amt,
11744                    x_run_uned_frt_alloc       => l_run_uned_frt_alloc,
11745                    x_run_uned_frt_acctd_amt   => l_run_uned_frt_acctd_amt,
11746                    x_run_uned_frt_acctd_alloc => l_run_uned_frt_acctd_alloc,
11747                    x_run_uned_tax_amt         => l_run_uned_tax_amt,
11748                    x_run_uned_tax_alloc       => l_run_uned_tax_alloc,
11749                    x_run_uned_tax_acctd_amt   => l_run_uned_tax_acctd_amt,
11750                    x_run_uned_tax_acctd_alloc => l_run_uned_tax_acctd_alloc,
11751                    x_run_uned_chrg_amt         => l_run_uned_chrg_amt,
11752                    x_run_uned_chrg_alloc       => l_run_uned_chrg_alloc,
11753                    x_run_uned_chrg_acctd_amt   => l_run_uned_chrg_acctd_amt,
11754                    x_run_uned_chrg_acctd_alloc => l_run_uned_chrg_acctd_alloc);
11755 
11756     IF PG_DEBUG = 'Y' THEN
11757     localdebug('update ra_ar_gt trx_line_all ');
11758     END IF;
11759     FORALL i IN l_tab.ROWID_ID.FIRST .. l_tab.ROWID_ID.LAST
11760       UPDATE ra_ar_gt
11761       SET
11762           -- ADJ and APP
11763            tl_alloc_amt         = l_tab.tl_alloc_amt(i),
11764            tl_alloc_acctd_amt   = l_tab.tl_alloc_acctd_amt(i),
11765            tl_frt_alloc_amt         = l_tab.tl_frt_alloc_amt(i),
11766            tl_frt_alloc_acctd_amt   = l_tab.tl_frt_alloc_acctd_amt(i),
11767            tl_tax_alloc_amt         = l_tab.tl_tax_alloc_amt(i),
11768            tl_tax_alloc_acctd_amt   = l_tab.tl_tax_alloc_acctd_amt(i),
11769            tl_chrg_alloc_amt    = l_tab.tl_chrg_alloc_amt(i),
11770            tl_chrg_alloc_acctd_amt = l_tab.tl_chrg_alloc_acctd_amt(i),
11771           -- ED
11772            tl_ed_alloc_amt         = l_tab.tl_ed_alloc_amt(i),
11773            tl_ed_alloc_acctd_amt   = l_tab.tl_ed_alloc_acctd_amt(i),
11774            tl_ed_frt_alloc_amt         = l_tab.tl_ed_frt_alloc_amt(i),
11775            tl_ed_frt_alloc_acctd_amt   = l_tab.tl_ed_frt_alloc_acctd_amt(i),
11776            tl_ed_tax_alloc_amt         = l_tab.tl_ed_tax_alloc_amt(i),
11777            tl_ed_tax_alloc_acctd_amt   = l_tab.tl_ed_tax_alloc_acctd_amt(i),
11778            tl_ed_chrg_alloc_amt    = l_tab.tl_ed_chrg_alloc_amt(i),
11779            tl_ed_chrg_alloc_acctd_amt = l_tab.tl_ed_chrg_alloc_acctd_amt(i),
11780           -- UNED
11781            tl_uned_alloc_amt         = l_tab.tl_uned_alloc_amt(i),
11782            tl_uned_alloc_acctd_amt   = l_tab.tl_uned_alloc_acctd_amt(i),
11783            tl_uned_frt_alloc_amt         = l_tab.tl_uned_frt_alloc_amt(i),
11784            tl_uned_frt_alloc_acctd_amt   = l_tab.tl_uned_frt_alloc_acctd_amt(i),
11785            tl_uned_tax_alloc_amt         = l_tab.tl_uned_tax_alloc_amt(i),
11786            tl_uned_tax_alloc_acctd_amt   = l_tab.tl_uned_tax_alloc_acctd_amt(i),
11787            tl_uned_chrg_alloc_amt    = l_tab.tl_uned_chrg_alloc_amt(i),
11788            tl_uned_chrg_alloc_acctd_amt = l_tab.tl_uned_chrg_alloc_acctd_amt(i)
11789       WHERE rowid                     = l_tab.ROWID_ID(i);
11790 
11791   END LOOP;
11792   CLOSE c_read_for_gline;
11793 
11794   IF PG_DEBUG = 'Y' THEN
11795   localdebug('arp_det_dist_pkg.update_group_line()-');
11796   END IF;
11797 END update_group_line;
11798 
11799 
11800 PROCEDURE get_invoice_line_info_per_grp
11801 (p_gt_id               IN VARCHAR2,
11802  p_customer_trx_id     IN NUMBER,
11803 -- p_group_id            IN VARCHAR2,
11804   --{HYUBPAGP
11805  p_source_data_key1    IN VARCHAR2,
11806  p_source_data_key2    IN VARCHAR2,
11807  p_source_data_key3    IN VARCHAR2,
11808  p_source_data_key4    IN VARCHAR2,
11809  p_source_data_key5    IN VARCHAR2,
11810   --}
11811  p_ae_sys_rec          IN arp_acct_main.ae_sys_rec_type)
11812 IS
11813   l_rows NUMBER;
11814 BEGIN
11815   IF PG_DEBUG = 'Y' THEN
11816   localdebug('arp_det_dist_pkg.get_invoice_line_info_per_grp()+');
11817   localdebug('   p_customer_trx_id :'||p_customer_trx_id);
11818   localdebug('   p_source_data_key1  :'||p_source_data_key1);
11819   localdebug('   p_source_data_key2  :'||p_source_data_key2);
11820   localdebug('   p_source_data_key3  :'||p_source_data_key3);
11821   localdebug('   p_source_data_key4  :'||p_source_data_key4);
11822   localdebug('   p_source_data_key5  :'||p_source_data_key5);
11823   localdebug('   p_gt_id           :'||p_gt_id);
11824   END IF;
11825 
11826   INSERT INTO RA_AR_GT
11827       ( GT_ID                     ,
11828         BASE_CURRENCY             ,
11829         TO_CURRENCY               ,
11830         REF_CUSTOMER_TRX_ID       ,
11831         REF_CUSTOMER_TRX_LINE_ID  ,
11832         --
11833         DUE_ORIG_AMT              ,
11834         DUE_ORIG_ACCTD_AMT        ,
11835 --{line of type CHRG
11836         CHRG_ORIG_AMT           ,
11837         CHRG_ORIG_ACCTD_AMT     ,
11838 --}
11839         --
11840         FRT_ORIG_AMT              ,
11841         FRT_ORIG_ACCTD_AMT        ,
11842         TAX_ORIG_AMT              ,
11843         TAX_ORIG_ACCTD_AMT        ,
11844         --
11845         DUE_REM_AMT               ,
11846         DUE_REM_ACCTD_AMT         ,
11847         CHRG_REM_AMT              ,
11848         CHRG_REM_ACCTD_AMT        ,
11849         --
11850           FRT_REM_AMT               ,
11851           FRT_REM_ACCTD_AMT         ,
11852           TAX_REM_AMT               ,
11853           TAX_REM_ACCTD_AMT         ,
11854           --
11855 --{line of type CHRG
11856           CHRG_ADJ_REM_AMT           ,
11857           CHRG_ADJ_REM_ACCTD_AMT     ,
11858 --}
11859           FRT_ADJ_REM_AMT           ,
11860           FRT_ADJ_REM_ACCTD_AMT     ,
11861         --
11862         LINE_TYPE                 ,
11863         group_id                  ,
11864   --{For Group identification
11865   source_data_key1  ,
11866   source_data_key2  ,
11867   source_data_key3  ,
11868   source_data_key4  ,
11869   source_data_key5  ,
11870   --}
11871         --
11872         SUM_LINE_ORIG_AMT        ,
11873         SUM_LINE_ORIG_ACCTD_AMT  ,
11874 --{line of type CHRG
11875         SUM_LINE_CHRG_ORIG_AMT        ,
11876         SUM_LINE_CHRG_ORIG_ACCTD_AMT  ,
11877 --}
11878         SUM_LINE_FRT_ORIG_AMT        ,
11879         SUM_LINE_FRT_ORIG_ACCTD_AMT  ,
11880         SUM_LINE_TAX_ORIG_AMT        ,
11881         SUM_LINE_TAX_ORIG_ACCTD_AMT  ,
11882         --
11883         SUM_LINE_REM_AMT         ,
11884         SUM_LINE_REM_ACCTD_AMT   ,
11885         SUM_LINE_CHRG_REM_AMT    ,
11886         SUM_LINE_CHRG_REM_ACCTD_AMT,
11887         --
11888           SUM_LINE_FRT_REM_AMT        ,
11889           SUM_LINE_FRT_REM_ACCTD_AMT  ,
11890           SUM_LINE_TAX_REM_AMT        ,
11891           SUM_LINE_TAX_REM_ACCTD_AMT  ,
11892         --
11893         gp_level,
11894         --
11895         set_of_books_id,
11896         sob_type
11897 --        se_gt_id
11898         )
11899      SELECT /*+INDEX (ctl ra_customer_trx_lines_gt_n1)*/
11900 	        p_gt_id                       ,  --GT_ID
11901             p_ae_sys_rec.base_currency    ,  --BASE_CURRENCY
11902             trx.invoice_currency_code     ,  --TO_CURRENCY
11903             trx.customer_trx_id           ,  --REF_CUSTOMER_TRX_ID
11904             ctl.customer_trx_line_id      ,  --REF_CUSTOMER_TRX_LINE_ID
11905          -- Orig
11906             DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
11907                                  'CB'  ,ctl.amount_due_original,0),          --DUE_ORIG_AMT
11908             DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
11909                                  'CB'  ,ctl.acctd_amount_due_original,0),    --DUE_ORIG_ACCTD_AMT
11910 --{line of type CHRG
11911             DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0),       --CHRG_ORIG_AMT
11912             DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0), --CHRG_ORIG_ACCTD_AMT
11913 --}
11914             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0),       --FRT_ORIG_AMT
11915             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0), --FRT_ORIG_ACCTD_AMT
11916             DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0),           --TAX_ORIG_AMT
11917             DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0),     --TAX_ORIG_ACCTD_AMT
11918          -- Remaining
11919             DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
11920                                  'CB'  ,ctl.amount_due_remaining,0) ,        --DUE_REM_AMT
11921             DECODE(ctl.line_type,'LINE',acctd_amount_due_remaining,
11922                                  'CB'  ,acctd_amount_due_remaining,0),       --DUE_REM_ACCTD_AMT
11923 --{line of type CHRG
11924 --            ctl.chrg_amount_remaining     ,
11925 --            ctl.chrg_acctd_amount_remaining,
11926             DECODE(ctl.line_type,'CHARGES',ctl.amount_due_remaining,0) ,     --CHRG_REM_AMT
11927             DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_remaining,0),--CHRG_REM_ACCTD_AMT
11928 --}
11929             --
11930             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_remaining,0) ,     --FRT_REM_AMT
11931                                                             /*Frt Rem on freight is the
11932                                                               rem amount of the freight calculated
11933                                                               from orig frt - cash application
11934                                                               frt adjustment variations are excluded
11935                                                               they are kept in frt_adj_rem_amt on rev line */
11936             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_remaining,0), --FRT_REM_ACCTD_AMT
11937             DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0) ,          --TAX_REM_AMT
11938             DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0),     --TAX_REM_ACCTD_AMT
11939 --
11940 --{line of type CHRG
11941             ctl.chrg_amount_remaining          ,                                --chrg_amount_remaining
11942             ctl.chrg_acctd_amount_remaining    ,                                --chrg_acctd_amount_remaining
11943 --}
11944             ctl.frt_adj_remaining          ,                                  --FRT_ADJ_REM_AMT
11945             ctl.frt_adj_acctd_remaining    ,                                  --FRT_ADJ_REM_ACCTD_AMT
11946             --
11947             ctl.line_type                 ,                                  --LINE_TYPE
11948 --            NVL(ctl.SOURCE_DATA_KEY1,'00'),                                --GROUP_ID
11949            DECODE(ctl.SOURCE_DATA_KEY1 ||
11950             ctl.SOURCE_DATA_KEY2 ||
11951             ctl.SOURCE_DATA_KEY3 ||
11952             ctl.SOURCE_DATA_KEY4 ||
11953             ctl.SOURCE_DATA_KEY5, NULL, '00',
11954                  ctl.SOURCE_DATA_KEY1 ||'-'||
11955                  ctl.SOURCE_DATA_KEY2 ||'-'||
11956                  ctl.SOURCE_DATA_KEY3 ||'-'||
11957                  ctl.SOURCE_DATA_KEY4 ||'-'||
11958                  ctl.SOURCE_DATA_KEY5),                                           --GROUP_ID
11959   --{Group identification
11960             NVL(ctl.source_data_key1,'00'),
11961             NVL(ctl.source_data_key2,'00'),
11962             NVL(ctl.source_data_key3,'00'),
11963             NVL(ctl.source_data_key4,'00'),
11964             NVL(ctl.source_data_key5,'00'),
11965   --}
11966             --
11967             SUM(DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
11968                                      'CB'  ,ctl.amount_due_original,0))
11969                 OVER (PARTITION BY trx.customer_trx_id,
11970                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
11971                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
11972                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
11973                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
11974                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
11975                                    ctl.line_type                  ),         --SUM_LINE_ORIG_AMT
11976             SUM(DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
11977                                      'CB'  ,ctl.acctd_amount_due_original,0))
11978                 OVER (PARTITION BY trx.customer_trx_id,
11979                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
11980                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
11981                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
11982                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
11983                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
11984                                    ctl.line_type ),                          --SUM_LINE_ORIG_ACCTD_AMT
11985 --{line of type CHRG
11986             SUM(DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0))
11987                 OVER (PARTITION BY trx.customer_trx_id,
11988                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
11989                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
11990                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
11991                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
11992                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
11993                                    ctl.line_type ),                          --SUM_LINE_CHRG_ORIG_AMT
11994             SUM(DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0))
11995                 OVER (PARTITION BY trx.customer_trx_id,
11996                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
11997                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
11998                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
11999                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
12000                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
12001                                    ctl.line_type ),                          --SUM_LINE_CHRG_ORIG_ACCTD_AMT
12002 --}
12003             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0))
12004                 OVER (PARTITION BY trx.customer_trx_id,
12005                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
12006                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
12007                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
12008                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
12009                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
12010                                    ctl.line_type ),                          --SUM_LINE_FRT_ORIG_AMT
12011             SUM(DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0))
12012                 OVER (PARTITION BY trx.customer_trx_id,
12013                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
12014                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
12015                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
12016                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
12017                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
12018                                    ctl.line_type ),                          --SUM_LINE_FRT_ORIG_ACCTD_AMT
12019             SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0))
12020                 OVER (PARTITION BY trx.customer_trx_id,
12021                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
12022                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
12023                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
12024                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
12025                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
12026                                    ctl.line_type ),                          --SUM_LINE_TAX_ORIG_AMT
12027             SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0))
12028                 OVER (PARTITION BY trx.customer_trx_id,
12029                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
12030                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
12031                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
12032                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
12033                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
12034                                    ctl.line_type ),                          --SUM_LINE_TAX_ORIG_ACCTD_AMT
12035             --
12036             SUM(DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
12037                                      'CB'  ,ctl.amount_due_remaining,0))
12038                 OVER (PARTITION BY trx.customer_trx_id,
12039                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
12040                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
12041                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
12042                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
12043                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
12044                                    ctl.line_type  ),                         --SUM_LINE_REM_AMT
12045             SUM(DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_remaining,
12046                                      'CB'  ,ctl.acctd_amount_due_remaining,0))
12047                 OVER (PARTITION BY trx.customer_trx_id,
12048                                    NVL(ctl.SOURCE_DATA_KEY1,'00'),
12049                                    NVL(ctl.SOURCE_DATA_KEY2,'00'),
12050                                    NVL(ctl.SOURCE_DATA_KEY3,'00'),
12051                                    NVL(ctl.SOURCE_DATA_KEY4,'00'),
12052                                    NVL(ctl.SOURCE_DATA_KEY5,'00'),
12053                                    ctl.line_type  ),                         --SUM_LINE_REM_ACCTD_AMT
12054 --{line of type CHRG
12055             SUM(DECODE
12056                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_amount_remaining,0),
12057                                 'CB'     ,NVL(ctl.chrg_amount_remaining,0),
12058                                 'CHARGES',NVL(ctl.amount_due_remaining,0),
12059                                  0)) OVER (PARTITION BY trx.customer_trx_id,
12060                                            NVL(ctl.SOURCE_DATA_KEY1,'00'),
12061                                            NVL(ctl.SOURCE_DATA_KEY2,'00'),
12062                                            NVL(ctl.SOURCE_DATA_KEY3,'00'),
12063                                            NVL(ctl.SOURCE_DATA_KEY4,'00'),
12064                                            NVL(ctl.SOURCE_DATA_KEY5,'00') ),--SUM_LINE_CHRG_REM_AMT
12065             SUM(DECODE
12066                  (ctl.line_type,'LINE'   ,NVL(ctl.chrg_acctd_amount_remaining,0),
12067                                 'CB'     ,NVL(ctl.chrg_acctd_amount_remaining,0),
12068                                 'CHARGES',NVL(ctl.acctd_amount_due_remaining,0),
12069                                  0)) OVER (PARTITION BY trx.customer_trx_id,
12070                                            NVL(ctl.SOURCE_DATA_KEY1,'00'),
12071                                            NVL(ctl.SOURCE_DATA_KEY2,'00'),
12072                                            NVL(ctl.SOURCE_DATA_KEY3,'00'),
12073                                            NVL(ctl.SOURCE_DATA_KEY4,'00'),
12074                                            NVL(ctl.SOURCE_DATA_KEY5,'00') ),--SUM_LINE_CHRG_REM_ACCTD_AMT
12075 --            SUM(ctl.chrg_amount_remaining)
12076 --                OVER (PARTITION BY trx.customer_trx_id,
12077 --                                   NVL(ctl.SOURCE_DATA_KEY1,'00'),
12078 --                                   NVL(ctl.SOURCE_DATA_KEY2,'00'),
12079 --                                   NVL(ctl.SOURCE_DATA_KEY3,'00'),
12080 --                                   NVL(ctl.SOURCE_DATA_KEY4,'00'),
12081 --                                   NVL(ctl.SOURCE_DATA_KEY5,'00'),
12082 --                                   ctl.line_type ),                          --SUM_LINE_CHRG_REM_AMT
12083 --            SUM(ctl.chrg_acctd_amount_remaining)
12084 --                OVER (PARTITION BY trx.customer_trx_id,
12085 --                                   NVL(ctl.SOURCE_DATA_KEY1,'00'),
12086 --                                   NVL(ctl.SOURCE_DATA_KEY2,'00'),
12087 --                                   NVL(ctl.SOURCE_DATA_KEY3,'00'),
12088 --                                   NVL(ctl.SOURCE_DATA_KEY4,'00'),
12089 --                                   NVL(ctl.SOURCE_DATA_KEY5,'00'),
12090 --                                   ctl.line_type ),                          --SUM_LINE_CHRG_REM_ACCTD_AMT
12091 --}
12092             --
12093             /* This is the sum of freight amount adjusted on the revenue line
12094               + sum of freight amount due remaining on the original freight line
12095               Those 2 amounts combined form the basis for cash receipt apps */
12096             SUM(DECODE
12097                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_remaining,0),
12098                                 'CB'     ,NVL(ctl.frt_adj_remaining,0),
12099                                 'FREIGHT',NVL(ctl.amount_due_remaining,0),
12100                                  0)) OVER (PARTITION BY trx.customer_trx_id,
12101                                            NVL(ctl.SOURCE_DATA_KEY1,'00'),
12102                                            NVL(ctl.SOURCE_DATA_KEY2,'00'),
12103                                            NVL(ctl.SOURCE_DATA_KEY3,'00'),
12104                                            NVL(ctl.SOURCE_DATA_KEY4,'00'),
12105                                            NVL(ctl.SOURCE_DATA_KEY5,'00') ),--SUM_LINE_FRT_REM_AMT
12106             SUM(DECODE
12107                  (ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_acctd_remaining,0),
12108                                 'CB'     ,NVL(ctl.frt_adj_acctd_remaining,0),
12109                                 'FREIGHT',NVL(ctl.acctd_amount_due_remaining,0),
12110                                  0)) OVER (PARTITION BY trx.customer_trx_id,
12111                                            NVL(ctl.SOURCE_DATA_KEY1,'00'),
12112                                            NVL(ctl.SOURCE_DATA_KEY2,'00'),
12113                                            NVL(ctl.SOURCE_DATA_KEY3,'00'),
12114                                            NVL(ctl.SOURCE_DATA_KEY4,'00'),
12115                                            NVL(ctl.SOURCE_DATA_KEY5,'00') ),--SUM_LINE_FRT_REM_ACCTD_AMT
12116             SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0))
12117                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type,
12118                                            NVL(ctl.SOURCE_DATA_KEY1,'00'),
12119                                            NVL(ctl.SOURCE_DATA_KEY2,'00'),
12120                                            NVL(ctl.SOURCE_DATA_KEY3,'00'),
12121                                            NVL(ctl.SOURCE_DATA_KEY4,'00'),
12122                                            NVL(ctl.SOURCE_DATA_KEY5,'00')),       --SUM_LINE_TAX_REM_AMT
12123             SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0))
12124                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type,
12125                                            NVL(ctl.SOURCE_DATA_KEY1,'00'),
12126                                            NVL(ctl.SOURCE_DATA_KEY2,'00'),
12127                                            NVL(ctl.SOURCE_DATA_KEY3,'00'),
12128                                            NVL(ctl.SOURCE_DATA_KEY4,'00'),
12129                                            NVL(ctl.SOURCE_DATA_KEY5,'00')),       --SUM_LINE_TAX_REM_ACCTD_AMT
12130             --
12131             'L',
12132             --
12133             p_ae_sys_rec.set_of_books_id,
12134             p_ae_sys_rec.sob_type
12135 --            g_se_gt_id
12136        FROM ra_customer_trx          trx,
12137             ra_customer_trx_lines_gt ctl
12138       WHERE trx.customer_trx_id               = p_customer_trx_id
12139         AND trx.customer_trx_id               = ctl.customer_trx_id
12140 --        AND NVL(ctl.group_id,'00')            = p_group_id
12141           --{HYUBPAGP
12142         AND NVL(ctl.source_data_key1,'00')    = NVL(p_source_data_key1,'00')
12143         AND NVL(ctl.source_data_key2,'00')    = NVL(p_source_data_key2,'00')
12144         AND NVL(ctl.source_data_key3,'00')    = NVL(p_source_data_key3,'00')
12145         AND NVL(ctl.source_data_key4,'00')    = NVL(p_source_data_key4,'00')
12146         AND NVL(ctl.source_data_key5,'00')    = NVL(p_source_data_key5,'00');
12147           --}
12148   l_rows := sql%rowcount;
12149   g_appln_count := g_appln_count + l_rows;
12150   IF PG_DEBUG = 'Y' THEN
12151   localdebug('  rows inserted = ' || l_rows);
12152   localdebug('arp_det_dist_pkg.get_invoice_line_info_per_grp()-');
12153   END IF;
12154 END get_invoice_line_info_per_grp;
12155 
12156 
12157 PROCEDURE get_invoice_line_info_per_line
12158 (p_gt_id                IN VARCHAR2,
12159  p_customer_trx_id      IN NUMBER,
12160  p_customer_trx_line_id IN NUMBER,
12161  p_log_inv_line         IN VARCHAR2 DEFAULT 'N',
12162  p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type)
12163 IS
12164   l_rows NUMBER;
12165 BEGIN
12166   IF PG_DEBUG = 'Y' THEN
12167   localdebug('arp_det_dist_pkg.get_invoice_line_info_per_line()+');
12168   localdebug('   p_customer_trx_id       :'||p_customer_trx_id);
12169   localdebug('   p_customer_trx_line_id  :'||p_customer_trx_line_id);
12170   localdebug('   p_gt_id                 :'||p_gt_id);
12171   END IF;
12172 
12173   INSERT INTO RA_AR_GT
12174       ( GT_ID                     ,
12175         BASE_CURRENCY             ,
12176         TO_CURRENCY               ,
12177         REF_CUSTOMER_TRX_ID       ,
12178         REF_CUSTOMER_TRX_LINE_ID  ,
12179         --
12180         DUE_ORIG_AMT              ,
12181         DUE_ORIG_ACCTD_AMT        ,
12182         --
12183         CHRG_ORIG_AMT              ,
12184         CHRG_ORIG_ACCTD_AMT        ,
12185         FRT_ORIG_AMT              ,
12186         FRT_ORIG_ACCTD_AMT        ,
12187         TAX_ORIG_AMT              ,
12188         TAX_ORIG_ACCTD_AMT        ,
12189         --
12190         DUE_REM_AMT               ,
12191         DUE_REM_ACCTD_AMT         ,
12192         CHRG_REM_AMT              ,
12193         CHRG_REM_ACCTD_AMT        ,
12194         --
12195           FRT_REM_AMT               ,
12196           FRT_REM_ACCTD_AMT         ,
12197           TAX_REM_AMT               ,
12198           TAX_REM_ACCTD_AMT         ,
12199           --
12200           FRT_ADJ_REM_AMT           ,
12201           FRT_ADJ_REM_ACCTD_AMT     ,
12202         --
12203         LINE_TYPE                 ,
12204         group_id                  ,
12205   --{HYUBPAGP
12206   source_data_key1  ,
12207   source_data_key2  ,
12208   source_data_key3  ,
12209   source_data_key4  ,
12210   source_data_key5  ,
12211   --}
12212         --
12213         SUM_LINE_ORIG_AMT        ,
12214         SUM_LINE_ORIG_ACCTD_AMT  ,
12215 --{HYUCHRG
12216         SUM_LINE_CHRG_ORIG_AMT              ,
12217         SUM_LINE_CHRG_ORIG_ACCTD_AMT        ,
12218 --}
12219         SUM_LINE_FRT_ORIG_AMT        ,
12220         SUM_LINE_FRT_ORIG_ACCTD_AMT  ,
12221         SUM_LINE_TAX_ORIG_AMT        ,
12222         SUM_LINE_TAX_ORIG_ACCTD_AMT  ,
12223         --
12224         SUM_LINE_REM_AMT         ,
12225         SUM_LINE_REM_ACCTD_AMT   ,
12226         SUM_LINE_CHRG_REM_AMT    ,
12227         SUM_LINE_CHRG_REM_ACCTD_AMT,
12228         --
12229           SUM_LINE_FRT_REM_AMT        ,
12230           SUM_LINE_FRT_REM_ACCTD_AMT  ,
12231           SUM_LINE_TAX_REM_AMT        ,
12232           SUM_LINE_TAX_REM_ACCTD_AMT  ,
12233         --
12234         gp_level,
12235         --
12236         set_of_books_id,
12237         sob_type,
12238         tax_link_id,
12239         tax_inc_flag)
12240 --        se_gt_id)
12241      SELECT /*+INDEX (ctl ra_customer_trx_lines_gt_n1)*/
12242 	        p_gt_id                       ,  --GT_ID
12243             p_ae_sys_rec.base_currency    ,  --BASE_CURRENCY
12244             trx.invoice_currency_code     ,  --TO_CURRENCY
12245             trx.customer_trx_id           ,  --REF_CUSTOMER_TRX_ID
12246             ctl.customer_trx_line_id      ,  --REF_CUSTOMER_TRX_LINE_ID
12247          -- Orig
12248             DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
12249                                  'CB'  ,ctl.amount_due_original,0),          --DUE_ORIG_AMT
12250             DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
12251                                  'CB'  ,ctl.acctd_amount_due_original,0),    --DUE_ORIG_ACCTD_AMT
12252 --{HYUCHRG
12253             DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0),       --CHRG_ORIG_AMT
12254             DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0), --CHRG_ORIG_ACCTD_AMT
12255 --}
12256             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0),       --FRT_ORIG_AMT
12257             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0), --FRT_ORIG_ACCTD_AMT
12258             DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0),           --TAX_ORIG_AMT
12259             DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0),     --TAX_ORIG_ACCTD_AMT
12260          -- Remaining
12261             DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
12262                                  'CB'  ,ctl.amount_due_remaining,0) ,        --DUE_REM_AMT
12263             /*DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_remaining,
12264                                  'CB'  ,ctl.acctd_amount_due_remaining,0),   --DUE_REM_ACCTD_AMT*/
12265             DECODE(ctl.line_type,'LINE',
12266 	                         DECODE(ctl.amount_due_remaining,0,
12267 				        ctl.acctd_amount_due_remaining,
12268 					DECODE(ctl.acctd_amount_due_remaining,0,
12269 					        arpcurr.CurrRound( ctl.amount_due_remaining *
12270 						                   nvl(trx.exchange_rate,1)
12271 								   ,trx.invoice_currency_code),
12272 					       ctl.acctd_amount_due_remaining)),
12273                                  'CB'  ,ctl.acctd_amount_due_remaining,0),   --DUE_REM_ACCTD_AMT
12274 --{HYUCHRG
12275 --            DECODE(ctl.line_type,'LINE',ctl.chrg_amount_remaining,
12276 --                                 'CB'  ,ctl.chrg_amount_remaining,0),
12277 --            DECODE(ctl.line_type,'LINE',ctl.chrg_acctd_amount_remaining,
12278 --                                 'CB'  ,ctl.chrg_acctd_amount_remaining,0),
12279             DECODE(ctl.line_type,'CHARGES',ctl.amount_due_remaining,0) ,      --CHRG_REM_AMT
12280             DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_remaining,0), --CHRG_REM_ACCTD_AMT
12281 --}
12282             --
12283             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_remaining,0) ,     --FRT_REM_AMT
12284                                                             /*Frt Rem on freight is the
12285                                                               rem amount of the freight calculated
12286                                                               from orig frt - cash application
12287                                                               frt adjustment variations are excluded
12288                                                               they are kept in frt_adj_rem_amt on rev line */
12289             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_remaining,0), --FRT_REM_ACCTD_AMT
12290             DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0) ,          --TAX_REM_AMT
12291             DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0),    --TAX_REM_ACCTD_AMT
12292             ctl.frt_adj_remaining          ,                                 --FRT_ADJ_REM_AMT
12293             ctl.frt_adj_acctd_remaining    ,                                 --FRT_ADJ_REM_ACCTD_AMT
12294             --
12295             ctl.line_type                 ,                                  --LINE_TYPE
12296            DECODE(ctl.SOURCE_DATA_KEY1 ||
12297             ctl.SOURCE_DATA_KEY2 ||
12298             ctl.SOURCE_DATA_KEY3 ||
12299             ctl.SOURCE_DATA_KEY4 ||
12300             ctl.SOURCE_DATA_KEY5, NULL, '00',
12301                  ctl.SOURCE_DATA_KEY1 ||'-'||
12302                  ctl.SOURCE_DATA_KEY2 ||'-'||
12303                  ctl.SOURCE_DATA_KEY3 ||'-'||
12304                  ctl.SOURCE_DATA_KEY4 ||'-'||
12305                  ctl.SOURCE_DATA_KEY5),                                           --GROUP_ID
12306 --            NVL(ctl.SOURCE_DATA_KEY1,'00'),                                  --GROUP_ID
12307   --{HYUBPAGP
12308             NVL(ctl.source_data_key1,'00'),
12309             NVL(ctl.source_data_key2,'00'),
12310             NVL(ctl.source_data_key3,'00'),
12311             NVL(ctl.source_data_key4,'00'),
12312             NVL(ctl.source_data_key5,'00'),
12313   --}
12314             --
12315             DECODE(ctl.line_type,'LINE',ctl.amount_due_original,
12316                                  'CB'  ,ctl.amount_due_original,0),          --SUM_LINE_ORIG_AMT
12317             DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_original,
12318                                  'CB'  ,ctl.acctd_amount_due_original,0),    --SUM_LINE_ORIG_ACCTD_AMT
12319 --{HYUCHRG
12320             DECODE(ctl.line_type,'CHARGES',ctl.amount_due_original,0),       --SUM_LINE_CHRG_ORIG_AMT
12321             DECODE(ctl.line_type,'CHARGES',ctl.acctd_amount_due_original,0), --SUM_LINE_CHRG_ORIG_ACCTD_AMT
12322 --}
12323             DECODE(ctl.line_type,'FREIGHT',ctl.amount_due_original,0),       --SUM_LINE_FRT_ORIG_AMT
12324             DECODE(ctl.line_type,'FREIGHT',ctl.acctd_amount_due_original,0), --SUM_LINE_FRT_ORIG_ACCTD_AMT
12325 
12326 --HYUIssue
12327 --            DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0),           --SUM_LINE_TAX_ORIG_AMT
12328 
12329             SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_original,0))
12330                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_ORIG_AMT
12331 --            DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_original,0),     --SUM_LINE_TAX_ORIG_ACCTD_AMT
12332             SUM(DECODE(ctl.line_type,'TAX',ctl.ACCTD_amount_due_original,0))
12333                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_ORIG_ACCTD_AMT
12334 --}
12335             --
12336             DECODE(ctl.line_type,'LINE',ctl.amount_due_remaining,
12337                                  'CB'  ,ctl.amount_due_remaining,0),         --SUM_LINE_REM_AMT
12338             DECODE(ctl.line_type,'LINE',
12339 	                         DECODE(ctl.amount_due_remaining,0,
12340 				        ctl.acctd_amount_due_remaining,
12341 					DECODE(ctl.acctd_amount_due_remaining,0,
12342 					        arpcurr.CurrRound( ctl.amount_due_remaining *
12343 						                   nvl(trx.exchange_rate,1)
12344 								   ,trx.invoice_currency_code),
12345 					       ctl.acctd_amount_due_remaining)),
12346                                  'CB'  ,ctl.acctd_amount_due_remaining,0),   --SUM_LINE_REM_ACCTD_AMT
12347             /*DECODE(ctl.line_type,'LINE',ctl.acctd_amount_due_remaining,
12348                                  'CB'  ,ctl.acctd_amount_due_remaining,0),   --SUM_LINE_REM_ACCTD_AMT*/
12349 --{HYUCHRG
12350 --            ctl.chrg_amount_remaining,
12351 --            ctl.chrg_acctd_amount_remaining,
12352             DECODE(ctl.line_type,'LINE'   ,NVL(ctl.chrg_amount_remaining,0),
12353                                  'CB'     ,NVL(ctl.chrg_amount_remaining,0),
12354                                  'CHARGES',NVL(ctl.amount_due_remaining,0),
12355                                  0),                                          --SUM_LINE_CHRG_REM_AMT
12356             DECODE(ctl.line_type,'LINE'   ,NVL(ctl.chrg_acctd_amount_remaining,0),
12357                                  'CB'     ,NVL(ctl.chrg_acctd_amount_remaining,0),
12358                                  'CHARGES',NVL(ctl.acctd_amount_due_remaining,0),
12359                                  0),                                          --SUM_LINE_CHRG_REM_ACCTD_AMT
12360 --}
12361             --
12362             DECODE(ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_remaining,0),
12363                                  'CB'     ,NVL(ctl.frt_adj_remaining,0),
12364                                  'FREIGHT',NVL(ctl.amount_due_remaining,0),
12365                                  0),                                          --SUM_LINE_FRT_REM_AMT
12366             DECODE(ctl.line_type,'LINE'   ,NVL(ctl.frt_adj_acctd_remaining,0),
12367                                  'CB'     ,NVL(ctl.frt_adj_acctd_remaining,0),
12368                                  'FREIGHT',NVL(ctl.acctd_amount_due_remaining,0),
12369                                  0),                                          --SUM_LINE_FRT_REM_ACCTD_AMT
12370 --HYUIssue
12371 --            DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0),           --SUM_LINE_TAX_REM_AMT
12372             SUM(DECODE(ctl.line_type,'TAX',ctl.amount_due_remaining,0))
12373                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_REM_AMT
12374 --            DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0),     --SUM_LINE_TAX_REM_ACCTD_AMT
12375             SUM(DECODE(ctl.line_type,'TAX',ctl.acctd_amount_due_remaining,0))
12376                 OVER (PARTITION BY trx.customer_trx_id,ctl.line_type ),      --SUM_LINE_TAX_REM_ACCTD_AMT
12377 --}
12378             --
12379             'L',
12380             --
12381             p_ae_sys_rec.set_of_books_id,
12382             p_ae_sys_rec.sob_type,
12383             --{Taxable_amount
12384             DECODE(ctl.line_type, 'TAX' ,ctl.link_to_cust_trx_line_id,
12385                                   'LINE',ctl.customer_trx_line_id,
12386                                   'CB'  ,ctl.customer_trx_line_id,
12387                                   NULL),
12388             DECODE(ctl.line_type,'LINE','Y',
12389                                  'CB'  ,'Y',
12390                                  'TAX','Y','N')
12391 --            g_se_gt_id
12392        FROM ra_customer_trx          trx,
12393             ( select *
12394 	      from ra_customer_trx_lines_gt ctl2
12395 	      where  ctl2.customer_trx_id  =  p_customer_trx_id
12396 	      and ctl2.customer_trx_line_id = p_customer_trx_line_id
12397 	      union all
12398 	      select *
12399 	      from ra_customer_trx_lines_gt ctl2
12400 	      where ctl2.customer_trx_id  =  p_customer_trx_id
12401 	      and ctl2.LINK_TO_CUST_TRX_LINE_ID = p_customer_trx_line_id
12402 	      ) ctl
12403       WHERE trx.customer_trx_id         = p_customer_trx_id;
12404 
12405 
12406   l_rows := sql%rowcount;
12407   g_appln_count := g_appln_count + l_rows;
12408   IF PG_DEBUG = 'Y' THEN
12409   localdebug('  rows inserted = ' || l_rows);
12410   localdebug('arp_det_dist_pkg.get_invoice_line_info_per_line()-');
12411   END IF;
12412 END get_invoice_line_info_per_line;
12413 
12414 PROCEDURE proration_app_dist_trx
12415     (p_gt_id            IN VARCHAR2,
12416      p_app_level        IN VARCHAR2,
12417      p_customer_trx_id  IN NUMBER,
12418      p_app_rec          IN ar_receivable_applications%ROWTYPE,
12419      p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type)
12420 IS
12421    l_adj_rec     ar_adjustments%ROWTYPE;
12422 BEGIN
12423     IF PG_DEBUG = 'Y' THEN
12424     localdebug('arp_det_dist_pkg.proration_app_dist_trx()+');
12425     localdebug('     p_gt_id                  :'||p_gt_id );
12426     localdebug('     application type         :'||p_app_rec.application_type );
12427     localdebug('     receivable_application_id:'||p_app_rec.receivable_application_id );
12428     localdebug('     set of books id          :'||p_ae_sys_rec.set_of_books_id );
12429     localdebug('     sob type                 :'||p_ae_sys_rec.sob_type );
12430     END IF;
12431 
12432     get_inv_dist
12433     (p_pay_adj              => 'APP',
12434      p_customer_trx_id      => p_customer_trx_id,
12435      p_gt_id                => p_gt_id,
12436      p_adj_rec              => l_adj_rec,
12437      p_app_rec              => p_app_rec,
12438      p_ae_sys_rec           => p_ae_sys_rec);
12439 
12440 
12441     update_dist(p_customer_trx_id => p_customer_trx_id,
12442              p_gt_id           => p_gt_id,
12443              p_ae_sys_rec      => p_ae_sys_rec);
12444 
12445     create_split_distribution
12446       (p_pay_adj               => 'APP',
12447        p_customer_trx_id       => p_customer_trx_id,
12448        p_gt_id                 => p_gt_id,
12449        p_app_level             => p_app_level,
12450        p_ae_sys_rec            => p_ae_sys_rec);
12451 
12452     IF PG_DEBUG = 'Y' THEN
12453     localdebug('arp_det_dist_pkg.proration_app_dist_trx()-');
12454     END IF;
12455 
12456 END proration_app_dist_trx;
12457 
12458 
12459 PROCEDURE proration_adj_dist_trx
12460     (p_gt_id            IN VARCHAR2,
12461      p_app_level        IN VARCHAR2,
12462      p_customer_trx_id  IN NUMBER,
12463      p_adj_rec          IN ar_adjustments%ROWTYPE,
12464      p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type)
12465 IS
12466    l_app_rec     ar_receivable_applications%ROWTYPE;
12467 BEGIN
12468     IF PG_DEBUG = 'Y' THEN
12469     localdebug('arp_det_dist_pkg.proration_adj_dist_trx()+');
12470     localdebug('     p_gt_id                  :'||p_gt_id );
12471     localdebug('     adj type                 :'||p_adj_rec.adjustment_type );
12472     localdebug('     adjustments_id           :'||p_adj_rec.adjustment_id );
12473     localdebug('     set of books id          :'||p_ae_sys_rec.set_of_books_id );
12474     localdebug('     sob type                 :'||p_ae_sys_rec.sob_type );
12475     END IF;
12476 
12477     get_inv_dist
12478     (p_pay_adj              => 'ADJ',
12479      p_customer_trx_id      => p_customer_trx_id,
12480      p_gt_id                => p_gt_id,
12481      p_adj_rec              => p_adj_rec,
12482      p_app_rec              => l_app_rec,
12483      p_ae_sys_rec           => p_ae_sys_rec);
12484 
12485     update_dist(p_customer_trx_id => p_customer_trx_id,
12486              p_gt_id           => p_gt_id,
12487              p_ae_sys_rec      => p_ae_sys_rec);
12488 
12489     IF PG_DEBUG = 'Y' THEN
12490     localdebug('adjustment_detemination');
12491     END IF;
12492 
12493 
12494     adjustment_detemination
12495             (p_customer_trx_id => p_customer_trx_id,
12496              p_gt_id           => p_gt_id,
12497              p_pay_adj         => 'ADJ',
12498              p_ae_sys_rec      => p_ae_sys_rec,
12499              p_adj_rec         => p_adj_rec);
12500 
12501     IF PG_DEBUG = 'Y' THEN
12502     localdebug('create_split_distribution');
12503     END IF;
12504     create_split_distribution
12505       (p_pay_adj               => 'ADJ',
12506        p_customer_trx_id       => p_customer_trx_id,
12507        p_gt_id                 => p_gt_id,
12508        p_app_level             => p_app_level,
12509        p_ae_sys_rec            => p_ae_sys_rec);
12510 
12511     IF PG_DEBUG = 'Y' THEN
12512     localdebug('arp_det_dist_pkg.proration_adj_dist_trx()-');
12513     END IF;
12514 
12515 END proration_adj_dist_trx;
12516 
12517 /*-------------------------------------------------------------------------+
12518  | Trx_level_cash_apply                                                    |
12519  +-------------------------------------------------------------------------+
12520  | 1) get_invoice_line_info                                                |
12521  | 2) prepare_group_for_proration                                          |
12522  | 3) update_group_line                                                    |
12523  | 4) prepare_trx_line_proration                                           |
12524  | 5) update_line                                                          |
12525  | 6) update_ctl_rem_orig                                                  |
12526  | 7) store_gt_id                                                          |
12527  +-------------------------------------------------------------------------+
12528  | parameter:                                                              |
12529  |  p_customer_trx_id     transaction id                                   |
12530  |  p_app_rec             ar receivable application record                 |
12531  |  p_ae_sys_rec          ar system parameter                              |
12532  +-------------------------------------------------------------------------*/
12533 PROCEDURE Trx_level_cash_apply
12534   (p_customer_trx     IN ra_customer_trx%ROWTYPE,
12535    p_app_rec          IN ar_receivable_applications%ROWTYPE,
12536    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
12537    p_gt_id            IN VARCHAR2 DEFAULT NULL)
12538 IS
12539   l_adj_rec        ar_adjustments%ROWTYPE;
12540   l_app_rec        ar_receivable_applications%ROWTYPE;
12541   l_gt_id          VARCHAR2(30);
12542   l_return_status  VARCHAR2(1)   := fnd_api.g_ret_sts_success;
12543   l_msg_data       VARCHAR2(2000);
12544   l_msg_count      NUMBER;
12545   E11i_trx_no_llca      EXCEPTION;
12546   excep_get_gt_sequence EXCEPTION;
12547   summrize_act_no_llca  EXCEPTION;
12548 BEGIN
12549   IF PG_DEBUG = 'Y' THEN
12550   localdebug('arp_det_dist_pkg.trx_level_cash_apply()+');
12551   localdebug('   p_customer_trx_id       :'||p_customer_trx.customer_trx_id);
12552   END IF;
12553   g_cust_inv_rec    :=  p_customer_trx;
12554 
12555   IF p_gt_id IS NULL THEN
12556      --BUG#4414391
12557      get_gt_sequence (x_gt_id         => l_gt_id,
12558                       x_return_status => l_return_status,
12559                       x_msg_count     => l_msg_count,
12560                       x_msg_data      => l_msg_data);
12561      IF l_return_status <> fnd_api.g_ret_sts_success THEN
12562         RAISE excep_get_gt_sequence;
12563      END IF;
12564      --l_gt_id  := g_gt_id;
12565      --}
12566   ELSE
12567     l_gt_id  := p_gt_id;
12568   END IF;
12569 
12570   g_gt_id    := l_gt_id;
12571 
12572   set_mode_process(p_customer_trx  => g_cust_inv_rec,
12573                    p_from_llca     => 'Y');
12574 
12575   IF g_mode_process = 'R12_11ICASH' THEN
12576 
12577     -- Process OLTP application on old transactions
12578     -- with adjustments created in 11I
12579     RAISE E11i_trx_no_llca;
12580 
12581   ELSIF g_mode_process = 'R12_MERGE' THEN
12582 
12583     -- Process OLTP application on transaction with activities
12584     -- having summarized distributions
12585     RAISE summrize_act_no_llca;
12586 
12587   ELSE
12588 
12589    IF g_mode_process = 'R12_11IMFAR' THEN
12590       l_return_status := FND_API.G_RET_STS_SUCCESS;
12591 
12592      ar_upgrade_cash_accrual.COMPARE_RA_REM_AMT
12593      ( p_app_rec         => p_app_rec,
12594        x_app_rec         => l_app_rec,
12595        p_app_level       => 'TRANSACTION',
12596        p_currency        => g_cust_inv_rec.invoice_currency_code,
12597        x_return_status   => l_return_status,
12598        x_msg_data        => l_msg_data,
12599        x_msg_count       => l_msg_count);
12600 
12601      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12602         RAISE fnd_api.G_EXC_ERROR;
12603      ELSE
12604        l_app_rec := p_app_rec;
12605      END IF;
12606 
12607    END IF;
12608  END IF;
12609  --}
12610 
12611   conv_acctd_amt(p_pay_adj         => 'APP',
12612                  p_adj_rec         => l_adj_rec,
12613                  p_app_rec         => p_app_rec,
12614                  p_ae_sys_rec      => p_ae_sys_rec);
12615 
12616   get_invoice_line_info(p_gt_id            => l_gt_id,
12617                         p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
12618                         p_ae_sys_rec       => p_ae_sys_rec,
12619                         p_mode             => 'NORMAL');
12620 
12621   prepare_group_for_proration(p_gt_id           => l_gt_id,
12622                               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12623                               p_pay_adj         => 'APP',
12624                               p_adj_rec         => l_adj_rec,
12625                               p_app_rec         => p_app_rec,
12626                               p_ae_sys_rec      => p_ae_sys_rec);
12627 
12628   update_group_line(p_gt_id           => l_gt_id,
12629                  p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12630                  p_ae_sys_rec      => p_ae_sys_rec);
12631 
12632   prepare_trx_line_proration(p_gt_id           => l_gt_id,
12633                              p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12634                              p_pay_adj         => 'APP',
12635                              p_adj_rec         => l_adj_rec,
12636                              p_app_rec         => p_app_rec,
12637                              p_ae_sys_rec      => p_ae_sys_rec);
12638 
12639   update_line(p_gt_id           => l_gt_id,
12640            p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12641            p_ae_sys_rec      => p_ae_sys_rec);
12642 
12643 
12644   update_ctl_rem_orig(p_gt_id           => l_gt_id,
12645                       p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12646                       p_pay_adj         => 'APP',
12647                       p_ae_sys_rec      => p_ae_sys_rec);
12648 
12649   proration_app_dist_trx(p_gt_id            => l_gt_id,
12650                          p_app_level        => 'TRANSACTION',
12651                          p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
12652                          p_app_rec          => p_app_rec,
12653                          p_ae_sys_rec       => p_ae_sys_rec);
12654 
12655   --BUG#3611016 : Store the gt_id only for Primary set of books
12656 --  IF p_ae_sys_rec.sob_type = 'P' THEN
12657 --     store_gt_id(p_initial   => FALSE,
12658 --                 p_app_level => 'TRANSACTION');
12659 --  END IF;
12660 
12661   IF PG_DEBUG = 'Y' THEN
12662   localdebug('arp_det_dist_pkg.trx_level_cash_apply()-');
12663   END IF;
12664 EXCEPTION
12665  WHEN excep_get_gt_sequence THEN
12666   IF PG_DEBUG = 'Y' THEN
12667   localdebug('EXCEPTION_get_gt_sequence IN Trx_level_cash_apply error count:'||l_msg_count);
12668   localdebug('last error:'||l_msg_data);
12669   END IF;
12670   RAISE;
12671  WHEN E11i_trx_no_llca THEN
12672   IF PG_DEBUG = 'Y' THEN
12673   localdebug('legacy transaction no trx level application allowed.');
12674   END IF;
12675   RAISE;
12676  WHEN fnd_api.G_EXC_ERROR THEN
12677      FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12678                                p_count => l_msg_count,
12679                                p_data  => l_msg_data);
12680   IF PG_DEBUG = 'Y' THEN
12681   localdebug('fnd_api.G_EXC_ERROR IN Trx_level_cash_apply error count:'||l_msg_count);
12682   localdebug('last error:'||l_msg_data);
12683   END IF;
12684   RAISE;
12685  WHEN OTHERS THEN
12686   IF PG_DEBUG = 'Y' THEN
12687   localdebug('OTHERS IN Trx_level_cash_apply :'||SQLERRM);
12688   END IF;
12689   RAISE;
12690 END Trx_level_cash_apply;
12691 
12692 /*-------------------------------------------------------------------------+
12693  | Trx_gp_level_cash_apply                                                 |
12694  +-------------------------------------------------------------------------+
12695  | 1) get_invoice_line_info_per_grp                                        |
12696  | 2) prepare_group_for_proration                                          |
12697  | 3) update_group_line                                                    |
12698  | 4) prepare_trx_line_proration                                           |
12699  | 5) update_line                                                          |
12700  | 6) update_ctl_rem_orig                                                  |
12701  | 7) store_group_id                                                       |
12702  +-------------------------------------------------------------------------+
12703  | parameter:                                                              |
12704  |  p_customer_trx_id     transaction id                                   |
12705  |  p_group_id            source_data_key1                                 |
12706  |  p_app_rec             ar receivable application record                 |
12707  |  p_ae_sys_rec          ar system parameter                              |
12708  +-------------------------------------------------------------------------*/
12709 PROCEDURE Trx_gp_level_cash_apply
12710   (p_customer_trx     IN ra_customer_trx%ROWTYPE,
12711 --   p_group_id         IN VARCHAR2,
12712   --{HYUBPAGP
12713    p_source_data_key1 IN VARCHAR2,
12714    p_source_data_key2 IN VARCHAR2,
12715    p_source_data_key3 IN VARCHAR2,
12716    p_source_data_key4 IN VARCHAR2,
12717    p_source_data_key5 IN VARCHAR2,
12718   --}
12719    p_app_rec          IN ar_receivable_applications%ROWTYPE,
12720    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
12721    p_gt_id            IN VARCHAR2 DEFAULT NULL)
12722 IS
12723   l_adj_rec         ar_adjustments%ROWTYPE;
12724   l_app_rec         ar_receivable_applications%ROWTYPE;
12725   l_gt_id           VARCHAR2(30);
12726   l_return_status   VARCHAR2(1) := fnd_api.g_ret_sts_success;
12727   l_msg_data        VARCHAR2(2000);
12728   l_msg_count       NUMBER;
12729   E11i_gp_no_llca    EXCEPTION;
12730   excep_get_gt_sequence EXCEPTION;
12731   summrize_act_no_llca  EXCEPTION;
12732 BEGIN
12733   IF PG_DEBUG = 'Y' THEN
12734   localdebug('arp_det_dist_pkg.trx_gp_level_cash_apply()+');
12735   localdebug('   p_customer_trx_id       :'||p_customer_trx.customer_trx_id);
12736   localdebug('   p_source_data_key1      :'||p_source_data_key1);
12737   localdebug('   p_source_data_key2      :'||p_source_data_key2);
12738   localdebug('   p_source_data_key3      :'||p_source_data_key3);
12739   localdebug('   p_source_data_key4      :'||p_source_data_key4);
12740   localdebug('   p_source_data_key5      :'||p_source_data_key5);
12741   END IF;
12742 
12743   g_cust_inv_rec    :=  p_customer_trx;
12744 
12745   IF p_gt_id IS NULL THEN
12746      --BUG#4414391
12747      get_gt_sequence (x_gt_id         => l_gt_id,
12748                       x_return_status => l_return_status,
12749                       x_msg_count     => l_msg_count,
12750                       x_msg_data      => l_msg_data);
12751      IF l_return_status <> fnd_api.g_ret_sts_success THEN
12752         RAISE fnd_api.G_EXC_ERROR;
12753      END IF;
12754      --l_gt_id  := g_gt_id;
12755      --}
12756   ELSE
12757     l_gt_id  := p_gt_id;
12758   END IF;
12759 
12760   g_gt_id    := l_gt_id;
12761 
12762   set_mode_process(p_customer_trx  => g_cust_inv_rec,
12763                    p_from_llca     => 'Y');
12764 
12765   IF g_mode_process = 'R12_11ICASH' THEN
12766 
12767     -- Process OLTP application on old transactions
12768     -- with adjustments created in 11I
12769     RAISE E11i_gp_no_llca;
12770 
12771   ELSIF g_mode_process = 'R12_MERGE' THEN
12772 
12773     -- Process OLTP application on transaction with activities
12774     -- having summarized distributions
12775     RAISE summrize_act_no_llca;
12776 
12777   ELSE
12778 
12779    IF g_mode_process = 'R12_11IMFAR' THEN
12780       l_return_status := FND_API.G_RET_STS_SUCCESS;
12781 
12782      ar_upgrade_cash_accrual.COMPARE_RA_REM_AMT
12783      ( p_app_rec         => p_app_rec,
12784        x_app_rec         => l_app_rec,
12785        p_app_level       => 'GROUP',
12786        p_source_data_key1=> p_source_data_key1,
12787        p_source_data_key2=> p_source_data_key2,
12788        p_source_data_key3=> p_source_data_key3,
12789        p_source_data_key4=> p_source_data_key4,
12790        p_source_data_key5=> p_source_data_key5,
12791        p_ctl_id          => NULL,
12792        p_currency        => g_cust_inv_rec.invoice_currency_code,
12793        x_return_status   => l_return_status,
12794        x_msg_data        => l_msg_data,
12795        x_msg_count       => l_msg_count);
12796 
12797      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12798         RAISE fnd_api.G_EXC_ERROR;
12799      ELSE
12800        l_app_rec := p_app_rec;
12801      END IF;
12802 
12803    END IF;
12804   END IF;
12805  --}
12806 
12807 
12808 
12809   conv_acctd_amt(p_pay_adj         => 'APP',
12810                  p_adj_rec         => l_adj_rec,
12811                  p_app_rec         => l_app_rec,
12812                  p_ae_sys_rec      => p_ae_sys_rec);
12813 
12814   get_invoice_line_info_per_grp(p_gt_id           => l_gt_id,
12815                                 p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12816 --                                p_group_id        => p_group_id,
12817                                 --{HYUBPAGP
12818                                 p_source_data_key1 =>  p_source_data_key1,
12819                                 p_source_data_key2 =>  p_source_data_key2,
12820                                 p_source_data_key3 =>  p_source_data_key3,
12821                                 p_source_data_key4 =>  p_source_data_key4,
12822                                 p_source_data_key5 =>  p_source_data_key5,
12823                                 --}
12824                                 p_ae_sys_rec      => p_ae_sys_rec);
12825 
12826   prepare_group_for_proration(p_gt_id           => l_gt_id,
12827                               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12828                               p_pay_adj         => 'APP',
12829                               p_adj_rec         => l_adj_rec,
12830                               p_app_rec         => l_app_rec,
12831                               p_ae_sys_rec      => p_ae_sys_rec);
12832 
12833   update_group_line(p_gt_id           => l_gt_id,
12834                  p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12835                  p_ae_sys_rec      => p_ae_sys_rec);
12836 
12837   prepare_trx_line_proration(p_gt_id           => l_gt_id,
12838                              p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12839                              p_pay_adj         => 'APP',
12840                              p_adj_rec         => l_adj_rec,
12841                              p_app_rec         => l_app_rec,
12842                              p_ae_sys_rec      => p_ae_sys_rec);
12843 
12844   update_line(p_gt_id           => l_gt_id,
12845               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12846               p_ae_sys_rec      => p_ae_sys_rec);
12847 
12848   update_ctl_rem_orig(p_gt_id           => l_gt_id,
12849                       p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
12850                       p_pay_adj         => 'APP',
12851                       p_ae_sys_rec      => p_ae_sys_rec,
12852 --                      p_group_id        => p_group_id,
12853                       --{HYUBPAGP
12854                       p_source_data_key1 =>  p_source_data_key1,
12855                       p_source_data_key2 =>  p_source_data_key2,
12856                       p_source_data_key3 =>  p_source_data_key3,
12857                       p_source_data_key4 =>  p_source_data_key4,
12858                       p_source_data_key5 =>  p_source_data_key5);
12859                       --}
12860 
12861   proration_app_dist_trx(p_gt_id            => l_gt_id,
12862                          p_app_level        => 'GROUP',
12863                          p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
12864                          p_app_rec          => l_app_rec,
12865                          p_ae_sys_rec       => p_ae_sys_rec);
12866 
12867   --BUG#3611016 : Store the gt_id only for Primary set of books
12868 --  IF p_ae_sys_rec.sob_type = 'P' THEN
12869 --    store_gt_id(p_initial   => FALSE,
12870 --                p_app_level => 'GROUP');
12871 --  END IF;
12872 
12873   IF PG_DEBUG = 'Y' THEN
12874   localdebug('arp_det_dist_pkg.trx_gp_level_cash_apply()-');
12875   END IF;
12876 EXCEPTION
12877  WHEN excep_get_gt_sequence THEN
12878   IF PG_DEBUG = 'Y' THEN
12879   localdebug('EXCEPTION_get_gt_sequence IN Trx_level_cash_apply error count:'||l_msg_count);
12880   localdebug('last error:'||l_msg_data);
12881   END IF;
12882   RAISE;
12883  WHEN E11i_gp_no_llca THEN
12884   IF PG_DEBUG = 'Y' THEN
12885   localdebug('legacy transaction no group level application allowed.');
12886   END IF;
12887   RAISE;
12888  WHEN fnd_api.G_EXC_ERROR THEN
12889      FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
12890                                p_count => l_msg_count,
12891                                p_data  => l_msg_data);
12892   IF PG_DEBUG = 'Y' THEN
12893   localdebug('fnd_api.G_EXC_ERROR IN Trx_gp_level_cash_apply error count:'||l_msg_count);
12894   localdebug('last error:'||l_msg_data);
12895   END IF;
12896   RAISE;
12897  WHEN OTHERS THEN
12898   IF PG_DEBUG = 'Y' THEN
12899   localdebug('OTHERS IN Trx_gp_level_cash_apply :'||SQLERRM);
12900   END IF;
12901   RAISE;
12902 END Trx_gp_level_cash_apply;
12903 
12904 
12905 /*-------------------------------------------------------------------------+
12906  | Trx_line_level_cash_apply                                               |
12907  +-------------------------------------------------------------------------+
12908  | 1) get_invoice_line_info_per_line                                       |
12909  | 2) prepare_group_for_proration                                          |
12910  | 3) update_group_line                                                    |
12911  | 4) prepare_trx_line_proration                                           |
12912  | 5) update_line                                                          |
12913  | 6) update_ctl_rem_orig                                                  |
12914  | 7) store_group_id                                                       |
12915  +-------------------------------------------------------------------------+
12916  | parameter:                                                              |
12917  |  p_customer_trx_id      transaction id                                  |
12918  |  p_customer_trx_line_id customer_trx_line_id                            |
12919  |  p_app_rec              ar receivable application record                |
12920  |  p_ae_sys_rec           ar system parameter                             |
12921  +-------------------------------------------------------------------------*/
12922 PROCEDURE Trx_line_level_cash_apply
12923   (p_customer_trx           IN ra_customer_trx%ROWTYPE,
12924    p_customer_trx_line_id   IN VARCHAR2,
12925    p_log_inv_line           IN VARCHAR2 DEFAULT 'N',
12926    p_app_rec                IN ar_receivable_applications%ROWTYPE,
12927    p_ae_sys_rec             IN arp_acct_main.ae_sys_rec_type,
12928    p_gt_id                  IN VARCHAR2 DEFAULT NULL)
12929 IS
12930   l_adj_rec         ar_adjustments%ROWTYPE;
12931   l_app_rec         ar_receivable_applications%ROWTYPE;
12932   l_gt_id           VARCHAR2(30);
12933   l_return_status   VARCHAR2(1) := fnd_api.g_ret_sts_success;
12934   l_msg_data        VARCHAR2(2000);
12935   l_msg_count       NUMBER;
12936   E11i_line_no_llca  EXCEPTION;
12937   excep_get_gt_sequence EXCEPTION;
12938   summrize_act_no_llca  EXCEPTION;
12939 BEGIN
12940   IF PG_DEBUG = 'Y' THEN
12941   localdebug('arp_det_dist_pkg.trx_line_level_cash_apply()+');
12942   localdebug('   p_customer_trx_id       :'||p_customer_trx.customer_trx_id);
12943   localdebug('   p_customer_trx_line_id  :'||p_customer_trx_line_id);
12944   END IF;
12945 
12946   g_cust_inv_rec    :=  p_customer_trx;
12947 
12948   IF p_gt_id IS NULL THEN
12949      --BUG#4414391
12950      get_gt_sequence (x_gt_id         => l_gt_id,
12951                       x_return_status => l_return_status,
12952                       x_msg_count     => l_msg_count,
12953                       x_msg_data      => l_msg_data);
12954      IF l_return_status <> fnd_api.g_ret_sts_success THEN
12955         RAISE excep_get_gt_sequence;
12956      END IF;
12957      --l_gt_id  := g_gt_id;
12958      --}
12959   ELSE
12960     l_gt_id  := p_gt_id;
12961   END IF;
12962 
12963   g_gt_id    := l_gt_id;
12964 
12965   set_mode_process(p_customer_trx  => g_cust_inv_rec,
12966                    p_from_llca     => 'Y');
12967 
12968   IF g_mode_process = 'R12_11ICASH' THEN
12969 
12970     -- Process OLTP application on old transactions
12971     -- with adjustments created in 11I
12972     RAISE E11i_line_no_llca;
12973 
12974   ELSIF g_mode_process = 'R12_MERGE' THEN
12975 
12976     -- Process OLTP application on transaction with activities
12977     -- having summarized distributions
12978     RAISE summrize_act_no_llca;
12979 
12980   ELSE
12981 
12982    IF g_mode_process = 'R12_11IMFAR' THEN
12983       l_return_status := FND_API.G_RET_STS_SUCCESS;
12984 
12985      ar_upgrade_cash_accrual.COMPARE_RA_REM_AMT
12986      ( p_app_rec         => p_app_rec,
12987        x_app_rec         => l_app_rec,
12988        p_app_level       => 'LINE',
12989        p_ctl_id          => p_customer_trx_line_id ,
12990        p_currency        => g_cust_inv_rec.invoice_currency_code,
12991        x_return_status   => l_return_status,
12992        x_msg_data        => l_msg_data,
12993        x_msg_count       => l_msg_count);
12994 
12995      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
12996         RAISE fnd_api.G_EXC_ERROR;
12997      ELSE
12998        l_app_rec := p_app_rec;
12999      END IF;
13000 
13001    ELSE
13002      l_app_rec := p_app_rec;
13003 
13004    END IF;
13005  END IF;
13006  --}
13007 
13008 
13009   conv_acctd_amt(p_pay_adj         => 'APP',
13010                     p_adj_rec         => l_adj_rec,
13011                     p_app_rec         => l_app_rec,
13012                     p_ae_sys_rec      => p_ae_sys_rec);
13013 
13014   get_invoice_line_info_per_line(p_gt_id                => l_gt_id,
13015                                  p_customer_trx_id      => g_cust_inv_rec.customer_trx_id,
13016                                  p_customer_trx_line_id => p_customer_trx_line_id,
13017                                  p_log_inv_line         => p_log_inv_line,
13018                                  p_ae_sys_rec           => p_ae_sys_rec);
13019 
13020   prepare_group_for_proration(p_gt_id           => l_gt_id,
13021                               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13022                               p_pay_adj         => 'APP',
13023                               p_adj_rec         => l_adj_rec,
13024                               p_app_rec         => l_app_rec,
13025                               p_ae_sys_rec      => p_ae_sys_rec);
13026 
13027   update_group_line(p_gt_id           => l_gt_id,
13028                     p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13029                     p_ae_sys_rec      => p_ae_sys_rec);
13030 
13031   prepare_trx_line_proration(p_gt_id           => l_gt_id,
13032                              p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13033                              p_pay_adj         => 'APP',
13034                              p_adj_rec         => l_adj_rec,
13035                              p_app_rec         => l_app_rec,
13036                              p_ae_sys_rec      => p_ae_sys_rec);
13037 
13038   update_line(p_gt_id           => l_gt_id,
13039               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13040               p_ae_sys_rec      => p_ae_sys_rec);
13041 
13042   update_ctl_rem_orig(p_gt_id           => l_gt_id,
13043                       p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13044                       p_pay_adj         => 'APP',
13045                       p_ae_sys_rec      => p_ae_sys_rec,
13046                       p_log_inv_line    => p_log_inv_line,
13047                       p_customer_trx_line_id => p_customer_trx_line_id);
13048 
13049   proration_app_dist_trx(p_gt_id            => l_gt_id,
13050                          p_app_level        => 'LINE',
13051                          p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
13052                          p_app_rec          => l_app_rec,
13053                          p_ae_sys_rec       => p_ae_sys_rec);
13054 
13055   --BUG#3611016 : Store the gt_id only for Primary set of books
13056 --  IF p_ae_sys_rec.sob_type = 'P' THEN
13057 --     store_gt_id(p_initial   => FALSE,
13058 --                 p_app_level => 'LINE');
13059 --  END IF;
13060 
13061   IF PG_DEBUG = 'Y' THEN
13062   localdebug('arp_det_dist_pkg.trx_line_level_cash_apply()-');
13063   END IF;
13064 EXCEPTION
13065  WHEN excep_get_gt_sequence THEN
13066   IF PG_DEBUG = 'Y' THEN
13067   localdebug('EXCEPTION_get_gt_sequence IN Trx_level_cash_apply error count:'||l_msg_count);
13068   localdebug('last error:'||l_msg_data);
13069   END IF;
13070   RAISE;
13071  WHEN E11i_line_no_llca THEN
13072   IF PG_DEBUG = 'Y' THEN
13073   localdebug('legacy transaction no line level application allowed.');
13074   END IF;
13075   RAISE;
13076  WHEN fnd_api.G_EXC_ERROR THEN
13077      FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
13078                                p_count => l_msg_count,
13079                                p_data  => l_msg_data);
13080   IF PG_DEBUG = 'Y' THEN
13081   localdebug('fnd_api.G_EXC_ERROR IN Trx_line_level_cash_apply error count:'||l_msg_count);
13082   localdebug('last error:'||l_msg_data);
13083   END IF;
13084   RAISE;
13085  WHEN OTHERS THEN
13086   IF PG_DEBUG = 'Y' THEN
13087   localdebug('OTHERS IN Trx_line_level_cash_apply :'||SQLERRM);
13088   END IF;
13089   RAISE;
13090 END Trx_line_level_cash_apply;
13091 
13092 
13093 /*------------------------------------------------+
13094  | Procedure copy_trx_lines
13095  +------------------------------------------------
13096  | Purpose cache the transaction lines in memory
13097  | to enhance the performance of the process
13098  +------------------------------------------------
13099  | History
13100  |   Created     01-Nov-2004
13101  |   Modified    02-Feb-2005   BR Enhancement
13102  +------------------------------------------------*/
13103 PROCEDURE copy_trx_lines
13104 (p_customer_trx_id  IN NUMBER,
13105  p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
13106  p_customer_trx_line_id IN ra_customer_trx_lines.customer_trx_line_id%TYPE DEFAULT NULL)
13107 IS
13108   CURSOR cu_line_loaded (p_customer_trx_id IN NUMBER,
13109 			 p_customer_trx_line_id IN ra_customer_trx_lines.customer_trx_line_id%TYPE ) IS
13110   SELECT 'x'
13111     FROM ra_customer_trx_lines_gt
13112    WHERE customer_trx_id = p_customer_trx_id
13113    AND   customer_trx_line_id = NVL(p_customer_trx_line_id, customer_trx_line_id);
13114   l_exist  VARCHAR2(1);
13115 
13116   CURSOR c_frt_chrg IS
13117   SELECT MAX(line_type)
13118     FROM ra_customer_trx_lines_gt
13119    WHERE line_type        IN ('CHARGES','FREIGHT')
13120      AND customer_trx_id  = p_customer_trx_id
13121    GROUP BY line_type;
13122 
13123   l_frt_chrg     VARCHAR2(30);
13124   l_rows         NUMBER;
13125 
13126 BEGIN
13127   IF PG_DEBUG = 'Y' THEN
13128   localdebug('arp_det_dist_pkg.copy_trx_lines()+');
13129   localdebug('     p_customer_trx_id :'||p_customer_trx_id);
13130   END IF;
13131   OPEN cu_line_loaded(p_customer_trx_id, p_customer_trx_line_id);
13132   FETCH cu_line_loaded INTO l_exist;
13133 
13134   IF cu_line_loaded%NOTFOUND THEN
13135 
13136    IF g_mode_process IN ('R12_NLB','R12_MERGE','R12_11ICASH')
13137    THEN
13138 
13139      INSERT INTO ra_customer_trx_lines_gt
13140       (customer_trx_line_id,
13141        link_to_cust_trx_line_id,
13142        customer_trx_id     ,
13143        set_of_books_id     ,
13144        line_type           ,
13145        source_data_key1    ,
13146        source_data_key2    ,
13147        source_data_key3    ,
13148        source_data_key4    ,
13149        source_data_key5    ,
13150        amount_due_remaining,
13151        acctd_amount_due_remaining,
13152        amount_due_original       ,
13153        acctd_amount_due_original ,
13154        chrg_amount_remaining     ,
13155        chrg_acctd_amount_remaining,
13156        frt_adj_remaining      ,
13157        frt_adj_acctd_remaining,
13158        group_id               ,
13159        --{HYUBRe
13160        br_line_orig_amt ,
13161        br_tax_orig_amt  ,
13162        br_frt_orig_amt  ,
13163        br_chrg_orig_amt ,
13164        br_line_orig_acctd_amt,
13165        br_tax_orig_acctd_amt,
13166        br_frt_orig_acctd_amt,
13167        br_chrg_orig_acctd_amt,
13168        br_ref_customer_trx_id,
13169        br_adjustment_id,
13170        line_origin
13171        --}
13172        )
13173    SELECT
13174      tl.customer_trx_line_id,
13175      tl.link_to_cust_trx_line_id,
13176      tl.customer_trx_id     ,
13177      tl.set_of_books_id     ,
13178      tl.line_type           ,
13179      '00',
13180      '00',
13181      '00',
13182      '00',
13183      '00',
13184      orl.sum_amt,                    -- amount_due_remaining
13185      orl.sum_acctd_amt,              -- acctd_amount_due_remaining
13186      orl.sum_amt,                    -- amount_due_original
13187      orl.sum_acctd_amt,              -- acctd_amount_due_original
13188      fcrl.chrg_on_rev_line,          -- chrg_amount_remaining
13189      fcrl.acctd_chrg_on_rev_line,    -- chrg_acctd_amount_remaining
13190      fcrl.frt_on_rev_line,           -- frt_adj_remaining
13191      fcrl.acctd_frt_on_rev_line,     -- frt_Adj_acctd_remaining
13192      DECODE(tl.source_data_key1 ||
13193             tl.source_data_key2 ||
13194             tl.source_data_key3 ||
13195             tl.source_data_key4 ||
13196             tl.source_data_key5, NULL, '00',
13197                  tl.source_data_key1 ||'-'||
13198                  tl.source_data_key2 ||'-'||
13199                  tl.source_data_key3 ||'-'||
13200                  tl.source_data_key4 ||'-'||
13201                  tl.source_data_key5),
13202     --{HYU BRe
13203     0 ,
13204     0 ,
13205     0 ,
13206     0 ,
13207     0 ,
13208     0 ,
13209     0 ,
13210     0 ,
13211     '',  --tl.br_ref_customer_trx_id,
13212     '',  --tl.br_adjustment_id,
13213     ''  --DECODE(tl.br_ref_customer_trx_id, NULL, 'CTL',   --Regular Trx Line
13214          --  DECODE(typ.type, 'BR','BR_BR_ORIG_ASSIG', --BR assigned to a BR
13215          --               'BR_TRX_ORIG_ASSIG')--Regular TRX assigned to BR
13216          --  )                                              --    LINE_ORIGIN
13217     --}
13218     FROM ra_customer_trx_lines   tl,
13219 --         ra_customer_trx         br,
13220 --         ra_cust_trx_types       typ,
13221         -- Amount for original and remaining for all type of lines on reve line
13222        (SELECT SUM(AMOUNT)           sum_amt,
13223                SUM(ACCTD_AMOUNT)     sum_acctd_amt,
13224                customer_trx_line_id
13225           FROM ra_cust_trx_line_gl_dist
13226          WHERE customer_trx_id  = p_customer_trx_id
13227          GROUP BY customer_trx_line_id)                                              orl,
13228         -- Amount for charges and freight on revenue line
13229         (SELECT  SUM((DECODE(a.activity_bucket,'ADJ_CHRG',amt,'APP_CHRG',amt,0)))         CHRG_ON_REV_LINE
13230                 ,SUM((DECODE(a.activity_bucket,'ADJ_CHRG',acctd_amt,'APP_CHRG',acctd_amt,0)))   ACCTD_CHRG_ON_REV_LINE
13231                 ,SUM((DECODE(a.activity_bucket,'ADJ_FRT' ,amt,'APP_FRT',amt,0)))         FRT_ON_REV_LINE
13232                 ,SUM((DECODE(a.activity_bucket,'ADJ_FRT' ,acctd_amt,'APP_FRT',acctd_amt,0)))         ACCTD_FRT_ON_REV_LINE
13233                 ,a.ref_customer_trx_line_id
13234            FROM
13235             (SELECT SUM( NVL(ard.amount_cr,0)       - NVL(ard.amount_dr,0)      ) amt,
13236                     SUM( NVL(ard.acctd_amount_cr,0) - NVL(ard.acctd_amount_dr,0)) acctd_amt,
13237                     ard.ref_customer_trx_line_id,
13238                     ard.activity_bucket
13239                FROM ar_adjustments        adj,
13240                     ar_distributions      ard,
13241                     ra_customer_trx_lines ctl
13242               WHERE ctl.customer_trx_id      = p_customer_trx_id
13243                 AND ctl.line_type            = 'LINE'
13244                 AND adj.customer_trx_id      = p_customer_trx_id
13245                 AND adj.adjustment_id        = ard.source_id
13246                 AND ard.source_table         = 'ADJ'
13247                 AND ard.ref_customer_trx_line_id = ctl.customer_trx_line_id
13248                 AND ard.activity_bucket              IN ('ADJ_CHRG','ADJ_FRT')
13249               GROUP BY ard.ref_customer_trx_line_id,
13250                        ard.activity_bucket
13251              UNION ALL
13252              SELECT SUM( NVL(ard.amount_cr,0)       - NVL(ard.amount_dr,0)      ) amt,
13253                     SUM( NVL(ard.acctd_amount_cr,0) - NVL(ard.acctd_amount_dr,0)) acctd_amt,
13254                     ard.ref_customer_trx_line_id,
13255                     ard.activity_bucket
13256                FROM ar_receivable_applications ra,
13257                     ar_distributions      ard,
13258                     ra_customer_trx_lines ctl
13259               WHERE ctl.customer_trx_id             = p_customer_trx_id
13260                 AND ctl.line_type                   = 'LINE'
13261                 AND ra.applied_customer_trx_id      = p_customer_trx_id
13262                 AND ra.receivable_application_id    = ard.source_id
13263                 AND ard.source_table                = 'RA'
13264                 AND ard.ref_customer_trx_line_id    = ctl.customer_trx_line_id
13265                 AND ard.activity_bucket             IN ('APP_CHRG','APP_FRT')
13266               GROUP BY ard.ref_customer_trx_line_id,
13267                        ard.activity_bucket) a
13268            GROUP BY a.ref_customer_trx_line_id)                                      fcrl
13269    WHERE tl.customer_trx_id        = p_customer_trx_id
13270      AND tl.customer_trx_line_id   = orl.customer_trx_line_id
13271      AND tl.customer_trx_line_id   = fcrl.ref_customer_trx_line_id(+)
13272      AND (tl.customer_trx_line_id   = NVL(p_customer_trx_line_id, tl.customer_trx_line_id)
13273           OR tl.link_to_cust_trx_line_id = NVL(p_customer_trx_line_id, tl.customer_trx_line_id));
13274 --     AND tl.br_ref_customer_trx_id = br.customer_trx_id(+)
13275 --	 AND br.cust_trx_type_id       = typ.cust_trx_type_id(+);
13276 
13277     l_rows := sql%rowcount;
13278     localdebug('  rows inserted = ' || l_rows);
13279   ELSE
13280 
13281   INSERT INTO ra_customer_trx_lines_gt
13282   (CUSTOMER_TRX_LINE_ID,
13283    LINK_TO_CUST_TRX_LINE_ID,
13284    CUSTOMER_TRX_ID     ,
13285    SET_OF_BOOKS_ID     ,
13286    LINE_TYPE           ,
13287    SOURCE_DATA_KEY1    ,
13288    SOURCE_DATA_KEY2    ,
13289    SOURCE_DATA_KEY3    ,
13290    SOURCE_DATA_KEY4    ,
13291    SOURCE_DATA_KEY5    ,
13292    AMOUNT_DUE_REMAINING,
13293    ACCTD_AMOUNT_DUE_REMAINING ,
13294    AMOUNT_DUE_ORIGINAL        ,
13295    ACCTD_AMOUNT_DUE_ORIGINAL  ,
13296    CHRG_AMOUNT_REMAINING      ,
13297    CHRG_ACCTD_AMOUNT_REMAINING,
13298    FRT_ADJ_REMAINING          ,
13299    FRT_ADJ_ACCTD_REMAINING    ,
13300    group_id                   ,
13301    --{HYUBRe
13302    BR_LINE_ORIG_AMT      ,
13303    BR_TAX_ORIG_AMT       ,
13304    BR_FRT_ORIG_AMT       ,
13305    BR_CHRG_ORIG_AMT      ,
13306    BR_LINE_ORIG_ACCTD_AMT,
13307    BR_TAX_ORIG_ACCTD_AMT ,
13308    BR_FRT_ORIG_ACCTD_AMT ,
13309    BR_CHRG_ORIG_ACCTD_AMT,
13310    BR_REF_CUSTOMER_TRX_ID,
13311    BR_ADJUSTMENT_ID,
13312    LINE_ORIGIN
13313    --}
13314     )
13315    SELECT
13316      tl.CUSTOMER_TRX_LINE_ID,
13317      tl.LINK_TO_CUST_TRX_LINE_ID,
13318      tl.CUSTOMER_TRX_ID     ,
13319      tl.SET_OF_BOOKS_ID     ,
13320      tl.LINE_TYPE           ,
13321      '00',
13322      '00',
13323      '00',
13324      '00',
13325      '00',
13326      tl.AMOUNT_DUE_REMAINING,
13327      tl.ACCTD_AMOUNT_DUE_REMAINING ,
13328      tl.AMOUNT_DUE_ORIGINAL        ,
13329      tl.ACCTD_AMOUNT_DUE_ORIGINAL  ,
13330      tl.CHRG_AMOUNT_REMAINING,
13331      tl.CHRG_ACCTD_AMOUNT_REMAINING,
13332      tl.FRT_ADJ_REMAINING,
13333      tl.FRT_ADJ_ACCTD_REMAINING,
13334      DECODE(tl.SOURCE_DATA_KEY1 ||
13335             tl.SOURCE_DATA_KEY2 ||
13336             tl.SOURCE_DATA_KEY3 ||
13337             tl.SOURCE_DATA_KEY4 ||
13338             tl.SOURCE_DATA_KEY5, NULL, '00',
13339                  tl.SOURCE_DATA_KEY1 ||'-'||
13340                  tl.SOURCE_DATA_KEY2 ||'-'||
13341                  tl.SOURCE_DATA_KEY3 ||'-'||
13342                  tl.SOURCE_DATA_KEY4 ||'-'||
13343                  tl.SOURCE_DATA_KEY5),
13344     --{HYU BRe
13345     0 ,
13346     0 ,
13347     0 ,
13348     0 ,
13349     0 ,
13350     0 ,
13351     0 ,
13352     0 ,
13353     '',  --tl.BR_REF_CUSTOMER_TRX_ID,
13354     '',  --tl.BR_ADJUSTMENT_ID,
13355     ''   --DECODE(tl.BR_REF_CUSTOMER_TRX_ID, NULL, 'CTL',   --Regular Trx Line
13356          --  DECODE(typ.type, 'BR','BR_BR_ORIG_ASSIG', --BR assigned to a BR
13357 		 --                        'BR_TRX_ORIG_ASSIG')--Regular TRX assigned to BR
13358 		 --  )                                              --    LINE_ORIGIN
13359     --}
13360     FROM ra_customer_trx_lines   tl
13361 --         ra_customer_trx         br,
13362 --         ra_cust_trx_types       typ
13363    WHERE tl.customer_trx_id        = p_customer_trx_id
13364    AND   (tl.customer_trx_line_id   = NVL(p_customer_trx_line_id, tl.customer_trx_line_id)
13365           OR tl.link_to_cust_trx_line_id = NVL(p_customer_trx_line_id, tl.customer_trx_line_id));
13366 --     AND tl.br_ref_customer_trx_id = br.customer_trx_id(+)
13367 --	 AND br.cust_trx_type_id       = typ.cust_trx_type_id(+);
13368 
13369      l_rows := sql%rowcount;
13370      IF PG_DEBUG = 'Y' THEN
13371      localdebug('  rows inserted = ' || l_rows);
13372      END IF;
13373 
13374    END IF;
13375 
13376 
13377    --{SET the g_trx_line_frt or chrg flags
13378    OPEN c_frt_chrg;
13379    LOOP
13380      FETCH c_frt_chrg INTO l_frt_chrg;
13381      EXIT WHEN c_frt_chrg%NOTFOUND;
13382      IF l_frt_chrg = 'FREIGHT' THEN
13383        g_trx_line_frt  := 'Y';
13384      END IF;
13385      IF l_frt_chrg = 'CHARGES' THEN
13386        g_trx_line_chrg := 'Y';
13387      END IF;
13388    END LOOP;
13389    CLOSE c_frt_chrg;
13390    --}
13391 
13392 
13393   END IF;
13394   CLOSE cu_line_loaded;
13395 
13396   IF g_cm_trx_id is not null THEN
13397       localdebug('flow for regular cm');
13398       localdebug('   g_cm_trx_id                :'||g_cm_trx_id);
13399       localdebug('   g_cm_upg_mthd              :'||g_cm_upg_mthd);
13400    IF g_cm_upg_mthd IN ('R12_NLB','R12_MERGE') THEN
13401       UPDATE ra_customer_trx_lines_gt tl
13402       SET(cm_amt_due_orig,   cm_amt_due_rem,   cm_acctd_amt_due_orig,   cm_acctd_amt_due_rem) =
13403         (SELECT sum(sum_amt),
13404            sum(sum_amt),
13405            sum(sum_acctd_amt),
13406            sum(sum_acctd_amt)
13407          FROM
13408           (SELECT SUM(amount) sum_amt,
13409              SUM(acctd_amount) sum_acctd_amt,
13410              customer_trx_line_id
13411            FROM ra_cust_trx_line_gl_dist
13412            WHERE customer_trx_id = g_cm_trx_id
13413            GROUP BY customer_trx_line_id)
13414         cm_gld,
13415            ra_customer_trx_lines cm_tl
13416          WHERE cm_tl.customer_trx_id = g_cm_trx_id
13417          AND cm_gld.customer_trx_line_id = cm_tl.customer_trx_line_id
13418          AND cm_tl.previous_customer_trx_line_id = tl.customer_trx_line_id)
13419       WHERE customer_trx_id = p_customer_trx_id;
13420      l_rows := sql%rowcount;
13421      IF PG_DEBUG = 'Y' THEN
13422      localdebug('  rows updated = ' || l_rows);
13423      END IF;
13424    ELSE
13425       UPDATE ra_customer_trx_lines_gt tl
13426       SET(cm_amt_due_orig,   cm_amt_due_rem,   cm_acctd_amt_due_orig,   cm_acctd_amt_due_rem) =
13427         (SELECT sum(amount_due_original),
13428            sum(amount_due_remaining),
13429            sum(acctd_amount_due_original),
13430            sum(acctd_amount_due_remaining)
13431          FROM
13432            ra_customer_trx_lines cm_tl
13433          WHERE cm_tl.customer_trx_id = g_cm_trx_id
13434          AND cm_tl.previous_customer_trx_line_id = tl.customer_trx_line_id)
13435       WHERE customer_trx_id = p_customer_trx_id;
13436      l_rows := sql%rowcount;
13437      IF PG_DEBUG = 'Y' THEN
13438      localdebug('  rows updated = ' || l_rows);
13439      END IF;
13440    END IF;
13441   END IF;
13442 
13443   IF (PG_DEBUG = 'Y') THEN
13444 	display_cust_trx_gt(p_customer_trx_id => p_customer_trx_id);
13445   END IF;
13446   IF PG_DEBUG = 'Y' THEN
13447   localdebug('arp_det_dist_pkg.copy_trx_lines()-');
13448   END IF;
13449 EXCEPTION
13450  WHEN OTHERS THEN
13451    IF PG_DEBUG = 'Y' THEN
13452    localdebug('EXCEPTION OTHERS copy_trx_lines:'||SQLERRM);
13453    END IF;
13454 END copy_trx_lines;
13455 
13456 
13457 
13458 PROCEDURE final_update_inv_ctl_rem_orig
13459   (p_customer_trx     IN ra_customer_trx%ROWTYPE)
13460 IS
13461   CURSOR c(p_customer_trx_id  IN NUMBER) IS
13462   SELECT /*+INDEX (ctl ra_customer_trx_lines_gt_n1)*/
13463          b.AMOUNT_DUE_REMAINING      ,
13464          b.ACCTD_AMOUNT_DUE_REMAINING,
13465          b.AMOUNT_DUE_ORIGINAL       ,
13466          b.ACCTD_AMOUNT_DUE_ORIGINAL ,
13467          b.CHRG_AMOUNT_REMAINING     ,
13468          b.CHRG_ACCTD_AMOUNT_REMAINING,
13469          b.FRT_ADJ_REMAINING         ,
13470          b.FRT_ADJ_ACCTD_REMAINING   ,
13471          b.frt_ed_amount,
13472          b.frt_ed_acctd_amount,
13473          b.frt_uned_amount,
13474          b.frt_uned_acctd_amount,
13475          b.customer_trx_line_id
13476     FROM ra_customer_trx_lines_gt b
13477    WHERE b.customer_trx_id = p_customer_trx_id;
13478 
13479   l_amt_rem_tab                 DBMS_SQL.NUMBER_TABLE;
13480   l_acctd_amt_rem_tab           DBMS_SQL.NUMBER_TABLE;
13481   l_amt_orig_tab                DBMS_SQL.NUMBER_TABLE;
13482   l_acctd_amt_orig_tab          DBMS_SQL.NUMBER_TABLE;
13483   l_chrg_amt_rem_tab            DBMS_SQL.NUMBER_TABLE;
13484   l_chrg_acctd_amt_rem_tab      DBMS_SQL.NUMBER_TABLE;
13485   l_frt_adj_amt_rem_tab         DBMS_SQL.NUMBER_TABLE;
13486   l_frt_adj_acctd_amt_rem_tab   DBMS_SQL.NUMBER_TABLE;
13487   l_frt_ed_amt_tab         DBMS_SQL.NUMBER_TABLE;
13488   l_frt_ed_acctd_amt_tab   DBMS_SQL.NUMBER_TABLE;
13489   l_frt_uned_amt_tab         DBMS_SQL.NUMBER_TABLE;
13490   l_frt_uned_acctd_amt_tab   DBMS_SQL.NUMBER_TABLE;
13491   l_ctl_id_tab                  DBMS_SQL.NUMBER_TABLE;
13492   l_last_fetch                  BOOLEAN := FALSE;
13493 
13494 /* 12902724 */
13495   l_count      number;
13496   l_boundary_flag VARCHAR2(1);
13497   l_status varchar2(10);
13498   l_amt_due_rem_ps number;
13499   l_amt_due_orig_ps number;
13500 
13501 BEGIN
13502   IF PG_DEBUG = 'Y' THEN
13503   localdebug('arp_det_dist_pkg.final_update_inv_ctl_rem_orig()+');
13504   END IF;
13505 
13506   l_boundary_flag := 'N';
13507 
13508 select count(*) into l_count from ar_payment_schedules where customer_trx_id=p_customer_trx.customer_trx_id;
13509 
13510 IF l_count = 1 THEN
13511   select status,amount_due_original,amount_due_remaining into l_status,l_amt_due_orig_ps,l_amt_due_rem_ps
13512    from ar_payment_schedules where customer_trx_id=p_customer_trx.customer_trx_id;
13513   if l_status = 'CL' THEN
13514      l_boundary_flag := 'C';
13515   end if;
13516 ELSE
13517   l_boundary_flag := 'N';
13518 END IF;
13519 
13520   OPEN c(p_customer_trx.customer_trx_id);
13521   LOOP
13522   FETCH c BULK COLLECT INTO l_amt_rem_tab,
13523                             l_acctd_amt_rem_tab,
13524                             l_amt_orig_tab,
13525                             l_acctd_amt_orig_tab,
13526                             l_chrg_amt_rem_tab,
13527                             l_chrg_acctd_amt_rem_tab,
13528                             l_frt_adj_amt_rem_tab,
13529                             l_frt_adj_acctd_amt_rem_tab,
13530                             l_frt_ed_amt_tab,
13531                             l_frt_ed_acctd_amt_tab,
13532                             l_frt_uned_amt_tab,
13533                             l_frt_uned_acctd_amt_tab,
13534                             l_ctl_id_tab
13535                     LIMIT g_bulk_fetch_rows;
13536 
13537      IF c%NOTFOUND THEN
13538           l_last_fetch := TRUE;
13539      END IF;
13540 
13541      IF (l_ctl_id_tab.COUNT = 0) AND (l_last_fetch) THEN
13542        IF PG_DEBUG = 'Y' THEN
13543        localdebug('COUNT = 0 and LAST FETCH ');
13544        END IF;
13545        EXIT;
13546      END IF;
13547 IF l_boundary_flag = 'N' THEN
13548 
13549      FORALL i IN l_ctl_id_tab.FIRST .. l_ctl_id_tab.LAST
13550      UPDATE ra_customer_trx_lines
13551         SET AMOUNT_DUE_REMAINING        = l_amt_rem_tab(i),
13552             ACCTD_AMOUNT_DUE_REMAINING  = l_acctd_amt_rem_tab(i),
13553             AMOUNT_DUE_ORIGINAL         = l_amt_orig_tab(i),
13554             ACCTD_AMOUNT_DUE_ORIGINAL   = l_acctd_amt_orig_tab(i),
13555             CHRG_AMOUNT_REMAINING       = l_chrg_amt_rem_tab(i),
13556             CHRG_ACCTD_AMOUNT_REMAINING = l_chrg_acctd_amt_rem_tab(i),
13557             FRT_ADJ_REMAINING           = l_frt_adj_amt_rem_tab(i),
13558             FRT_ADJ_ACCTD_REMAINING     = l_frt_adj_acctd_amt_rem_tab(i),
13559             frt_ed_amount               = l_frt_ed_amt_tab(i),
13560             frt_ed_acctd_amount         = l_frt_ed_acctd_amt_tab(i),
13561             frt_uned_amount             = l_frt_uned_amt_tab(i),
13562             frt_uned_acctd_amount       = l_frt_uned_acctd_amt_tab(i)
13563       WHERE customer_trx_line_id        = l_ctl_id_tab(i)
13564         AND customer_trx_id             = p_customer_trx.customer_trx_id;
13565 
13566 ELSE
13567      FORALL i IN l_ctl_id_tab.FIRST .. l_ctl_id_tab.LAST
13568      UPDATE ra_customer_trx_lines
13569         SET AMOUNT_DUE_REMAINING        = l_amt_rem_tab(i),
13570             ACCTD_AMOUNT_DUE_REMAINING  = decode(l_boundary_flag, 'C',0,l_acctd_amt_rem_tab(i)),
13571             AMOUNT_DUE_ORIGINAL         = l_amt_orig_tab(i),
13572             ACCTD_AMOUNT_DUE_ORIGINAL   = l_acctd_amt_orig_tab(i),
13573             CHRG_AMOUNT_REMAINING       = l_chrg_amt_rem_tab(i),
13574             CHRG_ACCTD_AMOUNT_REMAINING = l_chrg_acctd_amt_rem_tab(i),
13575             FRT_ADJ_REMAINING           = l_frt_adj_amt_rem_tab(i),
13576             FRT_ADJ_ACCTD_REMAINING     = l_frt_adj_acctd_amt_rem_tab(i),
13577             frt_ed_amount               = l_frt_ed_amt_tab(i),
13578             frt_ed_acctd_amount         = l_frt_ed_acctd_amt_tab(i),
13579             frt_uned_amount             = l_frt_uned_amt_tab(i),
13580             frt_uned_acctd_amount       = l_frt_uned_acctd_amt_tab(i)
13581       WHERE customer_trx_line_id        = l_ctl_id_tab(i)
13582         AND customer_trx_id             = p_customer_trx.customer_trx_id;
13583 
13584 END IF;
13585 
13586    END LOOP;
13587    CLOSE c;
13588   IF PG_DEBUG = 'Y' THEN
13589   localdebug('arp_det_dist_pkg.final_update_inv_ctl_rem_orig()-');
13590   END IF;
13591 END final_update_inv_ctl_rem_orig;
13592 
13593 
13594 PROCEDURE create_final_split
13595 (p_customer_trx     IN ra_customer_trx%ROWTYPE,
13596  p_app_rec          IN ar_receivable_applications%ROWTYPE,
13597  p_adj_rec          IN ar_adjustments%ROWTYPE,
13598  p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type)
13599 IS
13600 BEGIN
13601   IF PG_DEBUG = 'Y' THEN
13602   localdebug('arp_det_dist_pkg.create_final_split()+');
13603 -- From distributions
13604   localdebug(' p_app_rec.ACCTD_AMOUNT_APPLIED_FROM    :'||p_app_rec.ACCTD_AMOUNT_APPLIED_FROM);
13605   localdebug(' p_app_rec.AMOUNT_APPLIED_FROM          :'||p_app_rec.AMOUNT_APPLIED_FROM    );
13606   END IF;
13607 
13608   update_from_gt
13609   (p_from_amt            => p_app_rec.AMOUNT_APPLIED_FROM,
13610    p_from_acctd_amt      => p_app_rec.ACCTD_AMOUNT_APPLIED_FROM,
13611    p_ae_sys_rec          => p_ae_sys_rec,
13612    p_app_rec             => p_app_rec);
13613 
13614   IF     p_adj_rec.adjustment_id IS NOT NULL THEN
13615 
13616     Reconciliation
13617     (p_app_rec             => p_app_rec,
13618      p_adj_rec             => p_adj_rec,
13619      p_activity_type       => 'ADJ');
13620 
13621     stamping_adj(p_adj_id  => p_adj_rec.adjustment_id);
13622   ELSIF  p_app_rec.receivable_application_id IS NOT NULL THEN
13623 
13624     Reconciliation
13625     (p_app_rec             => p_app_rec,
13626      p_adj_rec             => p_adj_rec,
13627      p_activity_type       => 'RA');
13628 
13629     stamping_ra(p_app_id  => p_app_rec.receivable_application_id);
13630   END IF;
13631 
13632 --  get_diag_flag;
13633 
13634 --  IF g_diag_flag IN ('Y') THEN
13635   IF PG_DEBUG = 'Y' THEN
13636     diag_data;
13637   END IF;
13638 --  END IF;
13639   IF PG_DEBUG = 'Y' THEN
13640   localdebug('arp_det_dist_pkg.create_final_split()-');
13641   END IF;
13642 END create_final_split;
13643 
13644 /*-------------------------------------------------------------------------+
13645  | Trx_level_direct_adjust                                                 |
13646  +-------------------------------------------------------------------------+
13647  | 1) get_invoice_line_info                                                |
13648  | 2) prepare_group_for_proration                                          |
13649  | 3) update_group_line                                                    |
13650  | 4) prepare_trx_line_proration                                           |
13651  | 5) update_line                                                          |
13652  | 6) update_ctl_rem_orig                                                  |
13653  | 7) store_gt_id                                                          |
13654  +-------------------------------------------------------------------------+
13655  | parameter:                                                              |
13656  |  p_customer_trx_id     transaction id
13657  |  p_adj_rec             ar adjustment record
13658  |  p_ae_sys_rec          ar system parameter
13659  +-------------------------------------------------------------------------*/
13660 PROCEDURE Trx_level_direct_adjust
13661   (p_customer_trx     IN ra_customer_trx%ROWTYPE,
13662    p_adj_rec          IN ar_adjustments%ROWTYPE,
13663    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
13664    p_gt_id            IN NUMBER DEFAULT NULL)
13665 IS
13666   l_app_rec        ar_receivable_applications%ROWTYPE;
13667   l_gt_id          NUMBER;
13668   l_return_status  VARCHAR2(1) := fnd_api.g_ret_sts_success;
13669   l_msg_count      NUMBER := 0;
13670   l_msg_data       VARCHAR2(2000);
13671   excep_get_gt_sequence EXCEPTION;
13672 BEGIN
13673   IF PG_DEBUG = 'Y' THEN
13674   localdebug('arp_det_dist_pkg.trx_level_direct_adjust()+');
13675   localdebug('   p_customer_trx_id       :'||p_customer_trx.customer_trx_id);
13676   END IF;
13677 
13678   IF p_gt_id IS NULL THEN
13679      --BUG#4414391
13680      get_gt_sequence (x_gt_id         => l_gt_id,
13681                       x_return_status => l_return_status,
13682                       x_msg_count     => l_msg_count,
13683                       x_msg_data      => l_msg_data);
13684      IF l_return_status <> fnd_api.g_ret_sts_success THEN
13685         RAISE excep_get_gt_sequence;
13686      END IF;
13687      --l_gt_id  := g_gt_id;
13688      --}
13689   ELSE
13690     l_gt_id  := p_gt_id;
13691   END IF;
13692 
13693   g_gt_id    := l_gt_id;
13694 
13695   --{BUG#4415037
13696   set_interface_flag(p_source_table => 'ADJ');
13697   --}
13698 
13699   g_cust_inv_rec   := p_customer_trx;
13700 
13701   set_mode_process(p_customer_trx  => g_cust_inv_rec,
13702                    p_from_llca     => 'N');
13703 
13704   copy_trx_lines(p_customer_trx_id  => p_customer_trx.customer_trx_id,
13705                  p_ae_sys_rec       => p_ae_sys_rec);
13706 
13707   conv_acctd_amt(p_pay_adj         => 'ADJ',
13708                  p_adj_rec         => p_adj_rec,
13709                  p_app_rec         => l_app_rec,
13710                  p_ae_sys_rec      => p_ae_sys_rec);
13711 
13712   get_invoice_line_info(p_gt_id            => l_gt_id,
13713                         p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
13714                         p_ae_sys_rec       => p_ae_sys_rec,
13715                         p_mode             => 'NORMAL');
13716 
13717   prepare_group_for_proration(p_gt_id           => l_gt_id,
13718                               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13719                               p_pay_adj         => 'ADJ',
13720                               p_adj_rec         => p_adj_rec,
13721                               p_app_rec         => l_app_rec,
13722                               p_ae_sys_rec      => p_ae_sys_rec);
13723 
13724   update_group_line(p_gt_id           => l_gt_id,
13725                     p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13726                     p_ae_sys_rec      => p_ae_sys_rec);
13727 
13728   prepare_trx_line_proration(p_gt_id           => l_gt_id,
13729                              p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13730                              p_pay_adj         => 'ADJ',
13731                              p_adj_rec         => p_adj_rec,
13732                              p_app_rec         => l_app_rec,
13733                              p_ae_sys_rec      => p_ae_sys_rec);
13734 
13735   update_line(p_gt_id           => l_gt_id,
13736            p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13737            p_ae_sys_rec      => p_ae_sys_rec);
13738 
13739 
13740   update_ctl_rem_orig(p_gt_id           => l_gt_id,
13741                       p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
13742                       p_pay_adj         => 'ADJ',
13743                       p_ae_sys_rec      => p_ae_sys_rec);
13744 
13745   proration_adj_dist_trx(p_gt_id            => l_gt_id,
13746                          p_app_level        => 'TRANSACTION',
13747                          p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
13748                          p_adj_rec          => p_adj_rec,
13749                          p_ae_sys_rec       => p_ae_sys_rec);
13750 
13751 --HYU
13752 --BUG#3611016 : Store the gt_id only for Primary set of books
13753 --  IF p_ae_sys_rec.sob_type = 'P' THEN
13754 --     store_gt_id(p_initial   => FALSE,
13755 --                 p_app_level => 'TRANSACTION');
13756 --  END IF;
13757 
13758   --
13759   -- For invoice leagcy from 11i Cash basis, we do not maintain the balancing
13760   --
13761 --{HYUNLB
13762 --  IF g_mode_process <> 'R12_11ICASH' THEN
13763 --     final_update_inv_ctl_rem_orig(p_customer_trx => p_customer_trx);
13764 --  END IF;
13765 --}
13766   IF g_mode_process IN ('R12','R12_11IMFAR') THEN
13767      final_update_inv_ctl_rem_orig(p_customer_trx => p_customer_trx);
13768   END IF;
13769 
13770 
13771   create_final_split(p_customer_trx => p_customer_trx,
13772                      p_app_rec      => l_app_rec,
13773                      p_adj_rec      => p_adj_rec,
13774                      p_ae_sys_rec   => p_ae_sys_rec);
13775 
13776   IF g_mode_process IN ('R12_MERGE') THEN
13777      UPDATE ar_adjustments
13778      SET upgrade_method = 'R12_MERGE'
13779      WHERE adjustment_id = p_adj_rec.adjustment_id;
13780   ELSE
13781     UPDATE ar_adjustments
13782     SET upgrade_method = 'R12'
13783     WHERE adjustment_id = p_adj_rec.adjustment_id;
13784   END IF;
13785 
13786   IF PG_DEBUG = 'Y' THEN
13787   localdebug('arp_det_dist_pkg.trx_level_direct_adjust()-');
13788   END IF;
13789 EXCEPTION
13790  WHEN excep_get_gt_sequence THEN
13791   IF PG_DEBUG = 'Y' THEN
13792   localdebug('EXCEPTION_get_gt_sequence IN Trx_level_cash_apply error count:'||l_msg_count);
13793   localdebug('last error:'||l_msg_data);
13794   END IF;
13795   RAISE;
13796  WHEN OTHERS THEN
13797     IF PG_DEBUG = 'Y' THEN
13798     localdebug('   EXCEPTION OTHER Trx_level_direct_adjust :'||SQLERRM);
13799     END IF;
13800 --    RAISE;
13801 END Trx_level_direct_adjust;
13802 
13803 /*-------------------------------------------------------------------------+
13804  | Trx_level_direct_cash_apply                                             |
13805  +-------------------------------------------------------------------------+
13806  | 1) get_invoice_line_info                                                |
13807  | 2) prepare_group_for_proration                                          |
13808  | 3) update_group_line                                                    |
13809  | 4) prepare_trx_line_proration                                           |
13810  | 5) update_line                                                          |
13811  | 6) update_ctl_rem_orig                                                  |
13812  | 7) store_gt_id                                                          |
13813  +-------------------------------------------------------------------------+
13814  | parameter:                                                              |
13815  |  p_customer_trx_id     transaction id                                   |
13816  |  p_app_rec             ar receivable application record                 |
13817  |  p_ae_sys_rec          ar system parameter                              |
13818  +-------------------------------------------------------------------------*/
13819 PROCEDURE Trx_level_direct_cash_apply
13820   (p_customer_trx     IN ra_customer_trx%ROWTYPE,
13821    p_app_rec          IN ar_receivable_applications%ROWTYPE,
13822    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
13823    p_gt_id            IN NUMBER   DEFAULT NULL,
13824    p_inv_cm           IN VARCHAR2 DEFAULT 'I')
13825 IS
13826   l_adj_rec         ar_adjustments%ROWTYPE;
13827   l_app_rec         ar_receivable_applications%ROWTYPE;
13828   l_gt_id           NUMBER;
13829   l_out_res         VARCHAR2(1);
13830   l_return_status  VARCHAR2(1) := fnd_api.g_ret_sts_success;
13831   l_msg_count      NUMBER := 0;
13832   l_msg_data       VARCHAR2(2000);
13833   l_upg_cm        VARCHAR2(1);
13834   l_rows           NUMBER;
13835   l_adj_exists     VARCHAR2(1) := 'Y';
13836   excep_get_gt_sequence EXCEPTION;
13837 BEGIN
13838   IF PG_DEBUG = 'Y' THEN
13839   localdebug('arp_det_dist_pkg.trx_level_direct_cash_apply()+');
13840   localdebug('   p_customer_trx_id       :'||p_customer_trx.customer_trx_id);
13841   localdebug('   p_inv_cm                :'||p_inv_cm);
13842   END IF;
13843 
13844   IF p_gt_id IS NULL THEN
13845      --BUG#4414391
13846      get_gt_sequence (x_gt_id         => l_gt_id,
13847                       x_return_status => l_return_status,
13848                       x_msg_count     => l_msg_count,
13849                       x_msg_data      => l_msg_data);
13850      IF l_return_status <> fnd_api.g_ret_sts_success THEN
13851         RAISE excep_get_gt_sequence;
13852      END IF;
13853      --l_gt_id  := g_gt_id;
13854      --}
13855   ELSE
13856     l_gt_id  := p_gt_id;
13857   END IF;
13858 
13859   g_gt_id    := l_gt_id;
13860 
13861   --{BUG#4415037
13862   set_interface_flag(p_source_table => 'RA');
13863   --}
13864 
13865   g_cust_inv_rec    :=  p_customer_trx;
13866 
13867   set_mode_process(p_customer_trx  => g_cust_inv_rec,
13868                    p_from_llca     => 'N');
13869 
13870   IF g_mode_process IN ('R12_11ICASH') THEN
13871    Begin
13872     select 'Y'
13873     into l_adj_exists
13874     from ar_adjustments adj
13875     where customer_trx_id = p_customer_trx.customer_trx_id
13876     and nvl(upgrade_method,'11I') <> 'R12'   -- non R12 adjustments
13877     and exists (select 'x'                   -- non detailed distributions
13878                 from ar_distributions
13879                 where source_id = adj.adjustment_id
13880                 and source_table = 'ADJ'
13881                 and source_type <> 'REC'
13882                 and nvl(ref_customer_trx_line_id,-1) < 0);
13883    Exception
13884     when others then
13885      l_adj_exists := 'N';
13886    End;
13887   END IF;
13888 
13889 
13890   IF g_mode_process IN ('R12_11ICASH','R12_MERGE') and l_adj_exists = 'Y' THEN
13891 
13892     -- Process OLTP application on old transactions
13893     -- with adjustments created in 11I
13894     online_lazy_apply
13895     (p_customer_trx     => g_cust_inv_rec,
13896      p_app_rec          => p_app_rec,
13897      p_ae_sys_rec       => p_ae_sys_rec,
13898      p_gt_id            => l_gt_id,
13899 	 p_inv_cm           => p_inv_cm);
13900 
13901   ELSE
13902 
13903     g_cm_trx_id := null;
13904     IF p_app_rec.application_type = 'CM' AND
13905        p_inv_cm = 'I' THEN
13906      BEGIN
13907       select customer_trx_id, nvl(upgrade_method,'R12_NLB')
13908        into g_cm_trx_id, g_cm_upg_mthd
13909         from ra_customer_trx
13910         where customer_trx_id = p_app_rec.customer_trx_id
13911         and previous_customer_trx_id = p_app_rec.applied_customer_trx_id
13912         and nvl(upgrade_method, 'R12_NLB') in ('R12','R12_NLB','R12_11IMFAR');
13913 
13914       localdebug('   g_cm_trx_id                :'||g_cm_trx_id);
13915       localdebug('   g_cm_upg_mthd              :'||g_cm_upg_mthd);
13916 
13917      exec_revrec_if_required
13918           ( p_customer_trx_id  => g_cm_trx_id,
13919             p_app_rec          => l_app_rec,
13920             p_adj_rec          => l_adj_rec);
13921 
13922      EXCEPTION
13923       when others then
13924         g_cm_trx_id := null;
13925      END;
13926     END IF;
13927 
13928    -- Normal process for applications on transactions
13929    -- without adjustments in 11I
13930    copy_trx_lines(p_customer_trx_id  => p_customer_trx.customer_trx_id,
13931                   p_ae_sys_rec       => p_ae_sys_rec);
13932 
13933 
13934     -- If the application is from MFAR legacy the bucket of app charge can be wrong versus the
13935     -- remaining amount buckets of the transaction as the changes are prorated over all distributions
13936     IF g_mode_process = 'R12_11IMFAR' AND p_inv_cm = 'I' THEN
13937        l_return_status := FND_API.G_RET_STS_SUCCESS;
13938 
13939       ar_upgrade_cash_accrual.COMPARE_RA_REM_AMT
13940        ( p_app_rec         => p_app_rec,
13941          x_app_rec         => l_app_rec,
13942          p_app_level       => 'TRANSACTION',
13943          p_currency        => g_cust_inv_rec.invoice_currency_code,
13944          x_return_status   => l_return_status,
13945          x_msg_data        => l_msg_data,
13946          x_msg_count       => l_msg_count);
13947 
13948       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
13949         RAISE fnd_api.G_EXC_ERROR;
13950       END IF;
13951 
13952 IF PG_DEBUG = 'Y' THEN
13953 localdebug('l_app_rec.RECEIVABLES_CHARGES_APPLIED :' ||l_app_rec.RECEIVABLES_CHARGES_APPLIED);
13954 END IF;
13955 
13956     ELSIF g_mode_process IN ('R12','R12_11IMFAR','R12_NLB','R12_11ICASH','R12_MERGE') AND p_inv_cm = 'C' THEN
13957 
13958           IF  g_mode_process = 'R12_11ICASH' THEN
13959           l_upg_cm := 'Y' ;
13960           ELSE
13961           l_upg_cm := 'N' ;
13962           END IF;
13963 
13964           convert_ra_inv_to_cm
13965           ( p_inv_ra_rec     => p_app_rec,
13966             p_cm_trx_id      => g_cust_inv_rec.customer_trx_id,
13967             x_cm_ra_rec      => l_app_rec,
13968             p_mode           => 'OLTP',
13969 	          p_gt_id          => l_gt_id,
13970             p_upg_cm        => l_upg_cm);
13971 
13972     ELSE
13973       l_app_rec := p_app_rec;
13974     END IF;
13975     --}
13976 
13977 IF PG_DEBUG = 'Y' THEN
13978 localdebug('l_app_rec.RECEIVABLES_CHARGES_APPLIED :' ||l_app_rec.RECEIVABLES_CHARGES_APPLIED);
13979 END IF;
13980 
13981    conv_acctd_amt(p_pay_adj         => 'APP',
13982                    p_adj_rec         => l_adj_rec,
13983                    p_app_rec         => l_app_rec,
13984                    p_ae_sys_rec      => p_ae_sys_rec);
13985 
13986 
13987   IF g_cm_trx_id IS NOT NULL THEN
13988    get_invoice_line_info_cm(p_gt_id            => l_gt_id,
13989                          p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
13990                          p_ae_sys_rec       => p_ae_sys_rec,
13991                          p_mode             => 'NORMAL');
13992    g_cm_trx_id := null;
13993   ELSE
13994    get_invoice_line_info(p_gt_id            => l_gt_id,
13995                          p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
13996                          p_ae_sys_rec       => p_ae_sys_rec,
13997                          p_mode             => 'NORMAL');
13998   END IF;
13999 
14000    prepare_group_for_proration(p_gt_id           => l_gt_id,
14001                                p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
14002                                p_pay_adj         => 'APP',
14003                                p_adj_rec         => l_adj_rec,
14004                                p_app_rec         => l_app_rec,
14005                                p_ae_sys_rec      => p_ae_sys_rec);
14006 
14007    update_group_line(p_gt_id           => l_gt_id,
14008                      p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
14009                      p_ae_sys_rec      => p_ae_sys_rec);
14010 
14011    prepare_trx_line_proration(p_gt_id           => l_gt_id,
14012                               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
14013                               p_pay_adj         => 'APP',
14014                               p_adj_rec         => l_adj_rec,
14015                               p_app_rec         => l_app_rec,
14016                               p_ae_sys_rec      => p_ae_sys_rec);
14017 
14018    update_line(p_gt_id           => l_gt_id,
14019                p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
14020                p_ae_sys_rec      => p_ae_sys_rec);
14021 
14022    update_ctl_rem_orig(p_gt_id           => l_gt_id,
14023                        p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
14024                        p_pay_adj         => 'APP',
14025                        p_ae_sys_rec      => p_ae_sys_rec);
14026 
14027    proration_app_dist_trx(p_gt_id            => l_gt_id,
14028                           p_app_level        => 'TRANSACTION',
14029                           p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
14030                           p_app_rec          => l_app_rec,
14031                           p_ae_sys_rec       => p_ae_sys_rec);
14032 
14033    --BUG#3611016 : Store the gt_id only for Primary set of books
14034 --   IF p_ae_sys_rec.sob_type = 'P' THEN
14035 --     store_gt_id(p_initial   => FALSE,
14036 --                 p_app_level => 'TRANSACTION');
14037 --   END IF;
14038 
14039    --HYU
14040    --  delete from ra_ar_st;
14041    --  insert into ra_ar_st select * from ra_ar_gt;
14042 
14043    --{HYUNLB
14044    -- final_update_inv_ctl_rem_orig(p_customer_trx => p_customer_trx);
14045    --}
14046 
14047 
14048   IF g_mode_process IN ('R12','R12_11IMFAR') THEN
14049      final_update_inv_ctl_rem_orig(p_customer_trx => p_customer_trx);
14050   END IF;
14051 
14052  END IF;
14053  -- End of difference between applications}
14054 
14055  create_final_split(p_customer_trx => p_customer_trx,
14056                     p_app_rec      => l_app_rec,
14057                     p_adj_rec      => l_adj_rec,
14058                     p_ae_sys_rec   => p_ae_sys_rec);
14059 
14060 
14061   IF PG_DEBUG = 'Y' THEN
14062   localdebug('arp_det_dist_pkg.trx_level_direct_cash_apply()-');
14063   END IF;
14064 EXCEPTION
14065  WHEN excep_get_gt_sequence THEN
14066   IF PG_DEBUG = 'Y' THEN
14067   localdebug('EXCEPTION_get_gt_sequence IN Trx_level_cash_apply error count:'||l_msg_count);
14068   localdebug('last error:'||l_msg_data);
14069   END IF;
14070   RAISE;
14071  WHEN fnd_api.G_EXC_ERROR THEN
14072      FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
14073                                p_count => l_msg_count,
14074                                p_data  => l_msg_data);
14075   IF PG_DEBUG = 'Y' THEN
14076   localdebug('fnd_api.G_EXC_ERROR IN Trx_level_direct_cash_apply error count:'||l_msg_count);
14077   localdebug('last error:'||l_msg_data);
14078   END IF;
14079   RAISE;
14080  WHEN OTHERS THEN
14081   IF PG_DEBUG = 'Y' THEN
14082   localdebug('OTHERS IN Trx_level_direct_cash_apply :'||SQLERRM);
14083   END IF;
14084   RAISE;
14085 END Trx_level_direct_cash_apply;
14086 
14087 
14088 PROCEDURE  display_ra_ar_row(p_ra_ar_rec   IN  ra_ar_gt%ROWTYPE)
14089 IS
14090 BEGIN
14091    IF PG_DEBUG = 'Y' THEN
14092    localdebug(  'display_ra_ar_row +');
14093    localdebug(  '  source_data_key5               :'|| p_ra_ar_rec.SOURCE_DATA_KEY5);
14094    localdebug(  '  dist_ed_chrg_amt               :'|| p_ra_ar_rec.DIST_ED_CHRG_AMT);
14095    localdebug(  '  dist_ed_chrg_acctd_amt         :'|| p_ra_ar_rec.DIST_ED_CHRG_ACCTD_AMT);
14096    localdebug(  '  dist_uned_amt                  :'|| p_ra_ar_rec.DIST_UNED_AMT);
14097    localdebug(  '  dist_uned_acctd_amt            :'|| p_ra_ar_rec.DIST_UNED_ACCTD_AMT);
14098    localdebug(  '  dist_uned_frt_amt              :'|| p_ra_ar_rec.DIST_UNED_FRT_AMT);
14099    localdebug(  '  dist_uned_frt_acctd_amt        :'|| p_ra_ar_rec.DIST_UNED_FRT_ACCTD_AMT);
14100    localdebug(  '  dist_uned_tax_amt              :'|| p_ra_ar_rec.DIST_UNED_TAX_AMT);
14101    localdebug(  '  dist_uned_tax_acctd_amt        :'|| p_ra_ar_rec.DIST_UNED_TAX_ACCTD_AMT);
14102    localdebug(  '  dist_uned_chrg_amt             :'|| p_ra_ar_rec.DIST_UNED_CHRG_AMT);
14103    localdebug(  '  dist_uned_chrg_acctd_amt       :'|| p_ra_ar_rec.DIST_UNED_CHRG_ACCTD_AMT);
14104 /*   localdebug(  '  base_dist_amt                  :'|| p_ra_ar_rec.BASE_DIST_AMT);
14105    localdebug(  '  base_dist_acctd_amt            :'|| p_ra_ar_rec.BASE_DIST_ACCTD_AMT);
14106    localdebug(  '  base_dist_frt_amt              :'|| p_ra_ar_rec.BASE_DIST_FRT_AMT);
14107    localdebug(  '  base_dist_frt_acctd_amt        :'|| p_ra_ar_rec.BASE_DIST_FRT_ACCTD_AMT);
14108    localdebug(  '  base_dist_tax_amt              :'|| p_ra_ar_rec.BASE_DIST_TAX_AMT);
14109    localdebug(  '  base_dist_tax_acctd_amt        :'|| p_ra_ar_rec.BASE_DIST_TAX_ACCTD_AMT);
14110    localdebug(  '  base_dist_chrg_amt             :'|| p_ra_ar_rec.BASE_DIST_CHRG_AMT);
14111    localdebug(  '  base_dist_chrg_acctd_amt       :'|| p_ra_ar_rec.BASE_DIST_CHRG_ACCTD_AMT);
14112    localdebug(  '  base_ed_dist_amt               :'|| p_ra_ar_rec.BASE_ED_DIST_AMT);
14113    localdebug(  '  base_ed_dist_acctd_amt         :'|| p_ra_ar_rec.BASE_ED_DIST_ACCTD_AMT);
14114    localdebug(  '  base_ed_dist_frt_amt           :'|| p_ra_ar_rec.BASE_ED_DIST_FRT_AMT);
14115    localdebug(  '  base_ed_dist_frt_acctd_amt     :'|| p_ra_ar_rec.BASE_ED_DIST_FRT_ACCTD_AMT);
14116    localdebug(  '  elmt_ed_frt_pro_acctd_amt      :'|| p_ra_ar_rec.ELMT_ED_FRT_PRO_ACCTD_AMT);
14117    localdebug(  '  elmt_ed_tax_pro_amt            :'|| p_ra_ar_rec.ELMT_ED_TAX_PRO_AMT);
14118    localdebug(  '  elmt_ed_tax_pro_acctd_amt      :'|| p_ra_ar_rec.ELMT_ED_TAX_PRO_ACCTD_AMT);
14119    localdebug(  '  base_ed_pro_amt                :'|| p_ra_ar_rec.BASE_ED_PRO_AMT);
14120    localdebug(  '  base_ed_pro_acctd_amt          :'|| p_ra_ar_rec.BASE_ED_PRO_ACCTD_AMT);
14121    localdebug(  '  base_ed_chrg_pro_amt           :'|| p_ra_ar_rec.BASE_ED_CHRG_PRO_AMT); */
14122    localdebug(  '  tax_rem_acctd_amt              :'|| p_ra_ar_rec.TAX_REM_ACCTD_AMT);
14123    localdebug(  '  line_type                      :'|| p_ra_ar_rec.LINE_TYPE);
14124    localdebug(  '  sum_line_orig_amt              :'|| p_ra_ar_rec.SUM_LINE_ORIG_AMT);
14125    localdebug(  '  sum_line_orig_acctd_amt        :'|| p_ra_ar_rec.SUM_LINE_ORIG_ACCTD_AMT);
14126    localdebug(  '  sum_line_frt_orig_amt          :'|| p_ra_ar_rec.SUM_LINE_FRT_ORIG_AMT);
14127    localdebug(  '  sum_line_frt_orig_acctd_amt    :'|| p_ra_ar_rec.SUM_LINE_FRT_ORIG_ACCTD_AMT);
14128    localdebug(  '  sum_line_tax_orig_amt          :'|| p_ra_ar_rec.SUM_LINE_TAX_ORIG_AMT);
14129 /*   localdebug(  '  buc_uned_chrg_alloc_amt        :'|| p_ra_ar_rec.BUC_UNED_CHRG_ALLOC_AMT);
14130    localdebug(  '  buc_uned_chrg_alloc_acctd_amt  :'|| p_ra_ar_rec.BUC_UNED_CHRG_ALLOC_ACCTD_AMT);
14131    localdebug(  '  buc_uned_frt_alloc_amt         :'|| p_ra_ar_rec.BUC_UNED_FRT_ALLOC_AMT);
14132    localdebug(  '  buc_uned_frt_alloc_acctd_amt   :'|| p_ra_ar_rec.BUC_UNED_FRT_ALLOC_ACCTD_AMT);
14133    localdebug(  '  buc_uned_tax_alloc_amt         :'|| p_ra_ar_rec.BUC_UNED_TAX_ALLOC_AMT);
14134    localdebug(  '  buc_uned_tax_alloc_acctd_amt   :'|| p_ra_ar_rec.BUC_UNED_TAX_ALLOC_ACCTD_AMT);
14135    localdebug(  '  elmt_uned_pro_amt              :'|| p_ra_ar_rec.ELMT_UNED_PRO_AMT);
14136    localdebug(  '  elmt_uned_pro_acctd_amt        :'|| p_ra_ar_rec.ELMT_UNED_PRO_ACCTD_AMT);
14137    localdebug(  '  elmt_uned_chrg_pro_amt         :'|| p_ra_ar_rec.ELMT_UNED_CHRG_PRO_AMT);
14138    localdebug(  '  elmt_uned_chrg_pro_acctd_amt   :'|| p_ra_ar_rec.ELMT_UNED_CHRG_PRO_ACCTD_AMT);
14139    localdebug(  '  elmt_uned_frt_pro_amt          :'|| p_ra_ar_rec.ELMT_UNED_FRT_PRO_AMT);
14140    localdebug(  '  elmt_uned_frt_pro_acctd_amt    :'|| p_ra_ar_rec.ELMT_UNED_FRT_PRO_ACCTD_AMT);
14141    localdebug(  '  elmt_uned_tax_pro_amt          :'|| p_ra_ar_rec.ELMT_UNED_TAX_PRO_AMT);
14142    localdebug(  '  base_ed_dist_tax_amt           :'|| p_ra_ar_rec.BASE_ED_DIST_TAX_AMT);
14143    localdebug(  '  base_ed_dist_tax_acctd_amt     :'|| p_ra_ar_rec.BASE_ED_DIST_TAX_ACCTD_AMT);
14144    localdebug(  '  base_ed_dist_chrg_amt          :'|| p_ra_ar_rec.BASE_ED_DIST_CHRG_AMT);
14145    localdebug(  '  base_ed_dist_chrg_acctd_amt    :'|| p_ra_ar_rec.BASE_ED_DIST_CHRG_ACCTD_AMT);
14146    localdebug(  '  base_uned_dist_amt             :'|| p_ra_ar_rec.BASE_UNED_DIST_AMT);
14147    localdebug(  '  base_uned_dist_acctd_amt       :'|| p_ra_ar_rec.BASE_UNED_DIST_ACCTD_AMT);
14148    localdebug(  '  base_uned_dist_frt_amt         :'|| p_ra_ar_rec.BASE_UNED_DIST_FRT_AMT);
14149    localdebug(  '  base_uned_dist_frt_acctd_amt   :'|| p_ra_ar_rec.BASE_UNED_DIST_FRT_ACCTD_AMT);
14150    localdebug(  '  base_uned_dist_tax_amt         :'|| p_ra_ar_rec.BASE_UNED_DIST_TAX_AMT);
14151    localdebug(  '  base_uned_dist_tax_acctd_amt   :'|| p_ra_ar_rec.BASE_UNED_DIST_TAX_ACCTD_AMT);
14152    localdebug(  '  base_uned_dist_chrg_amt        :'|| p_ra_ar_rec.BASE_UNED_DIST_CHRG_AMT);
14153    localdebug(  '  base_uned_dist_chrg_acctd_amt  :'|| p_ra_ar_rec.BASE_UNED_DIST_CHRG_ACCTD_AMT);*/
14154    localdebug(  '  gp_level                       :'|| p_ra_ar_rec.GP_LEVEL);
14155    localdebug(  '  from_alloc_acctd_amt           :'|| p_ra_ar_rec.FROM_ALLOC_ACCTD_AMT);
14156    localdebug(  '  tl_alloc_amt                   :'|| p_ra_ar_rec.TL_ALLOC_AMT);
14157    localdebug(  '  tl_alloc_acctd_amt             :'|| p_ra_ar_rec.TL_ALLOC_ACCTD_AMT);
14158    localdebug(  '  tl_chrg_alloc_amt              :'|| p_ra_ar_rec.TL_CHRG_ALLOC_AMT);
14159    localdebug(  '  tl_chrg_alloc_acctd_amt        :'|| p_ra_ar_rec.TL_CHRG_ALLOC_ACCTD_AMT);
14160    localdebug(  '  tax_rem_amt                    :'|| p_ra_ar_rec.TAX_REM_AMT);
14161 /*   localdebug(  '  buc_ed_alloc_acctd_amt         :'|| p_ra_ar_rec.BUC_ED_ALLOC_ACCTD_AMT);
14162    localdebug(  '  buc_ed_chrg_alloc_amt          :'|| p_ra_ar_rec.BUC_ED_CHRG_ALLOC_AMT);
14163    localdebug(  '  base_ed_chrg_pro_acctd_amt     :'|| p_ra_ar_rec.BASE_ED_CHRG_PRO_ACCTD_AMT);*/
14164    localdebug(  '  group_id                       :'|| p_ra_ar_rec.GROUP_ID);
14165 /*   localdebug(  '  elmt_uned_tax_pro_acctd_amt    :'|| p_ra_ar_rec.ELMT_UNED_TAX_PRO_ACCTD_AMT);
14166    localdebug(  '  base_uned_pro_amt              :'|| p_ra_ar_rec.BASE_UNED_PRO_AMT);
14167    localdebug(  '  base_uned_pro_acctd_amt        :'|| p_ra_ar_rec.BASE_UNED_PRO_ACCTD_AMT);
14168    localdebug(  '  base_uned_chrg_pro_amt         :'|| p_ra_ar_rec.BASE_UNED_CHRG_PRO_AMT);
14169    localdebug(  '  base_uned_chrg_pro_acctd_amt   :'|| p_ra_ar_rec.BASE_UNED_CHRG_PRO_ACCTD_AMT);
14170    localdebug(  '  base_uned_frt_pro_amt          :'|| p_ra_ar_rec.BASE_UNED_FRT_PRO_AMT);
14171    localdebug(  '  base_uned_frt_pro_acctd_amt    :'|| p_ra_ar_rec.BASE_UNED_FRT_PRO_ACCTD_AMT);
14172    localdebug(  '  base_uned_tax_pro_amt          :'|| p_ra_ar_rec.BASE_UNED_TAX_PRO_AMT);
14173    localdebug(  '  base_uned_tax_pro_acctd_amt    :'|| p_ra_ar_rec.BASE_UNED_TAX_PRO_ACCTD_AMT);*/
14174    localdebug(  '  dist_amt                       :'|| p_ra_ar_rec.DIST_AMT);
14175    localdebug(  '  dist_acctd_amt                 :'|| p_ra_ar_rec.DIST_ACCTD_AMT);
14176    localdebug(  '  dist_frt_amt                   :'|| p_ra_ar_rec.DIST_FRT_AMT);
14177    localdebug(  '  dist_frt_acctd_amt             :'|| p_ra_ar_rec.DIST_FRT_ACCTD_AMT);
14178    localdebug(  '  dist_tax_amt                   :'|| p_ra_ar_rec.DIST_TAX_AMT);
14179    localdebug(  '  dist_tax_acctd_amt             :'|| p_ra_ar_rec.DIST_TAX_ACCTD_AMT);
14180    localdebug(  '  dist_chrg_amt                  :'|| p_ra_ar_rec.DIST_CHRG_AMT);
14181    localdebug(  '  dist_chrg_acctd_amt            :'|| p_ra_ar_rec.DIST_CHRG_ACCTD_AMT);
14182    localdebug(  '  dist_ed_amt                    :'|| p_ra_ar_rec.DIST_ED_AMT);
14183    localdebug(  '  dist_ed_acctd_amt              :'|| p_ra_ar_rec.DIST_ED_ACCTD_AMT);
14184    localdebug(  '  dist_ed_frt_amt                :'|| p_ra_ar_rec.DIST_ED_FRT_AMT);
14185    localdebug(  '  dist_ed_frt_acctd_amt          :'|| p_ra_ar_rec.DIST_ED_FRT_ACCTD_AMT);
14186 /*   localdebug(  '  elmt_pro_amt                   :'|| p_ra_ar_rec.ELMT_PRO_AMT);
14187    localdebug(  '  elmt_pro_acctd_amt             :'|| p_ra_ar_rec.ELMT_PRO_ACCTD_AMT);
14188    localdebug(  '  elmt_chrg_pro_amt              :'|| p_ra_ar_rec.ELMT_CHRG_PRO_AMT);
14189    localdebug(  '  elmt_chrg_pro_acctd_amt        :'|| p_ra_ar_rec.ELMT_CHRG_PRO_ACCTD_AMT);
14190    localdebug(  '  elmt_frt_pro_amt               :'|| p_ra_ar_rec.ELMT_FRT_PRO_AMT);
14191    localdebug(  '  elmt_frt_pro_acctd_amt         :'|| p_ra_ar_rec.ELMT_FRT_PRO_ACCTD_AMT);
14192    localdebug(  '  elmt_tax_pro_amt               :'|| p_ra_ar_rec.ELMT_TAX_PRO_AMT);
14193    localdebug(  '  elmt_tax_pro_acctd_amt         :'|| p_ra_ar_rec.ELMT_TAX_PRO_ACCTD_AMT);
14194    localdebug(  '  buc_alloc_amt                  :'|| p_ra_ar_rec.BUC_ALLOC_AMT);
14195    localdebug(  '  buc_alloc_acctd_amt            :'|| p_ra_ar_rec.BUC_ALLOC_ACCTD_AMT);
14196    localdebug(  '  buc_chrg_alloc_amt             :'|| p_ra_ar_rec.BUC_CHRG_ALLOC_AMT);
14197    localdebug(  '  buc_chrg_alloc_acctd_amt       :'|| p_ra_ar_rec.BUC_CHRG_ALLOC_ACCTD_AMT);
14198    localdebug(  '  buc_frt_alloc_amt              :'|| p_ra_ar_rec.BUC_FRT_ALLOC_AMT);
14199    localdebug(  '  buc_frt_alloc_acctd_amt        :'|| p_ra_ar_rec.BUC_FRT_ALLOC_ACCTD_AMT);
14200    localdebug(  '  buc_tax_alloc_amt              :'|| p_ra_ar_rec.BUC_TAX_ALLOC_AMT);
14201    localdebug(  '  buc_tax_alloc_acctd_amt        :'|| p_ra_ar_rec.BUC_TAX_ALLOC_ACCTD_AMT);*/
14202    localdebug(  '  tl_ed_alloc_amt                :'|| p_ra_ar_rec.TL_ED_ALLOC_AMT);
14203    localdebug(  '  tl_ed_alloc_acctd_amt          :'|| p_ra_ar_rec.TL_ED_ALLOC_ACCTD_AMT);
14204    localdebug(  '  tl_ed_chrg_alloc_amt           :'|| p_ra_ar_rec.TL_ED_CHRG_ALLOC_AMT);
14205    localdebug(  '  tl_ed_chrg_alloc_acctd_amt     :'|| p_ra_ar_rec.TL_ED_CHRG_ALLOC_ACCTD_AMT);
14206    localdebug(  '  tl_ed_frt_alloc_amt            :'|| p_ra_ar_rec.TL_ED_FRT_ALLOC_AMT);
14207    localdebug(  '  gt_id                          :'|| p_ra_ar_rec.GT_ID);
14208    localdebug(  '  base_currency                  :'|| p_ra_ar_rec.BASE_CURRENCY);
14209    localdebug(  '  to_currency                    :'|| p_ra_ar_rec.TO_CURRENCY);
14210    localdebug(  '  from_currency                  :'|| p_ra_ar_rec.FROM_CURRENCY);
14211    localdebug(  '  det_id                         :'|| p_ra_ar_rec.DET_ID);
14212    localdebug(  '  line_id                        :'|| p_ra_ar_rec.LINE_ID);
14213    localdebug(  '  ref_customer_trx_id            :'|| p_ra_ar_rec.REF_CUSTOMER_TRX_ID);
14214    localdebug(  '  ref_customer_trx_line_id       :'|| p_ra_ar_rec.REF_CUSTOMER_TRX_LINE_ID);
14215    localdebug(  '  ref_cust_trx_line_gl_dist_id   :'|| p_ra_ar_rec.REF_CUST_TRX_LINE_GL_DIST_ID);
14216    localdebug(  '  ref_line_id                    :'|| p_ra_ar_rec.REF_LINE_ID);
14217    localdebug(  '  ref_det_id                     :'|| p_ra_ar_rec.REF_DET_ID);
14218    localdebug(  '  account_class                  :'|| p_ra_ar_rec.ACCOUNT_CLASS);
14219    localdebug(  '  source_type                    :'|| p_ra_ar_rec.SOURCE_TYPE);
14220    localdebug(  '  source_table                   :'|| p_ra_ar_rec.SOURCE_TABLE);
14221    localdebug(  '  source_id                      :'|| p_ra_ar_rec.SOURCE_ID);
14222    localdebug(  '  amt                            :'|| p_ra_ar_rec.AMT);
14223    localdebug(  '  acctd_amt                      :'|| p_ra_ar_rec.ACCTD_AMT);
14224    localdebug(  '  amt_dr                         :'|| p_ra_ar_rec.AMT_DR);
14225    localdebug(  '  amt_cr                         :'|| p_ra_ar_rec.AMT_CR);
14226    localdebug(  '  acctd_amt_dr                   :'|| p_ra_ar_rec.ACCTD_AMT_DR);
14227    localdebug(  '  acctd_amt_cr                   :'|| p_ra_ar_rec.ACCTD_AMT_CR);
14228    localdebug(  '  from_acctd_amt_dr              :'|| p_ra_ar_rec.FROM_ACCTD_AMT_DR);
14229    localdebug(  '  from_acctd_amt_cr              :'|| p_ra_ar_rec.FROM_ACCTD_AMT_CR);
14230    localdebug(  '  ccid                           :'|| p_ra_ar_rec.CCID);
14231    localdebug(  '  ccid_secondary                 :'|| p_ra_ar_rec.CCID_SECONDARY);
14232    localdebug(  '  alloc_amt                      :'|| p_ra_ar_rec.ALLOC_AMT);
14233    localdebug(  '  alloc_acctd_amt                :'|| p_ra_ar_rec.ALLOC_ACCTD_AMT);
14234    localdebug(  '  from_alloc_amt                 :'|| p_ra_ar_rec.FROM_ALLOC_AMT);
14235    localdebug(  '  sum_gp_line_orig_amt           :'|| p_ra_ar_rec.SUM_GP_LINE_ORIG_AMT);
14236    localdebug(  '  sum_gp_line_orig_acctd_amt     :'|| p_ra_ar_rec.SUM_GP_LINE_ORIG_ACCTD_AMT);
14237    localdebug(  '  sum_gp_line_frt_orig_amt       :'|| p_ra_ar_rec.SUM_GP_LINE_FRT_ORIG_AMT);
14238    localdebug(  '  sum_gp_line_frt_orig_acctd_amt :'|| p_ra_ar_rec.SUM_GP_LINE_FRT_ORIG_ACCTD_AMT);
14239    localdebug(  '  sum_gp_line_tax_orig_amt       :'|| p_ra_ar_rec.SUM_GP_LINE_TAX_ORIG_AMT);
14240    localdebug(  '  tl_frt_alloc_acctd_amt         :'|| p_ra_ar_rec.TL_FRT_ALLOC_ACCTD_AMT);
14241    localdebug(  '  tl_tax_alloc_amt               :'|| p_ra_ar_rec.TL_TAX_ALLOC_AMT);
14242    localdebug(  '  tl_tax_alloc_acctd_amt         :'|| p_ra_ar_rec.TL_TAX_ALLOC_ACCTD_AMT);
14243    localdebug(  '  due_orig_amt                   :'|| p_ra_ar_rec.DUE_ORIG_AMT);
14244    localdebug(  '  due_orig_acctd_amt             :'|| p_ra_ar_rec.DUE_ORIG_ACCTD_AMT);
14245    localdebug(  '  frt_orig_amt                   :'|| p_ra_ar_rec.FRT_ORIG_AMT);
14246    localdebug(  '  frt_orig_acctd_amt             :'|| p_ra_ar_rec.FRT_ORIG_ACCTD_AMT);
14247    localdebug(  '  tax_orig_amt                   :'|| p_ra_ar_rec.TAX_ORIG_AMT);
14248    localdebug(  '  tax_orig_acctd_amt             :'|| p_ra_ar_rec.TAX_ORIG_ACCTD_AMT);
14249    localdebug(  '  due_rem_amt                    :'|| p_ra_ar_rec.DUE_REM_AMT);
14250    localdebug(  '  due_rem_acctd_amt              :'|| p_ra_ar_rec.DUE_REM_ACCTD_AMT);
14251    localdebug(  '  chrg_rem_amt                   :'|| p_ra_ar_rec.CHRG_REM_AMT);
14252    localdebug(  '  chrg_rem_acctd_amt             :'|| p_ra_ar_rec.CHRG_REM_ACCTD_AMT);
14253    localdebug(  '  frt_rem_amt                    :'|| p_ra_ar_rec.FRT_REM_AMT);
14254    localdebug(  '  frt_rem_acctd_amt              :'|| p_ra_ar_rec.FRT_REM_ACCTD_AMT);
14255    localdebug(  '  frt_adj_rem_amt                :'|| p_ra_ar_rec.FRT_ADJ_REM_AMT);
14256    localdebug(  '  frt_adj_rem_acctd_amt          :'|| p_ra_ar_rec.FRT_ADJ_REM_ACCTD_AMT);
14257    localdebug(  '  dist_ed_tax_amt                :'|| p_ra_ar_rec.DIST_ED_TAX_AMT);
14258 /*   localdebug(  '  base_ed_frt_pro_amt            :'|| p_ra_ar_rec.BASE_ED_FRT_PRO_AMT);
14259    localdebug(  '  base_ed_frt_pro_acctd_amt      :'|| p_ra_ar_rec.BASE_ED_FRT_PRO_ACCTD_AMT);
14260    localdebug(  '  base_ed_tax_pro_amt            :'|| p_ra_ar_rec.BASE_ED_TAX_PRO_AMT);
14261    localdebug(  '  base_ed_tax_pro_acctd_amt      :'|| p_ra_ar_rec.BASE_ED_TAX_PRO_ACCTD_AMT);*/
14262    localdebug(  '  tl_uned_alloc_amt              :'|| p_ra_ar_rec.TL_UNED_ALLOC_AMT);
14263    localdebug(  '  tl_uned_alloc_acctd_amt        :'|| p_ra_ar_rec.TL_UNED_ALLOC_ACCTD_AMT);
14264    localdebug(  '  tl_uned_chrg_alloc_amt         :'|| p_ra_ar_rec.TL_UNED_CHRG_ALLOC_AMT);
14265    localdebug(  '  tl_uned_chrg_alloc_acctd_amt   :'|| p_ra_ar_rec.TL_UNED_CHRG_ALLOC_ACCTD_AMT);
14266    localdebug(  '  tl_uned_frt_alloc_amt          :'|| p_ra_ar_rec.TL_UNED_FRT_ALLOC_AMT);
14267    localdebug(  '  sum_gp_line_tax_orig_acctd_amt :'|| p_ra_ar_rec.SUM_GP_LINE_TAX_ORIG_ACCTD_AMT);
14268 /*   localdebug(  '  buc_ed_chrg_alloc_acctd_amt    :'|| p_ra_ar_rec.BUC_ED_CHRG_ALLOC_ACCTD_AMT);
14269    localdebug(  '  buc_ed_frt_alloc_amt           :'|| p_ra_ar_rec.BUC_ED_FRT_ALLOC_AMT);
14270    localdebug(  '  buc_ed_frt_alloc_acctd_amt     :'|| p_ra_ar_rec.BUC_ED_FRT_ALLOC_ACCTD_AMT);
14271    localdebug(  '  buc_ed_tax_alloc_amt           :'|| p_ra_ar_rec.BUC_ED_TAX_ALLOC_AMT);
14272    localdebug(  '  buc_ed_tax_alloc_acctd_amt     :'|| p_ra_ar_rec.BUC_ED_TAX_ALLOC_ACCTD_AMT);
14273    localdebug(  '  elmt_ed_pro_amt                :'|| p_ra_ar_rec.ELMT_ED_PRO_AMT);
14274    localdebug(  '  elmt_ed_pro_acctd_amt          :'|| p_ra_ar_rec.ELMT_ED_PRO_ACCTD_AMT);
14275    localdebug(  '  elmt_ed_chrg_pro_amt           :'|| p_ra_ar_rec.ELMT_ED_CHRG_PRO_AMT);
14276    localdebug(  '  elmt_ed_chrg_pro_acctd_amt     :'|| p_ra_ar_rec.ELMT_ED_CHRG_PRO_ACCTD_AMT);
14277    localdebug(  '  elmt_ed_frt_pro_amt            :'|| p_ra_ar_rec.ELMT_ED_FRT_PRO_AMT);*/
14278    localdebug(  '  sum_line_tax_orig_acctd_amt    :'|| p_ra_ar_rec.SUM_LINE_TAX_ORIG_ACCTD_AMT);
14279    localdebug(  '  sum_line_rem_amt               :'|| p_ra_ar_rec.SUM_LINE_REM_AMT);
14280    localdebug(  '  sum_line_rem_acctd_amt         :'|| p_ra_ar_rec.SUM_LINE_REM_ACCTD_AMT);
14281    localdebug(  '  sum_line_chrg_rem_amt          :'|| p_ra_ar_rec.SUM_LINE_CHRG_REM_AMT);
14282    localdebug(  '  sum_line_chrg_rem_acctd_amt    :'|| p_ra_ar_rec.SUM_LINE_CHRG_REM_ACCTD_AMT);
14283    localdebug(  '  sum_line_frt_rem_amt           :'|| p_ra_ar_rec.SUM_LINE_FRT_REM_AMT);
14284    localdebug(  '  sum_line_frt_rem_acctd_amt     :'|| p_ra_ar_rec.SUM_LINE_FRT_REM_ACCTD_AMT);
14285    localdebug(  '  sum_line_tax_rem_amt           :'|| p_ra_ar_rec.SUM_LINE_TAX_REM_AMT);
14286    localdebug(  '  sum_line_tax_rem_acctd_amt     :'|| p_ra_ar_rec.SUM_LINE_TAX_REM_ACCTD_AMT);
14287 /*   localdebug(  '  base_pro_amt                   :'|| p_ra_ar_rec.BASE_PRO_AMT);
14288    localdebug(  '  base_pro_acctd_amt             :'|| p_ra_ar_rec.BASE_PRO_ACCTD_AMT);
14289    localdebug(  '  base_chrg_pro_amt              :'|| p_ra_ar_rec.BASE_CHRG_PRO_AMT);
14290    localdebug(  '  base_chrg_pro_acctd_amt        :'|| p_ra_ar_rec.BASE_CHRG_PRO_ACCTD_AMT);
14291    localdebug(  '  base_frt_pro_amt               :'|| p_ra_ar_rec.BASE_FRT_PRO_AMT);
14292    localdebug(  '  base_frt_pro_acctd_amt         :'|| p_ra_ar_rec.BASE_FRT_PRO_ACCTD_AMT);
14293    localdebug(  '  base_tax_pro_amt               :'|| p_ra_ar_rec.BASE_TAX_PRO_AMT);
14294    localdebug(  '  base_tax_pro_acctd_amt         :'|| p_ra_ar_rec.BASE_TAX_PRO_ACCTD_AMT);*/
14295    localdebug(  '  dist_ed_tax_acctd_amt          :'|| p_ra_ar_rec.DIST_ED_TAX_ACCTD_AMT);
14296    localdebug(  '  sum_gp_line_rem_amt            :'|| p_ra_ar_rec.SUM_GP_LINE_REM_AMT);
14297    localdebug(  '  sum_gp_line_rem_acctd_amt      :'|| p_ra_ar_rec.SUM_GP_LINE_REM_ACCTD_AMT);
14298    localdebug(  '  sum_gp_line_chrg_rem_amt       :'|| p_ra_ar_rec.SUM_GP_LINE_CHRG_REM_AMT);
14299    localdebug(  '  sum_gp_line_chrg_rem_acctd_amt :'|| p_ra_ar_rec.SUM_GP_LINE_CHRG_REM_ACCTD_AMT);
14300    localdebug(  '  sum_gp_line_frt_rem_amt        :'|| p_ra_ar_rec.SUM_GP_LINE_FRT_REM_AMT);
14301    localdebug(  '  sum_gp_line_frt_rem_acctd_amt  :'|| p_ra_ar_rec.SUM_GP_LINE_FRT_REM_ACCTD_AMT);
14302    localdebug(  '  sum_gp_line_tax_rem_amt        :'|| p_ra_ar_rec.SUM_GP_LINE_TAX_REM_AMT);
14303    localdebug(  '  sum_gp_line_tax_rem_acctd_amt  :'|| p_ra_ar_rec.SUM_GP_LINE_TAX_REM_ACCTD_AMT);
14304    localdebug(  '  set_of_books_id                :'|| p_ra_ar_rec.SET_OF_BOOKS_ID);
14305    localdebug(  '  sob_type                       :'|| p_ra_ar_rec.SOB_TYPE);
14306    localdebug(  '  activity_bucket                         :'|| p_ra_ar_rec.activity_bucket);
14307    localdebug(  '  source_data_key1               :'|| p_ra_ar_rec.SOURCE_DATA_KEY1);
14308    localdebug(  '  source_data_key2               :'|| p_ra_ar_rec.SOURCE_DATA_KEY2);
14309    localdebug(  '  source_data_key3               :'|| p_ra_ar_rec.SOURCE_DATA_KEY3);
14310    localdebug(  '  source_data_key4               :'|| p_ra_ar_rec.SOURCE_DATA_KEY4);
14311    localdebug(  '  tl_ed_frt_alloc_acctd_amt      :'|| p_ra_ar_rec.TL_ED_FRT_ALLOC_ACCTD_AMT);
14312    localdebug(  '  tl_ed_tax_alloc_amt            :'|| p_ra_ar_rec.TL_ED_TAX_ALLOC_AMT);
14313    localdebug(  '  tl_ed_tax_alloc_acctd_amt      :'|| p_ra_ar_rec.TL_ED_TAX_ALLOC_ACCTD_AMT);
14314 --   localdebug(  '  buc_ed_alloc_amt               :'|| p_ra_ar_rec.BUC_ED_ALLOC_AMT);
14315    localdebug(  '  tl_uned_frt_alloc_acctd_amt    :'|| p_ra_ar_rec.TL_UNED_FRT_ALLOC_ACCTD_AMT);
14316    localdebug(  '  tl_uned_tax_alloc_amt          :'|| p_ra_ar_rec.TL_UNED_TAX_ALLOC_AMT);
14317    localdebug(  '  tl_uned_tax_alloc_acctd_amt    :'|| p_ra_ar_rec.TL_UNED_TAX_ALLOC_ACCTD_AMT);
14318 --   localdebug(  '  buc_uned_alloc_amt             :'|| p_ra_ar_rec.BUC_UNED_ALLOC_AMT);
14319 --   localdebug(  '  buc_uned_alloc_acctd_amt       :'|| p_ra_ar_rec.BUC_UNED_ALLOC_ACCTD_AMT);
14320    localdebug(  '  tl_frt_alloc_amt               :'|| p_ra_ar_rec.TL_FRT_ALLOC_AMT);
14321    localdebug(  'arp_det_dist_pkg.display_ra_ar_row()-');
14322    END IF;
14323 END;
14324 
14325 
14326 PROCEDURE display_ra_ar_gt
14327 (p_code      IN VARCHAR2 DEFAULT NULL,
14328  p_gt_id     IN VARCHAR2)
14329 IS
14330   CURSOR c1 IS
14331   SELECT * FROM ra_ar_gt
14332   WHERE gt_id = p_gt_id;
14333 
14334   CURSOR c2 IS
14335   SELECT * FROM ra_ar_gt
14336   WHERE gp_level = p_code
14337   AND gt_id = p_gt_id;
14338 
14339   l_record  c1%ROWTYPE;
14340   l_record2 c2%ROWTYPE;
14341 BEGIN
14342  IF (PG_DEBUG = 'Y') THEN
14343   localdebug('arp_det_dist_pkg.display_ra_ar_gt()+');
14344   localdebug('  p_code : '||p_code);
14345   IF p_code IS NULL THEN
14346     OPEN c1;
14347     LOOP
14348       FETCH c1 INTO l_record;
14349       EXIT WHEN c1%NOTFOUND;
14350       display_ra_ar_row(l_record);
14351     END LOOP;
14352     CLOSE c1;
14353   ELSE
14354     OPEN c2;
14355     LOOP
14356       FETCH c2 INTO l_record2;
14357       EXIT WHEN c2%NOTFOUND;
14358       display_ra_ar_row(l_record2);
14359     END LOOP;
14360     CLOSE c2;
14361   END IF;
14362   localdebug('arp_det_dist_pkg.display_ra_ar_gt()-');
14363  END IF;
14364 END;
14365 
14366 
14367 PROCEDURE display_cust_trx_row
14368 (p_record  IN ra_customer_trx_lines_gt%ROWTYPE)
14369 IS
14370 BEGIN
14371   IF PG_DEBUG = 'Y' THEN
14372   localdebug('arp_det_dist_pkg.display_cust_trx_row()+');
14373   localdebug('  CUSTOMER_TRX_LINE_ID           :'|| p_record.CUSTOMER_TRX_LINE_ID);
14374   localdebug('  LINK_TO_CUST_TRX_LINE_ID       :'|| p_record.LINK_TO_CUST_TRX_LINE_ID);
14375   localdebug('  CUSTOMER_TRX_ID                :'|| p_record.CUSTOMER_TRX_ID);
14376   localdebug('  SET_OF_BOOKS_ID                :'|| p_record.SET_OF_BOOKS_ID);
14377   localdebug('  LINE_TYPE                      :'|| p_record.LINE_TYPE);
14378   localdebug('  SOURCE_DATA_KEY1               :'|| p_record.SOURCE_DATA_KEY1);
14379   localdebug('  SOURCE_DATA_KEY2               :'|| p_record.SOURCE_DATA_KEY2);
14380   localdebug('  SOURCE_DATA_KEY3               :'|| p_record.SOURCE_DATA_KEY3);
14381   localdebug('  SOURCE_DATA_KEY4               :'|| p_record.SOURCE_DATA_KEY4);
14382   localdebug('  SOURCE_DATA_KEY5               :'|| p_record.SOURCE_DATA_KEY5);
14383   localdebug('  AMOUNT_DUE_REMAINING           :'|| p_record.AMOUNT_DUE_REMAINING);
14384   localdebug('  ACCTD_AMOUNT_DUE_REMAINING     :'|| p_record.ACCTD_AMOUNT_DUE_REMAINING);
14385   localdebug('  AMOUNT_DUE_ORIGINAL            :'|| p_record.AMOUNT_DUE_ORIGINAL);
14386   localdebug('  ACCTD_AMOUNT_DUE_ORIGINAL      :'|| p_record.ACCTD_AMOUNT_DUE_ORIGINAL);
14387   localdebug('  CHRG_AMOUNT_REMAINING          :'|| p_record.CHRG_AMOUNT_REMAINING);
14388   localdebug('  CHRG_ACCTD_AMOUNT_REMAINING    :'|| p_record.CHRG_ACCTD_AMOUNT_REMAINING);
14389   localdebug('  FRT_ADJ_REMAINING              :'|| p_record.FRT_ADJ_REMAINING);
14390   localdebug('  FRT_ADJ_ACCTD_REMAINING        :'|| p_record.FRT_ADJ_ACCTD_REMAINING);
14391   localdebug('  FRT_ED_AMOUNT                  :'|| p_record.FRT_ED_AMOUNT);
14392   localdebug('  FRT_ED_ACCTD_AMOUNT            :'|| p_record.FRT_ED_ACCTD_AMOUNT);
14393   localdebug('  FRT_UNED_AMOUNT                :'|| p_record.FRT_UNED_AMOUNT);
14394   localdebug('  FRT_UNED_ACCTD_AMOUNT          :'|| p_record.FRT_UNED_ACCTD_AMOUNT);
14395   localdebug('  CM_AMT_DUE_REM                 :'|| p_record.CM_AMT_DUE_REM);
14396   localdebug('  CM_ACCTD_AMT_DUE_REM           :'|| p_record.CM_ACCTD_AMT_DUE_REM);
14397   localdebug('  CM_AMT_DUE_ORIG                :'|| p_record.CM_AMT_DUE_ORIG);
14398   localdebug('  CM_ACCTD_AMT_DUE_ORIG          :'|| p_record.CM_ACCTD_AMT_DUE_ORIG);
14399   localdebug('arp_det_dist_pkg.display_cust_trx_row()-');
14400   END IF;
14401 END;
14402 
14403 PROCEDURE display_cust_trx_gt(p_customer_trx_id IN NUMBER)
14404 IS
14405   CURSOR c IS
14406   SELECT *
14407     FROM ra_customer_trx_lines_gt
14408     WHERE customer_trx_id = p_customer_trx_id;
14409   l_record  c%ROWTYPE;
14410 BEGIN
14411   IF PG_DEBUG = 'Y' THEN
14412   localdebug('arp_det_dist_pkg.display_cust_trx_gt()+');
14413   END IF;
14414   OPEN c;
14415   LOOP
14416     FETCH c INTO l_record;
14417     EXIT WHEN c%NOTFOUND;
14418     display_cust_trx_row(l_record);
14419   END LOOP;
14420   CLOSE c;
14421   IF PG_DEBUG = 'Y' THEN
14422   localdebug('arp_det_dist_pkg.display_cust_trx_gt()-');
14423   END IF;
14424 END;
14425 
14426 
14427 
14428 --{HYU possible_adj
14429 PROCEDURE get_orig_amt
14430 (p_customer_trx_id IN            NUMBER,
14431  x_amt_rem         IN OUT NOCOPY g_amt_rem_type) IS
14432   CURSOR c IS
14433   SELECT SUM(NVL(amount_due_original,extended_amount)),
14434          line_type
14435     FROM ra_customer_trx_lines
14436    WHERE customer_trx_id = p_customer_trx_id
14437    GROUP BY line_type;
14438 
14439   CURSOR tl_for_rl IS
14440   SELECT customer_trx_line_id
14441     FROM ra_customer_trx_lines
14442    WHERE customer_trx_id = p_customer_trx_id
14443      AND line_type IN ('LINE','CB')
14444   MINUS
14445   SELECT link_to_cust_trx_line_id
14446     FROM ra_customer_trx_lines
14447    WHERE customer_trx_id = p_customer_trx_id
14448      AND line_type = 'TAX';
14449 
14450   l_amt    NUMBER;
14451   l_type   VARCHAR2(30);
14452   l_id     NUMBER;
14453 BEGIN
14454   IF PG_DEBUG = 'Y' THEN
14455   localdebug('arp_det_dist_pkg.get_orig_amt()+');
14456   localdebug('  p_customer_trx_id :'||p_customer_trx_id);
14457   END IF;
14458   x_amt_rem.sum_line_amt_orig  := 0;
14459   x_amt_rem.sum_tax_amt_orig   := 0;
14460   x_amt_rem.sum_frt_amt_orig   := 0;
14461   x_amt_rem.tl_for_rl          := 'N';
14462   OPEN c;
14463   LOOP
14464     FETCH c INTO l_amt, l_type;
14465     IF PG_DEBUG = 'Y' THEN
14466     localdebug(' l_type:'||l_type);
14467     localdebug(' l_amt :'||l_amt);
14468     END IF;
14469     EXIT WHEN c%NOTFOUND;
14470     IF    l_type IN ('LINE','CB') THEN
14471       x_amt_rem.sum_line_amt_orig := l_amt;
14472     ELSIF l_type = 'TAX' THEN
14473       x_amt_rem.sum_tax_amt_orig  := l_amt;
14474     ELSIF l_type = 'FREIGHT' THEN
14475       x_amt_rem.sum_frt_amt_orig  := l_amt;
14476     END IF;
14477   END LOOP;
14478   CLOSE c;
14479   IF PG_DEBUG = 'Y' THEN
14480   localdebug('  x_amt_rem.sum_line_amt_orig :'||x_amt_rem.sum_line_amt_orig);
14481   localdebug('  x_amt_rem.sum_tax_amt_orig  :'||x_amt_rem.sum_tax_amt_orig);
14482   localdebug('  x_amt_rem.sum_frt_amt_orig  :'||x_amt_rem.sum_frt_amt_orig);
14483   END IF;
14484   OPEN tl_for_rl;
14485      FETCH tl_for_rl INTO l_id;
14486      IF tl_for_rl%NOTFOUND THEN
14487        x_amt_rem.tl_for_rl := 'Y';
14488      ELSE
14489        x_amt_rem.tl_for_rl := 'N';
14490      END IF;
14491   CLOSE tl_for_rl;
14492   IF PG_DEBUG = 'Y' THEN
14493   localdebug('  x_amt_rem.tl_for_rl     :'||x_amt_rem.tl_for_rl);
14494   localdebug('arp_det_dist_pkg.get_orig_amt()-');
14495   END IF;
14496 END;
14497 
14498 
14499 /*------------------------------------------------------+
14500  | FUNCTION ed_uned_type                                |
14501  +------------------------------------------------------+
14502  | Parameters:                                          |
14503  | -----------                                          |
14504  | p_source_exec   'ED' 'UNED'                          |
14505  | p_app_rec       The app record and bucket info.      |
14506  | p_bucket        'TAX','LINE','FREIGHT','CHARGES'     |
14507  +------------------------------------------------------+
14508  | Return  'Y' in the bucket ED or UNED is concerned    |
14509  |         'N' otherwise                                |
14510  +------------------------------------------------------+
14511  | Created 26-OCT-03     Herve Yu                       |
14512  +------------------------------------------------------*/
14513 FUNCTION ed_uned_type
14514 ( p_source_exec   IN VARCHAR2,
14515   p_app_rec       IN ar_receivable_applications%rowtype,
14516   p_bucket        IN VARCHAR2)
14517 RETURN VARCHAR2
14518 IS
14519   l_res  VARCHAR2(1) := 'N';
14520 BEGIN
14521   IF PG_DEBUG = 'Y' THEN
14522   localdebug('arp_det_dist_pkg.ed_uned_type()+');
14523   localdebug('  p_source_exec :'||p_source_exec);
14524   localdebug('  p_bucket      :'||p_bucket);
14525   END IF;
14526   IF  p_source_exec = 'ED' THEN
14527      IF    p_bucket = 'TAX' AND NVL(p_app_rec.tax_ediscounted,0) <> 0  THEN
14528         l_res := 'Y';
14529      ELSIF p_bucket IN ('LINE','CB') AND NVL(p_app_rec.line_ediscounted,0) <> 0 THEN
14530         l_res := 'Y';
14531      ELSIF p_bucket = 'FREIGHT' AND NVL(p_app_rec.freight_ediscounted,0) <> 0 THEN
14532         l_res := 'Y';
14533      ELSIF p_bucket = 'CHARGES' AND NVL(p_app_rec.charges_ediscounted,0) <> 0 THEN
14534         l_res := 'Y';
14535      END IF;
14536   ELSIF p_source_exec = 'UNED' THEN
14537      IF    p_bucket = 'TAX' AND NVL(p_app_rec.tax_uediscounted,0) <> 0  THEN
14538         l_res := 'Y';
14539      ELSIF p_bucket IN ('LINE','CB') AND NVL(p_app_rec.line_uediscounted,0) <> 0 THEN
14540         l_res := 'Y';
14541      ELSIF p_bucket = 'FREIGHT' AND NVL(p_app_rec.freight_uediscounted,0) <> 0 THEN
14542         l_res := 'Y';
14543      ELSIF p_bucket = 'CHARGES' AND NVL(p_app_rec.charges_uediscounted,0) <> 0 THEN
14544         l_res := 'Y';
14545      END IF;
14546   END IF;
14547   IF PG_DEBUG = 'Y' THEN
14548   localdebug('  l_res :'||l_res);
14549   localdebug('arp_det_dist_pkg.ed_uned_type()-');
14550   END IF;
14551   RETURN l_res;
14552 END;
14553 
14554 /*------------------------------------------------------+
14555  | FUNCTION tax_adj_type                                |
14556  +------------------------------------------------------+
14557  | Parameters:                                          |
14558  | -----------                                          |
14559  | p_adj_rec       the adjustment record.               |
14560  | p_ae_rule_rec   containing accounting acitivity      |
14561  |                 and bucket info.                     |
14562  | p_amt_rem       containing amount kept at invoice    |
14563  |                 lines.                               |
14564  | p_app_rec       the app rec                          |
14565  | p_source_exec   'ADJ' 'ED' 'UNED'                    |
14566  +------------------------------------------------------+
14567  | Return the codification for tax adjustment           |
14568  |  Example of code returned TA_TCSINV_YTL              |
14569  |   meaning Tax adjustment with Tax Code Source =      |
14570  |   Invoice and                                        |
14571  |   the buckets Rev is <> 0                            |
14572  +------------------------------------------------------+
14573  | Created 26-OCT-03     Herve Yu                       |
14574  +------------------------------------------------------*/
14575 FUNCTION tax_adj_type(p_adj_rec           IN  ar_adjustments%rowtype,
14576                       p_ae_rule_rec       IN  ae_rule_rec_type,
14577                       p_amt_rem           IN  g_amt_rem_type,
14578                       p_app_rec           IN ar_receivable_applications%rowtype,
14579                       p_source_exec       IN VARCHAR2)
14580 RETURN VARCHAR2
14581 IS
14582  l_type   VARCHAR2(30);
14583  l_amt    NUMBER;
14584  l_res    VARCHAR2(30);
14585 BEGIN
14586   IF PG_DEBUG = 'Y' THEN
14587   localdebug('arp_det_dist_pkg.tax_adj_type()+');
14588   localdebug('  p_source_exec:'||p_source_exec);
14589   END IF;
14590   IF p_source_exec = 'ADJ' THEN
14591     IF    p_adj_rec.type = 'TAX' AND (nvl(p_adj_rec.amount,0) <> 0) THEN
14592        -- Tax Adjustment
14593        l_res := 'TA';
14594     ELSIF p_adj_rec.type IN ('LINE','CB') AND (nvl(p_adj_rec.tax_adjusted,0) <> 0) THEN
14595        -- Line Adjustment Tax bucket
14596        l_res := 'LATB';
14597     ELSIF p_adj_rec.type = 'CHARGES' AND (nvl(p_adj_rec.tax_adjusted,0) <> 0) THEN
14598        l_res := 'CATB';
14599     ELSIF p_adj_rec.type = 'FREIGHT' AND (nvl(p_adj_rec.tax_adjusted,0) <> 0) THEN
14600        l_res := 'FATB';
14601     ELSE
14602        l_res := 'NOT_CONCERN';
14603     END IF;
14604   ELSIF p_source_exec IN ('ED','UNED') THEN
14605     IF ed_uned_type(p_source_exec,p_app_rec,'TAX') = 'Y' THEN
14606        l_res := 'TA';
14607     END IF;
14608   END IF;
14609   IF l_res IN ('TA','LATB','CATB','FATB') THEN
14610     IF    p_ae_rule_rec.tax_code_source1 = 'INVOICE'  THEN
14611       l_res := l_res ||'_TCSINV';
14612       IF  p_amt_rem.sum_tax_amt_orig = 0 THEN
14613         l_res := l_res||'_NTL';
14614       ELSE
14615         l_res := l_res||'_YTL';
14616       END IF;
14617     ELSIF p_ae_rule_rec.tax_code_source1 = 'ACTIVITY'  THEN
14618       l_res := l_res ||'_TCSACT';
14619       IF  p_amt_rem.sum_tax_amt_orig = 0 THEN
14620         l_res := l_res||'_NTL';
14621       ELSE
14622         l_res := l_res||'_YTL';
14623       END IF;
14624     ELSIF p_ae_rule_rec.tax_code_source1 = 'NONE'  THEN
14625       IF    p_ae_rule_rec.gl_account_source1 = 'REVENUE_ON_INVOICE' THEN
14626         l_res := l_res || '_GASROI_TCSN';
14627         IF p_amt_rem.sum_tax_amt_orig = 0  THEN
14628           l_res := l_res||'_NTL';
14629         ELSE
14630           l_res := l_res||'_YTL';
14631         END IF;
14632       ELSIF  p_ae_rule_rec.gl_account_source1 = 'ACTIVITY_GL_ACCOUNT' THEN
14633         l_res := l_res||'_GASACT_TCSN';
14634 /****
14635         IF    p_amt_rem.sum_tax_amt_orig = 0 THEN
14636           l_res := l_res||'_NTL';
14637         ELSE
14638           l_res := l_res||'_YTL';
14639         END IF;
14640 ****/
14641       ---Commented the above as part of bug# 6844079, the bug has detail description
14642       --- l_res will result in exception when _NTL is assigned
14643         l_res := l_res||'_YTL';
14644 
14645       ELSIF  p_ae_rule_rec.gl_account_source1 = 'TAX_CODE_ON_INVOICE' THEN
14646         l_res := l_res || '_GASTCI_TCSN';
14647         IF  p_amt_rem.sum_line_amt_orig = 0 THEN
14648            l_res := l_res ||'_NRL';
14649         ELSE
14650            l_res := l_res ||'_YRL';
14651         END IF;
14652         IF    p_amt_rem.sum_tax_amt_orig = 0 THEN
14653           l_res := l_res||'_NTL';
14654         ELSE
14655           l_res := l_res||'_YTL';
14656         END IF;
14657       END IF;
14658     END IF;
14659   END IF;
14660   IF PG_DEBUG = 'Y' THEN
14661   localdebug('  l_res:'||l_res);
14662   localdebug('arp_det_dist_pkg.tax_adj_type()-');
14663   END IF;
14664   RETURN l_res;
14665 END;
14666 
14667 
14668 
14669 /*------------------------------------------------------+
14670  | FUNCTION line_adj_type                               |
14671  +------------------------------------------------------+
14672  | Parameters:                                          |
14673  | -----------                                          |
14674  | p_adj_rec       the adjustment record.               |
14675  | p_ae_rule_rec   containing accounting acitivity      |
14676  |                 and bucket info.                     |
14677  | p_amt_rem       containing amount kept at invoice    |
14678  |                 lines.                               |
14679  | p_app_rec       the app rec                          |
14680  | p_source_exec   'ADJ' 'ED' 'UNED'                    |
14681  +------------------------------------------------------+
14682  | Return the codification for line adjustment          |
14683  |  Example of code returned LA_GASROI_NRL              |
14684  |   meaning line adjustment with GL account Source     |
14685  |   Revenue on Invoice and                             |
14686  |   the buckets Rev is <> 0                            |
14687  +------------------------------------------------------+
14688  | Created 26-OCT-03     Herve Yu                       |
14689  +------------------------------------------------------*/
14690 FUNCTION line_adj_type(p_adj_rec           IN  ar_adjustments%rowtype,
14691                        p_ae_rule_rec       IN  ae_rule_rec_type,
14692                        p_amt_rem           IN  g_amt_rem_type,
14693                        p_app_rec           IN ar_receivable_applications%rowtype,
14694                        p_source_exec       IN VARCHAR2)
14695 RETURN VARCHAR2
14696 IS
14697  l_res VARCHAR2(30);
14698 BEGIN
14699   IF PG_DEBUG = 'Y' THEN
14700   localdebug('arp_det_dist_pkg.line_adj_type()+');
14701   localdebug('  p_source_exec:'||p_source_exec);
14702   END IF;
14703   IF p_source_exec = 'ADJ' THEN
14704     IF p_adj_rec.type = 'LINE' AND (nvl(p_adj_rec.amount,0) <> 0)  THEN
14705        l_res := 'LA';
14706     ELSE
14707        l_res := 'NOT_CONCERN';
14708     END IF;
14709   ELSIF p_source_exec IN ('ED','UNED') THEN
14710     IF ed_uned_type(p_source_exec,p_app_rec,'LINE') = 'Y' THEN
14711        l_res := 'LA';
14712     END IF;
14713   END IF;
14714   IF l_res  IN ('LA') THEN
14715     IF  p_ae_rule_rec.gl_account_source1 = 'REVENUE_ON_INVOICE' THEN
14716       l_res := l_res||'_GASROI';
14717       IF p_amt_rem.sum_line_amt_orig = 0   THEN
14718         l_res := l_res||'_NRL';
14719       ELSE
14720         l_res := l_res||'_YRL';
14721       END IF;
14722     ELSIF  p_ae_rule_rec.gl_account_source1 = 'ACTIVITY_GL_ACCOUNT' THEN
14723       l_res := l_res ||'_GASACT';
14724       IF p_amt_rem.sum_line_amt_orig = 0  THEN
14725         l_res := l_res||'_NRL';
14726       ELSE
14727         l_res := l_res||'_YRL';
14728       END IF;
14729     ELSIF  p_ae_rule_rec.gl_account_source1 = 'TAX_CODE_ON_INVOICE' THEN
14730       l_res := l_res ||'_GASTCI';
14731       IF p_amt_rem.sum_line_amt_orig  = 0  THEN
14732         l_res := l_res||'_NRL';
14733       ELSE
14734         l_res := l_res||'_YRL';
14735         IF p_amt_rem.tl_for_rl = 'Y' THEN
14736           l_res := l_res||'_YTR';
14737         ELSE
14738           l_res := l_res||'_NTR';
14739         END IF;
14740       END IF;
14741     END IF;
14742 
14743   END IF;
14744   IF PG_DEBUG = 'Y' THEN
14745   localdebug('  l_res:'||l_res);
14746   localdebug('arp_det_dist_pkg.chrg_adj_type()-');
14747   END IF;
14748   RETURN l_res;
14749 END;
14750 
14751 
14752 
14753 /*------------------------------------------------------+
14754  | FUNCTION frt_adj_type                                |
14755  +------------------------------------------------------+
14756  | Parameters:                                          |
14757  | -----------                                          |
14758  | p_adj_rec       the adjustment record.               |
14759  | p_ae_rule_rec   containing accounting acitivity      |
14760  |                 and bucket info.                     |
14761  | p_amt_rem       containing amount kept at invoice    |
14762  |                 lines.                               |
14763  | p_app_rec       the app rec                          |
14764  | p_source_exec   'ADJ' 'ED' 'UNED'                    |
14765  +------------------------------------------------------+
14766  | Return the codification for freight adjustment       |
14767  |  Example of code returned FA_GASROI_YRL_YHFL_NLFL    |
14768  |   meaning freight adjustment with GL account Source  |
14769  |   Revenue on Invoice and                             |
14770  |   the buckets Rev and Freight at header are <> 0     |
14771  +------------------------------------------------------+
14772  | Created 26-OCT-03     Herve Yu                       |
14773  +------------------------------------------------------*/
14774 FUNCTION frt_adj_type(p_adj_rec           IN  ar_adjustments%rowtype,
14775                       p_ae_rule_rec       IN  ae_rule_rec_type,
14776                       p_amt_rem           IN  g_amt_rem_type,
14777                       p_app_rec           IN ar_receivable_applications%rowtype,
14778                       p_source_exec       IN VARCHAR2)
14779 RETURN VARCHAR2
14780 IS
14781   l_res     VARCHAR2(30);
14782 BEGIN
14783   IF PG_DEBUG = 'Y' THEN
14784   localdebug('arp_det_dist_pkg.frt_adj_type()+');
14785   localdebug('  p_source_exec:'||p_source_exec);
14786   END IF;
14787   IF p_source_exec = 'ADJ' THEN
14788     IF p_adj_rec.type = 'FREIGHT' AND (nvl(p_adj_rec.amount,0) <> 0)  THEN
14789       l_res := 'FA';
14790     ELSE
14791       l_res := 'NOT_CONCERN';
14792     END IF;
14793   ELSIF p_source_exec IN ('ED','UNED') THEN
14794     IF ed_uned_type(p_source_exec,p_app_rec,'FREIGHT') = 'Y' THEN
14795        l_res := 'FA';
14796     END IF;
14797   END IF;
14798 
14799   IF l_res IN ('FA')  THEN
14800     IF     p_ae_rule_rec.gl_account_source1 = 'REVENUE_ON_INVOICE' THEN
14801       l_res := l_res || '_GASROI';
14802       IF    p_amt_rem.sum_line_frt_amt_orig <> 0 THEN
14803          l_res  := l_res||'_NHFL_YLFL';
14804       ELSIF p_amt_rem.sum_head_frt_amt_orig <> 0 THEN
14805          l_res  := l_res||'_YHFL_NLFL';
14806       ELSIF p_amt_rem.sum_head_frt_amt_orig = 0 AND p_amt_rem.sum_line_frt_amt_orig = 0 THEN
14807          l_res  := l_res||'_NHFL_NLFL';
14808       END IF;
14809     ELSIF  p_ae_rule_rec.gl_account_source1 = 'ACTIVITY_GL_ACCOUNT' THEN
14810       l_res := l_res || '_GASACT';
14811       IF    p_amt_rem.sum_line_frt_amt_orig <> 0 THEN
14812          l_res  := l_res||'_NHFL_YLFL';
14813       ELSIF p_amt_rem.sum_head_frt_amt_orig <> 0 THEN
14814          l_res  := l_res||'_YHFL_NLFL';
14815       ELSIF p_amt_rem.sum_head_frt_amt_orig = 0 AND p_amt_rem.sum_line_frt_amt_orig = 0 THEN
14816          l_res  := l_res||'_NHFL_NLFL';
14817       END IF;
14818     ELSIF   p_ae_rule_rec.gl_account_source1 = 'TAX_CODE_ON_INVOICE' THEN
14819       l_res := l_res || '_GASTCI';
14820       IF  p_amt_rem.sum_line_frt_amt_orig <> 0 THEN
14821          l_res := l_res || '_NHFL_YLFL';
14822          IF  p_amt_rem.tl_for_fl = 'Y' THEN
14823            l_res := l_res || '_YTF';
14824          ELSE
14825            l_res  := l_res|| '_NTF';
14826          END IF;
14827       ELSIF p_amt_rem.sum_head_frt_amt_orig <> 0 THEN
14828          l_res := l_res || '_YHFL_NLFL';
14829          IF  p_amt_rem.tl_for_fl = 'Y' THEN
14830            l_res := l_res || '_YTF';
14831          ELSE
14832            l_res  := l_res|| '_NTF';
14833          END IF;
14834       ELSIF p_amt_rem.sum_head_frt_amt_orig = 0 AND p_amt_rem.sum_line_frt_amt_orig = 0 THEN
14835          l_res := l_res || '_NHFL_NLFL';
14836          IF  p_amt_rem.tl_for_fl = 'Y' THEN
14837            l_res := l_res || '_YTF';
14838          ELSE
14839            l_res  := l_res|| '_NTF';
14840          END IF;
14841       END IF;
14842     END IF;
14843   END IF;
14844   IF PG_DEBUG = 'Y' THEN
14845   localdebug('  l_res:'||l_res);
14846   localdebug('arp_det_dist_pkg.frt_adj_type()-');
14847   END IF;
14848   RETURN l_res;
14849 END;
14850 
14851 /*------------------------------------------------------+
14852  | FUNCTION chrg_adj_type                               |
14853  +------------------------------------------------------+
14854  | Parameters:                                          |
14855  | -----------                                          |
14856  | p_adj_rec       the adjustment record.               |
14857  | p_ae_rule_rec   containing accounting acitivity      |
14858  |                 and bucket info.                     |
14859  | p_amt_rem       containing amount kept at invoice    |
14860  |                 lines.                               |
14861  | p_app_rec       the app rec                          |
14862  | p_source_exec   'ADJ' 'ED' 'UNED'                    |
14863  +------------------------------------------------------+
14864  | Return the codification for charge adjustment        |
14865  |  Example of code returned CA_GASACT_YRL_YHFL_NLFL    |
14866  |   meaning charge adjustment with GL account Activity |
14867  |   the buckets Rev and Freight at header are <> 0     |
14868  +------------------------------------------------------+
14869  | Created 26-OCT-03     Herve Yu                       |
14870  +------------------------------------------------------*/
14871 FUNCTION chrg_adj_type(p_adj_rec           IN  ar_adjustments%rowtype,
14872                        p_ae_rule_rec       IN  ae_rule_rec_type,
14873                        p_amt_rem           IN  g_amt_rem_type,
14874                        p_app_rec           IN ar_receivable_applications%rowtype,
14875                        p_source_exec       IN VARCHAR2)
14876 RETURN VARCHAR2
14877 IS
14878   l_res         VARCHAR2(30);
14879   l_tot_frt_rev NUMBER;
14880   l_tot_frt     NUMBER;
14881 BEGIN
14882   IF PG_DEBUG = 'Y' THEN
14883   localdebug('arp_det_dist_pkg.chrg_adj_type()+');
14884   localdebug('  p_source_exec:'||p_source_exec);
14885   END IF;
14886   IF p_source_exec = 'ADJ' THEN
14887     IF p_adj_rec.type = 'CHARGES' AND (nvl(p_adj_rec.amount,0) <> 0)  THEN
14888       l_res := 'CA';
14889     ELSE
14890       l_res := 'NOT_CONCERN';
14891     END IF;
14892   ELSIF p_source_exec IN ('ED','UNED') THEN
14893     IF ed_uned_type(p_source_exec,p_app_rec,'CHARGES') = 'Y' THEN
14894        l_res := 'CA';
14895     END IF;
14896   END IF;
14897 
14898   IF l_res IN ('CA') THEN
14899     IF   p_ae_rule_rec.gl_account_source1 = 'ACTIVITY_GL_ACCOUNT' THEN
14900       l_res := l_res||'_GASACT';
14901       IF       p_amt_rem.sum_line_amt_orig <> 0 THEN
14902          l_res := l_res||'_YRL';
14903       ELSIF    p_amt_rem.sum_line_amt_orig = 0 THEN
14904          l_res := l_res||'_NRL';
14905       END IF;
14906       IF       p_amt_rem.sum_line_frt_amt_orig <> 0 THEN
14907          l_res := l_res||'_NHFL_YLFL';
14908       ELSIF    p_amt_rem.sum_head_frt_amt_orig <> 0 THEN
14909          l_res := l_res||'_YHFL_NLFL';
14910       ELSIF    p_amt_rem.sum_head_frt_amt_orig = 0
14911            AND p_amt_rem.sum_line_frt_amt_orig = 0 THEN
14912          l_res := l_res||'_NHFL_NLFL';
14913       END IF;
14914     ELSIF p_ae_rule_rec.gl_account_source1 = 'REVENUE_ON_INVOICE' THEN
14915       l_res := l_res||'_GASROI';
14916     ELSIF p_ae_rule_rec.gl_account_source1 = 'TAX_CODE_ON_INVOICE' THEN
14917       l_res := l_res||'_GASTCI';
14918     END IF;
14919   END IF;
14920   IF PG_DEBUG = 'Y' THEN
14921   localdebug('  l_res:'||l_res);
14922   localdebug('arp_det_dist_pkg.chrg_adj_type()-');
14923   END IF;
14924   RETURN l_res;
14925 END;
14926 
14927 /*-----------------------------------------------------------+
14928  | PROCEDURE possible_adjust                                 |
14929  |  check if a particular adjustment is possible.            |
14930  +-----------------------------------------------------------+
14931  | Parameters:                                               |
14932  | -----------                                               |
14933  | p_adj_rec       the adjustment record.                    |
14934  | p_ae_rule_rec   containing accounting acitivity           |
14935  |                 and bucket info.                          |
14936  | p_amt_rem       containing amount kept at invoice         |
14937  |                 lines.                                    |
14938  | x_return_status value according to the possibility        |
14939  |                 of the adjustment                         |
14940  |                  FND_API.G_RET_STS_SUCCESS if possible    |
14941  |                  FND_API.G_RET_STS_ERROR   if imposssible |
14942  | x_line_adj      codification for line adjustment          |
14943  | x_tax_adj       codification for tax adjustment           |
14944  | x_frt_adj       codification for freight adjustment       |
14945  | x_chrg_adj      codification for charge adjustment        |
14946  +-----------------------------------------------------------+
14947  | Created 26-OCT-03     Herve Yu                            |
14948  +-----------------------------------------------------------*/
14949 PROCEDURE possible_adjust(p_adj_rec           IN  ar_adjustments%rowtype,
14950                           p_ae_rule_rec       IN  ae_rule_rec_type,
14951                           p_customer_trx_id   IN  NUMBER,
14952                           x_return_status     OUT NOCOPY VARCHAR2,
14953                           x_line_adj          OUT NOCOPY VARCHAR2,
14954                           x_tax_adj           OUT NOCOPY VARCHAR2,
14955                           x_frt_adj           OUT NOCOPY VARCHAR2,
14956                           x_chrg_adj          OUT NOCOPY VARCHAR2,
14957                           p_app_rec           IN  ar_receivable_applications%rowtype
14958                           )
14959 IS
14960   l_source_exec   VARCHAR2(30);
14961   l_amt_rem       g_amt_rem_type;
14962   l_tax_adj       VARCHAR2(100);
14963   l_frt_adj       VARCHAR2(100);
14964   l_line_adj      VARCHAR2(100);
14965   l_chrg_adj      VARCHAR2(100);
14966 BEGIN
14967   IF PG_DEBUG = 'Y' THEN
14968   localdebug('arp_det_dist_pkg.possible_adjust()+');
14969   END IF;
14970 
14971   x_return_status  := FND_API.G_RET_STS_SUCCESS;
14972 
14973   get_orig_amt(p_customer_trx_id => p_customer_trx_id,
14974                x_amt_rem         => l_amt_rem);
14975 
14976 --  IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
14977      x_tax_adj := tax_adj_type(p_adj_rec       => p_adj_rec,
14978                                p_ae_rule_rec   => p_ae_rule_rec,
14979                                p_amt_rem       => l_amt_rem,
14980                                p_app_rec       => p_app_rec,
14981                                p_source_exec   => 'ADJ');
14982 
14983      IF PG_DEBUG = 'Y' THEN
14984      localdebug('x_tax_adj : '||x_tax_adj);
14985      END IF;
14986 
14987      x_line_adj := line_adj_type(p_adj_rec       => p_adj_rec,
14988                                  p_ae_rule_rec   => p_ae_rule_rec,
14989                                  p_amt_rem       => l_amt_rem,
14990                                  p_app_rec       => p_app_rec,
14991                                  p_source_exec   => 'ADJ');
14992 
14993      IF PG_DEBUG = 'Y' THEN
14994      localdebug('x_line_adj : '||x_line_adj);
14995      END IF;
14996 
14997      x_frt_adj  := frt_adj_type(p_adj_rec       => p_adj_rec,
14998                                 p_ae_rule_rec   => p_ae_rule_rec,
14999                                 p_amt_rem       => l_amt_rem,
15000                                 p_app_rec       => p_app_rec,
15001                                 p_source_exec   => 'ADJ');
15002 
15003      IF PG_DEBUG = 'Y' THEN
15004      localdebug('x_frt_adj : '||x_frt_adj);
15005      END IF;
15006 
15007      x_chrg_adj  := chrg_adj_type(p_adj_rec       => p_adj_rec,
15008                                   p_ae_rule_rec   => p_ae_rule_rec,
15009                                   p_amt_rem       => l_amt_rem,
15010                                   p_app_rec       => p_app_rec,
15011                                   p_source_exec   => 'ADJ');
15012 
15013      IF PG_DEBUG = 'Y' THEN
15014      localdebug('x_chrg_adj : '||x_chrg_adj);
15015      END IF;
15016 
15017 --  END IF;
15018 
15019   -- The impossible cases
15020   IF x_line_adj IN ('LA_GASROI_NRL',
15021                     'LA_GASTCI_YRL_NTR',
15022                     'LA_GASTCI_NRL')
15023   THEN
15024       x_return_status := FND_API.G_RET_STS_ERROR;
15025       fnd_message.set_name('AR','AR_'||x_line_adj);
15026       fnd_msg_pub.add;
15027   END IF;
15028 
15029   IF x_tax_adj IN ('TA_TCSINV_NTL'  ,'TA_GASTCI_TCSN_NTL'  ,'TA_GASROI_TCSN_NTL',
15030                    'TA_GASACT_TCSN_NTL',
15031                    'LATB_TCSINV_NTL','LATB_GASTCI_TCSN_NTL','LATB_GASROI_TCSN_NTL',
15032                    'LATB_GASACT_TCSN_NTL',
15033                    'CATB_TCSINV_NTL','CATB_GASTCI_TCSN_NTL','CATB_GASROI_TCSN_NTL',
15034                    'CATB_GASACT_TCSN_NTL',
15035                    'FATB_TCSINV_NTL','FATB_GASTCI_TCSN_NTL','FATB_GASROI_TCSN_NTL',
15036                    'FATB_GASACT_TCSN_NTL'
15037                    ) THEN
15038       x_return_status := FND_API.G_RET_STS_ERROR;
15039       fnd_message.set_name('AR','AR_'||x_tax_adj);
15040       fnd_msg_pub.add;
15041   END IF;
15042 
15043   IF x_frt_adj IN ('FA_GASROI_NHFL_NLFL'    , 'FA_GASROI_YHFL_NLFL',
15044                    'FA_GASTCI_NHFL_NLFL_NTF', 'FA_GASTCI_NHFL_YLFL_NTF',
15045                    'FA_GASTCI_NHFL_NLFL_YTF', 'FA_GASTCI_YHFL_NLFL_NTF')  THEN
15046       x_return_status := FND_API.G_RET_STS_ERROR;
15047       fnd_message.set_name('AR','AR_'||x_frt_adj);
15048       fnd_msg_pub.add;
15049   END IF;
15050 
15051   -- IF g_chrg_adj IN ('CA_GASROI','CA_GASTCI') THEN --,'CA_GASACT_NRL_NHFL_NLFL') THEN
15052   -- We do not allowarge adjustment on 0 dollars invoice
15053   -- currently the case
15054   -- Invoice with 0 line, 0 tax, 0 Freight
15055   -- If adjusted with a line adjustment + chrg adjustment is breaking at application time
15056   --
15057 --  IF g_chrg_adj IN ('CA_GASROI','CA_GASTCI','CA_GASACT_NRL_NHFL_NLFL') THEN
15058 --HYU reautorise 'CA_GASACT_NRL_NHFL_NLFL'
15059   IF x_chrg_adj IN ('CA_GASROI','CA_GASTCI') THEN
15060       x_return_status := FND_API.G_RET_STS_ERROR;
15061       fnd_message.set_name('AR','AR_'||x_chrg_adj);
15062       fnd_msg_pub.add;
15063   END IF;
15064 
15065   IF PG_DEBUG = 'Y' THEN
15066   localdebug('  x_return_status :'||x_return_status);
15067   localdebug('arp_det_dist_pkg.possible_adjust()-');
15068   END IF;
15069 END;
15070 
15071 
15072 PROCEDURE get_from_currency
15073   (p_app_rec          IN ar_receivable_applications%ROWTYPE,
15074    x_from_curr_code   OUT NOCOPY  VARCHAR2)
15075 IS
15076   CURSOR c_rec_curr(p_cr_id IN NUMBER) IS
15077   SELECT CURRENCY_CODE
15078     FROM ar_cash_receipts_all
15079    WHERE cash_receipt_id = p_cr_id;
15080   no_curr_on_the_cr   EXCEPTION;
15081 BEGIN
15082   IF p_app_rec.cash_receipt_id IS NOT NULL THEN
15083     OPEN c_rec_curr(p_app_rec.cash_receipt_id);
15084     FETCH c_rec_curr INTO x_from_curr_code;
15085     IF c_rec_curr%NOTFOUND THEN
15086       RAISE no_curr_on_the_cr;
15087     END IF;
15088     CLOSE c_rec_curr;
15089   ELSIF p_app_rec.customer_trx_id IS NOT NULL THEN
15090     x_from_curr_code := g_cust_inv_rec.invoice_currency_code;
15091   END IF;
15092 EXCEPTION
15093  WHEN no_curr_on_the_cr THEN
15094    IF c_rec_curr%ISOPEN THEN
15095       CLOSE c_rec_curr;
15096    END IF;
15097    IF PG_DEBUG = 'Y' THEN
15098    localdebug(' EXCEPTION no_curr_on_the_cr in get_from_currency cr_id:'||p_app_rec.cash_receipt_id);
15099    END IF;
15100  WHEN OTHERS THEN
15101    IF c_rec_curr%ISOPEN THEN
15102       CLOSE c_rec_curr;
15103    END IF;
15104    IF PG_DEBUG = 'Y' THEN
15105    localdebug(' EXCEPTION OTHERS in get_from_currency cr_id:'||SQLERRM);
15106    END IF;
15107 END;
15108 
15109 /*---------------------------------------------------------------------+
15110  | FUNCTION Accting_Proration_Fct                                      |
15111  +---------------------------------------------------------------------+
15112  | This function                                                       |
15113  |  does the proration and return the value in a row by row manner     |
15114  |  usefull for function in SQL statement updation                     |
15115  |                                                                     |
15116  | Parameter                                                           |
15117  | p_temp_amt           distribution amount template for proration     |
15118  |                      for example ae_pro_amt(i)                      |
15119  | p_base_proration     base for proration                             |
15120  |                      for example sum ae_pro_amt(i)                  |
15121  | p_alloc_amount       The amount for which distribution need to be   |
15122  |                      computed. For example p_app_rec.from_amt_applied
15123  | p_base_currency      Base currency code                             |
15124  | p_trx_currency       Trx  currency code                             |
15125  | p_rec_currency       Rec  currency code                             |
15126  | p_flag               indication of which from distribution to compute
15127  |                       p_flag = 'FROM_AMT'                           |
15128  |                       p_flag = 'FROM_ACCTD_AMT'                     |
15129  |                       p_flag = 'FROM_CHRG_AMT'                      |
15130  |                       p_flag = 'FROM_CHRG_ACCTD_AMT'                |
15131  | History                                                             |
15132  |  17-DEC-2003  H. Yu  Created                                        |
15133  +---------------------------------------------------------------------*/
15134 FUNCTION Accting_Proration_Fct
15135   (p_temp_amt                   IN NUMBER,
15136    p_base_proration             IN NUMBER,
15137    p_alloc_amount               IN NUMBER,
15138    p_base_currency              IN VARCHAR2,
15139    p_trx_currency               IN VARCHAR2,
15140    p_rec_currency               IN VARCHAR2,
15141    p_flag                       IN VARCHAR2,
15142    p_curr_rnd_flag              IN VARCHAR2 DEFAULT 'N')
15143 RETURN NUMBER
15144 IS
15145   l_result        NUMBER;
15146   l_process       VARCHAR2(1);
15147   l_run_amt       NUMBER;
15148   l_run_total     NUMBER;
15149   l_currency      VARCHAR2(30);
15150 BEGIN
15151   IF PG_DEBUG = 'Y' THEN
15152   localdebug('arp_det_dist_pkg.Accting_Proration_Fct()+');
15153   localdebug('  p_temp_amt       : '||p_temp_amt      );
15154   localdebug('  p_base_proration : '||p_base_proration);
15155   localdebug('  p_alloc_amount   : '||p_alloc_amount  );
15156   localdebug('  p_base_currency  : '||p_base_currency );
15157   localdebug('  p_trx_currency   : '||p_trx_currency  );
15158   localdebug('  p_rec_currency   : '||p_rec_currency  );
15159   localdebug('  p_flag           : '||p_flag          );
15160   localdebug('  p_curr_rnd_flag  : '||p_curr_rnd_flag );
15161   END IF;
15162   l_process := 'Y';
15163   IF     p_flag = 'FROM_AMT'        THEN
15164     IF p_trx_currency = p_rec_currency THEN
15165       l_process := 'N';
15166     ELSE
15167       g_run_from_amt := g_run_from_amt + p_temp_amt;
15168       l_run_amt      := g_run_from_amt;
15169       l_run_total    := g_run_from_total;
15170       l_currency     := p_rec_currency;
15171       IF PG_DEBUG = 'Y' THEN
15172       localdebug('  g_run_from_amt   in '||p_flag||' : '||g_run_from_amt);
15173       localdebug('  g_run_from_total in '||p_flag||' : '||g_run_from_total);
15174       END IF;
15175     END IF;
15176   ELSIF  p_flag = 'FROM_ACCTD_AMT'  THEN
15177     IF (p_trx_currency = p_base_currency AND
15178         p_rec_currency = p_base_currency)
15179        OR
15180         p_curr_rnd_flag = 'Y'  --Bug 13543605
15181     THEN
15182       l_process := 'N';
15183     ELSE
15184       g_run_from_acctd_amt := g_run_from_acctd_amt + p_temp_amt;
15185       l_run_amt            := g_run_from_acctd_amt;
15186       l_run_total          := g_run_from_acctd_total;
15187       l_currency           := p_base_currency;
15188       IF PG_DEBUG = 'Y' THEN
15189       localdebug('  g_run_from_acctd_amt   in '||p_flag||' : '||g_run_from_acctd_amt);
15190       localdebug('  g_run_from_acctd_total in '||p_flag||' : '||g_run_from_acctd_total);
15191       END IF;
15192     END IF;
15193   END IF;
15194   IF l_process = 'Y' THEN
15195     IF p_base_proration <> 0 THEN
15196      l_result :=     CurrRound(  l_run_amt
15197                                  / p_base_proration
15198                                  * p_alloc_amount,
15199                                  l_currency)
15200                                - l_run_total;
15201     ELSE
15202      l_result := 0;
15203     END IF;
15204     l_run_total := l_run_total + l_result;
15205 
15206     IF     p_flag = 'FROM_AMT'        THEN
15207       g_run_from_total := l_run_total;
15208     ELSIF  p_flag = 'FROM_ACCTD_AMT'  THEN
15209       g_run_from_acctd_total := l_run_total;
15210     END IF;
15211   ELSE
15212     l_result := p_temp_amt;
15213   END IF;
15214 
15215   IF PG_DEBUG = 'Y' THEN
15216   localdebug('  l_result : '|| l_result);
15217   localdebug('arp_det_dist_pkg.Accting_Proration_Fct()-');
15218   END IF;
15219   RETURN l_result;
15220 EXCEPTION
15221  WHEN OTHERS THEN
15222   IF PG_DEBUG = 'Y' THEN
15223   localdebug(' EXCEPTION : Accting_Proration_Fct '||SQLERRM);
15224   END IF;
15225   app_exception.raise_exception;
15226 END;
15227 
15228 /*----------------------------------------------------------------------+
15229  | PROCEDURE update_from_gt                                             |
15230  +----------------------------------------------------------------------+
15231  | This procedure                                                       |
15232  |  does the updation of ar_ae_alloc_rec_gt for distributions in        |
15233  |  receipt currency and in base currency converted from receipt        |
15234  |  currency                                                            |
15235  |                                                                      |
15236  | Parameter                                                            |
15237  | p_from_amt            Amount allocated for line, frt, tax in Receipt |
15238  |                       currency                                       |
15239  | p_from_acctd_amt      Acctd Amount allocated for line, frt, tax in   |
15240  |                       in base currency from the Receipt currency     |
15241  |                       using exchange rate of the receipt             |
15242  | History                                                              |
15243  |  05-NOV-2004  H. Yu  Created                                         |
15244  +----------------------------------------------------------------------*/
15245 PROCEDURE update_from_gt
15246 (p_from_amt            IN NUMBER,
15247  p_from_acctd_amt      IN NUMBER,
15248  p_ae_sys_rec          IN arp_acct_main.ae_sys_rec_type,
15249  p_app_rec             IN ar_receivable_applications%ROWTYPE,
15250  p_gt_id               IN VARCHAR2 DEFAULT NULL,
15251  p_inv_currency        IN VARCHAr2 DEFAULT NULL)
15252 IS
15253   CURSOR cu1(p_gt_id IN NUMBER) IS
15254   SELECT /*+INDEX (AR_LINE_APP_DETAIL_GT AR_LINE_APP_DETAIL_GT_N1)*/
15255          SUM(NVL(amount,0)),
15256          SUM(NVL(acctd_amount,0))
15257     FROM AR_LINE_APP_DETAIL_GT
15258    WHERE gt_id = p_gt_id
15259      AND activity_bucket IN ('APP_LINE','APP_CHRG','APP_TAX','APP_FRT',
15260                     'ADJ_LINE','ADJ_TAX','ADJ_CHRG','ADJ_FRT')
15261      AND (   NVL(amount,0)            <> 0
15262           OR NVL(acctd_amount,0)      <> 0);
15263 
15264   l_pro_base               NUMBER;
15265   l_pro_acctd_base         NUMBER;
15266   l_process                VARCHAR2(1);
15267   l_from_curr_code         VARCHAR2(30);
15268 --{LLCA CROSS CURRENCY
15269   l_gt_id                  VARCHAR2(30);
15270   l_inv_currency           VARCHAR2(30);
15271 --}
15272   no_from_amount_required  EXCEPTION;
15273   /* local variables introduced as part of bug 7343649 - vavenugo*/
15274   l_source_id              NUMBER;
15275   l_br_flag                VARCHAR2(1) DEFAULT 'N';
15276   l_br_count               NUMBER;
15277   l_curr_rnd_flag          VARCHAR2(1) DEFAULT 'N';
15278   l_fixed_rate_flag        VARCHAR2(1) DEFAULT 'N';
15279   l_app_date               DATE;
15280   l_trx_date               DATE;
15281   l_trx_exch_rate          NUMBER;
15282   l_app_exch_rate          NUMBER;
15283 BEGIN
15284   IF PG_DEBUG = 'Y' THEN
15285   localdebug('arp_det_dist_pkg.update_from_gt()+');
15286   END IF;
15287 
15288   --{LLCA CROSS CURRENCY
15289   IF   p_gt_id IS NULL THEN
15290     l_gt_id := g_gt_id;
15291   ELSE
15292     l_gt_id := p_gt_id;
15293   END IF;
15294 
15295   /* Bug 7343649. Populating l_source_id and l_br_flag. -vavenugo */
15296   /*Bug7391957, Added following SELECT statement within a BEGIN..END block */
15297   BEGIN
15298   select distinct source_id
15299   into l_source_id
15300   from ar_line_app_detail_gt
15301   where gt_id = l_gt_id
15302   AND source_table ='RA';
15303 
15304   select count(*)
15305   into l_br_count
15306   from ar_receivable_applications_all ra,
15307        ar_payment_schedules_all pay
15308   where ra.receivable_application_id = l_source_id and
15309         ra.applied_payment_schedule_id = pay.payment_schedule_id and
15310 	pay.class ='BR';
15311   EXCEPTION
15312   WHEN NO_DATA_FOUND THEN
15313        NULL;
15314   WHEN OTHERS THEN
15315        IF PG_DEBUG = 'Y' THEN
15316        localdebug(' EXCEPTION: update_from_gt :'||SQLERRM);
15317        END IF;
15318        RAISE;
15319   END;
15320 
15321   IF l_br_count > 0 THEN
15322      l_br_flag :='Y';
15323   END IF;
15324 
15325 
15326   IF   p_inv_currency IS NULL THEN
15327     l_inv_currency := g_cust_inv_rec.invoice_currency_code;
15328   ELSE
15329     l_inv_currency := p_inv_currency;
15330   END IF;
15331   --}
15332   g_run_from_amt               := 0;
15333   g_run_from_total             := 0;
15334   g_run_from_acctd_amt         := 0;
15335   g_run_from_acctd_total       := 0;
15336 
15337   IF p_app_rec.receivable_application_id IS NOT NULL THEN
15338      get_from_currency(p_app_rec          => p_app_rec,
15339                        x_from_curr_code   => l_from_curr_code);
15340 
15341      IF l_from_curr_code IS NULL AND p_app_rec.customer_trx_id IS NOT NULL THEN
15342         l_from_curr_code := l_inv_currency;
15343      END IF;
15344      IF PG_DEBUG = 'Y' THEN
15345      localdebug(' l_from_curr_code :'||l_from_curr_code);
15346      END IF;
15347   ELSE
15348      -- No from distribution process required as no receivable_application
15349      RAISE no_from_amount_required;
15350   END IF;
15351 
15352   /* Bug7343649 - vavenugo */
15353 /* Check if the application involves BR and if so populate the base amounts using the new logic */
15354 IF l_br_flag <> 'Y' THEN
15355 
15356   /* Proceed as usual */
15357 
15358   OPEN cu1(l_gt_id);
15359     FETCH cu1 INTO l_pro_base,
15360                    l_pro_acctd_base;
15361     IF cu1%NOTFOUND THEN
15362       l_process := 'N';
15363     ELSE
15364       l_process := 'Y';
15365     END IF;
15366   CLOSE cu1;
15367 
15368  ELSE
15369 
15370     /* Use new the logic */
15371 
15372      IF l_source_id is null THEN
15373       l_process := 'N';
15374     ELSE
15375       l_process := 'Y';
15376     END IF;
15377 
15378 
15379      SELECT amount_applied,acctd_amount_applied_to
15380      INTO l_pro_base, l_pro_acctd_base
15381      from ar_receivable_applications_all
15382      where receivable_application_id = l_source_id;
15383 
15384  END IF;
15385  /* End bug7343649 - vavenugo */
15386 
15387 
15388   IF PG_DEBUG = 'Y' THEN
15389   localdebug(' l_process 1 : '|| l_process);
15390   END IF;
15391 
15392   IF l_process = 'Y' THEN
15393 
15394     IF PG_DEBUG = 'Y' THEN
15395     localdebug(' l_pro_base           : '||l_pro_base);
15396     localdebug(' l_pro_acctd_base     : '|| l_pro_acctd_base);
15397     localdebug(' p_app_rec.application_type: '||p_app_rec.application_type);
15398     localdebug(' p_app_rec.status     : '||p_app_rec.status);
15399     END IF;
15400 
15401     -- Bug 13543605
15402     IF p_app_rec.status = 'APP' THEN
15403 
15404        BEGIN
15405          SELECT ps.trx_date, NVL(ps.exchange_rate, 1),
15406 	        ps1.trx_date, NVL(ps1.exchange_rate, 1)
15407          INTO   l_app_date, l_app_exch_rate,
15408 	        l_trx_date, l_trx_exch_rate
15409          FROM   ar_payment_schedules ps,
15410                 ar_payment_schedules ps1,
15411 		ar_receivable_applications ra
15412          WHERE  ra.receivable_application_id = p_app_rec.receivable_application_id
15413 	 and    ps.payment_schedule_id = ra.payment_schedule_id
15414          AND    ps1.payment_schedule_id = ra.applied_payment_schedule_id;
15415 
15416 	 IF PG_DEBUG = 'Y' THEN
15417  	   localdebug(' l_app_date          : '||l_app_date);
15418 	   localdebug(' l_app_exch_rate     : '||l_app_exch_rate);
15419 	   localdebug(' l_trx_date          : '||l_trx_date);
15420 	   localdebug(' l_trx_exch_rate     : '||l_trx_exch_rate);
15421 	 END IF;
15422 
15423          BEGIN
15424               l_fixed_rate_flag := arpcurr.isfixedrate(l_from_curr_code   	       ,
15425                                                        p_ae_sys_rec.base_currency      ,
15426                                                        l_app_date                      ,
15427                                                        l_inv_currency                  ,
15428   		                                       l_trx_date
15429                                                        );
15430          EXCEPTION
15431          WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
15432                 l_fixed_rate_flag := 'N'; --Posting treats this as null
15433          WHEN OTHERS THEN
15434                 RAISE;
15435          END;
15436 
15437 	 IF PG_DEBUG = 'Y' THEN
15438  	   localdebug(' l_fixed_rate_flag          : '||l_fixed_rate_flag);
15439 	   localdebug(' l_inv_currency             : '||l_inv_currency);
15440 	   localdebug(' l_from_curr_code           : '||l_from_curr_code);
15441 	 END IF;
15442 
15443          IF l_fixed_rate_flag = 'N' AND
15444             l_inv_currency = l_from_curr_code AND
15445             l_app_exch_rate = l_trx_exch_rate
15446 	 THEN
15447                l_fixed_rate_flag := 'Y';
15448          END IF;
15449 
15450 	 IF p_app_rec.acctd_amount_applied_from <> p_app_rec.acctd_amount_applied_to AND
15451 	    l_fixed_rate_flag = 'Y'
15452 	 THEN
15453 	       l_curr_rnd_flag := 'Y';
15454 	 END IF;
15455 
15456        EXCEPTION
15457        WHEN OTHERS THEN
15458             l_curr_rnd_flag := 'N';
15459        END;
15460     END IF;
15461 
15462     IF PG_DEBUG = 'Y' THEN
15463        localdebug(' l_curr_rnd_flag          : '||l_curr_rnd_flag);
15464     END IF;
15465 
15466 
15467     UPDATE AR_LINE_APP_DETAIL_GT a
15468     SET(FROM_AMOUNT                ,
15469         FROM_ACCTD_AMOUNT          ) =
15470     (SELECT DECODE(l_pro_base,0,0,
15471                  Accting_Proration_Fct
15472                  (AMOUNT,
15473                   l_pro_base,
15474                   p_from_amt,
15475                   p_ae_sys_rec.base_currency,
15476                   l_inv_currency,
15477                   l_from_curr_code,
15478                   'FROM_AMT',
15479 		  l_curr_rnd_flag)),
15480             DECODE(l_pro_acctd_base,0,0,
15481                  Accting_Proration_Fct
15482                  (ACCTD_AMOUNT,
15483                   l_pro_acctd_base,
15484                   p_from_acctd_amt,
15485                   p_ae_sys_rec.base_currency,
15486                   l_inv_currency,
15487                   l_from_curr_code,
15488                   'FROM_ACCTD_AMT',
15489 		  l_curr_rnd_flag))
15490        FROM AR_LINE_APP_DETAIL_GT b
15491       WHERE a.rowid    = b.rowid
15492         AND b.gt_id    = l_gt_id
15493         AND b.activity_bucket IN
15494             ('APP_LINE','APP_CHRG','APP_TAX','APP_FRT',
15495              'ADJ_LINE','ADJ_TAX','ADJ_CHRG','ADJ_FRT',
15496              'ED_LINE','ED_TAX','ED_CHRG','ED_FRT',
15497              'UNED_LINE','UNED_TAX','UNED_CHRG','UNED_FRT'))
15498      WHERE ( NVL(a.amount,0) <> 0 OR NVL(a.acctd_amount,0) <> 0)
15499        AND a.gt_id = l_gt_id;
15500 
15501   END IF;
15502   IF PG_DEBUG = 'Y' THEN
15503   localdebug('arp_det_dist_pkg.update_from_gt()-');
15504   END IF;
15505 EXCEPTION
15506   WHEN no_from_amount_required THEN
15507     IF PG_DEBUG = 'Y' THEN
15508     localdebug(' Handled exception No from distribution process required- probably a adjustment or a CM APP');
15509     END IF;
15510   WHEN OTHERS THEN
15511     IF cu1%ISOPEN THEN CLOSE cu1; END IF;
15512     IF PG_DEBUG = 'Y' THEN
15513     localdebug(' EXCEPTION: update_from_gt :'||SQLERRM);
15514     END IF;
15515     RAISE;
15516 END;
15517 
15518 
15519 
15520 PROCEDURE exec_adj_api_if_required
15521   (p_adj_rec         IN ar_adjustments%ROWTYPE,
15522    p_app_rec         IN ar_receivable_applications%ROWTYPE,
15523    p_ae_rule_rec     IN ae_rule_rec_type,
15524    p_cust_inv_rec    IN ra_customer_trx%ROWTYPE)
15525 IS
15526 
15527   CURSOR get_group_data_rev IS
15528    SELECT account_class           account_class,
15529           SUM(amount)             sum_amount,
15530           SUM(acctd_amount)       sum_acctd_amount,
15531           COUNT(account_class)    count
15532      FROM ra_cust_trx_line_gl_dist
15533     WHERE customer_trx_id = p_cust_inv_rec.customer_trx_id
15534       AND account_class IN ('UNEARN','UNBILL')
15535     GROUP BY account_class;
15536 
15537   l_account_class         VARCHAR2(30);
15538   l_sum_amount            NUMBER;
15539   l_sum_acctd_amount      NUMBER;
15540   l_count                 NUMBER;
15541 
15542   l_rev_adj_rec           AR_Revenue_Adjustment_PVT.Rev_Adj_Rec_Type;
15543   l_adj_id                NUMBER;
15544   l_dist_count            NUMBER;
15545   l_adj_number            ar_adjustments.adjustment_number%TYPE;
15546   l_ra_dist_tbl           AR_Revenue_Adjustment_PVT.RA_Dist_Tbl_Type;
15547 
15548   l_return_status         VARCHAR2(1);
15549   l_msg_count             NUMBER;
15550   l_msg_data              VARCHAR2(2000);
15551   l_mesg                  VARCHAR2(2000) := '';
15552   ram_api_error           EXCEPTION;
15553 
15554 BEGIN
15555   IF PG_DEBUG = 'Y' THEN
15556   localdebug('arp_det_dist_pkg.exec_adj_api_if_required()+');
15557   localdebug('  p_adj_rec.adjustment_id            :' || p_adj_rec.adjustment_id);
15558   localdebug('  p_app_rec.receivable_application_id:' || p_app_rec.receivable_application_id);
15559   localdebug('  p_cust_inv_rec.customer_trx_id     :' || p_cust_inv_rec.customer_trx_id);
15560   END IF;
15561 
15562   OPEN get_group_data_rev;
15563   FETCH get_group_data_rev INTO  l_account_class,
15564                                  l_sum_amount,
15565                                  l_sum_acctd_amount,
15566                                  l_count;
15567 
15568   IF get_group_data_rev%NOTFOUND THEN
15569     -- Normal invoice
15570      NULL;
15571   ELSE
15572     IF PG_DEBUG = 'Y' THEN
15573     localdebug('  l_sum_amount         :' || l_sum_amount);
15574     localdebug('  l_sum_acctd_amount   :' || l_sum_acctd_amount);
15575     END IF;
15576 
15577     IF ((l_sum_amount <> 0) OR (l_sum_acctd_amount <> 0)) THEN
15578        --
15579        --condition as to whether the RAM api will require to be called if gl account
15580        --source is revenue on invoice
15581        --
15582        IF (((p_adj_rec.adjustment_id IS NOT NULL)
15583            AND (p_ae_rule_rec.gl_account_source1 = 'REVENUE_ON_INVOICE')
15584                 AND (((nvl(p_adj_rec.line_adjusted,0) + nvl(p_adj_rec.freight_adjusted,0) +
15585                        nvl(p_adj_rec.receivables_charges_adjusted,0)) <> 0)
15586                      OR ((p_ae_rule_rec.tax_code_source1 = 'NONE') AND (nvl(p_adj_rec.tax_adjusted,0) <> 0))
15587                     ))
15588            OR
15589            ((p_app_rec.receivable_application_id IS NOT NULL)
15590             AND (((p_ae_rule_rec.gl_account_source1 = 'REVENUE_ON_INVOICE')
15591                   AND (((nvl(p_app_rec.line_ediscounted,0) + nvl(p_app_rec.freight_ediscounted,0) +
15592                          nvl(p_app_rec.charges_ediscounted,0)) <> 0)
15593                          OR ((p_ae_rule_rec.tax_code_source1 = 'NONE') AND (nvl(p_app_rec.tax_ediscounted,0) <> 0))
15594                       ))
15595                  OR
15596                  ((p_ae_rule_rec.gl_account_source2 = 'REVENUE_ON_INVOICE')
15597                   AND (((nvl(p_app_rec.line_uediscounted,0) + nvl(p_app_rec.freight_uediscounted,0) +
15598                          nvl(p_app_rec.charges_uediscounted,0)) <> 0)
15599                         OR ((p_ae_rule_rec.tax_code_source2 = 'NONE') AND (nvl(p_app_rec.tax_uediscounted,0) <> 0))
15600                       ))
15601                 ))
15602             )
15603        THEN --call revenue adjustment api
15604 
15605        /*----------------------------------------------------------------------------+
15606         | Call the revenue adjustment api to derive the revenue distributions on the |
15607         | fly, to allocate the amounts for gl account source = revenue on Invoice.   |
15608         +----------------------------------------------------------------------------*/
15609           l_rev_adj_rec.customer_trx_id := p_cust_inv_rec.customer_trx_id;
15610           l_rev_adj_rec.reason_code     := 'ACCOUNTING';
15611 
15612           IF PG_DEBUG = 'Y' THEN
15613 	  localdebug('  Calling AR_Revenue_Adjustment_PVT.Earn_Revenue ');
15614 	  END IF;
15615 
15616           AR_Revenue_Adjustment_PVT.Earn_Revenue
15617               (   p_api_version           => 2
15618                  ,p_init_msg_list         => FND_API.G_TRUE
15619                  ,p_commit                => FND_API.G_FALSE
15620                  ,p_validation_level      => FND_API.G_VALID_LEVEL_FULL
15621                  ,x_return_status         => l_return_status
15622                  ,x_msg_count             => l_msg_count
15623                  ,x_msg_data              => l_msg_data
15624                  ,p_rev_adj_rec           => l_rev_adj_rec
15625                  ,x_adjustment_id         => l_adj_id
15626                  ,x_adjustment_number     => l_adj_number
15627                  ,x_dist_count            => l_dist_count
15628                  ,x_ra_dist_tbl           => l_ra_dist_tbl);
15629 
15630 
15631            IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)  THEN
15632 
15633                IF l_msg_count > 1 THEN
15634                   fnd_msg_pub.reset;
15635                 --get only the first message from the api message stack for forms users
15636                   l_mesg := fnd_msg_pub.get(p_encoded=>FND_API.G_FALSE);
15637                ELSE
15638                   l_mesg := l_msg_data;
15639                END IF;
15640 
15641               localdebug('  l_mesg :' || l_mesg);
15642 
15643              --Now set the message token
15644                FND_MESSAGE.SET_NAME('AR', 'GENERIC_MESSAGE');
15645                FND_MESSAGE.SET_TOKEN('GENERIC_TEXT', l_mesg);
15646 
15647                RAISE ram_api_error;
15648 
15649            END IF; --rev adj gl dist table exists and success from api
15650 
15651        END IF;
15652 
15653     END IF;
15654 
15655   END IF;
15656   IF PG_DEBUG = 'Y' THEN
15657   localdebug('arp_det_dist_pkg.exec_adj_api_if_required()-');
15658   END IF;
15659 EXCEPTION
15660   WHEN ram_api_error THEN
15661      IF PG_DEBUG = 'Y' THEN
15662      localdebug('ram_api_error - exec_adj_api_if_required :'||l_mesg );
15663      END IF;
15664      RAISE;
15665   WHEN OTHERS THEN
15666      IF PG_DEBUG = 'Y' THEN
15667      localdebug('EXCEPTION: exec_adj_api_if_required :'||SQLERRM);
15668      END IF;
15669      RAISE;
15670 END;
15671 
15672 
15673 PROCEDURE exec_revrec_if_required
15674 ( p_customer_trx_id  IN  ra_customer_trx.customer_trx_id%TYPE,
15675   p_app_rec          IN  ar_receivable_applications%ROWTYPE,
15676   p_adj_rec          IN  ar_adjustments%ROWTYPE)
15677 IS
15678   CURSOR c1 IS
15679    SELECT ctl.customer_trx_id
15680      FROM ra_customer_trx_lines ctl
15681     WHERE ctl.customer_trx_id = p_customer_trx_id
15682       AND ctl.autorule_complete_flag||'' = 'N'
15683     GROUP BY ctl.customer_trx_id;
15684   l_dummy           NUMBER;
15685   l_rev_rec_req     BOOLEAN;
15686   l_sum_dist        NUMBER;
15687 BEGIN
15688   IF PG_DEBUG = 'Y' THEN
15689   localdebug('arp_det_dist_pkg.exec_revrec_if_required()+');
15690   localdebug('  p_customer_trx_id                   :' || p_customer_trx_id);
15691   localdebug('  p_app_rec.receivable_application_id :' || p_app_rec.receivable_application_id);
15692   localdebug('  p_adj_rec.adjustment_id             :' || p_adj_rec.adjustment_id);
15693 
15694   localdebug('   Check whether Rev Recognition is to be Run');
15695   END IF;
15696   OPEN c1;
15697   FETCH c1 INTO l_dummy;
15698   IF c1%NOTFOUND THEN
15699     IF PG_DEBUG = 'Y' THEN
15700     localdebug('    No need to run rev rec for trx_id :' || p_customer_trx_id);
15701     END IF;
15702     l_rev_rec_req := FALSE;
15703   ELSE
15704     IF PG_DEBUG = 'Y' THEN
15705     localdebug('    Need to run rev rec for trx_id    :' || p_customer_trx_id);
15706     END IF;
15707     l_rev_rec_req := TRUE;
15708   END IF;
15709   CLOSE c1;
15710 
15711   IF l_rev_rec_req THEN
15712      IF PG_DEBUG = 'Y' THEN
15713      localdebug('  Executing Rev Rec - calling ARP_AUTO_RULE.create_distributions');
15714      END IF;
15715      l_sum_dist := ARP_AUTO_RULE.create_distributions
15716                    ( p_commit => 'N',
15717                      p_debug  => 'N',
15718                      p_trx_id => p_customer_trx_id);
15719      IF PG_DEBUG = 'Y' THEN
15720      localdebug('   Completed running revenue recognition for Transaction');
15721      END IF;
15722   END IF;
15723   IF PG_DEBUG = 'Y' THEN
15724   localdebug( 'arp_det_dist_pkg.exec_revrec_if_required()-');
15725   END IF;
15726 EXCEPTION
15727   WHEN OTHERS THEN
15728      IF PG_DEBUG = 'Y' THEN
15729      localdebug(  'EXCEPTION OTHERS exec_revrec_if_required :'||SQLERRM);
15730      END IF;
15731      RAISE;
15732 END;
15733 
15734 
15735 PROCEDURE exec_revrec_if_required
15736 (p_init_msg_list    IN         VARCHAR2  DEFAULT FND_API.G_TRUE
15737 ,p_mode             IN         VARCHAR2  DEFAULT 'TRANSACTION'
15738 ,p_customer_trx_id  IN         NUMBER    DEFAULT NULL
15739 ,p_request_id       IN         NUMBER    DEFAULT NULL
15740 ,x_sum_dist         OUT NOCOPY NUMBER
15741 ,x_return_status    OUT NOCOPY VARCHAR2
15742 ,x_msg_count        OUT NOCOPY NUMBER
15743 ,x_msg_data         OUT NOCOPY VARCHAR2)
15744 IS
15745   CURSOR c1(p_customer_trx_id IN NUMBER) IS
15746    SELECT ctl.customer_trx_id
15747      FROM ra_customer_trx_lines ctl
15748     WHERE ctl.customer_trx_id = p_customer_trx_id
15749       AND ctl.autorule_complete_flag||'' = 'N'
15750     GROUP BY ctl.customer_trx_id;
15751 
15752   CURSOR c_trx_number(p_customer_trx_id IN NUMBER) IS
15753    SELECT ct.trx_number
15754      FROM ra_customer_trx ct
15755     WHERE ct.customer_trx_id = p_customer_trx_id;
15756 
15757   l_message         VARCHAR2(2000);
15758   l_trx_number      VARCHAR2(20);
15759   l_dummy           NUMBER;
15760   l_rev_rec_req     BOOLEAN;
15761   wrong_parameter   EXCEPTION;
15762 BEGIN
15763   IF PG_DEBUG = 'Y' THEN
15764   localdebug('arp_det_dist_pkg.exec_revrec_if_required()+');
15765   localdebug('  p_mode              :' || p_mode);
15766   localdebug('  p_customer_trx_id   :' || p_customer_trx_id);
15767   localdebug('  p_request_id        :' || p_request_id);
15768   END IF;
15769 
15770   x_return_status := FND_API.G_RET_STS_SUCCESS;
15771 
15772   IF FND_API.to_Boolean(p_init_msg_list) THEN
15773      FND_MSG_PUB.initialize;
15774   END IF;
15775 
15776   IF p_mode <> 'TRANSACTION' THEN
15777      x_msg_data  := 'Only transaction mode is supported currently.
15778 ';
15779      x_msg_count :=  1;
15780      x_return_status := FND_API.G_RET_STS_ERROR;
15781   END IF;
15782 
15783   IF p_mode = 'TRANSACTION' AND p_customer_trx_id IS NULL THEN
15784      x_msg_data  := x_msg_data||'The p_customer_trx_id is required, currently it is passed as null.
15785 ';
15786      x_msg_count := 1;
15787      x_return_status := FND_API.G_RET_STS_ERROR;
15788   END IF;
15789 
15790   IF x_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
15791     RAISE wrong_parameter;
15792   END IF;
15793 
15794 
15795   IF PG_DEBUG = 'Y' THEN
15796   localdebug('   Check whether Rev Recognition is to be Run');
15797   END IF;
15798   OPEN c1(p_customer_trx_id);
15799   FETCH c1 INTO l_dummy;
15800   IF c1%NOTFOUND THEN
15801     IF PG_DEBUG = 'Y' THEN
15802     localdebug('    No need to run rev rec for trx_id :' || p_customer_trx_id);
15803     END IF;
15804     l_rev_rec_req := FALSE;
15805   ELSE
15806     IF PG_DEBUG = 'Y' THEN
15807     localdebug('    Need to run rev rec for trx_id    :' || p_customer_trx_id);
15808     END IF;
15809     l_rev_rec_req := TRUE;
15810   END IF;
15811   CLOSE c1;
15812 
15813 
15814   IF l_rev_rec_req THEN
15815      IF PG_DEBUG = 'Y' THEN
15816      localdebug('  Executing Rev Rec - calling ARP_AUTO_RULE.create_distributions');
15817      END IF;
15818      x_sum_dist := ARP_AUTO_RULE.create_distributions
15819                    ( p_commit => 'N',
15820                      p_debug  => 'N',
15821                      p_trx_id => p_customer_trx_id);
15822      IF x_sum_dist < 0 THEN
15823         OPEN c_trx_number(p_customer_trx_id);
15824         FETCH c_trx_number INTO l_trx_number;
15825         CLOSE c_trx_number;
15826         FND_MESSAGE.SET_NAME( 'AR', 'AR_AUTORULE_ERROR' );
15827         FND_MESSAGE.SET_TOKEN( 'TRX_NUMBER', l_trx_number );
15828         FND_MSG_PUB.ADD;
15829         x_return_status := FND_API.G_RET_STS_ERROR;
15830      END IF;
15831      IF PG_DEBUG = 'Y' THEN
15832      localdebug('   Completed running revenue recognition for Transaction');
15833      END IF;
15834   END IF;
15835 
15836   IF x_return_status <>  FND_API.G_RET_STS_SUCCESS THEN
15837     RAISE fnd_api.G_EXC_ERROR;
15838   END IF;
15839   IF PG_DEBUG = 'Y' THEN
15840   localdebug( 'arp_det_dist_pkg.exec_revrec_if_required()-');
15841   END IF;
15842 EXCEPTION
15843   WHEN fnd_api.G_EXC_ERROR THEN
15844       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
15845                                 p_count => x_msg_count,
15846                                 p_data  => x_msg_data);
15847 
15848   WHEN wrong_parameter THEN localdebug(x_msg_count);
15849 
15850   WHEN OTHERS THEN
15851      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
15852      x_msg_count     := NVL(x_msg_count,0) + 1;
15853      x_msg_data :='EXCEPTION OTHERS exec_revrec_if_required :'||SQLERRM ;
15854      IF PG_DEBUG = 'Y' THEN
15855      localdebug(x_msg_data  );
15856      END IF;
15857 END;
15858 
15859 PROCEDURE update_taxable
15860 (p_gt_id             IN VARCHAR2,
15861  p_customer_trx_id   IN NUMBER,
15862  p_ae_sys_rec        IN arp_acct_main.ae_sys_rec_type)
15863 IS
15864   CURSOR c_read_for_taxable IS
15865    select
15866      GROUPE                  ,
15867   -- ADJ and APP
15868      -- Base
15869      base_pro_amt       ,
15870      base_pro_acctd_amt ,
15871      BASE_FRT_PRO_AMT       ,
15872      BASE_FRT_PRO_ACCTD_AMT ,
15873      sum(ELMT_TAX_PRO_AMT) over (partition by groupe) BASE_TAX_PRO_AMT ,
15874      sum(ELMT_TAX_PRO_ACCTD_AMT) over (partition by groupe) BASE_TAX_PRO_ACCTD_AMT ,
15875      BASE_CHRG_PRO_AMT       ,
15876      BASE_CHRG_PRO_ACCTD_AMT ,
15877      -- Element numerator
15878      elmt_pro_amt       ,
15879      elmt_pro_acctd_amt ,
15880      ELMT_FRT_PRO_AMT       ,
15881      ELMT_FRT_PRO_ACCTD_AMT ,
15882      ELMT_TAX_PRO_AMT,
15883      ELMT_TAX_PRO_ACCTD_AMT ,
15884      ELMT_CHRG_PRO_AMT       ,
15885      ELMT_CHRG_PRO_ACCTD_AMT ,
15886      -- Amount to be allocated
15887      buc_alloc_amt      ,
15888      buc_alloc_acctd_amt,
15889      buc_frt_alloc_amt      ,
15890      buc_frt_alloc_acctd_amt,
15891      buc_tax_alloc_amt      ,
15892      buc_tax_alloc_acctd_amt,
15893      buc_chrg_alloc_amt      ,
15894      buc_chrg_alloc_acctd_amt,
15895   -- ED
15896      -- Base
15897      base_ed_pro_amt       ,
15898      base_ed_pro_acctd_amt ,
15899      BASE_ed_FRT_PRO_AMT       ,
15900      BASE_ed_FRT_PRO_ACCTD_AMT ,
15901      sum(ELMT_ed_TAX_PRO_AMT) over (partition by groupe) BASE_ed_TAX_PRO_AMT ,
15902      sum(ELMT_ed_TAX_PRO_ACCTD_AMT) over (partition by groupe) BASE_ed_TAX_PRO_ACCTD_AMT ,
15903      BASE_ed_CHRG_PRO_AMT       ,
15904      BASE_ed_CHRG_PRO_ACCTD_AMT ,
15905      -- Element numerator
15906      elmt_ed_pro_amt       ,
15907      elmt_ed_pro_acctd_amt ,
15908      ELMT_ed_FRT_PRO_AMT       ,
15909      ELMT_ed_FRT_PRO_ACCTD_AMT ,
15910      ELMT_ed_TAX_PRO_AMT       ,
15911      ELMT_ed_TAX_PRO_ACCTD_AMT ,
15912      ELMT_ed_CHRG_PRO_AMT       ,
15913      ELMT_ed_CHRG_PRO_ACCTD_AMT ,
15914      -- Amount to be allocated
15915      buc_ed_alloc_amt      ,
15916      buc_ed_alloc_acctd_amt,
15917      buc_ed_frt_alloc_amt      ,
15918      buc_ed_frt_alloc_acctd_amt,
15919      buc_ed_tax_alloc_amt      ,
15920      buc_ed_tax_alloc_acctd_amt,
15921      buc_ed_chrg_alloc_amt      ,
15922      buc_ed_chrg_alloc_acctd_amt,
15923   -- UNED
15924      -- Base
15925      base_uned_pro_amt       ,
15926      base_uned_pro_acctd_amt ,
15927      BASE_uned_FRT_PRO_AMT       ,
15928      BASE_uned_FRT_PRO_ACCTD_AMT ,
15929      sum(ELMT_uned_TAX_PRO_AMT) over (partition by groupe) BASE_uned_TAX_PRO_AMT ,
15930      sum(ELMT_uned_TAX_PRO_ACCTD_AMT) over (partition by groupe) BASE_uned_TAX_PRO_ACCTD_AMT ,
15931      BASE_uned_CHRG_PRO_AMT       ,
15932      BASE_uned_CHRG_PRO_ACCTD_AMT ,
15933      -- Element numerator
15934      elmt_uned_pro_amt       ,
15935      elmt_uned_pro_acctd_amt ,
15936      ELMT_uned_FRT_PRO_AMT       ,
15937      ELMT_uned_FRT_PRO_ACCTD_AMT ,
15938      ELMT_uned_TAX_PRO_AMT       ,
15939      ELMT_uned_TAX_PRO_ACCTD_AMT ,
15940      ELMT_uned_CHRG_PRO_AMT       ,
15941      ELMT_uned_CHRG_PRO_ACCTD_AMT ,
15942      -- Amount to be allocated
15943      buc_uned_alloc_amt      ,
15944      buc_uned_alloc_acctd_amt,
15945      buc_uned_frt_alloc_amt      ,
15946      buc_uned_frt_alloc_acctd_amt,
15947      buc_uned_tax_alloc_amt      ,
15948      buc_uned_tax_alloc_acctd_amt,
15949      buc_uned_chrg_alloc_amt      ,
15950      buc_uned_chrg_alloc_acctd_amt,
15951      --
15952      BASE_CURRENCY  ,
15953      TO_CURRENCY    ,
15954      FROM_CURRENCY  ,
15955      --
15956      rowid
15957     from (SELECT /*+INDEX (AR_LINE_APP_DETAIL_GT AR_LINE_APP_DETAIL_GT_N1)*/
15958 	       tax_link_id     groupe,
15959         -- ADJ and APP
15960            --Base
15961            0 base_pro_amt, --Base for Revenue distributions
15962            0 base_pro_acctd_amt,
15963            0 BASE_FRT_PRO_AMT, --Base for freight distributions
15964            0 BASE_FRT_PRO_ACCTD_AMT,
15965            0 BASE_CHRG_PRO_AMT,                       --Base for charge distributions
15966            0 BASE_CHRG_PRO_ACCTD_AMT,
15967            --Element
15968            0 elmt_pro_amt, --Element for Revenue distributions
15969            0 elmt_pro_acctd_amt,
15970            0 ELMT_FRT_PRO_AMT, --Element for freight distributions
15971            0 ELMT_FRT_PRO_ACCTD_AMT,
15972            DECODE(activity_bucket||ref_account_class, 'ADJ_TAXTAX',
15973                      DECODE(SUM(DECODE(activity_bucket,'APP_TAX', amount, 'ADJ_TAX', amount, 0))
15974                             OVER (PARTITION BY tax_link_id ), 0, 1,
15975                             DECODE(activity_bucket,'APP_TAX', amount, 'ADJ_TAX', amount, 0)),
15976                    DECODE(activity_bucket,'APP_TAX', amount, 'ADJ_TAX', amount, 0)
15977                  ) ELMT_TAX_PRO_AMT,    --Element for tax distributions
15978            DECODE(activity_bucket||ref_account_class, 'ADJ_TAXTAX',
15979                      DECODE(SUM(DECODE(activity_bucket,'APP_TAX', acctd_amount, 'ADJ_TAX', acctd_amount, 0))
15980                             OVER (PARTITION BY tax_link_id ), 0, 1,
15981                             DECODE(activity_bucket,'APP_TAX', acctd_amount, 'ADJ_TAX', acctd_amount, 0)),
15982                    DECODE(activity_bucket,'APP_TAX', acctd_amount, 'ADJ_TAX', acctd_amount, 0)
15983                  ) ELMT_TAX_PRO_ACCTD_AMT,
15984            0 ELMT_CHRG_PRO_AMT, --Element for charge distributions
15985            0 ELMT_CHRG_PRO_ACCTD_AMT,
15986            --Amount to be allocated
15987            0 buc_alloc_amt,                        --Allocation for Revenue distributions
15988            0 buc_alloc_acctd_amt,
15989            0 buc_frt_alloc_amt,                        --Allocation for freight distributions
15990            0 buc_frt_alloc_acctd_amt,
15991            SUM(DECODE(activity_bucket,'APP_LINE',amount,
15992                              'ADJ_LINE',amount,
15993                              'APP_CHRG',amount,
15994                              'ADJ_CHRG',amount,
15995                              'APP_FRT' ,amount,
15996                              'ADJ_FRT' ,amount, 0))
15997                 OVER (PARTITION BY tax_link_id ) buc_tax_alloc_amt,   -- Allocation for app and adj
15998                                                         -- taxable from the revenue distribution
15999            SUM(DECODE(activity_bucket,'APP_LINE',acctd_amount,
16000                              'ADJ_LINE',acctd_amount,
16001                              'APP_CHRG',acctd_amount,
16002                              'ADJ_CHRG',acctd_amount,
16003                              'APP_FRT' ,acctd_amount,
16004                              'ADJ_FRT' ,acctd_amount, 0))
16005                 OVER (PARTITION BY tax_link_id ) buc_tax_alloc_acctd_amt,
16006            0 buc_chrg_alloc_amt,                        --Allocation for charge distributions
16007            0 buc_chrg_alloc_acctd_amt,
16008         -- ED
16009            --Base
16010            0 base_ed_pro_amt, --Base ED on Rev
16011            0 base_ed_pro_acctd_amt,
16012            0 BASE_ed_FRT_PRO_AMT, --Base ED on Freight HYUFR
16013            0 BASE_ed_FRT_PRO_ACCTD_AMT,
16014            0 BASE_ed_CHRG_PRO_AMT, --Base ED on Charge
16015            0 BASE_ed_CHRG_PRO_ACCTD_AMT,
16016            --Element
16017            0 elmt_ed_pro_amt, --Element ED on Rev
16018            0 elmt_ed_pro_acctd_amt,
16019            0 ELMT_ed_FRT_PRO_AMT, --Element ED on Freight
16020            0 ELMT_ed_FRT_PRO_ACCTD_AMT,
16021            DECODE(activity_bucket||ref_account_class, 'ED_TAXTAX',
16022                      DECODE(SUM(DECODE(activity_bucket,'ED_TAX', amount, 0))
16023                             OVER (PARTITION BY tax_link_id ), 0, 1,
16024                             DECODE(activity_bucket,'ED_TAX', amount, 0)),
16025                    DECODE(activity_bucket,'ED_TAX', amount, 0)
16026                  ) ELMT_ed_TAX_PRO_AMT,    --Element ED on Tax HYUFRTAX
16027            DECODE(activity_bucket||ref_account_class, 'ED_TAXTAX',
16028                      DECODE(SUM(DECODE(activity_bucket,'ED_TAX', acctd_amount, 0))
16029                             OVER (PARTITION BY tax_link_id ), 0, 1,
16030                             DECODE(activity_bucket,'ED_TAX', acctd_amount, 0)),
16031                    DECODE(activity_bucket,'ED_TAX', acctd_amount, 0)
16032                  ) ELMT_ed_TAX_PRO_ACCTD_AMT,
16033            0 ELMT_ed_CHRG_PRO_AMT, --Element ED on Charge
16034            0 ELMT_ed_CHRG_PRO_ACCTD_AMT,
16035            --Amount to be allocated
16036            0 buc_ed_alloc_amt, --Allocation ED on Rev
16037            0 buc_ed_alloc_acctd_amt,
16038            0 buc_ed_frt_alloc_amt, --Allocation ED on Freight
16039            0 buc_ed_frt_alloc_acctd_amt,
16040            SUM(DECODE(activity_bucket,'ED_LINE', amount,
16041                              'ED_CHRG', amount,
16042                              'ED_FRT' , amount,0))
16043                 OVER (PARTITION BY tax_link_id ) buc_ed_tax_alloc_amt,  --Allocation ED on Tax by the rev ed
16044            SUM(DECODE(activity_bucket,'ED_LINE', acctd_amount,
16045                              'ED_CHRG', acctd_amount,
16046                              'ED_FRT' , acctd_amount,0))
16047                 OVER (PARTITION BY tax_link_id ) buc_ed_tax_alloc_acctd_amt,
16048            0 buc_ed_chrg_alloc_amt,
16049            0 buc_ed_chrg_alloc_acctd_amt,
16050         -- UNED
16051            --Base
16052            0 base_uned_pro_amt,
16053            0 base_uned_pro_acctd_amt,
16054            0 BASE_uned_FRT_PRO_AMT,
16055            0 BASE_uned_FRT_PRO_ACCTD_AMT,
16056            0 BASE_uned_CHRG_PRO_AMT,
16057            0 BASE_uned_CHRG_PRO_ACCTD_AMT,
16058            --Element
16059            0 elmt_uned_pro_amt,
16060            0 elmt_uned_pro_acctd_amt,
16061            0 ELMT_uned_FRT_PRO_AMT,
16062            0 ELMT_uned_FRT_PRO_ACCTD_AMT,
16063            DECODE(activity_bucket||ref_account_class, 'UNED_TAXTAX',
16064                      DECODE(SUM(DECODE(activity_bucket,'UNED_TAX', amount, 0))
16065                             OVER (PARTITION BY tax_link_id ), 0, 1,
16066                             DECODE(activity_bucket,'UNED_TAX', amount, 0)),
16067                    DECODE(activity_bucket,'UNED_TAX', amount, 0)
16068                  ) ELMT_uned_TAX_PRO_AMT,    --Element ED on Tax HYUFRTAX
16069            DECODE(activity_bucket||ref_account_class, 'UNED_TAXTAX',
16070                      DECODE(SUM(DECODE(activity_bucket,'UNED_TAX', acctd_amount, 0))
16071                             OVER (PARTITION BY tax_link_id ), 0, 1,
16072                             DECODE(activity_bucket,'UNED_TAX', acctd_amount, 0)),
16073                    DECODE(activity_bucket,'UNED_TAX', acctd_amount, 0)
16074                  ) ELMT_uned_TAX_PRO_ACCTD_AMT,
16075            0 ELMT_uned_CHRG_PRO_AMT,
16076            0 ELMT_uned_CHRG_PRO_ACCTD_AMT,
16077            --Amount to be allocated
16078            0 buc_uned_alloc_amt,
16079            0 buc_uned_alloc_acctd_amt,
16080            0 buc_uned_frt_alloc_amt,
16081            0 buc_uned_frt_alloc_acctd_amt,
16082            SUM(DECODE(activity_bucket,'UNED_LINE', amount,
16083                              'UNED_CHRG', amount,
16084                              'UNED_FRT' , amount,0))
16085                 OVER (PARTITION BY tax_link_id ) buc_uned_tax_alloc_amt,  --Allocation ED on Tax by the rev ed
16086            SUM(DECODE(activity_bucket,'UNED_LINE', acctd_amount,
16087                              'UNED_CHRG', acctd_amount,
16088                              'UNED_FRT' , acctd_amount,0))
16089                 OVER (PARTITION BY tax_link_id ) buc_uned_tax_alloc_acctd_amt,
16090            0 buc_uned_chrg_alloc_amt,
16091            0 buc_uned_chrg_alloc_acctd_amt,
16092            --Currencies
16093          p_ae_sys_rec.base_currency           BASE_CURRENCY  ,
16094          g_cust_inv_rec.invoice_currency_code TO_CURRENCY    ,
16095          ''          FROM_CURRENCY  ,   --Not usefull in this case as taxable is not calculated with from currency
16096            -- Rowid
16097            rowid
16098      FROM  AR_LINE_APP_DETAIL_GT
16099     WHERE gt_id  = p_gt_id
16100       AND ref_customer_trx_id = p_customer_trx_id
16101       AND tax_link_id         IS NOT NULL
16102       AND DECODE(ref_account_class,'REV'    ,tax_inc_flag,
16103                            'FREIGHT',tax_inc_flag,
16104                            'TAX','Y','N')  = 'Y');
16105 --      AND se_gt_id  = g_se_gt_id
16106 --     ORDER BY line_type||'-'||ref_customer_trx_id||'-'||ref_customer_trx_line_id;
16107 
16108   l_tab  pro_res_tbl_type;
16109 
16110   l_group_tbl            group_tbl_type;
16111   l_group                VARCHAR2(60)    := 'NOGROUP';
16112 
16113 -- ADJ and APP
16114   l_run_amt              NUMBER          := 0;
16115   l_run_alloc            NUMBER          := 0;
16116   l_run_acctd_amt        NUMBER          := 0;
16117   l_run_acctd_alloc      NUMBER          := 0;
16118   l_alloc                NUMBER          := 0;
16119   l_acctd_alloc          NUMBER          := 0;
16120 
16121   l_run_chrg_amt         NUMBER          := 0;
16122   l_run_chrg_alloc       NUMBER          := 0;
16123   l_run_chrg_acctd_amt   NUMBER          := 0;
16124   l_run_chrg_acctd_alloc NUMBER          := 0;
16125   l_chrg_alloc           NUMBER          := 0;
16126   l_chrg_acctd_alloc     NUMBER          := 0;
16127 
16128   l_run_frt_amt         NUMBER          := 0;
16129   l_run_frt_alloc       NUMBER          := 0;
16130   l_run_frt_acctd_amt   NUMBER          := 0;
16131   l_run_frt_acctd_alloc NUMBER          := 0;
16132   l_frt_alloc           NUMBER          := 0;
16133   l_frt_acctd_alloc     NUMBER          := 0;
16134 
16135   l_run_tax_amt         NUMBER          := 0;
16136   l_run_tax_alloc       NUMBER          := 0;
16137   l_run_tax_acctd_amt   NUMBER          := 0;
16138   l_run_tax_acctd_alloc NUMBER          := 0;
16139   l_tax_alloc           NUMBER          := 0;
16140   l_tax_acctd_alloc     NUMBER          := 0;
16141 
16142 -- ED
16143   l_run_ed_amt              NUMBER          := 0;
16144   l_run_ed_alloc            NUMBER          := 0;
16145   l_run_ed_acctd_amt        NUMBER          := 0;
16146   l_run_ed_acctd_alloc      NUMBER          := 0;
16147   l_ed_alloc                NUMBER          := 0;
16148   l_ed_acctd_alloc          NUMBER          := 0;
16149 
16150   l_run_ed_chrg_amt         NUMBER          := 0;
16151   l_run_ed_chrg_alloc       NUMBER          := 0;
16152   l_run_ed_chrg_acctd_amt   NUMBER          := 0;
16153   l_run_ed_chrg_acctd_alloc NUMBER          := 0;
16154   l_ed_chrg_alloc           NUMBER          := 0;
16155   l_ed_chrg_acctd_alloc     NUMBER          := 0;
16156 
16157   l_run_ed_frt_amt         NUMBER          := 0;
16158   l_run_ed_frt_alloc       NUMBER          := 0;
16159   l_run_ed_frt_acctd_amt   NUMBER          := 0;
16160   l_run_ed_frt_acctd_alloc NUMBER          := 0;
16161   l_ed_frt_alloc           NUMBER          := 0;
16162   l_ed_frt_acctd_alloc     NUMBER          := 0;
16163 
16164   l_run_ed_tax_amt         NUMBER          := 0;
16165   l_run_ed_tax_alloc       NUMBER          := 0;
16166   l_run_ed_tax_acctd_amt   NUMBER          := 0;
16167   l_run_ed_tax_acctd_alloc NUMBER          := 0;
16168   l_ed_tax_alloc           NUMBER          := 0;
16169   l_ed_tax_acctd_alloc     NUMBER          := 0;
16170 
16171 -- UNED
16172   l_run_uned_amt              NUMBER          := 0;
16173   l_run_uned_alloc            NUMBER          := 0;
16174   l_run_uned_acctd_amt        NUMBER          := 0;
16175   l_run_uned_acctd_alloc      NUMBER          := 0;
16176   l_uned_alloc                NUMBER          := 0;
16177   l_uned_acctd_alloc          NUMBER          := 0;
16178 
16179   l_run_uned_chrg_amt         NUMBER          := 0;
16180   l_run_uned_chrg_alloc       NUMBER          := 0;
16181   l_run_uned_chrg_acctd_amt   NUMBER          := 0;
16182   l_run_uned_chrg_acctd_alloc NUMBER          := 0;
16183   l_uned_chrg_alloc           NUMBER          := 0;
16184   l_uned_chrg_acctd_alloc     NUMBER          := 0;
16185 
16186   l_run_uned_frt_amt         NUMBER          := 0;
16187   l_run_uned_frt_alloc       NUMBER          := 0;
16188   l_run_uned_frt_acctd_amt   NUMBER          := 0;
16189   l_run_uned_frt_acctd_alloc NUMBER          := 0;
16190   l_uned_frt_alloc           NUMBER          := 0;
16191   l_uned_frt_acctd_alloc     NUMBER          := 0;
16192 
16193   l_run_uned_tax_amt         NUMBER          := 0;
16194   l_run_uned_tax_alloc       NUMBER          := 0;
16195   l_run_uned_tax_acctd_amt   NUMBER          := 0;
16196   l_run_uned_tax_acctd_alloc NUMBER          := 0;
16197   l_uned_tax_alloc           NUMBER          := 0;
16198   l_uned_tax_acctd_alloc     NUMBER          := 0;
16199 
16200   l_exist                BOOLEAN;
16201   l_last_fetch           BOOLEAN;
16202 
16203 BEGIN
16204   IF PG_DEBUG = 'Y' THEN
16205   localdebug('arp_det_dist_pkg.update_tax()+');
16206   localdebug('   p_ae_sys_rec.set_of_books_id');
16207   localdebug('   p_ae_sys_rec.sob_type');
16208   END IF;
16209   OPEN  c_read_for_taxable;
16210   LOOP
16211     FETCH c_read_for_taxable BULK COLLECT INTO
16212      l_tab.GROUPE                  ,
16213   -- ADJ and APP
16214      -- Base
16215      l_tab.base_pro_amt       ,
16216      l_tab.base_pro_acctd_amt ,
16217      l_tab.BASE_FRT_PRO_AMT       ,
16218      l_tab.BASE_FRT_PRO_ACCTD_AMT ,
16219      l_tab.BASE_TAX_PRO_AMT       ,
16220      l_tab.BASE_TAX_PRO_ACCTD_AMT ,
16221      l_tab.BASE_CHRG_PRO_AMT       ,
16222      l_tab.BASE_CHRG_PRO_ACCTD_AMT ,
16223      -- Element numerator
16224      l_tab.elmt_pro_amt       ,
16225      l_tab.elmt_pro_acctd_amt ,
16226      l_tab.ELMT_FRT_PRO_AMT       ,
16227      l_tab.ELMT_FRT_PRO_ACCTD_AMT ,
16228      l_tab.ELMT_TAX_PRO_AMT       ,
16229      l_tab.ELMT_TAX_PRO_ACCTD_AMT ,
16230      l_tab.ELMT_CHRG_PRO_AMT       ,
16231      l_tab.ELMT_CHRG_PRO_ACCTD_AMT ,
16232      -- Amount to be allocated
16233      l_tab.buc_alloc_amt      ,
16234      l_tab.buc_alloc_acctd_amt,
16235      l_tab.buc_frt_alloc_amt      ,
16236      l_tab.buc_frt_alloc_acctd_amt,
16237      l_tab.buc_tax_alloc_amt      ,
16238      l_tab.buc_tax_alloc_acctd_amt,
16239      l_tab.buc_chrg_alloc_amt      ,
16240      l_tab.buc_chrg_alloc_acctd_amt,
16241   -- ED
16242      -- Base
16243      l_tab.base_ed_pro_amt       ,
16244      l_tab.base_ed_pro_acctd_amt ,
16245      l_tab.BASE_ed_FRT_PRO_AMT       ,
16246      l_tab.BASE_ed_FRT_PRO_ACCTD_AMT ,
16247      l_tab.BASE_ed_TAX_PRO_AMT       ,
16248      l_tab.BASE_ed_TAX_PRO_ACCTD_AMT ,
16249      l_tab.BASE_ed_CHRG_PRO_AMT       ,
16250      l_tab.BASE_ed_CHRG_PRO_ACCTD_AMT ,
16251      -- Element numerator
16252      l_tab.elmt_ed_pro_amt       ,
16253      l_tab.elmt_ed_pro_acctd_amt ,
16254      l_tab.ELMT_ed_FRT_PRO_AMT       ,
16255      l_tab.ELMT_ed_FRT_PRO_ACCTD_AMT ,
16256      l_tab.ELMT_ed_TAX_PRO_AMT       ,
16257      l_tab.ELMT_ed_TAX_PRO_ACCTD_AMT ,
16258      l_tab.ELMT_ed_CHRG_PRO_AMT       ,
16259      l_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT ,
16260      -- Amount to be allocated
16261      l_tab.buc_ed_alloc_amt      ,
16262      l_tab.buc_ed_alloc_acctd_amt,
16263      l_tab.buc_ed_frt_alloc_amt      ,
16264      l_tab.buc_ed_frt_alloc_acctd_amt,
16265      l_tab.buc_ed_tax_alloc_amt      ,
16266      l_tab.buc_ed_tax_alloc_acctd_amt,
16267      l_tab.buc_ed_chrg_alloc_amt      ,
16268      l_tab.buc_ed_chrg_alloc_acctd_amt,
16269   -- UNED
16270      -- Base
16271      l_tab.base_uned_pro_amt       ,
16272      l_tab.base_uned_pro_acctd_amt ,
16273      l_tab.BASE_uned_FRT_PRO_AMT       ,
16274      l_tab.BASE_uned_FRT_PRO_ACCTD_AMT ,
16275      l_tab.BASE_uned_TAX_PRO_AMT       ,
16276      l_tab.BASE_uned_TAX_PRO_ACCTD_AMT ,
16277      l_tab.BASE_uned_CHRG_PRO_AMT       ,
16278      l_tab.BASE_uned_CHRG_PRO_ACCTD_AMT ,
16279      -- Element numerator
16280      l_tab.elmt_uned_pro_amt       ,
16281      l_tab.elmt_uned_pro_acctd_amt ,
16282      l_tab.ELMT_uned_FRT_PRO_AMT       ,
16283      l_tab.ELMT_uned_FRT_PRO_ACCTD_AMT ,
16284      l_tab.ELMT_uned_TAX_PRO_AMT       ,
16285      l_tab.ELMT_uned_TAX_PRO_ACCTD_AMT ,
16286      l_tab.ELMT_uned_CHRG_PRO_AMT       ,
16287      l_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT ,
16288      -- Amount to be allocated
16289      l_tab.buc_uned_alloc_amt      ,
16290      l_tab.buc_uned_alloc_acctd_amt,
16291      l_tab.buc_uned_frt_alloc_amt      ,
16292      l_tab.buc_uned_frt_alloc_acctd_amt,
16293      l_tab.buc_uned_tax_alloc_amt      ,
16294      l_tab.buc_uned_tax_alloc_acctd_amt,
16295      l_tab.buc_uned_chrg_alloc_amt      ,
16296      l_tab.buc_uned_chrg_alloc_acctd_amt,
16297      --
16298      l_tab.BASE_CURRENCY  ,
16299      l_tab.TO_CURRENCY    ,
16300      l_tab.FROM_CURRENCY  ,
16301      --
16302      l_tab.ROWID_ID     LIMIT g_bulk_fetch_rows;
16303 
16304      IF c_read_for_taxable%NOTFOUND THEN
16305           l_last_fetch := TRUE;
16306      END IF;
16307 
16308      IF (l_tab.ROWID_ID.COUNT = 0) AND (l_last_fetch) THEN
16309        IF PG_DEBUG = 'Y' THEN
16310        localdebug('COUNT = 0 and LAST FETCH ');
16311        END IF;
16312        EXIT;
16313      END IF;
16314 
16315      plsql_proration( x_tab               => l_tab,
16316                    x_group_tbl            => l_group_tbl,
16317                  -- ADJ and APP
16318                    x_run_amt              => l_run_amt,
16319                    x_run_alloc            => l_run_alloc,
16320                    x_run_acctd_amt        => l_run_acctd_amt,
16321                    x_run_acctd_alloc      => l_run_acctd_alloc,
16322                    x_run_chrg_amt         => l_run_chrg_amt,
16323                    x_run_chrg_alloc       => l_run_chrg_alloc,
16324                    x_run_chrg_acctd_amt   => l_run_chrg_acctd_amt,
16325                    x_run_chrg_acctd_alloc => l_run_chrg_acctd_alloc,
16326                    x_run_frt_amt         => l_run_frt_amt,
16327                    x_run_frt_alloc       => l_run_frt_alloc,
16328                    x_run_frt_acctd_amt   => l_run_frt_acctd_amt,
16329                    x_run_frt_acctd_alloc => l_run_frt_acctd_alloc,
16330                    x_run_tax_amt         => l_run_tax_amt,
16331                    x_run_tax_alloc       => l_run_tax_alloc,
16332                    x_run_tax_acctd_amt   => l_run_tax_acctd_amt,
16333                    x_run_tax_acctd_alloc => l_run_tax_acctd_alloc,
16334                  -- ED
16335                    x_run_ed_amt              => l_run_ed_amt,
16336                    x_run_ed_alloc            => l_run_ed_alloc,
16337                    x_run_ed_acctd_amt        => l_run_ed_acctd_amt,
16338                    x_run_ed_acctd_alloc      => l_run_ed_acctd_alloc,
16339                    x_run_ed_chrg_amt         => l_run_ed_chrg_amt,
16340                    x_run_ed_chrg_alloc       => l_run_ed_chrg_alloc,
16341                    x_run_ed_chrg_acctd_amt   => l_run_ed_chrg_acctd_amt,
16342                    x_run_ed_chrg_acctd_alloc => l_run_ed_chrg_acctd_alloc,
16343                    x_run_ed_frt_amt         => l_run_ed_frt_amt,
16344                    x_run_ed_frt_alloc       => l_run_ed_frt_alloc,
16345                    x_run_ed_frt_acctd_amt   => l_run_ed_frt_acctd_amt,
16346                    x_run_ed_frt_acctd_alloc => l_run_ed_frt_acctd_alloc,
16347                    x_run_ed_tax_amt         => l_run_ed_tax_amt,
16348                    x_run_ed_tax_alloc       => l_run_ed_tax_alloc,
16349                    x_run_ed_tax_acctd_amt   => l_run_ed_tax_acctd_amt,
16350                    x_run_ed_tax_acctd_alloc => l_run_ed_tax_acctd_alloc,
16351                  -- UNED
16352                    x_run_uned_amt              => l_run_uned_amt,
16353                    x_run_uned_alloc            => l_run_uned_alloc,
16354                    x_run_uned_acctd_amt        => l_run_uned_acctd_amt,
16355                    x_run_uned_acctd_alloc      => l_run_uned_acctd_alloc,
16356                    x_run_uned_chrg_amt         => l_run_uned_chrg_amt,
16357                    x_run_uned_chrg_alloc       => l_run_uned_chrg_alloc,
16358                    x_run_uned_chrg_acctd_amt   => l_run_uned_chrg_acctd_amt,
16359                    x_run_uned_chrg_acctd_alloc => l_run_uned_chrg_acctd_alloc,
16360                    x_run_uned_frt_amt         => l_run_uned_frt_amt,
16361                    x_run_uned_frt_alloc       => l_run_uned_frt_alloc,
16362                    x_run_uned_frt_acctd_amt   => l_run_uned_frt_acctd_amt,
16363                    x_run_uned_frt_acctd_alloc => l_run_uned_frt_acctd_alloc,
16364                    x_run_uned_tax_amt         => l_run_uned_tax_amt,
16365                    x_run_uned_tax_alloc       => l_run_uned_tax_alloc,
16366                    x_run_uned_tax_acctd_amt   => l_run_uned_tax_acctd_amt,
16367                    x_run_uned_tax_acctd_alloc => l_run_uned_tax_acctd_alloc);
16368 
16369     FORALL i IN l_tab.ROWID_ID.FIRST .. l_tab.ROWID_ID.LAST
16370     UPDATE AR_LINE_APP_DETAIL_GT
16371        SET taxable_amount  =       DECODE(activity_bucket, 'APP_TAX', l_tab.tl_tax_alloc_amt(i),
16372                                                   'ADJ_TAX', l_tab.tl_tax_alloc_amt(i),
16373                                                   'ED_TAX', l_tab.tl_ed_tax_alloc_amt(i),
16374                                                   'UNED_TAX', l_tab.tl_uned_tax_alloc_amt(i)),
16375            taxable_acctd_amount =  DECODE(activity_bucket, 'APP_TAX', l_tab.tl_tax_alloc_acctd_amt(i),
16376                                                   'ADJ_TAX', l_tab.tl_tax_alloc_acctd_amt(i),
16377                                                   'ED_TAX', l_tab.tl_ed_tax_alloc_acctd_amt(i),
16378                                                   'UNED_TAX', l_tab.tl_uned_tax_alloc_acctd_amt(i))
16379      WHERE rowid                     = l_tab.ROWID_ID(i);
16380   END LOOP;
16381   CLOSE c_read_for_taxable;
16382 
16383   IF PG_DEBUG = 'Y' THEN
16384   localdebug('arp_det_dist_pkg.update_taxable()-');
16385   END IF;
16386 EXCEPTION
16387   WHEN OTHERS THEN
16388     IF PG_DEBUG = 'Y' THEN
16389     localdebug('  EXCEPTION OTHERS update_taxable :'||SQLERRM);
16390     END IF;
16391 END update_taxable;
16392 
16393 
16394 PROCEDURE update_for_mrc_dist
16395 (p_gt_id           IN VARCHAR2,
16396  p_customer_trx_id IN NUMBER,
16397  p_app_rec         IN ar_receivable_applications%ROWTYPE,
16398  p_adj_rec         IN ar_adjustments%ROWTYPE,
16399  p_ae_sys_rec      IN arp_acct_main.ae_sys_rec_type)
16400 IS
16401   CURSOR c_mrc(p_acctd_adj_app_to IN NUMBER,
16402                p_acctd_app_from   IN NUMBER,
16403                p_acctd_ed         IN NUMBER,
16404                p_acctd_uned       IN NUMBER,
16405                p_from_curr_code   IN VARCHAR2)
16406   IS
16407     SELECT /*+INDEX (AR_LINE_APP_DETAIL_GT AR_LINE_APP_DETAIL_GT_N1)*/
16408 	        DECODE(activity_bucket, 'ADJ_LINE', 'ADJ',
16409                           'ADJ_TAX' , 'ADJ',
16410                           'ADJ_FRT' , 'ADJ',
16411                           'ADJ_CHRG', 'ADJ',
16412                           'APP_LINE', 'APP',
16413                           'APP_TAX' , 'APP',
16414                           'APP_FRT' , 'APP',
16415                           'APP_CHRG', 'APP',
16416                           'ED_LINE' , 'ED',
16417                           'ED_TAX'  , 'ED',
16418                           'ED_FRT'  , 'ED',
16419                           'UNED_CHRG' , 'UNED',
16420                           'UNED_LINE' , 'UNED',
16421                           'UNED_TAX'  , 'UNED',
16422                           'UNED_FRT'  , 'UNED',
16423                           'UNED_CHRG' , 'UNED')    groupe,
16424         /* ADJ and APP */
16425          --BASE
16426            --Base for acctd_amount MRC
16427            0,
16428            SUM(DECODE(activity_bucket,'APP_LINE',amount,
16429                              'APP_TAX' ,amount,
16430                              'APP_FRT' ,amount,
16431                              'APP_CHRG',amount,
16432                              'ADJ_LINE',amount,
16433                              'ADJ_TAX' ,amount,
16434                              'ADJ_FRT' ,amount,
16435                              'ADJ_CHRG',amount,0)),
16436            --Base used for MRC
16437            0,
16438            0,
16439            --Base used for MRC from_acctd_amount
16440            0,
16441            SUM(DECODE(activity_bucket,'APP_LINE',amount,
16442                              'APP_TAX' ,amount,
16443                              'APP_FRT' ,amount,
16444                              'APP_CHRG',amount,0)),
16445            --Base not used in MRC
16446            0,
16447            0,
16448          --ELEMENT
16449            --Element for APP/ADJ acctd_amount MRC
16450            0,
16451            DECODE(activity_bucket,'APP_LINE',amount,
16452                          'APP_TAX' ,amount,
16453                          'APP_FRT' ,amount,
16454                          'APP_CHRG',amount,
16455                          'ADJ_LINE',amount,
16456                          'ADJ_TAX' ,amount,
16457                          'ADJ_FRT' ,amount,
16458                          'ADJ_CHRG',amount,0),
16459            --Element not used in MRC
16460            0,
16461            0,
16462            --Element used for MRC from_acctd_amount
16463            0,
16464            DECODE(activity_bucket,'APP_LINE',amount,
16465                          'APP_TAX' ,amount,
16466                          'APP_FRT' ,amount,
16467                          'APP_CHRG',amount,0),
16468            --Element not used
16469            0,
16470            0,
16471         --AMOUNT TO ALLOCATED
16472           --bucket MRC allocated the acctd_amount
16473            0,
16474            p_acctd_adj_app_to,
16475           --bucket not used
16476            0,
16477            0,
16478           --bucket used allocated the from_acctd_amount
16479            0,
16480            p_acctd_app_from,
16481           --bucket not used MRC
16482            0,
16483            0,
16484         /* ED */
16485         --BASE
16486            --Base for acctd_amount MRC
16487            0,
16488            SUM(DECODE(activity_bucket,'ED_LINE',amount,
16489                              'ED_TAX' ,amount,
16490                              'ED_FRT' ,amount,
16491                              'ED_CHRG',amount,0)),
16492            --Base not used
16493            0,
16494            0,
16495            --Base for from_acctd_amount - Not applicable for ED
16496            0,
16497            0,
16498            --Base not used
16499            0,
16500            0,
16501         --ELEMENT
16502            --Element for acctd_amount
16503            0,
16504            DECODE(activity_bucket,'ED_LINE',amount,
16505                          'ED_TAX' ,amount,
16506                          'ED_FRT' ,amount,
16507                          'ED_CHRG',amount,0),
16508            --Element not used
16509            0,
16510            0,
16511            --Element used for from_acctd_amount - Not applicable for discount
16512            0,
16513            0,
16514            --Element not used
16515            0,
16516            0,
16517         --AMOUNT TO BE ALLOCATED
16518           --bucket for acctd_amount MRC
16519            0,
16520            p_acctd_ed,
16521           --bucket not used
16522            0,
16523            0,
16524           --bucket not used - Note:from_acctd_amount not applicable for discount
16525            0,
16526            0,
16527           --bucket not used
16528            0,
16529            0,
16530         /* UNED */
16531          --BASE
16532            --Base for acctd_amount MRC
16533            0,
16534            SUM(DECODE(activity_bucket,'UNED_LINE',amount,
16535                              'UNED_TAX' ,amount,
16536                              'UNED_FRT' ,amount,
16537                              'UNED_CHRG',amount,0)),
16538            --Base not used
16539            0,
16540            0,
16541            --Base not used
16542            0,
16543            0,
16544            --Base not used
16545            0,
16546            0,
16547         --ELEMENT
16548            --Element for acctd_amount MRC
16549            0,
16550            DECODE(activity_bucket,'UNED_LINE',amount,
16551                          'UNED_TAX' ,amount,
16552                          'UNED_FRT' ,amount,
16553                          'UNED_CHRG',amount,0),
16554            --Element not used
16555            0,
16556            0,
16557            --Element not used
16558            0,
16559            0,
16560            --Element not used
16561            0,
16562            0,
16563         --AMOUNT TO BE ALLOCATED
16564            --Bucket for acctd_amount
16565            0,
16566            p_acctd_uned,
16567            --Bucket not used
16568            0,
16569            0,
16570            --Bucket not used
16571            0,
16572            0,
16573            --Bucket not used
16574            0,
16575            0,
16576            --Currencies
16577            p_ae_sys_rec.base_currency           BASE_CURRENCY  ,
16578            g_cust_inv_rec.invoice_currency_code TO_CURRENCY    ,
16579          --HYU
16580            p_from_curr_code                     FROM_CURRENCY,
16581            -- Rowid
16582            rowid
16583      FROM  AR_LINE_APP_DETAIL_GT
16584     WHERE gt_id  = p_gt_id
16585       AND ref_customer_trx_id = p_customer_trx_id
16586     ORDER BY DECODE(activity_bucket,  'ADJ_LINE', 'ADJ',
16587                           'ADJ_TAX' , 'ADJ',
16588                           'ADJ_FRT' , 'ADJ',
16589                           'ADJ_CHRG', 'ADJ',
16590                           'APP_LINE', 'APP',
16591                           'APP_TAX' , 'APP',
16592                           'APP_FRT' , 'APP',
16593                           'APP_CHRG', 'APP',
16594                           'ED_LINE' , 'ED',
16595                           'ED_TAX'  , 'ED',
16596                           'ED_FRT'  , 'ED',
16597                           'UNED_CHRG' , 'UNED',
16598                           'UNED_LINE' , 'UNED',
16599                           'UNED_TAX'  , 'UNED',
16600                           'UNED_FRT'  , 'UNED',
16601                           'UNED_CHRG' , 'UNED');
16602 
16603   l_tab  pro_res_tbl_type;
16604 
16605   l_group_tbl            group_tbl_type;
16606   l_group                VARCHAR2(900)    := 'NOGROUP';
16607 
16608   -- ADJ and APP
16609   l_run_amt              NUMBER          := 0;
16610   l_run_alloc            NUMBER          := 0;
16611   l_run_acctd_amt        NUMBER          := 0;
16612   l_run_acctd_alloc      NUMBER          := 0;
16613   l_alloc                NUMBER          := 0;
16614   l_acctd_alloc          NUMBER          := 0;
16615 
16616   l_run_chrg_amt         NUMBER          := 0;
16617   l_run_chrg_alloc       NUMBER          := 0;
16618   l_run_chrg_acctd_amt   NUMBER          := 0;
16619   l_run_chrg_acctd_alloc NUMBER          := 0;
16620   l_chrg_alloc           NUMBER          := 0;
16621   l_chrg_acctd_alloc     NUMBER          := 0;
16622 
16623   l_run_frt_amt         NUMBER          := 0;
16624   l_run_frt_alloc       NUMBER          := 0;
16625   l_run_frt_acctd_amt   NUMBER          := 0;
16626   l_run_frt_acctd_alloc NUMBER          := 0;
16627   l_frt_alloc           NUMBER          := 0;
16628   l_frt_acctd_alloc     NUMBER          := 0;
16629 
16630   l_run_tax_amt         NUMBER          := 0;
16631   l_run_tax_alloc       NUMBER          := 0;
16632   l_run_tax_acctd_amt   NUMBER          := 0;
16633   l_run_tax_acctd_alloc NUMBER          := 0;
16634   l_tax_alloc           NUMBER          := 0;
16635   l_tax_acctd_alloc     NUMBER          := 0;
16636 
16637 
16638   -- ED
16639   l_run_ed_amt              NUMBER          := 0;
16640   l_run_ed_alloc            NUMBER          := 0;
16641   l_run_ed_acctd_amt        NUMBER          := 0;
16642   l_run_ed_acctd_alloc      NUMBER          := 0;
16643   l_ed_alloc                NUMBER          := 0;
16644   l_ed_acctd_alloc          NUMBER          := 0;
16645 
16646   l_run_ed_chrg_amt         NUMBER          := 0;
16647   l_run_ed_chrg_alloc       NUMBER          := 0;
16648   l_run_ed_chrg_acctd_amt   NUMBER          := 0;
16649   l_run_ed_chrg_acctd_alloc NUMBER          := 0;
16650   l_ed_chrg_alloc           NUMBER          := 0;
16651   l_ed_chrg_acctd_alloc     NUMBER          := 0;
16652 
16653   l_run_ed_frt_amt         NUMBER          := 0;
16654   l_run_ed_frt_alloc       NUMBER          := 0;
16655   l_run_ed_frt_acctd_amt   NUMBER          := 0;
16656   l_run_ed_frt_acctd_alloc NUMBER          := 0;
16657   l_ed_frt_alloc           NUMBER          := 0;
16658   l_ed_frt_acctd_alloc     NUMBER          := 0;
16659 
16660   l_run_ed_tax_amt         NUMBER          := 0;
16661   l_run_ed_tax_alloc       NUMBER          := 0;
16662   l_run_ed_tax_acctd_amt   NUMBER          := 0;
16663   l_run_ed_tax_acctd_alloc NUMBER          := 0;
16664   l_ed_tax_alloc           NUMBER          := 0;
16665   l_ed_tax_acctd_alloc     NUMBER          := 0;
16666 
16667   -- UNED
16668   l_run_uned_amt              NUMBER          := 0;
16669   l_run_uned_alloc            NUMBER          := 0;
16670   l_run_uned_acctd_amt        NUMBER          := 0;
16671   l_run_uned_acctd_alloc      NUMBER          := 0;
16672   l_uned_alloc                NUMBER          := 0;
16673   l_uned_acctd_alloc          NUMBER          := 0;
16674 
16675   l_run_uned_chrg_amt         NUMBER          := 0;
16676   l_run_uned_chrg_alloc       NUMBER          := 0;
16677   l_run_uned_chrg_acctd_amt   NUMBER          := 0;
16678   l_run_uned_chrg_acctd_alloc NUMBER          := 0;
16679   l_uned_chrg_alloc           NUMBER          := 0;
16680   l_uned_chrg_acctd_alloc     NUMBER          := 0;
16681 
16682   l_run_uned_frt_amt         NUMBER          := 0;
16683   l_run_uned_frt_alloc       NUMBER          := 0;
16684   l_run_uned_frt_acctd_amt   NUMBER          := 0;
16685   l_run_uned_frt_acctd_alloc NUMBER          := 0;
16686   l_uned_frt_alloc           NUMBER          := 0;
16687   l_uned_frt_acctd_alloc     NUMBER          := 0;
16688 
16689   l_run_uned_tax_amt         NUMBER          := 0;
16690   l_run_uned_tax_alloc       NUMBER          := 0;
16691   l_run_uned_tax_acctd_amt   NUMBER          := 0;
16692   l_run_uned_tax_acctd_alloc NUMBER          := 0;
16693   l_uned_tax_alloc           NUMBER          := 0;
16694   l_uned_tax_acctd_alloc     NUMBER          := 0;
16695 
16696   l_exist                BOOLEAN;
16697   l_last_fetch           BOOLEAN;
16698 
16699   l_acctd_adj_app_to     NUMBER;
16700   l_acctd_app_from       NUMBER;
16701   l_acctd_ed             NUMBER;
16702   l_acctd_uned           NUMBER;
16703   l_from_curr_code       VARCHAR2(30);
16704 
16705 BEGIN
16706   IF PG_DEBUG = 'Y' THEN
16707   localdebug('arp_det_dist_pkg.update_mrc_for_dist()+');
16708   END IF;
16709 
16710   IF p_app_rec.receivable_application_id IS NOT NULL THEN
16711     l_acctd_adj_app_to:=   NVL(p_app_rec.acctd_amount_applied_to,0) * -1;
16712     l_acctd_app_from  :=   NVL(p_app_rec.acctd_amount_applied_from,0) * -1;
16713     l_acctd_ed        :=   NVL(p_app_rec.acctd_earned_discount_taken,0) * -1;
16714     l_acctd_uned      :=   NVL(p_app_rec.acctd_unearned_discount_taken,0) * -1;
16715   ELSIF p_adj_rec.adjustment_id IS NOT NULL THEN
16716     l_acctd_adj_app_to:=   NVL(p_adj_rec.acctd_amount,0);
16717     l_acctd_app_from  :=   0;
16718     l_acctd_ed        :=   0;
16719     l_acctd_uned      :=   0;
16720   END IF;
16721 
16722   IF p_app_rec.receivable_application_id IS NOT NULL THEN
16723      get_from_currency(p_app_rec          => p_app_rec,
16724                        x_from_curr_code   => l_from_curr_code);
16725 
16726      IF PG_DEBUG = 'Y' THEN
16727      localdebug(' l_from_curr_code :'||l_from_curr_code);
16728      END IF;
16729   END IF;
16730 
16731   IF l_from_curr_code IS NULL THEN
16732      l_from_curr_code := p_ae_sys_rec.base_currency;
16733   END IF;
16734 
16735   OPEN  c_mrc(p_acctd_adj_app_to =>l_acctd_adj_app_to,
16736               p_acctd_app_from   =>l_acctd_app_from  ,
16737               p_acctd_ed         =>l_acctd_ed  ,
16738               p_acctd_uned       =>l_acctd_uned ,
16739               p_from_curr_code   =>l_from_curr_code);
16740   LOOP
16741     FETCH c_mrc BULK COLLECT INTO
16742      l_tab.GROUPE                  ,
16743    -- ADJ and APP
16744      -- Base
16745      l_tab.base_pro_amt       ,
16746      l_tab.base_pro_acctd_amt ,
16747      l_tab.BASE_FRT_PRO_AMT       ,
16748      l_tab.BASE_FRT_PRO_ACCTD_AMT ,
16749      l_tab.BASE_tax_PRO_AMT       ,
16750      l_tab.BASE_tax_PRO_ACCTD_AMT ,
16751      l_tab.BASE_CHRG_PRO_AMT       ,
16752      l_tab.BASE_CHRG_PRO_ACCTD_AMT ,
16753      -- Element numerator
16754      l_tab.elmt_pro_amt       ,
16755      l_tab.elmt_pro_acctd_amt ,
16756      l_tab.ELMT_FRT_PRO_AMT       ,
16757      l_tab.ELMT_FRT_PRO_ACCTD_AMT ,
16758      l_tab.ELMT_tax_PRO_AMT       ,
16759      l_tab.ELMT_tax_PRO_ACCTD_AMT ,
16760      l_tab.ELMT_CHRG_PRO_AMT       ,
16761      l_tab.ELMT_CHRG_PRO_ACCTD_AMT ,
16762      -- Amount to be allocated
16763      l_tab.buc_alloc_amt      ,
16764      l_tab.buc_alloc_acctd_amt,
16765      l_tab.buc_frt_alloc_amt      ,
16766      l_tab.buc_frt_alloc_acctd_amt,
16767      l_tab.buc_tax_alloc_amt      ,
16768      l_tab.buc_tax_alloc_acctd_amt,
16769      l_tab.buc_chrg_alloc_amt      ,
16770      l_tab.buc_chrg_alloc_acctd_amt,
16771    -- ED
16772      -- Base
16773      l_tab.base_ed_pro_amt       ,
16774      l_tab.base_ed_pro_acctd_amt ,
16775      l_tab.BASE_ed_FRT_PRO_AMT       ,
16776      l_tab.BASE_ed_FRT_PRO_ACCTD_AMT ,
16777      l_tab.BASE_ed_tax_PRO_AMT       ,
16778      l_tab.BASE_ed_tax_PRO_ACCTD_AMT ,
16779      l_tab.BASE_ed_CHRG_PRO_AMT       ,
16780      l_tab.BASE_ed_CHRG_PRO_ACCTD_AMT ,
16781      -- Element numerator
16782      l_tab.elmt_ed_pro_amt       ,
16783      l_tab.elmt_ed_pro_acctd_amt ,
16784      l_tab.ELMT_ed_FRT_PRO_AMT       ,
16785      l_tab.ELMT_ed_FRT_PRO_ACCTD_AMT ,
16786      l_tab.ELMT_ed_tax_PRO_AMT       ,
16787      l_tab.ELMT_ed_tax_PRO_ACCTD_AMT ,
16788      l_tab.ELMT_ed_CHRG_PRO_AMT       ,
16789      l_tab.ELMT_ed_CHRG_PRO_ACCTD_AMT ,
16790      -- Amount to be allocated
16791      l_tab.buc_ed_alloc_amt      ,
16792      l_tab.buc_ed_alloc_acctd_amt,
16793      l_tab.buc_ed_frt_alloc_amt      ,
16794      l_tab.buc_ed_frt_alloc_acctd_amt,
16795      l_tab.buc_ed_tax_alloc_amt      ,
16796      l_tab.buc_ed_tax_alloc_acctd_amt,
16797      l_tab.buc_ed_chrg_alloc_amt      ,
16798      l_tab.buc_ed_chrg_alloc_acctd_amt,
16799    -- UNED
16800      -- Base
16801      l_tab.base_uned_pro_amt       ,
16802      l_tab.base_uned_pro_acctd_amt ,
16803      l_tab.BASE_uned_FRT_PRO_AMT       ,
16804      l_tab.BASE_uned_FRT_PRO_ACCTD_AMT ,
16805      l_tab.BASE_uned_tax_PRO_AMT       ,
16806      l_tab.BASE_uned_tax_PRO_ACCTD_AMT ,
16807      l_tab.BASE_uned_CHRG_PRO_AMT       ,
16808      l_tab.BASE_uned_CHRG_PRO_ACCTD_AMT ,
16809      -- Element numerator
16810      l_tab.elmt_uned_pro_amt       ,
16811      l_tab.elmt_uned_pro_acctd_amt ,
16812      l_tab.ELMT_uned_FRT_PRO_AMT       ,
16813      l_tab.ELMT_uned_FRT_PRO_ACCTD_AMT ,
16814      l_tab.ELMT_uned_tax_PRO_AMT       ,
16815      l_tab.ELMT_uned_tax_PRO_ACCTD_AMT ,
16816      l_tab.ELMT_uned_CHRG_PRO_AMT       ,
16817      l_tab.ELMT_uned_CHRG_PRO_ACCTD_AMT ,
16818      -- Amount to be allocated
16819      l_tab.buc_uned_alloc_amt      ,
16820      l_tab.buc_uned_alloc_acctd_amt,
16821      l_tab.buc_uned_frt_alloc_amt      ,
16822      l_tab.buc_uned_frt_alloc_acctd_amt,
16823      l_tab.buc_uned_tax_alloc_amt      ,
16824      l_tab.buc_uned_tax_alloc_acctd_amt,
16825      l_tab.buc_uned_chrg_alloc_amt      ,
16826      l_tab.buc_uned_chrg_alloc_acctd_amt,
16827      --
16828      l_tab.BASE_CURRENCY  ,
16829      l_tab.TO_CURRENCY    ,
16830      l_tab.FROM_CURRENCY  ,
16831      --
16832      l_tab.ROWID_ID     LIMIT g_bulk_fetch_rows;
16833 
16834      IF c_mrc%NOTFOUND THEN
16835           l_last_fetch := TRUE;
16836      END IF;
16837 
16838      IF (l_tab.ROWID_ID.COUNT = 0) AND (l_last_fetch) THEN
16839        IF PG_DEBUG = 'Y' THEN
16840        localdebug('COUNT = 0 and LAST FETCH ');
16841        END IF;
16842        EXIT;
16843      END IF;
16844 
16845      plsql_proration( x_tab               => l_tab,
16846                    x_group_tbl            => l_group_tbl,
16847                    -- ADJ and APP
16848                    x_run_amt              => l_run_amt,
16849                    x_run_alloc            => l_run_alloc,
16850                    x_run_acctd_amt        => l_run_acctd_amt,
16851                    x_run_acctd_alloc      => l_run_acctd_alloc,
16852                    x_run_chrg_amt         => l_run_chrg_amt,
16853                    x_run_chrg_alloc       => l_run_chrg_alloc,
16854                    x_run_chrg_acctd_amt   => l_run_chrg_acctd_amt,
16855                    x_run_chrg_acctd_alloc => l_run_chrg_acctd_alloc,
16856                    x_run_frt_amt         => l_run_frt_amt,
16857                    x_run_frt_alloc       => l_run_frt_alloc,
16858                    x_run_frt_acctd_amt   => l_run_frt_acctd_amt,
16859                    x_run_frt_acctd_alloc => l_run_frt_acctd_alloc,
16860                    x_run_tax_amt         => l_run_tax_amt,
16861                    x_run_tax_alloc       => l_run_tax_alloc,
16862                    x_run_tax_acctd_amt   => l_run_tax_acctd_amt,
16863                    x_run_tax_acctd_alloc => l_run_tax_acctd_alloc,
16864                    -- ED
16865                    x_run_ed_amt              => l_run_ed_amt,
16866                    x_run_ed_alloc            => l_run_ed_alloc,
16867                    x_run_ed_acctd_amt        => l_run_ed_acctd_amt,
16868                    x_run_ed_acctd_alloc      => l_run_ed_acctd_alloc,
16869                    x_run_ed_chrg_amt         => l_run_ed_chrg_amt,
16870                    x_run_ed_chrg_alloc       => l_run_ed_chrg_alloc,
16871                    x_run_ed_chrg_acctd_amt   => l_run_ed_chrg_acctd_amt,
16872                    x_run_ed_chrg_acctd_alloc => l_run_ed_chrg_acctd_alloc,
16873                    x_run_ed_frt_amt         => l_run_ed_frt_amt,
16874                    x_run_ed_frt_alloc       => l_run_ed_frt_alloc,
16875                    x_run_ed_frt_acctd_amt   => l_run_ed_frt_acctd_amt,
16876                    x_run_ed_frt_acctd_alloc => l_run_ed_frt_acctd_alloc,
16877                    x_run_ed_tax_amt         => l_run_ed_tax_amt,
16878                    x_run_ed_tax_alloc       => l_run_ed_tax_alloc,
16879                    x_run_ed_tax_acctd_amt   => l_run_ed_tax_acctd_amt,
16880                    x_run_ed_tax_acctd_alloc => l_run_ed_tax_acctd_alloc,
16881                    -- UNED
16882                    x_run_uned_amt              => l_run_uned_amt,
16883                    x_run_uned_alloc            => l_run_uned_alloc,
16884                    x_run_uned_acctd_amt        => l_run_uned_acctd_amt,
16885                    x_run_uned_acctd_alloc      => l_run_uned_acctd_alloc,
16886                    x_run_uned_chrg_amt         => l_run_uned_chrg_amt,
16887                    x_run_uned_chrg_alloc       => l_run_uned_chrg_alloc,
16888                    x_run_uned_chrg_acctd_amt   => l_run_uned_chrg_acctd_amt,
16889                    x_run_uned_chrg_acctd_alloc => l_run_uned_chrg_acctd_alloc,
16890                    x_run_uned_frt_amt         => l_run_uned_frt_amt,
16891                    x_run_uned_frt_alloc       => l_run_uned_frt_alloc,
16892                    x_run_uned_frt_acctd_amt   => l_run_uned_frt_acctd_amt,
16893                    x_run_uned_frt_acctd_alloc => l_run_uned_frt_acctd_alloc,
16894                    x_run_uned_tax_amt         => l_run_uned_tax_amt,
16895                    x_run_uned_tax_alloc       => l_run_uned_tax_alloc,
16896                    x_run_uned_tax_acctd_amt   => l_run_uned_tax_acctd_amt,
16897                    x_run_uned_tax_acctd_alloc => l_run_uned_tax_acctd_alloc
16898                    );
16899 
16900     IF PG_DEBUG = 'Y' THEN
16901     localdebug('     update AR_LINE_APP_DETAIL_GT  RSOB:'||p_ae_sys_rec.set_of_books_id);
16902     END IF;
16903     FORALL i IN l_tab.ROWID_ID.FIRST .. l_tab.ROWID_ID.LAST
16904       UPDATE AR_LINE_APP_DETAIL_GT a
16905       SET  ACCTD_AMOUNT      = DECODE(a.activity_bucket, 'APP_LINE', l_tab.tl_alloc_acctd_amt(i),
16906                                                 'APP_TAX' , l_tab.tl_alloc_acctd_amt(i),
16907                                                 'APP_FRT' , l_tab.tl_alloc_acctd_amt(i),
16908                                                 'APP_CHRG', l_tab.tl_alloc_acctd_amt(i),
16909                                                 'ADJ_LINE', l_tab.tl_alloc_acctd_amt(i),
16910                                                 'ADJ_TAX' , l_tab.tl_alloc_acctd_amt(i),
16911                                                 'ADJ_FRT' , l_tab.tl_alloc_acctd_amt(i),
16912                                                 'ADJ_CHRG', l_tab.tl_alloc_acctd_amt(i),
16913                                                 'ED_LINE', l_tab.tl_ed_alloc_acctd_amt(i),
16914                                                 'ED_TAX' , l_tab.tl_ed_alloc_acctd_amt(i),
16915                                                 'ED_FRT' , l_tab.tl_ed_alloc_acctd_amt(i),
16916                                                 'ED_CHRG', l_tab.tl_ed_alloc_acctd_amt(i),
16917                                                 'UNED_LINE', l_tab.tl_uned_alloc_acctd_amt(i),
16918                                                 'UNED_TAX' , l_tab.tl_uned_alloc_acctd_amt(i),
16919                                                 'UNED_FRT' , l_tab.tl_uned_alloc_acctd_amt(i),
16920                                                 'UNED_CHRG', l_tab.tl_uned_alloc_acctd_amt(i)),
16921             FROM_ACCTD_AMOUNT= DECODE(a.activity_bucket, 'APP_LINE', l_tab.tl_tax_alloc_acctd_amt(i),
16922                                                 'APP_TAX' , l_tab.tl_tax_alloc_acctd_amt(i),
16923                                                 'APP_FRT' , l_tab.tl_tax_alloc_acctd_amt(i),
16924                                                 'APP_CHRG', l_tab.tl_tax_alloc_acctd_amt(i),
16925                                                 'ADJ_LINE', l_tab.tl_tax_alloc_acctd_amt(i),
16926                                                 'ADJ_TAX' , l_tab.tl_tax_alloc_acctd_amt(i),
16927                                                 'ADJ_FRT' , l_tab.tl_tax_alloc_acctd_amt(i),
16928                                                 'ADJ_CHRG', l_tab.tl_tax_alloc_acctd_amt(i),
16929                                                 'ED_LINE', l_tab.tl_ed_tax_alloc_acctd_amt(i),
16930                                                 'ED_TAX' , l_tab.tl_ed_tax_alloc_acctd_amt(i),
16931                                                 'ED_FRT' , l_tab.tl_ed_tax_alloc_acctd_amt(i),
16932                                                 'ED_CHRG', l_tab.tl_ed_tax_alloc_acctd_amt(i),
16933                                                 'UNED_LINE', l_tab.tl_uned_tax_alloc_acctd_amt(i),
16934                                                 'UNED_TAX' , l_tab.tl_uned_tax_alloc_acctd_amt(i),
16935                                                 'UNED_FRT' , l_tab.tl_uned_tax_alloc_acctd_amt(i),
16936                                                 'UNED_CHRG', l_tab.tl_uned_tax_alloc_acctd_amt(i)),
16937            ledger_id      = p_ae_sys_rec.set_of_books_id
16938       WHERE rowid                     = l_tab.ROWID_ID(i);
16939     IF PG_DEBUG = 'Y' THEN
16940     localdebug('     update iAR_LINE_APP_DETAIL_GT ');
16941     END IF;
16942 
16943   END LOOP;
16944   CLOSE c_mrc;
16945   IF PG_DEBUG = 'Y' THEN
16946   localdebug('arp_det_dist_pkg.update_for_mrc_dist()-');
16947   END IF;
16948 END update_for_mrc_dist;
16949 
16950 
16951 --{For Cash Accrual Lazy update at posting
16952 --
16953 --Function to return next value to use as line_id
16954 --
16955 FUNCTION next_val(p_num IN NUMBER)
16956 RETURN NUMBER
16957 IS
16958   CURSOR c IS
16959   SELECT ar_cash_basis_distributions_s.NEXTVAL
16960     FROM DUAL;
16961   l_num  NUMBER;
16962 BEGIN
16963   OPEN c;
16964   FETCH c INTO l_num;
16965   CLOSE c;
16966   RETURN (p_num + l_num);
16967 END;
16968 
16969 
16970 
16971 PROCEDURE insert_ard_gt
16972 (p_gt_id       IN VARCHAR2,
16973  x_exec_status OUT NOCOPY VARCHAR2)
16974 IS
16975   CURSOR c1 IS
16976   SELECT MAX(line_id)
16977     FROM ar_distributions_all;
16978   g_num  NUMBER;
16979   l_rows NUMBER;
16980 BEGIN
16981   OPEN c1;
16982   FETCH c1 INTO g_num;
16983   IF c1%NOTFOUND THEN
16984     g_num := 0;
16985   END IF;
16986   CLOSE c1;
16987 
16988 --UPDATE AR_LINE_APP_DETAIL_GT a SET
16989 --(a.DET_ID                         ) =
16990 --(SELECT next_val(g_num)
16991 --   FROM AR_LINE_APP_DETAIL_GT b
16992 --   WHERE a.rowid = b.rowid
16993 --     AND a.gt_id = p_gt_id);
16994 --IF SQL%FOUND THEN
16995 --  x_exec_status := 'Y';
16996 --
16997 -- Keep audit data in ar_cash_basis_distributions
16998 --
16999 -- Note the index unique index 'AR_CASH_BASIS_DISTRIBUTIONS_U2' built on the columns
17000 --RECEIVABLE_APPLICATION_ID
17001 --SOURCE
17002 --SOURCE_ID
17003 --TYPE
17004 --POSTING_CONTROL_ID
17005 --need to be dropped. Because the combination is no longer unique
17006 --  source_id --> adj_id  123
17007 --  type      --> line for the adjustment is revenue on invoice and there are 2 rev line on the inv line 1 and line 2
17008 --  source    --> ADJ
17009 -- For the potion od the adj on line 1 (123, LINE, ADJ)
17010 -- For the potion od the adj on line 2 (123, LINE, ADJ) the same. Therefore not unique
17011 -- Need investigate on perf. part of the code
17012 
17013 INSERT INTO ar_cash_basis_dists_all
17014 ( CASH_BASIS_DISTRIBUTION_ID
17015 , CREATED_BY
17016 , CREATION_DATE
17017 , LAST_UPDATE_DATE
17018 , LAST_UPDATED_BY
17019 , LAST_UPDATE_LOGIN
17020 , PROGRAM_APPLICATION_ID
17021 , PROGRAM_ID
17022 , PROGRAM_UPDATE_DATE
17023 , RECEIVABLE_APPLICATION_ID
17024 , SOURCE
17025 , SOURCE_ID
17026 , TYPE
17027 , PAYMENT_SCHEDULE_ID
17028 , GL_DATE
17029 , CURRENCY_CODE
17030 , AMOUNT
17031 , ACCTD_AMOUNT
17032 , CODE_COMBINATION_ID
17033 , POSTING_CONTROL_ID
17034 , GL_POSTED_DATE
17035 , RECEIVABLE_APPLICATION_ID_CASH
17036 , ORG_ID
17037 , activity_bucket
17038 , ref_account_class
17039 , ref_customer_trx_id
17040 , ref_customer_trx_line_id
17041 , ref_cust_trx_line_gl_dist_id
17042 , ref_line_id
17043 -- BUG#4396273  removed the not approved columns
17044 , FROM_AMOUNT
17045 , FROM_ACCTD_AMOUNT
17046 , LEDGER_ID
17047 , BASE_CURRENCY
17048 )
17049 SELECT
17050     AR_CASH_BASIS_DISTRIBUTIONS_S.NEXTVAL  -- cash_basis_distribution_id
17051 ,   lad.CREATED_BY              -- created_by
17052 ,   lad.CREATION_DATE           -- creation_date
17053 ,   lad.LAST_UPDATE_DATE        -- last_update_date
17054 ,   lad.LAST_UPDATED_BY         -- last_updated_by
17055 ,   lad.LAST_UPDATE_LOGIN       -- last_update_login
17056 ,   222                         -- PROGRAM_APPLICATION_ID
17057 ,   77777                       -- PROGRAM_ID  (batch upgrade cash basis at posting)
17058 ,   SYSDATE                     -- PROGRAM_UPDATE_DATE
17059 ,   lad.SOURCE_ID               -- RECEIVABLE_APPLICATION_ID
17060 ,   'RA'             --SOURCE (ADJ or INV)
17061 ,   lad.SOURCE_ID    --SOURCE_ID (used to be adj_id or ctlgd_id in 11i
17062                                                            --for now line_id will be fix with adj_id
17063 ,   DECODE(lad.activity_bucket,'ED_LINE','LINE',
17064                  'ED_TAX', 'TAX',
17065                  'ED_CHRG','CHARGES',
17066                  'ED_FRT' ,'FREIGHT',
17067                  'UNED_LINE','LINE',
17068                  'UNED_TAX','TAX',
17069                  'UNED_CHRG','CHARGES',
17070                  'UNED_FRT','FREIGHT',
17071                  'ADJ_LINE','LINE',
17072                  'ADJ_TAX','TAX',
17073                  'ADJ_CHRG','CHARGES',
17074                  'ADJ_FRT','FREIGHT',
17075                  'APP_LINE','LINE',
17076                  'APP_TAX','TAX',
17077                  'APP_CHRG','CHARGES',
17078                  'APP_FRT','FREIGHT')                  -- TYPE (LINE TAX FREIGHT CHARGES)
17079 ,   sch.payment_schedule_id     -- PAYMENT_SCHEDULE_ID
17080 ,   sch.gl_date                 -- GL_DATE
17081 ,   lad.TO_CURRENCY             -- CURRENCY_CODE
17082 ,  DECODE(lad.activity_bucket,'ED_LINE',lad.amount,
17083                  'ED_TAX', lad.amount,
17084                  'ED_CHRG',lad.amount,
17085                  'ED_FRT' ,lad.amount,
17086                  'UNED_LINE',lad.amount,
17087                  'UNED_TAX',lad.amount,
17088                  'UNED_CHRG',lad.amount,
17089                  'UNED_FRT',lad.amount,
17090                  'ADJ_LINE',lad.amount,
17091                  'ADJ_TAX',lad.amount,
17092                  'ADJ_CHRG',lad.amount,
17093                  'ADJ_FRT',lad.amount,
17094                  -1*lad.amount)                 --AMOUNT
17095 ,  DECODE(lad.activity_bucket,'ED_LINE',lad.acctd_amount,
17096                  'ED_TAX', lad.acctd_amount,
17097                  'ED_CHRG',lad.acctd_amount,
17098                  'ED_FRT' ,lad.acctd_amount,
17099                  'UNED_LINE',lad.acctd_amount,
17100                  'UNED_TAX',lad.acctd_amount,
17101                  'UNED_CHRG',lad.acctd_amount,
17102                  'UNED_FRT',lad.acctd_amount,
17103                  'ADJ_LINE',lad.acctd_amount,
17104                  'ADJ_TAX',lad.acctd_amount,
17105                  'ADJ_CHRG',lad.acctd_amount,
17106                  'ADJ_FRT',lad.acctd_amount,
17107                  -1* lad.acctd_amount)          --ACCTD_AMOUNT
17108 ,   lad.CCID                    -- CODE_COMBINATION_ID
17109 ,   -9999                       -- POSTING_CONTROL_ID -- We do maintain the posting control id in cash basis dists
17110                                                       -- to verify if the posting has occured check app pst ctl id
17111 ,   SYSDATE                     -- GL_POSTED_DATE  ( need to be reflag at the end by extract)
17112 ,   lad.SOURCE_ID               -- RECEIVABLE_APPLICATION_ID_CASH
17113 ,   sch.ORG_ID                  -- org_id
17114 ,   lad.activity_bucket
17115 ,   lad.ref_account_class
17116 ,   lad.ref_customer_trx_id
17117 ,   lad.ref_customer_trx_line_id
17118 ,   lad.ref_cust_trx_line_gl_dist_id
17119 ,   lad.ref_line_id
17120 /*                      BUG#4396273 remove not approved columns*/
17121 --HYU Add the From column bach Attention schema changes
17122 , SIGN(DECODE(lad.activity_bucket,'ED_LINE',lad.acctd_amount,
17123                  'ED_TAX', lad.acctd_amount,
17124                  'ED_CHRG',lad.acctd_amount,
17125                  'ED_FRT' ,lad.acctd_amount,
17126                  'UNED_LINE',lad.acctd_amount,
17127                  'UNED_TAX',lad.acctd_amount,
17128                  'UNED_CHRG',lad.acctd_amount,
17129                  'UNED_FRT',lad.acctd_amount,
17130                  'ADJ_LINE',lad.acctd_amount,
17131                  'ADJ_TAX',lad.acctd_amount,
17132                  'ADJ_CHRG',lad.acctd_amount,
17133                  'ADJ_FRT',lad.acctd_amount,
17134                  -1* lad.acctd_amount)) * ABS(lad.from_amount)   --FROM_AMOUNT
17135 , SIGN(DECODE(lad.activity_bucket,'ED_LINE',lad.acctd_amount,
17136                  'ED_TAX', lad.acctd_amount,
17137                  'ED_CHRG',lad.acctd_amount,
17138                  'ED_FRT' ,lad.acctd_amount,
17139                  'UNED_LINE',lad.acctd_amount,
17140                  'UNED_TAX',lad.acctd_amount,
17141                  'UNED_CHRG',lad.acctd_amount,
17142                  'UNED_FRT',lad.acctd_amount,
17143                  'ADJ_LINE',lad.acctd_amount,
17144                  'ADJ_TAX',lad.acctd_amount,
17145                  'ADJ_CHRG',lad.acctd_amount,
17146                  'ADJ_FRT',lad.acctd_amount,
17147                  -1* lad.acctd_amount)) * ABS(lad.from_acctd_amount)    --FROM_ACCTD_AMOUNT
17148 ,  lad.ledger_id                                     --LEDGER_ID
17149 ,  lad.base_currency                                --BASE_CURRENCY
17150 FROM AR_LINE_APP_DETAIL_GT  lad,
17151      ar_payment_schedules_all       sch
17152 WHERE lad.ref_customer_trx_id   = sch.customer_trx_id
17153   AND lad.gt_id                 = p_gt_id;
17154   l_rows := sql%rowcount;
17155   IF PG_DEBUG = 'Y' THEN
17156   localdebug('  rows inserted = ' || l_rows);
17157   END IF;
17158 END;
17159 
17160 --{Lazy upgrade at posting
17161 -- Modification, this is procedure will be called in downtime
17162 PROCEDURE prepare_for_ra
17163 (  p_gt_id                IN NUMBER,
17164    p_app_rec              IN ar_receivable_applications%ROWTYPE,
17165    p_ae_sys_rec           IN arp_acct_main.ae_sys_rec_type,
17166    p_inv_cm               IN VARCHAR2 DEFAULT 'I',
17167    p_cash_mfar            IN VARCHAR2 DEFAULT 'CASH')
17168 IS
17169   CURSOR cu_trx(p_trx_id IN NUMBER) IS
17170   SELECT * FROM ra_customer_trx_all
17171   WHERE customer_trx_id = p_trx_id;
17172   l_trx_rec       ra_customer_trx_all%ROWTYPE;
17173   l_exec_status   VARCHAR2(10) := 'N';
17174   l_adj_rec       ar_adjustments%ROWTYPE;
17175   l_app_rec       ar_receivable_applications%ROWTYPE;
17176   next_app        EXCEPTION;
17177 BEGIN
17178 --
17179 PG_DEBUG := 'N';
17180 
17181 g_upgrade_mode := 'Y';
17182 g_currency_code := p_ae_sys_rec.base_currency;
17183 g_org_id       := p_app_rec.org_id;
17184 
17185 IF p_ae_sys_rec.sob_type = 'P' THEN
17186 
17187   IF   p_inv_cm = 'C' THEN
17188     OPEN cu_trx(p_trx_id => p_app_rec.customer_trx_id);
17189   ELSE
17190     OPEN cu_trx(p_trx_id => p_app_rec.applied_customer_trx_id);
17191   END IF;
17192   FETCH cu_trx INTO l_trx_rec;
17193   IF cu_trx%FOUND THEN
17194     g_cust_inv_rec.remittance_bank_account_id :=  l_trx_rec.remittance_bank_account_id;
17195     g_cust_inv_rec.override_remit_account_flag :=  l_trx_rec.override_remit_account_flag;
17196     g_cust_inv_rec.special_instructions :=  l_trx_rec.special_instructions;
17197     g_cust_inv_rec.remittance_batch_id :=  l_trx_rec.remittance_batch_id;
17198     g_cust_inv_rec.prepayment_flag :=  l_trx_rec.prepayment_flag;
17199     g_cust_inv_rec.ct_reference :=  l_trx_rec.ct_reference;
17200     g_cust_inv_rec.contract_id :=  l_trx_rec.contract_id;
17201     g_cust_inv_rec.bill_template_id :=  l_trx_rec.bill_template_id;
17202     g_cust_inv_rec.reversed_cash_receipt_id :=  l_trx_rec.reversed_cash_receipt_id;
17203     g_cust_inv_rec.interface_header_attribute7 :=  l_trx_rec.interface_header_attribute7;
17204     g_cust_inv_rec.interface_header_attribute8 :=  l_trx_rec.interface_header_attribute8;
17205     g_cust_inv_rec.interface_header_context :=  l_trx_rec.interface_header_context;
17206     g_cust_inv_rec.default_ussgl_trx_code_context :=  l_trx_rec.default_ussgl_trx_code_context;
17207     g_cust_inv_rec.drawee_bank_account_id :=  l_trx_rec.drawee_bank_account_id;
17208     g_cust_inv_rec.default_ussgl_transaction_code :=  l_trx_rec.default_ussgl_transaction_code;
17209     g_cust_inv_rec.recurred_from_trx_number :=  l_trx_rec.recurred_from_trx_number;
17210     g_cust_inv_rec.status_trx :=  l_trx_rec.status_trx;
17211     g_cust_inv_rec.doc_sequence_id :=  l_trx_rec.doc_sequence_id;
17212     g_cust_inv_rec.doc_sequence_value :=  l_trx_rec.doc_sequence_value;
17213     g_cust_inv_rec.paying_customer_id :=  l_trx_rec.paying_customer_id;
17214     g_cust_inv_rec.paying_site_use_id :=  l_trx_rec.paying_site_use_id;
17215     g_cust_inv_rec.related_batch_source_id :=  l_trx_rec.related_batch_source_id;
17216     g_cust_inv_rec.default_tax_exempt_flag :=  l_trx_rec.default_tax_exempt_flag;
17217     g_cust_inv_rec.created_from :=  l_trx_rec.created_from;
17218     g_cust_inv_rec.org_id :=  l_trx_rec.org_id;
17219     g_cust_inv_rec.request_id :=  l_trx_rec.request_id;
17220     g_cust_inv_rec.program_application_id :=  l_trx_rec.program_application_id;
17221     g_cust_inv_rec.program_id :=  l_trx_rec.program_id;
17222     g_cust_inv_rec.program_update_date :=  l_trx_rec.program_update_date;
17223     g_cust_inv_rec.finance_charges :=  l_trx_rec.finance_charges;
17224     g_cust_inv_rec.complete_flag :=  l_trx_rec.complete_flag;
17225     g_cust_inv_rec.posting_control_id :=  l_trx_rec.posting_control_id;
17226     g_cust_inv_rec.bill_to_address_id :=  l_trx_rec.bill_to_address_id;
17227     g_cust_inv_rec.ra_post_loop_number :=  l_trx_rec.ra_post_loop_number;
17228     g_cust_inv_rec.ship_to_address_id :=  l_trx_rec.ship_to_address_id;
17229     g_cust_inv_rec.credit_method_for_rules :=  l_trx_rec.credit_method_for_rules;
17230     g_cust_inv_rec.credit_method_for_installments :=  l_trx_rec.credit_method_for_installments;
17231     g_cust_inv_rec.receipt_method_id :=  l_trx_rec.receipt_method_id;
17232     g_cust_inv_rec.related_customer_trx_id :=  l_trx_rec.related_customer_trx_id;
17233     g_cust_inv_rec.invoicing_rule_id :=  l_trx_rec.invoicing_rule_id;
17234     g_cust_inv_rec.ship_via :=  l_trx_rec.ship_via;
17235     g_cust_inv_rec.ship_date_actual :=  l_trx_rec.ship_date_actual;
17236     g_cust_inv_rec.waybill_number :=  l_trx_rec.waybill_number;
17237     g_cust_inv_rec.fob_point :=  l_trx_rec.fob_point;
17238     g_cust_inv_rec.customer_bank_account_id :=  l_trx_rec.customer_bank_account_id;
17239     g_cust_inv_rec.printing_option :=  l_trx_rec.printing_option;
17240     g_cust_inv_rec.printing_count :=  l_trx_rec.printing_count;
17241     g_cust_inv_rec.printing_pending :=  l_trx_rec.printing_pending;
17242     g_cust_inv_rec.purchase_order :=  l_trx_rec.purchase_order;
17243     g_cust_inv_rec.purchase_order_revision :=  l_trx_rec.purchase_order_revision;
17244     g_cust_inv_rec.purchase_order_date :=  l_trx_rec.purchase_order_date;
17245     g_cust_inv_rec.customer_reference :=  l_trx_rec.customer_reference;
17246     g_cust_inv_rec.customer_reference_date :=  l_trx_rec.customer_reference_date;
17247     g_cust_inv_rec.comments :=  l_trx_rec.comments;
17248     g_cust_inv_rec.internal_notes :=  l_trx_rec.internal_notes;
17249     g_cust_inv_rec.exchange_rate_type :=  l_trx_rec.exchange_rate_type;
17250     g_cust_inv_rec.exchange_date :=  l_trx_rec.exchange_date;
17251     g_cust_inv_rec.exchange_rate :=  l_trx_rec.exchange_rate;
17252     g_cust_inv_rec.territory_id :=  l_trx_rec.territory_id;
17253     g_cust_inv_rec.invoice_currency_code :=  l_trx_rec.invoice_currency_code;
17254     g_cust_inv_rec.initial_customer_trx_id :=  l_trx_rec.initial_customer_trx_id;
17255     g_cust_inv_rec.agreement_id :=  l_trx_rec.agreement_id;
17256     g_cust_inv_rec.end_date_commitment :=  l_trx_rec.end_date_commitment;
17257     g_cust_inv_rec.start_date_commitment :=  l_trx_rec.start_date_commitment;
17258     g_cust_inv_rec.last_printed_sequence_num :=  l_trx_rec.last_printed_sequence_num;
17259     g_cust_inv_rec.attribute_category :=  l_trx_rec.attribute_category;
17260     g_cust_inv_rec.orig_system_batch_name :=  l_trx_rec.orig_system_batch_name;
17261     g_cust_inv_rec.customer_trx_id :=  l_trx_rec.customer_trx_id;
17262     g_cust_inv_rec.trx_number :=  l_trx_rec.trx_number;
17263     g_cust_inv_rec.cust_trx_type_id :=  l_trx_rec.cust_trx_type_id;
17264     g_cust_inv_rec.trx_date :=  l_trx_rec.trx_date;
17265     g_cust_inv_rec.set_of_books_id :=  l_trx_rec.set_of_books_id;
17266     g_cust_inv_rec.bill_to_contact_id :=  l_trx_rec.bill_to_contact_id;
17267     g_cust_inv_rec.batch_id :=  l_trx_rec.batch_id;
17268     g_cust_inv_rec.batch_source_id :=  l_trx_rec.batch_source_id;
17269     g_cust_inv_rec.reason_code :=  l_trx_rec.reason_code;
17270     g_cust_inv_rec.sold_to_customer_id :=  l_trx_rec.sold_to_customer_id;
17271     g_cust_inv_rec.sold_to_contact_id :=  l_trx_rec.sold_to_contact_id;
17272     g_cust_inv_rec.sold_to_site_use_id :=  l_trx_rec.sold_to_site_use_id;
17273     g_cust_inv_rec.bill_to_customer_id :=  l_trx_rec.bill_to_customer_id;
17274     g_cust_inv_rec.bill_to_site_use_id :=  l_trx_rec.bill_to_site_use_id;
17275     g_cust_inv_rec.ship_to_customer_id :=  l_trx_rec.ship_to_customer_id;
17276     g_cust_inv_rec.ship_to_contact_id :=  l_trx_rec.ship_to_contact_id;
17277     g_cust_inv_rec.ship_to_site_use_id :=  l_trx_rec.ship_to_site_use_id;
17278     g_cust_inv_rec.shipment_id :=  l_trx_rec.shipment_id;
17279     g_cust_inv_rec.remit_to_address_id :=  l_trx_rec.remit_to_address_id;
17280     g_cust_inv_rec.term_id :=  l_trx_rec.term_id;
17281     g_cust_inv_rec.term_due_date :=  l_trx_rec.term_due_date;
17282     g_cust_inv_rec.previous_customer_trx_id :=  l_trx_rec.previous_customer_trx_id;
17283     g_cust_inv_rec.primary_salesrep_id :=  l_trx_rec.primary_salesrep_id;
17284     g_cust_inv_rec.printing_original_date :=  l_trx_rec.printing_original_date;
17285     g_cust_inv_rec.printing_last_printed :=  l_trx_rec.printing_last_printed;
17286     g_cust_inv_rec.payment_server_order_num :=  l_trx_rec.payment_server_order_num;
17287     g_cust_inv_rec.approval_code :=  l_trx_rec.approval_code;
17288     g_cust_inv_rec.address_verification_code :=  l_trx_rec.address_verification_code;
17289     g_cust_inv_rec.old_trx_number :=  l_trx_rec.old_trx_number;
17290     g_cust_inv_rec.br_amount :=  l_trx_rec.br_amount;
17291     g_cust_inv_rec.br_unpaid_flag :=  l_trx_rec.br_unpaid_flag;
17292     g_cust_inv_rec.br_on_hold_flag :=  l_trx_rec.br_on_hold_flag;
17293     g_cust_inv_rec.drawee_id :=  l_trx_rec.drawee_id;
17294     g_cust_inv_rec.drawee_contact_id :=  l_trx_rec.drawee_contact_id;
17295     g_cust_inv_rec.drawee_site_use_id :=  l_trx_rec.drawee_site_use_id;
17296   ELSE
17297     RAISE next_app;
17298   END IF;
17299 
17300   IF cu_trx%ISOPEN THEN
17301     CLOSE cu_trx;
17302   END IF;
17303 
17304   IF p_inv_cm = 'C' THEN
17305      convert_ra_inv_to_cm
17306      ( p_inv_ra_rec     => p_app_rec,
17307        p_cm_trx_id      => g_cust_inv_rec.customer_trx_id,
17308        x_cm_ra_rec      => l_app_rec,
17309        p_mode           => 'BATCH',
17310        p_gt_id          => p_gt_id);
17311   ELSE
17312      l_app_rec := p_app_rec;
17313   END IF;
17314 
17315   conv_acctd_amt_upg(p_pay_adj         => 'APP',
17316                  p_adj_rec         => l_adj_rec,
17317                  p_app_rec         => l_app_rec,
17318                  p_ae_sys_rec      => p_ae_sys_rec);
17319 
17320   IF g_line_ed <> 0 OR
17321      g_acctd_line_ed <> 0 OR
17322      g_chrg_ed <> 0 OR
17323      g_acctd_chrg_ed <> 0 OR
17324      g_frt_ed <> 0 OR
17325      g_acctd_frt_ed <> 0 OR
17326      g_tax_ed <> 0 OR
17327      g_acctd_tax_ed <> 0
17328   THEN
17329      g_ed_req := 'Y';
17330   ELSE
17331      g_ed_req := 'N';
17332   END IF;
17333 
17334 
17335   IF g_line_uned <> 0 OR
17336      g_acctd_line_uned <> 0 OR
17337      g_chrg_uned <> 0 OR
17338      g_acctd_chrg_uned <> 0 OR
17339      g_frt_uned <> 0 OR
17340      g_acctd_frt_uned <> 0 OR
17341      g_tax_uned <> 0 OR
17342      g_acctd_tax_uned <> 0
17343   THEN
17344      g_uned_req := 'Y';
17345   ELSE
17346      g_uned_req := 'N';
17347   END IF;
17348 
17349 IF p_cash_mfar = 'CASH' THEN
17350 
17351 IF PG_DEBUG = 'Y' THEN
17352 localdebug('p_gt_id:'||p_gt_id);
17353 END IF;
17354 
17355   UPDATE RA_AR_GT SET
17356      tl_alloc_amt       = DECODE(account_class,'REV'     ,g_line_applied,
17357                                  'INVOICE' ,g_line_applied,0)
17358    , tl_alloc_acctd_amt = DECODE(account_class,'REV'     ,g_acctd_line_applied,
17359                                  'INVOICE' ,g_acctd_line_applied,0)
17360    , tl_chrg_alloc_amt  = DECODE(account_class,'CHARGES' ,g_chrg_applied,
17361                                  'INVOICE' ,g_chrg_applied,0)
17362    , tl_chrg_alloc_acctd_amt = DECODE(account_class,'CHARGES' ,g_acctd_chrg_applied,
17363                                      'INVOICE' ,g_acctd_chrg_applied,0)
17364    , tl_frt_alloc_amt   = DECODE(account_class,'FREIGHT' ,g_frt_applied,
17365                                 'INVOICE' ,g_frt_applied,0)
17366    , tl_frt_alloc_acctd_amt = DECODE(account_class,'FREIGHT' ,g_acctd_frt_applied,
17367                                      'INVOICE' ,g_acctd_frt_applied,0)
17368    , tl_tax_alloc_amt   = DECODE(account_class,'TAX'     ,g_tax_applied,
17369                                 'INVOICE' ,g_tax_applied,0)
17370    , tl_tax_alloc_acctd_amt = DECODE(account_class,'TAX'     ,g_acctd_tax_applied,
17371                                     'INVOICE' ,g_acctd_tax_applied,0)
17372      --
17373    , tl_ed_alloc_amt    = DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_line_ed,0),0)
17374    , tl_ed_alloc_acctd_amt  = DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_acctd_line_ed,0),0)
17375    , tl_ed_chrg_alloc_amt   = DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_chrg_ed,0),0)
17376    , tl_ed_chrg_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_acctd_chrg_ed,0),0)
17377    , tl_ed_frt_alloc_amt    = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_frt_ed,0),0)
17378    , tl_ed_frt_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_acctd_frt_ed,0),0)
17379    , tl_ed_tax_alloc_amt    = DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_tax_ed,0),0)
17380    , tl_ed_tax_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_acctd_tax_ed,0),0)
17381      --
17382    , tl_uned_alloc_amt      = DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_line_uned,0),0)
17383    , tl_uned_alloc_acctd_amt= DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_acctd_line_uned,0),0)
17384    , tl_uned_chrg_alloc_amt = DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_chrg_uned,0),0)
17385    , tl_uned_chrg_alloc_acctd_amt= DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_acctd_chrg_uned,0),0)
17386    , tl_uned_frt_alloc_amt  = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_frt_uned,0),0)
17387    , tl_uned_frt_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_acctd_frt_uned,0),0)
17388    , tl_uned_tax_alloc_amt  = DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_tax_uned,0),0)
17389    , tl_uned_tax_alloc_acctd_amt =DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_acctd_tax_uned,0),0)
17390      --
17391    , gt_id = p_gt_id
17392    , source_id = p_app_rec.receivable_application_id
17393    , source_table ='RA'
17394    , base_currency = p_ae_sys_rec.base_currency
17395   WHERE ref_customer_trx_id = g_cust_inv_rec.customer_trx_id;
17396 
17397   UPDATE ar_base_dist_amts_gt
17398   set  gt_id = p_gt_id
17399    , source_id = p_app_rec.receivable_application_id
17400    , source_table ='RA'
17401   WHERE ref_customer_trx_id = g_cust_inv_rec.customer_trx_id;
17402 
17403 
17404 ELSIF p_cash_mfar = 'MFAR'  THEN
17405 
17406   UPDATE RA_AR_GT SET
17407     tl_alloc_amt         = DECODE(account_class,'REV'     ,g_line_applied,0)
17408    ,tl_alloc_acctd_amt   = DECODE(account_class,'REV'     ,g_acctd_line_applied,0)
17409    ,tl_chrg_alloc_amt    = g_chrg_applied
17410    ,tl_chrg_alloc_acctd_amt = g_acctd_chrg_applied
17411    ,tl_frt_alloc_amt     = DECODE(account_class,'FREIGHT' ,g_frt_applied,0)
17412    ,tl_frt_alloc_acctd_amt = DECODE(account_class,'FREIGHT' ,g_acctd_frt_applied,0)
17413    ,tl_tax_alloc_amt     = DECODE(account_class,'TAX'     ,g_tax_applied,0)
17414    ,tl_tax_alloc_acctd_amt = DECODE(account_class,'TAX'     ,g_acctd_tax_applied,0)
17415      --
17416    ,tl_ed_alloc_amt        = DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_line_ed,0),0)
17417    ,tl_ed_alloc_acctd_amt  = DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_acctd_line_ed,0),0)
17418    ,tl_ed_chrg_alloc_amt   = DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_chrg_ed,0),0)
17419    ,tl_ed_chrg_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_acctd_chrg_ed,0),0)
17420    ,tl_ed_frt_alloc_amt    = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_frt_ed,0),0)
17421    ,tl_ed_frt_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_acctd_frt_ed,0),0)
17422    ,tl_ed_tax_alloc_amt    = DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_tax_ed,0),0)
17423    ,tl_ed_tax_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_acctd_tax_ed,0),0)
17424      --
17425    ,tl_uned_alloc_amt      = DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_line_uned,0),0)
17426    ,tl_uned_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'REV'    ,g_acctd_line_uned,0),0)
17427    ,tl_uned_chrg_alloc_amt  = DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_chrg_uned,0),0)
17428    ,tl_uned_chrg_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'CHARGES',g_acctd_chrg_uned,0),0)
17429    ,tl_uned_frt_alloc_amt   = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_frt_uned,0),0)
17430    ,tl_uned_frt_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'FREIGHT',g_acctd_frt_uned,0),0)
17431    ,tl_uned_tax_alloc_amt   =  DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_tax_uned,0),0)
17432    ,tl_uned_tax_alloc_acctd_amt = DECODE(source_type,NULL,DECODE(account_class,'TAX'    ,g_acctd_tax_uned,0),0)
17433      --
17434    ,gt_id = p_gt_id
17435    ,source_id = p_app_rec.receivable_application_id
17436    ,source_table = 'RA'
17437    ,base_currency = p_ae_sys_rec.base_currency
17438   WHERE ref_customer_trx_id = g_cust_inv_rec.customer_trx_id;
17439 
17440   UPDATE ar_base_dist_amts_gt
17441   set  gt_id = p_gt_id
17442    , source_id = p_app_rec.receivable_application_id
17443    , source_table ='RA'
17444   WHERE ref_customer_trx_id = g_cust_inv_rec.customer_trx_id;
17445 
17446 END IF;
17447 
17448 --  delete from ra_ar;
17449 --  insert into ra_ar select * from ra_ar_gt;
17450 
17451 
17452 --g_se_gt_id := USERENV('SESSIONID');
17453 
17454 update_dist
17455 (p_gt_id             => p_gt_id,
17456  p_customer_trx_id   => g_cust_inv_rec.customer_trx_id,
17457  p_ae_sys_rec        => p_ae_sys_rec);
17458 
17459 create_split_distribution
17460  (p_pay_adj                => 'APP',
17461   p_customer_trx_id        => g_cust_inv_rec.customer_trx_id,
17462   p_gt_id                  => p_gt_id,
17463   p_app_level              => 'RL',
17464   p_ae_sys_rec             => p_ae_sys_rec);
17465 
17466 update_from_gt
17467 (p_from_amt         => p_app_rec.amount_applied_from,
17468  p_from_acctd_amt   => p_app_rec.acctd_amount_applied_from,
17469  p_ae_sys_rec       => p_ae_sys_rec,
17470  p_app_rec          => l_app_rec,
17471  p_gt_id             => p_gt_id);
17472 
17473 
17474 insert_ard_gt(p_gt_id => p_gt_id,
17475               x_exec_status =>l_exec_status );
17476 
17477 --IF l_exec_status = 'Y' THEN
17478 --   UPDATE ar_receivable_applications_all
17479 --     SET upgrade_method = 'R12_11ICASH_POST'
17480 --   WHERE receivable_application_id = p_app_rec.receivable_application_id;
17481 --END IF;
17482 
17483 
17484 END IF;
17485 
17486 EXCEPTION
17487  WHEN next_app THEN NULL;
17488 END;
17489 
17490 -- OLTP legacy transaction with 11I adjustments
17491 
17492 PROCEDURE check_legacy_status
17493   (p_trx_id           IN  NUMBER,
17494    p_adj_id           IN  NUMBER DEFAULT NULL,
17495    p_app_id           IN  NUMBER DEFAULT NULL,
17496    x_11i_adj          OUT NOCOPY  VARCHAR2,
17497    x_mfar_adj         OUT NOCOPY  VARCHAR2,
17498    x_11i_app          OUT NOCOPY  VARCHAR2,
17499    x_mfar_app         OUT NOCOPY  VARCHAR2)
17500 IS
17501   CURSOR c IS
17502   SELECT tt.psa_trx_type_id                                   psa_tt_id,
17503          (SELECT adjustment_id
17504             FROM ar_adjustments adj
17505            WHERE customer_trx_id = trx.customer_trx_id
17506              AND upgrade_method        = '11I'
17507              AND rownum          = 1)                          c11iadj,
17508          (SELECT adjustment_id
17509             FROM ar_adjustments adj
17510            WHERE customer_trx_id = trx.customer_trx_id
17511              AND upgrade_method        = '11IMFAR'
17512              AND rownum          = 1)                           mfadj,
17513          (SELECT app.receivable_application_id
17514             FROM ar_receivable_applications app
17515            WHERE app.applied_customer_trx_id = trx.customer_trx_id
17516              AND NVL(app.upgrade_method,'NULL') IN ('11I_MFAR_UPG','NULL')
17517              AND NVL(p_app_id,-9) <> app.receivable_application_id  -- excluded the current app record
17518              AND rownum           = 1)                          app11i,
17519          (SELECT receivable_application_id
17520             FROM ar_receivable_applications app
17521            WHERE app.customer_trx_id = trx.customer_trx_id
17522              AND NVL(app.upgrade_method,'NULL') IN ('11I_MFAR_UPG','NULL')
17523              AND NVL(p_app_id,-9) <> app.receivable_application_id  -- excluded the current app record
17524              AND rownum          = 1)                          cmapp11i
17525     FROM ra_customer_trx            trx,
17526          psa_trx_types_all          tt
17527    WHERE trx.customer_trx_id  = p_trx_id
17528      AND trx.cust_trx_type_id = tt.psa_trx_type_id(+);
17529 
17530   l_record  c%ROWTYPE;
17531 
17532 BEGIN
17533   IF PG_DEBUG = 'Y' THEN
17534   localdebug('arp_det_dist_pkg.check_legacy_status()+');
17535   END IF;
17536 
17537   OPEN c;
17538   FETCH c INTO l_record;
17539   IF c%NOTFOUND THEN
17540      x_11i_adj    := 'N';
17541      x_mfar_adj   := 'N';
17542      x_11i_app    := 'N';
17543      x_mfar_app   := 'N';
17544   ELSE
17545      -- c11iadj and mfadj can never be 'Y' at the same time
17546      IF  l_record.c11iadj IS NOT NULL THEN
17547        x_11i_adj  := 'Y';
17548      ELSE
17549        x_11i_adj  := 'N';
17550      END IF;
17551      IF  l_record.mfadj IS NOT NULL THEN
17552        x_mfar_adj := 'Y';
17553      ELSE
17554        x_mfar_adj := 'N';
17555      END IF;
17556 
17557      IF l_record.app11i IS NOT NULL OR  l_record.cmapp11i IS NOT NULL  THEN
17558         -- application does exist
17559         IF l_record.psa_tt_id IS NOT NULL THEN
17560             -- the app are mfar in 11i
17561             x_11i_app   := 'N';
17562             x_mfar_app  := 'Y';
17563         ELSE
17564             -- the app are accrual in 11i
17565             x_11i_app   := 'Y';
17566             x_mfar_app  := 'N';
17567         END IF;
17568      ELSE
17569         -- no application on this trx
17570         x_11i_app   := 'N';
17571         x_mfar_app  := 'N';
17572      END IF;
17573   END IF;
17574   CLOSE c;
17575   IF PG_DEBUG = 'Y' THEN
17576   localdebug('   11i adj existence     :'||x_11i_adj);
17577   localdebug('   11i mfar adj existence:'||x_mfar_adj);
17578   localdebug('   11i app existence     :'||x_11i_app);
17579   localdebug('   11i mfar app existence:'||x_mfar_app);
17580   localdebug('arp_det_dist_pkg.check_legacy_status()-');
17581   END IF;
17582 EXCEPTION
17583   WHEN OTHERS THEN
17584     IF PG_DEBUG = 'Y' THEN
17585     localdebug(' EXCEPTION OTHERS  check_legacy_status   :'||SQLERRM);
17586     END IF;
17587 END check_legacy_status;
17588 
17589 
17590 
17591 
17592 PROCEDURE check_lazy_apply_req
17593   (p_trx_id           IN  NUMBER,
17594    x_out_res          OUT NOCOPY  VARCHAR2)
17595 IS
17596   CURSOR c11I IS
17597   SELECT 'Y'
17598     FROM ar_adjustments adj
17599    WHERE adj.customer_trx_id = p_trx_id
17600      AND adj.status          = 'A'
17601      AND adj.postable        = 'Y'
17602      AND adj.upgrade_method   IN ('11I','11IMFAR') ;
17603 
17604 BEGIN
17605   IF PG_DEBUG = 'Y' THEN
17606   localdebug('arp_det_dist_pkg.check_lazy_apply_req()+');
17607   END IF;
17608   OPEN c11I;
17609   FETCH c11I INTO x_out_res;
17610   IF c11I%NOTFOUND THEN
17611      x_out_res := 'N';
17612   END IF;
17613   CLOSE c11I;
17614   IF PG_DEBUG = 'Y' THEN
17615   localdebug('  x_out_res : '|| x_out_res);
17616   localdebug('arp_det_dist_pkg.check_lazy_apply_req()-');
17617   END IF;
17618 END;
17619 
17620 
17621 
17622 PROCEDURE check_mf_trx
17623 ( p_cust_trx_type_id  IN NUMBER,
17624   x_out_res           OUT NOCOPY VARCHAR2)
17625 IS
17626 CURSOR c1 IS
17627 SELECT 'Y'
17628   FROM psa_trx_types_all
17629  WHERE psa_trx_type_id  = p_cust_trx_type_id;
17630 is_mf_trx   VARCHAR2(1);
17631 BEGIN
17632   OPEN c1;
17633   FETCH c1 INTO  is_mf_trx;
17634   IF c1%NOTFOUND THEN
17635      is_mf_trx := 'N';
17636   ELSE
17637      is_mf_trx := 'Y';
17638   END IF;
17639   CLOSE c1;
17640   x_out_res := is_mf_trx;
17641 END;
17642 
17643 
17644 PROCEDURE online_lazy_apply
17645   (p_customer_trx     IN ra_customer_trx%ROWTYPE,
17646    p_app_rec          IN ar_receivable_applications%ROWTYPE,
17647    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
17648    p_gt_id            IN NUMBER,
17649    --Add the p_inv_cm flag
17650    p_inv_cm           IN VARCHAR2 DEFAULT 'I')
17651 IS
17652   l_adj_rec     ar_adjustments%ROWTYPE;
17653   l_app_rec     ar_receivable_applications%ROWTYPE;
17654 BEGIN
17655   IF PG_DEBUG = 'Y' THEN
17656   localdebug('arp_det_dist_pkg.Online_lazy_apply()+');
17657   localdebug('  p_app_rec.applied_customer_trx_id : '||p_app_rec.applied_customer_trx_id);
17658   localdebug('  p_gt_id                          : '||p_gt_id);
17659   END IF;
17660 
17661   ar_upgrade_cash_accrual.get_direct_inv_dist
17662       (p_mode   => 'OLTP',
17663        p_trx_id => p_app_rec.applied_customer_trx_id,
17664        p_gt_id  => p_gt_id);
17665 
17666   ar_upgrade_cash_accrual.get_direct_adj_dist
17667       (p_mode   => 'OLTP',
17668        p_trx_id => p_app_rec.applied_customer_trx_id,
17669        p_gt_id  => p_gt_id);
17670 
17671   ar_upgrade_cash_accrual.get_direct_inv_adj_dist
17672       (p_mode   => 'OLTP',
17673        p_trx_id => p_app_rec.applied_customer_trx_id,
17674        p_gt_id  => p_gt_id);
17675 
17676   ar_upgrade_cash_accrual.update_base
17677       (p_gt_id  => p_gt_id);
17678 
17679 --  g_se_gt_id :=  USERENV('SESSIONID');
17680 
17681   g_cust_inv_rec := p_customer_trx;
17682 
17683   IF p_inv_cm = 'C' THEN
17684     convert_ra_inv_to_cm
17685       (p_inv_ra_rec    => p_app_rec ,
17686        p_cm_trx_id     => g_cust_inv_rec.customer_trx_id,
17687        x_cm_ra_rec     => l_app_rec,
17688 	   p_mode          => 'OLTP',
17689 	   p_gt_id         => p_gt_id);
17690   ELSE
17691     l_app_rec  := p_app_rec;
17692   END IF;
17693 
17694   conv_acctd_amt(p_pay_adj         => 'APP',
17695                  p_adj_rec         => l_adj_rec,
17696                  p_app_rec         => l_app_rec,
17697                  p_ae_sys_rec      => p_ae_sys_rec);
17698 
17699 
17700   IF g_line_ed <> 0 OR
17701      g_acctd_line_ed <> 0 OR
17702      g_chrg_ed <> 0 OR
17703      g_acctd_chrg_ed <> 0 OR
17704      g_frt_ed <> 0 OR
17705      g_acctd_frt_ed <> 0 OR
17706      g_tax_ed <> 0 OR
17707      g_acctd_tax_ed <> 0
17708   THEN
17709      g_ed_req := 'Y';
17710   ELSE
17711      g_ed_req := 'N';
17712   END IF;
17713 
17714 
17715   IF g_line_uned <> 0 OR
17716      g_acctd_line_uned <> 0 OR
17717      g_chrg_uned <> 0 OR
17718      g_acctd_chrg_uned <> 0 OR
17719      g_frt_uned <> 0 OR
17720      g_acctd_frt_uned <> 0 OR
17721      g_tax_uned <> 0 OR
17722      g_acctd_tax_uned <> 0
17723   THEN
17724      g_uned_req := 'Y';
17725   ELSE
17726      g_uned_req := 'N';
17727   END IF;
17728 
17729 
17730   UPDATE RA_AR_GT a SET
17731   (  tl_alloc_amt          ,
17732      tl_alloc_acctd_amt    ,
17733      tl_chrg_alloc_amt     ,
17734      tl_chrg_alloc_acctd_amt,
17735      tl_frt_alloc_amt     ,
17736      tl_frt_alloc_acctd_amt,
17737      tl_tax_alloc_amt     ,
17738      tl_tax_alloc_acctd_amt,
17739      --
17740      tl_ed_alloc_amt          ,
17741      tl_ed_alloc_acctd_amt    ,
17742      tl_ed_chrg_alloc_amt     ,
17743      tl_ed_chrg_alloc_acctd_amt,
17744      tl_ed_frt_alloc_amt     ,
17745      tl_ed_frt_alloc_acctd_amt,
17746      tl_ed_tax_alloc_amt     ,
17747      tl_ed_tax_alloc_acctd_amt,
17748      --
17749      tl_uned_alloc_amt          ,
17750      tl_uned_alloc_acctd_amt    ,
17751      tl_uned_chrg_alloc_amt     ,
17752      tl_uned_chrg_alloc_acctd_amt,
17753      tl_uned_frt_alloc_amt     ,
17754      tl_uned_frt_alloc_acctd_amt,
17755      tl_uned_tax_alloc_amt     ,
17756      tl_uned_tax_alloc_acctd_amt,
17757      --
17758      gt_id,
17759 --     se_gt_id,
17760      source_id,
17761      source_table,
17762      base_currency) =
17763   (SELECT /*+INDEX (b ra_ar_n1)*/
17764      DECODE(account_class,'REV'     ,g_line_applied,
17765 	                      'INVOICE' ,g_line_applied,0)          -- tl_alloc_amt
17766 ,    DECODE(account_class,'REV'     ,g_acctd_line_applied,
17767                           'INVOICE' ,g_acctd_line_applied,0)    -- tl_alloc_acctd_amt
17768 ,    DECODE(account_class,'CHARGES' ,g_chrg_applied,
17769                           'INVOICE' ,g_chrg_applied,0)          -- tl_chrg_alloc_amt
17770 ,    DECODE(account_class,'CHARGES' ,g_acctd_chrg_applied,
17771                           'INVOICE' ,g_acctd_chrg_applied,0)    -- tl_chrg_alloc_acctd_amt
17772 ,    DECODE(account_class,'FREIGHT' ,g_frt_applied,
17773                           'INVOICE' ,g_frt_applied,0)           -- tl_frt_alloc_amt
17774 ,    DECODE(account_class,'FREIGHT' ,g_acctd_frt_applied,
17775                           'INVOICE' ,g_acctd_frt_applied,0)     -- tl_frt_alloc_acctd_amt
17776 ,    DECODE(account_class,'TAX'     ,g_tax_applied,
17777                           'INVOICE' ,g_tax_applied,0)           -- tl_tax_alloc_amt
17778 ,    DECODE(account_class,'TAX'     ,g_acctd_tax_applied,
17779                           'INVOICE' ,g_acctd_tax_applied,0)     -- tl_tax_alloc_acctd_amt
17780       --
17781 ,    DECODE(account_class,'REV'    ,g_line_ed,0)          -- tl_ed_alloc_amt
17782 ,    DECODE(account_class,'REV'    ,g_acctd_line_ed,0)    -- tl_ed_alloc_acctd_amt
17783 ,    DECODE(account_class,'CHARGES',g_chrg_ed,0)          -- tl_ed_chrg_alloc_amt
17784 ,    DECODE(account_class,'CHARGES',g_acctd_chrg_ed,0)    -- tl_ed_chrg_alloc_acctd_amt
17785 ,    DECODE(account_class,'FREIGHT',g_frt_ed,0)           -- tl_ed_frt_alloc_amt
17786 ,    DECODE(account_class,'FREIGHT',g_acctd_frt_ed,0)     -- tl_ed_frt_alloc_acctd_amt
17787 ,    DECODE(account_class,'TAX'    ,g_tax_ed,0)           -- tl_ed_tax_alloc_amt
17788 ,    DECODE(account_class,'TAX'    ,g_acctd_tax_ed,0)     -- tl_ed_tax_alloc_acctd_amt
17789 
17790 ,    DECODE(account_class,'REV'    ,g_line_uned,0)          -- tl_uned_alloc_amt
17791 ,    DECODE(account_class,'REV'    ,g_acctd_line_uned,0)    -- tl_uned_alloc_acctd_amt
17792 ,    DECODE(account_class,'CHARGES',g_chrg_uned,0)          -- tl_uned_chrg_alloc_amt
17793 ,    DECODE(account_class,'CHARGES',g_acctd_chrg_uned,0)    -- tl_uned_chrg_alloc_acctd_amt
17794 ,    DECODE(account_class,'FREIGHT',g_frt_uned,0)           -- tl_uned_frt_alloc_amt
17795 ,    DECODE(account_class,'FREIGHT',g_acctd_frt_uned,0)     -- tl_uned_frt_alloc_acctd_amt
17796 ,    DECODE(account_class,'TAX'    ,g_tax_uned,0)           -- tl_uned_tax_alloc_amt
17797 ,    DECODE(account_class,'TAX'    ,g_acctd_tax_uned,0)     -- tl_uned_tax_alloc_acctd_amt
17798 ,    p_gt_id
17799 --,    USERENV('SESSIONID')
17800 ,    p_app_rec.receivable_application_id
17801 ,    'RA'
17802 ,    p_ae_sys_rec.base_currency
17803    FROM ra_ar_gt b
17804   WHERE a.rowid    = b.rowid
17805     AND a.gt_id    = p_gt_id);
17806 
17807 --  delete from ra_ar;
17808 --  insert into ra_ar select * from ra_ar_gt;
17809 
17810   update_dist
17811       (p_gt_id           => p_gt_id,
17812        p_customer_trx_id => l_app_rec.applied_customer_trx_id,
17813        p_ae_sys_rec      => p_ae_sys_rec);
17814 
17815   create_split_distribution
17816    (p_pay_adj            => 'APP',
17817     p_customer_trx_id    => l_app_rec.applied_customer_trx_id,
17818     p_gt_id              => p_gt_id,
17819     p_app_level          => 'RL',
17820     p_ae_sys_rec         => p_ae_sys_rec);
17821 
17822 --{ For R12_11ICASH maintain from_acctd_amt
17823   update_from_gt
17824   (p_from_amt            => l_app_rec.AMOUNT_APPLIED_FROM,
17825    p_from_acctd_amt      => l_app_rec.ACCTD_AMOUNT_APPLIED_FROM,
17826    p_ae_sys_rec          => p_ae_sys_rec,
17827    p_app_rec             => p_app_rec);
17828 --}
17829 
17830 --delete from hy_line_application_detail;
17831 --insert into hy_line_application_detail select * from AR_LINE_APP_DETAIL_GT;
17832 
17833    IF g_mode_process = 'R12_MERGE' THEN
17834        UPDATE ar_receivable_applications_all
17835        SET upgrade_method = 'R12_MERGE'
17836        WHERE receivable_application_id = l_app_rec.receivable_application_id;
17837    ELSE
17838        UPDATE ar_receivable_applications_all
17839        SET upgrade_method = 'R12_11ICASH'
17840        WHERE receivable_application_id = l_app_rec.receivable_application_id;
17841    END IF;
17842 
17843 IF PG_DEBUG = 'Y' THEN
17844   localdebug('arp_det_dist_pkg.Online_lazy_apply()-');
17845 END IF;
17846 EXCEPTION
17847   WHEN OTHERS THEN
17848     localdebug('OTHERS : Online_lazy_apply '||SQLERRM);
17849     RAISE;
17850 END;
17851 --}
17852 
17853 
17854 
17855 /*-----------------------------------------------------------------------------+
17856  | Procedure   get_latest_amount_remaining                                     |
17857  +-----------------------------------------------------------------------------+
17858  | Parameter :                                                                 |
17859  |   p_customer_trx_id The invoice ID                                          |
17860  |   p_app_level      Application Level (TRANSACTION/GROUP/LINE)               |
17861  |   p_group_id       Group_id req when Application level is GROUP             |
17862  |   p_ctl_id         customer_trx_line_id required when the application level |
17863  |                    is LINE                                                  |
17864  |   OUT                                                                       |
17865  |  x_line_rem      The remaining revenue amount for the level                 |
17866  |  x_tax_rem       The remaining tax amount for the level                     |
17867  |  x_freight_rem   The remaining freight amount for the level TRANSACTION only|
17868  |  x_charges_rem   The remaining charges amount for the level TRANSACTION only|
17869  +-----------------------------------------------------------------------------+
17870  | Action    :                                                                 |
17871  |  Read the remaining amount on ra_customer_trx_lines_gt                      |
17872  +-----------------------------------------------------------------------------*/
17873 PROCEDURE get_latest_amount_remaining
17874 (p_customer_trx_id  IN NUMBER,
17875  p_app_level        IN VARCHAR2 DEFAULT 'TRANSACTION',
17876  p_source_data_key1 IN VARCHAR2 DEFAULT NULL,
17877  p_source_data_key2 IN VARCHAR2 DEFAULT NULL,
17878  p_source_data_key3 IN VARCHAR2 DEFAULT NULL,
17879  p_source_data_key4 IN VARCHAR2 DEFAULT NULL,
17880  p_source_data_key5 IN VARCHAR2 DEFAULT NULL,
17881  p_ctl_id           IN NUMBER   DEFAULT NULL,
17882  x_line_rem        OUT NOCOPY  NUMBER,
17883  x_tax_rem         OUT NOCOPY  NUMBER,
17884  x_freight_rem     OUT NOCOPY  NUMBER,
17885  x_charges_rem     OUT NOCOPY  NUMBER,
17886  x_return_status   OUT NOCOPY  VARCHAR2,
17887  x_msg_data        OUT NOCOPY  VARCHAR2,
17888  x_msg_count       OUT NOCOPY  NUMBER)
17889 IS
17890  CURSOR c_trx IS
17891  SELECT /*+INDEX (ra_customer_trx_lines_gt ra_customer_trx_lines_gt_n1)*/
17892         NVL(SUM(DECODE(line_type,'LINE',NVL(AMOUNT_DUE_REMAINING,0))),0)      line_rem,
17893         NVL(SUM(DECODE(line_type,'TAX' ,NVL(AMOUNT_DUE_REMAINING,0))),0)      tax_rem,
17894         NVL(SUM(DECODE(line_type,'LINE',NVL(CHRG_AMOUNT_REMAINING,0))),0) +
17895 	  NVL(SUM(DECODE(line_type,'CHARGES',NVL(AMOUNT_DUE_REMAINING,0))),0) chrg_rem,
17896         NVL(SUM(DECODE(line_type,'LINE',NVL(FRT_ADJ_REMAINING,0))),0) +
17897           NVL(SUM(DECODE(line_type,'FREIGHT',NVL(AMOUNT_DUE_REMAINING,0))),0) frt_rem
17898    FROM ra_customer_trx_lines_gt
17899   WHERE CUSTOMER_TRX_ID = p_customer_trx_id;
17900 
17901  CURSOR c_line IS
17902  SELECT /*+INDEX (ra_customer_trx_lines_gt ra_customer_trx_lines_gt_n1)*/
17903         NVL(SUM(DECODE(line_type,'LINE',NVL(AMOUNT_DUE_REMAINING,0))),0)      line_rem,
17904         NVL(SUM(DECODE(line_type,'TAX' ,NVL(AMOUNT_DUE_REMAINING,0))),0)      tax_rem,
17905         NVL(SUM(DECODE(line_type,'LINE',NVL(CHRG_AMOUNT_REMAINING,0))),0) +
17906           NVL(SUM(DECODE(line_type,'CHARGES',NVL(AMOUNT_DUE_REMAINING,0))),0) chrg_rem,
17907         NVL(SUM(DECODE(line_type,'LINE',NVL(FRT_ADJ_REMAINING,0))),0) +
17908           NVL(SUM(DECODE(line_type,'FREIGHT',NVL(AMOUNT_DUE_REMAINING,0))),0) frt_rem
17909    FROM ra_customer_trx_lines_gt
17910   WHERE CUSTOMER_TRX_ID = p_customer_trx_id
17911     AND DECODE(line_type,'LINE',customer_trx_line_id, LINK_TO_CUST_TRX_LINE_ID) = p_ctl_id;
17912 
17913  CURSOR c_gp IS
17914  SELECT /*+INDEX (ra_customer_trx_lines_gt ra_customer_trx_lines_gt_n1)*/
17915         NVL(SUM(DECODE(line_type,'LINE',NVL(AMOUNT_DUE_REMAINING,0))),0)      line_rem,
17916         NVL(SUM(DECODE(line_type,'TAX' ,NVL(AMOUNT_DUE_REMAINING,0))),0)      tax_rem,
17917         NVL(SUM(DECODE(line_type,'LINE',NVL(CHRG_AMOUNT_REMAINING,0))),0) +
17918           NVL(SUM(DECODE(line_type,'CHARGES',NVL(AMOUNT_DUE_REMAINING,0))),0) chrg_rem,
17919         NVL(SUM(DECODE(line_type,'LINE',NVL(FRT_ADJ_REMAINING,0))),0) +
17920           NVL(SUM(DECODE(line_type,'FREIGHT',NVL(AMOUNT_DUE_REMAINING,0))),0) frt_rem
17921    FROM ra_customer_trx_lines_gt
17922   WHERE CUSTOMER_TRX_ID  = p_customer_trx_id
17923     AND source_data_key1 = p_source_data_key1
17924 	AND source_data_key2 = p_source_data_key2
17925 	AND source_data_key3 = p_source_data_key3
17926 	AND source_data_key4 = p_source_data_key4
17927 	AND source_data_key5 = p_source_data_key5;
17928 BEGIN
17929   IF PG_DEBUG = 'Y' THEN
17930   localdebug('arp_det_dist_pkg.get_latest_amount_remaining()+');
17931   localdebug('    p_customer_trx_id :'||p_customer_trx_id);
17932   localdebug('    p_app_level       :'||p_app_level);
17933   localdebug('    p_source_data_key1:'||p_source_data_key1);
17934   localdebug('    p_source_data_key2:'||p_source_data_key2);
17935   localdebug('    p_source_data_key3:'||p_source_data_key3);
17936   localdebug('    p_source_data_key4:'||p_source_data_key4);
17937   localdebug('    p_source_data_key5:'||p_source_data_key5);
17938   localdebug('    p_ctl_id          :'||p_ctl_id);
17939   END IF;
17940   IF     p_app_level = 'TRANSACTION' THEN
17941     OPEN c_trx;
17942     FETCH c_trx INTO x_line_rem, x_tax_rem, x_charges_rem, x_freight_rem;
17943     CLOSE c_trx;
17944   ELSIF  p_app_level = 'GROUP' THEN
17945     OPEN c_gp;
17946     FETCH c_gp INTO x_line_rem, x_tax_rem, x_charges_rem, x_freight_rem;
17947     CLOSE c_gp;
17948   ELSIF  p_app_level = 'LINE' THEN
17949     OPEN c_line;
17950     FETCH c_line INTO x_line_rem, x_tax_rem, x_charges_rem, x_freight_rem;
17951     CLOSE c_line;
17952   END IF;
17953 
17954 
17955   IF PG_DEBUG = 'Y' THEN
17956   localdebug('    x_line_rem     :'||x_line_rem);
17957   localdebug('    x_tax_rem      :'||x_tax_rem);
17958   localdebug('    x_freight_rem  :'||x_freight_rem);
17959   localdebug('    x_charges_rem  :'||x_charges_rem);
17960   localdebug('arp_det_dist_pkg.get_latest_amount_remaining()-');
17961   END IF;
17962 EXCEPTION
17963   WHEN NO_DATA_FOUND THEN
17964      IF PG_DEBUG = 'Y' THEN
17965      localdebug('EXCEPTION NO_DATA_FOUND get_latest_amount_remaining:'||SQLERRM);
17966      END IF;
17967      FND_MESSAGE.SET_NAME( 'AR', 'AR_CUST_API_ERROR' );
17968      FND_MESSAGE.SET_TOKEN( 'TEXT', 'get_latest_amount_remaining NO_DATA_FOUND
17969  p_customer_trx_id :'||p_customer_trx_id||'
17970  p_app_level       :'||p_app_level||'
17971  p_ctl_id          :'||p_ctl_id||'
17972  p_source_data_key1:'||p_source_data_key1||'
17973  p_source_data_key2:'||p_source_data_key2||'
17974  p_source_data_key3:'||p_source_data_key3||'
17975  p_source_data_key4:'||p_source_data_key4||'
17976  p_source_data_key5:'||p_source_data_key5);
17977      FND_MSG_PUB.ADD;
17978      FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
17979                                p_count => x_msg_count,
17980                                p_data  => x_msg_data);
17981      x_return_status := FND_API.G_RET_STS_SUCCESS;
17982   WHEN OTHERS THEN
17983      IF PG_DEBUG = 'Y' THEN
17984      localdebug('EXCEPTION OTHERS get_latest_amount_remaining:'||SQLERRM);
17985      END IF;
17986      FND_MESSAGE.SET_NAME( 'AR', 'AR_CUST_API_ERROR' );
17987      FND_MESSAGE.SET_TOKEN( 'TEXT', 'arp_process_det_pkg.get_latest_amount_remaining-'||SQLERRM );
17988      FND_MSG_PUB.ADD;
17989      FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
17990                                p_count => x_msg_count,
17991                                p_data  => x_msg_data);
17992      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
17993 
17994 END get_latest_amount_remaining;
17995 
17996 
17997 
17998 PROCEDURE convert_ra_inv_to_cm
17999 ( p_inv_ra_rec     IN         ar_receivable_applications%ROWTYPE,
18000   p_cm_trx_id      IN         NUMBER,
18001   x_cm_ra_rec      IN OUT NOCOPY ar_receivable_applications%ROWTYPE,
18002   p_mode           IN         VARCHAR2 DEFAULT 'OLTP',
18003   p_gt_id          IN         VARCHAR2 DEFAULT NULL,
18004   p_from_llca      IN         VARCHAR2 DEFAULT 'N',
18005   p_upg_cm        IN         VARCHAR2 DEFAULT 'N')
18006 IS
18007 CURSOR cu_trx_balance(p_customer_trx_id IN NUMBER)
18008 IS
18009 SELECT a.Line_balance                                  line_balance,
18010        a.Tax_Balance                                   tax_balance,
18011        b.Frt_adj + b.Frt_ed + b.Frt_uned + b.Frt_app   freight_balance,
18012        d.chrg_adj + d.chrg_app                         charges_balance,
18013        c.invoice_currency_code                         invoice_currency_code
18014   FROM
18015       (SELECT SUM(DECODE(line_type,'LINE',amount_due_remaining,0))  Line_Balance
18016              ,SUM(DECODE(line_type,'TAX',amount_due_remaining,0))   Tax_Balance
18017              ,customer_trx_id
18018         FROM ra_customer_trx_lines
18019        GROUP BY customer_trx_id)      a,
18020       (SELECT SUM(DECODE(line_type,'LINE', frt_adj_remaining, 0))      Frt_adj,
18021               SUM(DECODE(line_type,'LINE', frt_ed_amount, 0))          Frt_ed,
18022               SUM(DECODE(line_type,'LINE', frt_uned_amount, 0))        Frt_uned,
18023               SUM(DECODE(line_type,'FREIGHT',amount_due_remaining, 0)) Frt_app,
18024               customer_trx_id
18025          FROM ra_customer_trx_lines
18026         GROUP BY customer_trx_id)     b,
18027       (SELECT SUM(DECODE(line_type,'LINE', chrg_amount_remaining, 0))  chrg_adj,
18028               SUM(DECODE(line_type,'CHARGES',amount_due_remaining, 0)) chrg_app,
18029               customer_trx_id
18030          FROM ra_customer_trx_lines
18031         GROUP BY customer_trx_id)     d,
18032        ar_payment_schedules          c
18033  WHERE b.customer_trx_id = a.customer_trx_id
18034    AND a.customer_trx_id = c.customer_trx_id
18035    AND a.customer_trx_id = d.customer_trx_id
18036    AND c.customer_trx_id = p_customer_trx_id;
18037 
18038 
18039 CURSOR cu_cm_balance(p_customer_trx_id IN NUMBER, p_gt_id IN VARCHAR2)
18040 IS
18041 SELECT /*+INDEX (a ra_ar_n1) INDEX(ar_base_dist_amts_gt b)*/
18042        b.base_dist_amt                                 line_balance,
18043        b.base_dist_tax_amt                             tax_balance,
18044        b.base_dist_frt_amt                             freight_balance,
18045        b.base_dist_chrg_amt                            charges_balance,
18046        a.to_currency                                   invoice_currency_code
18047   FROM ra_ar_gt a,ar_base_dist_amts_gt b
18048  WHERE a.ref_customer_trx_id = p_customer_trx_id
18049      AND b.gt_id    = a.gt_id
18050      AND b.gp_level = 'D'
18051      AND a.ref_customer_trx_id = b.ref_customer_trx_id
18052      AND a.ref_customer_trx_line_id = b.ref_customer_trx_line_id;
18053 
18054 
18055 CURSOR cu_trx_balance_nlb(p_customer_trx_id IN NUMBER)
18056 IS
18057 SELECT SUM(DECODE(a.line_type, 'LINE', sum_orig,0))       line_balance,
18058        SUM(DECODE(a.line_type, 'TAX' , sum_orig,0))       tax_balance,
18059        SUM(DECODE(a.line_type, 'FREIGHT' , sum_orig,0))   freight_balance,
18060        SUM(DECODE(a.line_type, 'CHARGES' , sum_orig,0))   charges_balance,
18061        a.invoice_currency_code                       invoice_currency_code
18062 FROM
18063  (SELECT SUM(ctlgd.AMOUNT)           sum_orig,
18064          SUM(ctlgd.ACCTD_AMOUNT)     sum_acctd_orig,
18065          ctl.line_type               line_type,
18066          ctx.invoice_currency_code   invoice_currency_code
18067     FROM ra_customer_trx           ctx,
18068          ra_customer_trx_lines     ctl,
18069          ra_cust_trx_line_gl_dist  ctlgd
18070    WHERE ctx.customer_trx_id      = p_customer_trx_id
18071      AND ctx.customer_trx_id      = ctl.customer_trx_id
18072      AND ctl.customer_trx_line_id = ctlgd.customer_trx_line_id
18073    GROUP BY ctx.invoice_currency_code,
18074             ctl.line_type)   a
18075 GROUP BY a.invoice_currency_code;
18076 
18077 
18078 --  l_rem_record          cu_trx_balance%ROWTYPE;
18079   l_rem_line_balance             NUMBER;
18080   l_rem_tax_balance              NUMBER;
18081   l_rem_freight_balance          NUMBER;
18082   l_rem_charges_balance          NUMBER;
18083   l_rem_invoice_currency_code    VARCHAR2(30);
18084 --
18085 
18086   l_cm_ra_rec           ar_receivable_applications%ROWTYPE;
18087   l_line_applied        NUMBER;
18088   l_tax_applied         NUMBER;
18089   l_freight_applied     NUMBER;
18090   l_charges_applied     NUMBER;
18091   l_base                NUMBER;
18092   l_run_amt             NUMBER;
18093   l_run_total           NUMBER;
18094   l_inv_rec             ra_customer_trx%ROWTYPE;
18095   no_rem_for_trx        EXCEPTION;
18096   no_amount_remaining   EXCEPTION;
18097   no_rem_for_trx_upg    EXCEPTION;
18098 
18099 BEGIN
18100   IF PG_DEBUG = 'Y' THEN
18101   localdebug('arp_det_dist_pkg.convert_ra_inv_to_cm()+');
18102   localdebug('  p_cm_trx_id                           :' || p_cm_trx_id);
18103   localdebug('  p_mode                                :' || p_mode);
18104   localdebug('  p_inv_ra_rec.amount_applied           :' || p_inv_ra_rec.amount_applied);
18105   localdebug('  p_inv_ra_rec.amount_applied_from      :' || p_inv_ra_rec.amount_applied_from);
18106   localdebug('  p_inv_ra_rec.acctd_amount_applied_to  :' || p_inv_ra_rec.acctd_amount_applied_to);
18107   localdebug('  p_inv_ra_rec.acctd_amount_applied_from:' || p_inv_ra_rec.acctd_amount_applied_from);
18108   localdebug('  p_inv_ra_rec.line_applied             :' || p_inv_ra_rec.line_applied);
18109   localdebug('  p_inv_ra_rec.tax_applied              :' || p_inv_ra_rec.tax_applied);
18110   localdebug('  p_inv_ra_rec.freight_applied          :' || p_inv_ra_rec.freight_applied);
18111   localdebug('  p_inv_ra_rec.receivables_charges_applied:' || p_inv_ra_rec.receivables_charges_applied);
18112   localdebug('  p_from_llca                           :' || p_from_llca);
18113   localdebug('  p_gt_id                               :' || p_gt_id);
18114   END IF;
18115 
18116   x_cm_ra_rec   := p_inv_ra_rec;
18117 
18118   l_inv_rec.customer_trx_id := p_cm_trx_id;
18119 
18120 
18121 IF p_mode = 'OLTP' THEN
18122 
18123   arp_det_dist_pkg.set_original_rem_amt
18124 	    (p_customer_trx => l_inv_rec,
18125          p_app_id       => p_inv_ra_rec.receivable_application_id,
18126          --{HYUNLB
18127          p_from_llca    => p_from_llca);
18128          --}
18129 
18130   set_mode_process(p_customer_trx => l_inv_rec);
18131 
18132   --{HYUNLB
18133   IF    ( g_mode_process IN('R12_NLB','R12_MERGE') OR
18134           ( g_mode_process IN('R12_11ICASH') AND p_upg_cm = 'Y' )
18135         ) THEN
18136     IF PG_DEBUG = 'Y' THEN
18137     localdebug('opening cu_trx_balance_nlb');
18138     END IF;
18139 
18140     OPEN cu_trx_balance_nlb(p_cm_trx_id);
18141       FETCH cu_trx_balance_nlb INTO -- l_rem_record;
18142             l_rem_line_balance   ,
18143             l_rem_tax_balance    ,
18144             l_rem_freight_balance,
18145             l_rem_charges_balance,
18146             l_rem_invoice_currency_code;
18147 
18148       IF cu_trx_balance_nlb%NOTFOUND THEN
18149         RAISE no_rem_for_trx;
18150       END IF;
18151     CLOSE cu_trx_balance_nlb;
18152     IF PG_DEBUG = 'Y' THEN
18153     localdebug('closing cu_trx_balance_nlb');
18154     END IF;
18155   --}
18156   ELSIF     g_mode_process IN ('R12','R12_11IMFAR') THEN
18157     IF PG_DEBUG = 'Y' THEN
18158     localdebug('opening cu_trx_balance');
18159     END IF;
18160 
18161     OPEN cu_trx_balance(p_cm_trx_id);
18162       FETCH cu_trx_balance INTO -- l_rem_record;
18163             l_rem_line_balance   ,
18164             l_rem_tax_balance    ,
18165             l_rem_freight_balance,
18166             l_rem_charges_balance,
18167             l_rem_invoice_currency_code;
18168 
18169       IF cu_trx_balance%NOTFOUND THEN
18170         RAISE no_rem_for_trx;
18171       END IF;
18172     CLOSE cu_trx_balance;
18173     IF PG_DEBUG = 'Y' THEN
18174     localdebug('closing cu_trx_balance');
18175     END IF;
18176 
18177   ELSIF  g_mode_process IN ('R12_11ICASH') and p_upg_cm = 'N' THEN
18178 
18179     IF PG_DEBUG = 'Y' THEN
18180     localdebug('opening cu_cm_balance');
18181     END IF;
18182 
18183     OPEN cu_cm_balance(p_cm_trx_id , p_gt_id) ;
18184       FETCH cu_cm_balance INTO -- l_rem_record;
18185             l_rem_line_balance   ,
18186             l_rem_tax_balance    ,
18187             l_rem_freight_balance,
18188             l_rem_charges_balance,
18189             l_rem_invoice_currency_code;
18190 
18191       IF cu_cm_balance%NOTFOUND THEN
18192         RAISE no_rem_for_trx;
18193       END IF;
18194     CLOSE cu_cm_balance;
18195 
18196     IF PG_DEBUG = 'Y' THEN
18197     localdebug('close cu_cm_balance');
18198     END IF;
18199 
18200   END IF;
18201 
18202 ELSIF p_mode = 'BATCH' THEN
18203 
18204     IF PG_DEBUG = 'Y' THEN
18205     localdebug('opening cu_cm_balance for batch mode');
18206     END IF;
18207 
18208     OPEN cu_cm_balance(p_cm_trx_id , p_gt_id) ;
18209       FETCH cu_cm_balance INTO -- l_rem_record;
18210             l_rem_line_balance   ,
18211             l_rem_tax_balance    ,
18212             l_rem_freight_balance,
18213             l_rem_charges_balance,
18214             l_rem_invoice_currency_code;
18215 
18216       IF cu_cm_balance%NOTFOUND THEN
18217         RAISE no_rem_for_trx_upg;
18218       END IF;
18219     CLOSE cu_cm_balance;
18220 
18221     IF PG_DEBUG = 'Y' THEN
18222     localdebug('close cu_cm_balance batch mode');
18223     END IF;
18224 
18225 END IF;
18226 
18227 
18228   x_cm_ra_rec.amount_applied            := p_inv_ra_rec.amount_applied * -1;
18229   x_cm_ra_rec.amount_applied_from       := p_inv_ra_rec.amount_applied_from * -1;
18230   x_cm_ra_rec.acctd_amount_applied_to   := p_inv_ra_rec.acctd_amount_applied_to * -1;
18231   x_cm_ra_rec.acctd_amount_applied_from := p_inv_ra_rec.acctd_amount_applied_from * -1;
18232   --
18233   l_base                                := NVL(l_rem_line_balance,0) +
18234                                            NVL(l_rem_tax_balance,0)  +
18235                                            NVL(l_rem_freight_balance,0) +
18236                                            NVL(l_rem_charges_balance,0);
18237   --
18238   IF PG_DEBUG = 'Y' THEN
18239     localdebug('p_inv_ra_rec.amount_applied              :' || p_inv_ra_rec.amount_applied);
18240     localdebug('p_inv_ra_rec.amount_applied_from         :' || p_inv_ra_rec.amount_applied_from);
18241     localdebug('p_inv_ra_rec.acctd_amount_applied_to     :' || p_inv_ra_rec.acctd_amount_applied_to);
18242     localdebug('p_inv_ra_rec.acctd_amount_applied_from   :' || p_inv_ra_rec.acctd_amount_applied_from);
18243   END IF;
18244 
18245 -- Bug14415571
18246   IF l_base = 0 THEN
18247     l_line_applied := p_inv_ra_rec.line_applied;
18248     l_tax_applied := p_inv_ra_rec.tax_applied;
18249     l_freight_applied := p_inv_ra_rec.freight_applied;
18250     l_charges_applied := p_inv_ra_rec.receivables_charges_applied;
18251 --    RAISE no_amount_remaining;
18252   ELSE
18253   --
18254   --
18255   l_run_amt      := 0;
18256   l_run_total    := 0;
18257 
18258   -- line_applied
18259   IF PG_DEBUG = 'Y' THEN
18260   localdebug('LINE_APPLIED:');
18261   localdebug(' l_run_amt                            :' || l_run_amt);
18262   localdebug(' l_run_total                          :' || l_run_total);
18263   localdebug(' l_rem_line_balance                   :' || NVL(l_rem_line_balance,0));
18264   localdebug(' p_inv_ra_rec.amount_applied          :' || NVL(p_inv_ra_rec.amount_applied,0));
18265   localdebug(' l_base                               :' || l_base);
18266   END IF;
18267   l_run_amt      := l_run_amt + NVL(l_rem_line_balance,0);
18268   l_line_applied := CurrRound( l_run_amt * NVL(p_inv_ra_rec.amount_applied,0)
18269                                       / l_base,  l_rem_invoice_currency_code ) - l_run_total;
18270   l_run_total    := l_run_total + l_line_applied;
18271   IF PG_DEBUG = 'Y' THEN
18272   localdebug(' l_line_applied                        :' || l_line_applied);
18273 
18274 
18275 
18276   -- tax_applied
18277   localdebug('TAX_APPLIED:');
18278   localdebug(' l_run_amt                            :' || l_run_amt);
18279   localdebug(' l_run_total                          :' || l_run_total);
18280   localdebug(' l_rem_tax_balance                    :' || NVL(l_rem_tax_balance,0));
18281   localdebug(' p_inv_ra_rec.amount_applied          :' || NVL(p_inv_ra_rec.amount_applied,0));
18282   localdebug(' l_base                               :' || l_base);
18283   END IF;
18284 
18285   l_run_amt      := l_run_amt + NVL(l_rem_tax_balance,0);
18286   l_tax_applied  := CurrRound( l_run_amt  * NVL(p_inv_ra_rec.amount_applied,0)
18287                                      / l_base ,  l_rem_invoice_currency_code ) - l_run_total;
18288   l_run_total    := l_run_total + l_tax_applied;
18289   IF PG_DEBUG = 'Y' THEN
18290   localdebug(' l_tax_applied                        :' || l_tax_applied);
18291 
18292 
18293 
18294   -- freight_applied
18295   localdebug('FREIGHT_APPLIED:');
18296   localdebug(' l_run_amt                            :' || l_run_amt);
18297   localdebug(' l_run_total                          :' || l_run_total);
18298   localdebug(' l_rem_freight_balance                :' || NVL(l_rem_freight_balance,0));
18299   localdebug(' p_inv_ra_rec.amount_applied          :' || NVL(p_inv_ra_rec.amount_applied,0));
18300   localdebug(' l_base                               :' || l_base);
18301   END IF;
18302 
18303   l_run_amt      := l_run_amt + NVL(l_rem_freight_balance,0);
18304   l_freight_applied  := CurrRound( l_run_amt * NVL(p_inv_ra_rec.amount_applied,0)
18305                                           / l_base ,  l_rem_invoice_currency_code ) - l_run_total;
18306   l_run_total    := l_run_total + l_freight_applied;
18307   IF PG_DEBUG = 'Y' THEN
18308   localdebug(' l_freight_applied                        :' || l_freight_applied);
18309 
18310 
18311 
18312   -- Charges_applied
18313   localdebug('CHARGES_APPLIED:');
18314   localdebug(' l_run_amt                            :' || l_run_amt);
18315   localdebug(' l_run_total                          :' || l_run_total);
18316   localdebug(' l_rem_charges_balance                :' || NVL(l_rem_charges_balance,0));
18317   localdebug(' p_inv_ra_rec.amount_applied          :' || NVL(p_inv_ra_rec.amount_applied,0));
18318   localdebug(' l_base                               :' || l_base);
18319   END IF;
18320   l_run_amt      := l_run_amt + NVL(l_rem_charges_balance,0);
18321   l_charges_applied  := CurrRound( l_run_amt * NVL(p_inv_ra_rec.amount_applied,0)
18322                                           / l_base ,  l_rem_invoice_currency_code ) - l_run_total;
18323   l_run_total    := l_run_total + l_charges_applied;
18324   IF PG_DEBUG = 'Y' THEN
18325   localdebug(' l_charges_applied                        :' || l_charges_applied);
18326   END IF;
18327   END IF; -- Bug14415571
18328   -- Bug14415571
18329   IF PG_DEBUG = 'Y' THEN
18330     localdebug('l_line_applied    :' || l_line_applied);
18331     localdebug('l_tax_applied     :' || l_tax_applied);
18332     localdebug('l_freight_applied :' || l_freight_applied);
18333     localdebug('l_charges_applied :' || l_charges_applied);
18334   END IF;
18335 
18336   x_cm_ra_rec.line_applied       := l_line_applied    * -1;
18337   x_cm_ra_rec.tax_applied        := l_tax_applied     * -1;
18338   x_cm_ra_rec.freight_applied    := l_freight_applied * -1;
18339   x_cm_ra_rec.receivables_charges_applied := l_charges_applied * -1;
18340 
18341   ARP_PROCESS_APPLICATION.g_line_applied := l_line_applied;
18342   ARP_PROCESS_APPLICATION.g_tax_applied  := l_tax_applied;
18343   ARP_PROCESS_APPLICATION.g_frt_applied  := l_freight_applied;
18344   ARP_PROCESS_APPLICATION.g_chrg_applied := l_charges_applied;
18345 
18346   IF PG_DEBUG = 'Y' THEN
18347   localdebug('  x_cm_ra_rec.amount_applied              :'||x_cm_ra_rec.amount_applied);
18348   localdebug('  x_cm_ra_rec.amount_applied_from         :'||x_cm_ra_rec.amount_applied_from);
18349   localdebug('  x_cm_ra_rec.acctd_amount_applied_to     :'||x_cm_ra_rec.acctd_amount_applied_to);
18350   localdebug('  x_cm_ra_rec.acctd_amount_applied_from   :'||x_cm_ra_rec.acctd_amount_applied_from);
18351   localdebug('  x_cm_ra_rec.line_applied                :'||x_cm_ra_rec.line_applied);
18352   localdebug('  x_cm_ra_rec.tax_applied                 :'||x_cm_ra_rec.tax_applied);
18353   localdebug('  x_cm_ra_rec.freight_applied             :'||x_cm_ra_rec.freight_applied);
18354   localdebug('  x_cm_ra_rec.receivables_charges_applied :'||x_cm_ra_rec.receivables_charges_applied);
18355 
18356   localdebug('arp_det_dist_pkg.convert_ra_inv_to_cm()-');
18357   END IF;
18358 EXCEPTION
18359   WHEN  no_rem_for_trx_upg  THEN
18360      IF PG_DEBUG = 'Y' THEN
18361      localdebug(' EXCEPTION no_rem_for_trx :'|| p_cm_trx_id);
18362      END IF;
18363      IF cu_cm_balance%ISOPEN THEN CLOSE cu_cm_balance; END IF;
18364 
18365   WHEN  no_rem_for_trx  THEN
18366      IF PG_DEBUG = 'Y' THEN
18367      localdebug(' EXCEPTION no_rem_for_trx :'|| p_cm_trx_id);
18368      END IF;
18369      IF cu_trx_balance%ISOPEN THEN CLOSE cu_trx_balance; END IF;
18370      RAISE;
18371   WHEN no_amount_remaining   THEN
18372      IF PG_DEBUG = 'Y' THEN
18373      localdebug(' EXCEPTION NO_AMOUNT_REMAINING FOR :'|| p_cm_trx_id);
18374      END IF;
18375      IF cu_trx_balance%ISOPEN THEN CLOSE cu_trx_balance; END IF;
18376      RAISE;
18377   WHEN OTHERS THEN
18378      IF PG_DEBUG = 'Y' THEN
18379      localdebug(' EXCEPTION OTHERS :'|| SQLERRM);
18380      END IF;
18381      IF cu_trx_balance%ISOPEN THEN CLOSE cu_trx_balance; END IF;
18382      RAISE;
18383 END convert_ra_inv_to_cm;
18384 
18385 PROCEDURE set_interface_flag
18386 ( p_source_table     IN VARCHAR2 DEFAULT NULL,
18387   p_line_flag        IN VARCHAR2 DEFAULT 'NORMAL',
18388   p_tax_flag         IN VARCHAR2 DEFAULT 'NORMAL',
18389   p_freight_flag     IN VARCHAR2 DEFAULT 'NORMAL',
18390   p_charges_flag     IN VARCHAR2 DEFAULT 'NORMAL',
18391   p_ed_line_flag     IN VARCHAR2 DEFAULT 'NORMAL',
18392   p_ed_tax_flag      IN VARCHAR2 DEFAULT 'NORMAL',
18393   p_uned_line_flag   IN VARCHAR2 DEFAULT 'NORMAL',
18394   p_uned_tax_flag    IN VARCHAR2 DEFAULT 'NORMAL')
18395 IS
18396 BEGIN
18397   g_source_table     := p_source_table;
18398   g_line_flag        := p_line_flag;
18399   g_tax_flag         := p_tax_flag;
18400   g_freight_flag     := p_freight_flag;
18401   g_charges_flag     := p_charges_flag;
18402   g_ed_line_flag     := p_ed_line_flag;
18403   g_ed_tax_flag      := p_ed_tax_flag;
18404   g_uned_line_flag   := p_uned_line_flag;
18405   g_uned_tax_flag    := p_uned_tax_flag;
18406 END set_interface_flag;
18407 
18408 PROCEDURE adjustment_with_interface
18409 (p_customer_trx     IN ra_customer_trx%ROWTYPE,
18410  p_adj_rec          IN ar_adjustments%ROWTYPE,
18411  p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
18412  p_gt_id            IN NUMBER,
18413  p_line_flag        IN VARCHAR2 DEFAULT 'INTERFACE',
18414  p_tax_flag         IN VARCHAR2 DEFAULT 'INTERFACE',
18415  p_init_msg_list    IN VARCHAR2 DEFAULT FND_API.G_FALSE,
18416  x_return_status    IN OUT NOCOPY VARCHAR2,
18417  x_msg_count        IN OUT NOCOPY NUMBER,
18418  x_msg_data         IN OUT NOCOPY VARCHAR2,
18419  p_llca_from_call   IN VARCHAR2 DEFAULT NULL,
18420  p_customer_trx_line_id IN ra_customer_trx_lines.customer_trx_line_id%TYPE DEFAULT NULL)
18421 IS
18422   l_app_rec        ar_receivable_applications%ROWTYPE;
18423 BEGIN
18424   IF PG_DEBUG = 'Y' THEN
18425   localdebug('arp_det_dist_pkg.adjustment_with_interface()+');
18426   localdebug('  p_gt_id                              :'||p_gt_id);
18427   localdebug('  p_adj_rec.amount                     :'|| p_adj_rec.amount);
18428   localdebug('  p_adj_rec.acctd_amount               :'|| p_adj_rec.acctd_amount);
18429   localdebug('  p_customer_trx.invoice_currency_code :'|| p_customer_trx.invoice_currency_code);
18430   localdebug('  p_ae_sys_rec.base_currency           :'|| p_ae_sys_rec.base_currency);
18431   localdebug('  p_llca_from_call                     :'|| p_llca_from_call);
18432   END IF;
18433 
18434   x_return_status   := fnd_api.g_ret_sts_success;
18435 
18436   IF FND_API.to_Boolean(p_init_msg_list) THEN
18437      FND_MSG_PUB.initialize;
18438   END IF;
18439 
18440   arp_process_det_pkg.verif_int_adj_line_tax(
18441        p_customer_trx  => p_customer_trx,
18442        p_adj_rec       => p_adj_rec,
18443        p_ae_sys_rec    => p_ae_sys_rec,
18444        p_gt_id         => p_gt_id,
18445        p_line_flag     => p_line_flag,
18446        p_tax_flag      => p_tax_flag,
18447        x_return_status => x_return_status);
18448 
18449   IF x_return_status <> fnd_api.g_ret_sts_success THEN
18450     RAISE fnd_api.G_EXC_ERROR;
18451   END IF;
18452 
18453   g_gt_id    := p_gt_id;
18454 
18455   set_interface_flag( p_source_table     => 'ADJ',
18456                       p_line_flag        => p_line_flag,
18457                       p_tax_flag         => p_tax_flag);
18458 
18459   g_cust_inv_rec   := p_customer_trx;
18460 
18461   set_mode_process(p_customer_trx  => g_cust_inv_rec);
18462 
18463     -- Added under Line Level Adjustment
18464  IF p_llca_from_call = 'Y' THEN
18465   set_original_rem_amt(
18466                  p_customer_trx => g_cust_inv_rec,
18467                  p_from_llca    => 'Y');
18468  END IF;
18469 
18470   copy_trx_lines(p_customer_trx_id  => p_customer_trx.customer_trx_id,
18471                  p_ae_sys_rec       => p_ae_sys_rec,
18472 		 p_customer_trx_line_id => p_customer_trx_line_id);
18473 
18474   conv_acctd_amt(p_pay_adj         => 'ADJ',
18475                  p_adj_rec         => p_adj_rec,
18476                  p_app_rec         => l_app_rec,
18477                  p_ae_sys_rec      => p_ae_sys_rec);
18478 
18479   get_invoice_line_info(p_gt_id            => p_gt_id,
18480                         p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
18481                         p_ae_sys_rec       => p_ae_sys_rec,
18482                         p_mode             => 'NORMAL');
18483 
18484   prepare_group_for_proration(p_gt_id           => p_gt_id,
18485                               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18486                               p_pay_adj         => 'ADJ',
18487                               p_adj_rec         => p_adj_rec,
18488                               p_app_rec         => l_app_rec,
18489                               p_ae_sys_rec      => p_ae_sys_rec);
18490 
18491   update_group_line(p_gt_id           => p_gt_id,
18492                     p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18493                     p_ae_sys_rec      => p_ae_sys_rec);
18494 
18495   prepare_trx_line_proration(p_gt_id           => p_gt_id,
18496                              p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18497                              p_pay_adj         => 'ADJ',
18498                              p_adj_rec         => p_adj_rec,
18499                              p_app_rec         => l_app_rec,
18500                              p_ae_sys_rec      => p_ae_sys_rec);
18501 
18502    update_line(p_gt_id           => p_gt_id,
18503                p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18504                p_ae_sys_rec      => p_ae_sys_rec);
18505 
18506    update_ctl_rem_orig(p_gt_id           => p_gt_id,
18507                        p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18508                        p_pay_adj         => 'ADJ',
18509                        p_ae_sys_rec      => p_ae_sys_rec);
18510 
18511    proration_adj_dist_trx(p_gt_id            => p_gt_id,
18512                           p_app_level        => 'TRANSACTION',
18513                           p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
18514                           p_adj_rec          => p_adj_rec,
18515                           p_ae_sys_rec       => p_ae_sys_rec);
18516 
18517   create_final_split(p_customer_trx => p_customer_trx,
18518                      p_app_rec      => l_app_rec,
18519                      p_adj_rec      => p_adj_rec,
18520                      p_ae_sys_rec   => p_ae_sys_rec);
18521 
18522  -- Added under Line Level Adjustment
18523   IF p_llca_from_call = 'Y' THEN
18524   final_update_inv_ctl_rem_orig(p_customer_trx => p_customer_trx);
18525   END IF;
18526 
18527   IF g_mode_process IN ('R12_MERGE') THEN
18528      UPDATE ar_adjustments
18529      SET upgrade_method = 'R12_MERGE'
18530      WHERE adjustment_id = p_adj_rec.adjustment_id;
18531   ELSE
18532     UPDATE ar_adjustments
18533     SET upgrade_method = 'R12'
18534     WHERE adjustment_id = p_adj_rec.adjustment_id;
18535   END IF;
18536 
18537   IF PG_DEBUG = 'Y' THEN
18538   localdebug('arp_det_dist_pkg.adjustment_with_interface()-');
18539   END IF;
18540 EXCEPTION
18541   WHEN fnd_api.G_EXC_ERROR THEN
18542     FND_MSG_PUB.Count_And_Get(
18543                 p_encoded => FND_API.G_FALSE,
18544                 p_count => x_msg_count,
18545                 p_data  => x_msg_data);
18546     IF PG_DEBUG = 'Y' THEN
18547     localdebug('fnd_api.G_EXC_ERROR IN adjustment_with_interface error count:'||x_msg_count);
18548     localdebug('last error:'||x_msg_data);
18549     END IF;
18550     RAISE;
18551  WHEN OTHERS THEN
18552   IF PG_DEBUG = 'Y' THEN
18553   localdebug('OTHERS IN adjustment_with_interface :'||SQLERRM);
18554   END IF;
18555   RAISE;
18556 END;
18557 
18558 
18559 PROCEDURE application_with_interface
18560   (p_customer_trx     IN ra_customer_trx%ROWTYPE,
18561    p_app_rec          IN ar_receivable_applications%ROWTYPE,
18562    p_ae_sys_rec       IN arp_acct_main.ae_sys_rec_type,
18563    p_gt_id            IN NUMBER,
18564    p_line_flag        IN VARCHAR2 DEFAULT 'INTERFACE',
18565    p_tax_flag         IN VARCHAR2 DEFAULT 'INTERFACE',
18566    p_ed_line_flag     IN VARCHAR2 DEFAULT 'NORMAL',
18567    p_ed_tax_flag      IN VARCHAR2 DEFAULT 'NORMAL',
18568    p_uned_line_flag   IN VARCHAR2 DEFAULT 'NORMAL',
18569    p_uned_tax_flag    IN VARCHAR2 DEFAULT 'NORMAL',
18570    p_init_msg_list    IN VARCHAR2 DEFAULT FND_API.G_FALSE,
18571    x_return_status    IN OUT NOCOPY VARCHAR2,
18572    x_msg_count        IN OUT NOCOPY NUMBER,
18573    x_msg_data         IN OUT NOCOPY VARCHAR2)
18574 IS
18575   l_adj_rec         ar_adjustments%ROWTYPE;
18576 BEGIN
18577   IF PG_DEBUG = 'Y' THEN
18578   localdebug('arp_det_dist_pkg.application_with_interface()+');
18579   localdebug('   p_customer_trx_id        :'||p_customer_trx.customer_trx_id);
18580   localdebug('   p_gt_id                  :'||p_gt_id);
18581   END IF;
18582 
18583   x_return_status   := fnd_api.g_ret_sts_success;
18584 
18585   IF FND_API.to_Boolean(p_init_msg_list) THEN
18586      FND_MSG_PUB.initialize;
18587   END IF;
18588 
18589   arp_process_det_pkg.verif_int_app_line_tax
18590    (p_customer_trx     => p_customer_trx,
18591     p_app_rec          => p_app_rec,
18592     p_ae_sys_rec       => p_ae_sys_rec,
18593     p_gt_id            => p_gt_id,
18594     p_line_flag        => p_line_flag,
18595     p_tax_flag         => p_tax_flag,
18596     p_ed_line_flag     => p_ed_line_flag,
18597     p_ed_tax_flag      => p_ed_tax_flag,
18598     p_uned_line_flag   => p_uned_line_flag,
18599     p_uned_tax_flag    => p_uned_tax_flag,
18600     x_return_status    => x_return_status);
18601 
18602   IF x_return_status <> fnd_api.g_ret_sts_success THEN
18603     RAISE fnd_api.G_EXC_ERROR;
18604   END IF;
18605 
18606   g_gt_id    := p_gt_id;
18607 
18608   set_interface_flag( p_source_table     => 'RA',
18609                       p_line_flag        => p_line_flag,
18610                       p_tax_flag         => p_tax_flag,
18611                       p_ed_line_flag     => p_ed_line_flag,
18612                       p_ed_tax_flag      => p_ed_tax_flag,
18613                       p_uned_line_flag   => p_uned_line_flag,
18614                       p_uned_tax_flag    => p_uned_tax_flag );
18615 
18616   g_cust_inv_rec    :=  p_customer_trx;
18617 
18618   set_mode_process(p_customer_trx  => g_cust_inv_rec);
18619 
18620   IF g_mode_process = 'R12_11ICASH' THEN
18621     IF PG_DEBUG = 'Y' THEN
18622     localdebug('application_with_interface is not supported for 11i transaction with activities');
18623     END IF;
18624     FND_MESSAGE.SET_NAME( 'AR', 'AR_CUST_API_ERROR');
18625     FND_MESSAGE.SET_TOKEN('TEXT','application_with_interface is not supported for 11i transaction with activities customer_trx_id :'||
18626                                  p_customer_trx.customer_trx_id);
18627     FND_MSG_PUB.ADD;
18628     x_return_status := fnd_api.g_ret_sts_success;
18629     RAISE fnd_api.G_EXC_ERROR;
18630   ELSE
18631 
18632    copy_trx_lines(p_customer_trx_id  => p_customer_trx.customer_trx_id,
18633                   p_ae_sys_rec       => p_ae_sys_rec);
18634 
18635 
18636     IF g_mode_process = 'R12_11IMFAR' THEN
18637 
18638       x_return_status := fnd_api.g_ret_sts_success;
18639       IF PG_DEBUG = 'Y' THEN
18640       localdebug('application_with_interface is not supported for 11i MFAR transaction with activities');
18641       END IF;
18642       FND_MESSAGE.SET_NAME( 'AR', 'AR_CUST_API_ERROR');
18643       FND_MESSAGE.SET_TOKEN('TEXT','application_with_interface is not supported for 11i MFAR transaction with activities customer_trx_id :'||
18644                                  p_customer_trx.customer_trx_id);
18645       FND_MSG_PUB.ADD;
18646       RAISE fnd_api.G_EXC_ERROR;
18647 
18648     END IF;
18649     --}
18650 
18651    conv_acctd_amt(p_pay_adj         => 'APP',
18652                    p_adj_rec         => l_adj_rec,
18653                    p_app_rec         => p_app_rec,
18654                    p_ae_sys_rec      => p_ae_sys_rec);
18655 
18656 
18657    get_invoice_line_info(p_gt_id            => p_gt_id,
18658                          p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
18659                          p_ae_sys_rec       => p_ae_sys_rec,
18660                          p_mode             => 'NORMAL');
18661 
18662    prepare_group_for_proration(p_gt_id           => p_gt_id,
18663                                p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18664                                p_pay_adj         => 'APP',
18665                                p_adj_rec         => l_adj_rec,
18666                                p_app_rec         => p_app_rec,
18667                                p_ae_sys_rec      => p_ae_sys_rec);
18668 
18669    update_group_line(p_gt_id           => p_gt_id,
18670                      p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18671                      p_ae_sys_rec      => p_ae_sys_rec);
18672 
18673    prepare_trx_line_proration(p_gt_id           => p_gt_id,
18674                               p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18675                               p_pay_adj         => 'APP',
18676                               p_adj_rec         => l_adj_rec,
18677                               p_app_rec         => p_app_rec,
18678                               p_ae_sys_rec      => p_ae_sys_rec);
18679 
18680    update_line(p_gt_id           => p_gt_id,
18681                p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18682                p_ae_sys_rec      => p_ae_sys_rec);
18683 
18684    update_ctl_rem_orig(p_gt_id           => p_gt_id,
18685                        p_customer_trx_id => g_cust_inv_rec.customer_trx_id,
18686                        p_pay_adj         => 'APP',
18687                        p_ae_sys_rec      => p_ae_sys_rec);
18688 
18689    proration_app_dist_trx(p_gt_id            => p_gt_id,
18690                           p_app_level        => 'TRANSACTION',
18691                           p_customer_trx_id  => g_cust_inv_rec.customer_trx_id,
18692                           p_app_rec          => p_app_rec,
18693                           p_ae_sys_rec       => p_ae_sys_rec);
18694 
18695 
18696  END IF;
18697 
18698  create_final_split(p_customer_trx => p_customer_trx,
18699                     p_app_rec      => p_app_rec,
18700                     p_adj_rec      => l_adj_rec,
18701                     p_ae_sys_rec   => p_ae_sys_rec);
18702 
18703 
18704  IF PG_DEBUG = 'Y' THEN
18705  localdebug('arp_det_dist_pkg.application_with_interface()-');
18706  END IF;
18707 EXCEPTION
18708  WHEN fnd_api.G_EXC_ERROR THEN
18709      FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.G_FALSE,
18710                                p_count => x_msg_count,
18711                                p_data  => x_msg_data);
18712   IF PG_DEBUG = 'Y' THEN
18713   localdebug('fnd_api.G_EXC_ERROR IN application_with_interface error count:'||x_msg_count);
18714   localdebug('last error:'||x_msg_data);
18715   END IF;
18716   RAISE;
18717  WHEN OTHERS THEN
18718   IF PG_DEBUG = 'Y' THEN
18719   localdebug('OTHERS IN application_with_interface :'||SQLERRM);
18720   END IF;
18721   RAISE;
18722 END application_with_interface;
18723 
18724 
18725 
18726 
18727 PROCEDURE Reconciliation
18728 (p_app_rec             IN ar_receivable_applications%ROWTYPE,
18729  p_adj_rec             IN ar_adjustments%ROWTYPE,
18730  p_activity_type       IN VARCHAR2,
18731  p_gt_id               IN VARCHAR2 DEFAULT NULL)
18732 IS
18733   CURSOR cu1(p_gt_id IN NUMBER) IS
18734   SELECT SUM(NVL(amount,0)),
18735          SUM(NVL(acctd_amount,0))
18736     FROM AR_LINE_APP_DETAIL_GT
18737    WHERE gt_id = p_gt_id;
18738   l_sum                    NUMBER;
18739   l_acctd_sum              NUMBER;
18740 
18741   CURSOR cu2(p_gt_id IN NUMBER) IS
18742   SELECT SUM(NVL(amount,0)),
18743          SUM(NVL(acctd_amount,0)),
18744          activity_bucket
18745     FROM AR_LINE_APP_DETAIL_GT
18746    WHERE gt_id = p_gt_id
18747    GROUP BY activity_bucket;
18748   l_activity              VARCHAR2(30);
18749   l_act_amount            NUMBER;
18750   l_acctd_act_amount      NUMBER;
18751   l_gt_id                 NUMBER;
18752 
18753   l_adj_amt               NUMBER := 0;
18754   l_adj_acctd_amt         NUMBER := 0;
18755   l_app_amt               NUMBER := 0;
18756   l_app_acctd_amt         NUMBER := 0;
18757   l_ed_amt                NUMBER := 0;
18758   l_ed_acctd_amt          NUMBER := 0;
18759   l_uned_amt              NUMBER := 0;
18760   l_uned_acctd_amt        NUMBER := 0;
18761 
18762 
18763   l_amt_tab         DBMS_SQL.NUMBER_TABLE;
18764   l_acctd_amt_tab   DBMS_SQL.NUMBER_TABLE;
18765   l_activity_tab    DBMS_SQL.VARCHAR2_TABLE;
18766 
18767   l_check_precision	VARCHAR2(1) := 'N';
18768   l_acctd_amt_sum	NUMBER;
18769 
18770   CURSOR c_ctlgd_valid(p_customer_trx_id  IN NUMBER) IS
18771        select sum(gld.AMOUNT) amount,sum(gld.ACCTD_AMOUNT) acctd_amount,
18772               min(nvl(ctl.AUTORULE_COMPLETE_FLAG,'Y')) AUTORULE_COMPLETE_FLAG,
18773               min(ct.invoice_currency_code) inv_currency,
18774               min(sob.currency_code) ledger_currency,
18775               ctl.LINE_TYPE
18776       from ra_customer_trx ct,
18777            ra_customer_trx_lines ctl,
18778            RA_CUST_TRX_LINE_GL_DIST gld,
18779 					 gl_sets_of_books               sob,
18780 					 ar_system_parameters        ars
18781       where ct.customer_trx_id = p_customer_trx_id
18782       and ctl.customer_trx_id = ct.customer_trx_id
18783       and gld.customer_trx_id = ctl.customer_trx_id
18784       and gld.customer_trx_line_id = ctl.customer_trx_line_id
18785       and gld.ACCOUNT_SET_FLAG = 'N'
18786       and ars.org_id = ct.org_id
18787       and ct.SET_OF_BOOKS_ID = sob.SET_OF_BOOKS_ID
18788       group by ctl.LINE_TYPE;
18789 
18790   l_check_valid NUMBER DEFAULT 0;
18791   n NUMBER DEFAULT 1;
18792   l_ctlgd_valid_set c_ctlgd_valid%ROWTYPE;
18793 
18794   l_line_flag VARCHAR2(1) DEFAULT 'N';
18795   l_tax_flag VARCHAR2(1) DEFAULT 'N';
18796   l_freight_flag VARCHAR2(1) DEFAULT 'N';
18797   l_charges_flag VARCHAR2(1) DEFAULT 'N';
18798 
18799   l_customer_trx_id NUMBER;
18800 
18801 BEGIN
18802   IF PG_DEBUG = 'Y' THEN
18803   localdebug('arp_det_dist_pkg.reconciliation()+');
18804   END IF;
18805 
18806   IF   p_activity_type = 'RA' AND  p_app_rec.application_type = 'CM' THEN
18807       n :=2;
18808  END IF;
18809 
18810  IF p_activity_type = 'ADJ' THEN
18811     l_customer_trx_id :=  p_adj_rec.customer_trx_id;
18812  ELSIF p_activity_type = 'RA' THEN
18813     l_customer_trx_id :=  p_app_rec.APPLIED_CUSTOMER_TRX_ID;
18814  END IF;
18815 
18816  FOR i IN 1..n LOOP
18817       IF i = 2   THEN
18818           l_customer_trx_id := p_app_rec.customer_trx_id;
18819       END IF;
18820            OPEN c_ctlgd_valid(l_customer_trx_id);           -- check 2 for acctd amt 0 and amt non zero
18821                LOOP
18822                    FETCH c_ctlgd_valid into l_ctlgd_valid_set;
18823                         if l_ctlgd_valid_set.AUTORULE_COMPLETE_FLAG <> 'Y' then
18824               							l_check_valid := 1;
18825            							end if;
18826 
18827                         if  (l_ctlgd_valid_set.AMOUNT <> 0 AND l_ctlgd_valid_set.ACCTD_AMOUNT = 0) AND
18828                             (l_ctlgd_valid_set.inv_currency <> l_ctlgd_valid_set.ledger_currency) THEN
18829                             l_check_valid := 2;
18830                         end if;
18831 
18832 
18833                          if l_ctlgd_valid_set.line_type = 'LINE'   then
18834                          l_line_flag := 'Y';
18835                          elsif l_ctlgd_valid_set.line_type = 'TAX'    then
18836                          l_tax_flag := 'Y';
18837                          elsif l_ctlgd_valid_set.line_type = 'FREIGHT' then
18838                          l_freight_flag := 'Y';
18839                          elsif l_ctlgd_valid_set.line_type = 'CHARGES'  then
18840                          l_charges_flag := 'Y';
18841                          end if;
18842 
18843                    IF c_ctlgd_valid%NOTFOUND THEN
18844                       EXIT;
18845                    END IF;
18846                END LOOP;
18847            CLOSE c_ctlgd_valid;
18848    END LOOP;
18849 
18850  IF ((p_activity_type = 'ADJ')
18851  AND ((nvl(g_line_adj,0) <> 0 AND l_line_flag = 'N') OR
18852       (nvl(g_tax_adj,0) <> 0 AND l_tax_flag = 'N')  OR
18853       (nvl(g_frt_adj,0) <> 0 AND l_freight_flag = 'N') OR
18854       (nvl(g_chrg_adj,0) <> 0 AND l_charges_flag = 'N'))) OR
18855     ((p_activity_type = 'RA') AND
18856      ((nvl(g_line_uned,0) + nvl(g_line_ed,0) + nvl(g_line_applied,0)  <> 0 AND l_line_flag = 'N') OR
18857     (nvl(g_tax_uned,0) + nvl(g_tax_ed,0) + nvl(g_tax_applied,0) <> 0 AND l_tax_flag = 'N') OR
18858     (nvl(g_frt_uned,0) + nvl(g_frt_ed,0) + nvl(g_frt_applied,0) <> 0 AND l_freight_flag = 'N') OR
18859     (nvl(g_chrg_uned,0) + nvl(g_chrg_ed,0) + nvl(g_chrg_applied,0) <> 0 AND l_charges_flag = 'N'))) THEN
18860  l_check_valid := 3;
18861  END IF;
18862 
18863   IF   p_gt_id IS NULL THEN
18864     l_gt_id := g_gt_id;
18865   ELSE
18866     l_gt_id := p_gt_id;
18867   END IF;
18868 
18869   localdebug('  l_gt_id :'||l_gt_id);
18870 
18871   OPEN cu1(l_gt_id);
18872   FETCH cu1 INTO l_sum, l_acctd_sum;
18873   CLOSE cu1;
18874 
18875   IF PG_DEBUG = 'Y' THEN
18876   localdebug('Reconciliation gross amount');
18877   END IF;
18878   IF     p_activity_type = 'RA' THEN
18879     IF     ABS(nvl(l_sum,0)) <> ABS(  NVL(p_app_rec.amount_applied,0)
18880                              + NVL(p_app_rec.earned_discount_taken,0)
18881                              + NVL(p_app_rec.unearned_discount_taken,0) )
18882     THEN
18883       IF PG_DEBUG = 'Y' THEN
18884       localdebug('From the detail gt the amount l_sum   :'||l_sum);
18885       localdebug('application record the amount_applied :'||p_app_rec.amount_applied);
18886       localdebug('application record the amount_earned  :'||p_app_rec.earned_discount_taken);
18887       localdebug('application record the amount_unearned:'||p_app_rec.unearned_discount_taken);
18888       localdebug('Gross transaction amount do not reconcile');
18889       END IF;
18890       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18891     ELSIF  ABS(nvl(l_acctd_sum,0)) <> ABS(NVL(p_app_rec.acctd_amount_applied_to,0)
18892 	                            +  NVL(p_app_rec.ACCTD_UNEARNED_DISCOUNT_TAKEN,0)
18893                                 +  NVL(p_app_rec.ACCTD_EARNED_DISCOUNT_TAKEN,0)  ) THEN
18894       IF PG_DEBUG = 'Y' THEN
18895       localdebug('From the detail gt the acctd_amount l_acctd_sum  :'||l_acctd_sum);
18896       localdebug('application record the acctd_amount_applied:'||p_app_rec.acctd_amount_applied_to);
18897       localdebug('application record the acctd_amount_earned :'||p_app_rec.ACCTD_EARNED_DISCOUNT_TAKEN);
18898       localdebug('application record the acctd_amount_unearned:'||p_app_rec.ACCTD_UNEARNED_DISCOUNT_TAKEN);
18899       localdebug('Gross transaction acctd amount do not reconcile');
18900       END IF;
18901         l_check_precision := 'Y';
18902 	l_acctd_amt_sum := ABS(NVL(p_app_rec.acctd_amount_applied_to,0)
18903 	                            +  NVL(p_app_rec.ACCTD_UNEARNED_DISCOUNT_TAKEN,0)
18904                                 +  NVL(p_app_rec.ACCTD_EARNED_DISCOUNT_TAKEN,0));
18905 
18906       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18907     END IF;
18908   ELSIF p_activity_type = 'ADJ' THEN
18909     IF     ABS(nvl(l_sum,0)) <> ABS(NVL(p_adj_rec.amount,0)) THEN
18910       IF PG_DEBUG = 'Y' THEN
18911       localdebug('From the detail gt the amount l_sum  :'||l_sum);
18912       localdebug('adjustment record the amount:'||p_adj_rec.amount);
18913       localdebug('Gross transaction amount do not reconcile');
18914       END IF;
18915       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18916     ELSIF  ABS(nvl(l_acctd_sum,0)) <> ABS(NVL(p_adj_rec.acctd_amount,0)) THEN
18917       IF PG_DEBUG = 'Y' THEN
18918       localdebug('From the detail gt the acctd_amount l_acctd_sum  :'||l_acctd_sum);
18919       localdebug('adjustment record the acctd_amount:'||p_adj_rec.acctd_amount);
18920       localdebug('Gross transaction acctd amount do not reconcile');
18921       END IF;
18922       l_check_precision := 'Y';
18923       l_acctd_amt_sum := ABS(NVL(p_adj_rec.acctd_amount,0));
18924       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18925     END IF;
18926   END IF;
18927 
18928 
18929   IF p_activity_type = 'RA' THEN
18930 
18931     IF PG_DEBUG = 'Y' THEN
18932     localdebug('Reconciliation per bucket application amount');
18933     END IF;
18934     OPEN cu2(l_gt_id);
18935     FETCH cu2 BULK COLLECT INTO
18936        l_amt_tab     ,
18937        l_acctd_amt_tab,
18938        l_activity_tab;
18939     CLOSE cu2;
18940 
18941     IF l_activity_tab.COUNT <> 0 THEN
18942 
18943       FOR i IN l_activity_tab.FIRST .. l_activity_tab.LAST LOOP
18944         IF    l_activity_tab(i) IN ('APP_LINE','APP_TAX','APP_FRT','APP_CHRG') THEN
18945           l_app_amt       := l_app_amt + NVL(l_amt_tab(i),0);
18946           l_app_acctd_amt := l_app_acctd_amt + NVL(l_acctd_amt_tab(i),0);
18947         ELSIF l_activity_tab(i) IN ('ED_LINE','ED_FRT','ED_TAX','ED_CHRG') THEN
18948           l_ed_amt       := l_ed_amt + NVL(l_amt_tab(i),0);
18949           l_ed_acctd_amt := l_ed_acctd_amt + NVL(l_acctd_amt_tab(i),0);
18950         ELSIF l_activity_tab(i) IN ('UNED_LINE','UNED_FRT','UNED_TAX','UNED_CHRG') THEN
18951           l_uned_amt       := l_uned_amt + NVL(l_amt_tab(i),0);
18952           l_uned_acctd_amt := l_uned_acctd_amt + NVL(l_acctd_amt_tab(i),0);
18953         END IF;
18954       END LOOP;
18955 
18956     IF     ABS(l_app_amt) <> ABS(  NVL(p_app_rec.amount_applied,0)) THEN
18957       IF PG_DEBUG = 'Y' THEN
18958       localdebug('From the detail gt the applied amount l_app_amt   :'||l_app_amt);
18959       localdebug('application record the amount_applied :'||p_app_rec.amount_applied);
18960       END IF;
18961       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18962     ELSIF  ABS(l_ed_amt) <> ABS(  NVL(p_app_rec.earned_discount_taken,0)) THEN
18963       IF PG_DEBUG = 'Y' THEN
18964       localdebug('From the detail gt the ed amount l_ed_amt   :'||l_ed_amt);
18965       localdebug('application record the amount_earned :'||p_app_rec.earned_discount_taken);
18966       END IF;
18967       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18968     ELSIF  ABS(l_uned_amt) <> ABS(  NVL(p_app_rec.unearned_discount_taken,0)) THEN
18969       IF PG_DEBUG = 'Y' THEN
18970       localdebug('From the detail gt the uned amount l_uned_amt  :'||l_uned_amt);
18971       localdebug('application record the amount_unearned:'||p_app_rec.unearned_discount_taken);
18972       END IF;
18973       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18974     ELSIF  ABS(l_app_acctd_amt) <> ABS(NVL(p_app_rec.acctd_amount_applied_to,0)) THEN
18975       IF PG_DEBUG = 'Y' THEN
18976       localdebug('From the detail gt the applied amount l_app_acctd_amt   :'||l_app_acctd_amt);
18977       localdebug('application record the acctd_amount_applied :'||p_app_rec.acctd_amount_applied_to);
18978       END IF;
18979       l_check_precision := 'Y';
18980       l_acctd_amt_sum := ABS(NVL(p_app_rec.acctd_amount_applied_to,0));
18981       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18982     ELSIF  ABS(l_ed_acctd_amt) <> ABS(  NVL(p_app_rec.acctd_earned_discount_taken,0)) THEN
18983       IF PG_DEBUG = 'Y' THEN
18984       localdebug('From the detail gt the ed amount l_ed_acctd_amt  :'||l_ed_acctd_amt);
18985       localdebug('application record the acctd_amount_earned :'||p_app_rec.acctd_earned_discount_taken);
18986       END IF;
18987       l_check_precision := 'Y';
18988       l_acctd_amt_sum := ABS(NVL(p_app_rec.acctd_earned_discount_taken,0));
18989       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18990     ELSIF  ABS(l_uned_acctd_amt) <> ABS(  NVL(p_app_rec.acctd_unearned_discount_taken,0)) THEN
18991       IF PG_DEBUG = 'Y' THEN
18992       localdebug('From the detail gt the ed amount l_uned_acctd_amt  :'||l_uned_acctd_amt);
18993       localdebug('application record the acctd_amount_unearned :'||p_app_rec.acctd_unearned_discount_taken);
18994       END IF;
18995       l_check_precision := 'Y';
18996       l_acctd_amt_sum := ABS(NVL(p_app_rec.acctd_unearned_discount_taken,0));
18997       RAISE fnd_api.G_EXC_UNEXPECTED_ERROR;
18998     END IF;
18999 
19000     END IF;
19001   END IF;
19002 
19003   IF PG_DEBUG = 'Y' THEN
19004   localdebug('arp_det_dist_pkg.reconciliation()-');
19005   END IF;
19006 EXCEPTION
19007 WHEN fnd_api.G_EXC_UNEXPECTED_ERROR THEN
19008  IF l_check_valid = 1 THEN
19009            FND_MESSAGE.SET_NAME( 'AR', 'AR_APP_PARTIAL_REV' );
19010            APP_EXCEPTION.RAISE_EXCEPTION;
19011    ELSIF l_check_valid = 2 THEN
19012            FND_MESSAGE.SET_NAME( 'AR', 'AR_APP_ZERO_ACCTD_AMT' );
19013            APP_EXCEPTION.RAISE_EXCEPTION;
19014    ELSIF l_check_valid = 3 THEN
19015            FND_MESSAGE.SET_NAME( 'AR', 'AR_APP_ZERO_BASIS' );
19016            APP_EXCEPTION.RAISE_EXCEPTION;
19017    END IF;
19018 
19019     IF NVL(l_check_precision, 'N') = 'Y' THEN
19020 	IF PG_DEBUG = 'Y' THEN
19021 	    localdebug('Checking for currency precision error');
19022 	END IF;
19023 
19024 	IF ARP_BALANCE_CHECK.CHECK_PRECISION (l_acctd_amt_sum) THEN
19025            FND_MESSAGE.SET_NAME( 'AR', 'AR_APP_CURR_PRECISION' );
19026            APP_EXCEPTION.RAISE_EXCEPTION;
19027 	END IF;
19028 
19029 	RAISE;
19030     END IF;
19031  RAISE;
19032 END;
19033 
19034 PROCEDURE verify_stamp_merge_dist_method(p_customer_trx_id IN NUMBER,
19035 					 x_upg_method      IN OUT NOCOPY VARCHAR2) IS
19036 BEGIN
19037   IF PG_DEBUG = 'Y' THEN
19038     localdebug('arp_det_dist_pkg.verify_stamp_merge_dist_method()+');
19039     localdebug('p_customer_trx_id         :'||p_customer_trx_id);
19040     localdebug('x_upg_method              :'||x_upg_method);
19041   END IF;
19042 
19043   IF p_customer_trx_id IS NULL THEN
19044     IF PG_DEBUG = 'Y' THEN
19045       localdebug('p_customer_trx_id is null,returning....');
19046       localdebug('arp_det_dist_pkg.verify_stamp_merge_dist_method()-');
19047     END IF;
19048     RETURN;
19049   END IF;
19050 
19051   IF x_upg_method IS NULL THEN
19052     SELECT upgrade_method
19053     INTO x_upg_method
19054     FROM ra_customer_trx
19055     where customer_trx_id = p_customer_trx_id;
19056 
19057     IF PG_DEBUG = 'Y' THEN
19058       localdebug('x_upg_method from db :'||x_upg_method);
19059     END IF;
19060   END IF;
19061 
19062   IF x_upg_method IS NULL AND
19063      (nvl(arp_standard.sysparm.create_detailed_dist_flag,'Y') = 'N' ) THEN
19064 
19065     update ra_customer_trx
19066     set upgrade_method = 'R12_MERGE'
19067     where customer_trx_id = p_customer_trx_id;
19068 
19069     x_upg_method := 'R12_MERGE';
19070   END IF;
19071 
19072   IF PG_DEBUG = 'Y' THEN
19073     localdebug('x_upg_method  '||x_upg_method);
19074     localdebug('arp_det_dist_pkg.verify_stamp_merge_dist_method()-');
19075   END IF;
19076 
19077   EXCEPTION
19078     WHEN OTHERS THEN
19079       localdebug('Exception  verify_stamp_merge_dist_method '||SQLERRM);
19080       RAISE;
19081 END verify_stamp_merge_dist_method;
19082 
19083 
19084 PROCEDURE diag_data(p_gt_id  IN NUMBER DEFAULT NULL)
19085 IS
19086   l_gt_id NUMBER;
19087 CURSOR c(l_gt_id IN NUMBER) IS
19088 SELECT
19089   FROM_AMOUNT,
19090   FROM_CURRENCY,
19091   GROUP_ID,
19092   GT_ID,
19093   LAST_UPDATED_BY,
19094   LAST_UPDATE_DATE,
19095   LAST_UPDATE_LOGIN,
19096   LEDGER_ID,
19097   LINE_ID,
19098   ORG_ID,
19099   REF_CUSTOMER_TRX_ID,
19100   REF_CUSTOMER_TRX_LINE_ID,
19101   REF_CUST_TRX_LINE_GL_DIST_ID,
19102   REF_DET_ID,
19103   REF_LINE_ID,
19104   SE_GT_ID,
19105   SOURCE_DATA_KEY1,
19106   SOURCE_DATA_KEY2,
19107   SOURCE_DATA_KEY3,
19108   SOURCE_DATA_KEY4,
19109   SOURCE_DATA_KEY5,
19110   SOURCE_ID,
19111   SOURCE_TABLE,
19112   SOURCE_TYPE,
19113   TAXABLE_ACCTD_AMOUNT,
19114   TAXABLE_AMOUNT,
19115   TAX_INC_FLAG,
19116   TAX_LINK_ID,
19117   TO_CURRENCY,
19118   REF_MF_DIST_FLAG,
19119   ACCTD_AMOUNT,
19120   REF_ACCOUNT_CLASS,
19121   AMOUNT,
19122   APP_LEVEL,
19123   BASE_CURRENCY,
19124   ACTIVITY_BUCKET,
19125   CCID,
19126   CCID_SECONDARY,
19127   CREATED_BY,
19128   CREATION_DATE,
19129   DET_ID,
19130   FROM_ACCTD_AMOUNT
19131   FROM AR_LINE_APP_DETAIL_GT
19132   WHERE GT_ID = l_gt_id;
19133 
19134   l  c%ROWTYPE;
19135 l_text   VARCHAR2(4000);
19136 
19137 BEGIN
19138   IF   p_gt_id IS NULL THEN
19139     l_gt_id := g_gt_id;
19140   ELSE
19141     l_gt_id := p_gt_id;
19142   END IF;
19143 /*
19144   INSERT INTO AR_LINE_APP_DETAIL_TMP
19145   (ACCTD_AMOUNT            ,
19146    REF_ACCOUNT_CLASS       ,
19147    AMOUNT                  ,
19148    APP_LEVEL               ,
19149    BASE_CURRENCY           ,
19150    ACTIVITY_BUCKET         ,
19151    CCID                    ,
19152    CCID_SECONDARY          ,
19153    CREATED_BY              ,
19154    CREATION_DATE           ,
19155    DET_ID                  ,
19156    FROM_ACCTD_AMOUNT       ,
19157    FROM_AMOUNT             ,
19158    FROM_CURRENCY           ,
19159    GROUP_ID                ,
19160    GT_ID                   ,
19161    LAST_UPDATED_BY         ,
19162    LAST_UPDATE_DATE        ,
19163    LAST_UPDATE_LOGIN       ,
19164    LEDGER_ID               ,
19165    LINE_ID                 ,
19166    ORG_ID                  ,
19167    REF_CUSTOMER_TRX_ID     ,
19168    REF_CUSTOMER_TRX_LINE_ID,
19169    REF_CUST_TRX_LINE_GL_DIST_ID,
19170    REF_DET_ID              ,
19171    REF_LINE_ID             ,
19172    SE_GT_ID                ,
19173    SOURCE_DATA_KEY1        ,
19174    SOURCE_DATA_KEY2        ,
19175    SOURCE_DATA_KEY3        ,
19176    SOURCE_DATA_KEY4        ,
19177    SOURCE_DATA_KEY5        ,
19178    SOURCE_ID               ,
19179    SOURCE_TABLE            ,
19180    SOURCE_TYPE             ,
19181    TAXABLE_ACCTD_AMOUNT    ,
19182    TAXABLE_AMOUNT          ,
19183    TAX_INC_FLAG            ,
19184    TAX_LINK_ID             ,
19185    TO_CURRENCY             ,
19186    REF_MF_DIST_FLAG        )
19187   SELECT
19188    ACCTD_AMOUNT            ,
19189    REF_ACCOUNT_CLASS       ,
19190    AMOUNT                  ,
19191    APP_LEVEL               ,
19192    BASE_CURRENCY           ,
19193    ACTIVITY_BUCKET         ,
19194    CCID                    ,
19195    CCID_SECONDARY          ,
19196    CREATED_BY              ,
19197    CREATION_DATE           ,
19198    DET_ID                  ,
19199    FROM_ACCTD_AMOUNT       ,
19200    FROM_AMOUNT             ,
19201    FROM_CURRENCY           ,
19202    GROUP_ID                ,
19203    GT_ID                   ,
19204    LAST_UPDATED_BY         ,
19205    LAST_UPDATE_DATE        ,
19206    LAST_UPDATE_LOGIN       ,
19207    LEDGER_ID               ,
19208    LINE_ID                 ,
19209    ORG_ID                  ,
19210    REF_CUSTOMER_TRX_ID     ,
19211    REF_CUSTOMER_TRX_LINE_ID,
19212    REF_CUST_TRX_LINE_GL_DIST_ID,
19213    REF_DET_ID              ,
19214    REF_LINE_ID             ,
19215    SE_GT_ID                ,
19216    SOURCE_DATA_KEY1        ,
19217    SOURCE_DATA_KEY2        ,
19218    SOURCE_DATA_KEY3        ,
19219    SOURCE_DATA_KEY4        ,
19220    SOURCE_DATA_KEY5        ,
19221    SOURCE_ID               ,
19222    SOURCE_TABLE            ,
19223    SOURCE_TYPE             ,
19224    TAXABLE_ACCTD_AMOUNT    ,
19225    TAXABLE_AMOUNT          ,
19226    TAX_INC_FLAG            ,
19227    TAX_LINK_ID             ,
19228    TO_CURRENCY             ,
19229    REF_MF_DIST_FLAG
19230   FROM AR_LINE_APP_DETAIL_GT
19231   WHERE GT_ID = l_gt_id;
19232 
19233   INSERT INTO ra_ar_tmp
19234   (ACCOUNT_CLASS               ,
19235    ACCTD_AMT                   ,
19236    ACCTD_AMT_CR                ,
19237    ACCTD_AMT_DR                ,
19238    ALLOC_ACCTD_AMT             ,
19239    ALLOC_AMT                   ,
19240    AMT                         ,
19241    AMT_CR                      ,
19242    AMT_DR                      ,
19243    BASE_CHRG_PRO_ACCTD_AMT     ,
19244    BASE_CHRG_PRO_AMT           ,
19245    BASE_CURRENCY               ,
19246    BASE_DIST_ACCTD_AMT         ,
19247    BASE_DIST_AMT               ,
19248    BASE_DIST_CHRG_ACCTD_AMT    ,
19249    BASE_DIST_CHRG_AMT          ,
19250    BASE_DIST_FRT_ACCTD_AMT     ,
19251    BASE_DIST_FRT_AMT           ,
19252    BASE_DIST_TAX_ACCTD_AMT     ,
19253    BASE_DIST_TAX_AMT           ,
19254    BASE_ED_CHRG_PRO_ACCTD_AMT  ,
19255    BASE_ED_CHRG_PRO_AMT        ,
19256    BASE_ED_DIST_ACCTD_AMT      ,
19257    BASE_ED_DIST_AMT            ,
19258    BASE_ED_DIST_CHRG_ACCTD_AMT ,
19259    BASE_ED_DIST_CHRG_AMT       ,
19260    BASE_ED_DIST_FRT_ACCTD_AMT  ,
19261    BASE_ED_DIST_FRT_AMT        ,
19262    BASE_ED_DIST_TAX_ACCTD_AMT  ,
19263    BASE_ED_DIST_TAX_AMT        ,
19264    BASE_ED_FRT_PRO_ACCTD_AMT   ,
19265    BASE_ED_FRT_PRO_AMT         ,
19266    BASE_ED_PRO_ACCTD_AMT       ,
19267    BASE_ED_PRO_AMT             ,
19268    BASE_ED_TAX_PRO_ACCTD_AMT   ,
19269    BASE_ED_TAX_PRO_AMT         ,
19270    BASE_FRT_PRO_ACCTD_AMT      ,
19271    BASE_FRT_PRO_AMT            ,
19272    BASE_PRO_ACCTD_AMT          ,
19273    BASE_PRO_AMT                ,
19274    BASE_TAX_PRO_ACCTD_AMT      ,
19275    BASE_TAX_PRO_AMT            ,
19276    BASE_UNED_CHRG_PRO_ACCTD_AMT     ,
19277    BASE_UNED_CHRG_PRO_AMT      ,
19278    BASE_UNED_DIST_ACCTD_AMT    ,
19279    BASE_UNED_DIST_AMT          ,
19280    BASE_UNED_DIST_CHRG_ACCTD_AMT    ,
19281    BASE_UNED_DIST_CHRG_AMT     ,
19282    BASE_UNED_DIST_FRT_ACCTD_AMT     ,
19283    BASE_UNED_DIST_FRT_AMT      ,
19284    BASE_UNED_DIST_TAX_ACCTD_AMT     ,
19285    BASE_UNED_DIST_TAX_AMT      ,
19286    BASE_UNED_FRT_PRO_ACCTD_AMT ,
19287    BASE_UNED_FRT_PRO_AMT       ,
19288    BASE_UNED_PRO_ACCTD_AMT     ,
19289    BASE_UNED_PRO_AMT           ,
19290    BASE_UNED_TAX_PRO_ACCTD_AMT ,
19291    BASE_UNED_TAX_PRO_AMT       ,
19292    ACTIVITY_BUCKET             ,
19293    BUC_ALLOC_ACCTD_AMT         ,
19294    BUC_ALLOC_AMT               ,
19295    BUC_CHRG_ALLOC_ACCTD_AMT    ,
19296    BUC_CHRG_ALLOC_AMT          ,
19297    BUC_ED_ALLOC_ACCTD_AMT      ,
19298    BUC_ED_ALLOC_AMT            ,
19299    BUC_ED_CHRG_ALLOC_ACCTD_AMT ,
19300    BUC_ED_CHRG_ALLOC_AMT       ,
19301    BUC_ED_FRT_ALLOC_ACCTD_AMT  ,
19302    BUC_ED_FRT_ALLOC_AMT        ,
19303    BUC_ED_TAX_ALLOC_ACCTD_AMT  ,
19304    BUC_ED_TAX_ALLOC_AMT        ,
19305    BUC_FRT_ALLOC_ACCTD_AMT     ,
19306    BUC_FRT_ALLOC_AMT           ,
19307    BUC_TAX_ALLOC_ACCTD_AMT     ,
19308    BUC_TAX_ALLOC_AMT           ,
19309    BUC_UNED_ALLOC_ACCTD_AMT    ,
19310    BUC_UNED_ALLOC_AMT          ,
19311    BUC_UNED_CHRG_ALLOC_ACCTD_AMT    ,
19312    BUC_UNED_CHRG_ALLOC_AMT     ,
19313    BUC_UNED_FRT_ALLOC_ACCTD_AMT     ,
19314    BUC_UNED_FRT_ALLOC_AMT      ,
19315    BUC_UNED_TAX_ALLOC_ACCTD_AMT     ,
19316    BUC_UNED_TAX_ALLOC_AMT      ,
19317    CCID                        ,
19318    CCID_SECONDARY              ,
19319    CHRG_REM_ACCTD_AMT          ,
19320    CHRG_REM_AMT                ,
19321    DET_ID                      ,
19322    DIST_ACCTD_AMT              ,
19323    DIST_AMT                    ,
19324    DIST_CHRG_ACCTD_AMT         ,
19325    DIST_CHRG_AMT               ,
19326    DIST_ED_ACCTD_AMT           ,
19327    DIST_ED_AMT                 ,
19328    DIST_ED_CHRG_ACCTD_AMT      ,
19329    DIST_ED_CHRG_AMT            ,
19330    DIST_ED_FRT_ACCTD_AMT       ,
19331    DIST_ED_FRT_AMT             ,
19332    DIST_ED_TAX_ACCTD_AMT       ,
19333    DIST_ED_TAX_AMT             ,
19334    DIST_FRT_ACCTD_AMT          ,
19335    DIST_FRT_AMT                ,
19336    DIST_TAX_ACCTD_AMT          ,
19337    DIST_TAX_AMT                ,
19338    DIST_UNED_ACCTD_AMT         ,
19339    DIST_UNED_AMT               ,
19340    DIST_UNED_CHRG_ACCTD_AMT    ,
19341    DIST_UNED_CHRG_AMT          ,
19342    DIST_UNED_FRT_ACCTD_AMT     ,
19343    DIST_UNED_FRT_AMT           ,
19344    DIST_UNED_TAX_ACCTD_AMT     ,
19345    DIST_UNED_TAX_AMT           ,
19346    DUE_ORIG_ACCTD_AMT          ,
19347    DUE_ORIG_AMT                ,
19348    DUE_REM_ACCTD_AMT           ,
19349    DUE_REM_AMT                 ,
19350    ELMT_CHRG_PRO_ACCTD_AMT     ,
19351    ELMT_CHRG_PRO_AMT           ,
19352    ELMT_ED_CHRG_PRO_ACCTD_AMT  ,
19353    ELMT_ED_CHRG_PRO_AMT        ,
19354    ELMT_ED_FRT_PRO_ACCTD_AMT   ,
19355    ELMT_ED_FRT_PRO_AMT         ,
19356    ELMT_ED_PRO_ACCTD_AMT       ,
19357    ELMT_ED_PRO_AMT             ,
19358    ELMT_ED_TAX_PRO_ACCTD_AMT   ,
19359    ELMT_ED_TAX_PRO_AMT         ,
19360    ELMT_FRT_PRO_ACCTD_AMT      ,
19361    ELMT_FRT_PRO_AMT            ,
19362    ELMT_PRO_ACCTD_AMT          ,
19363    ELMT_PRO_AMT                ,
19364    ELMT_TAX_PRO_ACCTD_AMT      ,
19365    ELMT_TAX_PRO_AMT            ,
19366    ELMT_UNED_CHRG_PRO_ACCTD_AMT      ,
19367    ELMT_UNED_CHRG_PRO_AMT      ,
19368    ELMT_UNED_FRT_PRO_ACCTD_AMT ,
19369    ELMT_UNED_FRT_PRO_AMT       ,
19370    ELMT_UNED_PRO_ACCTD_AMT     ,
19371    ELMT_UNED_PRO_AMT           ,
19372    ELMT_UNED_TAX_PRO_ACCTD_AMT ,
19373    ELMT_UNED_TAX_PRO_AMT       ,
19374    FROM_ACCTD_AMT_CR           ,
19375    FROM_ACCTD_AMT_DR           ,
19376    FROM_ALLOC_ACCTD_AMT        ,
19377    FROM_ALLOC_AMT              ,
19378    FROM_CURRENCY               ,
19379    FRT_ADJ_REM_ACCTD_AMT       ,
19380    FRT_ADJ_REM_AMT             ,
19381    FRT_ORIG_ACCTD_AMT          ,
19382    FRT_ORIG_AMT                ,
19383    FRT_REM_ACCTD_AMT           ,
19384    FRT_REM_AMT                 ,
19385    GP_LEVEL                    ,
19386    GROUP_ID                    ,
19387    GT_ID                       ,
19388    LINE_ID                     ,
19389    LINE_TYPE                   ,
19390    REF_CUSTOMER_TRX_ID         ,
19391    REF_CUSTOMER_TRX_LINE_ID    ,
19392    REF_CUST_TRX_LINE_GL_DIST_ID      ,
19393    REF_DET_ID                  ,
19394    REF_LINE_ID                 ,
19395    SET_OF_BOOKS_ID             ,
19396    SE_GT_ID                    ,
19397    SOB_TYPE                    ,
19398    SOURCE_DATA_KEY1            ,
19399    SOURCE_DATA_KEY2            ,
19400    SOURCE_DATA_KEY3            ,
19401    SOURCE_DATA_KEY4            ,
19402    SOURCE_DATA_KEY5            ,
19403    SOURCE_ID                   ,
19404    SOURCE_TABLE                ,
19405    SOURCE_TYPE                 ,
19406    SUM_GP_LINE_CHRG_REM_ACCTD_AMT   ,
19407    SUM_GP_LINE_CHRG_REM_AMT    ,
19408    SUM_GP_LINE_FRT_ORIG_ACCTD_AMT   ,
19409    SUM_GP_LINE_FRT_ORIG_AMT    ,
19410    SUM_GP_LINE_FRT_REM_ACCTD_AMT    ,
19411    SUM_GP_LINE_FRT_REM_AMT     ,
19412    SUM_GP_LINE_ORIG_ACCTD_AMT  ,
19413    SUM_GP_LINE_ORIG_AMT        ,
19414    SUM_GP_LINE_REM_ACCTD_AMT   ,
19415    SUM_GP_LINE_REM_AMT         ,
19416    SUM_GP_LINE_TAX_ORIG_ACCTD_AMT   ,
19417    SUM_GP_LINE_TAX_ORIG_AMT    ,
19418    SUM_GP_LINE_TAX_REM_ACCTD_AMT    ,
19419    SUM_GP_LINE_TAX_REM_AMT     ,
19420    SUM_LINE_CHRG_REM_ACCTD_AMT ,
19421    SUM_LINE_CHRG_REM_AMT       ,
19422    SUM_LINE_FRT_ORIG_ACCTD_AMT ,
19423    SUM_LINE_FRT_ORIG_AMT       ,
19424    SUM_LINE_FRT_REM_ACCTD_AMT  ,
19425    SUM_LINE_FRT_REM_AMT        ,
19426    SUM_LINE_ORIG_ACCTD_AMT     ,
19427    SUM_LINE_ORIG_AMT           ,
19428    SUM_LINE_REM_ACCTD_AMT      ,
19429    SUM_LINE_REM_AMT            ,
19430    SUM_LINE_TAX_ORIG_ACCTD_AMT ,
19431    SUM_LINE_TAX_ORIG_AMT       ,
19432    SUM_LINE_TAX_REM_ACCTD_AMT  ,
19433    SUM_LINE_TAX_REM_AMT        ,
19434    TAX_INC_FLAG                ,
19435    TAX_LINK_ID                 ,
19436    TAX_ORIG_ACCTD_AMT          ,
19437    TAX_ORIG_AMT                ,
19438    TAX_REM_ACCTD_AMT           ,
19439    TAX_REM_AMT                 ,
19440    TL_ALLOC_ACCTD_AMT          ,
19441    TL_ALLOC_AMT                ,
19442    TL_CHRG_ALLOC_ACCTD_AMT     ,
19443    TL_CHRG_ALLOC_AMT           ,
19444    TL_ED_ALLOC_ACCTD_AMT       ,
19445    TL_ED_ALLOC_AMT             ,
19446    TL_ED_CHRG_ALLOC_ACCTD_AMT  ,
19447    TL_ED_CHRG_ALLOC_AMT        ,
19448    TL_ED_FRT_ALLOC_ACCTD_AMT   ,
19449    TL_ED_FRT_ALLOC_AMT         ,
19450    TL_ED_TAX_ALLOC_ACCTD_AMT   ,
19451    TL_ED_TAX_ALLOC_AMT         ,
19452    TL_FRT_ALLOC_ACCTD_AMT      ,
19453    TL_FRT_ALLOC_AMT            ,
19454    TL_TAX_ALLOC_ACCTD_AMT      ,
19455    TL_TAX_ALLOC_AMT            ,
19456    TL_UNED_ALLOC_ACCTD_AMT     ,
19457    TL_UNED_ALLOC_AMT           ,
19458    TL_UNED_CHRG_ALLOC_ACCTD_AMT  ,
19459    TL_UNED_CHRG_ALLOC_AMT      ,
19460    TL_UNED_FRT_ALLOC_ACCTD_AMT ,
19461    TL_UNED_FRT_ALLOC_AMT       ,
19462    TL_UNED_TAX_ALLOC_ACCTD_AMT ,
19463    TL_UNED_TAX_ALLOC_AMT       ,
19464    TO_CURRENCY                 ,
19465    REF_MF_DIST_FLAG            ,
19466    CHRG_ORIG_AMT               ,
19467    CHRG_ORIG_ACCTD_AMT         ,
19468    CHRG_ADJ_REM_AMT            ,
19469    CHRG_ADJ_REM_ACCTD_AMT      ,
19470    SUM_LINE_CHRG_ORIG_AMT      ,
19471    SUM_LINE_CHRG_ORIG_ACCTD_AMT       ,
19472    SUM_GP_LINE_CHRG_ORIG_AMT   ,
19473    SUM_GP_LINE_CHRG_ORIG_ACCTD_AM     ,
19474    INT_LINE_AMOUNT             ,
19475    INT_TAX_AMOUNT              ,
19476    INT_ED_LINE_AMOUNT          ,
19477    INT_ED_TAX_AMOUNT           ,
19478    INT_UNED_LINE_AMOUNT        ,
19479    INT_UNED_TAX_AMOUNT         ,
19480    SUM_INT_LINE_AMOUNT         ,
19481    SUM_INT_TAX_AMOUNT          ,
19482    SUM_INT_ED_LINE_AMOUNT      ,
19483    SUM_INT_ED_TAX_AMOUNT       ,
19484    SUM_INT_UNED_LINE_AMOUNT    ,
19485    SUM_INT_UNED_TAX_AMOUNT     )
19486    SELECT
19487    ACCOUNT_CLASS               ,
19488    ACCTD_AMT                   ,
19489    ACCTD_AMT_CR                ,
19490    ACCTD_AMT_DR                ,
19491    ALLOC_ACCTD_AMT             ,
19492    ALLOC_AMT                   ,
19493    AMT                         ,
19494    AMT_CR                      ,
19495    AMT_DR                      ,
19496    BASE_CHRG_PRO_ACCTD_AMT     ,
19497    BASE_CHRG_PRO_AMT           ,
19498    BASE_CURRENCY               ,
19499    BASE_DIST_ACCTD_AMT         ,
19500    BASE_DIST_AMT               ,
19501    BASE_DIST_CHRG_ACCTD_AMT    ,
19502    BASE_DIST_CHRG_AMT          ,
19503    BASE_DIST_FRT_ACCTD_AMT     ,
19504    BASE_DIST_FRT_AMT           ,
19505    BASE_DIST_TAX_ACCTD_AMT     ,
19506    BASE_DIST_TAX_AMT           ,
19507    BASE_ED_CHRG_PRO_ACCTD_AMT  ,
19508    BASE_ED_CHRG_PRO_AMT        ,
19509    BASE_ED_DIST_ACCTD_AMT      ,
19510    BASE_ED_DIST_AMT            ,
19511    BASE_ED_DIST_CHRG_ACCTD_AMT ,
19512    BASE_ED_DIST_CHRG_AMT       ,
19513    BASE_ED_DIST_FRT_ACCTD_AMT  ,
19514    BASE_ED_DIST_FRT_AMT        ,
19515    BASE_ED_DIST_TAX_ACCTD_AMT  ,
19516    BASE_ED_DIST_TAX_AMT        ,
19517    BASE_ED_FRT_PRO_ACCTD_AMT   ,
19518    BASE_ED_FRT_PRO_AMT         ,
19519    BASE_ED_PRO_ACCTD_AMT       ,
19520    BASE_ED_PRO_AMT             ,
19521    BASE_ED_TAX_PRO_ACCTD_AMT   ,
19522    BASE_ED_TAX_PRO_AMT         ,
19523    BASE_FRT_PRO_ACCTD_AMT      ,
19524    BASE_FRT_PRO_AMT            ,
19525    BASE_PRO_ACCTD_AMT          ,
19526    BASE_PRO_AMT                ,
19527    BASE_TAX_PRO_ACCTD_AMT      ,
19528    BASE_TAX_PRO_AMT            ,
19529    BASE_UNED_CHRG_PRO_ACCTD_AMT     ,
19530    BASE_UNED_CHRG_PRO_AMT      ,
19531    BASE_UNED_DIST_ACCTD_AMT    ,
19532    BASE_UNED_DIST_AMT          ,
19533    BASE_UNED_DIST_CHRG_ACCTD_AMT    ,
19534    BASE_UNED_DIST_CHRG_AMT     ,
19535    BASE_UNED_DIST_FRT_ACCTD_AMT     ,
19536    BASE_UNED_DIST_FRT_AMT      ,
19537    BASE_UNED_DIST_TAX_ACCTD_AMT     ,
19538    BASE_UNED_DIST_TAX_AMT      ,
19539    BASE_UNED_FRT_PRO_ACCTD_AMT ,
19540    BASE_UNED_FRT_PRO_AMT       ,
19541    BASE_UNED_PRO_ACCTD_AMT     ,
19542    BASE_UNED_PRO_AMT           ,
19543    BASE_UNED_TAX_PRO_ACCTD_AMT ,
19544    BASE_UNED_TAX_PRO_AMT       ,
19545    ACTIVITY_BUCKET             ,
19546    BUC_ALLOC_ACCTD_AMT         ,
19547    BUC_ALLOC_AMT               ,
19548    BUC_CHRG_ALLOC_ACCTD_AMT    ,
19549    BUC_CHRG_ALLOC_AMT          ,
19550    BUC_ED_ALLOC_ACCTD_AMT      ,
19551    BUC_ED_ALLOC_AMT            ,
19552    BUC_ED_CHRG_ALLOC_ACCTD_AMT ,
19553    BUC_ED_CHRG_ALLOC_AMT       ,
19554    BUC_ED_FRT_ALLOC_ACCTD_AMT  ,
19555    BUC_ED_FRT_ALLOC_AMT        ,
19556    BUC_ED_TAX_ALLOC_ACCTD_AMT  ,
19557    BUC_ED_TAX_ALLOC_AMT        ,
19558    BUC_FRT_ALLOC_ACCTD_AMT     ,
19559    BUC_FRT_ALLOC_AMT           ,
19560    BUC_TAX_ALLOC_ACCTD_AMT     ,
19561    BUC_TAX_ALLOC_AMT           ,
19562    BUC_UNED_ALLOC_ACCTD_AMT    ,
19563    BUC_UNED_ALLOC_AMT          ,
19564    BUC_UNED_CHRG_ALLOC_ACCTD_AMT    ,
19565    BUC_UNED_CHRG_ALLOC_AMT     ,
19566    BUC_UNED_FRT_ALLOC_ACCTD_AMT     ,
19567    BUC_UNED_FRT_ALLOC_AMT      ,
19568    BUC_UNED_TAX_ALLOC_ACCTD_AMT     ,
19569    BUC_UNED_TAX_ALLOC_AMT      ,
19570    CCID                        ,
19571    CCID_SECONDARY              ,
19572    CHRG_REM_ACCTD_AMT          ,
19573    CHRG_REM_AMT                ,
19574    DET_ID                      ,
19575    DIST_ACCTD_AMT              ,
19576    DIST_AMT                    ,
19577    DIST_CHRG_ACCTD_AMT         ,
19578    DIST_CHRG_AMT               ,
19579    DIST_ED_ACCTD_AMT           ,
19580    DIST_ED_AMT                 ,
19581    DIST_ED_CHRG_ACCTD_AMT      ,
19582    DIST_ED_CHRG_AMT            ,
19583    DIST_ED_FRT_ACCTD_AMT       ,
19584    DIST_ED_FRT_AMT             ,
19585    DIST_ED_TAX_ACCTD_AMT       ,
19586    DIST_ED_TAX_AMT             ,
19587    DIST_FRT_ACCTD_AMT          ,
19588    DIST_FRT_AMT                ,
19589    DIST_TAX_ACCTD_AMT          ,
19590    DIST_TAX_AMT                ,
19591    DIST_UNED_ACCTD_AMT         ,
19592    DIST_UNED_AMT               ,
19593    DIST_UNED_CHRG_ACCTD_AMT    ,
19594    DIST_UNED_CHRG_AMT          ,
19595    DIST_UNED_FRT_ACCTD_AMT     ,
19596    DIST_UNED_FRT_AMT           ,
19597    DIST_UNED_TAX_ACCTD_AMT     ,
19598    DIST_UNED_TAX_AMT           ,
19599    DUE_ORIG_ACCTD_AMT          ,
19600    DUE_ORIG_AMT                ,
19601    DUE_REM_ACCTD_AMT           ,
19602    DUE_REM_AMT                 ,
19603    ELMT_CHRG_PRO_ACCTD_AMT     ,
19604    ELMT_CHRG_PRO_AMT           ,
19605    ELMT_ED_CHRG_PRO_ACCTD_AMT  ,
19606    ELMT_ED_CHRG_PRO_AMT        ,
19607    ELMT_ED_FRT_PRO_ACCTD_AMT   ,
19608    ELMT_ED_FRT_PRO_AMT         ,
19609    ELMT_ED_PRO_ACCTD_AMT       ,
19610    ELMT_ED_PRO_AMT             ,
19611    ELMT_ED_TAX_PRO_ACCTD_AMT   ,
19612    ELMT_ED_TAX_PRO_AMT         ,
19613    ELMT_FRT_PRO_ACCTD_AMT      ,
19614    ELMT_FRT_PRO_AMT            ,
19615    ELMT_PRO_ACCTD_AMT          ,
19616    ELMT_PRO_AMT                ,
19617    ELMT_TAX_PRO_ACCTD_AMT      ,
19618    ELMT_TAX_PRO_AMT            ,
19619    ELMT_UNED_CHRG_PRO_ACCTD_AMT      ,
19620    ELMT_UNED_CHRG_PRO_AMT      ,
19621    ELMT_UNED_FRT_PRO_ACCTD_AMT ,
19622    ELMT_UNED_FRT_PRO_AMT       ,
19623    ELMT_UNED_PRO_ACCTD_AMT     ,
19624    ELMT_UNED_PRO_AMT           ,
19625    ELMT_UNED_TAX_PRO_ACCTD_AMT ,
19626    ELMT_UNED_TAX_PRO_AMT       ,
19627    FROM_ACCTD_AMT_CR           ,
19628    FROM_ACCTD_AMT_DR           ,
19629    FROM_ALLOC_ACCTD_AMT        ,
19630    FROM_ALLOC_AMT              ,
19631    FROM_CURRENCY               ,
19632    FRT_ADJ_REM_ACCTD_AMT       ,
19633    FRT_ADJ_REM_AMT             ,
19634    FRT_ORIG_ACCTD_AMT          ,
19635    FRT_ORIG_AMT                ,
19636    FRT_REM_ACCTD_AMT           ,
19637    FRT_REM_AMT                 ,
19638    GP_LEVEL                    ,
19639    GROUP_ID                    ,
19640    GT_ID                       ,
19641    LINE_ID                     ,
19642    LINE_TYPE                   ,
19643    REF_CUSTOMER_TRX_ID         ,
19644    REF_CUSTOMER_TRX_LINE_ID    ,
19645    REF_CUST_TRX_LINE_GL_DIST_ID      ,
19646    REF_DET_ID                  ,
19647    REF_LINE_ID                 ,
19648    SET_OF_BOOKS_ID             ,
19649    SE_GT_ID                    ,
19650    SOB_TYPE                    ,
19651    SOURCE_DATA_KEY1            ,
19652    SOURCE_DATA_KEY2            ,
19653    SOURCE_DATA_KEY3            ,
19654    SOURCE_DATA_KEY4            ,
19655    SOURCE_DATA_KEY5            ,
19656    SOURCE_ID                   ,
19657    SOURCE_TABLE                ,
19658    SOURCE_TYPE                 ,
19659    SUM_GP_LINE_CHRG_REM_ACCTD_AMT   ,
19660    SUM_GP_LINE_CHRG_REM_AMT    ,
19661    SUM_GP_LINE_FRT_ORIG_ACCTD_AMT   ,
19662    SUM_GP_LINE_FRT_ORIG_AMT    ,
19663    SUM_GP_LINE_FRT_REM_ACCTD_AMT    ,
19664    SUM_GP_LINE_FRT_REM_AMT     ,
19665    SUM_GP_LINE_ORIG_ACCTD_AMT  ,
19666    SUM_GP_LINE_ORIG_AMT        ,
19667    SUM_GP_LINE_REM_ACCTD_AMT   ,
19668    SUM_GP_LINE_REM_AMT         ,
19669    SUM_GP_LINE_TAX_ORIG_ACCTD_AMT   ,
19670    SUM_GP_LINE_TAX_ORIG_AMT    ,
19671    SUM_GP_LINE_TAX_REM_ACCTD_AMT    ,
19672    SUM_GP_LINE_TAX_REM_AMT     ,
19673    SUM_LINE_CHRG_REM_ACCTD_AMT ,
19674    SUM_LINE_CHRG_REM_AMT       ,
19675    SUM_LINE_FRT_ORIG_ACCTD_AMT ,
19676    SUM_LINE_FRT_ORIG_AMT       ,
19677    SUM_LINE_FRT_REM_ACCTD_AMT  ,
19678    SUM_LINE_FRT_REM_AMT        ,
19679    SUM_LINE_ORIG_ACCTD_AMT     ,
19680    SUM_LINE_ORIG_AMT           ,
19681    SUM_LINE_REM_ACCTD_AMT      ,
19682    SUM_LINE_REM_AMT            ,
19683    SUM_LINE_TAX_ORIG_ACCTD_AMT ,
19684    SUM_LINE_TAX_ORIG_AMT       ,
19685    SUM_LINE_TAX_REM_ACCTD_AMT  ,
19686    SUM_LINE_TAX_REM_AMT        ,
19687    TAX_INC_FLAG                ,
19688    TAX_LINK_ID                 ,
19689    TAX_ORIG_ACCTD_AMT          ,
19690    TAX_ORIG_AMT                ,
19691    TAX_REM_ACCTD_AMT           ,
19692    TAX_REM_AMT                 ,
19693    TL_ALLOC_ACCTD_AMT          ,
19694    TL_ALLOC_AMT                ,
19695    TL_CHRG_ALLOC_ACCTD_AMT     ,
19696    TL_CHRG_ALLOC_AMT           ,
19697    TL_ED_ALLOC_ACCTD_AMT       ,
19698    TL_ED_ALLOC_AMT             ,
19699    TL_ED_CHRG_ALLOC_ACCTD_AMT  ,
19700    TL_ED_CHRG_ALLOC_AMT        ,
19701    TL_ED_FRT_ALLOC_ACCTD_AMT   ,
19702    TL_ED_FRT_ALLOC_AMT         ,
19703    TL_ED_TAX_ALLOC_ACCTD_AMT   ,
19704    TL_ED_TAX_ALLOC_AMT         ,
19705    TL_FRT_ALLOC_ACCTD_AMT      ,
19706    TL_FRT_ALLOC_AMT            ,
19707    TL_TAX_ALLOC_ACCTD_AMT      ,
19708    TL_TAX_ALLOC_AMT            ,
19709    TL_UNED_ALLOC_ACCTD_AMT     ,
19710    TL_UNED_ALLOC_AMT           ,
19711    TL_UNED_CHRG_ALLOC_ACCTD_AMT  ,
19712    TL_UNED_CHRG_ALLOC_AMT      ,
19713    TL_UNED_FRT_ALLOC_ACCTD_AMT ,
19714    TL_UNED_FRT_ALLOC_AMT       ,
19715    TL_UNED_TAX_ALLOC_ACCTD_AMT ,
19716    TL_UNED_TAX_ALLOC_AMT       ,
19717    TO_CURRENCY                 ,
19718    REF_MF_DIST_FLAG            ,
19719    CHRG_ORIG_AMT               ,
19720    CHRG_ORIG_ACCTD_AMT         ,
19721    CHRG_ADJ_REM_AMT            ,
19722    CHRG_ADJ_REM_ACCTD_AMT      ,
19723    SUM_LINE_CHRG_ORIG_AMT      ,
19724    SUM_LINE_CHRG_ORIG_ACCTD_AMT       ,
19725    SUM_GP_LINE_CHRG_ORIG_AMT   ,
19726    SUM_GP_LINE_CHRG_ORIG_ACCTD_AM     ,
19727    INT_LINE_AMOUNT             ,
19728    INT_TAX_AMOUNT              ,
19729    INT_ED_LINE_AMOUNT          ,
19730    INT_ED_TAX_AMOUNT           ,
19731    INT_UNED_LINE_AMOUNT        ,
19732    INT_UNED_TAX_AMOUNT         ,
19733    SUM_INT_LINE_AMOUNT         ,
19734    SUM_INT_TAX_AMOUNT          ,
19735    SUM_INT_ED_LINE_AMOUNT      ,
19736    SUM_INT_ED_TAX_AMOUNT       ,
19737    SUM_INT_UNED_LINE_AMOUNT    ,
19738    SUM_INT_UNED_TAX_AMOUNT
19739    FROM ra_ar_gt
19740    WHERE gt_id = l_gt_id;
19741 */
19742 
19743 OPEN c(l_gt_id);
19744 LOOP
19745   FETCH c INTO l;
19746   EXIT WHEN c%NOTFOUND;
19747 IF PG_DEBUG = 'Y' THEN
19748 localdebug('<FROM_AMOUNT>'||l.FROM_AMOUNT||'</FROM_AMOUNT>');
19749 localdebug('<FROM_CURRENCY>'||l.FROM_CURRENCY||'</FROM_CURRENCY>');
19750 localdebug('<GROUP_ID>'||l.GROUP_ID||'</GROUP_ID>');
19751 localdebug('<GT_ID>'||l.GT_ID||'</GT_ID>');
19752 localdebug('<LAST_UPDATED_BY>'||l.LAST_UPDATED_BY||'</LAST_UPDATED_BY>');
19753 localdebug('<LAST_UPDATE_DATE>'||l.LAST_UPDATE_DATE||'</LAST_UPDATE_DATE>');
19754 localdebug('<LAST_UPDATE_LOGIN>'||l.LAST_UPDATE_LOGIN||'</LAST_UPDATE_LOGIN>');
19755 localdebug('<LEDGER_ID>'||l.LEDGER_ID||'</LEDGER_ID>');
19756 localdebug('<LINE_ID>'||l.LINE_ID||'</LINE_ID>');
19757 localdebug('<ORG_ID>'||l.ORG_ID||'</ORG_ID>');
19758 localdebug('<REF_CUSTOMER_TRX_ID>'||l.REF_CUSTOMER_TRX_ID||'</REF_CUSTOMER_TRX_ID>');
19759 localdebug('<REF_CUSTOMER_TRX_LINE_ID>'||l.REF_CUSTOMER_TRX_LINE_ID||'</REF_CUSTOMER_TRX_LINE_ID>');
19760 localdebug('<REF_CUST_TRX_LINE_GL_DIST_ID>'||l.REF_CUST_TRX_LINE_GL_DIST_ID||'</REF_CUST_TRX_LINE_GL_DIST_ID>');
19761 localdebug('<REF_DET_ID>'||l.REF_DET_ID||'</REF_DET_ID>');
19762 localdebug('<REF_LINE_ID>'||l.REF_LINE_ID||'</REF_LINE_ID>');
19763 localdebug('<SE_GT_ID>'||l.SE_GT_ID||'</SE_GT_ID>');
19764 localdebug('<SOURCE_DATA_KEY1>'||l.SOURCE_DATA_KEY1||'</SOURCE_DATA_KEY1>');
19765 localdebug('<SOURCE_DATA_KEY2>'||l.SOURCE_DATA_KEY2||'</SOURCE_DATA_KEY2>');
19766 localdebug('<SOURCE_DATA_KEY3>'||l.SOURCE_DATA_KEY3||'</SOURCE_DATA_KEY3>');
19767 localdebug('<SOURCE_DATA_KEY4>'||l.SOURCE_DATA_KEY4||'</SOURCE_DATA_KEY4>');
19768 localdebug('<SOURCE_DATA_KEY5>'||l.SOURCE_DATA_KEY5||'</SOURCE_DATA_KEY5>');
19769 localdebug('<SOURCE_ID>'||l.SOURCE_ID||'</SOURCE_ID>');
19770 localdebug('<SOURCE_TABLE>'||l.SOURCE_TABLE||'</SOURCE_TABLE>');
19771 localdebug('<SOURCE_TYPE>'||l.SOURCE_TYPE||'</SOURCE_TYPE>');
19772 localdebug('<TAXABLE_ACCTD_AMOUNT>'||l.TAXABLE_ACCTD_AMOUNT||'</TAXABLE_ACCTD_AMOUNT>');
19773 localdebug('<TAXABLE_AMOUNT>'||l.TAXABLE_AMOUNT||'</TAXABLE_AMOUNT>');
19774 localdebug('<TAX_INC_FLAG>'||l.TAX_INC_FLAG||'</TAX_INC_FLAG>');
19775 localdebug('<TAX_LINK_ID>'||l.TAX_LINK_ID||'</TAX_LINK_ID>');
19776 localdebug('<TO_CURRENCY>'||l.TO_CURRENCY||'</TO_CURRENCY>');
19777 localdebug('<REF_MF_DIST_FLAG>'||l.REF_MF_DIST_FLAG||'</REF_MF_DIST_FLAG>');
19778 localdebug('<ACCTD_AMOUNT>'||l.ACCTD_AMOUNT||'</ACCTD_AMOUNT>');
19779 localdebug('<REF_ACCOUNT_CLASS>'||l.REF_ACCOUNT_CLASS||'</REF_ACCOUNT_CLASS>');
19780 localdebug('<AMOUNT>'||l.AMOUNT||'</AMOUNT>');
19781 localdebug('<APP_LEVEL>'||l.APP_LEVEL||'</APP_LEVEL>');
19782 localdebug('<BASE_CURRENCY>'||l.BASE_CURRENCY||'</BASE_CURRENCY>');
19783 localdebug('<ACTIVITY_BUCKET>'||l.ACTIVITY_BUCKET||'</ACTIVITY_BUCKET>');
19784 localdebug('<CCID>'||l.CCID||'</CCID>');
19785 localdebug('<CCID_SECONDARY>'||l.CCID_SECONDARY||'</CCID_SECONDARY>');
19786 localdebug('<DET_ID>'||l.DET_ID||'</DET_ID>');
19787 localdebug('<FROM_ACCTD_AMOUNT>'||l.FROM_ACCTD_AMOUNT||'</FROM_ACCTD_AMOUNT>');
19788 END IF;
19789 
19790 END LOOP;
19791 CLOSE c;
19792 END;
19793 
19794 PROCEDURE get_diag_flag IS
19795 BEGIN
19796   IF g_diag_flag = 'NOT_SET' THEN
19797     g_diag_flag  := FND_PROFILE.VALUE('AR_EXTRACT_DIAG');
19798     IF g_diag_flag IS NULL THEN
19799       g_diag_flag  := 'N';
19800     END IF;
19801   END IF;
19802 END;
19803 
19804 END ARP_DET_DIST_PKG;