From 45aa8fa515067f2b2b8091d0be46308f1d4e43a0 Mon Sep 17 00:00:00 2001 From: charles Date: Wed, 4 Jan 2017 09:37:54 -0500 Subject: [PATCH] Bug 11879: Add the "Main contact method" field in borrower informations. 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. Following Nicolas' fix, removed a $branch variable from patch, since it has been suppressed in Bug 17284. Test case : * Edit a borrower's informations. The "Main Contact Method" selectbox should appear in the form and its value should be saved correctly. Sponsored-by: CCSR --- .../borrowers_primary_contact_method.sql | 3 ++ installer/data/mysql/kohastructure.sql | 5 +- installer/data/mysql/updatedatabase.pl | 1 + .../prog/en/modules/members/memberentrygen.tt | 61 ++++++++++++++++++++-- .../prog/en/modules/members/moremember.tt | 14 +++++ .../bootstrap/en/modules/opac-memberentry.tt | 50 ++++++++++++++++++ members/memberentry.pl | 11 +++- members/moremember.pl | 3 +- opac/opac-memberentry.pl | 13 +++++ 9 files changed, 153 insertions(+), 8 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/borrowers_primary_contact_method.sql diff --git a/installer/data/mysql/atomicupdate/borrowers_primary_contact_method.sql b/installer/data/mysql/atomicupdate/borrowers_primary_contact_method.sql new file mode 100644 index 0000000..5364feb --- /dev/null +++ b/installer/data/mysql/atomicupdate/borrowers_primary_contact_method.sql @@ -0,0 +1,3 @@ +ALTER TABLE `borrowers` ADD COLUMN `primary_contact_method` VARCHAR(45) NULL DEFAULT NULL AFTER `privacy_guarantor_checkouts`; +ALTER TABLE `deletedborrowers` ADD COLUMN `primary_contact_method` VARCHAR(45) NULL DEFAULT NULL AFTER `privacy_guarantor_checkouts`; +ALTER TABLE `borrower_modifications` ADD COLUMN `primary_contact_method` VARCHAR(45) NULL DEFAULT NULL AFTER `privacy`; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 94ef125..dddc572 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -632,7 +632,7 @@ CREATE TABLE `deletedborrowers` ( -- stores data related to the patrons/borrower `checkprevcheckout` varchar(7) NOT NULL default 'inherit', -- produce a warning for this patron if this item has previously been checked out to this patron if 'yes', not if 'no', defer to category setting if 'inherit'. `updated_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- time of last change could be useful for synchronization with external systems (among others) `lastseen` datetime default NULL, -- last time a patron has been seed (connected at the OPAC or staff interface) - `overdrive_auth_token` text default NULL, -- persist OverDrive auth token + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes KEY borrowernumber (borrowernumber), KEY `cardnumber` (`cardnumber`), KEY `sms_provider_id` (`sms_provider_id`) @@ -1664,7 +1664,7 @@ CREATE TABLE `borrowers` ( -- this table includes information about your patrons `checkprevcheckout` varchar(7) NOT NULL default 'inherit', -- produce a warning for this patron if this item has previously been checked out to this patron if 'yes', not if 'no', defer to category setting if 'inherit'. `updated_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- time of last change could be useful for synchronization with external systems (among others) `lastseen` datetime default NULL, -- last time a patron has been seed (connected at the OPAC or staff interface) - `overdrive_auth_token` text default NULL, -- persist OverDrive auth token + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes UNIQUE KEY `cardnumber` (`cardnumber`), PRIMARY KEY `borrowernumber` (`borrowernumber`), KEY `categorycode` (`categorycode`), @@ -3438,6 +3438,7 @@ CREATE TABLE IF NOT EXISTS `borrower_modifications` ( `smsalertnumber` varchar(50) DEFAULT NULL, `privacy` int(11) DEFAULT NULL, `extended_attributes` text DEFAULT NULL, + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes PRIMARY KEY (`verification_token`,`borrowernumber`), KEY `verification_token` (`verification_token`), KEY `borrowernumber` (`borrowernumber`) diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 74d5f88..129103d 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -14352,6 +14352,7 @@ foreach my $file ( sort readdir $dirh ) { } } + =head1 FUNCTIONS =head2 TableExists($table) 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 ff3ef68..2081f9e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -493,7 +493,8 @@ $(document).ready(function() { [% UNLESS nophone && nophonepro && nomobile && noemail && noemailpro && nofax %]
- Contact
    + Contact +
      [% UNLESS nophone %]
    1. [% IF ( mandatoryphone ) %] @@ -556,7 +557,7 @@ $(document).ready(function() { [% IF ( mandatoryemailpro ) %]Required[% END %]
    2. [% END %] - [% UNLESS nofax %] + [% UNLESS nofax %]
    3. [% IF ( mandatoryfax ) %]
    4. - [% END %] -
    + + [% END %] +
  1. + + +
  2. +
+
[%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 bba77f0..e32d909 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -273,6 +273,20 @@ function validate1(date) { [% END %] [% END %] + [% SWITCH primary_contact_method %] + [% CASE 'phone' %] +
  • Main contact method: Phone
  • + [% CASE 'phonepro' %] +
  • Main contact method: Secondary phone
  • + [% CASE 'mobile' %] +
  • Main contact method: Other Phone
  • + [% CASE 'email' %] +
  • Main contact method: Primary email
  • + [% CASE 'emailpro' %] +
  • Main contact method: Secondary email
  • + [% CASE 'fax' %] +
  • Main contact method: Fax
  • + [% END %]
    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 231e2bf..052b8a4 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -571,6 +571,56 @@ [% IF mandatory.defined('fax') %]Required[% END %] [% END %] +
  • + + +
  • [% END %] diff --git a/members/memberentry.pl b/members/memberentry.pl index 768b163..58e4ba3 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -601,6 +601,16 @@ $template->param('typeloop' => \@typeloop, no_categories => $no_categories); if($no_categories){ $no_add = 1; } +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 $cities = Koha::Cities->search( {}, { order_by => 'city_name' } ); my $roadtypes = C4::Koha::GetAuthorisedValues( 'ROADTYPE' ); @@ -608,7 +618,6 @@ $template->param( roadtypes => $roadtypes, cities => $cities, ); - my $default_borrowertitle = ''; unless ( $op eq 'duplicate' ) { $default_borrowertitle=$data{'title'} } diff --git a/members/moremember.pl b/members/moremember.pl index 2ab8174..a171d53 100755 --- a/members/moremember.pl +++ b/members/moremember.pl @@ -337,7 +337,8 @@ $template->param( borrowernumber => $borrowernumber, othernames => $data->{'othernames'}, categoryname => $data->{'description'}, - was_renewed => scalar $input->param('was_renewed') ? 1 : 0, + primary_contact_method => $data->{'primary_contact_method'}, + was_renewed => $input->param('was_renewed') ? 1 : 0, todaysdate => output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }), totalprice => sprintf("%.2f", $totalprice), totaldue => sprintf("%.2f", $total), diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl index 64f9e03..83c8136 100755 --- a/opac/opac-memberentry.pl +++ b/opac/opac-memberentry.pl @@ -89,6 +89,19 @@ $template->param( libraries => \@libraries, 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; -- 1.9.1