-
Notifications
You must be signed in to change notification settings - Fork 42
/
FA Asset Register.sql
531 lines (530 loc) · 15.2 KB
/
FA Asset Register.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
/*************************************************************************/
/* */
/* (c) 2010-2024 Enginatics GmbH */
/* www.enginatics.com */
/* */
/*************************************************************************/
-- Report Name: FA Asset Register
-- Description: Application: Assets
Source: Asset Register Report (XML)
Short Name: FAS600_XML
DB package: FA_FAS600_XMLP_PKG
-- Excel Examle Output: https://www.enginatics.com/example/fa-asset-register/
-- Library Link: https://www.enginatics.com/reports/fa-asset-register/
-- Run Report: https://demo.enginatics.com/
with
q_assets as
(
select
ad.asset_number,
ad2.description,
ad.tag_number,
ad.serial_number,
fnd_flex_xml_publisher_apis.process_kff_combination_1('cat_flex_all_seg', 'OFA', 'CAT#', :p_cat_flex_id, NULL, cat.category_id, 'ALL', 'Y', 'VALUE') asset_category,
cat.description category_desc,
ad.manufacturer_name,
ad.model_number,
lookups_pt.meaning property_type,
lookups_12.meaning property_class,
lookups_nu.meaning new_used,
lookups_iu.meaning in_use_flag,
lookups_ol.meaning owned_leased,
lookups_at.meaning asset_type,
p_ad.asset_number parent_asset_number,
p_ad2.description parent_asset_desc,
ad.current_units total_units,
ad.asset_id,
bk.book_type_code
from
fa_asset_history ah,
fa_books bk,
fa_categories cat,
fa_lookups lookups_at,
fa_lookups lookups_nu,
fa_lookups lookups_ol,
fa_lookups lookups_iu,
fa_lookups lookups_pt,
fa_lookups lookups_12,
fa_additions_tl ad2,
fa_additions_b ad,
fa_additions_tl p_ad2,
fa_additions_b p_ad
where
1=1 and
ad.asset_id = ad2.asset_id and
ad2.language = userenv('LANG') and
ah.asset_id = ad.asset_id and
ah.date_effective <= sysdate and
nvl(ah.date_ineffective, sysdate+1) > sysdate and
ah.category_id = cat.category_id and
bk.asset_id = ad.asset_id and
bk.book_type_code = :p_book and
bk.date_ineffective is null and
--
p_ad.asset_id (+) = ad.parent_asset_id and
p_ad2.asset_id (+) = p_ad.asset_id and
p_ad2.language (+) = userenv('LANG') and
--
lookups_at.lookup_code = ad.asset_type and
lookups_at.lookup_type = 'ASSET TYPE' and
lookups_nu.lookup_code = ad.new_used and
lookups_nu.lookup_type = 'NEWUSE' and
lookups_ol.lookup_code = ad.owned_leased and
lookups_ol.lookup_type = 'OWNLEASE' and
lookups_iu.lookup_code = ad.in_use_flag and
lookups_iu.lookup_type = 'YESNO' and
lookups_pt.lookup_code(+) = ad.property_type_code and
lookups_pt.lookup_type(+) = 'PROPERTY TYPE' and
lookups_12.lookup_code(+) = ad.property_1245_1250_code and
lookups_12.lookup_type(+) = '1245/1250 PROPERTY'
),
q_books as
(
select
books.asset_id,
books.book_type_code book,
bc.book_class,
trunc(books.date_placed_in_service) date_placed_in_service,
books.prorate_convention_code prorate_convention,
trunc(books.prorate_date) prorate_date,
(cat.number_per_fiscal_year - cap.period_num + 1) months_deprn_in_first_yr,
lu_df.meaning depreciate,
lu_dwa.meaning depreciate_when_placed_in_serv,
trunc(books.deprn_start_date) deprn_start_date,
books.deprn_method_code deprn_method,
to_char(trunc(books.life_in_months/12) + (mod(books.life_in_months,12)/100), '90D00') life_in_yr_mo,
(books.basic_rate * 100) basic_rate_pct,
(books.adjusted_rate * 100) adjusted_rate_pct,
books.production_capacity capacity,
decode(dp_ds.fiscal_year, bc.current_fiscal_year, ds.ytd_production, null) ytd_production,
ds.ltd_production ltd_production,
books.unit_of_measure unit_of_measure,
lu_ly.meaning depreciate_in_last_year,
pd2.period_name period_reserved,
pd1.period_name period_retired,
(itc.itc_amount_rate * 100) itc_rate_pct,
books.itc_amount itc_amount,
books.itc_basis itc_basis,
(itc.basis_reduction_rate * 100) basis_reduction_rate_pct,
(itc.basis_reduction_rate * books.original_cost) basis_reduction,
nvl(ds.reval_reserve,0) revaluation_reserve,
books.ceiling_name ceiling_name,
ceil.ceiling_type ceiling_type,
books.bonus_rule bonus_rule,
books.salvage_value salvage_value,
books.rate_adjustment_factor rate_adjustment_factor,
books.original_cost original_cost,
books.cost cost,
books.adjusted_recoverable_cost recoverable_cost,
books.adjusted_cost depreciable_basis,
(books.cost - ds.deprn_reserve) net_book_value,
ds.deprn_reserve deprn_reserve,
decode(dp_ds.fiscal_year, bc.current_fiscal_year, ds.ytd_deprn, 0) ytd_deprn
from
fa_books books,
fa_book_controls bc,
fa_deprn_periods pd1,
fa_deprn_periods pd2,
fa_ceiling_types ceil,
fa_deprn_summary ds,
fa_deprn_periods dp_ds,
fa_methods meth,
fa_itc_rates itc,
fa_convention_types cot,
fa_calendar_periods cap,
fa_calendar_types cat,
fa_lookups lu_df,
fa_lookups lu_ly,
fa_lookups lu_dwa
where
:p_incl_book = 'Y' and
books.book_type_code = bc.book_type_code and
books.date_ineffective is null and
bc.book_class in ('CORPORATE', 'TAX') and
pd1.book_type_code(+) = books.book_type_code and
pd2.book_type_code(+) = books.book_type_code and
pd1.period_counter(+) = nvl(books.period_counter_fully_retired,0) and
pd2.period_counter(+) = nvl(books.period_counter_fully_reserved,0) and
ceil.ceiling_name(+) = books.ceiling_name and
ds.asset_id = books.asset_id and
ds.book_type_code = books.book_type_code and
ds.period_counter =
(select
max(ds1.period_counter)
from
fa_deprn_summary ds1
where
ds1.asset_id=ds.asset_id and
ds1.book_type_code= ds.book_type_code) and
dp_ds.period_counter = decode(bc.initial_period_counter, ds.period_counter, ds.period_counter + 1, ds.period_counter) and
dp_ds.book_type_code = books.book_type_code and
meth.method_code = books.deprn_method_code and
nvl(meth.life_in_months, -1) = nvl(books.life_in_months, -1) and
itc.itc_amount_id(+) = books.itc_amount_id and
cot.prorate_convention_code = books.prorate_convention_code and
cap.calendar_type = bc.prorate_calendar and
books.prorate_date between cap.start_date and cap.end_date and
cap.calendar_type = cat.calendar_type and
lu_df.lookup_code = books.depreciate_flag and
lu_df.lookup_type = 'YESNO' and
lu_ly.lookup_code = meth.depreciate_lastyear_flag and
lu_ly.lookup_type = 'YESNO' and
lu_dwa.lookup_code = cot.depr_when_acquired_flag and
lu_dwa.lookup_type = 'YESNO'
),
d_distributions as
(
select
dh.asset_id asset_id,
bc.book_type_code,
dh.book_type_code book,
fnd_flex_xml_publisher_apis.process_kff_combination_1('acct_flex_cost_seg', 'SQLGL', 'GL#', cc.chart_of_accounts_id, null, cc.code_combination_id, 'ALL', 'Y', 'VALUE') gl_account,
fnd_flex_xml_publisher_apis.process_kff_combination_1('d_location', 'OFA', 'LOC#', :p_loc_flex_id, null, loc.location_id, 'ALL', 'Y', 'VALUE') location,
emp.employee_number employee_number,
emp.full_name employee_name,
dh.units_assigned assigned_units
from
fa_locations loc,
gl_code_combinations cc,
per_all_people_f emp,
fa_distribution_history dh,
fa_book_controls bc
where
dh.code_combination_id = cc.code_combination_id and
dh.assigned_to is not null and
dh.assigned_to = emp.person_id and
dh.date_effective between emp.effective_start_date and emp.effective_end_date and
dh.location_id = loc.location_id and
dh.date_ineffective is null and
dh.book_type_code = bc.distribution_source_book
union all
select
dh.asset_id asset_id,
bc.book_type_code,
dh.book_type_code book,
fnd_flex_xml_publisher_apis.process_kff_combination_1('acct_flex_cost_seg', 'SQLGL', 'GL#', cc.chart_of_accounts_id, null, cc.code_combination_id, 'ALL', 'Y', 'VALUE') gl_account,
fnd_flex_xml_publisher_apis.process_kff_combination_1('d_location', 'OFA', 'LOC#', :p_loc_flex_id, null, loc.location_id, 'ALL', 'Y', 'VALUE')location,
null,
null,
dh.units_assigned distribution_units
from
fa_locations loc,
gl_code_combinations cc,
fa_distribution_history dh,
fa_book_controls bc
where
dh.code_combination_id = cc.code_combination_id and
dh.assigned_to is null and
dh.location_id = loc.location_id and
dh.date_ineffective is null and
dh.book_type_code = bc.distribution_source_book
union all
select
dh.asset_id asset_id,
bc.book_type_code,
dh.book_type_code book,
fnd_flex_xml_publisher_apis.process_kff_combination_1('acct_flex_cost_seg', 'SQLGL', 'GL#', cc.chart_of_accounts_id, null, cc.code_combination_id, 'ALL', 'Y', 'VALUE') gl_account,
fnd_flex_xml_publisher_apis.process_kff_combination_1('d_location', 'OFA', 'LOC#', :p_loc_flex_id, null, loc.location_id, 'ALL', 'Y', 'VALUE') location,
null,
null,
dh.units_assigned distribution_units
from
fa_locations loc,
gl_code_combinations cc,
fa_distribution_history dh,
fa_book_controls bc
where
dh.code_combination_id = cc.code_combination_id and
dh.assigned_to is not null and
dh.location_id = loc.location_id and
dh.date_ineffective is null and
dh.book_type_code = bc.distribution_source_book and
not exists
(select
employee_id
from
fa_employees
where
employee_id = dh.assigned_to)
),
q_invoices as
(
select
ai.asset_id asset_id,
ai.invoice_number,
ai.invoice_line_number||' - '||ai.ap_distribution_line_number invoice_line_number,
ai.description invoice_descripton,
po.segment1 vendor_number,
po.vendor_name,
ai.po_number
from
fa_asset_invoices ai,
po_vendors po
where
ai.po_vendor_id = po.vendor_id(+) and
ai.date_ineffective is null
)
--
-- Main Query Starts Here
--
select
x.*
from
(
--
-- Q1 Asset Books
--
select /*+ push_pred(books) */
assets.asset_number,
assets.description,
assets.tag_number,
assets.serial_number,
assets.asset_category,
assets.category_desc,
assets.manufacturer_name,
assets.model_number,
assets.property_type,
assets.property_class,
assets.new_used,
assets.in_use_flag,
assets.owned_leased,
assets.asset_type,
assets.parent_asset_number,
assets.parent_asset_desc,
assets.total_units,
--
'Book' record_type,
-- Books
books.book,
books.book_class,
books.date_placed_in_service,
books.prorate_convention,
books.prorate_date,
books.months_deprn_in_first_yr,
books.depreciate,
books.depreciate_when_placed_in_serv,
books.deprn_start_date,
books.deprn_method,
books.life_in_yr_mo,
books.basic_rate_pct,
books.adjusted_rate_pct,
books.capacity,
books.ytd_production,
books.ltd_production,
books.unit_of_measure,
books.depreciate_in_last_year,
books.period_reserved,
books.period_retired,
books.itc_rate_pct,
books.itc_amount,
books.itc_basis,
books.basis_reduction_rate_pct,
books.basis_reduction,
books.revaluation_reserve,
books.ceiling_name,
books.ceiling_type,
books.bonus_rule,
books.salvage_value,
books.rate_adjustment_factor,
books.original_cost,
books.cost,
books.recoverable_cost,
books.depreciable_basis,
books.net_book_value,
books.deprn_reserve,
books.ytd_deprn,
-- Distributions
null gl_account,
null location,
null employee_number,
null employee_name,
to_number(null) assigned_units,
-- Invoices
null invoice_number,
null invoice_line_number,
null invoice_descripton,
null vendor_number,
null vendor_name,
null po_number
from
q_assets assets,
q_books books
where
(:p_incl_book = 'Y' or (:p_incl_book = 'N' and :p_incl_dist = 'N' and :p_incl_inv = 'N')) and
assets.asset_id = books.asset_id (+)
union all
--
-- Q2 Asset Distributions
--
select /*+ push_pred(dist) */
assets.asset_number,
assets.description,
assets.tag_number,
assets.serial_number,
assets.asset_category,
assets.category_desc,
assets.manufacturer_name,
assets.model_number,
assets.property_type,
assets.property_class,
assets.new_used,
assets.in_use_flag,
assets.owned_leased,
assets.asset_type,
assets.parent_asset_number,
assets.parent_asset_desc,
assets.total_units,
--
'Distribution' record_type,
-- Books
dist.book,
null book_class,
to_date(null) date_placed_in_service,
null prorate_convention,
to_date(null) prorate_date,
to_number(null) months_deprn_in_first_yr,
null depreciate,
null depreciate_when_placed_in_serv,
to_date(null) deprn_start_date,
null deprn_method,
null life_in_yr_mo,
to_number(null) basic_rate_pct,
to_number(null) adjusted_rate_pct,
to_number(null) capacity,
to_number(null) ytd_production,
to_number(null) ltd_production,
null unit_of_measure,
null depreciate_in_last_year,
null period_reserved,
null period_retired,
to_number(null) itc_rate_pct,
to_number(null) itc_amount,
to_number(null) itc_basis,
to_number(null) basis_reduction_rate_pct,
to_number(null) basis_reduction,
to_number(null) revaluation_reserve,
null ceiling_name,
null ceiling_type,
null bonus_rule,
to_number(null) salvage_value,
to_number(null) rate_adjustment_factor,
to_number(null) original_cost,
to_number(null) cost,
to_number(null) recoverable_cost,
to_number(null) depreciable_basis,
to_number(null) net_book_value,
to_number(null) deprn_reserve,
to_number(null) ytd_deprn,
-- Distributions
dist.gl_account,
dist.location,
dist.employee_number,
dist.employee_name,
dist.assigned_units,
-- Invoices
null invoice_number,
null invoice_line_number,
null invoice_descripton,
null vendor_number,
null vendor_name,
null po_number
from
q_assets assets,
d_distributions dist
where
:p_incl_dist = 'Y' and
assets.asset_id = dist.asset_id and
assets.book_type_code = dist.book_type_code
union all
--
-- Q3 Asset Invoices
--
select /*+ push_pred(inv) */
assets.asset_number,
assets.description,
assets.tag_number,
assets.serial_number,
assets.asset_category,
assets.category_desc,
assets.manufacturer_name,
assets.model_number,
assets.property_type,
assets.property_class,
assets.new_used,
assets.in_use_flag,
assets.owned_leased,
assets.asset_type,
assets.parent_asset_number,
assets.parent_asset_desc,
assets.total_units,
--
'Invoice' record_type,
-- Books
null book,
null book_class,
to_date(null) date_placed_in_service,
null prorate_convention,
to_date(null) prorate_date,
to_number(null) months_deprn_in_first_yr,
null depreciate,
null depreciate_when_placed_in_serv,
to_date(null) deprn_start_date,
null deprn_method,
null life_in_yr_mo,
to_number(null) basic_rate_pct,
to_number(null) adjusted_rate_pct,
to_number(null) capacity,
to_number(null) ytd_production,
to_number(null) ltd_production,
null unit_of_measure,
null depreciate_in_last_year,
null period_reserved,
null period_retired,
to_number(null) itc_rate_pct,
to_number(null) itc_amount,
to_number(null) itc_basis,
to_number(null) basis_reduction_rate_pct,
to_number(null) basis_reduction,
to_number(null) revaluation_reserve,
null ceiling_name,
null ceiling_type,
null bonus_rule,
to_number(null) salvage_value,
to_number(null) rate_adjustment_factor,
to_number(null) original_cost,
to_number(null) cost,
to_number(null) recoverable_cost,
to_number(null) depreciable_basis,
to_number(null) net_book_value,
to_number(null) deprn_reserve,
to_number(null) ytd_deprn,
-- Distributions
null gl_account,
null location,
null employee_number,
null employee_name,
to_number(null) assigned_units,
-- Invoice
inv.invoice_number,
inv.invoice_line_number,
inv.invoice_descripton,
inv.vendor_number,
inv.vendor_name,
inv.po_number
from
q_assets assets,
q_invoices inv
where
:p_incl_inv = 'Y' and
assets.asset_id = inv.asset_id
) x
order by
x.asset_number,
decode(x.record_type,'Book',1,'Distribution',2,3),
x.book_class,
x.book,
x.gl_account,
x.location,
x.employee_name,
x.invoice_number,
x.invoice_line_number