Author: adrianc
Date: Mon Aug 29 21:42:20 2011 New Revision: 1163026 URL: http://svn.apache.org/viewvc?rev=1163026&view=rev Log: Clean up, debug, improve the duplicateWorkEffort service. Modified: ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml ofbiz/trunk/applications/workeffort/servicedef/services.xml Modified: ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml?rev=1163026&r1=1163025&r2=1163026&view=diff ============================================================================== --- ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml (original) +++ ofbiz/trunk/applications/workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml Mon Aug 29 21:42:20 2011 @@ -1168,88 +1168,103 @@ under the License. <check-errors/> </simple-method> - <simple-method method-name="duplicateWorkEffort" short-description="Duplicate a WorkEffort" login-required="false"> - <check-permission permission="WORKEFFORTMGR" action="_CREATE"> - <fail-property resource="WorkEffortUiLabels" property="WorkEffortCreatePermissionError"/> - </check-permission> - <check-errors /> - <check-permission permission="WORKEFFORTMGR" action="_DELETE"> - <fail-property resource="WorkEffortUiLabels" property="WorkEffortDeletePermissionError"/> - </check-permission> - <check-errors /> - <!-- look up the old workEffort and clone it --> + <simple-method method-name="duplicateWorkEffort" short-description="Duplicate a WorkEffort"> + <set field="removeWorkEffortAssocs" from-field="parameters.removeWorkEffortAssocs" default-value="N" /> + <set field="removeWorkEffortContents" from-field="parameters.removeWorkEffortContents" default-value="N" /> + <set field="removeWorkEffortNotes" from-field="parameters.removeWorkEffortNotes" default-value="N" /> + <set field="removeWorkEffortAssignmentRates" from-field="parameters.removeWorkEffortAssignmentRates" default-value="N" /> + <if> + <condition> + <or> + <if-compare field="removeWorkEffortAssocs" operator="equals" value="Y" /> + <if-compare field="removeWorkEffortContents" operator="equals" value="Y" /> + <if-compare field="removeWorkEffortNotes" operator="equals" value="Y" /> + <if-compare field="removeWorkEffortAssignmentRates" operator="equals" value="Y" /> + </or> + </condition> + <then> + <check-permission permission="WORKEFFORTMGR" action="_DELETE"> + <fail-property resource="WorkEffortUiLabels" property="WorkEffortDeletePermissionError" /> + </check-permission> + <check-errors /> + </then> + </if> + <set field="workEffortId" from-field="parameters.workEffortId" /> + <if-empty field="workEffortId"> + <sequenced-id sequence-name="WorkEffort" field="workEffortId" /> + </if-empty> <entity-one entity-name="WorkEffort" value-field="oldWorkEffort"> - <field-map field-name="workEffortId" from-field="parameters.oldWorkEffortId"/> + <field-map field-name="workEffortId" from-field="parameters.oldWorkEffortId" /> </entity-one> - <clone-value value-field="oldWorkEffort" new-value-field="newWorkEffort"/> - - <!-- set the workEffortId, and write it to the datasource --> - <set from-field="parameters.workEffortId" field="newWorkEffort.workEffortId"/> - <create-value value-field="newWorkEffort"/> - - <!-- set up entity filter for workEffortAssoc--> - <set field="workEffortAssocFindContext.workEffortIdFrom" from-field="parameters.oldWorkEffortId"/> - <set field="reverseWorkEffortFindContext.workEffortIdTo" from-field="parameters.oldWorkEffortId"/> - <if-not-empty field="parameters.duplicateWorkEffortAssocs"> - <find-by-and entity-name="WorkEffortAssoc" map="workEffortAssocFindContext" list="foundValues"/> + <set-service-fields service-name="createWorkEffort" to-map="createWorkEffortCtx" map="oldWorkEffort"/> + <set field="createWorkEffortCtx.workEffortId" from-field="workEffortId"/> + <call-service service-name="createWorkEffort" in-map-name="createWorkEffortCtx"/> + <check-errors /> + <entity-one entity-name="WorkEffort" value-field="newWorkEffort" /> + <set field="workEffortAssocFindContext.workEffortIdFrom" from-field="parameters.oldWorkEffortId" /> + <set field="reverseWorkEffortFindContext.workEffortIdTo" from-field="parameters.oldWorkEffortId" /> + <set field="duplicateWorkEffortAssocs" from-field="parameters.duplicateWorkEffortAssocs" default-value="N" /> + <if-compare field="duplicateWorkEffortAssocs" operator="equals" value="Y"> + <find-by-and entity-name="WorkEffortAssoc" map="workEffortAssocFindContext" list="foundValues" /> <iterate entry="foundValue" list="foundValues"> - <clone-value value-field="foundValue" new-value-field="newTempValue"/> - <set from-field="parameters.workEffortId" field="newTempValue.workEffortIdFrom"/> - <create-value value-field="newTempValue"/> + <clone-value value-field="foundValue" new-value-field="newTempValue" /> + <set from-field="workEffortId" field="newTempValue.workEffortIdFrom" /> + <create-value value-field="newTempValue" /> </iterate> <entity-and entity-name="WorkEffortAssoc" list="foundValues"> - <field-map field-name="workEffortIdTo" from-field="parameters.oldWorkEffortId"/> + <field-map field-name="workEffortIdTo" from-field="parameters.oldWorkEffortId" /> </entity-and> <iterate entry="foundValue" list="foundValues"> - <clone-value value-field="foundValue" new-value-field="newTempValue"/> - <set from-field="parameters.workEffortId" field="newTempValue.workEffortIdTo"/> - <create-value value-field="newTempValue"/> + <clone-value value-field="foundValue" new-value-field="newTempValue" /> + <set from-field="workEffortId" field="newTempValue.workEffortIdTo" /> + <create-value value-field="newTempValue" /> </iterate> - </if-not-empty> - - - <!-- set up entity filter --> - <set field="workEffortFindContext.workEffortId" from-field="parameters.oldWorkEffortId"/> - <if-not-empty field="parameters.duplicateWorkEffortNotes"> - <find-by-and entity-name="WorkEffortNote" map="workEffortFindContext" list="foundValues"/> + </if-compare> + <set field="workEffortFindContext.workEffortId" from-field="parameters.oldWorkEffortId" /> + <set field="duplicateWorkEffortNotes" from-field="parameters.duplicateWorkEffortNotes" default-value="N" /> + <if-compare field="duplicateWorkEffortNotes" operator="equals" value="Y"> + <find-by-and entity-name="WorkEffortNote" map="workEffortFindContext" list="foundValues" /> <iterate entry="foundValue" list="foundValues"> - <clone-value value-field="foundValue" new-value-field="newTempValue"/> - <set from-field="parameters.workEffortId" field="newTempValue.workEffortId"/> - <create-value value-field="newTempValue"/> + <clone-value value-field="foundValue" new-value-field="newTempValue" /> + <set from-field="workEffortId" field="newTempValue.workEffortId" /> + <create-value value-field="newTempValue" /> </iterate> - </if-not-empty> - <if-not-empty field="parameters.duplicateWorkEffortContents"> - <find-by-and entity-name="WorkEffortContent" map="workEffortFindContext" list="foundValues"/> + </if-compare> + <set field="duplicateWorkEffortContents" from-field="parameters.duplicateWorkEffortContents" default-value="N" /> + <if-compare field="duplicateWorkEffortContents" operator="equals" value="Y"> + <find-by-and entity-name="WorkEffortContent" map="workEffortFindContext" list="foundValues" /> <iterate entry="foundValue" list="foundValues"> - <clone-value value-field="foundValue" new-value-field="newTempValue"/> - <set from-field="parameters.workEffortId" field="newTempValue.workEffortId"/> - <create-value value-field="newTempValue"/> + <clone-value value-field="foundValue" new-value-field="newTempValue" /> + <set from-field="workEffortId" field="newTempValue.workEffortId" /> + <create-value value-field="newTempValue" /> </iterate> - </if-not-empty> - <if-not-empty field="parameters.duplicateWorkEffortAssignmentRates"> - <find-by-and entity-name="RateAmount" map="workEffortFindContext" list="foundValuesAll"/> - <filter-list-by-date list="foundValuesAll" to-list="foundValues"/> + </if-compare> + <set field="duplicateWorkEffortAssignmentRates" from-field="parameters.duplicateWorkEffortAssignmentRates" default-value="N" /> + <if-compare field="duplicateWorkEffortAssignmentRates" operator="equals" value="Y"> + <find-by-and entity-name="RateAmount" map="workEffortFindContext" list="foundValuesAll" /> + <filter-list-by-date list="foundValuesAll" to-list="foundValues" /> <iterate entry="foundValue" list="foundValues"> - <clone-value value-field="foundValue" new-value-field="newTempValue"/> - <set from-field="parameters.workEffortId" field="newTempValue.workEffortId"/> - <create-value value-field="newTempValue"/> + <clone-value value-field="foundValue" new-value-field="newTempValue" /> + <set from-field="workEffortId" field="newTempValue.workEffortId" /> + <create-value value-field="newTempValue" /> </iterate> - </if-not-empty> - - <if-not-empty field="parameters.removeWorkEffortAssocs"> - <remove-by-and entity-name="WorkEffortAssoc" map="workEffortAssocFindContext"/> + </if-compare> + <if-compare field="removeWorkEffortAssocs" operator="equals" value="Y"> + <remove-by-and entity-name="WorkEffortAssoc" map="workEffortAssocFindContext" /> <!-- small difference here, also do the reverse assocs... --> - <remove-by-and entity-name="WorkEffortAssoc" map="reverseWorkEffortFindContext"/> - </if-not-empty> - <if-not-empty field="parameters.removeWorkEffortContents"> - <remove-by-and entity-name="WorkEffortContent" map="workEffortFindContext"/> - </if-not-empty> - <if-not-empty field="parameters.removeWorkEffortNotes"> - <remove-by-and entity-name="WorkEffortNote" map="workEffortFindContext"/> - </if-not-empty> - <if-not-empty field="parameters.removeWorkEffortAssignmentRates"> - <remove-by-and entity-name="RateAmount" map="workEffortFindContext"/> - </if-not-empty> + <remove-by-and entity-name="WorkEffortAssoc" map="reverseWorkEffortFindContext" /> + </if-compare> + <if-compare field="removeWorkEffortContents" operator="equals" value="Y"> + <remove-by-and entity-name="WorkEffortContent" map="workEffortFindContext" /> + </if-compare> + <if-compare field="removeWorkEffortNotes" operator="equals" value="Y"> + <remove-by-and entity-name="WorkEffortNote" map="workEffortFindContext" /> + </if-compare> + <if-compare field="removeWorkEffortAssignmentRates" operator="equals" value="Y"> + <remove-by-and entity-name="RateAmount" map="workEffortFindContext" /> + </if-compare> + <log level="info" message="workEffortId=${workEffortId}"/> + <field-to-result field="workEffortId"/> </simple-method> <!-- WorkEffortSkillStandard Services--> Modified: ofbiz/trunk/applications/workeffort/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/workeffort/servicedef/services.xml?rev=1163026&r1=1163025&r2=1163026&view=diff ============================================================================== --- ofbiz/trunk/applications/workeffort/servicedef/services.xml (original) +++ ofbiz/trunk/applications/workeffort/servicedef/services.xml Mon Aug 29 21:42:20 2011 @@ -88,9 +88,9 @@ under the License. <service name="duplicateWorkEffort" engine="simple" location="component://workeffort/script/org/ofbiz/workeffort/workeffort/WorkEffortSimpleServices.xml" invoke="duplicateWorkEffort" auth="true"> - <description>Duplicate a Work Effort using a new workEffortId</description> + <description>Duplicate a Work Effort. If workEffortId is empty a new workEffortId will be generated.</description> <permission-service service-name="workEffortGenericPermission" main-action="CREATE"/> - <attribute name="workEffortId" type="String" mode="IN" optional="false"/> + <attribute name="workEffortId" type="String" mode="IN" optional="true"/> <attribute name="oldWorkEffortId" type="String" mode="IN" optional="false"/> <attribute name="duplicateWorkEffortAssocs" type="String" mode="IN" optional="true"/> <attribute name="duplicateWorkEffortContents" type="String" mode="IN" optional="true"/> @@ -100,6 +100,7 @@ under the License. <attribute name="removeWorkEffortContents" type="String" mode="IN" optional="true"/> <attribute name="removeWorkEffortNotes" type="String" mode="IN" optional="true"/> <attribute name="removeWorkEffortAssignmentRates" type="String" mode="IN" optional="true"/> + <attribute name="workEffortId" type="String" mode="OUT" optional="false"/> </service> <!-- Communication Event WorkEffort --> |
Free forum by Nabble | Edit this page |