This is an automated email from the ASF dual-hosted git repository. nmalin pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
commit 2ebf14eddd0d75ba5630b26c8e451e82703397e9 Author: Nicolas Malin <[email protected]> AuthorDate: Wed Sep 15 17:35:49 2021 +0200 Improved: Convert SystemInfoServices.xml mini lang to groovy (OFBIZ-11919) Thanks to Rohit Koushal to submit the patch --- .../ofbizsetup/SystemInfoServices.groovy | 104 ++++++++++++++ .../commonext/minilang/SystemInfoServices.xml | 159 --------------------- applications/commonext/servicedef/services.xml | 24 ++-- 3 files changed, 116 insertions(+), 171 deletions(-) diff --git a/applications/commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy b/applications/commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy new file mode 100644 index 0000000..25071cb --- /dev/null +++ b/applications/commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.ofbiz.base.util.UtilDateTime +import org.apache.ofbiz.entity.GenericValue + +def createSystemInfoNote() { + parameters.noteParty = parameters.noteParty ?: userLogin.partyId + GenericValue noteData = makeValue("NoteData", parameters) + noteData.noteDateTime = UtilDateTime.nowTimestamp() + noteData.noteName = "SYSTEMNOTE" + noteData.setNextSeqId() + noteData.create() + return success() +} + +def deleteSystemInfoNote() { + GenericValue noteData = from("NoteData").where(noteId: parameters.noteId).queryOne() + noteData.removeRelated('CustRequestItemNote') + noteData.removeRelated('CustRequestNote') + noteData.removeRelated('MarketingCampaignNote') + noteData.removeRelated('OrderHeaderNote') + noteData.removeRelated('PartyNote') + noteData.removeRelated('QuoteNote') + noteData.removeRelated('WorkEffortNote') + noteData.remove() + return success() +} + +def deleteAllSystemNotes() { + delegator.removeByAnd("NoteData", [noteParty: userLogin.partyId, noteName: "SYSTEMNOTE"]) + return success() +} + +def getSystemInfoNotes() { + List systemInfoNotes = from("NoteData") + .where(noteParty: userLogin.partyId, + noteName: "SYSTEMNOTE") + .orderBy("-noteDateTime") + .queryList() + if (systemInfoNotes) { + return success(systemInfoNotes: systemInfoNotes) + } + return success() +} + +def getLastSystemInfoNote() { + Map result = success() + List systemInfoNotes = from("NoteData") + .where(noteParty: userLogin ? userLogin.partyId : "_NA_", + noteName: "SYSTEMNOTE") + .orderBy("-noteDateTime") + .queryList() + if (systemInfoNotes) { + result.lastSystemInfoNote1 = systemInfoNotes[0] + if (systemInfoNotes.size() == 2) { + result.lastSystemInfoNote2 = systemInfoNotes[1] + } else if (systemInfoNotes.size() > 2) { + result.lastSystemInfoNote2 = systemInfoNotes[1] + result.lastSystemInfoNote3 = systemInfoNotes[2] + } + } + return result +} + +def getSystemInfoStatus() { + List systemInfoStatus = [] + List comms = from("CommunicationEventAndRole") + .where(partyId: userLogin.partyId, + statusId: "COM_ROLE_COMPLETED") + .orderBy("-entryDate") + .queryList() + if (comms) { + systemInfoStatus << [noteInfo: "Open communication events: " + comms.size(), noteDateTime: comms[0].entryDate] + } + + List assigns = from("WorkEffortAndPartyAssign") + .where(partyId: userLogin.partyId, + statusId: "PAS_ASSIGNED", + workEffortTypeId: "TASK") + .orderBy("-fromDate") + .filterByDate() + .queryList() + if (assigns) { + systemInfoStatus << [noteInfo: "Assigned and not completed tasks: " + assigns.size(), noteDateTime: assigns[0].fromDate] + } + return success(systemInfoStatus: systemInfoStatus) +} \ No newline at end of file diff --git a/applications/commonext/minilang/SystemInfoServices.xml b/applications/commonext/minilang/SystemInfoServices.xml deleted file mode 100644 index d199a7e..0000000 --- a/applications/commonext/minilang/SystemInfoServices.xml +++ /dev/null @@ -1,159 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd"> - - <simple-method method-name="createSystemInfoNote" short-description="Create a system to to a specific party"> - <set field="parameters.partyId" from-field="parameters.partyId" default-value="userLogin.partyId"/> - <make-value entity-name="NoteData" value-field="noteData"/> - <set-nonpk-fields map="parameters" value-field="noteData"/> - <now-timestamp field="noteData.noteDateTime"/> - <sequenced-id sequence-name="NoteData" field="noteData.noteId"/> - <set field="noteData.noteName" value="SYSTEMNOTE"/> - <create-value value-field="noteData"/> - </simple-method> - - <simple-method method-name="getPortletAttributeMap" short-description="get the attributes of the SystemInfoNotes portlet for a userlogin"> - <!-- get the portlet settings: works only if portlet is used only one time and the user only has a single userLogin --> - <entity-and entity-name="UserLogin" list="ulList"> - <field-map field-name="partyId" from-field="partyId"/> - </entity-and> - <if-not-empty field="ulList"> - <set field="haveUserLogin" value="true"/> - <first-from-list list="ulList" entry="userLogin"/> - <set field="paMap.ownerUserLoginId" from-field="userLogin.userLoginId"/> - <set field="paMap.portalPortletId" value="SystemInfoNotes"/> - <call-service service-name="getPortletAttributes" in-map-name="paMap"> - <result-to-field result-name="attributeMap" field="attributeMap"/> - </call-service> - </if-not-empty> - </simple-method> - - <simple-method method-name="deleteSystemInfoNote" short-description="Delete SystemInfo Note"> - <entity-one entity-name="NoteData" value-field="noteData"/> - <remove-related relation-name="CustRequestItemNote" value-field="noteData"/> - <remove-related relation-name="CustRequestNote" value-field="noteData"/> - <remove-related relation-name="MarketingCampaignNote" value-field="noteData"/> - <remove-related relation-name="OrderHeaderNote" value-field="noteData"/> - <remove-related relation-name="PartyNote" value-field="noteData"/> - <remove-related relation-name="QuoteNote" value-field="noteData"/> - <remove-related relation-name="WorkEffortNote" value-field="noteData"/> - <remove-value value-field="noteData"/> - </simple-method> - - <simple-method method-name="deleteAllSystemNotes" short-description="delete all system notes from a particular user"> - <set field="removeData.noteParty" from-field="parameters.userLogin.partyId"/> - <set field="removeData.noteName" value="SYSTEMNOTE"/> - <remove-by-and entity-name="NoteData" map="removeData"/> - </simple-method> - - <simple-method method-name="getSystemInfoStatus" short-description=""> - <!-- communication events --> - <entity-count entity-name="CommunicationEventRole" count-field="comCount"> - <condition-list combine="and"> - <condition-expr field-name="partyId" from-field="userLogin.partyId"/> - <condition-expr field-name="statusId" operator="not-equals" value="COM_ROLE_COMPLETED"/> - </condition-list> - </entity-count> - <entity-condition entity-name="CommunicationEventAndRole" list="comms"> - <condition-list combine="and"> - <condition-expr field-name="partyId" from-field="userLogin.partyId"/> - <condition-expr field-name="statusId" operator="not-equals" value="COM_ROLE_COMPLETED"/> - </condition-list> - <order-by field-name="-entryDate"/> - </entity-condition> - <if-compare field="comCount" value="0" operator="greater"> - <set field="status.noteInfo" value="Open communication events: ${comCount}"/> - <first-from-list list="comms" entry="comm"/> - <set field="status.noteDateTime" from-field="comm.entryDate"/> - <field-to-list field="status" list="systemInfoStatus"/> - <clear-field field="status"/> - </if-compare> - <!-- assigned tasks --> - <entity-and entity-name="WorkEffortAndPartyAssign" list="assigns" filter-by-date="true"> - <field-map field-name="partyId" from-field="parameters.userLogin.partyId"/> - <field-map field-name="statusId" value="PAS_ASSIGNED"/> - <field-map field-name="workEffortTypeId" value="TASK"/> - <order-by field-name="-fromDate"/> - </entity-and> - <entity-count entity-name="WorkEffortAndPartyAssign" count-field="assignCount"> - <condition-list combine="and"> - <condition-expr field-name="partyId" operator="equals" from-field="parameters.userLogin.partyId"/> - <condition-expr field-name="statusId" operator="equals" value="PAS_ASSIGNED"/> - <condition-expr field-name="workEffortTypeId" operator="equals" value="TASK"/> - </condition-list> - </entity-count> - <if-compare field="assignCount" value="0" operator="greater"> - <set field="status.noteInfo" value="Assigned and not completed tasks: ${assignCount}"/> - <first-from-list list="assigns" entry="assign"/> - <set field="status.noteDateTime" from-field="assign.fromDate"/> - <field-to-list field="status" list="systemInfoStatus"/> - </if-compare> - - <!-- return result --> - <if-not-empty field="systemInfoStatus"> - <field-to-result field="systemInfoStatus"/> - </if-not-empty> - - </simple-method> - <simple-method method-name="getSystemInfoNotes" short-description=""> - <entity-and entity-name="NoteData" list="systemInfoNotes"> - <field-map field-name="noteParty" from-field="parameters.userLogin.partyId"/> - <field-map field-name="noteName" value="SYSTEMNOTE"/> - <order-by field-name="-noteDateTime"/> - </entity-and> - <if-not-empty field="systemInfoNotes"> - <field-to-result field="systemInfoNotes"/> - </if-not-empty> - </simple-method> - - <simple-method method-name="getLastSystemInfoNote" - short-description="Get the last 3 system info notes" - login-required="false"> - <if-not-empty field="parameters.userLogin"> - <entity-and entity-name="NoteData" list="systemInfoNotes"> - <field-map field-name="noteParty" - from-field="parameters.userLogin.partyId"/> - <field-map field-name="noteName" value="SYSTEMNOTE"/> - <order-by field-name="-noteDateTime"/> - </entity-and> - <else> - <entity-and entity-name="NoteData" list="systemInfoNotes"> - <field-map field-name="noteParty" value="_NA_"/> - <field-map field-name="noteName" value="SYSTEMNOTE"/> - <order-by field-name="-noteDateTime"/> - </entity-and> - </else> - </if-not-empty> - <if-not-empty field="systemInfoNotes"> - <set field="lastSystemInfoNote1" from-field="systemInfoNotes[0]"/> - <field-to-result field="lastSystemInfoNote1"/> - <if-not-empty field="systemInfoNotes[2]"> - <set field="lastSystemInfoNote2" from-field="systemInfoNotes[1]"/> - <field-to-result field="lastSystemInfoNote2"/> - </if-not-empty> - <if-not-empty field="systemInfoNotes[3]"> - <set field="lastSystemInfoNote3" from-field="systemInfoNotes[2]"/> - <field-to-result field="lastSystemInfoNote3"/> - </if-not-empty> - </if-not-empty> - </simple-method> -</simple-methods> diff --git a/applications/commonext/servicedef/services.xml b/applications/commonext/servicedef/services.xml index d71ee4b..804079a 100644 --- a/applications/commonext/servicedef/services.xml +++ b/applications/commonext/servicedef/services.xml @@ -24,34 +24,34 @@ under the License. <vendor>OFBiz</vendor> <version>1.0</version> - <service name="createSystemInfoNote" engine="simple" default-entity-name="NoteData" - location="component://commonext/minilang/SystemInfoServices.xml" invoke="createSystemInfoNote"> + <service name="createSystemInfoNote" engine="groovy" default-entity-name="NoteData" + location="component://commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy" invoke="createSystemInfoNote"> <description>Create a system info note</description> <auto-attributes include="nonpk" mode="IN" optional="true"/> </service> - <service name="deleteSystemInfoNote" engine="simple" default-entity-name="NoteData" - location="component://commonext/minilang/SystemInfoServices.xml" invoke="deleteSystemInfoNote"> + <service name="deleteSystemInfoNote" engine="groovy" default-entity-name="NoteData" + location="component://commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy" invoke="deleteSystemInfoNote"> <description>Delete a system info note</description> <auto-attributes include="pk" mode="IN" optional="false"/> </service> - <service name="deleteAllSystemNotes" engine="simple" auth="true" - location="component://commonext/minilang/SystemInfoServices.xml" invoke="deleteAllSystemNotes"> + <service name="deleteAllSystemNotes" engine="groovy" auth="true" + location="component://commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy" invoke="deleteAllSystemNotes"> <description>Delete all system notes for the logged on party</description> </service> - <service name="getSystemInfoNotes" engine="simple" auth="true" - location="component://commonext/minilang/SystemInfoServices.xml" invoke="getSystemInfoNotes"> + <service name="getSystemInfoNotes" engine="groovy" auth="true" + location="component://commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy" invoke="getSystemInfoNotes"> <description>Get system notes for the logged on party</description> <attribute name="systemInfoNotes" type="List" mode="OUT" optional="true"/> </service> - <service name="getLastSystemInfoNote" engine="simple" auth="false" - location="component://commonext/minilang/SystemInfoServices.xml" invoke="getLastSystemInfoNote"> + <service name="getLastSystemInfoNote" engine="groovy" auth="false" + location="component://commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy" invoke="getLastSystemInfoNote"> <description>Get last system note for the logged on party</description> <attribute name="lastSystemInfoNote1" type="GenericValue" mode="OUT" optional="true"/> <attribute name="lastSystemInfoNote2" type="GenericValue" mode="OUT" optional="true"/> <attribute name="lastSystemInfoNote3" type="GenericValue" mode="OUT" optional="true"/> </service> - <service name="getSystemInfoStatus" engine="simple" auth="true" - location="component://commonext/minilang/SystemInfoServices.xml" invoke="getSystemInfoStatus"> + <service name="getSystemInfoStatus" engine="groovy" auth="true" + location="component://commonext/groovyScripts/ofbizsetup/SystemInfoServices.groovy" invoke="getSystemInfoStatus"> <description>Get system status for the logged on party</description> <attribute name="systemInfoStatus" type="List" mode="OUT" optional="true"/> </service>

