svn commit: r1006104 - /ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/timesheet/TimesheetServices.xml

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

svn commit: r1006104 - /ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/timesheet/TimesheetServices.xml

hansbak-2
Author: hansbak
Date: Sat Oct  9 02:27:39 2010
New Revision: 1006104

URL: http://svn.apache.org/viewvc?rev=1006104&view=rev
Log:
when generate invoice fom timesheet combine invoice items with the same description and item amounts

Modified:
    ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/timesheet/TimesheetServices.xml

Modified: ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/timesheet/TimesheetServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/timesheet/TimesheetServices.xml?rev=1006104&r1=1006103&r2=1006104&view=diff
==============================================================================
--- ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/timesheet/TimesheetServices.xml (original)
+++ ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/timesheet/TimesheetServices.xml Sat Oct  9 02:27:39 2010
@@ -152,6 +152,16 @@ under the License.
         <set field="invoiceItemMap.taxableFlag" value="N"/>
         <set field="invoiceItemMap.invoiceItemTypeId" value="INV_TE_ITEM"/>
         <set field="invoiceItemMap.uomId" value="TF_hr"/>
+        <set field="invoiceItemMap.description" value="${workEffort.workEffortName} [Task:${workEffort.workEffortId}]"/>
+        <get-related value-field="workEffort" relation-name="CustRequestWorkEffort" list="custRequestWorkEfforts"/>
+        <if-not-empty field="custRequestWorkEfforts">
+            <first-from-list entry="custRequestWorkEffort" list="custRequestWorkEfforts"/>
+            <get-related-one value-field="custRequestWorkEffort" relation-name="CustRequest" to-value-field="custRequest"/>
+            <if-not-empty field="custRequest">
+                <set field="invoiceItemDescription" value="${custRequest.custRequestName} [CRQ:${custRequest.custRequestId}] ${custRequest.description}"/>
+                <set field="invoiceItemMap.description" value="${groovy:invoiceItemDescription.size()&gt;255?invoiceItemDescription.substring(0,251)+&quot; ...&quot;:invoiceItemDescription}"/>
+            </if-not-empty>
+        </if-not-empty>
         <iterate entry="timeEntry" list="timeEntryList">
             <if>
                 <condition>
@@ -203,27 +213,26 @@ under the License.
                             <call-service service-name="getTimeEntryRate" in-map-name="getTimeEntryRate">
                                 <result-to-field result-name="rateAmount"/>
                             </call-service>
-                            <!--  check if the RateTypeId changed or the first time entry record -->
+                            <!--  check if the RateTypeId changed or the first time entry record and invoice item is not exist with the same amount and description-->
+                            <entity-and list="existAmountAndDescriptionInvoiceItems" entity-name="InvoiceItem">
+                                <field-map field-name="invoiceId" from-field="invoiceItemMap.invoiceId"/>
+                                <field-map field-name="amount" from-field="rateAmount"/>
+                                <field-map field-name="description" from-field="invoiceItemMap.description"/>
+                            </entity-and>
+                            <set field="invoiceItemMap.invoiceItemSeqId" from-field="existAmountAndDescriptionInvoiceItems[0].invoiceItemSeqId"/>
                             <if>
                                 <condition>
-                                    <or>
-                                        <if-empty field="oldRateAmount"/>
-                                        <if-compare-field field="rateAmount" operator="not-equals" to-field="oldRateAmount"/>
-                                    </or>
+                                    <and>
+                                        <or>
+                                            <if-empty field="oldRateAmount"/>
+                                            <if-compare-field field="rateAmount" operator="not-equals" to-field="oldRateAmount"/>
+                                        </or>
+                                        <if-empty field="existAmountAndDescriptionInvoiceItems"/>
+                                    </and>
                                 </condition>
                                 <then>
                                     <set field="invoiceItemMap.amount" from-field="rateAmount" default-value="0.0" type="BigDecimal"/>
                                     <if-compare field="parameters.combineInvoiceItem" operator="equals" value="Y" >
-                                        <set field="invoiceItemMap.description" value="${workEffort.workEffortName} [Task:${workEffort.workEffortId}]"/>
-                                        <get-related value-field="workEffort" relation-name="CustRequestWorkEffort" list="custRequestWorkEfforts"/>
-                                        <if-not-empty field="custRequestWorkEfforts">
-                                            <first-from-list entry="custRequestWorkEffort" list="custRequestWorkEfforts"/>
-                                            <get-related-one value-field="custRequestWorkEffort" relation-name="CustRequest" to-value-field="custRequest"/>
-                                            <if-not-empty field="custRequest">
-                                                <set field="invoiceItemDescription" value="${custRequest.custRequestName} [CRQ:${custRequest.custRequestId}] ${custRequest.description}"/>
-                                                <set field="invoiceItemMap.description" value="${groovy:invoiceItemDescription.size()&gt;255?invoiceItemDescription.substring(0,251)+&quot; ...&quot;:invoiceItemDescription}"/>
-                                            </if-not-empty>
-                                        </if-not-empty>
                                         <set field="invoiceItemMap.quantity" from-field="timeEntry.hours" default-value="0.0" type="BigDecimal"/>
                                         <clear-field field="invoiceItemMap.invoiceItemSeqId"/><!-- make sure a new one is created -->
                                         <call-service service-name="createInvoiceItem" in-map-name="invoiceItemMap">
@@ -233,10 +242,11 @@ under the License.
                                 </then>
                                 <else>
                                     <if-compare field="parameters.combineInvoiceItem" operator="equals" value="Y" >
-                                        <!-- or combine them when it is the same rate -->
+                                        <!-- or combine them when it is the same rate, amount and description-->
                                         <calculate field="invoiceItemMap.quantity">
                                             <calcop operator="get" field="invoiceItemMap.quantity"/>
                                             <calcop operator="add" field="timeEntry.hours"/>
+                                            <calcop operator="add" field="existAmountAndDescriptionInvoiceItems[0].quantity"/>
                                         </calculate>
                                         <call-service service-name="updateInvoiceItem" in-map-name="invoiceItemMap"/>
                                     </if-compare>