From b8f1b0e73d8a0b9562361b983a38d9eafcf202eb Mon Sep 17 00:00:00 2001 From: Maryse Simard Date: Fri, 2 Oct 2020 00:02:38 -0400 Subject: [PATCH] Bug 12446: Ability to allow guarantor relationship for all patron category types This adds a new field "Can be guarantee" to patron categories so it becomes possible for any category type to have a guarantor. To test: 1) Have a patron category of type 'Adult' and one of type 'Child' 2) Confirm, by searching for the "Patron guarantor" fieldset in the edit/create form, that: => a patron of the first category can't have a guarantor => a patron from the second category can 3) Apply patch and run updatedatabase.pl 4) Edit the categories and note the new "Can be guarantee" field 5) It should have been set to "yes" for the "Child" and to "no" for the "Adult" 5) Repeat step 2. It should behave in the same way. 6) Edit the "Can be guarantee" for any of the category and check that the fieldset only appears when "Can be guarantee" is set to "yes" 7) prove t/db_dependent/Patrons.t => tests should still pass Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: David Nind Signed-off-by: Owen Leonard Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi --- Koha/Patron.pm | 3 +-- admin/categories.pl | 3 +++ installer/data/mysql/atomicupdate/bug_12446.perl | 10 ++++++++++ installer/data/mysql/kohastructure.sql | 3 ++- .../prog/en/includes/members-toolbar.inc | 2 +- .../prog/en/modules/admin/categories.tt | 15 +++++++++++++++ members/memberentry.pl | 3 ++- t/db_dependent/Patrons.t | 9 +++++++-- 8 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_12446.perl diff --git a/Koha/Patron.pm b/Koha/Patron.pm index e677f39e87..b09c9a230c 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -307,8 +307,7 @@ sub store { # Clean up guarantors on category change if required $self->guarantor_relationships->delete - if ( $self->category->category_type ne 'C' - && $self->category->category_type ne 'P' ); + unless ( $self->category->canbeguarantee ); } diff --git a/admin/categories.pl b/admin/categories.pl index e41a28904d..32831bbff9 100755 --- a/admin/categories.pl +++ b/admin/categories.pl @@ -80,6 +80,7 @@ elsif ( $op eq 'add_validate' ) { my $min_password_length = $input->param('min_password_length'); my $require_strong_password = $input->param('require_strong_password'); my @branches = grep { $_ ne q{} } $input->multi_param('branches'); + my $canbeguarantee = $input->param('canbeguarantee'); $reset_password = undef if $reset_password eq -1; $change_password = undef if $change_password eq -1; @@ -112,6 +113,7 @@ elsif ( $op eq 'add_validate' ) { $category->hidelostitems($hidelostitems); $category->overduenoticerequired($overduenoticerequired); $category->category_type($category_type); + $category->canbeguarantee($canbeguarantee); $category->BlockExpiredPatronOpacActions($BlockExpiredPatronOpacActions); $category->checkprevcheckout($checkPrevCheckout); $category->default_privacy($default_privacy); @@ -144,6 +146,7 @@ elsif ( $op eq 'add_validate' ) { hidelostitems => $hidelostitems, overduenoticerequired => $overduenoticerequired, category_type => $category_type, + canbeguarantee => $canbeguarantee, BlockExpiredPatronOpacActions => $BlockExpiredPatronOpacActions, checkprevcheckout => $checkPrevCheckout, default_privacy => $default_privacy, diff --git a/installer/data/mysql/atomicupdate/bug_12446.perl b/installer/data/mysql/atomicupdate/bug_12446.perl new file mode 100644 index 0000000000..9f9e4e5160 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_12446.perl @@ -0,0 +1,10 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + if ( !column_exists( 'categories', 'canbeguarantee') ){ + $dbh->do("ALTER TABLE categories ADD COLUMN `canbeguarantee` tinyint(1) NOT NULL default '0' AFTER `checkprevcheckout`"); + $dbh->do("UPDATE categories SET canbeguarantee = 1 WHERE category_type = 'P' OR category_type = 'C'"); + } + + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 12446 - Ability to allow guarantor relationship for all patron category types)\n"; +} \ No newline at end of file diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 9d2e286c17..8ca69bcc88 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1664,7 +1664,8 @@ CREATE TABLE `categories` ( `BlockExpiredPatronOpacActions` tinyint(1) NOT NULL DEFAULT -1 COMMENT 'wheither or not a patron of this category can renew books or place holds once their card has expired. 0 means they can, 1 means they cannot, -1 means use syspref BlockExpiredPatronOpacActions', `default_privacy` enum('default','never','forever') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'default' COMMENT 'Default privacy setting for this patron category', `checkprevcheckout` varchar(7) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'inherit' COMMENT 'produce a warning for this patron category if this item has previously been checked out to this patron if ''yes'', not if ''no'', defer to syspref setting if ''inherit''.', - `reset_password` tinyint(1) DEFAULT NULL COMMENT 'if patrons of this category can do the password reset flow,', +`canbeguarantee` tinyint(1) NOT NULL default '0', +`reset_password` tinyint(1) DEFAULT NULL COMMENT 'if patrons of this category can do the password reset flow,', `change_password` tinyint(1) DEFAULT NULL COMMENT 'if patrons of this category can change their passwords in the OAPC', `min_password_length` smallint(6) DEFAULT NULL COMMENT 'set minimum password length for patrons in this category', `require_strong_password` tinyint(1) DEFAULT NULL COMMENT 'set required password strength for patrons in this category', diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc index 0bf4625335..2e85df1919 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc @@ -11,7 +11,7 @@ [% IF CAN_user_borrowers_edit_borrowers %] [% IF patron.is_adult AND Koha.Preference("borrowerRelationship") %] - Add guarantee + Add guarantee [% END %] Change password Duplicate diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt index 5ed1aba71a..9204ce6673 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt @@ -219,6 +219,18 @@ Required +
  • + + +