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

mridulpathak 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 741fa6fca4 Fixed: Four regressions in the minilang-to-Groovy 
conversion of PartyServicesScript.groovy (OFBIZ-13593)
741fa6fca4 is described below

commit 741fa6fca474b1092534e0f39d9d709a665d4dc1
Author: Mridul Pathak <[email protected]>
AuthorDate: Wed Sep 16 12:28:16 2026 +0530

    Fixed: Four regressions in the minilang-to-Groovy conversion of 
PartyServicesScript.groovy (OFBIZ-13593)
    
    - followPartyRelationshipsInlineRecurse read a nonexistent 
partyRel.partyFrom field (the actual field is partyIdFrom) in the 
includeFromToSwitched=='Y' branch, throwing IllegalArgumentException; reachable 
via getParentOrganizations
    - getChildRoleTypes returned only the discovered child role types, omitting 
the original seed roleTypeId; the other two callers of getChildRoleTypesInline 
already prepend the seed, and the service's own description states the result 
"will contain the original roleTypeId"
    - getPartiesByRelationship used lookupMap.setAllFields(parameters, false, 
null, null), which includes any of fromDate/thruDate/relationshipName the 
caller happens to pass (they're valid optional IN params per the servicedef), 
producing narrower result sets than the original minilang, which explicitly 
copied only partyIdFrom, partyIdTo, roleTypeIdFrom, roleTypeIdTo, statusId, 
priorityTypeId, and partyRelationshipTypeId
    - getPartyNameForDate reassigns person to the matching PartyNameHistory 
record when a historical name change applies, then gates the gender result on 
!partyNameHistoryCurrent - a condition that's always false whenever that 
reassignment happened, silently dropping gender (PartyNameHistory has no gender 
field of its own); gender is now captured from the original Person record 
before the reassignment and always used
    
    Each fix was verified against the original minilang and covered by a 
temporary RED/GREEN test before removal, and the party component's test suite 
passes unchanged.
---
 .../org/apache/ofbiz/party/party/PartyServicesScript.groovy  | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyServicesScript.groovy
 
b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyServicesScript.groovy
index 8a912d6e77..7441472003 100644
--- 
a/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyServicesScript.groovy
+++ 
b/applications/party/src/main/groovy/org/apache/ofbiz/party/party/PartyServicesScript.groovy
@@ -76,6 +76,7 @@ Map getPartyNameForDate() {
 
     GenericValue person = from('Person').where(parameters).queryOne()
     GenericValue partyGroup = from('PartyGroup').where(parameters).queryOne()
+    String gender = person?.gender
 
     parameters.compareDate = parameters.compareDate ?: 
UtilDateTime.nowTimestamp()
 
@@ -109,8 +110,8 @@ Map getPartyNameForDate() {
         if (person.suffix) {
             resultMap.suffix = person.suffix
         }
-        if (!partyNameHistoryCurrent && person.gender) {
-            resultMap.gender = person.gender
+        if (gender) {
+            resultMap.gender = gender
         }
 
         resultMap.fullName = PartyHelper.getPartyName(person, 
parameters.lastNameFirst == 'Y')
@@ -193,7 +194,8 @@ Map getPartiesByRelationship() {
     Map resultMap = success()
 
     GenericValue lookupMap = makeValue('PartyRelationship')
-    lookupMap.setAllFields(parameters, false, null, null)
+    lookupMap.setAllFields(parameters.subMap(['partyIdFrom', 'partyIdTo', 
'roleTypeIdFrom', 'roleTypeIdTo',
+                                              'statusId', 'priorityTypeId', 
'partyRelationshipTypeId']), false, null, null)
     List<String> partyIdTos = from('PartyRelationship')
         .where(lookupMap)
         .getFieldList('partyIdTo')
@@ -248,7 +250,7 @@ Map getChildRoleTypes () {
 
     Map res = getChildRoleTypesInline([parameters.roleTypeId])
 
-    resultMap.childRoleTypeIdList = res.childRoleTypeIdList
+    resultMap.childRoleTypeIdList = [parameters.roleTypeId] + 
(res.childRoleTypeIdList ?: [])
     return resultMap
 }
 
@@ -902,7 +904,7 @@ Map followPartyRelationshipsInlineRecurse (List 
relatedPartyIdList, List roleTyp
                         .cache(useCache == 'Y')
                         .queryList()
                 partyRelationshipList.findAll { partyRel ->
-                    !relatedPartyIdList.contains(partyRel.partyFrom) && 
!newRelatedPartyIdList.contains(partyRel.partyIdFrom) }.each {
+                    !relatedPartyIdList.contains(partyRel.partyIdFrom) && 
!newRelatedPartyIdList.contains(partyRel.partyIdFrom) }.each {
                     newRelatedPartyIdList << it.partyIdFrom
                 }
             }

Reply via email to