This is an automated email from the ASF dual-hosted git repository.

pawan 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 20ba868  Improved: Convert cancelPaymentBatch service from mini-lang 
to groovy DSL(OFBIZ-11489)
20ba868 is described below

commit 20ba868b7d59770d261ceeeac9f669a847f87dac
Author: Pawan Verma <pawan.ve...@hotwaxsystems.com>
AuthorDate: Wed Jul 1 15:48:49 2020 +0530

    Improved: Convert cancelPaymentBatch service from mini-lang to groovy 
DSL(OFBIZ-11489)
    
    Thanks: Devanshu for report, Kirti for patch and Jacques for the review.
---
 .../groovyScripts/payment/PaymentServices.groovy   | 30 ++++++++++++++++++++++
 .../minilang/payment/PaymentServices.xml           | 27 -------------------
 .../accounting/servicedef/services_payment.xml     |  4 +--
 3 files changed, 32 insertions(+), 29 deletions(-)

diff --git 
a/applications/accounting/groovyScripts/payment/PaymentServices.groovy 
b/applications/accounting/groovyScripts/payment/PaymentServices.groovy
index ecd5851..7375a59 100644
--- a/applications/accounting/groovyScripts/payment/PaymentServices.groovy
+++ b/applications/accounting/groovyScripts/payment/PaymentServices.groovy
@@ -22,6 +22,7 @@ import org.apache.ofbiz.base.util.UtilProperties
 import org.apache.ofbiz.entity.condition.EntityCondition
 import org.apache.ofbiz.entity.condition.EntityOperator
 import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityUtil
 import org.apache.ofbiz.service.ModelService
 import org.apache.ofbiz.service.ServiceUtil
 import java.sql.Timestamp
@@ -253,6 +254,7 @@ def massChangePaymentStatus() {
     return serviceResult
 }
 
