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
diff --git a/applications/product/groovyScripts/product/promo/PromoServices.groovy b/applications/product/groovyScripts/product/promo/PromoServices.groovy
new file mode 100644
index 0000000..e825798
--- /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 358c16f..0000000
--- 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 4753bda..5f3f8fc 100644
--- a/applications/product/servicedef/services_pricepromo.xml
+++ b/applications/product/servicedef/services_pricepromo.xml
@@ -256,21 +256,21 @@
<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>