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

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


The following commit(s) were added to refs/heads/release24.09 by this push:
     new 50bd909bd4 Fixed: copyAgreement silent success when agreement does not 
exist (OFBIZ-13559)
50bd909bd4 is described below

commit 50bd909bd45e5f9324e88d8f323aab53f2a57825
Author: Mridul Pathak <[email protected]>
AuthorDate: Thu Sep 10 23:17:34 2026 +0530

    Fixed: copyAgreement silent success when agreement does not exist 
(OFBIZ-13559)
    
    Return an error response when agreementId does not resolve to an existing 
Agreement instead of silently succeeding.
---
 .../accounting/config/AccountingUiLabels.xml       |   3 +
 .../agreement/AgreementServicesScript.groovy       | 102 +++++++++++----------
 2 files changed, 55 insertions(+), 50 deletions(-)

diff --git a/applications/accounting/config/AccountingUiLabels.xml 
b/applications/accounting/config/AccountingUiLabels.xml
index f4e0391f49..058c60e78a 100644
--- a/applications/accounting/config/AccountingUiLabels.xml
+++ b/applications/accounting/config/AccountingUiLabels.xml
@@ -673,6 +673,9 @@
         <value xml:lang="zh">合同</value>
         <value xml:lang="zh-TW">合約</value>
     </property>
+    <property key="AccountingAgreementNotFound">
+        <value xml:lang="en">Agreement ${agreementId} not found</value>
+    </property>
     <property key="AccountingAgreementAvailable">
         <value xml:lang="ar">قائمة الإتفاقيات المتوفرة</value>
         <value xml:lang="de">Liste verfügbarer Vereinbarungen</value>
diff --git 
a/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/agreement/AgreementServicesScript.groovy
 
b/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/agreement/AgreementServicesScript.groovy
index 17f851cc63..cf6919141d 100644
--- 
a/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/agreement/AgreementServicesScript.groovy
+++ 
b/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/agreement/AgreementServicesScript.groovy
@@ -18,6 +18,7 @@
 */
 package org.apache.ofbiz.accounting.agreement
 
+import org.apache.ofbiz.entity.GenericValue
 import org.apache.ofbiz.service.ModelService
 import org.apache.ofbiz.service.ServiceUtil
 
@@ -26,60 +27,61 @@ import org.apache.ofbiz.service.ServiceUtil
  */
 
 Map copyAgreement() {
-    agreement = from('Agreement').where('agreementId', 
parameters.agreementId).queryOne()
-    serviceResult = success()
-    if (agreement) {
-        Map createAgreementInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreement', 
ModelService.IN_PARAM, agreement)
-        result = run service: 'createAgreement', with: createAgreementInMap
-        if (ServiceUtil.isError(result)) {
-            return result
-        }
-        agreementIdTo = result.agreementId
-        agreementItems = agreement.getRelated('AgreementItem', null, null, 
false)
-        agreementItems.each { agreementItem ->
-            Map createAgreementItemInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementItem',
-                    ModelService.IN_PARAM, agreementItem)
-            createAgreementItemInMap.agreementId = agreementIdTo
-            result = run service: 'createAgreementItem', with: 
createAgreementItemInMap
-        }
-        if (parameters.copyAgreementTerms == 'Y') {
-            agreementTerms = agreement.getRelated('AgreementTerm', null, null, 
false)
-            agreementTerms.each { agreementTerm ->
-                Map createAgreementTermInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementTerm',
-                        ModelService.IN_PARAM, agreementTerm)
-                createAgreementTermInMap.agreementId = agreementIdTo
-                createAgreementTermInMap.remove('agreementTermId')
-                result = run service: 'createAgreementTerm', with: 
createAgreementTermInMap
-            }
+    GenericValue agreement = from('Agreement').where(parameters).queryOne()
+    if (!agreement) {
+        return error(label('AccountingUiLabels', 
'AccountingAgreementNotFound', parameters))
+    }
+    Map serviceResult = success()
+    Map createAgreementInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreement', 
ModelService.IN_PARAM, agreement)
+    Map result = run service: 'createAgreement', with: createAgreementInMap
+    if (ServiceUtil.isError(result)) {
+        return result
+    }
+    String agreementIdTo = result.agreementId
+    List agreementItems = agreement.getRelated('AgreementItem', null, null, 
false)
+    agreementItems.each { agreementItem ->
+        Map createAgreementItemInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementItem',
+                ModelService.IN_PARAM, agreementItem)
+        createAgreementItemInMap.agreementId = agreementIdTo
+        result = run service: 'createAgreementItem', with: 
createAgreementItemInMap
+    }
+    if (parameters.copyAgreementTerms == 'Y') {
+        List agreementTerms = agreement.getRelated('AgreementTerm', null, 
null, false)
+        agreementTerms.each { agreementTerm ->
+            Map createAgreementTermInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementTerm',
+                    ModelService.IN_PARAM, agreementTerm)
+            createAgreementTermInMap.agreementId = agreementIdTo
+            createAgreementTermInMap.remove('agreementTermId')
+            result = run service: 'createAgreementTerm', with: 
createAgreementTermInMap
         }