+
 def createFinAccoutnTransFromPayment() {
     serviceResult = success()
     Map createFinAccountTransMap = 
dispatcher.getDispatchContext().makeValidContext('setPaymentStatus', 
ModelService.IN_PARAM, parameters)
@@ -291,4 +293,32 @@ def quickSendPayment() {
 
     return result
 
+}
+
+/**
+ * Service to cancel payment batch
+ */
+def cancelPaymentBatch() {
+    List<GenericValue> paymentGroupMemberAndTransList = 
from("PmtGrpMembrPaymentAndFinAcctTrans").where("paymentGroupId", 
parameters.paymentGroupId).queryList()
+
+    if (paymentGroupMemberAndTransList) {
+        GenericValue paymentGroupMemberAndTrans = 
EntityUtil.getFirst(paymentGroupMemberAndTransList)
+        if ("FINACT_TRNS_APPROVED" == 
paymentGroupMemberAndTrans.finAccountTransStatusId) {
+            return error(UtilProperties.getMessage('AccountingErrorUiLabels', 
'AccountingTransactionIsAlreadyReconciled', locale))
+        }
+
+        for (GenericValue paymentGroupMember : paymentGroupMemberAndTransList) 
{
+            Map expirePaymentGroupMemberMap = 
dispatcher.getDispatchContext().makeValidContext("expirePaymentGroupMember", 
"IN", paymentGroupMember)
+            result = runService("expirePaymentGroupMember", 
expirePaymentGroupMemberMap)
+            if (ServiceUtil.isError(result)) return result
+
+            GenericValue finAccountTrans = 
from("FinAccountTrans").where("finAccountTransId", 
paymentGroupMember.finAccountTransId).queryOne()
+            if (finAccountTrans) {
+                Map setFinAccountTransStatusMap = 
dispatcher.getDispatchContext().makeValidContext("setFinAccountTransStatus", 
"IN", finAccountTrans)
+                setFinAccountTransStatusMap.statusId = "FINACT_TRNS_CANCELED"
+                result = runService("setFinAccountTransStatus", 
setFinAccountTransStatusMap)
+                if (ServiceUtil.isError(result)) return result
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/applications/accounting/minilang/payment/PaymentServices.xml 
b/applications/accounting/minilang/payment/PaymentServices.xml
index d5895eb..d30eaa3 100644
--- a/applications/accounting/minilang/payment/PaymentServices.xml
+++ b/applications/accounting/minilang/payment/PaymentServices.xml
@@ -437,33 +437,6 @@ under the License.
         </iterate>
     </simple-method>
 
-    <simple-method method-name="cancelPaymentBatch" short-description="cancel 
payment batch">
-        <entity-and entity-name="PmtGrpMembrPaymentAndFinAcctTrans" 
list="paymentGroupMemberAndTransList">
-            <field-map field-name="paymentGroupId" 
from-field="parameters.paymentGroupId"/>
-        </entity-and>
-        <if-not-empty field="paymentGroupMemberAndTransList">
-            <first-from-list list="paymentGroupMemberAndTransList" 
entry="paymentGroupMemberAndTrans"/>
-            <if-compare 
field="paymentGroupMemberAndTrans.finAccountTransStatusId" operator="equals" 
value="FINACT_TRNS_APPROVED">
-                <add-error>
-                    <fail-property resource="AccountingUiLabels" 
property="AccountingTransactionIsAlreadyReconciled"/>
-                </add-error>
-                <check-errors/>
-            </if-compare>
-            <iterate list="paymentGroupMemberAndTransList" 
entry="paymentGroupMemberAndTrans">
-                <set-service-fields service-name="expirePaymentGroupMember" 
map="paymentGroupMemberAndTrans" to-map="expirePaymentGroupMemberMap"/>
-                <call-service service-name="expirePaymentGroupMember" 
in-map-name="expirePaymentGroupMemberMap"/>
-                <entity-one entity-name="FinAccountTrans" 
value-field="finAccountTrans">
-                    <field-map field-name="finAccountTransId" 
from-field="paymentGroupMemberAndTrans.finAccountTransId"/>
-                </entity-one>
-                <if-not-empty field="finAccountTrans">
-                    <set-service-fields 
service-name="setFinAccountTransStatus" map="finAccountTrans" 
to-map="setFinAccountTransStatusMap"/>
-                    <set field="setFinAccountTransStatusMap.statusId" 
value="FINACT_TRNS_CANCELED"/>
-                    <call-service service-name="setFinAccountTransStatus" 
in-map-name="setFinAccountTransStatusMap"/>
-                </if-not-empty>
-            </iterate>
-        </if-not-empty>
-    </simple-method>
-
     <simple-method method-name="createPaymentAndPaymentGroupForInvoices" 
short-description="Creates Payments, PaymentApplications and PaymentGroup for 
the same">
         <entity-one entity-name="PaymentMethod" value-field="paymentMethod" 
auto-field-map="true"/>
         <entity-one entity-name="FinAccount" value-field="finAccount" 
auto-field-map="false">
diff --git a/applications/accounting/servicedef/services_payment.xml 
b/applications/accounting/servicedef/services_payment.xml
index 6d3f878..77f80df 100644
--- a/applications/accounting/servicedef/services_payment.xml
+++ b/applications/accounting/servicedef/services_payment.xml
@@ -158,8 +158,8 @@ under the License.
         <attribute name="organizationPartyId" type="String" mode="IN" 
optional="true"/>
         <attribute name="paymentRunningTotal" type="String" mode="OUT" 
optional="false"/>
     </service>
-    <service name="cancelPaymentBatch" engine="simple"
-            
location="component://accounting/minilang/payment/PaymentServices.xml" 
invoke="cancelPaymentBatch" auth="true">
+    <service name="cancelPaymentBatch" engine="groovy"
+            
location="component://accounting/groovyScripts/payment/PaymentServices.groovy" 
invoke="cancelPaymentBatch" auth="true">
         <description>cancel payment batch</description>
         <attribute name="paymentGroupId" type="String" mode="IN" 
optional="false"/>
     </service>

Reply via email to