DBA Data[Home] [Help]

PACKAGE BODY: APPS.FA_DEPRN_SUMMARY_PKG

Source


1 PACKAGE BODY FA_DEPRN_SUMMARY_PKG as
2 /* $Header: faxidsb.pls 120.4 2005/07/25 10:01:27 yyoon ship $ */
3 
4   PROCEDURE Insert_Row(X_Rowid                   IN OUT NOCOPY VARCHAR2,
5                        X_Book_Type_Code                 VARCHAR2,
6                        X_Asset_Id                       NUMBER,
7                        X_Deprn_Run_Date                 DATE,
8                        X_Deprn_Amount                   NUMBER,
9                        X_Ytd_Deprn                      NUMBER,
10                        X_Deprn_Reserve                  NUMBER,
11                        X_Deprn_Source_Code              VARCHAR2,
12                        X_Adjusted_Cost                  NUMBER,
13                        X_Bonus_Rate                     NUMBER DEFAULT NULL,
14                        X_Ltd_Production                 NUMBER DEFAULT NULL,
15                        X_Period_Counter                 NUMBER,
16                        X_Production                     NUMBER DEFAULT NULL,
17                        X_Reval_Amortization             NUMBER DEFAULT NULL,
18                        X_Reval_Amortization_Basis       NUMBER DEFAULT NULL,
19                        X_Reval_Deprn_Expense            NUMBER DEFAULT NULL,
20                        X_Reval_Reserve                  NUMBER DEFAULT NULL,
21                        X_Ytd_Production                 NUMBER DEFAULT NULL,
22                        X_Ytd_Reval_Deprn_Expense        NUMBER DEFAULT NULL,
23                        X_Bonus_Deprn_Amount             NUMBER,
24                        X_Bonus_Ytd_Deprn                NUMBER,
25                        X_Bonus_Deprn_Reserve            NUMBER,
26                        X_mrc_sob_type_code              VARCHAR2 DEFAULT 'P',
27                        X_Calling_Fn                     VARCHAR2,
28             p_log_level_rec in fa_api_types.log_level_rec_type default null) IS
29 
30     CURSOR C_ds IS SELECT rowid FROM fa_deprn_summary
31                  WHERE asset_id = X_Asset_Id
32                  AND   book_type_code = X_Book_Type_Code
33                  AND   period_counter = X_Period_Counter;
34 
35     CURSOR C_ds_mc IS SELECT rowid FROM fa_deprn_summary_mrc_v
36                  WHERE asset_id = X_Asset_Id
37                  AND   book_type_code = X_Book_Type_Code
38                  AND   period_counter = X_Period_Counter;
39 
40 
41    BEGIN
42 
43        if (X_mrc_sob_type_code = 'R') then
44 
45           INSERT INTO fa_deprn_summary_mrc_v(
46               book_type_code,
47               asset_id,
48               deprn_run_date,
49               deprn_amount,
50               ytd_deprn,
51               deprn_reserve,
52               deprn_source_code,
53               adjusted_cost,
54               bonus_rate,
55               ltd_production,
56               period_counter,
57               production,
58               reval_amortization,
59               reval_amortization_basis,
60               reval_deprn_expense,
61               reval_reserve,
62               ytd_production,
63               ytd_reval_deprn_expense,
64               bonus_deprn_amount,
65               bonus_ytd_deprn,
66               bonus_deprn_reserve
67              ) VALUES (
68               X_Book_Type_Code,
69               X_Asset_Id,
70               X_Deprn_Run_Date,
71               X_Deprn_Amount,
72               X_Ytd_Deprn,
73               X_Deprn_Reserve,
74               X_Deprn_Source_Code,
75               X_Adjusted_Cost,
76               X_Bonus_Rate,
77               X_Ltd_Production,
78               X_Period_Counter,
79               X_Production,
80               X_Reval_Amortization,
81               X_Reval_Amortization_Basis,
82               X_Reval_Deprn_Expense,
83               X_Reval_Reserve,
84               X_Ytd_Production,
85               X_Ytd_Reval_Deprn_Expense,
86               X_Bonus_Deprn_Amount,
87               X_Bonus_Ytd_Deprn,
88               X_Bonus_Deprn_Reserve
89              );
90 
91           OPEN C_ds_mc;
92           FETCH C_ds_mc INTO X_Rowid;
93           if (C_ds_mc%NOTFOUND) then
94             CLOSE C_ds_mc;
95             Raise NO_DATA_FOUND;
96           end if;
97           CLOSE C_ds_mc;
98 
99        else
100           INSERT INTO fa_deprn_summary(
101               book_type_code,
102               asset_id,
103               deprn_run_date,
104               deprn_amount,
105               ytd_deprn,
106               deprn_reserve,
107               deprn_source_code,
108               adjusted_cost,
109               bonus_rate,
110               ltd_production,
111               period_counter,
112               production,
113               reval_amortization,
114               reval_amortization_basis,
115               reval_deprn_expense,
116               reval_reserve,
117               ytd_production,
118               ytd_reval_deprn_expense,
119               bonus_deprn_amount,
120               bonus_ytd_deprn,
121               bonus_deprn_reserve
122              ) VALUES (
123               X_Book_Type_Code,
124               X_Asset_Id,
125               X_Deprn_Run_Date,
126               X_Deprn_Amount,
127               X_Ytd_Deprn,
128               X_Deprn_Reserve,
129               X_Deprn_Source_Code,
130               X_Adjusted_Cost,
131               X_Bonus_Rate,
132               X_Ltd_Production,
133               X_Period_Counter,
134               X_Production,
135               X_Reval_Amortization,
136               X_Reval_Amortization_Basis,
137               X_Reval_Deprn_Expense,
138               X_Reval_Reserve,
139               X_Ytd_Production,
140               X_Ytd_Reval_Deprn_Expense,
141               X_Bonus_Deprn_Amount,
142               X_Bonus_Ytd_Deprn,
143               X_Bonus_Deprn_Reserve
144              );
145 
146           OPEN C_ds;
147           FETCH C_ds INTO X_Rowid;
148           if (C_ds%NOTFOUND) then
149             CLOSE C_ds;
150             Raise NO_DATA_FOUND;
151           end if;
152           CLOSE C_ds;
153 
154        end if;
155 
156 
157   exception
158     when others then
159          FA_STANDARD_PKG.RAISE_ERROR(
160              CALLED_FN => 'fa_deprn_summary_pkg.insert_row',
161              CALLING_FN => X_Calling_Fn
162              ,p_log_level_rec => p_log_level_rec);
163 
164   END Insert_Row;
165 
166 
167   PROCEDURE Lock_Row(X_Rowid                            VARCHAR2,
168                      X_Book_Type_Code                   VARCHAR2,
169                      X_Asset_Id                         NUMBER,
170                      X_Deprn_Run_Date                   DATE,
171                      X_Deprn_Amount                     NUMBER,
172                      X_Ytd_Deprn                        NUMBER,
173                      X_Deprn_Reserve                    NUMBER,
174                      X_Deprn_Source_Code                VARCHAR2,
175                      X_Adjusted_Cost                    NUMBER,
176                      X_Bonus_Rate                       NUMBER DEFAULT NULL,
177                      X_Ltd_Production                   NUMBER DEFAULT NULL,
178                      X_Period_Counter                   NUMBER,
179                      X_Production                       NUMBER DEFAULT NULL,
180                      X_Reval_Amortization               NUMBER DEFAULT NULL,
181                      X_Reval_Amortization_Basis         NUMBER DEFAULT NULL,
182                      X_Reval_Deprn_Expense              NUMBER DEFAULT NULL,
183                      X_Reval_Reserve                    NUMBER DEFAULT NULL,
184                      X_Ytd_Production                   NUMBER DEFAULT NULL,
185                      X_Ytd_Reval_Deprn_Expense          NUMBER DEFAULT NULL,
186                      X_Calling_Fn                       VARCHAR2,
187              p_log_level_rec in fa_api_types.log_level_rec_type default null) IS
188     CURSOR C IS
189         SELECT      book_type_code,
190           asset_id,
191           deprn_run_date,
192           deprn_amount,
193           ytd_deprn,
194           deprn_reserve,
195           deprn_source_code,
196           adjusted_cost,
197           bonus_rate,
198           ltd_production,
199           period_counter,
200           production,
201           reval_amortization,
202           reval_amortization_basis,
203           reval_deprn_expense,
204           reval_reserve,
205           ytd_production,
206           ytd_reval_deprn_expense,
207           prior_fy_expense
208         FROM   fa_deprn_summary
209         WHERE  rowid = X_Rowid
210         FOR UPDATE of Asset_Id NOWAIT;
211     Recinfo C%ROWTYPE;
212 
213 
214   BEGIN
215     OPEN C;
216     FETCH C INTO Recinfo;
217     if (C%NOTFOUND) then
218       CLOSE C;
219       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
220       APP_EXCEPTION.Raise_Exception;
221     end if;
222     CLOSE C;
223     if (
224 
225                (Recinfo.book_type_code =  X_Book_Type_Code)
226            AND (Recinfo.asset_id =  X_Asset_Id)
227            AND (Recinfo.deprn_run_date =  X_Deprn_Run_Date)
228            AND (Recinfo.deprn_amount =  X_Deprn_Amount)
229            AND (Recinfo.ytd_deprn =  X_Ytd_Deprn)
230            AND (Recinfo.deprn_reserve =  X_Deprn_Reserve)
231            AND (Recinfo.deprn_source_code =  X_Deprn_Source_Code)
232            AND (Recinfo.adjusted_cost =  X_Adjusted_Cost)
233            AND (   (Recinfo.bonus_rate =  X_Bonus_Rate)
234                 OR (    (Recinfo.bonus_rate IS NULL)
235                     AND (X_Bonus_Rate IS NULL)))
236            AND (   (Recinfo.ltd_production =  X_Ltd_Production)
237                 OR (    (Recinfo.ltd_production IS NULL)
238                     AND (X_Ltd_Production IS NULL)))
239            AND (Recinfo.period_counter =  X_Period_Counter)
240            AND (   (Recinfo.production =  X_Production)
241                 OR (    (Recinfo.production IS NULL)
242                     AND (X_Production IS NULL)))
243            AND (   (Recinfo.reval_amortization =  X_Reval_Amortization)
244                 OR (    (Recinfo.reval_amortization IS NULL)
245                     AND (X_Reval_Amortization IS NULL)))
246            AND (   (Recinfo.reval_amortization_basis =
247                          X_Reval_Amortization_Basis)
248                 OR (    (Recinfo.reval_amortization_basis IS NULL)
249                     AND (X_Reval_Amortization_Basis IS NULL)))
250            AND (   (Recinfo.reval_deprn_expense =  X_Reval_Deprn_Expense)
251                 OR (    (Recinfo.reval_deprn_expense IS NULL)
252                     AND (X_Reval_Deprn_Expense IS NULL)))
253            AND (   (Recinfo.reval_reserve =  X_Reval_Reserve)
254                 OR (    (Recinfo.reval_reserve IS NULL)
255                     AND (X_Reval_Reserve IS NULL)))
256            AND (   (Recinfo.ytd_production =  X_Ytd_Production)
257                 OR (    (Recinfo.ytd_production IS NULL)
258                     AND (X_Ytd_Production IS NULL)))
259            AND (   (Recinfo.ytd_reval_deprn_expense =
260                               X_Ytd_Reval_Deprn_Expense)
261                 OR (    (Recinfo.ytd_reval_deprn_expense IS NULL)
262                     AND (X_Ytd_Reval_Deprn_Expense IS NULL)))) then
263       return;
264     else
265       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
266       APP_EXCEPTION.Raise_Exception;
267     end if;
268   END Lock_Row;
269 
270 
271 
272   PROCEDURE Update_Row(X_Rowid                          VARCHAR2 DEFAULT NULL,
273                        X_Book_Type_Code                 VARCHAR2 DEFAULT NULL,
274                        X_Asset_Id                       NUMBER   DEFAULT NULL,
275                        X_Deprn_Run_Date                 DATE     DEFAULT NULL,
276                        X_Deprn_Amount                   NUMBER   DEFAULT NULL,
277                        X_Ytd_Deprn                      NUMBER   DEFAULT NULL,
278                        X_Deprn_Reserve                  NUMBER   DEFAULT NULL,
279                        X_Deprn_Source_Code              VARCHAR2 DEFAULT NULL,
280                        X_Adjusted_Cost                  NUMBER   DEFAULT NULL,
281                        X_Bonus_Rate                     NUMBER   DEFAULT NULL,
282                        X_Ltd_Production                 NUMBER   DEFAULT NULL,
283                        X_Period_Counter                 NUMBER   DEFAULT NULL,
284                        X_Production                     NUMBER   DEFAULT NULL,
285                        X_Reval_Amortization             NUMBER   DEFAULT NULL,
286                        X_Reval_Amortization_Basis       NUMBER   DEFAULT NULL,
287                        X_Reval_Deprn_Expense            NUMBER   DEFAULT NULL,
288                        X_Reval_Reserve                  NUMBER   DEFAULT NULL,
289                        X_Ytd_Production                 NUMBER   DEFAULT NULL,
290                        X_Ytd_Reval_Deprn_Expense        NUMBER   DEFAULT NULL,
291                        X_Bonus_Deprn_Amount             NUMBER   DEFAULT NULL,
292                        X_Bonus_Ytd_Deprn                NUMBER   DEFAULT NULL,
293                        X_Bonus_Deprn_Reserve            NUMBER   DEFAULT NULL,
294                        X_mrc_sob_type_code              VARCHAR2 DEFAULT 'P',
295                        X_Calling_Fn                     VARCHAR2,
296               p_log_level_rec in fa_api_types.log_level_rec_type default null) IS
297 
298   BEGIN
299 
300     if (X_rowid is not null) then
301 
302        if (X_mrc_sob_type_code = 'R') then
303 
304           UPDATE fa_deprn_summary_mrc_v
305           SET
306               book_type_code                  =     decode(X_Book_Type_Code,
307                                                     NULL, book_type_code,
308                                                     FND_API.G_MISS_CHAR, null,
309                                                     X_Book_Type_Code),
310               asset_id                        =     decode(X_Asset_Id,
311                                                     NULL, asset_id,
312                                                     FND_API.G_MISS_NUM, null,
313                                                     X_Asset_Id),
314               deprn_run_date                  =     decode(X_Deprn_Run_Date,
315                                                     NULL, deprn_run_date,
316                                                     X_Deprn_Run_Date),
317               deprn_amount                    =     decode(X_Deprn_Amount,
318                                                     NULL,  deprn_amount,
319                                                     FND_API.G_MISS_NUM, null,
320                                                     X_Deprn_Amount),
321               ytd_deprn                       =     decode(X_Ytd_Deprn,
322                                                     NULL, ytd_deprn,
323                                                     FND_API.G_MISS_NUM, null,
324                                                     X_Ytd_Deprn),
325               deprn_reserve                   =     decode(X_Deprn_Reserve,
326                                                     NULL, deprn_reserve,
327                                                     FND_API.G_MISS_NUM, null,
328                                                     X_Deprn_Reserve),
329               deprn_source_code               =     decode(X_Deprn_Source_Code,
330                                                     NULL, deprn_source_code,
331                                                     FND_API.G_MISS_CHAR, null,
332                                                     X_Deprn_Source_Code),
333               adjusted_cost                   =     decode(X_Adjusted_Cost,
334                                                     NULL, adjusted_cost,
335                                                     FND_API.G_MISS_NUM, null,
336                                                     X_Adjusted_Cost),
337               bonus_rate                      =     decode(X_Bonus_Rate,
338                                                     NULL, bonus_rate,
339                                                     FND_API.G_MISS_NUM, null,
340                                                     X_Bonus_Rate),
341               ltd_production                  =     decode(X_Ltd_Production,
342                                                     NULL, ltd_production,
343                                                     FND_API.G_MISS_NUM, null,
344                                                     X_Ltd_Production),
345               period_counter                  =     decode(X_Period_Counter,
346                                                     NULL, period_counter,
347                                                     FND_API.G_MISS_NUM, null,
348                                                     X_Period_Counter),
349               production                      =     decode(X_Production,
350                                                     NULL, production,
351                                                     FND_API.G_MISS_NUM, null,
352                                                     X_Production),
353               reval_amortization              =     decode(X_Reval_Amortization,
354                                                     NULL, reval_amortization,
355                                                     FND_API.G_MISS_NUM, null,
356                                                     X_Reval_Amortization),
357               reval_amortization_basis        =     decode(X_Reval_Amortization_Basis,
358                                                     NULL, reval_amortization_basis,
359                                                     FND_API.G_MISS_NUM, null,
360                                                     X_Reval_Amortization_Basis),
361               reval_deprn_expense             =     decode(X_Reval_Deprn_Expense,
362                                                     NULL, reval_deprn_expense,
363                                                     FND_API.G_MISS_NUM, null,
364                                                     X_Reval_Deprn_Expense),
365               reval_reserve                   =     decode(X_Reval_Reserve,
366                                                     NULL, reval_reserve,
367                                                     FND_API.G_MISS_NUM, null,
368                                                     X_Reval_Reserve),
369               ytd_production                  =     decode(X_Ytd_Production,
370                                                     NULL, ytd_production,
371                                                     FND_API.G_MISS_NUM, null,
372                                                     X_Ytd_Production),
373               ytd_reval_deprn_expense         =     decode(X_Ytd_Reval_Deprn_Expense,
374                                                     NULL, ytd_reval_deprn_expense,
375                                                     FND_API.G_MISS_NUM, null,
376                                                     X_Ytd_Reval_Deprn_Expense),
377               bonus_deprn_amount              =     decode(X_Bonus_Deprn_Amount,
378                                                     NULL,  bonus_deprn_amount,
379                                                     FND_API.G_MISS_NUM, null,
380                                                     X_Bonus_Deprn_Amount),
381               bonus_ytd_deprn                 =     decode(X_Bonus_Ytd_Deprn,
382                                                     NULL, bonus_ytd_deprn,
383                                                     FND_API.G_MISS_NUM, null,
384                                                     X_Bonus_Ytd_Deprn),
385               bonus_deprn_reserve             =     decode(X_Bonus_Deprn_Reserve,
386                                                     NULL, bonus_deprn_reserve,
387                                                     FND_API.G_MISS_NUM, null,
388                                                     X_Bonus_Deprn_Reserve)
389           WHERE rowid = X_Rowid;
390 
391         else
392 
393           UPDATE fa_deprn_summary
394           SET
395               book_type_code                  =     decode(X_Book_Type_Code,
396                                                     NULL, book_type_code,
397                                                     FND_API.G_MISS_CHAR, null,
398                                                     X_Book_Type_Code),
399               asset_id                        =     decode(X_Asset_Id,
400                                                     NULL, asset_id,
401                                                     FND_API.G_MISS_NUM, null,
402                                                     X_Asset_Id),
403               deprn_run_date                  =     decode(X_Deprn_Run_Date,
404                                                     NULL, deprn_run_date,
405                                                     X_Deprn_Run_Date),
406               deprn_amount                    =     decode(X_Deprn_Amount,
407                                                     NULL,  deprn_amount,
408                                                     FND_API.G_MISS_NUM, null,
409                                                     X_Deprn_Amount),
410               ytd_deprn                       =     decode(X_Ytd_Deprn,
411                                                     NULL, ytd_deprn,
412                                                     FND_API.G_MISS_NUM, null,
413                                                     X_Ytd_Deprn),
414               deprn_reserve                   =     decode(X_Deprn_Reserve,
415                                                     NULL, deprn_reserve,
416                                                     FND_API.G_MISS_NUM, null,
417                                                     X_Deprn_Reserve),
418               deprn_source_code               =     decode(X_Deprn_Source_Code,
419                                                     NULL, deprn_source_code,
420                                                     FND_API.G_MISS_CHAR, null,
421                                                     X_Deprn_Source_Code),
422               adjusted_cost                   =     decode(X_Adjusted_Cost,
423                                                     NULL, adjusted_cost,
424                                                     FND_API.G_MISS_NUM, null,
425                                                     X_Adjusted_Cost),
426               bonus_rate                      =     decode(X_Bonus_Rate,
427                                                     NULL, bonus_rate,
428                                                     FND_API.G_MISS_NUM, null,
429                                                     X_Bonus_Rate),
430               ltd_production                  =     decode(X_Ltd_Production,
431                                                     NULL, ltd_production,
432                                                     FND_API.G_MISS_NUM, null,
433                                                     X_Ltd_Production),
434               period_counter                  =     decode(X_Period_Counter,
435                                                     NULL, period_counter,
436                                                     FND_API.G_MISS_NUM, null,
437                                                     X_Period_Counter),
438               production                      =     decode(X_Production,
439                                                     NULL, production,
440                                                     FND_API.G_MISS_NUM, null,
441                                                     X_Production),
442               reval_amortization              =     decode(X_Reval_Amortization,
443                                                     NULL, reval_amortization,
444                                                     FND_API.G_MISS_NUM, null,
445                                                     X_Reval_Amortization),
446               reval_amortization_basis        =     decode(X_Reval_Amortization_Basis,
447                                                     NULL, reval_amortization_basis,
448                                                     FND_API.G_MISS_NUM, null,
449                                                     X_Reval_Amortization_Basis),
450               reval_deprn_expense             =     decode(X_Reval_Deprn_Expense,
451                                                     NULL, reval_deprn_expense,
452                                                     FND_API.G_MISS_NUM, null,
453                                                     X_Reval_Deprn_Expense),
454               reval_reserve                   =     decode(X_Reval_Reserve,
455                                                     NULL, reval_reserve,
456                                                     FND_API.G_MISS_NUM, null,
457                                                     X_Reval_Reserve),
458               ytd_production                  =     decode(X_Ytd_Production,
459                                                     NULL, ytd_production,
460                                                     FND_API.G_MISS_NUM, null,
461                                                     X_Ytd_Production),
462               ytd_reval_deprn_expense         =     decode(X_Ytd_Reval_Deprn_Expense,
463                                                     NULL, ytd_reval_deprn_expense,
464                                                     FND_API.G_MISS_NUM, null,
465                                                     X_Ytd_Reval_Deprn_Expense),
466               bonus_deprn_amount              =     decode(X_Bonus_Deprn_Amount,
467                                                     NULL,  bonus_deprn_amount,
468                                                     FND_API.G_MISS_NUM, null,
469                                                     X_Bonus_Deprn_Amount),
470               bonus_ytd_deprn                 =     decode(X_Bonus_Ytd_Deprn,
471                                                     NULL, bonus_ytd_deprn,
472                                                     FND_API.G_MISS_NUM, null,
473                                                     X_Bonus_Ytd_Deprn),
474               bonus_deprn_reserve             =     decode(X_Bonus_Deprn_Reserve,
475                                                     NULL, bonus_deprn_reserve,
476                                                     FND_API.G_MISS_NUM, null,
477                                                     X_Bonus_Deprn_Reserve)
478 
479           WHERE rowid = X_Rowid;
480 
481        end if; -- mrc
482 
483     else       -- rowid is null (use asset,book,pc)
484 
485        if (X_mrc_sob_type_code = 'R') then
486           UPDATE fa_deprn_summary_mrc_v
487           SET
488               book_type_code                  =     decode(X_Book_Type_Code,
489                                                     NULL, book_type_code,
490                                                     FND_API.G_MISS_CHAR, null,
491                                                     X_Book_Type_Code),
492               asset_id                        =     decode(X_Asset_Id,
493                                                     NULL, asset_id,
494                                                     FND_API.G_MISS_NUM, null,
495                                                     X_Asset_Id),
496               deprn_run_date                  =     decode(X_Deprn_Run_Date,
497                                                     NULL, deprn_run_date,
498                                                     X_Deprn_Run_Date),
499               deprn_amount                    =     decode(X_Deprn_Amount,
500                                                     NULL,  deprn_amount,
501                                                     FND_API.G_MISS_NUM, null,
502                                                     X_Deprn_Amount),
503               ytd_deprn                       =     decode(X_Ytd_Deprn,
504                                                     NULL, ytd_deprn,
505                                                     FND_API.G_MISS_NUM, null,
506                                                     X_Ytd_Deprn),
507               deprn_reserve                   =     decode(X_Deprn_Reserve,
508                                                     NULL, deprn_reserve,
509                                                     FND_API.G_MISS_NUM, null,
510                                                     X_Deprn_Reserve),
511               deprn_source_code               =     decode(X_Deprn_Source_Code,
512                                                     NULL, deprn_source_code,
513                                                     FND_API.G_MISS_CHAR, null,
514                                                     X_Deprn_Source_Code),
515               adjusted_cost                   =     decode(X_Adjusted_Cost,
516                                                     NULL, adjusted_cost,
517                                                     FND_API.G_MISS_NUM, null,
518                                                     X_Adjusted_Cost),
519               bonus_rate                      =     decode(X_Bonus_Rate,
520                                                     NULL, bonus_rate,
521                                                     FND_API.G_MISS_NUM, null,
522                                                     X_Bonus_Rate),
523               ltd_production                  =     decode(X_Ltd_Production,
524                                                     NULL, ltd_production,
525                                                     FND_API.G_MISS_NUM, null,
526                                                     X_Ltd_Production),
527               period_counter                  =     decode(X_Period_Counter,
528                                                     NULL, period_counter,
529                                                     FND_API.G_MISS_NUM, null,
530                                                     X_Period_Counter),
531               production                      =     decode(X_Production,
532                                                     NULL, production,
533                                                     FND_API.G_MISS_NUM, null,
534                                                     X_Production),
535               reval_amortization              =     decode(X_Reval_Amortization,
536                                                     NULL, reval_amortization,
537                                                     FND_API.G_MISS_NUM, null,
538                                                     X_Reval_Amortization),
539               reval_amortization_basis        =     decode(X_Reval_Amortization_Basis,
540                                                     NULL, reval_amortization_basis,
541                                                     FND_API.G_MISS_NUM, null,
542                                                     X_Reval_Amortization_Basis),
543               reval_deprn_expense             =     decode(X_Reval_Deprn_Expense,
544                                                     NULL, reval_deprn_expense,
545                                                     FND_API.G_MISS_NUM, null,
546                                                     X_Reval_Deprn_Expense),
547               reval_reserve                   =     decode(X_Reval_Reserve,
548                                                     NULL, reval_reserve,
549                                                     FND_API.G_MISS_NUM, null,
550                                                     X_Reval_Reserve),
551               ytd_production                  =     decode(X_Ytd_Production,
552                                                     NULL, ytd_production,
553                                                     FND_API.G_MISS_NUM, null,
554                                                     X_Ytd_Production),
555               ytd_reval_deprn_expense         =     decode(X_Ytd_Reval_Deprn_Expense,
556                                                     NULL, ytd_reval_deprn_expense,
557                                                     FND_API.G_MISS_NUM, null,
558                                                     X_Ytd_Reval_Deprn_Expense),
559               bonus_deprn_amount              =     decode(X_Bonus_Deprn_Amount,
560                                                     NULL,  bonus_deprn_amount,
561                                                     FND_API.G_MISS_NUM, null,
562                                                     X_Bonus_Deprn_Amount),
563               bonus_ytd_deprn                 =     decode(X_Bonus_Ytd_Deprn,
564                                                     NULL, bonus_ytd_deprn,
565                                                     FND_API.G_MISS_NUM, null,
566                                                     X_Bonus_Ytd_Deprn),
567               bonus_deprn_reserve             =     decode(X_Bonus_Deprn_Reserve,
568                                                     NULL, bonus_deprn_reserve,
569                                                     FND_API.G_MISS_NUM, null,
570                                                     X_Bonus_Deprn_Reserve)
571 
572           WHERE book_type_code = X_Book_Type_Code
573           and   asset_id       = X_Asset_Id
574           and   period_counter = X_Period_Counter;
575 
576         else
577 
578           UPDATE fa_deprn_summary
579           SET
580               book_type_code                  =     decode(X_Book_Type_Code,
581                                                     NULL, book_type_code,
582                                                     FND_API.G_MISS_CHAR, null,
583                                                     X_Book_Type_Code),
584               asset_id                        =     decode(X_Asset_Id,
585                                                     NULL, asset_id,
586                                                     FND_API.G_MISS_NUM, null,
587                                                     X_Asset_Id),
588               deprn_run_date                  =     decode(X_Deprn_Run_Date,
589                                                     NULL, deprn_run_date,
590                                                     X_Deprn_Run_Date),
591               deprn_amount                    =     decode(X_Deprn_Amount,
592                                                     NULL,  deprn_amount,
593                                                     FND_API.G_MISS_NUM, null,
594                                                     X_Deprn_Amount),
595               ytd_deprn                       =     decode(X_Ytd_Deprn,
596                                                     NULL, ytd_deprn,
597                                                     FND_API.G_MISS_NUM, null,
598                                                     X_Ytd_Deprn),
599               deprn_reserve                   =     decode(X_Deprn_Reserve,
600                                                     NULL, deprn_reserve,
601                                                     FND_API.G_MISS_NUM, null,
602                                                     X_Deprn_Reserve),
603               deprn_source_code               =     decode(X_Deprn_Source_Code,
604                                                     NULL, deprn_source_code,
605                                                     FND_API.G_MISS_CHAR, null,
606                                                     X_Deprn_Source_Code),
607               adjusted_cost                   =     decode(X_Adjusted_Cost,
608                                                     NULL, adjusted_cost,
609                                                     FND_API.G_MISS_NUM, null,
610                                                     X_Adjusted_Cost),
611               bonus_rate                      =     decode(X_Bonus_Rate,
612                                                     NULL, bonus_rate,
613                                                     FND_API.G_MISS_NUM, null,
614                                                     X_Bonus_Rate),
615               ltd_production                  =     decode(X_Ltd_Production,
616                                                     NULL, ltd_production,
617                                                     FND_API.G_MISS_NUM, null,
618                                                     X_Ltd_Production),
619               period_counter                  =     decode(X_Period_Counter,
620                                                     NULL, period_counter,
621                                                     FND_API.G_MISS_NUM, null,
622                                                     X_Period_Counter),
623               production                      =     decode(X_Production,
624                                                     NULL, production,
625                                                     FND_API.G_MISS_NUM, null,
626                                                     X_Production),
627               reval_amortization              =     decode(X_Reval_Amortization,
628                                                     NULL, reval_amortization,
629                                                     FND_API.G_MISS_NUM, null,
630                                                     X_Reval_Amortization),
631               reval_amortization_basis        =     decode(X_Reval_Amortization_Basis,
632                                                     NULL, reval_amortization_basis,
633                                                     FND_API.G_MISS_NUM, null,
634                                                     X_Reval_Amortization_Basis),
635               reval_deprn_expense             =     decode(X_Reval_Deprn_Expense,
636                                                     NULL, reval_deprn_expense,
637                                                     FND_API.G_MISS_NUM, null,
638                                                     X_Reval_Deprn_Expense),
639               reval_reserve                   =     decode(X_Reval_Reserve,
640                                                     NULL, reval_reserve,
641                                                     FND_API.G_MISS_NUM, null,
642                                                     X_Reval_Reserve),
643               ytd_production                  =     decode(X_Ytd_Production,
644                                                     NULL, ytd_production,
645                                                     FND_API.G_MISS_NUM, null,
646                                                     X_Ytd_Production),
647               ytd_reval_deprn_expense         =     decode(X_Ytd_Reval_Deprn_Expense,
648                                                     NULL, ytd_reval_deprn_expense,
649                                                     FND_API.G_MISS_NUM, null,
650                                                     X_Ytd_Reval_Deprn_Expense),
651               bonus_deprn_amount              =     decode(X_Bonus_Deprn_Amount,
652                                                     NULL,  bonus_deprn_amount,
653                                                     FND_API.G_MISS_NUM, null,
654                                                     X_Bonus_Deprn_Amount),
655               bonus_ytd_deprn                 =     decode(X_Bonus_Ytd_Deprn,
656                                                     NULL, bonus_ytd_deprn,
657                                                     FND_API.G_MISS_NUM, null,
658                                                     X_Bonus_Ytd_Deprn),
659               bonus_deprn_reserve             =     decode(X_Bonus_Deprn_Reserve,
660                                                     NULL, bonus_deprn_reserve,
661                                                     FND_API.G_MISS_NUM, null,
662                                                     X_Bonus_Deprn_Reserve)
663           WHERE book_type_code = X_Book_Type_Code
664           and   asset_id       = X_Asset_Id
665           and   period_counter = X_Period_Counter;
666 
667        end if; -- mrc
668 
669     end if;   -- rowid not null
670 
671     if (SQL%NOTFOUND) then
672       Raise NO_DATA_FOUND;
673     end if;
674 
675   exception
676     when others then
677          fa_srvr_msg.add_sql_error(
678              calling_fn => 'fa_deprn_summary_pkg.update_row'
679              ,p_log_level_rec => p_log_level_rec);
680          raise;
681 
682   END Update_Row;
683 
684 
685 
686   PROCEDURE Delete_Row(X_Rowid           VARCHAR2 DEFAULT NULL,
687                        X_Asset_Id        NUMBER DEFAULT NULL,
688                        X_mrc_sob_type_code             VARCHAR2 DEFAULT 'P',
689                        X_Calling_Fn      VARCHAR2,
690                 p_log_level_rec in fa_api_types.log_level_rec_type default null) IS
691 
692   BEGIN
693 
694     if (X_mrc_sob_type_code = 'R') then
695        if X_Rowid is not null then
696          DELETE FROM fa_deprn_summary_mrc_v
697          WHERE rowid = X_Rowid;
698        elsif X_Asset_Id is not null then
699          DELETE FROM fa_deprn_summary_mrc_v
700          WHERE asset_id = X_Asset_Id;
701        else
702          -- print error message
703          null;
704        end if;
705     else
706        if X_Rowid is not null then
707          DELETE FROM fa_deprn_summary
708          WHERE rowid = X_Rowid;
709        elsif X_Asset_Id is not null then
710          DELETE FROM fa_deprn_summary
711          WHERE asset_id = X_Asset_Id;
712        else
713          -- print error message
714          null;
715        end if;
716     end if;
717 
718 
719     if (SQL%NOTFOUND) then
720       Raise NO_DATA_FOUND;
721     end if;
722 
723   exception
724     when others then
725          FA_STANDARD_PKG.RAISE_ERROR(
726              CALLED_FN => 'fa_deprn_summary_pkg.delete_row',
727              CALLING_FN => X_Calling_Fn
728              ,p_log_level_rec => p_log_level_rec);
729 
730  END Delete_Row;
731 
732 
733  PROCEDURE Lock_B_Row(X_Book_Type_Code         VARCHAR2 DEFAULT NULL,
734                       X_Asset_Id               NUMBER,
735                       X_Calling_Fn             VARCHAR2,
736               p_log_level_rec        IN     FA_API_TYPES.log_level_rec_type default null) IS
737    CURSOR C_Books IS
738         SELECT  book_type_code,
739                 asset_id,
740                 date_placed_in_service,
741                 date_effective,
742                 deprn_start_date,
743                 deprn_method_code,
744                 life_in_months,
745                 rate_adjustment_factor,
746                 adjusted_cost,
747                 cost,
748                 original_cost,
749                 salvage_value,
750                 prorate_convention_code,
751                 prorate_date,
752                 cost_change_flag,
753                 adjustment_required_status,
754                 capitalize_flag,
755                 retirement_pending_flag,
756                 depreciate_flag,
757                 last_update_date,
758                 last_updated_by,
759                 date_ineffective,
760                 transaction_header_id_in,
761                 transaction_header_id_out,
762                 itc_amount_id,
763                 itc_amount,
764                 retirement_id,
765                 tax_request_id,
766                 itc_basis,
767                 basic_rate,
768                 adjusted_rate,
769                 bonus_rule,
770                 ceiling_name,
771                 recoverable_cost,
772                 last_update_login,
773                 adjusted_capacity,
774                 fully_rsvd_revals_counter,
775                 idled_flag,
776                 period_counter_capitalized,
777                 period_counter_fully_reserved,
778                 period_counter_fully_retired,
779                 production_capacity,
780                 reval_amortization_basis,
781                 reval_ceiling,
782                 unit_of_measure,
783                 unrevalued_cost,
784                 annual_deprn_rounding_flag,
785                 percent_salvage_value,
786                 allowed_deprn_limit,
787                 allowed_deprn_limit_amount,
788                 period_counter_life_complete,
789                 adjusted_recoverable_cost,
790                 annual_rounding_flag,
791                 global_attribute1,
792                 global_attribute2,
793                 global_attribute3,
794                 global_attribute4,
795                 global_attribute5,
796                 global_attribute6,
797                 global_attribute7,
798                 global_attribute8,
799                 global_attribute9,
800                 global_attribute10,
801                 global_attribute11,
802                 global_attribute12,
803                 global_attribute13,
804                 global_attribute14,
805                 global_attribute15,
806                 global_attribute16,
807                 global_attribute17,
808                 global_attribute18,
809                 global_attribute19,
810                 global_attribute20,
811                 global_attribute_category,
812                 eofy_adj_cost,
813                 short_fiscal_year_flag,
814                 conversion_date,
815                 remaining_life1,
816                 remaining_life2,
817                 original_deprn_start_date,
818                 old_adjusted_cost,
819                 formula_factor,
820                 eofy_formula_factor
821          FROM   fa_books
822          WHERE  Book_Type_Code = nvl(X_Book_Type_Code, Book_Type_Code)
823          AND    Asset_Id = X_Asset_Id
824          AND    Date_Ineffective is null
825          FOR UPDATE of Asset_Id NOWAIT;
826     Recinfo_Books C_Books%ROWTYPE;
827 
828    CURSOR C_AssetHistory IS
829         SELECT     asset_id,
830           category_id,
831           asset_type,
832           units,
833           date_effective,
834           date_ineffective,
835           transaction_header_id_in,
836           transaction_header_id_out,
837           last_update_date,
838           last_updated_by,
839           last_update_login
840         FROM   fa_asset_history
841         WHERE  Asset_Id = X_Asset_Id
842         AND    Date_Ineffective is null
843         FOR UPDATE of Asset_Id NOWAIT;
844     Recinfo_AssetHistory C_AssetHistory%ROWTYPE;
845 
846    CURSOR C_DistHistory IS
847         SELECT     distribution_id,
848           book_type_code,
849           asset_id,
850           units_assigned,
851           date_effective,
852           code_combination_id,
853           location_id,
854           transaction_header_id_in,
855           last_update_date,
856           last_updated_by,
857           date_ineffective,
858           assigned_to,
859           transaction_header_id_out,
860           transaction_units,
861           retirement_id,
862           last_update_login
863         FROM   fa_distribution_history
864         WHERE  Asset_Id = X_Asset_Id
865         AND    Date_Ineffective is null
866         FOR UPDATE of Asset_Id NOWAIT;
867     Recinfo_DistHistory C_DistHistory%ROWTYPE;
868 
869    CURSOR C_DeprnSummary IS
870         SELECT  book_type_code,
871                 asset_id,
872                 deprn_run_date,
873                 deprn_amount,
874                 ytd_deprn,
875                 deprn_reserve,
876                 deprn_source_code,
877                 adjusted_cost,
878                 bonus_rate,
879                 ltd_production,
880                 period_counter,
881                 production,
882                 reval_amortization,
883                 reval_amortization_basis,
884                 reval_deprn_expense,
885                 reval_reserve,
886                 ytd_production,
887                 ytd_reval_deprn_expense,
888                 prior_fy_expense
889         FROM   fa_deprn_summary
890         WHERE  Book_Type_Code = nvl(X_Book_Type_Code, Book_Type_Code)
891         AND    Asset_Id = X_Asset_Id
892         AND    Deprn_Source_Code = 'BOOKS'
893         FOR UPDATE of Asset_Id NOWAIT;
894     Recinfo_DeprnSummary C_DeprnSummary%ROWTYPE;
895 
896   BEGIN
897     OPEN C_Books;
898     FETCH C_Books INTO Recinfo_Books;
899     if (C_Books%NOTFOUND) then
900       CLOSE C_Books;
901       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
902       APP_EXCEPTION.Raise_Exception;
903     end if;
904     CLOSE C_Books;
905 
906     OPEN C_AssetHistory;
907     FETCH C_AssetHistory INTO Recinfo_AssetHistory;
908     if (C_AssetHistory%NOTFOUND) then
909       CLOSE C_AssetHistory;
910       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
911       APP_EXCEPTION.Raise_Exception;
912     end if;
913     CLOSE C_AssetHistory;
914 
915     OPEN C_DistHistory;
916     FETCH C_DistHistory INTO Recinfo_DistHistory;
917     if (C_DistHistory%NOTFOUND) then
918       CLOSE C_DistHistory;
919       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
920       APP_EXCEPTION.Raise_Exception;
921     end if;
922     CLOSE C_DistHistory;
923 
924     OPEN C_DeprnSummary;
925     FETCH C_DeprnSummary INTO Recinfo_DeprnSummary;
926     if (C_DeprnSummary%NOTFOUND) then
927       CLOSE C_DeprnSummary;
928       FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
929       APP_EXCEPTION.Raise_Exception;
930     end if;
931     CLOSE C_DeprnSummary;
932   EXCEPTION
933     when app_exception.record_lock_exception then
934       FA_STANDARD_PKG.RAISE_ERROR(
935           CALLED_FN  => 'fa_deprn_summary_pkg.lock_b_row',
936           CALLING_FN => X_Calling_Fn,
937           NAME       => 'FA_SHARED_ASSETS_LOCKED'
938           ,p_log_level_rec => p_log_level_rec);
939     when others then
940       FA_STANDARD_PKG.RAISE_ERROR(
941           CALLED_FN  => 'fa_deprn_summary_pkg.lock_b_row',
942           CALLING_FN => X_Calling_Fn
943           ,p_log_level_rec => p_log_level_rec);
944   END Lock_B_Row;
945 
946 
947  PROCEDURE UnLock_B_Row(X_Calling_Fn               VARCHAR2,
948                 p_log_level_rec in fa_api_types.log_level_rec_type default null) IS
949   BEGIN
950 
951    rollback;
952 
953   EXCEPTION
954     when others then
955       FA_STANDARD_PKG.RAISE_ERROR(
956           CALLED_FN  => 'fa_deprn_summary_pkg.unlock_b_row',
957           CALLING_FN => X_Calling_Fn
958           ,p_log_level_rec => p_log_level_rec);
959   END UnLock_B_Row;
960 
961 END FA_DEPRN_SUMMARY_PKG;