|
Author: jacopoc
Date: Thu Jan 14 08:49:48 2010 New Revision: 899117 URL: http://svn.apache.org/viewvc?rev=899117&view=rev Log: Improved fixed asset depreciation formulae in order to properly handle (instead of returning an output service validation error) the scenario when the formula is executed during the first year of usage. Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml?rev=899117&r1=899116&r2=899117&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml (original) +++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml Thu Jan 14 08:49:48 2010 @@ -560,32 +560,45 @@ <set field="purchaseCost" from-field="parameters.purchaseCost"/> <set field="salvageValue" from-field="parameters.salvageValue"/> <call-object-method obj-field="parameters.usageYears" method-name="intValue" ret-field="intUsageYears"/> - <if-not-empty field="parameters.fixedAssetId"> - <set field="depreciation" value="0.0" type="BigDecimal"/> - <!--FORMULA : depreciation = (purchaseCost - salvageValue) / (expectedEndOfLife - dateAcquired) --> - <calculate field="depreciation" decimal-scale="2"> - <calcop operator="divide"> - <calcop operator="subtract"> - <calcop operator="get" field="purchaseCost"/> - <calcop operator="get" field="salvageValue"/> - </calcop> - <calcop operator="subtract"> - <calcop operator="get" field="expEndOfLifeYear"/> - <calcop operator="get" field="assetAcquiredYear"/> - </calcop> - </calcop> - </calculate> - <loop count="${intUsageYears}"> - <calculate field="purchaseCost"> - <calcop operator="subtract"> - <calcop operator="get" field="purchaseCost"/> - <calcop operator="get" field="depreciation"/> + <if> + <condition> + <and> + <if-compare field="intUsageYears" operator="greater" value="0.0" type="BigDecimal"/> + <not><if-empty field="parameters.fixedAssetId"/></not> + </and> + </condition> + <then> + <set field="depreciation" value="0.0" type="BigDecimal"/> + <!--FORMULA : depreciation = (purchaseCost - salvageValue) / (expectedEndOfLife - dateAcquired) --> + <calculate field="depreciation" decimal-scale="2"> + <calcop operator="divide"> + <calcop operator="subtract"> + <calcop operator="get" field="purchaseCost"/> + <calcop operator="get" field="salvageValue"/> + </calcop> + <calcop operator="subtract"> + <calcop operator="get" field="expEndOfLifeYear"/> + <calcop operator="get" field="assetAcquiredYear"/> + </calcop> </calcop> </calculate> - <field-to-list list="assetDepreciationTillDate" field="depreciation"/> - <field-to-list list="assetNBVAfterDepreciation" field="purchaseCost"/> - </loop> - </if-not-empty> + <loop count="${intUsageYears}"> + <calculate field="purchaseCost"> + <calcop operator="subtract"> + <calcop operator="get" field="purchaseCost"/> + <calcop operator="get" field="depreciation"/> + </calcop> + </calculate> + <field-to-list list="assetDepreciationTillDate" field="depreciation"/> + <field-to-list list="assetNBVAfterDepreciation" field="purchaseCost"/> + </loop> + </then> + </if> + <if-empty field="assetDepreciationTillDate"> + <set field="depreciation" value="0.0" type="BigDecimal"/> + <field-to-list list="assetDepreciationTillDate" field="depreciation"/> + <field-to-list list="assetNBVAfterDepreciation" field="purchaseCost"/> + </if-empty> <log level="info" message="Using straight line formula depreciation calculated for fixedAsset (${parameters.fixedAssetId}) is ${depreciation}"/> <field-to-result field="assetDepreciationTillDate"/> <field-to-result field="assetNBVAfterDepreciation"/> @@ -597,41 +610,54 @@ <set field="purchaseCost" from-field="parameters.purchaseCost"/> <set field="salvageValue" from-field="parameters.salvageValue"/> <call-object-method obj-field="parameters.usageYears" method-name="intValue" ret-field="intUsageYears"/> - <if-not-empty field="parameters.fixedAssetId"> - <loop count="${intUsageYears}"> - <set field="depreciation" value="0.0" type="BigDecimal"/> - <!--FORMULA : depreciation = (NBV - salvageValue) * 2 / (expectedEndOfLife - dateAcquired) --> - <calculate field="depreciation" decimal-scale="2"> - <calcop operator="multiply"> - <calcop operator="divide"> - <calcop operator="subtract"> - <calcop operator="get" field="purchaseCost"/> - <calcop operator="get" field="salvageValue"/> - </calcop> - <calcop operator="subtract"> - <calcop operator="get" field="expEndOfLifeYear"/> - <calcop operator="get" field="assetAcquiredYear"/> + <if> + <condition> + <and> + <if-compare field="intUsageYears" operator="greater" value="0.0" type="BigDecimal"/> + <not><if-empty field="parameters.fixedAssetId"/></not> + </and> + </condition> + <then> + <loop count="${intUsageYears}"> + <set field="depreciation" value="0.0" type="BigDecimal"/> + <!--FORMULA : depreciation = (NBV - salvageValue) * 2 / (expectedEndOfLife - dateAcquired) --> + <calculate field="depreciation" decimal-scale="2"> + <calcop operator="multiply"> + <calcop operator="divide"> + <calcop operator="subtract"> + <calcop operator="get" field="purchaseCost"/> + <calcop operator="get" field="salvageValue"/> + </calcop> + <calcop operator="subtract"> + <calcop operator="get" field="expEndOfLifeYear"/> + <calcop operator="get" field="assetAcquiredYear"/> + </calcop> </calcop> + <number value="2"/> </calcop> - <number value="2"/> - </calcop> - </calculate> - <calculate field="assetAcquiredYear"> - <calcop operator="add"> - <calcop operator="get" field="assetAcquiredYear"/> - <number value="1"/> - </calcop> - </calculate> - <calculate field="purchaseCost"> - <calcop operator="subtract"> - <calcop operator="get" field="purchaseCost"/> - <calcop operator="get" field="depreciation"/> - </calcop> - </calculate> - <field-to-list list="assetDepreciationTillDate" field="depreciation"/> - <field-to-list list="assetNBVAfterDepreciation" field="purchaseCost"/> - </loop> - </if-not-empty> + </calculate> + <calculate field="assetAcquiredYear"> + <calcop operator="add"> + <calcop operator="get" field="assetAcquiredYear"/> + <number value="1"/> + </calcop> + </calculate> + <calculate field="purchaseCost"> + <calcop operator="subtract"> + <calcop operator="get" field="purchaseCost"/> + <calcop operator="get" field="depreciation"/> + </calcop> + </calculate> + <field-to-list list="assetDepreciationTillDate" field="depreciation"/> + <field-to-list list="assetNBVAfterDepreciation" field="purchaseCost"/> + </loop> + </then> + </if> + <if-empty field="assetDepreciationTillDate"> + <set field="depreciation" value="0.0" type="BigDecimal"/> + <field-to-list list="assetDepreciationTillDate" field="depreciation"/> + <field-to-list list="assetNBVAfterDepreciation" field="purchaseCost"/> + </if-empty> <log level="info" message="Using double decline formula depreciation calculated for fixedAsset (${parameters.fixedAssetId}) is ${assetDepreciationTillDate}"/> <field-to-result field="assetDepreciationTillDate"/> <field-to-result field="assetNBVAfterDepreciation"/> |
| Free forum by Nabble | Edit this page |
