[Home] [Help]
PACKAGE BODY: APPS.FA_REC_PVT_PKG2
Source
1 PACKAGE BODY FA_REC_PVT_PKG2 AS
2 /* $Header: FAXVRC2B.pls 120.3 2005/07/25 10:04:26 yyoon ship $ */
3
4 --
5 -- FUNCTION Validate_Redefault
6 --
7
8 FUNCTION Validate_Redefault(
9 p_asset_id IN NUMBER,
10 p_new_category_id IN NUMBER,
11 p_book_type_code IN VARCHAR2,
12 p_amortize_flag IN VARCHAR2 := 'NO',
13 p_mr_req_id IN NUMBER := -1,
14 x_rule_change_exists OUT NOCOPY BOOLEAN,
15 x_old_rules OUT NOCOPY FA_LOAD_TBL_PKG.asset_deprn_info,
16 x_new_rules OUT NOCOPY FA_LOAD_TBL_PKG.asset_deprn_info,
17 x_use_rules OUT NOCOPY BOOLEAN,
18 x_prorate_date OUT NOCOPY DATE,
19 x_rate_source_rule OUT NOCOPY VARCHAR2,
20 x_deprn_basis_rule OUT NOCOPY VARCHAR2,
21 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null) RETURN BOOLEAN IS
22 l_old_rules FA_LOAD_TBL_PKG.asset_deprn_info;
23 l_new_rules FA_LOAD_TBL_PKG.asset_deprn_info;
24 l_found BOOLEAN := FALSE;
25 CURSOR get_old_rules IS
26 SELECT book_type_code,
27 date_placed_in_service, date_placed_in_service,
28 prorate_convention_code, deprn_method_code,
29 life_in_months, basic_rate, adjusted_rate,
30 production_capacity, unit_of_measure,
31 bonus_rule, NULL, ceiling_name,
32 depreciate_flag, allowed_deprn_limit,
33 allowed_deprn_limit_amount, percent_salvage_value
34 FROM FA_BOOKS
35 WHERE book_type_code = p_book_type_code
36 AND asset_id = p_asset_id
37 AND date_ineffective IS NULL;
38 BEGIN
39
40 ---- Prepare for validations ----
41
42 /* Get old(current) depreciation rules from the current books row. */
43 OPEN get_old_rules;
44 FETCH get_old_rules INTO l_old_rules;
45 CLOSE get_old_rules;
46
47 /* Get new depreciation rules. */
48 FA_LOAD_TBL_PKG.Get_Deprn_Rules(
49 p_book_type_code => p_book_type_code,
50 p_date_placed_in_service => l_old_rules.start_dpis,
51 x_deprn_rules_rec => l_new_rules,
52 x_found => l_found,
53 p_log_level_rec => p_log_level_rec);
54 IF not l_found THEN
55 FA_SRVR_MSG.Add_Message(
56 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Redefault',
57 NAME => 'FA_REC_NO_CAT_DEFAULTS'
58 ,p_log_level_rec => p_log_level_rec);
59 /* Message text:
60 'The new category default depreciation rules do not
61 exist for this asset and its date placed in service.' */
62 RETURN (FALSE);
63 END IF;
64
65 /* We will not redefault depreciate_flag through mass reclass. */
66 l_new_rules.depreciate_flag := l_old_rules.depreciate_flag;
67
68 /* See if any rule change is needed. */
69 IF NOT ((l_old_rules.prorate_conv_code = l_new_rules.prorate_conv_code) AND
70 (l_old_rules.deprn_method = l_new_rules.deprn_method) AND
71 (nvl(l_old_rules.life_in_months, 99999) =
72 nvl(l_new_rules.life_in_months, 99999)) AND
73 (nvl(l_old_rules.basic_rate, 99999) =
74 nvl(l_new_rules.basic_rate, 99999)) AND
75 (nvl(l_old_rules.adjusted_rate, 99999) =
76 nvl(l_new_rules.adjusted_rate, 99999)) AND
77 (nvl(l_old_rules.production_capacity, 99999) =
78 nvl(l_new_rules.production_capacity, 99999)) AND
79 (nvl(l_old_rules.unit_of_measure, 99999) =
80 nvl(l_new_rules.unit_of_measure, 99999)) AND
81 (nvl(l_old_rules.bonus_rule, 'NULL') =
82 nvl(l_new_rules.bonus_rule, 'NULL')) AND
83 (nvl(l_old_rules.ceiling_name, 'NULL') =
84 nvl(l_new_rules.ceiling_name, 'NULL')) AND
85 /* Skip this check -- we will not change depreciate flag through mass reclass.
86 (l_old_rules.depreciate_flag = l_new_rules.depreciate_flag) AND
87 */
88 (nvl(l_old_rules.allow_deprn_limit, 99) =
89 nvl(l_new_rules.allow_deprn_limit, 99)) AND
90 (nvl(to_char(l_old_rules.deprn_limit_amount), 'NULL') =
91 nvl(to_char(l_new_rules.deprn_limit_amount), 'NULL')) AND
92 (nvl(l_old_rules.percent_salvage_value, 99) =
93 nvl(l_new_rules.percent_salvage_value, 99)))
94 THEN
95 x_rule_change_exists := TRUE; -- At least one change is needed.
96 ELSE
97 x_rule_change_exists := FALSE;
98 RETURN (TRUE);
99 -- No rule change is needed. Skip the validations.
100 END IF;
101
102 ---- Validations -----
103
104 /* Validate an adjustment transaction. */
105 IF NOT Validate_Adjustment(
106 p_asset_id => p_asset_id,
107 p_book_type_code => p_book_type_code,
108 p_amortize_flag => p_amortize_flag,
109 p_mr_req_id => p_mr_req_id,
110 p_log_level_rec => p_log_level_rec)
111 THEN
112 FA_SRVR_MSG.Add_Message(
113 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Redefault'
114 ,p_log_level_rec => p_log_level_rec);
115 RETURN (FALSE);
116 END IF;
117
118 /* Validate depreciation rule changes. */
119 IF NOT FA_REC_PVT_PKG3.Validate_Rule_Changes(
120 p_asset_id => p_asset_id,
121 p_new_category_id => p_new_category_id,
122 p_book_type_code => p_book_type_code,
123 p_amortize_flag => p_amortize_flag,
124 p_old_rules => l_old_rules,
125 p_new_rules => l_new_rules,
126 x_prorate_date => x_prorate_date,
127 x_rate_source_rule => x_rate_source_rule,
128 x_deprn_basis_rule => x_deprn_basis_rule,
129 p_log_level_rec => p_log_level_rec)
130 THEN
131 FA_SRVR_MSG.Add_Message(
132 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Redefault'
133 ,p_log_level_rec => p_log_level_rec);
134 RETURN (FALSE);
135 END IF;
136
137 x_old_rules := l_old_rules;
138 x_new_rules := l_new_rules;
139 x_use_rules := TRUE;
140 RETURN (TRUE);
141 EXCEPTION
142 WHEN OTHERS THEN
143 x_use_rules := FALSE;
144 FA_SRVR_MSG.Add_SQL_Error(
145 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Redefault'
146 ,p_log_level_rec => p_log_level_rec);
147 RETURN (FALSE);
148 END Validate_Redefault;
149
150
151 --
152 -- FUNCTION Validate_Adjustment
153 --
154
155 FUNCTION Validate_Adjustment(
156 p_asset_id IN NUMBER,
157 p_book_type_code IN VARCHAR2,
158 p_amortize_flag IN VARCHAR2,
159 p_mr_req_id IN NUMBER := -1,
160 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
161 RETURN BOOLEAN IS
162 check_flag VARCHAR2(3);
163 prior_transaction_date DATE;
164 prior_date_effective DATE;
165 check_another_trans NUMBER;
166 CURSOR check_mass_change_allowed IS
167 SELECT 'x' FROM FA_BOOK_CONTROLS
168 WHERE book_type_code = p_book_type_code AND allow_mass_changes = 'NO'
169 AND p_mr_req_id <> -1;
170 CURSOR check_prior_amort IS
171 SELECT 'x' FROM FA_BOOKS
172 WHERE book_type_code = p_book_type_code AND asset_id = p_asset_id
173 AND rate_adjustment_factor <> 1;
174 CURSOR check_cip IS
175 SELECT 'x' FROM FA_ADDITIONS
176 WHERE asset_id = p_asset_id AND asset_type = 'CIP';
177 CURSOR check_amort_allowed IS
178 SELECT 'x' FROM FA_BOOK_CONTROLS
179 WHERE book_type_code = p_book_type_code AND amortize_flag = 'NO';
180 CURSOR check_deprn IS
181 SELECT 'x' FROM FA_DEPRN_SUMMARY
182 WHERE book_type_code = p_book_type_code AND asset_id = p_asset_id
183 AND deprn_source_code = 'DEPRN' AND deprn_amount <> 0;
184 BEGIN
185 -- Check if mass change(adjustment) is allowed.
186 OPEN check_mass_change_allowed;
187 FETCH check_mass_change_allowed INTO check_flag;
188 IF (check_mass_change_allowed%found) THEN
189 CLOSE check_mass_change_allowed;
190 FA_SRVR_MSG.Add_Message(
191 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Adjustment',
192 NAME => 'FA_REC_MASSCHG_NOT_ALLOWED'
193 ,p_log_level_rec => p_log_level_rec);
194 /* Message text:
195 'You cannot use mass transaction to redefault depreciation rules
196 for the asset in this book because Allow Mass Changes field in the
197 Book Controls form is set to No. */
198 RETURN (FALSE);
199 END IF;
200 CLOSE check_mass_change_allowed;
201
202 ---- Checks for Expensed Adjustment ----
203
204 /* Check if there were prior amortized adjustments, in case of expensed
205 adjustment. */
206 IF (p_amortize_flag = 'NO') THEN
207 OPEN check_prior_amort;
208 FETCH check_prior_amort INTO check_flag;
209 IF (check_prior_amort%found) THEN
210 CLOSE check_prior_amort;
211 FA_SRVR_MSG.Add_Message(
212 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Adjustment',
213 NAME => 'FA_BOOK_CANT_EXP_AFTER_AMORT'
214 ,p_log_level_rec => p_log_level_rec);
215 RETURN (FALSE);
216 END IF;
217 CLOSE check_prior_amort;
218
219 ---- Checks for Amortized Adjustment ----
220
221 ELSE
222 /* Check if an asset is a CIP asset. CIP assets cannot be amortized.
223 Rule from fa_fin_adj3_pkg.transaction_type(). */
224 OPEN check_cip;
225 FETCH check_cip INTO check_flag;
226 IF (check_cip%found) THEN
227 CLOSE check_cip;
228 FA_SRVR_MSG.Add_Message(
229 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Adjustment',
230 NAME => 'FA_REC_CIP_CANNOT_AMORT'
231 ,p_log_level_rec => p_log_level_rec);
232 /* Message text:
233 'You cannot amortize an adjustment for a CIP asset.' */
234 RETURN (FALSE);
235 END IF;
236 CLOSE check_cip;
237
238 /* Check if amortization is allowed in this book. */
239 OPEN check_amort_allowed;
240 FETCH check_amort_allowed INTO check_flag;
241 IF (check_amort_allowed%found) THEN
242 CLOSE check_amort_allowed;
243 FA_SRVR_MSG.Add_Message(
244 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Adjustment',
245 NAME => 'FA_BOOK_AMORTIZED_NOT_ALLOW'
246 ,p_log_level_rec => p_log_level_rec);
247 RETURN (FALSE);
248 END IF;
249 CLOSE check_amort_allowed;
250
251 /* Check if the asset has already been depreciated. */
252 OPEN check_deprn;
253 FETCH check_deprn INTO check_flag;
254 IF (check_deprn%notfound) THEN
255 CLOSE check_deprn;
256 FA_SRVR_MSG.Add_Message(
257 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Adjustment',
258 NAME => 'FA_BOOK_CANT_AMORT_BEF_DEPRN'
259 ,p_log_level_rec => p_log_level_rec);
260 RETURN (FALSE);
261 END IF;
262 CLOSE check_deprn;
263
264 END IF;
265
266 RETURN (TRUE);
267 EXCEPTION
268 WHEN OTHERS THEN
269 FA_SRVR_MSG.Add_SQL_Error(
270 CALLING_FN => 'FA_REC_PVT_PKG2.Validate_Adjustment'
271 ,p_log_level_rec => p_log_level_rec);
272 RETURN (FALSE);
273 END Validate_Adjustment;
274
275
276 END FA_REC_PVT_PKG2;