From 595c8df72d2f2f0ef2837f3b9368d75c55d597af Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Tue, 20 Jan 2015 16:48:13 +0200 Subject: [PATCH] Bug 13602 - Username/password already exists when editing borrower attributes and messaging preferences MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When editing a Patron's messaging preferences or borrower attributes, one cannot save changes because 'userid' is not given as a parameter. It shouldn't, but the Check_Userid($newdata{'userid'},$borrowernumber) -check must have it. REPLICATE THE ISSUE: 1. Find a Borrower. 2. Go to the details-tab. 3. Under "Patron messaging preferences" click edit to edit just the messaging preferences. 4. Just save, no need to make any modifications. 5. Observe the error "Username/password already exists" This happens to all/most of the sub-forms in the Borrower's Details-view. AFTER THIS PATCH: Check_Userid() get the $userid from the new parameters, or if not present, from the koha.borrowers-table. TEST FOR REGRESSION: 1. Edit a borrower normally. Notice no errors. 2. Edit a sub-form (Alternate address/Patron messaging preferences). Notice no errors. DISCLAIMER: You are free to steal/rip/modify/hack this patch to your soul's extent without my permission. As long as it makes to Koha I am happy. Works as expected. Signed-off-by: Marc Véron Signed-off-by: Katrin Fischer Signed-off-by: Mason James --- members/memberentry.pl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/members/memberentry.pl b/members/memberentry.pl index 989b35b245..3253171f89 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -324,8 +324,10 @@ if ($op eq 'save' || $op eq 'insert'){ } } } - # Check if the userid is unique - unless (Check_Userid($newdata{'userid'},$borrowernumber)) { + # Check if the userid is unique. Userid might not always be present in the edited values list when editing certain sub-forms, so we need to dig for it a bit. + my $userid = $newdata{'userid'}; + $userid = $borrower_data->{userid} unless $userid; #Get the userid straight from the DB + unless (Check_Userid($userid,$borrowernumber)) { push @errors, "ERROR_login_exist"; } -- 2.39.5