[ofbiz-framework] branch trunk updated: Implemented: Convert createPayment service from mini-lang to groovy DSL

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] branch trunk updated: Implemented: Convert createPayment service from mini-lang to groovy DSL

jleroux@apache.org
This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new b884835  Implemented: Convert createPayment service from mini-lang to groovy DSL
b884835 is described below

commit b8848355d188ff91ce84e71b16433c9cf278b8d0
Author: Jacques Le Roux <[hidden email]>
AuthorDate: Thu Apr 9 10:23:56 2020 +0200

    Implemented: Convert createPayment service from mini-lang to groovy DSL
   
    (OFBIZ-11479)
   
    jleroux: I have only changed the MODULE name (and uppercased it)
   
    Thanks: Priya Sharma
---
 .../groovyScripts/payment/PaymentServices.groovy   | 55 +++++++++++++++++++
 .../minilang/payment/PaymentServices.xml           | 63 ----------------------
 .../accounting/servicedef/services_payment.xml     |  4 +-
 3 files changed, 57 insertions(+), 65 deletions(-)

diff --git a/applications/accounting/groovyScripts/payment/PaymentServices.groovy b/applications/accounting/groovyScripts/payment/PaymentServices.groovy
new file mode 100644
index 0000000..2a3493f
--- /dev/null
+++ b/applications/accounting/groovyScripts/payment/PaymentServices.groovy
@@ -0,0 +1,55 @@
+/*
+ * 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.base.util.Debug
+import org.apache.ofbiz.base.util.UtilDateTime
+import org.apache.ofbiz.base.util.UtilProperties
+import org.apache.ofbiz.base.util.UtilValidate
+import org.apache.ofbiz.entity.GenericValue
+
+MODULE = "PaymentServices.groovy"
+def createPayment() {
+    if (!security.hasEntityPermission("ACCOUNTING", "_CREATE", parameters.userLogin) && (!security.hasEntityPermission("PAY_INFO", "_CREATE", parameters.userLogin) && userLogin.partyId != parameters.partyIdFrom && userLogin.partyId != parameters.partyIdTo)) {
+        return error(UtilProperties.getResourceBundleMap("AccountingUiLabels", locale)?.AccountingCreatePaymentPermissionError)
+    }
+    GenericValue payment = delegator.makeValue("Payment")
+    payment.paymentId = parameters.paymentId ?: delegator.getNextSeqId("Payment")
+    paymentId = payment.paymentId
+    parameters.statusId = parameters.statusId ?: "PMNT_NOT_PAID"
+    if (UtilValidate.isNotEmpty(parameters.paymentMethodId)) {
+        GenericValue paymentMethod = from("PaymentMethod").where("paymentMethodId", parameters.paymentMethodId).queryOne()
+        if (parameters.paymentMethodTypeId != paymentMethod.paymentMethodTypeId) {
+            Debug.logInfo("Replacing passed payment method type [" + parameters.paymentMethodTypeId + "] with payment method type [" + paymentMethod.paymentMethodTypeId + "] for payment method [" + parameters.paymentMethodId +"]", MODULE)
+            parameters.paymentMethodTypeId = paymentMethod.paymentMethodTypeId
+        }
+    }
+    if (UtilValidate.isNotEmpty(parameters.paymentPreferenceId)) {
+        GenericValue orderPaymentPreference = from("OrderPaymentPreference").where("orderPaymentPreferenceId", parameters.paymentPreferenceId).queryOne()
+        parameters.paymentId = parameters.paymentId ?: orderPaymentPreference.paymentMethodId
+        parameters.paymentMethodTypeId = parameters.paymentMethodTypeId ?: orderPaymentPreference.paymentMethodTypeId
+    }
+    if (UtilValidate.isEmpty(parameters.paymentMethodTypeId)) {
+        return error(UtilProperties.getResourceBundleMap("AccountingUiLabels", locale)?.AccountingPaymentMethodIdPaymentMethodTypeIdNullError)
+    }
+    payment.setNonPKFields(parameters)
+    payment.effectiveDate = payment.effectiveDate ?: UtilDateTime.nowTimestamp()
+    delegator.create(payment)
+    Map result = success()
+    result.paymentId = paymentId
+    return result
+}
diff --git a/applications/accounting/minilang/payment/PaymentServices.xml b/applications/accounting/minilang/payment/PaymentServices.xml
index 19c2368..3d6f961 100644
--- a/applications/accounting/minilang/payment/PaymentServices.xml
+++ b/applications/accounting/minilang/payment/PaymentServices.xml
@@ -20,69 +20,6 @@ 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="createPayment" short-description="Create a Payment">
-        <if>
-            <condition>
-                <and>
-                    <not><if-has-permission permission="ACCOUNTING" action="_CREATE"/></not>
-                    <not><if-has-permission permission="PAY_INFO" action="_CREATE"/></not>
-                    <not><if-compare-field field="userLogin.partyId" to-field="parameters.partyIdFrom" operator="equals"/></not>
-                    <not><if-compare-field field="userLogin.partyId" to-field="parameters.partyIdTo" operator="equals"/></not>
-                </and>
-            </condition>
-            <then>
-                <add-error>
-                    <fail-property resource="AccountingUiLabels" property="AccountingCreatePaymentPermissionError"/>
-                </add-error>
-            </then>
-        </if>
-        <check-errors/>
-
-        <make-value entity-name="Payment" value-field="payment"/>
-        <if-empty field="parameters.paymentId">
-            <sequenced-id sequence-name="Payment" field="payment.paymentId"/>
-            <else>
-                <set field="payment.paymentId" from-field="parameters.paymentId"/>
-            </else>
-        </if-empty>
-        <field-to-result field="payment.paymentId" result-name="paymentId"/>
-
-        <if-empty field="parameters.statusId">
-            <set field="parameters.statusId" value="PMNT_NOT_PAID"/>
-        </if-empty>
-
-        <if-not-empty field="parameters.paymentMethodId">
-            <entity-one entity-name="PaymentMethod" value-field="paymentMethod">
-                <field-map field-name="paymentMethodId" from-field="parameters.paymentMethodId"/>
-            </entity-one>
-            <if-compare-field field="parameters.paymentMethodTypeId" operator="not-equals" to-field="paymentMethod.paymentMethodTypeId">
-                <log level="info" message="Replacing passed payment method type [${parameters.paymentMethodTypeId}] with payment method type [${paymentMethod.paymentMethodTypeId}] for payment method [${parameters.paymentMethodId}]"/>
-                <set field="parameters.paymentMethodTypeId" from-field="paymentMethod.paymentMethodTypeId"/>
-            </if-compare-field>
-        </if-not-empty>
-        <if-not-empty field="parameters.paymentPreferenceId">
-            <entity-one entity-name="OrderPaymentPreference" value-field="orderPaymentPreference">
-                <field-map field-name="orderPaymentPreferenceId" from-field="parameters.paymentPreferenceId"/>
-            </entity-one>
-            <if-empty field="parameters.paymentMethodId">
-                <set field="parameters.paymentMethodId" from-field="orderPaymentPreference.paymentMethodId"/>
-            </if-empty>
-            <if-empty field="parameters.paymentMethodTypeId">
-                <set field="parameters.paymentMethodTypeId" from-field="orderPaymentPreference.paymentMethodTypeId"/>
-            </if-empty>
-        </if-not-empty>
-        <if-empty field="parameters.paymentMethodTypeId">
-            <add-error>
-                <fail-property resource="AccountingUiLabels" property="AccountingPaymentMethodIdPaymentMethodTypeIdNullError"/>
-            </add-error>
-        </if-empty>
-
-        <set-nonpk-fields map="parameters" value-field="payment"/>
-        <if-empty field="payment.effectiveDate">
-            <now-timestamp field="payment.effectiveDate"/>
-        </if-empty>
-        <create-value value-field="payment"/>
-    </simple-method>
     <simple-method method-name="updatePayment" short-description="Update a Payment">
         <make-value entity-name="Payment" value-field="lookupPayment"/>
         <set-pk-fields value-field="lookupPayment" map="parameters"/>
diff --git a/applications/accounting/servicedef/services_payment.xml b/applications/accounting/servicedef/services_payment.xml
index f96eb37..ba0cacd 100644
--- a/applications/accounting/servicedef/services_payment.xml
+++ b/applications/accounting/servicedef/services_payment.xml
@@ -25,8 +25,8 @@ under the License.
     <version>1.0</version>
 
     <!-- Payment services -->
-    <service name="createPayment" engine="simple" default-entity-name="Payment"
-        location="component://accounting/minilang/payment/PaymentServices.xml" invoke="createPayment" auth="true">
+    <service name="createPayment" engine="groovy" default-entity-name="Payment"
+        location="component://accounting/groovyScripts/payment/PaymentServices.groovy" invoke="createPayment" auth="true">
         <description>Create a Payment.  If a paymentMethodId is supplied, paymentMethodTypeId is gotten from paymentMethod.  Otherwise, it must be supplied.  If no
         paymentMethodTypeId and no paymentMethodId is supplied, then an error will be returned. </description>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>