From c04df45ff6420ae0f3ac7371e052ee1746f2ab0b Mon Sep 17 00:00:00 2001 From: Gil Portenseigne Date: Wed, 3 Jun 2020 10:10:25 +0200 Subject: [PATCH] Improved: Migrate checkCreateOrderRequirement service to groovy (OFBIZ-9984) This commit migrate also dependent method and remove createRequirementFromItemATP service --- .../order/config/OrderErrorUiLabels.xml | 16 --- .../order/OrderRequirementServices.groovy | 72 +++++++++++ .../order/minilang/order/OrderServices.xml | 116 ------------------ .../order/minilang/test/OrderTests.xml | 18 +-- .../order/servicedef/services_requirement.xml | 22 ++-- 5 files changed, 80 insertions(+), 164 deletions(-) create mode 100644 applications/order/groovyScripts/order/OrderRequirementServices.groovy diff --git a/applications/order/config/OrderErrorUiLabels.xml b/applications/order/config/OrderErrorUiLabels.xml index 941e334e8f..f65542374c 100644 --- a/applications/order/config/OrderErrorUiLabels.xml +++ b/applications/order/config/OrderErrorUiLabels.xml @@ -4020,22 +4020,6 @@ 安全错误:要运行 createQuoteItem,你必须具有 ORDERMGR_CREATE 或 ORDERMGR_ADMIN 权限 安全錯誤:要運行 createQuoteItem,你必須具有 ORDERMGR_CREATE 或 ORDERMGR_ADMIN 權限 - - خطأ أمني: لتشغيل createRequirementFromItemATP يجب أن يكون لديك صلاحية ORDERMGR_CREATE أو ORDERMGR_ADMIN - Berechtigungsfehler: Um 'createRequirementFromItemATP' auszuführen müssen Sie die ORDERMGR_CREATE oder ORDERMGR_ADMIN Berechtigungen haben - Security Error: to run createRequirementFromItemATP you must have the ORDERMGR_CREATE or ORDERMGR_ADMIN permission - Error de seguridad: Para ejecutar createRequirementFromItemATP debe contar con los permisos ORDERMGR_CREATE o ORDERMGR_ADMIN - Erreur de sécurité : pour exécuter createRequirementFromItemATP, vous devez avoir l'autorisation d'administrer ou de créer la commande - Errore Sicurezza : per eseguire createRequirementFromItemATP tu devi avere il permesso ORDERMGR_CREATE o ORDERMGR_ADMIN - セキュリティエラー: createRequirementFromItemATPの実行には ORDERMGR_CREATE または ORDERMGR_ADMIN 権限が必要です - Erro de segurança: para rodar createRequirementFromItemATP você deve ter a permissão ORDERMGR_CREATE ou ORDERMGR_ADMIN - Eroare Siguranta : pentru executarea createRequirementFromItemATP tu trebuie sa ai permisul ORDERMGR_CREATE sau ORDERMGR_ADMIN - Ошибка безопасности: для выполнения createRequirementFromItemATP у вас должны быть права ORDERMGR_CREATE или ORDERMGR_ADMIN - Security Error: ความปลอดภัยผิดพลาด ! ถึงการดำเนินการ createRequirementFromItemATP คุณต้องมี ORDERMGR_CREATE หรือ ORDERMGR_ADMIN อนุญาต - Lỗi phân quyền: để thực thi dịch vụ createRequirementFromItemATP bạn cần có quyền ORDERMGR_CREATE hoặc ORDERMGR_ADMIN - 安全错误:要运行 createRequirementFromItemATP,你必须具有 ORDERMGR_CREATE 或 ORDERMGR_ADMIN 权限 - 安全錯誤:要運行 createRequirementFromItemATP,你必須具有 ORDERMGR_CREATE 或 ORDERMGR_ADMIN 權限 - خطأ أمني: لتشغيل createReturnHeader يجب أن يكون لديك صلاحية ORDERMGR_CREATE أو ORDERMGR_ADMIN Berechtigungsfehler: Um 'createReturnHeader' auszuführen müssen Sie die ORDERMGR_CREATE oder ORDERMGR_ADMIN Berechtigungen haben diff --git a/applications/order/groovyScripts/order/OrderRequirementServices.groovy b/applications/order/groovyScripts/order/OrderRequirementServices.groovy new file mode 100644 index 0000000000..8dbafd66cb --- /dev/null +++ b/applications/order/groovyScripts/order/OrderRequirementServices.groovy @@ -0,0 +1,72 @@ +/* + * 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.entity.GenericValue + +/* + * Create OrderRequirementCommitment and Requirement for items with automatic requirement upon ordering + */ +def checkCreateOrderRequirement() { + def reqMap = getProductRequirementMethod() + GenericValue order = reqMap.order + if (order.orderTypeId == 'SALES_ORDER' && reqMap.requirementMethodId == 'PRODRQM_AUTO') { + createRequirementAndCommitment() + } + success() +} + +def getProductRequirementMethod() { + GenericValue order = from('OrderHeader').where(parameters).queryOne() + GenericValue product = from('Product').where(parameters).queryOne() + String requirementMethodId = product ? product.requirementMethodId : '' + if (!requirementMethodId && product) { + boolean isMarketingPkg = EntityTypeUtil.hasParentType(delegator, 'ProductType', 'productTypeId', + product.productTypeId, 'parentTypeId', 'MARKETING_PKG') + if (!isMarketingPkg && product.productTypeId != 'DIGITAL_GOOD' && order) { + productStore = from('ProductStore').where(productStoreId: order.productStoreId).queryOne() + requirementMethodId = productStore ? productStore.requirementMethodEnumId : '' + } + } + return [order: order, requirementMethodId: requirementMethodId] + +} + +/* + * create a requirement and commitment for it + */ +def createRequirementAndCommitment() { + Map createRequirement = [requirementTypeId: 'PRODUCT_REQUIREMENT'] + Map returnMap = success() + + GenericValue order = from('OrderHeader').where(orderId: orderId).queryOne() + if (order) { + GenericValue productStore = from('ProductStore').where(productStoreId: order.productStoreId).queryOne() + if (productStore.inventoryFacilityId) { + createRequirement.facilityId = productStore.inventoryFacilityId + } + Map result = run service: 'createRequirement', with: createRequirement + returnMap.requirementId = result.requirementId + // create the OrderRequirementCommitment to record the Requirement created for an order item + + run service: 'createOrderRequirementCommitment', with: [*:parameters, requirementId: result.requirementId] + } + return returnMap +} + diff --git a/applications/order/minilang/order/OrderServices.xml b/applications/order/minilang/order/OrderServices.xml index 6906b735c6..f24b297dc9 100644 --- a/applications/order/minilang/order/OrderServices.xml +++ b/applications/order/minilang/order/OrderServices.xml @@ -22,27 +22,6 @@ under the License. xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd"> - - - - - - - - - - - - - - - - - - - - - @@ -86,22 +65,6 @@ under the License. - - - - - - - - - - - - - - - - @@ -202,85 +165,6 @@ under the License. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/applications/order/minilang/test/OrderTests.xml b/applications/order/minilang/test/OrderTests.xml index 7800ab7ade..2d15880ab0 100644 --- a/applications/order/minilang/test/OrderTests.xml +++ b/applications/order/minilang/test/OrderTests.xml @@ -110,22 +110,6 @@ under the License. - - - - - - - - - - - - - - - - @@ -154,4 +138,4 @@ under the License. - \ No newline at end of file + diff --git a/applications/order/servicedef/services_requirement.xml b/applications/order/servicedef/services_requirement.xml index a35edb6aa5..4c1522b46d 100644 --- a/applications/order/servicedef/services_requirement.xml +++ b/applications/order/servicedef/services_requirement.xml @@ -110,11 +110,14 @@ under the License. - + Create OrderRequirementCommitment and Requirement for items with automatic requirement upon ordering - - + + + + + @@ -139,17 +142,6 @@ under the License. - - Create OrderRequirementCommitment and Requirement for items with requirement based on ATP stock levels - - - - - - - - -- GitLab