Author: erwan
Date: Mon Dec 26 10:16:42 2011 New Revision: 1224703 URL: http://svn.apache.org/viewvc?rev=1224703&view=rev Log: OFBIZ-4625 - Project, Phase, Task actualsHours, plannedHours is wrong in some cases after last modification done on ProjectServices.xml - a patch from Olivier Heintz Modified: ofbiz/trunk/specialpurpose/projectmgr/entitydef/entitymodel.xml ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml Modified: ofbiz/trunk/specialpurpose/projectmgr/entitydef/entitymodel.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/entitydef/entitymodel.xml?rev=1224703&r1=1224702&r2=1224703&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/projectmgr/entitydef/entitymodel.xml (original) +++ ofbiz/trunk/specialpurpose/projectmgr/entitydef/entitymodel.xml Mon Dec 26 10:16:42 2011 @@ -283,14 +283,13 @@ under the License. </view-link> </view-entity> - <view-entity entity-name="ProjectPhaseTaskSummaryView" + <view-entity entity-name="ProjectPhaseTaskSklSumView" package-name="org.ofbiz.specialpurpose.project"> <description>Retrieve actual, estimated start and end dates, priority, planned hours</description> <member-entity entity-alias="WEP" entity-name="WorkEffort"/><!--project --> <member-entity entity-alias="WEPH" entity-name="WorkEffort"/><!-- phase --> <member-entity entity-alias="WET" entity-name="WorkEffort"/><!-- task --> - <member-entity entity-alias="TE" entity-name="TimeEntry"/><!-- to get actualStartDate from declared times--> <member-entity entity-alias="SKL" entity-name="WorkEffortSkillStandard"/> <!-- for planned hours --> <alias entity-alias="WEP" field="workEffortId" name="projectId" group-by="true"/> @@ -300,28 +299,50 @@ under the License. <!-- get minimum for start dates --> <alias entity-alias="WET" name="estimatedStartDate" function="min"/> <alias entity-alias="WET" name="actualStartDate" function="min"/> - <alias entity-alias="TE" field="fromDate" name="actualEntryStartDate" function="min"/> <!-- and maximum for completion dates --> <alias entity-alias="WET" name="estimatedCompletionDate" function="max"/> <alias entity-alias="WET" name="actualCompletionDate" function="max"/> - <alias entity-alias="TE" field="fromDate" name="actualEntryCompletionDate" function="max"/> <!-- get the sum of planned and actual hours --> <alias entity-alias="SKL" field="estimatedDuration" name="plannedHours" function="sum"/> <!-- get the minimum priority --> <alias entity-alias="WET" field="priority" name="priority" function="min"/> - <view-link entity-alias="WEP" rel-entity-alias="WEPH" rel-optional="true"> + <view-link entity-alias="WEP" rel-entity-alias="WEPH"> <key-map field-name="workEffortId" rel-field-name="workEffortParentId"/> </view-link> - <view-link entity-alias="WEPH" rel-entity-alias="WET" rel-optional="true"> + <view-link entity-alias="WEPH" rel-entity-alias="WET"> <key-map field-name="workEffortId" rel-field-name="workEffortParentId"/> </view-link> <view-link entity-alias="WET" rel-entity-alias="SKL" rel-optional="true"> <key-map field-name="workEffortId" /> </view-link> - <view-link entity-alias="WET" rel-entity-alias="TE" rel-optional="true"> + </view-entity> + + <view-entity entity-name="ProjectPhaseTaskActualEntrySumView" + package-name="org.ofbiz.specialpurpose.project"> + <description>Retrieve actual, start and end dates from TimeEntries associated</description> + + <member-entity entity-alias="WEP" entity-name="WorkEffort"/><!--project --> + <member-entity entity-alias="WEPH" entity-name="WorkEffort"/><!-- phase --> + <member-entity entity-alias="WET" entity-name="WorkEffort"/><!-- task --> + <member-entity entity-alias="TE" entity-name="TimeEntry"/><!-- to get actualStartDate from declared times--> + + <alias entity-alias="WEP" field="workEffortId" name="projectId" group-by="true"/> + <alias entity-alias="WEPH" field="workEffortId" name="phaseId" group-by="true"/> + <alias entity-alias="WET" field="workEffortId" name="taskId" group-by="true"/> + + <alias entity-alias="TE" field="fromDate" name="actualEntryStartDate" function="min"/> + <alias entity-alias="TE" field="thruDate" name="actualEntryCompletionDate" function="max"/> + + <view-link entity-alias="WEP" rel-entity-alias="WEPH"> + <key-map field-name="workEffortId" rel-field-name="workEffortParentId"/> + </view-link> + <view-link entity-alias="WEPH" rel-entity-alias="WET"> + <key-map field-name="workEffortId" rel-field-name="workEffortParentId"/> + </view-link> + <view-link entity-alias="WET" rel-entity-alias="TE"> <key-map field-name="workEffortId" /> </view-link> </view-entity> @@ -346,13 +367,13 @@ under the License. <alias entity-alias="PR" name="partyId" group-by="true"/> <alias entity-alias="PR" name="percentageUsed" function="max"/> - <view-link entity-alias="WEP" rel-entity-alias="WEPH" rel-optional="true"> + <view-link entity-alias="WEP" rel-entity-alias="WEPH"> <key-map field-name="workEffortId" rel-field-name="workEffortParentId"/> </view-link> - <view-link entity-alias="WEPH" rel-entity-alias="WET" rel-optional="true"> + <view-link entity-alias="WEPH" rel-entity-alias="WET"> <key-map field-name="workEffortId" rel-field-name="workEffortParentId"/> </view-link> - <view-link entity-alias="WET" rel-entity-alias="TE" rel-optional="true"> + <view-link entity-alias="WET" rel-entity-alias="TE"> <key-map field-name="workEffortId" /> </view-link> <view-link entity-alias="TE" rel-entity-alias="TS" rel-optional="true"> @@ -360,9 +381,9 @@ under the License. </view-link> <view-link entity-alias="TE" rel-entity-alias="PR" rel-optional="true"> <key-map field-name="rateTypeId"/> + <key-map field-name="partyId"/> <entity-condition> <condition-list> - <condition-expr entity-alias="TS" field-name="partyId" rel-entity-alias="PR" rel-field-name="partyId"/> <condition-expr entity-alias="PR" field-name="fromDate" operator="less-equals" rel-entity-alias="TE" rel-field-name="fromDate"/> <condition-list combine="or"> <condition-expr entity-alias="PR" field-name="thruDate" operator="equals" value=""/> @@ -406,7 +427,7 @@ under the License. <alias entity-alias="PPAH" name="projectId" group-by="true"/> <alias entity-alias="PPAH" name="phaseId" group-by="true"/> <alias entity-alias="PPAH" name="taskId" group-by="true"/> - <alias entity-alias="PPAH" name="invoiceId" group-by="true"/> + <alias entity-alias="PPAH" name="invoiceId" group-by="true"/> <alias entity-alias="PPAH" name="totalOriginalHours" field="hours" function="sum"/> <entity-condition> Modified: ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml?rev=1224703&r1=1224702&r2=1224703&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml (original) +++ ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml Mon Dec 26 10:16:42 2011 @@ -843,7 +843,6 @@ <clear-field field="highInfo.sequenceId"/> <set field="highInfo.currentStatusId" from-field="lowInfo.currentStatusId"/> <call-simple-method method-name="createDates"/> - <call-simple-method method-name="getHours" xml-resource="component://workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml"/> <set field="highInfo.workEffortId" from-field="lowInfo.workEffortId"/> <set field="highInfo.workEffortName" from-field="lowInfo.workEffortName"/> <set field="highInfo.sequenceNum" from-field="lowInfo.sequenceNum"/> @@ -1072,7 +1071,7 @@ </simple-method> <simple-method method-name="combineDatesAndPlannedHoursInfo" short-description="combine lower level start end dates and planned hours for a project, phase or task"> - <entity-condition entity-name="ProjectPhaseTaskSummaryView" list="summaryInfos"> + <entity-condition entity-name="ProjectPhaseTaskSklSumView" list="summaryInfos"> <condition-list> <condition-expr field-name="projectId" from-field="highInfo.projectId" ignore-if-empty="true"/> <condition-expr field-name="phaseId" from-field="highInfo.phaseId" ignore-if-empty="true"/> @@ -1080,15 +1079,14 @@ </condition-list> <select-field field-name="projectId"/> <select-field field-name="estimatedStartDate"/> - <select-field field-name="actualEntryStartDate"/> <select-field field-name="actualStartDate"/> <select-field field-name="estimatedCompletionDate"/> <select-field field-name="actualCompletionDate"/> - <select-field field-name="actualEntryCompletionDate"/> <select-field field-name="plannedHours"/> <select-field field-name="priority"/> </entity-condition> + <!-- Now used TimeEntries to update (or not) actual start and end Date --> <first-from-list entry="summaryInfo" list="summaryInfos"/> <set field="highInfo.estimatedStartDate" from-field="summaryInfo.estimatedStartDate"/> <set field="highInfo.estimatedCompletionDate" from-field="summaryInfo.estimatedCompletionDate"/> @@ -1096,36 +1094,49 @@ <set field="highInfo.actualCompletionDate" from-field="summaryInfo.actualCompletionDate"/> <set field="highInfo.priority" from-field="summaryInfo.priority"/> <set field="highInfo.plannedHours" from-field="summaryInfo.plannedHours"/> - <!-- update actual start date by the min date form sub tasks associated entries + <!-- update actual start date by the min date form sub tasks associated TimeEntries (if before actualStartDate field) --> - <if-not-empty field="summaryInfo.actualEntryStartDate"> + <entity-condition entity-name="ProjectPhaseTaskActualEntrySumView" list="summaryEntriesInfos"> + <condition-list> + <condition-expr field-name="projectId" from-field="highInfo.projectId" ignore-if-empty="true"/> + <condition-expr field-name="phaseId" from-field="highInfo.phaseId" ignore-if-empty="true"/> + <condition-expr field-name="taskId" from-field="highInfo.taskId" ignore-if-empty="true"/> + </condition-list> + <select-field field-name="actualEntryStartDate"/> + <select-field field-name="actualEntryCompletionDate"/> + </entity-condition> + <first-from-list entry="timeEntriesInfo" list="summaryEntriesInfos"/> + <if-not-empty field="timeEntriesInfo"> + <if-not-empty field="timeEntriesInfo.actualEntryStartDate"> <if> <condition> <or> <if-empty field="highInfo.actualStartDate"/> - <if-compare-field field="highInfo.actualStartDate" operator="greater" type="Timestamp" to-field="summaryInfo.actualEntryStartDate"/> + <if-compare-field field="highInfo.actualStartDate" operator="greater" type="Timestamp" to-field="timeEntriesInfo.actualEntryStartDate"/> </or> </condition> <then> - <set field="highInfo.actualStartDate" from-field="summaryInfo.actualEntryStartDate"/> + <set field="highInfo.actualStartDate" from-field="timeEntriesInfo.actualEntryStartDate"/> </then> </if> - </if-not-empty> - <!-- update actual completion date by the max date form sub tasks associated entries - (if after actualCompletionDate field) --> - <if-not-empty field="summaryInfo.actualEntryCompletionDate"> + </if-not-empty> + <!-- update actual completion date by the max date form sub tasks associated TimeEntries + (if after actualCompletionDate field) --> + <if-not-empty field="timeEntriesInfo.actualEntryCompletionDate"> <if> <condition> <or> <if-empty field="highInfo.actualCompletionDate"/> - <if-compare-field field="highInfo.actualCompletionDate" operator="less" type="Timestamp" to-field="summaryInfo.actualEntryCompletionDate"/> + <if-compare-field field="highInfo.actualCompletionDate" operator="less" type="Timestamp" to-field="timeEntriesInfo.actualEntryCompletionDate"/> </or> </condition> <then> - <set field="highInfo.actualCompletionDate" from-field="summaryInfo.actualEntryCompletionDate"/> + <set field="highInfo.actualCompletionDate" from-field="timeEntriesInfo.actualEntryCompletionDate"/> </then> </if> + </if-not-empty> </if-not-empty> + </simple-method> <simple-method method-name="combineInfo" short-description="combine lower level status, dates of tasks."> @@ -1140,6 +1151,9 @@ the timesheet associated to this time entry and has the same rateType as this timeEntry -actualHoursOriginal is the total of hours in time entries without application of percentage declared in partyRate --> + <clear-field field="originalHours"/> + <clear-field field="actualHours"/> + <clear-field field="originalActualHours"/> <!-- I- get timeEntries for which there is no rate (originalHours)--> <entity-condition list="notRatedValues" entity-name="ProjectPhaseTaskActualNotRatedHoursView"> @@ -1166,6 +1180,7 @@ <select-field field-name="totalRatedHours"/> </entity-condition> <first-from-list list="ratedValues" entry="ratedValue"/> + <!-- not used ratedValue.totalRatedHours because not works, reason seem to be totalRatedHours is a calculated field ??? --> <call-object-method method-name="getDouble" obj-field="ratedValue" ret-field="actualHours"> <string value="totalRatedHours"/> </call-object-method> |
Free forum by Nabble | Edit this page |