From 81998d617ee5ab811740289cdcbea3f3c4bc936d Mon Sep 17 00:00:00 2001
From: Liz Rea <wizzyrea@gmail.com>
Date: Mon, 5 Aug 2019 22:39:37 +0000
Subject: [PATCH] Bug 23431: Don't nullify DOB if it's hidden by sysprefs

To test:

Turn on  OPACPatronDetails
put dateofbirth in PatronSelfModificationBorrowerUnwantedField
Have a patron with a set date of birth
Attempt any modification on that patron through the OPAC
The date of birth will be one of the fields changed for that borrower
when you check it in the staff intranet.

Apply this patch, repeat the above.
Date of birth will not be one of the changed fields.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
---
 opac/opac-memberentry.pl | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl
index db8a6acbef9..11a7ae2ae4c 100755
--- a/opac/opac-memberentry.pl
+++ b/opac/opac-memberentry.pl
@@ -481,13 +481,17 @@ sub ParseCgiForBorrower {
 
 sub DelUnchangedFields {
     my ( $borrowernumber, %new_data ) = @_;
-
+    # get the mandatory fields so we can get the hidden fields
+    my $mandatory = GetMandatoryFields('edit');
     my $patron = Koha::Patrons->find( $borrowernumber );
     my $current_data = $patron->unblessed;
+    # get the hidden fields so we don't obliterate them should they have data patrons aren't allowed to modify
+    my $hidden_fields = GetHiddenFields($mandatory, 'edit');
+
 
     foreach my $key ( keys %new_data ) {
-        if ( $current_data->{$key} eq $new_data{$key} ) {
-            delete $new_data{$key};
+        if ( ($current_data->{$key} eq $new_data{$key}) || $hidden_fields->{$key} ) {
+           delete $new_data{$key};
         }
     }
 
-- 
2.11.0