From f6989d16818934890a7c254ee63b8c8514e62224 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 11 May 2017 00:44:12 +0000 Subject: [PATCH] Bug 18626 - Add ability to track cardnumber changes for patrons Some libraries want to keep a history of cardnumber changes for a patron. This is a feature that another ILS has. Test Plan: 1) Apply this patch 2) Enable the BorrowersLog 3) Modify a patron, update his or her cardnumber 4) Notice the entry in the action log containing the old and new cardnumbers 5) Edit a patron, leave the cardnumber the same 6) Note there is no cardnumber change entry in the action logs 7) Disable BorrowersLog, modify a patron cardnumber 8) Note there is no cardnumber change entry in teh action logs --- C4/Members.pm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/C4/Members.pm b/C4/Members.pm index b61f0b1..0dd107a 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -26,6 +26,7 @@ use C4::Context; use String::Random qw( random_string ); use Scalar::Util qw( looks_like_number ); use Date::Calc qw/Today check_date Date_to_Days/; +use JSON qw(to_json); use C4::Log; # logaction use C4::Overdues; use C4::Reserves; @@ -392,6 +393,25 @@ sub ModMember { my $patron = Koha::Patrons->find( $new_borrower->{borrowernumber} ); + my $borrowers_log = C4::Context->preference("BorrowersLog"); + if ( $borrowers_log && $patron->cardnumber ne $new_borrower->{cardnumber} ) + { + logaction( + "MEMBERS", + "MODIFY", + $data{'borrowernumber'}, + to_json( + { + cardnumber_replaced => { + previous_cardnumber => $patron->cardnumber, + new_cardnumber => $new_borrower->{cardnumber}, + } + }, + { utf8 => 1, pretty => 1 } + ) + ); + } + delete $new_borrower->{userid} if exists $new_borrower->{userid} and not $new_borrower->{userid}; my $execute_success = $patron->store if $patron->set($new_borrower); @@ -423,7 +443,7 @@ sub ModMember { Koha::NorwegianPatronDB::NLSync({ 'borrowernumber' => $data{'borrowernumber'} }); } - logaction("MEMBERS", "MODIFY", $data{'borrowernumber'}, "UPDATE (executed w/ arg: $data{'borrowernumber'})") if C4::Context->preference("BorrowersLog"); + logaction("MEMBERS", "MODIFY", $data{'borrowernumber'}, "UPDATE (executed w/ arg: $data{'borrowernumber'})") if $borrowers_log; } return $execute_success; } -- 2.1.4