svn commit: r899117 - /ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r899117 - /ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml

jacopoc
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"/>