@@ -, +, @@ method --- Koha/Schema/Result/Borrower.pm | 8 +++ Koha/Schema/Result/BorrowerModification.pm | 8 +++ Koha/Schema/Result/Deletedborrower.pm | 8 +++ .../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 +++++ 9 files changed, 195 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/borrowers_primary_contact_method.perl --- a/Koha/Schema/Result/Borrower.pm +++ a/Koha/Schema/Result/Borrower.pm @@ -414,6 +414,12 @@ __PACKAGE__->table("borrowers"); default_value: 0 is_nullable: 0 +=head2 primary_contact_method + + data_type: 'varchar' + is_nullable: 1 + size: 45 + =head2 checkprevcheckout data_type: 'varchar' @@ -629,6 +635,8 @@ __PACKAGE__->add_columns( { data_type => "tinyint", default_value => 0, is_nullable => 0 }, "privacy_guarantor_checkouts", { data_type => "tinyint", default_value => 0, is_nullable => 0 }, + "primary_contact_method", + { data_type => "varchar", is_nullable => 1, size => 45 }, "checkprevcheckout", { data_type => "varchar", --- a/Koha/Schema/Result/BorrowerModification.pm +++ a/Koha/Schema/Result/BorrowerModification.pm @@ -410,6 +410,12 @@ __PACKAGE__->table("borrower_modifications"); data_type: 'integer' is_nullable: 1 +=head2 primary_contact_method + + data_type: 'varchar' + is_nullable: 1 + size: 45 + =head2 extended_attributes data_type: 'mediumtext' @@ -585,6 +591,8 @@ __PACKAGE__->add_columns( { data_type => "varchar", is_nullable => 1, size => 50 }, "privacy", { data_type => "integer", is_nullable => 1 }, + "primary_contact_method", + { data_type => "varchar", is_nullable => 1, size => 45 }, "extended_attributes", { data_type => "mediumtext", is_nullable => 1 }, "gdpr_proc_consent", --- a/Koha/Schema/Result/Deletedborrower.pm +++ a/Koha/Schema/Result/Deletedborrower.pm @@ -411,6 +411,12 @@ __PACKAGE__->table("deletedborrowers"); default_value: 0 is_nullable: 0 +=head2 primary_contact_method + + data_type: 'varchar' + is_nullable: 1 + size: 45 + =head2 checkprevcheckout data_type: 'varchar' @@ -614,6 +620,8 @@ __PACKAGE__->add_columns( { data_type => "tinyint", default_value => 0, is_nullable => 0 }, "privacy_guarantor_checkouts", { data_type => "tinyint", default_value => 0, is_nullable => 0 }, + "primary_contact_method", + { data_type => "varchar", is_nullable => 1, size => 45 }, "checkprevcheckout", { data_type => "varchar", --- a/installer/data/mysql/atomicupdate/borrowers_primary_contact_method.perl +++ a/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"; +} --- a/installer/data/mysql/kohastructure.sql +++ a/installer/data/mysql/kohastructure.sql @@ -589,6 +589,7 @@ CREATE TABLE `deletedborrowers` ( -- stores data related to the patrons/borrower `login_attempts` int(4) default 0, -- number of failed login attemps `overdrive_auth_token` MEDIUMTEXT default NULL, -- persist OverDrive auth token `anonymized` TINYINT(1) NOT NULL DEFAULT 0, -- flag for data anonymization + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes KEY borrowernumber (borrowernumber), KEY `cardnumber` (`cardnumber`), KEY `sms_provider_id` (`sms_provider_id`) @@ -1530,6 +1531,7 @@ CREATE TABLE `borrowers` ( -- this table includes information about your patrons `login_attempts` int(4) default 0, -- number of failed login attemps `overdrive_auth_token` MEDIUMTEXT default NULL, -- persist OverDrive auth token `anonymized` TINYINT(1) NOT NULL DEFAULT 0, -- flag for data anonymization + `primary_contact_method` varchar(45) DEFAULT NULL, -- useful for reporting purposes UNIQUE KEY `cardnumber` (`cardnumber`), PRIMARY KEY `borrowernumber` (`borrowernumber`), KEY `categorycode` (`categorycode`), @@ -3435,6 +3437,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`) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -657,6 +657,64 @@ [% END %] [% END #/UNLESS nofax %] + +
  • + [% IF mandatoryprimary_contact_method %] +
  • [% END # hide fieldset %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -283,6 +283,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 %] --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt @@ -581,6 +581,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 %] [% END %] --- a/opac/opac-memberentry.pl +++ a/opac/opac-memberentry.pl @@ -95,6 +95,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; --