You are on page 1of 8

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 Workbench From 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 and proceed 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 Category Asset Cost CR Accumulated Depreciation DR

New Category Asset Cost DR Accumulated 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 Preview 3. 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_HISTORY 6. 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. 3. 4. 5. 6. 7. 8. 9. DECLARE l_count l_return_status l_msg_count l_msg_data l_request_id reclass_err NUMBER; VARCHAR2(100); NUMBER:= 0; VARCHAR2(4000); NUMBER; EXCEPTION;

10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

temp_str i NUMBER l_api_version l_msg_list l_commit_flag l_validation_level l_debug_flag l_calling_fn l_trans_rec l_asset_hdr_rec l_asset_cat_rec_new l_recl_opt_rec

VARCHAR2(640); := 0; CONSTANT NUMBER := 1.0; VARCHAR2(5) := FND_API.G_FALSE; VARCHAR2(5) := FND_API.G_FALSE; VARCHAR2(5) := FND_API.G_VALID_LEVEL_FULL; VARCHAR2(5) := FND_API.G_FALSE; VARCHAR2(20) := 'Reclass Script'; FA_API_TYPES.trans_rec_type; FA_API_TYPES.asset_hdr_rec_type; FA_API_TYPES.asset_cat_rec_type; FA_API_TYPES.reclass_options_rec_type;

---- fetch and pass the asset id for asset which you want to reclassify

24. 25. l_asset_id NUMBER := TO_NUMBER(<asset_id>); 26. 27. ---- fetch and pass the target category id for asset which you want to reclassify 28. 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's 31. 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 INITIALIZATION 44. 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) THEN 50. l_trans_rec.who_info.last_updated_by := -1; 51. END IF; 52. IF (l_trans_rec.who_info.last_update_login IS NULL) THEN 53. 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. 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.

l_asset_cat_rec_new.category_id l_recl_opt_rec.copy_cat_desc_flag l_recl_opt_rec.redefault_flag

:= l_category_id; := l_copy_desc_flag; := l_redefault_flag;

DBMS_OUTPUT.put_line('calling FA_RECLASS_PUB.do_reclass'); FA_RECLASS_PUB.do_reclass -- std parameters p_api_version => p_init_msg_list => p_commit => p_validation_level => p_calling_fn => x_return_status => x_msg_count => x_msg_data => -- api parameters px_trans_rec => px_asset_hdr_rec => px_asset_cat_rec_new => p_recl_opt_rec => ( l_api_version, l_msg_list, l_commit_flag, l_validation_level, l_calling_fn, l_return_status, l_msg_count, l_msg_data, l_trans_rec, l_asset_hdr_rec, l_asset_cat_rec_new, l_recl_opt_rec );

DBMS_OUTPUT.put_line('l_return_status '||l_return_status); IF l_return_status = 'E' THEN l_msg_count := fnd_msg_pub.count_msg; IF (l_msg_count > 0) THEN DBMS_OUTPUT.put_line('l_msg_count '||to_char(l_msg_count)); temp_str := SUBSTR(fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE), 1, 230); DBMS_OUTPUT.put_line(temp_str); temp_str:= NULL; FOR I IN 1..(l_msg_count -1) LOOP temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE); DBMS_OUTPUT.put_line(temp_str); END LOOP; ELSE DBMS_OUTPUT.put_line('dump: NO MESSAGE !'); END IF; RETURN; END IF; fa_srvr_msg.add_message ( calling_fn => 'TOAD SCRIPT', name => 'FA_SHARED_END_SUCCESS', token1 => 'PROGRAM', value1 => 'FA_RECLASS_PUB.do_reclass'); EXCEPTION

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.

WHEN reclass_err THEN ROLLBACK WORK; fa_srvr_msg.add_message( calling_fn => 'TOAD SCRIPT', name => 'FA_SHARED_PROGRAM_FAILED', token1 => 'PROGRAM', value1 => 'FA_RECLASS_PUB.do_reclass'); l_msg_count := fnd_msg_pub.count_msg; IF (l_msg_count > 0) THEN temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE); DBMS_OUTPUT.put_line('dump: ' || temp_str); FOR I IN 1..(l_msg_count -1) LOOP temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE); DBMS_OUTPUT.put_line('dump: ' || temp_str); END LOOP; ELSE DBMS_OUTPUT.put_line('dump: NO MESSAGE !'); END IF; END;

You might also like