ilscipio/scipio-erp

View on GitHub
applications/commonext/script/org/ofbiz/SystemInfoServices.xml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8" ?>
<!--
This file is subject to the terms and conditions defined in the
files 'LICENSE' and 'NOTICE', which are part of this source
code package.
-->

<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.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>

    <!-- SCIPIO: Modified previous implementation  -->
    <simple-method method-name="getSystemInfoNotes" short-description="">
        <set field="viewSize" from-field="parameters.viewSize" type="Integer" default-value="10"/>
        <set field="viewIndex" from-field="parameters.viewIndex" type="Integer" default-value="0"/>
        <if-compare operator="equals" value="false" field="parameters.showAll">
            <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"/>
                <limit-view view-size="${viewSize}" view-index="${viewIndex+1}"/>
            </entity-and>

            <else>
                <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>
        </if-compare>

        <if-not-empty field="systemInfoNotes">
            <field-to-result field="systemInfoNotes"/>
        </if-not-empty>
    </simple-method>

    <!-- SCIPIO: Deprecated -->
    <simple-method method-name="getLastSystemInfoNote"
        short-description="Get the last 3 system info notes (SCIPIO: DEPRECATED)"
        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>

    <!-- SCIPIO-->
    <simple-method method-name="getSystemMessages" short-description="Fetches System notifications/messages from the database">
        <set field="viewSize" from-field="parameters.viewSize" type="Integer" default-value="10"/>
        <set field="viewIndex" from-field="parameters.viewIndex" type="Integer" default-value="0"/>
        <set field="showAll" from-field="parameters.showAll" type="Boolean" default-value="false"/>
        <set field="toPartyId" from-field="parameters.toPartyId" type="String" default-value="${parameters.userLogin.partyId}"/>

        <entity-count entity-name="SystemMessages" count-field="count">
            <condition-list combine="and">
                <condition-expr field-name="toPartyId" from-field="toPartyId"/>
                <condition-expr field-name="isRead" operator="not-equals" value="Y"/>
            </condition-list>
        </entity-count>
        <if-compare operator="equals" value="false" field="showAll">

            <entity-and entity-name="SystemMessages" list="messages">
                <field-map field-name="toPartyId" from-field="toPartyId"/>
                <order-by field-name="isRead"/>
                <order-by field-name="-createdStamp"/>
                <limit-view view-size="${viewSize}" view-index="${viewIndex+1}"/>
            </entity-and>

            <else>
                <entity-and entity-name="SystemMessages" list="messages">
                    <field-map field-name="toPartyId" from-field="toPartyId"/>
                    <order-by field-name="isRead"/>
                    <order-by field-name="-createdStamp"/>
                </entity-and>
            </else>
        </if-compare>

        <if-not-empty field="messages">
            <field-to-result field="messages"/>
            <field-to-result field="count"/>
        </if-not-empty>
    </simple-method>

    <simple-method method-name="convertSystemMessageFromNoteData" short-description="Creates a new system message from a notedata entry">
        <make-value entity-name="SystemMessages" value-field="systemMessage"/>
        <sequenced-id sequence-name="SystemMessages" field="systemMessage.messageId"/>
        <set field="systemMessage.fromPartyId" from-field="system"/>
        <set field="systemMessage.toPartyId" from-field="parameters.noteParty"/>
        <set field="systemMessage.title" from-field="parameters.noteName" default-value="Message #${systemMessage.messageId}"/>
        <set field="systemMessage.description" from-field="parameters.noteInfo"/>
        <if-not-empty field="parameters.moreInfoUrl">
            <set field="systemMessage.url" from-field="parameters.moreInfoUrl"/>
            <if-not-empty field="parameters.moreInfoItemName">
                <set field="systemMessage.url" value="${systemMessage.url}?${parameters.moreInfoItemName}=${parameters.moreInfoItemId}"/>
            </if-not-empty>
        </if-not-empty>
        <set field="systemMessage.createdStamp" from-field="parameters.noteDateTime"/>
        <set field="systemMessage.isRead" value="N"/>
        <create-value value-field="systemMessage"/>
    </simple-method>
</simple-methods>