From de410724c8c681066a429aa6f5cf9023fdf2c796 Mon Sep 17 00:00:00 2001
From: Fridolin Somers <fridolin.somers@biblibre.com>
Date: Thu, 14 Mar 2024 16:37:21 +0100
Subject: [PATCH] Bug 36321: Problem when dateexpiry in BorrowerUnwantedField

hen dateexpiry is in BorrowerUnwantedField it is hidden in patron edition form.
The problem is when editing an existing patron the value is re-computed with category settings, as if it where empty.

This comes from all fields in BorrowerUnwantedField beeing removed from %newdata in memberentry.pl.
Whe must skip dateexpiry.

Test plan :
1) Be sure dateexpiry is not in BorrowerUnwantedField
2) Define a patron category with enrollment period 12 month
3) Create a new patron in this category
4) Its expiration date is in now + 12 month
5) Edit the patron category to set enrollment period 6 month
6) Add dateexpiry in BorrowerUnwantedField
7) Edit the patron and save
=> Without patch the expiration date is changed to now + 6 month
=> With patch the exporation date is unchanged
---
 members/memberentry.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/members/memberentry.pl b/members/memberentry.pl
index d95ff99012..7c0fa97ecf 100755
--- a/members/memberentry.pl
+++ b/members/memberentry.pl
@@ -234,7 +234,7 @@ if ( $op eq 'cud-insert' || $op eq 'edit_form' || $op eq 'cud-save' || $op eq 'd
         qr/^guarantor_surname$/,
         qr/^delete_guarantor$/,
     );
-    push @keys_to_delete, map { qr/^$_$/ } split( /\s*\|\s*/, C4::Context->preference('BorrowerUnwantedField') || q{} );
+    push @keys_to_delete, map { qr/^$_$/ } grep { $_ ne 'dateexpiry' } split( /\s*\|\s*/, C4::Context->preference('BorrowerUnwantedField') || q{} );
     push @keys_to_delete, qr/^password_expiration_date$/ unless $CanUpdatePasswordExpiration;
     for my $regexp (@keys_to_delete) {
         for (keys %newdata) {
-- 
2.44.0