-        if (parameters.copyAgreementProducts == 'Y') {
-            agreementProductAppls = 
agreement.getRelated('AgreementProductAppl', null, null, false)
-            agreementProductAppls.each { agreementProductAppl ->
-                Map createAgreementProductApplInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementProductAppl',
-                        ModelService.IN_PARAM, agreementProductAppl)
-                createAgreementProductApplInMap.agreementId = agreementIdTo
-                result = run service: 'createAgreementProductAppl', with: 
createAgreementProductApplInMap
-            }
+    }
+    if (parameters.copyAgreementProducts == 'Y') {
+        List agreementProductAppls = 
agreement.getRelated('AgreementProductAppl', null, null, false)
+        agreementProductAppls.each { agreementProductAppl ->
+            Map createAgreementProductApplInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementProductAppl',
+                    ModelService.IN_PARAM, agreementProductAppl)
+            createAgreementProductApplInMap.agreementId = agreementIdTo
+            result = run service: 'createAgreementProductAppl', with: 
createAgreementProductApplInMap
         }
-        if (parameters.copyAgreementFacilities == 'Y') {
-            agreementFacilityAppls = 
agreement.getRelated('AgreementFacilityAppl', null, null, false)
-            agreementFacilityAppls.each { agreementFacilityAppl ->
-                Map createAgreementFacilityApplInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementFacilityAppl',
-                        ModelService.IN_PARAM, agreementFacilityAppl)
-                createAgreementFacilityApplInMap.agreementId = agreementIdTo
-                result = run service: 'createAgreementFacilityAppl', with: 
createAgreementFacilityApplInMap
-            }
+    }
+    if (parameters.copyAgreementFacilities == 'Y') {
+        List agreementFacilityAppls = 
agreement.getRelated('AgreementFacilityAppl', null, null, false)
+        agreementFacilityAppls.each { agreementFacilityAppl ->
+            Map createAgreementFacilityApplInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementFacilityAppl',
+                    ModelService.IN_PARAM, agreementFacilityAppl)
+            createAgreementFacilityApplInMap.agreementId = agreementIdTo
+            result = run service: 'createAgreementFacilityAppl', with: 
createAgreementFacilityApplInMap
         }
-        if (parameters.copyAgreementParties == 'Y') {
-            agreementPartyApplics = 
agreement.getRelated('AgreementPartyApplic', null, null, false)
-            agreementPartyApplics.each { agreementPartyApplic ->
-                Map createAgreementPartyApplicInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementPartyApplic',
-                        ModelService.IN_PARAM, agreementPartyApplic)
-                createAgreementPartyApplicInMap.agreementId = agreementIdTo
-                result = run service: 'createAgreementPartyApplic', with: 
createAgreementPartyApplicInMap
-            }
+    }
+    if (parameters.copyAgreementParties == 'Y') {
+        List agreementPartyApplics = 
agreement.getRelated('AgreementPartyApplic', null, null, false)
+        agreementPartyApplics.each { agreementPartyApplic ->
+            Map createAgreementPartyApplicInMap = 
dispatcher.getDispatchContext().makeValidContext('createAgreementPartyApplic',
+                    ModelService.IN_PARAM, agreementPartyApplic)
+            createAgreementPartyApplicInMap.agreementId = agreementIdTo
+            result = run service: 'createAgreementPartyApplic', with: 
createAgreementPartyApplicInMap
         }
-        serviceResult.agreementId = agreementIdTo
     }
+    serviceResult.agreementId = agreementIdTo
     return serviceResult
 }

Reply via email to