classifications asset transfer fa
TRANSCRIPT
Though Reclassification of Financial assets is just a function in Oracle asset, but have larger impact in reporting side for disclosure requirement.
Reclassification and mass reclassification
Reclassification of an asset is simply changing the category of an asset.
Mass Reclassification is a feature that allows you to reclassify a group of assets from one asset category to another based on flexible selection criteria. Your flexiable flexible selection criteria may be either inherit the depreciation rules of the new category or retain depreciation rules of the old asset category. Also you have an option for an option to choose to amortize or expense any depreciation adjustment resulting from the reclassification. sounds Good:)
Why its needed
In Fixed asset module majority of time all assets are tracked for long-term assets. Time to time certain information needs to be changed as asset level thus reclassification serves the purpose of asset maintenance by enabling managers of the asset system to change asset details efficiently. so far i can figure out only two major reason which make qualifying for reclassification:
Change asset accounting information Change asset depreciation information
How many way you can do reclass:
Oracle Assets also allows you to reclassify assets using any of the following methods:
Asset Workbench: This option you can use the Asset Workbench to manually reclassify individual assets( it is just fliping the category).
Mass Change: You can use the Mass Change process to reclassifying groups of assets selected by one or more ranges.
Reclassification API : If you have large number of asset,you can use API, see the details in following discussion.
Limitation
You cannot reclass an asset in a prior period and future period. You cannot reclass fully retired assets You cannot reclass asset associated with inactive employee.
Applicable
This is applicable for both CIP and capitalize asset
The Process of Reclassify of Financial Assets
Navigation: Asset -> Asset WorkbenchFrom the Asset form, click on the Open option in the bottom of the form. From the Asset Details form ,place cursor in the category field andproceed to change the category or you can mass reclassification.
Reclassification Changes that Affect Accounts
Oracle Assets updates the depreciation expense account and transfers the cost and accumulated depreciation and reserve associated with the asset to the new category. In this process the depreciation rules which consist of Method , EUL and convention nothing get changed.
Depreciation expense already taken remains in the account associated with the old category. The system will charge current depreciation expense according to the newly defined category.
Accounting Treatment
Oracle Assets creates journal entries for the asset by using the accounts associated with the new category, including the depreciation expense account only in subsequent period, where no accounting entry get created in the period when it was added and reclassified
Original CategoryAsset Cost CRAccumulated Depreciation DR
New CategoryAsset Cost DRAccumulated Depreciation CR
Example:
You reclassify an asset from office equipment to computers in Year 1, Quarter 3. The asset cost is $4,000, the life is 4 years, and you are using straight-line depreciation
Underline Reports
Oracle have two major report for Reclassification.
Asset Reclassification Report o Mass Reclassification Preview Report :The Mass Reclassification Preview Report
shows you the effect of the mass reclassification criteria you specified will have on your assets.
Asset Reclassification Reconciliation Report
Technical insight
These Oracle tables directly or indirectly involved with Reclassification or mass reclassification.
1. The FA_MASS_RECLASS table stores asset selection and reclass criteria for mass reclassification requests.
2. The FA_MASS_RECLASS_ITF stores report results for Mass Reclass Preview3. FA_BOOK_CONTROLS table stores the depreciation book information
assigned to assets to be reclassed.4. FA_ADDITIONS table stores parameters for additions created by mass
reclassification process.5. FA_TRANSACTION_HEADERS & FA_DISTRIBUTION_HISTORY6. FA_CATEGORIES table is referenced for asset category information.7. FA_ASSET_KEYWORDS stores asset information classified by
FA_MASS_RECLASS.
What happen during the Reclassification
When you re-class an asset in the same period it was added, the following tables get updated
When you re-class an asset after the period it was added, Oracle Assets updates the following tables:
When you next run depreciation, the following tables are updated:
Last article you have seen some insight functionlity for Fixed asset Reclass functionality and Business need.
Majority of time whenever there is merger/acquisitions or Instance consolidation exercise reclassification plays an important role specially when you as project team not allow any new category . Mapping all assets and aligning with Parent's company existing Category is major challenge depending volume of assets. The more challenge come to IT when you did not find right fitment for Mass reclassification native screen to cater the requirement quickly thus Reclass via API's Programmatically is good options indeed.
API availability for Reclass
You can use Reclass API that uses the FA_RECLASS_PUB.DO_RECLASS procedure
You can achieve
This API can also be used to automatically reclassify assets in all the tax books that are associated with the corporate book where the reclassification originated.
You can automatically reclassify assets to all of the reporting books when MRC is enabled and without generating any rounding issues.
Let take a quick look the API details and Usage part.
API Usage
Use this script :
1. 2. DECLARE 3. 4. l_count NUMBER;5. l_return_status VARCHAR2(100);6. l_msg_count NUMBER:= 0;7. l_msg_data VARCHAR2(4000);8. l_request_id NUMBER;9. reclass_err EXCEPTION;
10. temp_str VARCHAR2(640);11. i NUMBER := 0;12. l_api_version CONSTANT NUMBER := 1.0;13. l_msg_list VARCHAR2(5) := FND_API.G_FALSE;14. l_commit_flag VARCHAR2(5) := FND_API.G_FALSE;15. l_validation_level VARCHAR2(5) := FND_API.G_VALID_LEVEL_FULL;16. l_debug_flag VARCHAR2(5) := FND_API.G_FALSE;17. l_calling_fn VARCHAR2(20) := 'Reclass Script';18. l_trans_rec FA_API_TYPES.trans_rec_type;19. l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;20. l_asset_cat_rec_new FA_API_TYPES.asset_cat_rec_type;21. l_recl_opt_rec FA_API_TYPES.reclass_options_rec_type;22. 23. ---- fetch and pass the asset id for asset which you want to
reclassify24. 25. l_asset_id NUMBER := TO_NUMBER(<asset_id>); 26. 27. ---- fetch and pass the target category id for asset which you want to
reclassify28. 29. l_category_id NUMBER := TO_NUMBER('<new_category_id>');30. -- select the options YES or NO and flag depending upon how you want
to copy the DFF's31. 32. l_copy_desc_flag VARCHAR2(3) :=
UPPER(SUBSTR('copy_category_desc_YES_NO',1,3));33. l_redefault_flag VARCHAR2(3) :=
UPPER(SUBSTR('redef_deprn_rule_YES_NO',1,3));34. 35. BEGIN 36. DBMS_OUTPUT .disable;37. DBMS_OUTPUT .enable(1000000);38. DBMS_OUTPUT .put_line('------***begin*****------');39. fa_srvr_msg.init_server_message;40. fa_debug_pkg.set_debug_flag(debug_flag => 'YES');41. DBMS_OUTPUT .put_line('.');42. 43. -- Get standard who info...use APP INITIALIZATION44. 45. l_request_id := fnd_global.conc_request_id;46. fnd_profile.get('LOGIN_ID', l_trans_rec.who_info.last_update_login);47. fnd_profile.get('USER_ID', l_trans_rec.who_info.last_updated_by);48. 49. IF (l_trans_rec.who_info.last_updated_by IS NULL) THEN50. l_trans_rec.who_info.last_updated_by := -1;51. END IF;52. IF (l_trans_rec.who_info.last_update_login IS NULL) THEN53. l_trans_rec.who_info.last_update_login := -1;54. END IF;55. 56. l_trans_rec.who_info.last_update_date := SYSDATE;57. l_trans_rec.who_info.creation_date :=
l_trans_rec.who_info.last_update_date;58. l_trans_rec.who_info.created_by :=
l_trans_rec.who_info.last_updated_by;59. l_asset_hdr_rec.asset_id := l_asset_id;
60. l_asset_cat_rec_new.category_id := l_category_id;61. l_recl_opt_rec.copy_cat_desc_flag := l_copy_desc_flag;62. l_recl_opt_rec.redefault_flag := l_redefault_flag;63. 64. DBMS_OUTPUT .put_line('calling FA_RECLASS_PUB.do_reclass');65. 66. FA_RECLASS_PUB.do_reclass (67. -- std parameters68. p_api_version => l_api_version,69. p_init_msg_list => l_msg_list,70. p_commit => l_commit_flag,71. p_validation_level => l_validation_level,72. p_calling_fn => l_calling_fn,73. x_return_status => l_return_status,74. x_msg_count => l_msg_count,75. x_msg_data => l_msg_data,76. -- api parameters77. px_trans_rec => l_trans_rec,78. px_asset_hdr_rec => l_asset_hdr_rec,79. px_asset_cat_rec_new => l_asset_cat_rec_new,80. p_recl_opt_rec => l_recl_opt_rec );81. 82. DBMS_OUTPUT .put_line('l_return_status '||l_return_status);83. 84. IF l_return_status = 'E' THEN l_msg_count := fnd_msg_pub.count_msg;85. 86. IF (l_msg_count > 0) THEN87. 88. DBMS_OUTPUT .put_line('l_msg_count '||to_char(l_msg_count));89. 90. temp_str := SUBSTR(fnd_msg_pub.get(fnd_msg_pub.G_FIRST,
fnd_api.G_FALSE), 1, 230);91. 92. DBMS_OUTPUT .put_line(temp_str);93. 94. temp_str:= NULL;95. 96. FOR I IN 1..(l_msg_count -1) LOOP97. temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);98. DBMS_OUTPUT .put_line(temp_str);99. END LOOP;100. 101. ELSE 102. 103. DBMS_OUTPUT .put_line('dump: NO MESSAGE !');104. 105. END IF;106. 107. RETURN ;108. 109. END IF;110. fa_srvr_msg.add_message111. ( calling_fn => 'TOAD SCRIPT',112. name => 'FA_SHARED_END_SUCCESS',113. token1 => 'PROGRAM',114. value1 => 'FA_RECLASS_PUB.do_reclass');115. EXCEPTION
116. WHEN reclass_err THEN117. ROLLBACK WORK;118. fa_srvr_msg.add_message(119. calling_fn => 'TOAD SCRIPT',120. name => 'FA_SHARED_PROGRAM_FAILED',121. token1 => 'PROGRAM',122. value1 => 'FA_RECLASS_PUB.do_reclass');123. 124. l_msg_count := fnd_msg_pub.count_msg;125. IF (l_msg_count > 0) THEN126. temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);127. DBMS_OUTPUT .put_line('dump: ' || temp_str);128. FOR I IN 1..(l_msg_count -1) LOOP129. temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);130. DBMS_OUTPUT .put_line('dump: ' || temp_str);131. END LOOP;132. ELSE 133. DBMS_OUTPUT .put_line('dump: NO MESSAGE !');134. END IF;135. END ;136.