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 <veron@veron.ch>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
}
}
}
- # 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";
}