You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by nm...@apache.org on 2021/09/16 08:07:03 UTC

[ofbiz-framework] branch trunk updated: Improved: Convert checkAndCreateBatchForValidPayments service from mini-lang to groovy DSL (OFBIZ-11497)

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


The following commit(s) were added to refs/heads/trunk by this push:
     new b2d1161  Improved: Convert checkAndCreateBatchForValidPayments service from mini-lang to groovy DSL (OFBIZ-11497)
b2d1161 is described below

commit b2d1161582fd3bab95381bd1ecfdc5f74c69c2f1
Author: Nicolas Malin <ni...@nereide.fr>
AuthorDate: Thu Sep 16 10:06:42 2021 +0200

    Improved: Convert checkAndCreateBatchForValidPayments service from mini-lang to groovy DSL (OFBIZ-11497)
    
    Thanks to sourabh jain I started a solution with your patch
---
 .../groovyScripts/payment/PaymentServices.groovy   | 24 +++++++++++++++
 .../minilang/payment/PaymentServices.xml           | 35 ----------------------
 .../accounting/servicedef/services_payment.xml     |  4 +--
 3 files changed, 26 insertions(+), 37 deletions(-)

diff --git a/applications/accounting/groovyScripts/payment/PaymentServices.groovy b/applications/accounting/groovyScripts/payment/PaymentServices.groovy
index b3bade6..4d346aa 100644
--- a/applications/accounting/groovyScripts/payment/PaymentServices.groovy
+++ b/applications/accounting/groovyScripts/payment/PaymentServices.groovy
@@ -31,6 +31,7 @@ import org.apache.ofbiz.entity.util.EntityUtilProperties
 import org.apache.ofbiz.service.ServiceUtil
 
 import java.sql.Timestamp
+import org.apache.ofbiz.accounting.util.UtilAccounting
 
 def createPayment() {
     if (!security.hasEntityPermission("ACCOUNTING", "_CREATE", parameters.userLogin) &&
@@ -218,6 +219,29 @@ def createPaymentAndApplicationForParty() {
                     amount    : paymentAmount])
 }
 
+def checkAndCreateBatchForValidPayments() {
+    List disbursementPaymentIds = from("Payment")
+            .where(EntityCondition.makeCondition("paymentId", EntityOperator.IN, parameters.paymentIds))
+            .queryList()
+            .stream()
+            .filter {!UtilAccounting.isReceipt(it)}
+            .map {it.paymentId}
+            .collect()
+            .toList()
+    if (disbursementPaymentIds) {
+        return error(label("AccountingUiLabels", "AccountingCannotIncludeApPaymentError", [disbursementPaymentIds: disbursementPaymentIds]))
+    }
+    List batchPaymentIds = from("PaymentGroupMember")
+            .where(EntityCondition.makeCondition("paymentId", EntityOperator.IN, parameters.paymentIds))
+            .distinct()
+            .getFieldList('paymentId')
+    if (batchPaymentIds) {
+        return error(label("AccountingUiLabels", "AccountingPaymentsAreAlreadyBatchedError", [batchPaymentIds: batchPaymentIds]))
+    }
+    Map result = run service: 'createPaymentGroupAndMember', with: parameters
+    return result
+}
+
 def getPaymentRunningTotal(){
     String currencyUomId
     List paymentIds = parameters.paymentIds
diff --git a/applications/accounting/minilang/payment/PaymentServices.xml b/applications/accounting/minilang/payment/PaymentServices.xml
index b5d27d2..480dc67 100644
--- a/applications/accounting/minilang/payment/PaymentServices.xml
+++ b/applications/accounting/minilang/payment/PaymentServices.xml
@@ -66,39 +66,4 @@ under the License.
             <clear-field field="postAcctgTransMap"/>
         </iterate>
     </simple-method>
-
-    <simple-method method-name="checkAndCreateBatchForValidPayments" short-description="Check the valid(unbatched) payment and create batch for same">
-        <set field="paymentIds" from-field="parameters.paymentIds"/>
-        <entity-condition entity-name="Payment" list="payments">
-            <condition-expr field-name="paymentId" operator="in" from-field="paymentIds"/>
-        </entity-condition>
-        <iterate list="payments" entry="payment">
-            <set field="isReceipt" value="${groovy:org.apache.ofbiz.accounting.util.UtilAccounting.isReceipt(payment)}" type="Boolean"/>
-            <if-compare field="isReceipt" operator="equals" value="false" type="Boolean">
-                <field-to-list field="payment.paymentId" list="disbursementPaymentIds"/>
-            </if-compare>
-        </iterate>
-        <if-not-empty field="disbursementPaymentIds">
-            <add-error>
-                <fail-property resource="AccountingUiLabels" property="AccountingCannotIncludeApPaymentError"/>
-            </add-error>
-            <check-errors/>
-        </if-not-empty>
-        <entity-condition entity-name="PaymentGroupMember" list="paymentGroupMembers" filter-by-date="true">
-            <condition-expr field-name="paymentId" operator="in" from-field="paymentIds"/>
-        </entity-condition>
-        <if-not-empty field="paymentGroupMembers">
-            <set field="batchPaymentIds" value="${groovy:org.apache.ofbiz.entity.util.EntityUtil.getFieldListFromEntityList(paymentGroupMembers, 'paymentId', true);}" type="List"/>
-            <add-error>
-                <fail-property resource="AccountingUiLabels" property="AccountingPaymentsAreAlreadyBatchedError"/>
-            </add-error>
-            <check-errors/>
-        <else>
-            <set-service-fields service-name="createPaymentGroupAndMember" map="parameters" to-map="createPaymentGroupAndMemberMap"/>
-            <call-service service-name="createPaymentGroupAndMember" in-map-name="createPaymentGroupAndMemberMap">
-                <result-to-result result-name="paymentGroupId"/>
-            </call-service>
-        </else>
-        </if-not-empty>
-    </simple-method>
 </simple-methods>
diff --git a/applications/accounting/servicedef/services_payment.xml b/applications/accounting/servicedef/services_payment.xml
index 96c79fe..666c53b 100644
--- a/applications/accounting/servicedef/services_payment.xml
+++ b/applications/accounting/servicedef/services_payment.xml
@@ -220,8 +220,8 @@ under the License.
         <attribute name="glReconciliationId" type="String" mode="OUT" optional="true"/>
     </service>
     
-    <service name="checkAndCreateBatchForValidPayments" engine="simple"
-            location="component://accounting/minilang/payment/PaymentServices.xml" invoke="checkAndCreateBatchForValidPayments" auth="true">
+    <service name="checkAndCreateBatchForValidPayments" engine="groovy"
+            location="component://accounting/groovyScripts/payment/PaymentServices.groovy" invoke="checkAndCreateBatchForValidPayments" auth="true">
         <description>Check the valid(unbatched) payment and create batch for same</description>
         <implements service="createPaymentGroupAndMember"/>
     </service>