DBA Data[Home] [Help]

PACKAGE BODY: APPS.RA_LL_RCV_GROUPS_PKG

Source


1 PACKAGE BODY RA_LL_RCV_GROUPS_PKG AS
2 /*$Header: ARRWGLTB.pls 120.5.12010000.2 2008/08/25 19:05:03 mpsingh ship $ */
3 
4 PROCEDURE Delete_Row (
5     X_GROUP_ID  				 IN				 NUMBER,
6     X_CUSTOMER_TRX_ID  				 IN				 NUMBER,
7     X_CASH_RECEIPT_ID				 IN				 NUMBER
8 ) IS
9 BEGIN
10 
11     DELETE AR_ACTIVITY_DETAILS
12     WHERE  1 = 1
13     AND CASH_RECEIPT_ID = X_CASH_RECEIPT_ID
14     AND GROUP_ID = X_GROUP_ID
15     AND NVL(CURRENT_ACTIVITY_FLAG, 'Y') = 'Y' -- BUG 7241111
16     AND CUSTOMER_TRX_LINE_ID = (select customer_trx_line_id
17                                 from ra_customer_trx
18                                 where customer_trx_id = X_CUSTOMER_TRX_ID);
19 
20 
21     IF ( SQL%NOTFOUND ) THEN
22     -- 18 Oct 2005, don't need to raise error, when there are no rows
23     /*RAISE NO_DATA_FOUND;
24     */ null;
25     END IF;
26 END Delete_Row;
27 
28 PROCEDURE Insert_lintax_Rows (
29     X_GROUP_ID          IN NUMBER,
30     X_CASH_RECEIPT_ID   IN NUMBER,
31     X_CUSTOMER_TRX_ID   IN NUMBER,
32     X_lin               in number,
33     x_tax               in number                ,
34     X_lin_dsc           in number,
35     x_tax_dsc           in number                ,
36     x_CREATED_BY_MODULE in varchar2
37     -- Oct 04 added two param below
38     ,x_inv_to_rct_rate  in number default 1
39     ,x_rct_curr_code    in varchar2 default arpcurr.FunctionalCurrency
40 ) IS
41 
42 cursor c_lintax
43 is
44     select to_char(line.line_number) apply_to,
45     line.customer_trx_line_id LINE_ID,
46     -- No nvl needed in the foll amounts since arp_process_det_pkg.initialization
47     -- would have updated the values to not-nulls
48     line.source_data_key4 GROUP_ID ,
49     line.amount_due_remaining line_rem,
50     line.amount_due_original line_orig,
51     tax.amount_due_remaining tax_rem,
52     tax.amount_due_original tax_orig
53   from ra_customer_trx_lines line,
54   (select link_to_cust_trx_line_id,
55           line_type,
56           sum(nvl(amount_due_original,0)) amount_due_original,
57           sum(nvl(amount_due_remaining,0)) amount_due_remaining
58    from ra_customer_trx_lines
59    where   nvl(line_type,'TAX') =  'TAX'
60    group by link_to_cust_trx_line_id,
61           line_type
62   ) tax
63   where line.line_type = 'LINE'
64     and line.source_data_key4 = x_group_id
65     and   line.customer_trx_line_id = tax.link_to_cust_trx_line_id (+)
66     and line.customer_trx_id = x_customer_trx_id;
67 
68   lintax_row c_lintax%rowtype;
69 
70   line_count    number;
71   --iterator     number := 0;
72   iterator     number := 1;
73 
74   all_linrem_tot number;
75   all_linorig_tot number;
76   line_run_tot number := 0;
77   line_2b_applied  number;
78 
79   all_taxrem_tot number;
80   all_taxorig_tot number;
81   tax_run_tot number := 0;
82   tax_2b_applied  number;
83 
84   -- Added Dec 7, 2005 - Bug 4775656. Discounts are not getting saved from Summary
85   lindsc_run_tot number := 0;
86   lindsc_2b_applied  number;
87 
88   taxdsc_run_tot number := 0;
89   taxdsc_2b_applied  number;
90   -- End of additions for bug 4775656
91 
92   --no need for the total for all lines, for amt_app_from
93   --since we are not pro-rating amt_app_from. To get amt_app_from
94   --we are just multiplying the inv_to_rct_rate into prorated amt
95   /*all_amt_app_from number;
96   amt_app_from_run_tot number := 0;*/
97   cross_currency_2b_applied number;
98 
99   l_line_id   NUMBER;
100 
101 BEGIN
102   begin
103     select count(*) ,
104     sum(nvl(line.amount_due_remaining,0)),
105     sum(nvl(tax.amount_due_remaining,0)),
106     sum(nvl(line.amount_due_original,0)),
107     sum(nvl(tax.amount_due_original,0))
108     into line_count,
109          all_linrem_tot, all_taxrem_tot,
110          all_linorig_tot, all_taxorig_tot
111     from ra_customer_trx_lines line,
112     (select link_to_cust_trx_line_id,
113           line_type,
114           sum(nvl(amount_due_original,0)) amount_due_original,
115           sum(nvl(amount_due_remaining,0)) amount_due_remaining
116      from ra_customer_trx_lines
117      where nvl(line_type,'TAX') =  'TAX'
118      group by link_to_cust_trx_line_id,
119           line_type
120     ) tax
121     where line.customer_trx_id = x_customer_trx_id
122     and line.line_type = 'LINE'
123     and line.source_data_key4 = x_group_id
124     and   line.customer_trx_line_id = tax.link_to_cust_trx_line_id (+)
125     ;
126   exception
127     when others then
128       arp_standard.debug ('Error in calcuating the total of all rows', 'plsql',
129                           'RA_LL_RCV_GROUPS_PKG.INSERT_ROW', 1);
130       raise ;
131   end;
132   for lintax_row in c_lintax loop
133 
134     -- Prorate the Line Amount
135     if iterator = line_count then
136       arp_standard.debug ('i='||to_char(iterator)||'.'|| 'THIS IS THE LAST. line_run_tot=' || line_run_tot);
137       line_2b_applied := nvl(x_lin,0) - line_run_tot;
138       tax_2b_applied := nvl(x_tax,0) - tax_run_tot;
139 
140       -- Added Dec 7, 2005 - Bug 4775656. Discounts are not getting saved from Summary
141       lindsc_2b_applied := nvl(x_lin_dsc,0) - lindsc_run_tot;
142       taxdsc_2b_applied := nvl(x_tax_dsc,0) - taxdsc_run_tot;
143       -- End of additions for bug 4775656
144     else -- If the adr on the invoice is zero, then
145       if all_linrem_tot > 0 then
146         arp_standard.debug ('i='||to_char(iterator)||'.'||
147                             'NOT LAST, all_linrem_tot<>0. line_run_tot=' || line_run_tot
148                             || '. all_linorig_tot=' || all_linorig_tot);
149         line_2b_applied := arpcurr.currRound(lintax_row.line_rem * nvl(x_lin,0) / all_linrem_tot);
150 
151       else -- Overappl (all_linrem_tot < 0) should be done at the UI level,
152            -- so this means all_linrem_tot = 0
153         arp_standard.debug ('i='||to_char(iterator)||'.'||
154                             'NOT LAST, all_linrem_tot=0. line_run_tot=' || line_run_tot
155                             || '. all_linorig_tot=' || all_linorig_tot);
156         if all_linorig_tot <> 0 then
157           line_2b_applied := arpcurr.currRound(lintax_row.line_orig * nvl(x_lin,0) / all_linorig_tot);
158         else
159           line_2b_applied := 0;
160         end if;
161       end if;
162 
163      --Prorate the Tax Amount
164 
165      if all_taxrem_tot > 0 then
166        tax_2b_applied := arpcurr.currRound(lintax_row.tax_rem * nvl(x_tax,0) / all_taxrem_tot);
167      else-- Overappl (all_taxrem_tot < 0) should be done at the UI level,
168            -- so this means all_taxrem_tot = 0
169       if all_taxorig_tot <> 0 then
170          tax_2b_applied := arpcurr.currRound(lintax_row.tax_orig * nvl(x_tax,0) / all_taxorig_tot);
171        else
172          tax_2b_applied := 0;
173        end if;
174      end if ;
175 
176       -- Added Dec 7, 2005 - Bug 4775656. Discounts are not getting saved from Summary
177       -- Proate in the same ratio as that of the lin2bapplied / all_lin2bapplied_tot
178         if nvl(x_lin,0) <> 0 then
179           lindsc_2b_applied := arpcurr.currRound(x_lin_dsc * nvl(line_2b_applied,0) /  nvl(x_lin,0) );
180         else
181           lindsc_2b_applied := 0;
182         end if;
183       -- Proate in the same ratio as that of the tax2bapplied / all_tax2bapplied_tot
184         if nvl(x_tax,0) <> 0 then
185           taxdsc_2b_applied := arpcurr.currRound(x_tax_dsc * nvl(tax_2b_applied,0) / nvl(x_tax,0) );
186         else
187           taxdsc_2b_applied := 0;
188         end if;
189       -- End of additions for bug 4775656
190     end if;
191 
192     -- Calculate the Allocated Receipt Amount for the line
193     cross_currency_2b_applied := arp_util.currRound((line_2b_applied+tax_2b_applied) * nvl(x_inv_to_rct_rate,1), x_rct_curr_code);
194     arp_standard.debug ('i='||to_char(iterator)||'.'||
195                               'line_amount='||to_char(line_2b_applied)||'.'||
196                                'tax_amount='||to_char(tax_2b_applied)||'.'||
197                                'alloc_rct_amt='||to_char(cross_currency_2b_applied)||'.'
198                              , 'plsql',
199                           'RA_LL_RCV_GROUPS_PKG.INSERT_ROW', 1);
200 
201     Select ar_Activity_details_s.nextval
202      INTO l_line_id
203      FROM DUAL;
204 
205     INSERT INTO AR_ACTIVITY_DETAILS (
206         LINE_ID,
207         APPLY_TO,
208         customer_trx_line_id,
209         CASH_RECEIPT_ID,
210         GROUP_ID,
211         AMOUNT,
212         allocated_receipt_amount,
213         TAX,
214         CREATED_BY,
215         CREATION_DATE,
216         LAST_UPDATE_LOGIN,
217         LAST_UPDATE_DATE,
218         LAST_UPDATED_BY,
219         OBJECT_VERSION_NUMBER,
220         CREATED_BY_MODULE,
221         SOURCE_TABLE,
222         line_discount,
223         tax_discount,
224 	CURRENT_ACTIVITY_FLAG
225     )
226 
227     VALUES (
228         l_line_id,
229         lintax_row.apply_to,
230         lintax_row.line_id,
231         DECODE(X_CASH_RECEIPT_ID, FND_API.G_MISS_NUM, NULL , X_CASH_RECEIPT_ID),
232         DECODE(X_GROUP_ID, FND_API.G_MISS_NUM, NULL , X_GROUP_ID),
233         arpcurr.currRound(nvl(line_2b_applied ,0)),
234         arp_util.currRound(nvl(cross_currency_2b_applied,0), x_rct_curr_code ),
235         arpcurr.currRound(nvl(tax_2b_applied ,0)),
236         NVL(FND_GLOBAL.user_id,-1),
237         SYSDATE,
238         decode(FND_GLOBAL.conc_login_id,null,FND_GLOBAL.login_id,-1,
239                FND_GLOBAL.login_id,FND_GLOBAL.conc_login_id),
240         SYSDATE,
241         NVL(FND_GLOBAL.user_id,-1),
242         0, -- Object Version Number is zero when the insert is at the group level
243         x_created_by_module,
244         'RA',
245         lindsc_2b_applied,
246         taxdsc_2b_applied,
247 	'Y'
248         );
249 
250     line_run_tot := line_run_tot + line_2b_applied;
251     tax_run_tot := tax_run_tot + tax_2b_applied;
252     -- Added Dec 7, 2005 - Bug 4775656. Discounts are not getting saved from Summary
253     lindsc_run_tot := lindsc_run_tot + lindsc_2b_applied;
254     taxdsc_run_tot := taxdsc_run_tot + taxdsc_2b_applied;
255     -- End of additions for bug 4775656
256     iterator := iterator + 1;
257   end loop;
258 END Insert_lintax_Rows;
259 
260 
261 PROCEDURE Lock_Row (
262     X_CUSTOMER_TRX_ID				 IN				 NUMBER,
263     X_CASH_RECEIPT_ID				 IN				 NUMBER,
264     x_object_Version_number in number
265 ) IS
266 BEGIN
267   null;
268 END Lock_Row;
269 
270 
271 PROCEDURE Insert_Row (
272     X_ROWID			 IN OUT NOCOPY ROWID,
273     X_CASH_RECEIPT_ID		 IN NUMBER,
274     X_GROUP_ID     		 IN NUMBER,
275     X_CUSTOMER_TRX_ID            IN NUMBER,
276     X_line_only                  IN NUMBER,
277     x_tax_only                   IN NUMBER,
278     X_lin_dsc                in        number,
279     x_tax_dsc             in number                ,
280     x_CREATED_BY_MODULE          IN VARCHAR2
281     -- Oct 04 added two param below
282     ,x_inv_to_rct_rate in number default 1
283     ,x_rct_curr_code in varchar2 default arpcurr.FunctionalCurrency
284 ) IS
285 begin
286         --insert_lintax_rows ( x_cash_receipt_id, x_customer_Trx_id, x_line_only, x_tax_only,
287         --                x_lin_dsc, x_tax_dsc, x_created_by_module
288         --                ,x_inv_to_rct_rate,x_rct_curr_code);
289 
290          Insert_lintax_Rows (
291             X_CASH_RECEIPT_ID => X_CASH_RECEIPT_ID,
292             X_GROUP_ID     	=> X_GROUP_ID,
293             X_CUSTOMER_TRX_ID  =>    X_CUSTOMER_TRX_ID,
294             x_lin               => x_line_only,
295             x_tax                => x_tax_only,
296             x_lin_dsc           => x_lin_dsc,
297             x_tax_dsc           => x_tax_dsc,
298             x_Created_By_Module => 'AR'
299             -- Oct 04, 2005 Two params added below
300             ,x_inv_to_rct_rate => x_inv_to_rct_rate
301             ,x_rct_curr_code       => x_rct_curr_code);
302 end;
303 
304 
305 
306 PROCEDURE Update_Row (
307     X_ROWID	         IN OUT NOCOPY  ROWID,
308     X_CASH_RECEIPT_ID   IN NUMBER,
309     X_GROUP_ID          IN NUMBER,
310     X_CUSTOMER_TRX_ID   IN NUMBER,
311     X_line_only         in number,
312     x_tax_only          in number                ,
313     X_lin_dsc                in        number,
314     x_tax_dsc             in number                ,
315     x_CREATED_BY_MODULE in varchar2
316     -- Oct 04 added two param below
317     ,x_inv_to_rct_rate  in number default 1
318     ,x_rct_curr_code    in varchar2 := arpcurr.FunctionalCurrency
319 ) IS
320   p_rowid rowid;
321 BEGIN
322   delete_Row (x_group_id => x_group_id,
323             x_customer_trx_id => x_customer_trx_id,
324             x_cash_receipt_id => x_cash_receipt_id);
325   insert_Row (
326     x_rowid => p_ROWID				   				 ,
327     X_CASH_RECEIPT_ID => X_CASH_RECEIPT_ID			 				 ,
328     X_GROUP_ID => X_GROUP_ID     				 				 ,
329     X_CUSTOMER_TRX_ID => X_CUSTOMER_TRX_ID,
330     X_line_only => X_line_only,
331     x_tax_only => x_tax_only,
332     X_lin_dsc => X_lin_dsc,
333     x_tax_dsc => x_tax_dsc,
334     x_created_by_module => x_created_by_module
335             -- Oct 04, 2005 Two params added below
336             ,x_inv_to_rct_rate =>x_inv_to_rct_rate
337             ,x_rct_curr_code       =>x_rct_curr_code
338 );
339 
340 END Update_Row;
341 
342 
343 
344 PROCEDURE Select_Row (
345     X_APPLY_TO     				 IN OUT NOCOPY				 VARCHAR2,
346     X_TAX_BALANCE  				 IN OUT NOCOPY				 NUMBER,
347     X_CUSTOMER_TRX_LINE_ID				 IN OUT NOCOPY				 NUMBER,
348     X_COMMENTS     				 IN OUT NOCOPY				 VARCHAR2,
349     X_TAX          				 IN OUT NOCOPY				 NUMBER,
350     X_CASH_RECEIPT_ID				 IN OUT NOCOPY				 NUMBER,
351     X_ATTRIBUTE_CATEGORY				 IN OUT NOCOPY				 VARCHAR2,
352     X_ALLOCATED_RECEIPT_AMOUNT				 IN OUT NOCOPY				 NUMBER,
353     X_GROUP_ID     				 IN OUT NOCOPY				 NUMBER,
354     X_TAX_DISCOUNT 				 IN OUT NOCOPY				 NUMBER,
355     X_AMOUNT       				 IN OUT NOCOPY				 NUMBER,
356     X_LINE_DISCOUNT				 IN OUT NOCOPY				 NUMBER,
357     X_ATTRIBUTE9   				 IN OUT NOCOPY				 VARCHAR2,
358     X_ATTRIBUTE8   				 IN OUT NOCOPY				 VARCHAR2,
359     X_ATTRIBUTE7   				 IN OUT NOCOPY				 VARCHAR2,
360     X_ATTRIBUTE6   				 IN OUT NOCOPY				 VARCHAR2,
361     X_ATTRIBUTE5   				 IN OUT NOCOPY				 VARCHAR2,
362     X_ATTRIBUTE4   				 IN OUT NOCOPY				 VARCHAR2,
363     X_ATTRIBUTE3   				 IN OUT NOCOPY				 VARCHAR2,
364     X_ATTRIBUTE2   				 IN OUT NOCOPY				 VARCHAR2,
365     X_ATTRIBUTE1   				 IN OUT NOCOPY				 VARCHAR2,
366     X_LINE_BALANCE 				 IN OUT NOCOPY				 NUMBER,
367     X_ATTRIBUTE15  				 IN OUT NOCOPY				 VARCHAR2,
368     X_ATTRIBUTE14  				 IN OUT NOCOPY				 VARCHAR2,
369     X_ATTRIBUTE13  				 IN OUT NOCOPY				 VARCHAR2,
370     X_ATTRIBUTE12  				 IN OUT NOCOPY				 VARCHAR2,
371     X_ATTRIBUTE11  				 IN OUT NOCOPY				 VARCHAR2,
372     X_ATTRIBUTE10  				 IN OUT NOCOPY				 VARCHAR2
373 ) IS
374 
375 
376 BEGIN
377 
378     SELECT
379         NVL( APPLY_TO,FND_API.G_MISS_CHAR ),
380         NVL( TAX_BALANCE,FND_API.G_MISS_NUM ),
381         NVL( CUSTOMER_TRX_LINE_ID,FND_API.G_MISS_NUM ),
382         NVL( COMMENTS,FND_API.G_MISS_CHAR ),
383         NVL( TAX,FND_API.G_MISS_NUM ),
384         NVL( CASH_RECEIPT_ID,FND_API.G_MISS_NUM ),
385         NVL( ATTRIBUTE_CATEGORY,FND_API.G_MISS_CHAR ),
386         NVL( ALLOCATED_RECEIPT_AMOUNT,FND_API.G_MISS_NUM ),
387         NVL( GROUP_ID,FND_API.G_MISS_NUM ),
388         NVL( TAX_DISCOUNT,FND_API.G_MISS_NUM ),
389         NVL( AMOUNT,FND_API.G_MISS_NUM ),
390         NVL( LINE_DISCOUNT,FND_API.G_MISS_NUM ),
391         NVL( ATTRIBUTE9,FND_API.G_MISS_CHAR ),
392         NVL( ATTRIBUTE8,FND_API.G_MISS_CHAR ),
393         NVL( ATTRIBUTE7,FND_API.G_MISS_CHAR ),
394         NVL( ATTRIBUTE6,FND_API.G_MISS_CHAR ),
395         NVL( ATTRIBUTE5,FND_API.G_MISS_CHAR ),
396         NVL( ATTRIBUTE4,FND_API.G_MISS_CHAR ),
397         NVL( ATTRIBUTE3,FND_API.G_MISS_CHAR ),
398         NVL( ATTRIBUTE2,FND_API.G_MISS_CHAR ),
399         NVL( ATTRIBUTE1,FND_API.G_MISS_CHAR ),
400         NVL( LINE_BALANCE,FND_API.G_MISS_NUM ),
401         NVL( ATTRIBUTE15,FND_API.G_MISS_CHAR ),
402         NVL( ATTRIBUTE14,FND_API.G_MISS_CHAR ),
403         NVL( ATTRIBUTE13,FND_API.G_MISS_CHAR ),
404         NVL( ATTRIBUTE12,FND_API.G_MISS_CHAR ),
405         NVL( ATTRIBUTE11,FND_API.G_MISS_CHAR ),
406         NVL( ATTRIBUTE10,FND_API.G_MISS_CHAR )
407         INTO
408         X_APPLY_TO,
409         X_TAX_BALANCE,
410         X_CUSTOMER_TRX_LINE_ID,
411         X_COMMENTS,
412         X_TAX,
413         X_CASH_RECEIPT_ID,
414         X_ATTRIBUTE_CATEGORY,
415         X_ALLOCATED_RECEIPT_AMOUNT,
416         X_GROUP_ID,
417         X_TAX_DISCOUNT,
418         X_AMOUNT,
419         X_LINE_DISCOUNT,
420         X_ATTRIBUTE9,
421         X_ATTRIBUTE8,
422         X_ATTRIBUTE7,
423         X_ATTRIBUTE6,
424         X_ATTRIBUTE5,
425         X_ATTRIBUTE4,
426         X_ATTRIBUTE3,
427         X_ATTRIBUTE2,
428         X_ATTRIBUTE1,
429         X_LINE_BALANCE,
430         X_ATTRIBUTE15,
431         X_ATTRIBUTE14,
432         X_ATTRIBUTE13,
433         X_ATTRIBUTE12,
434         X_ATTRIBUTE11,
435         X_ATTRIBUTE10
436         FROM AR_ACTIVITY_DETAILS
437     WHERE  1 = 1  AND CASH_RECEIPT_ID = X_CASH_RECEIPT_ID
438          AND NVL(CURRENT_ACTIVITY_FLAG, 'Y') = 'Y' -- BUG 7241111
439  AND CUSTOMER_TRX_LINE_ID = X_CUSTOMER_TRX_LINE_ID
440 ;
441 
442 
443 EXCEPTION
444     WHEN NO_DATA_FOUND THEN
445         FND_MESSAGE.SET_NAME( 'FUN', 'FUN_API_NO_RECORD' );
446         FND_MESSAGE.SET_TOKEN( 'RECORD', 'p_AR_ACTIVITY_DETAILS_rec');
447         FND_MESSAGE.SET_TOKEN( 'VALUE', '' );
448         FND_MSG_PUB.ADD;
449         RAISE FND_API.G_EXC_ERROR;
450 END Select_Row;
451 
452 
453 
454 
455 
456 END;