From 9a539b34a3bce912e90b8b9ef24b6ba410ceac63 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Fri, 24 Jul 2020 12:18:44 -0400 Subject: [PATCH] Bug 26059: Create guarantor/guarantee links on patron import The change to allow multiple guarantors was meant to maintain the ability to import patrons with a Koha patron guarantor, but is not working as intended. A) Adding the guarantor simply doesn't work B) We have two columns named 'relationship', one for the borrowers table, and one for the guarantor relationships table. This clearly doesn't work and will cause confusion. The one for the guarantor relationships table should be renamed. C) guarantor_firstname and guarantor_surname in the CSV file do nothing and should be removed. This patch also fixes a minor issue that causes warnings like: CGI::param called in list context from /kohadevbox/koha/tools/import_borrowers.pl line 124 Test Plan: 1) Create a CSV with contents like: cardnumber,surname,firstname,branchcode,categorycode,guarantor_relationship,guarantor_id bloop,gloop,froop,MPL,J,father,48 brim,flim,zim,MPL,J,father,48 2) Attempt to upload this file, ensure you have a borrowernumber 48 that can have guarantors 3) Note the accounts are not linked 4) Apply this patch 5) Restart all the things! 6) Upload the file again 7) The patrons should now be linked! 8) Download the starter CSV file 9) Note the second relationship column is now guarantor_relationship 10) Note the columns guarantor_firstname and guarantor_surname are no longer present --- Koha/Patrons/Import.pm | 27 +++++++++++++++++++++------ tools/import_borrowers.pl | 6 +++--- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Koha/Patrons/Import.pm b/Koha/Patrons/Import.pm index adc1d35a2b..1dd4fe7dd6 100644 --- a/Koha/Patrons/Import.pm +++ b/Koha/Patrons/Import.pm @@ -217,9 +217,9 @@ sub import_patrons { next LINE; } - my $relationship = $borrower{relationship}; - my $guarantor_id = $borrower{guarantor_id}; - delete $borrower{relationship}; + my $guarantor_relationship = $borrower{guarantor_relationship}; + delete $borrower{guarantor_relationship}; + my $guarantor_id = $borrower{guarantor_id}; delete $borrower{guarantor_id}; # Remove warning for int datatype that cannot be null @@ -320,6 +320,7 @@ sub import_patrons { Koha::Patron->new(\%borrower)->store; }; unless ( $@ ) { + $borrowernumber = $patron->id; if ( $patron->is_debarred ) { AddDebarment( @@ -370,13 +371,26 @@ sub import_patrons { # Add a guarantor if we are given a relationship if ( $guarantor_id ) { - Koha::Patron::Relationship->new( + my $relationship = Koha::Patron::Relationships->find( { guarantee_id => $borrowernumber, - relationship => $relationship, guarantor_id => $guarantor_id, } - )->store(); + ); + + if ( $relationship ) { + $relationship->relationship( $guarantor_relationship ); + $relationship->store(); + } + else { + Koha::Patron::Relationship->new( + { + guarantee_id => $borrowernumber, + relationship => $guarantor_relationship, + guarantor_id => $guarantor_id, + } + )->store(); + } } } @@ -452,6 +466,7 @@ sub set_column_keys { my @columnkeys = map { $_ ne 'borrowernumber' ? $_ : () } Koha::Patrons->columns(); push( @columnkeys, 'patron_attributes' ) if $extended; + push( @columnkeys, qw( guarantor_relationship guarantor_id ) ); return @columnkeys; } diff --git a/tools/import_borrowers.pl b/tools/import_borrowers.pl index 4da2cd0d03..e07acecdd5 100755 --- a/tools/import_borrowers.pl +++ b/tools/import_borrowers.pl @@ -62,7 +62,7 @@ my $extended = C4::Context->preference('ExtendedPatronAttributes'); my @columnkeys = map { $_ ne 'borrowernumber' ? $_ : () } Koha::Patrons->columns(); push( @columnkeys, 'patron_attributes' ) if $extended; -push( @columnkeys, qw( relationship guarantor_id guarantor_firstname guarantor_surname ) ); +push( @columnkeys, qw( guarantor_relationship guarantor_id ) ); my $input = CGI->new(); @@ -126,8 +126,8 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) { file => $handle, defaults => \%defaults, matchpoint => $matchpoint, - overwrite_cardnumber => $input->param('overwrite_cardnumber'), - preserve_extended_attributes => $input->param('ext_preserve') || 0, + overwrite_cardnumber => scalar $input->param('overwrite_cardnumber'), + preserve_extended_attributes => scalar $input->param('ext_preserve') || 0, } ); -- 2.24.1 (Apple Git-126)