From 975c48fb4a9c62376e8f473ca965098e5ec15cd4 Mon Sep 17 00:00:00 2001 From: Bin Wen Date: Wed, 18 Dec 2019 11:52:49 -0500 Subject: [PATCH] Bug 11879: Add a new field to patron record: main contact method This patch adds the "Main Contact Method" field in the borrower modification form. This field is useful for reporting purposes, or to know which contact method to use first when trying to contact a borrower. Test plan: 0) Apply patch 1) updatedatabase.pl 2) In the staff client, edit a patron's contact info. There should be a new dropdown select to choose the main contact method 3) In the opac page, edit the personal details.There should be a new dropdown select to choose the main contact method. 4) Save the form. It should work. Sponsored-by: CCSR ( http://www.ccsr.qc.ca ) Signed-off-by: David Nind Signed-off-by: David Nind Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Jonathan Druart --- .../borrowers_primary_contact_method.perl | 17 ++++++ installer/data/mysql/kohastructure.sql | 3 + .../prog/en/modules/members/memberentrygen.tt | 58 ++++++++++++++++++ .../prog/en/modules/members/moremember.tt | 20 +++++++ .../bootstrap/en/modules/opac-memberentry.tt | 59 +++++++++++++++++++ opac/opac-memberentry.pl | 14 +++++ 6 files changed, 171 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/borrowers_primary_contact_method.perl diff --git a/installer/data/mysql/atomicupdate/borrowers_primary_contact_method.perl b/installer/data/mysql/atomicupdate/borrowers_primary_contact_method.perl new file mode 100644 index 0000000000..e34fc015a2 --- /dev/null +++ b/installer/data/mysql/atomicupdate/borrowers_primary_contact_method.perl @@ -0,0 +1,17 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + if( !column_exists( 'borrowers', 'primary_contact_method' ) ) { + $dbh->do( "ALTER TABLE `borrowers` ADD COLUMN `primary_contact_method` VARCHAR(45) NULL DEFAULT NULL AFTER `anonymized`" ); + } + + if( !column_exists( 'deletedborrowers', 'primary_contact_method' ) ) { + $dbh->do( "ALTER TABLE `deletedborrowers` ADD COLUMN `primary_contact_method` VARCHAR(45) NULL DEFAULT NULL AFTER `anonymized`" ); + } + + if( !column_exists( 'borrower_modifications', 'primary_contact_method' ) ) { + $dbh->do( "ALTER TABLE `borrower_modifications` ADD COLUMN `primary_contact_method` VARCHAR(45) NULL DEFAULT NULL AFTER `gdpr_proc_consent`" ); + } + + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 11879 - Add a new field to patron record: main contact method)\n"; +} diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 5b6dd749ba..70b7e5346e 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1305,6 +1305,7 @@ CREATE TABLE `borrower_modifications` ( `privacy` int(11) DEFAULT NULL, `extended_attributes` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, `gdpr_proc_consent` datetime DEFAULT NULL COMMENT 'data processing consent', + `primary_contact_method` varchar(45) DEFAULT NULL COMMENT 'useful for reporting purposes', PRIMARY KEY (`verification_token`(191),`borrowernumber`), KEY `verification_token` (`verification_token`(191)), KEY `borrowernumber` (`borrowernumber`) @@ -1431,6 +1432,7 @@ CREATE TABLE `borrowers` ( `overdrive_auth_token` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'persist OverDrive auth token', `anonymized` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'flag for data anonymization', `autorenew_checkouts` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'flag for allowing auto-renewal', + `primary_contact_method` varchar(45) DEFAULT NULL COMMENT 'useful for reporting purposes', PRIMARY KEY (`borrowernumber`), UNIQUE KEY `cardnumber` (`cardnumber`), UNIQUE KEY `userid` (`userid`), @@ -2437,6 +2439,7 @@ CREATE TABLE `deletedborrowers` ( `overdrive_auth_token` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'persist OverDrive auth token', `anonymized` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'flag for data anonymization', `autorenew_checkouts` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'flag for allowing auto-renewal', + `primary_contact_method` varchar(45) DEFAULT NULL COMMENT 'useful for reporting purposes', KEY `borrowernumber` (`borrowernumber`), KEY `cardnumber` (`cardnumber`), KEY `sms_provider_id` (`sms_provider_id`) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt index f874e80de9..73fe89c427 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -764,6 +764,64 @@ legend:hover { [% END %] [% END #/UNLESS nofax %] + +
  • + [% IF mandatoryprimary_contact_method %] +
  • [% END # hide fieldset %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt index bd2aabb741..2ddd848e62 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -326,6 +326,26 @@ [% END %] + + [% IF ( primary_contact_method ) %] +
  • + Main contact method: + [% SWITCH primary_contact_method %] + [% CASE 'phone' %] + Primary phone + [% CASE 'phonepro' %] + Secondary phone + [% CASE 'mobile' %] + Other phone + [% CASE 'email' %] + Primary email + [% CASE 'emailpro' %] + Secondary email + [% CASE 'fax' %] + Fax + [% END %] +
  • + [% END %] [% # /div.rows %] [% # /div#patron-information %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt index 65f2ee6108..e1fe1e188a 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -578,6 +578,65 @@
    Required
    [% END %] + + [% UNLESS hidden.defined('primary_contact_method') %] +
  • + [% IF ( mandatory.defined('primary_contact_method') ) %] + + [% ELSE %] + + [% END %] + + + [% IF ( mandatory.defined('primary_contact_method') ) %]Required[% END %] +
  • + [% END %] diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index c9a4790efd..4f13a14cbe 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -102,6 +102,20 @@ $template->param( defaultCategory => $defaultCategory, ); +my $check_BorrowerMandatoryField=C4::Context->preference("BorrowerMandatoryField"); +my @field_check=split(/\|/,$check_BorrowerMandatoryField); +my @contactprincipalloop; +my @fieldArray = qw(phone phonepro mobile email emailpro fax); +foreach my $field (@fieldArray) { + if ( !(grep { $field eq $_ } @field_check)){ + push @contactprincipalloop,{ + 'currentis_' . $field => 1 + }; + } +} + +$template->param('contactprincipalloop' => \@contactprincipalloop); + my $attributes = ParsePatronAttributes($borrowernumber,$cgi); my $conflicting_attribute = 0; -- 2.39.5