bug 3159: allow editing child patron that has no valid guarantor

If a patron with a child patron category is not linked
to a guarantor (or a valid one), it was not possible to edit
the child patron's record.  When attempt, no changes were saved
and the following error is recorded in the Apache error log:

memberentry.pl: DBD::mysql::st execute failed: Cannot add or
update a child row: a foreign key constraint
fails (`gmc_koha/borrowers`, CONSTRAINT `borrowers_ibfk_2`
FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)) ...

This patch fixes this bug, allowing a child patron record to be
edited even if it has no guarantor.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
Galen Charlton 2009-04-24 19:46:36 -05:00
parent 1e6b61cdb1
commit e203808549

View file

@ -186,21 +186,27 @@ if (($op eq 'insert') and !$nodouble){
}
#recover all data from guarantor address phone ,fax...
if (defined($guarantorid) and ($category_type eq 'C' || $category_type eq 'P') and $guarantorid ne '' ){
my $guarantordata=GetMember($guarantorid);
if ( defined($guarantorid) and
( $category_type eq 'C' || $category_type eq 'P' ) and
$guarantorid ne '' and
$guarantorid ne '0' ) {
if (my $guarantordata=GetMember($guarantorid)) {
$guarantorinfo=$guarantordata->{'surname'}." , ".$guarantordata->{'firstname'};
if (!defined($data{'contactname'}) or $data{'contactname'} eq '' or $data{'contactname'} ne $guarantordata->{'surname'}) {
if ( !defined($data{'contactname'}) or $data{'contactname'} eq '' or
$data{'contactname'} ne $guarantordata->{'surname'} ) {
$newdata{'contactfirstname'}= $guarantordata->{'firstname'};
$newdata{'contactname'} = $guarantordata->{'surname'};
$newdata{'contacttitle'} = $guarantordata->{'title'};
foreach (qw(streetnumber address streettype address2 zipcode city phone phonepro mobile fax email emailpro branchcode)) {
foreach (qw(streetnumber address streettype address2
zipcode city phone phonepro mobile fax email emailpro branchcode)) {
$newdata{$_} = $guarantordata->{$_};
}
}
}
}
###############test to take the right zipcode and city name ##############
if (!defined($guarantorid) or $guarantorid eq '') {
if (!defined($guarantorid) or $guarantorid eq '' or $guarantorid eq '0') {
# set only if parameter was passed from the form
$newdata{'city'} = $input->param('city') if defined($input->param('city'));
$newdata{'zipcode'} = $input->param('zipcode') if defined($input->param('zipcode'));