@@ -, +, @@ modification --- .../prog/en/modules/tools/modborrowers.tt | 42 +++++++++++-- tools/modborrowers.pl | 68 ++++++++++++++++------ 2 files changed, 88 insertions(+), 22 deletions(-) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/modborrowers.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/modborrowers.tt @@ -29,9 +29,16 @@

Batch patron modification

- Use a file + Use a file of cardnumbers
    -
  1. +
  2. +
+
+ +
+ Use a file of SMS numbers +
    +
@@ -61,6 +68,17 @@ + +
+ Or list SMS numbers one by one +
    +
  1. + + +
  2. +
+
+
@@ -69,11 +87,11 @@ [% END %] - [% IF ( op == 'show') && (!borrowers) && (!notfoundcardnumbers) # Alert if no patrons given%] + [% IF ( op == 'show') && (!borrowers) && (!notfoundcardnumbers) && (!notfoundsmsnumbers) # Alert if no patrons given%] [% op = 'noshow' # Change op to prevent display in code below %]

Batch patrons modification

-

No patron card numbers given.

+

No patron card numbers/SMS numbers given.

@@ -100,6 +118,21 @@ [% END %] + [% IF ( notfoundsmsnumbers ) %] +

Warning, the following sms numbers were not found:

+ + + + + + [% FOREACH notfoundsmsnumber IN notfoundsmsnumbers %] + + [% END %] + +
SMS numbers not found
[% notfoundsmsnumber.smsalertnumber | html %]
+ [% END %] + + [% IF ( op == 'show_results' ) %] [% IF ( errors ) %]
@@ -109,6 +142,7 @@ [% IF ( error.error == 'can_not_update' ) %]
  • Can not update patron. [% IF ( error.cardnumber ) %] Cardnumber: [% error.cardnumber | html %] [% END %] + [% IF ( error.smsnumber ) %] SMS number: [% error.smsnumber | html %] [% END %] (Borrowernumber: [% error.borrowernumber | html %])
  • [% ELSE %] --- a/tools/modborrowers.pl +++ a/tools/modborrowers.pl @@ -60,48 +60,77 @@ my $dbh = C4::Context->dbh; # Show borrower informations if ( $op eq 'show' ) { - my $filefh = $input->upload('uploadfile'); + my $cardnumberfilefh = $input->upload('uploadcardnumberfile'); + my $smsnumberfilefh = $input->upload('uploadsmsnumberfile'); my $filecontent = $input->param('filecontent'); my $patron_list_id = $input->param('patron_list_id'); my @borrowers; my @cardnumbers; - my ( @notfoundcardnumbers, @from_another_group_of_libraries ); + my @smsnumbers; + my ( @notfoundcardnumbers, @notfoundsmsnumbers, @from_another_group_of_libraries ); # Get cardnumbers from a file or the input area my @contentlist; - if ($filefh) { - while ( my $content = <$filefh> ) { + if ($cardnumberfilefh) { + while ( my $content = <$cardnumberfilefh> ) { $content =~ s/[\r\n]*$//g; push @cardnumbers, $content if $content; } + } elsif ( $smsnumberfilefh ) { + while ( my $content = <$smsnumberfilefh> ) { + $content =~ s/[\r\n]*$//g; + push @smsnumbers, $content if $content; + } } elsif ( $patron_list_id ) { my ($list) = GetPatronLists( { patron_list_id => $patron_list_id } ); @cardnumbers = $list->patron_list_patrons()->search_related('borrowernumber') ->get_column('cardnumber')->all(); - + @smsnumbers = + $list->patron_list_patrons()->search_related('borrowernumber') + ->get_column('smsalertnumber')->all(); } else { - if ( my $list = $input->param('cardnumberlist') ) { - push @cardnumbers, split( /\s\n/, $list ); + if ( my $cardnumberlist = $input->param('cardnumberlist') ) { + push @cardnumbers, split( /\s\n/, $cardnumberlist ); + } elsif ( my $smsnumberlist = $input->param('smsnumberlist') ) { + push @smsnumbers, split( /\s\n/, $smsnumberlist ); } } my $max_nb_attr = 0; - for my $cardnumber ( @cardnumbers ) { - my $patron = Koha::Patrons->find( { cardnumber => $cardnumber } ); - if ( $patron ) { - if ( $logged_in_user->can_see_patron_infos( $patron ) ) { - $patron = $patron->unblessed; - $patron->{patron_attributes} = C4::Members::Attributes::GetBorrowerAttributes( $patron->{borrowernumber} ); - $max_nb_attr = scalar( @{ $patron->{patron_attributes} } ) - if scalar( @{ $patron->{patron_attributes} } ) > $max_nb_attr; - push @borrowers, $patron; + + if ( @cardnumbers ) { + for my $cardnumber ( @cardnumbers ) { + my $patron = Koha::Patrons->find( { cardnumber => $cardnumber } ); + if ( $patron ) { + if ( $logged_in_user->can_see_patron_infos( $patron ) ) { + $patron = $patron->unblessed; + $patron->{patron_attributes} = C4::Members::Attributes::GetBorrowerAttributes( $patron->{borrowernumber} ); + $max_nb_attr = scalar( @{ $patron->{patron_attributes} } ) if scalar( @{ $patron->{patron_attributes} } ) > $max_nb_attr; + push @borrowers, $patron; + } else { + push @notfoundcardnumbers, $cardnumber; + } } else { push @notfoundcardnumbers, $cardnumber; } - } else { - push @notfoundcardnumbers, $cardnumber; + } + } else { + for my $smsnumber (@smsnumbers ) { + my $patron = Koha::Patrons->find( { smsalertnumber => $smsnumber } ); + if ( $patron ) { + if ( $logged_in_user->can_see_patron_infos( $patron ) ) { + $patron = $patron->unblessed; + $patron->{patron_attributes} = C4::Members::Attributes::GetBorrowerAttributes( $patron->{borrowernumber} ); + $max_nb_attr = scalar( @{ $patron->{patron_attributes} } ) if scalar( @{ $patron->{patron_attributes} } ) > $max_nb_attr; + push @borrowers, $patron; + } else { + push @notfoundsmsnumbers, $smsnumber; + } + } else { + push @notfoundsmsnumbers, $smsnumber; + } } } @@ -151,6 +180,9 @@ if ( $op eq 'show' ) { $template->param( borrowers => \@borrowers ); $template->param( attributes_header => \@attributes_header ); @notfoundcardnumbers = map { { cardnumber => $_ } } @notfoundcardnumbers; + @notfoundsmsnumbers = map { { smsalertnumber => $_ } } @notfoundsmsnumbers; + $template->param( notfoundsmsnumbers => \@notfoundsmsnumbers ) if @notfoundsmsnumbers; + $template->param( notfoundcardnumbers => \@notfoundcardnumbers ) if @notfoundcardnumbers; --