Bugzilla – Attachment 142738 Details for
Bug 27920
Add ability to update patron expiration dates when importing patrons
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 27920: Add ability to update patron expiration dates when importing patrons
Bug-27920-Add-ability-to-update-patron-expiration-.patch (text/plain), 9.92 KB, created by
Katrin Fischer
on 2022-10-27 21:37:05 UTC
(
hide
)
Description:
Bug 27920: Add ability to update patron expiration dates when importing patrons
Filename:
MIME Type:
Creator:
Katrin Fischer
Created:
2022-10-27 21:37:05 UTC
Size:
9.92 KB
patch
obsolete
>From 34eca7f558294df776f3f3a9fd24b5959c9aaa9f Mon Sep 17 00:00:00 2001 >From: Kyle Hall <kyle@bywatersolutions.com> >Date: Wed, 3 Aug 2022 07:13:49 -0400 >Subject: [PATCH] Bug 27920: Add ability to update patron expiration dates when > importing patrons > >Some libraries need to recalculate a patron's expiration date any time they are updated via a patron import from file. > >Test Plan: >1) Apply this patch >2) prove t/db_dependent/Koha/Patrons/Import.t > >Signed-off-by: David Nind <david@davidnind.com> >--- > Koha/Patrons/Import.pm | 5 ++++- > .../prog/en/modules/tools/import_borrowers.tt | 12 +++++++++++- > misc/import_patrons.pl | 16 +++++++++++++++- > t/db_dependent/Koha/Patrons/Import.t | 10 ++++++++-- > tools/import_borrowers.pl | 4 ++++ > 5 files changed, 42 insertions(+), 5 deletions(-) > >diff --git a/Koha/Patrons/Import.pm b/Koha/Patrons/Import.pm >index 7d661a4228..6f62cc1a37 100644 >--- a/Koha/Patrons/Import.pm >+++ b/Koha/Patrons/Import.pm >@@ -79,6 +79,8 @@ sub import_patrons { > my $send_welcome = $params->{send_welcome}; > my $extended = C4::Context->preference('ExtendedPatronAttributes'); > my $set_messaging_prefs = C4::Context->preference('EnhancedMessagingPreferences'); >+ my $update_dateexpiry = $params->{update_dateexpiry}; >+ my $update_dateexpiry_from_today = $params->{update_dateexpiry_from_today}; > > my $schema = Koha::Database->new->schema; > $schema->storage->txn_begin if $dry_run; >@@ -171,7 +173,8 @@ sub import_patrons { > > # Default date enrolled and date expiry if not already set. > $borrower{dateenrolled} = $self->today_iso() unless $borrower{dateenrolled}; >- $borrower{dateexpiry} = Koha::Patron::Categories->find( $borrower{categorycode} )->get_expiry_date( $borrower{dateenrolled} ) unless $borrower{dateexpiry}; >+ my $expiration_start_date = $update_dateexpiry_from_today ? dt_from_string : $borrower{dateenrolled}; >+ $borrower{dateexpiry} = Koha::Patron::Categories->find( $borrower{categorycode} )->get_expiry_date( $expiration_start_date ) if $update_dateexpiry; > > my $borrowernumber; > my ( $member, $patron ); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt >index b96320a0b7..3690784018 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt >@@ -323,7 +323,15 @@ > <li> > <input class="overwrite_passwords" type="checkbox" id="overwrite_passwords" name="overwrite_passwords" disabled/> > <label class="overwrite_passwords" for="overwrite_passwords">Replace patron passwords with those in the file (blank passwords will be ignored)</label> >- </li >+ </li> >+ <li> >+ <input class="update_dateexpiry" type="checkbox" id="update_dateexpiry" name="update_dateexpiry" disabled/> >+ <label class="update_dateexpiry" for="update_dateexpiry">Update existing patron expiration dates.</label> >+ </li> >+ <li> >+ <input class="update_dateexpiry_from_today" type="checkbox" id="update_dateexpiry_from_today" name="update_dateexpiry_from_today" disabled/> >+ <label class="update_dateexpiry_from_today" for="update_dateexpiry_from_today">Update patron's expiration date based on the current date instead of the patron's enrollment date</label> >+ </li> > </ul> > </li> > </ol> >@@ -443,9 +451,11 @@ you can supply dates in ISO format (e.g., '2010-10-28'). > > $("#overwrite_cardnumberno").click(function(){ > $("#overwrite_passwords").prop('checked',false).prop('disabled',true); >+ $("#update_dateexpiry").prop('checked',false).prop('disabled',true); > }); > $("#overwrite_cardnumberyes").click(function(){ > $("#overwrite_passwords").prop('disabled',false); >+ $("#update_dateexpiry").prop('disabled',false); > }); > </script> > [% END %] >diff --git a/misc/import_patrons.pl b/misc/import_patrons.pl >index 6dc037d6bb..910a1438c7 100755 >--- a/misc/import_patrons.pl >+++ b/misc/import_patrons.pl >@@ -37,6 +37,8 @@ my $confirm; > my $verbose = 0; > my $help; > my @preserve_fields; >+my $update_dateexpiry; >+my $update_dateexpiry_from_today; > > GetOptions( > 'c|confirm' => \$confirm, >@@ -45,6 +47,8 @@ GetOptions( > 'd|default=s' => \%defaults, > 'o|overwrite' => \$overwrite_cardnumber, > 'op|overwrite_passwords' => \$overwrite_passwords, >+ 'ue|update-expiration' => \$update_dateexpiry, >+ 'et|expiration-from-today' => \$update_dateexpiry_from_today, > 'en|email-new' => \$welcome_new, > 'p|preserve-extended-attributes' => \$ext_preserve, > 'pf|preserve-field=s' => \@preserve_fields, >@@ -70,6 +74,8 @@ my $return = $Import->import_patrons( > overwrite_passwords => $overwrite_passwords, > preserve_extended_attributes => $ext_preserve, > preserve_fields => \@preserve_fields, >+ update_dateexpiry => $update_dateexpiry >+ update_dateexpiry_from_today => $update_dateexpiry_from_today > send_welcome => $welcome_new, > dry_run => !$confirm, > } >@@ -110,7 +116,7 @@ import_patrons.pl - CLI script to import patrons data into Koha > > =head1 SYNOPSIS > >-import_patrons.pl --file /path/to/patrons.csv --matchpoint cardnumber --confirm [--default branchcode=MPL] [--overwrite] [--preserve_field <column>] [--preserve-extended-attributes] [--verbose] >+import_patrons.pl --file /path/to/patrons.csv --matchpoint cardnumber --confirm [--default branchcode=MPL] [--overwrite] [--preserve_field <column>] [--preserve-extended-attributes] [--update-expiration] [--verbose] > > =head1 OPTIONS > >@@ -152,6 +158,14 @@ Retain extended patron attributes for existing patrons being overwritten > > Send the WELCOME notice email to new users > >+=item B<-ue|--update-expiration> >+ >+If a matching patron is found, extend the expiration date of their account using the patron's enrollment date as the base >+ >+=item B<-et|--expiration-from-today> >+ >+If a matching patron is found, extend the expiration date of their account using the patron's enrollment date as the base >+ > =item B<-v|--verbose> > > Be verbose >diff --git a/t/db_dependent/Koha/Patrons/Import.t b/t/db_dependent/Koha/Patrons/Import.t >index bf16c1e118..aaaf167213 100755 >--- a/t/db_dependent/Koha/Patrons/Import.t >+++ b/t/db_dependent/Koha/Patrons/Import.t >@@ -18,7 +18,7 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > > use Modern::Perl; >-use Test::More tests => 174; >+use Test::More tests => 176; > use Test::Warn; > use Test::Exception; > use Encode qw( encode_utf8 ); >@@ -28,6 +28,7 @@ use utf8; > use Test::MockModule; > use Koha::Database; > use Koha::Patron::Relationships; >+use Koha::DateUtils qw(dt_from_string); > > use File::Temp qw(tempfile tempdir); > my $temp_dir = tempdir('Koha_patrons_import_test_XXXX', CLEANUP => 1, TMPDIR => 1); >@@ -189,7 +190,10 @@ is($result_3a->{overwritten}, 1, 'Got the expected 1 overwritten result from imp > # overwrite but firstname is not > my $filename_3c = make_csv($temp_dir, $csv_headers, $csv_one_line_b); > open(my $handle_3c, "<", $filename_3c) or die "cannot open < $filename_3: $!"; >-my $params_3c = { file => $handle_3c, matchpoint => 'cardnumber', overwrite_cardnumber => 1, preserve_fields => [ 'firstname' ] }; >+my $params_3c = { file => $handle_3c, matchpoint => 'cardnumber', overwrite_cardnumber => 1, preserve_fields => [ 'firstname' ], update_dateexpiry => 1, update_dateexpiry_from_today => 1 }; >+ >+my $patron_3 = Koha::Patrons->find({ cardnumber => '1000' }); >+is( $patron_3->dateexpiry, '2015-07-01', "Expiration date is correct with update_dateexpiry = false" ); > > # When ... > my $result_3c; >@@ -211,6 +215,8 @@ is($result_3c->{invalid}, 0, 'Got the expected 0 invalid result from import_patr > is($result_3c->{overwritten}, 1, 'Got the expected 1 overwritten result from import_patrons that matched'); > > my $patron_3c = Koha::Patrons->find({ cardnumber => '1000' }); >+is( $patron_3c->dateexpiry, dt_from_string->add( months => 99, end_of_month => 'limit' )->ymd, "Expiration date is correct with update_dateexpiry = true" ); >+ > is( $patron_3c->surname, "Nancy2", "Surname field is preserved from original" ); > is( $patron_3c->firstname, "Jenkins", "Firstname field is overwritten" ); > >diff --git a/tools/import_borrowers.pl b/tools/import_borrowers.pl >index 995801cb47..da932523b4 100755 >--- a/tools/import_borrowers.pl >+++ b/tools/import_borrowers.pl >@@ -114,6 +114,8 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) { > my $handle = $input->upload('uploadborrowers'); > my %defaults = $input->Vars; > my $overwrite_passwords = defined $input->param('overwrite_passwords') ? 1 : 0; >+ my $update_dateexpiry = defined $input->param('update_dateexpiry') ? 1 : 0; >+ my $update_dateexpiry_from_today = defined $input->param('update_dateexpiry_from_today') ? 1 : 0; > my $return = $Import->import_patrons( > { > file => $handle, >@@ -123,6 +125,8 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) { > overwrite_passwords => $overwrite_passwords, > preserve_extended_attributes => scalar $input->param( 'ext_preserve' ) || 0, > preserve_fields => \@preserve_fields, >+ update_dateexpiry => $update_dateexpiry, >+ update_dateexpiry_from_today => $update_dateexpiry_from_today, > send_welcome => $welcome_new, > } > ); >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 27920
:
118079
|
119234
|
120940
|
120951
|
121885
|
121886
|
138524
|
139017
|
139018
|
139019
|
142176
|
142178
| 142738 |
142739
|
142740
|
142741
|
142742
|
142743
|
142744