| <?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="createOrderDeliverySchedule" short-description="Creates a new Purchase Order Schedule"> |
| <!-- Verify the user is allowed to set the fields --> |
| <set value="createOrderDeliverySchedule" field="callingMethodName"/> |
| <set value="CREATE" field="checkAction"/> |
| <call-simple-method method-name="checkSupplierRelatedPermission"/> |
| <check-errors/> |
| |
| <make-value entity-name="OrderDeliverySchedule" value-field="schedule"/> |
| <set-pk-fields map="parameters" value-field="schedule"/> |
| <if-empty field="schedule.orderItemSeqId"> |
| <set value="_NA_" field="schedule.orderItemSeqId"/> |
| </if-empty> |
| |
| <!-- only set statusId if hasScheduleAdminRelatedPermission --> |
| <set-nonpk-fields map="parameters" value-field="schedule"/> |
| <if-has-permission permission="ORDERMGR" action="_${checkAction}"> |
| <else> |
| <!-- no permission, set to initial --> |
| <set value="ODS_SUBMITTED" field="schedule.statusId"/> |
| </else> |
| </if-has-permission> |
| |
| <create-value value-field="schedule"/> |
| </simple-method> |
| <simple-method method-name="updateOrderDeliverySchedule" short-description="Updates an existing Purchase Order Schedule"> |
| <!-- Verify the user is allowed to edit the fields --> |
| <set value="updateOrderDeliverySchedule" field="callingMethodName"/> |
| <set value="UPDATE" field="checkAction"/> |
| <call-simple-method method-name="checkSupplierRelatedPermission"/> |
| <check-errors/> |
| |
| <!-- Lookup the existing schedule to modify --> |
| <make-value entity-name="OrderDeliverySchedule" value-field="lookupPkMap"/> |
| <set-pk-fields map="parameters" value-field="lookupPkMap"/> |
| <find-by-primary-key entity-name="OrderDeliverySchedule" map="lookupPkMap" value-field="schedule"/> |
| |
| <!-- only set statusId if hasScheduleAdminRelatedPermission --> |
| <set from-field="schedule.statusId" field="saveStatusId"/> |
| <set-nonpk-fields map="parameters" value-field="schedule"/> |
| <if-has-permission permission="ORDERMGR" action="_${checkAction}"> |
| <else> |
| <!-- no permission, restore saved status --> |
| <set from-field="saveStatusId" field="schedule.statusId"/> |
| </else> |
| </if-has-permission> |
| |
| <!-- Update the actual schedule --> |
| <store-value value-field="schedule"/> |
| </simple-method> |
| <simple-method method-name="sendOrderDeliveryScheduleNotification" short-description="Send Order Delivery Schedule Notification"> |
| <set value="sendOrderDeliveryScheduleNotification" field="callingMethodName"/> |
| <set value="UPDATE" field="checkAction"/> |
| <call-simple-method method-name="checkSupplierRelatedPermission"/> |
| <check-errors/> |
| |
| <if-empty field="parameters.orderItemSeqId"> |
| <set field="parameters.orderItemSeqId" value="_NA_"/> |
| </if-empty> |
| |
| <make-value entity-name="OrderDeliverySchedule" value-field="orderDeliverySchedule"/> |
| <set-pk-fields value-field="orderDeliverySchedule" map="parameters"/> |
| <find-by-primary-key map="orderDeliverySchedule" value-field="orderDeliverySchedule"/> |
| |
| <!-- find email address for currently logged in user, set as sendFrom --> |
| <set field="curUserPcmFindMap.partyId" from-field="userLogin.partyId"/> |
| <set field="curUserPcmFindMap.contactMechTypeId" value="EMAIL_ADDRESS"/> |
| <find-by-and entity-name="PartyAndContactMech" map="curUserPcmFindMap" list="curUserPartyAndContactMechs"/> |
| <first-from-list list="curUserPartyAndContactMechs" entry="curUserPartyAndContactMech"/> |
| <string-append field="sendEmailMap.sendFrom" string="${curUserPartyAndContactMech.infoString}" prefix=","/> |
| |
| <!-- find email addresses of all parties in SHIPMENT_CLERK roleTypeId, set as sendTo --> |
| <set value="SHIPMENT_CLERK" field="shipmentClerkFindMap.roleTypeId"/> |
| <find-by-and entity-name="PartyRole" map="shipmentClerkFindMap" list="shipmentClerkRoles"/> |
| <iterate list="shipmentClerkRoles" entry="shipmentClerkRole"> |
| <set field="sendToPartyIdMap[shipmentClerkRole.partyId]" from-field="shipmentClerkRole.partyId"/> |
| </iterate> |
| |
| <!-- go through all send to parties and get email addresses --> |
| <iterate-map key="sendToPartyId" value="sendToPartyIdValue" map="sendToPartyIdMap"> |
| <set field="sendToPartyPcmFindMap.partyId" from-field="sendToPartyId"/> |
| <set field="sendToPartyPcmFindMap.contactMechTypeId" value="EMAIL_ADDRESS"/> |
| <find-by-and entity-name="PartyAndContactMech" map="sendToPartyPcmFindMap" list="sendToPartyPartyAndContactMechs"/> |
| <iterate list="sendToPartyPartyAndContactMechs" entry="sendToPartyPartyAndContactMech"> |
| <string-append field="sendEmailMap.sendTo" string="${sendToPartyPartyAndContactMech.infoString}" prefix=","/> |
| </iterate> |
| </iterate-map> |
| |
| <!-- set subject, contentType, templateName, templateData --> |
| <set field="sendEmailMap.subject" value="Delivery Information Updated for Order #${orderDeliverySchedule.orderId}"/> |
| <if-compare field="orderDeliverySchedule.orderItemSeqId" operator="not-equals" value="_NA_"> |
| <string-append string=" Item #${orderDeliverySchedule.orderItemSeqId}" field="sendEmailMap.subject"/> |
| </if-compare> |
| <set field="sendEmailMap.contentType" value="text/html"/> |
| <set field="sendEmailMap.templateName" value="default/OrderDeliveryUpdatedNotice.ftl"/> |
| <set field="sendEmailMap.templateData.orderDeliverySchedule" from-field="orderDeliverySchedule"/> |
| |
| <!-- call sendGenericNotificationEmail service, if enough information was found --> |
| <log level="info" message="Sending generic notification email (if all info is in place): ${sendEmailMap}"/> |
| <if> |
| <condition> |
| <and> |
| <not><if-empty field="sendEmailMap.sendTo"/></not> |
| <not><if-empty field="sendEmailMap.sendFrom"/></not> |
| </and> |
| </condition> |
| <then> |
| <call-service service-name="sendGenericNotificationEmail" in-map-name="sendEmailMap"/> |
| </then> |
| <else> |
| <log level="error" message="Insufficient data to send notice email: ${sendEmailMap}"/> |
| </else> |
| </if> |
| </simple-method> |
| |
| <simple-method method-name="checkSupplierRelatedOrderPermissionService" short-description="Check Supplier Related Permission Service"> |
| <set field="checkAction" from-field="parameters.checkAction"/> |
| <set field="callingMethodName" from-field="parameters.callingMethodName"/> |
| <call-simple-method method-name="checkSupplierRelatedPermission"/> |
| <field-to-result field="hasSupplierRelatedPermission"/> |
| </simple-method> |
| |
| <!-- Should be called in-line to use its out parameter indicating whether the user has permission or not. --> |
| <simple-method method-name="checkSupplierRelatedPermission" short-description="Check Supplier Related Permission"> |
| <if-empty field="callingMethodName"> |
| <property-to-field resource="CommonUiLabels" property="CommonPermissionThisOperation" field="callingMethodName"/> |
| </if-empty> |
| <if-empty field="checkAction"> |
| <set value="UPDATE" field="checkAction"/> |
| </if-empty> |
| <set field="hasSupplierRelatedPermission" value="false"/> |
| <if> |
| <condition> |
| <if-has-permission permission="ORDERMGR" action="_${checkAction}"/> |
| </condition> |
| <then> |
| <set field="hasSupplierRelatedPermission" value="true"/> |
| </then> |
| <else> |
| <set from-field="parameters.orderId" field="lookupOrderRoleMap.orderId"/> |
| <set from-field="userLogin.partyId" field="lookupOrderRoleMap.partyId"/> |
| <set value="SUPPLIER_AGENT" field="lookupOrderRoleMap.roleTypeId"/> |
| <find-by-primary-key entity-name="OrderRole" map="lookupOrderRoleMap" value-field="permOrderRole"/> |
| <if> |
| <condition> |
| <if-empty field="permOrderRole"/> |
| </condition> |
| <then> |
| <set field="hasSupplierRelatedPermission" value="false"/> |
| <string-to-list list="error_list" string="ERROR: You do not have permission to ${checkAction} Delivery Schedule Information; you must be associated with this order as a Supplier Agent or have the ORDERMGR_${checkAction} permission."/> |
| </then> |
| <else> |
| <set field="hasSupplierRelatedPermission" value="true"/> |
| </else> |
| </if> |
| </else> |
| </if> |
| <log level="info" message="hasSupplierRelatedPermission is: ${hasSupplierRelatedPermission}"/> |
| </simple-method> |
| </simple-methods> |