From 524567bdd592812f6ccfa7a7306fbd8612f1baa1 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 --- .../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 fc9953bb2b..2ad85b4ae1 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -611,6 +611,7 @@ CREATE TABLE `deletedborrowers` ( -- stores data related to the patrons/borrower `overdrive_auth_token` MEDIUMTEXT default NULL, -- persist OverDrive auth token `anonymized` TINYINT(1) NOT NULL DEFAULT 0, -- flag for data anonymization `autorenew_checkouts` TINYINT(1) NOT NULL DEFAULT 1, -- flag for allowing auto-renewal + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes KEY borrowernumber (borrowernumber), KEY `cardnumber` (`cardnumber`), KEY `sms_provider_id` (`sms_provider_id`) @@ -1537,6 +1538,7 @@ CREATE TABLE `borrowers` ( -- this table includes information about your patrons `overdrive_auth_token` MEDIUMTEXT default NULL, -- persist OverDrive auth token `anonymized` TINYINT(1) NOT NULL DEFAULT 0, -- flag for data anonymization `autorenew_checkouts` TINYINT(1) NOT NULL DEFAULT 1, -- flag for allowing auto-renewal + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes UNIQUE KEY `cardnumber` (`cardnumber`), PRIMARY KEY `borrowernumber` (`borrowernumber`), KEY `categorycode` (`categorycode`), @@ -3541,6 +3543,7 @@ CREATE TABLE IF NOT EXISTS `borrower_modifications` ( `privacy` int(11) DEFAULT NULL, `extended_attributes` MEDIUMTEXT DEFAULT NULL, `gdpr_proc_consent` datetime, -- data processing consent + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes PRIMARY KEY (`verification_token` (191),`borrowernumber`), KEY `verification_token` (`verification_token` (191)), KEY `borrowernumber` (`borrowernumber`) 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 738afd604b..f19d269750 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -740,6 +740,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 4bf7ba95f7..ee44e3cc9d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -310,6 +310,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 60eaa58379..70381a3bf9 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -623,6 +623,65 @@ [% IF mandatory.defined('fax') %]Required[% END %] [% 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 6b7afc0175..ab26559eb6 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -101,6 +101,20 @@ $template->param( OPACPatronDetails => C4::Context->preference('OPACPatronDetails'), ); +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.17.1