Bug 18555: Create patron list from patron import
authorMarc Véron <veron@veron.ch>
Mon, 8 May 2017 14:18:41 +0000 (16:18 +0200)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 10 Aug 2017 19:25:32 +0000 (16:25 -0300)
Create a patron list from imported patrons to be used for printing patron
cards and other patron list related actions.

To test:
- Apply patch
- Go to Home > Tools > Import patrons
- Select a file to import and check new checkbox 'Create patron list'
- Import file
- Verify that in import results you see the time stamped name of the
  patronlist containig the imported patrons (if any patrons were imported)
- Go to Home > Tools > Patron lists
- Verify that the list shows up and contains the imported patrons

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt
tools/import_borrowers.pl

index ea3a3c9..7e8245d 100644 (file)
@@ -37,6 +37,9 @@
 <h5>Import results :</h5>
 <ul>
        <li>[% imported %] imported records [% IF ( lastimported ) %](last was [% lastimported %])[% END %]</li>
+        [% IF imported and patronlistname %]
+            <li>Patronlist with imported patrons: [% patronlistname %]</li>
+        [% END %]
        <li>[% overwritten %] overwritten [% IF ( lastoverwritten ) %](last was [% lastoverwritten %])[% END %]</li>
        <li>[% alreadyindb %] not imported because already in borrowers table and overwrite disabled [% IF ( lastalreadyindb ) %](last was [% lastalreadyindb %])[% END %]</li>
        <li>[% invalid %] not imported because they are not in the expected format [% IF ( lastinvalid ) %](last was [% lastinvalid %])[% END %]</li>
                <label for="uploadborrowers">Select the file to import: </label>
                <input type="file" id="uploadborrowers" name="uploadborrowers" />
        </li>
+        <li>
+            <label for "createpatronlist">Create patron list: </label>
+            <input name="createpatronlist" id="createpatronlist" value="1" type="checkbox">
+            <span class="hint">List name will be file name with timestamp</span>
+        </li>
+
 </ol></fieldset>
     <fieldset class="rows">
         <legend>Field to use for record matching</legend>
index 66190e2..b693017 100755 (executable)
@@ -52,6 +52,7 @@ use Koha::DateUtils;
 use Koha::Token;
 use Koha::Libraries;
 use Koha::Patron::Categories;
+use Koha::List::Patron;
 
 use Text::CSV;
 # Text::CSV::Unicode, even in binary mode, fails to parse lines with these diacriticals:
@@ -105,6 +106,12 @@ if ($matchpoint) {
 }
 my $overwrite_cardnumber = $input->param('overwrite_cardnumber');
 
+#create a patronlist
+my $createpatronlist = $input->param('createpatronlist') || 0;
+my $dt = dt_from_string();
+my $timestamp = $dt->ymd('-').' '.$dt->hms(':');
+my $patronlistname = $uploadborrowers . ' (' . $timestamp .')';
+
 $template->param( SCRIPT_NAME => '/cgi-bin/koha/tools/import_borrowers.pl' );
 
 if ( $uploadborrowers && length($uploadborrowers) > 0 ) {
@@ -114,13 +121,21 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) {
             token  => scalar $input->param('csrf_token'),
         });
 
+    #create a patronlist
+    my $createpatronlist = $input->param('createpatronlist');
+    my $dt = dt_from_string();
+    my $timestamp = $dt->ymd('-').' '.$dt->hms(':');
+    my $patronlistname = $uploadborrowers. ' (' . $timestamp .')';
+
     push @feedback, {feedback=>1, name=>'filename', value=>$uploadborrowers, filename=>$uploadborrowers};
     my $handle = $input->upload('uploadborrowers');
     my $uploadinfo = $input->uploadInfo($uploadborrowers);
     foreach (keys %$uploadinfo) {
         push @feedback, {feedback=>1, name=>$_, value=>$uploadinfo->{$_}, $_=>$uploadinfo->{$_}};
     }
+
     my $imported    = 0;
+    my @imported_borrowers;
     my $alreadyindb = 0;
     my $overwritten = 0;
     my $invalid     = 0;
@@ -356,6 +371,7 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) {
 
                 $imported++;
                 $template->param('lastimported'=>$borrower{'surname'}.' / '.$borrowernumber);
+                push @imported_borrowers, $borrowernumber; #for patronlist
             } else {
                 $invalid++;
                 push @errors, {unknown_error => 1};
@@ -363,6 +379,13 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) {
             }
         }
     }
+
+    if ( $imported && $createpatronlist ) {
+        my $patronlist = AddPatronList({ name => $patronlistname });
+        AddPatronsToList({ list => $patronlist, borrowernumbers => \@imported_borrowers });
+        $template->param('patronlistname' => $patronlistname);
+    }
+
     (@errors  ) and $template->param(  ERRORS=>\@errors  );
     (@feedback) and $template->param(FEEDBACK=>\@feedback);
     $template->param(