From e1522149ad5e846ff3856b71e8c877b4cdc78207 Mon Sep 17 00:00:00 2001 From: Matt Blenkinsop Date: Tue, 6 Dec 2022 16:48:45 +0000 Subject: [PATCH] Bug 30642: Record renewal type A requirement has been requested to record whether a renewal was done manually or automatically. A column has been added to the checkout_renewals table in the database to record this and a check is now in place to determine whether the renewal was manual or automatic. Test plan: 1) In the database shell run "show columns from checkout_renewals;" and observe that there is currently no column for recording the type of renewal 2) Apply patch 3) In the shell run "dbic" and "perl installer/data/mysql/updatedatabase.pl" to update the database schema with the new column. 4) Create some checkouts 5) Renew some checkouts manually and observe in the database that there is now a column called "renewal_type" that will have recorded these as "Manual" 6) Create some checkouts that can be automatically renewed 7) Run the cron script in automatic_renewals.pl and observe that there are now also entries with a renewal_type of "Automatic" --- C4/Circulation.pm | 6 +++++- Koha/Schema/Result/CheckoutRenewal.pm | 14 ++++++++++++-- .../atomicupdate/bug_30642-add_renewal_type.pl | 18 ++++++++++++++++++ installer/data/mysql/kohastructure.sql | 1 + 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_30642-add_renewal_type.pl diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 336ce9490a..14810cdbab 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -3048,6 +3048,9 @@ sub AddRenewal { my $issue = $item_object->checkout; my $item_unblessed = $item_object->unblessed; + my ($package, $filename, $line) = caller; + my $renewal_type = $filename eq "automatic_renewals.pl" ? "Automatic" : "Manual"; + my $dbh = C4::Context->dbh; return unless $issue; @@ -3185,7 +3188,8 @@ sub AddRenewal { checkout_id => $issue->issue_id, renewer_id => C4::Context->userenv ? C4::Context->userenv->{'number'} : undef, seen => $seen, - interface => C4::Context->interface + interface => C4::Context->interface, + renewal_type => $renewal_type } )->store(); diff --git a/Koha/Schema/Result/CheckoutRenewal.pm b/Koha/Schema/Result/CheckoutRenewal.pm index bf3cbe1883..9efbd93630 100644 --- a/Koha/Schema/Result/CheckoutRenewal.pm +++ b/Koha/Schema/Result/CheckoutRenewal.pm @@ -69,6 +69,14 @@ the interface this renewal took place on the date and time the renewal took place +=head2 renewal_type + + data_type: 'varchar' + is_nullable: 0 + size: 9 + +whether the renewal was an automatic or manual renewal + =cut __PACKAGE__->add_columns( @@ -89,6 +97,8 @@ __PACKAGE__->add_columns( default_value => \"current_timestamp", is_nullable => 0, }, + "renewal_type", + { data_type => "varchar", is_nullable => 0, size => 9 }, ); =head1 PRIMARY KEY @@ -126,8 +136,8 @@ __PACKAGE__->belongs_to( ); -# Created by DBIx::Class::Schema::Loader v0.07049 @ 2022-04-27 19:43:17 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:7mjiEx634L5FZyjroACUkg +# Created by DBIx::Class::Schema::Loader v0.07049 @ 2022-12-06 16:44:53 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:BcbN0Iceh09H2DWEA6CDwA =head2 checkout diff --git a/installer/data/mysql/atomicupdate/bug_30642-add_renewal_type.pl b/installer/data/mysql/atomicupdate/bug_30642-add_renewal_type.pl new file mode 100644 index 0000000000..0ccabec1e0 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_30642-add_renewal_type.pl @@ -0,0 +1,18 @@ +use Modern::Perl; + +return { + bug_number => "BUG_30642", + description => "Record whether a renewal has been done manually or automatically.", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + + if( !column_exists( 'checkout_renewals', 'renewal_type' ) ) { + $dbh->do(q{ + ALTER TABLE checkout_renewals ADD COLUMN `renewal_type` varchar(9) NOT NULL AFTER `timestamp` + }); + + say $out "Added column 'checkout_renewals.column_name'"; + } + }, +}; \ No newline at end of file diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index d831006cd5..79c01db489 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1711,6 +1711,7 @@ CREATE TABLE `checkout_renewals` ( `seen` tinyint(1) DEFAULT 0 COMMENT 'boolean denoting whether the item was present or not', `interface` varchar(16) NOT NULL COMMENT 'the interface this renewal took place on', `timestamp` timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'the date and time the renewal took place', + `renewal_type` varchar(9) NOT NULL COMMENT 'whether the renewal was an automatic or manual renewal', PRIMARY KEY (`renewal_id`), KEY `renewer_id` (`renewer_id`), CONSTRAINT `renewals_renewer_id` FOREIGN KEY (`renewer_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE -- 2.37.1 (Apple Git-137.1)