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 d532548e4c3db812aa9ec6631a77876839f0c752 Author: Nicolas Malin <nicolas.ma...@nereide.fr> AuthorDate: Fri Jul 15 11:30:41 2022 +0200 Improved: Convert PromoServices.xml mini-lang to groovyDSL (OFBIZ-9350) (OFBIZ-12668) Convert services createProductPromoCond and updateProductPromoCond from minilang to groovyDSL Thanks to Tom Gibert for the help --- .../product/promo/PromoServices.groovy | 44 ++++++++++++++++++++ .../minilang/product/promo/PromoServices.xml | 47 ---------------------- .../product/servicedef/services_pricepromo.xml | 14 +++---- 3 files changed, 51 insertions(+), 54 deletions(-) diff --git a/applications/product/groovyScripts/product/promo/PromoServices.groovy b/applications/product/groovyScripts/product/promo/PromoServices.groovy new file mode 100644 index 0000000000..e8257988c8 --- /dev/null +++ b/applications/product/groovyScripts/product/promo/PromoServices.groovy @@ -0,0 +1,44 @@ +/* + * 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. + */ +package product.promo + +import org.apache.ofbiz.entity.GenericValue + +def createProductPromoCond() { + if (parameters.carrierShipmentMethod) { + parameters.otherValue = parameters.carrierShipmentMethod + } + GenericValue newEntity = makeValue("ProductPromoCond", parameters) + delegator.setNextSubSeqId(newEntity, "productPromoCondSeqId", 2, 1) + newEntity.create() + return success([productPromoCondSeqId: newEntity.productPromoCondSeqId]) +} + +def updateProductPromoCond() { + GenericValue lookedUpValue = from("ProductPromoCond").where(parameters).queryOne() + if (lookedUpValue) { + if (parameters.carrierShipmentMethod) { + parameters.otherValue = parameters.carrierShipmentMethod + } + lookedUpValue.setNonPKFields(parameters) + lookedUpValue.store() + return success() + } + return error(label("ServiceErrorUiLabels", "ServiceValueNotFound")) +} \ No newline at end of file diff --git a/applications/product/minilang/product/promo/PromoServices.xml b/applications/product/minilang/product/promo/PromoServices.xml deleted file mode 100644 index 358c16f90a..0000000000 --- a/applications/product/minilang/product/promo/PromoServices.xml +++ /dev/null @@ -1,47 +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"> - - <!-- ProductPromoCond methods --> - <simple-method method-name="createProductPromoCond" short-description="Create an ProductPromoCond"> - <make-value entity-name="ProductPromoCond" value-field="newEntity"/> - <set-nonpk-fields map="parameters" value-field="newEntity"/> - <if-not-empty field="parameters.carrierShipmentMethod"> - <set field="newEntity.otherValue" from-field="parameters.carrierShipmentMethod"/> - </if-not-empty> - <set-pk-fields map="parameters" value-field="newEntity"/> - <make-next-seq-id value-field="newEntity" seq-field-name="productPromoCondSeqId" numeric-padding="2"/> - <field-to-result field="newEntity.productPromoCondSeqId" result-name="productPromoCondSeqId"/> - - <create-value value-field="newEntity"/> - </simple-method> - <simple-method method-name="updateProductPromoCond" short-description="Update an ProductPromoCond"> - <make-value entity-name="ProductPromoCond" value-field="lookupPKMap"/> - <set-pk-fields map="parameters" value-field="lookupPKMap"/> - <find-by-primary-key entity-name="ProductPromoCond" map="lookupPKMap" value-field="lookedUpValue"/> - <set-nonpk-fields map="parameters" value-field="lookedUpValue"/> - <if-not-empty field="parameters.carrierShipmentMethod"> - <set field="lookedUpValue.otherValue" from-field="parameters.carrierShipmentMethod"/> - </if-not-empty> - <store-value value-field="lookedUpValue"/> - </simple-method> -</simple-methods> diff --git a/applications/product/servicedef/services_pricepromo.xml b/applications/product/servicedef/services_pricepromo.xml index 4753bda0cd..5f3f8fc297 100644 --- a/applications/product/servicedef/services_pricepromo.xml +++ b/applications/product/servicedef/services_pricepromo.xml @@ -256,21 +256,21 @@ under the License. <attribute name="codeLength" type="Integer" mode="IN" optional="true" default-value="8"/> <attribute name="promoCodeLayout" type="String" mode="IN" optional="true" default-value="sequence"/> </service> - - <service name="createProductPromoCond" default-entity-name="ProductPromoCond" engine="simple" - location="component://product/minilang/product/promo/PromoServices.xml" invoke="createProductPromoCond" auth="true"> + + <service name="createProductPromoCond" default-entity-name="ProductPromoCond" engine="groovy" invoke="createProductPromoCond" + location="component://product/groovyScripts/product/promo/PromoServices.groovy" auth="true"> <description>Create a ProductPromo</description> <permission-service service-name="productPriceGenericPermission" main-action="CREATE"/> - <auto-attributes include="pk" mode="IN" optional="false"/> + <auto-attributes include="pk" mode="IN"/> <auto-attributes include="nonpk" mode="IN" optional="true"/> <attribute name="carrierShipmentMethod" type="String" mode="IN" optional="true"/> <override name="productPromoCondSeqId" mode="OUT"/> </service> - <service name="updateProductPromoCond" default-entity-name="ProductPromoCond" engine="simple" - location="component://product/minilang/product/promo/PromoServices.xml" invoke="updateProductPromoCond" auth="true"> + <service name="updateProductPromoCond" default-entity-name="ProductPromoCond" engine="groovy" invoke="updateProductPromoCond" + location="component://product/groovyScripts/product/promo/PromoServices.groovy" auth="true"> <description>Update a ProductPromo</description> <permission-service service-name="productPriceGenericPermission" main-action="UPDATE"/> - <auto-attributes include="pk" mode="IN" optional="false"/> + <auto-attributes include="pk" mode="IN"/> <auto-attributes include="nonpk" mode="IN" optional="true"/> <attribute name="carrierShipmentMethod" type="String" mode="IN" optional="true"/> </service>