From 4d7ce9ea6965c374c73b3fffabfbd1e990a34e7b 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 --- .../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 4896b9dcee..ad3c063684 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -1304,6 +1304,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`) @@ -1429,6 +1430,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`), @@ -2430,6 +2432,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 cd416da0ec..fb457197c9 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 2a97dff6e7..f53539b1b5 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.24.3 (Apple Git-128)