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 e4fb4b7886 Fixed: updatePartyRate does not persist expiry of the 
previous rate (OFBIZ-13590)
e4fb4b7886 is described below

commit e4fb4b7886c32d694da840018927313c93f8aa28
Author: Mridul Pathak <[email protected]>
AuthorDate: Tue Sep 15 18:10:01 2026 +0530

    Fixed: updatePartyRate does not persist expiry of the previous rate 
(OFBIZ-13590)
    
    - The method set partyRate.thruDate = UtilDateTime.nowTimestamp() to expire 
the previously active PartyRate but never called .store(), so the mutation only 
existed in memory and was discarded; multiple "active" PartyRate rows 
accumulated for the same party/rateType since none of the earlier ones actually 
got expired
    - The lookup for that previous PartyRate was also missing filterByDate() 
(present in the original minilang), so getFirst() could pick an already-expired 
row instead of the currently active one to expire
    
    Both fixes were verified against the original minilang and covered by a 
temporary RED/GREEN test before removal, and the accounting component's rate 
test suite passes unchanged.
---
 .../main/groovy/org/apache/ofbiz/accounting/rate/RateServices.groovy   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git 
a/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/rate/RateServices.groovy
 
b/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/rate/RateServices.groovy
index b3b47dc4cb..d883049f50 100644
--- 
a/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/rate/RateServices.groovy
+++ 
b/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/rate/RateServices.groovy
@@ -83,10 +83,11 @@ Map deleteRateAmount() {
 }
 
 Map updatePartyRate() {
-    List<GenericValue> partyRates = from('PartyRate').where([partyId: partyId, 
rateTypeId: rateTypeId]).queryList()
+    List<GenericValue> partyRates = from('PartyRate').where([partyId: partyId, 
rateTypeId: rateTypeId]).filterByDate().queryList()
     if (partyRates) {
         GenericValue partyRate = EntityUtil.getFirst(partyRates)
         partyRate.thruDate = UtilDateTime.nowTimestamp()
+        partyRate.store()
     }
     GenericValue newEntity = delegator.makeValidValue('PartyRate', parameters)
     newEntity.fromDate = newEntity.fromDate ?: UtilDateTime.nowTimestamp()

Reply via email to