Bugzilla – Attachment 100817 Details for
Bug 11879
Add a new field to patron record: main contact method
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 11879 - Add a new field to patron record: main contact method
Bug-11879---Add-a-new-field-to-patron-record-main-.patch (text/plain), 19.14 KB, created by
Bin Wen
on 2020-03-16 19:55:25 UTC
(
hide
)
Description:
Bug 11879 - Add a new field to patron record: main contact method
Filename:
MIME Type:
Creator:
Bin Wen
Created:
2020-03-16 19:55:25 UTC
Size:
19.14 KB
patch
obsolete
>From a561e0e3008f51222da5f0d5f36a3f97cd0d6dfd Mon Sep 17 00:00:00 2001 >From: Bin Wen <bin.wen@inlibro.com> >Date: Wed, 18 Dec 2019 11:52:49 -0500 >Subject: [PATCH] Bug 11879 - Add a new field to patron record: main contact > method > >Fixed the problem mentioned above. > >Test plan is same as before: >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. >--- > 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 > >diff --git a/Koha/Schema/Result/Borrower.pm b/Koha/Schema/Result/Borrower.pm >index dd305eca39..0e9ea3f369 100644 >--- a/Koha/Schema/Result/Borrower.pm >+++ b/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", >diff --git a/Koha/Schema/Result/BorrowerModification.pm b/Koha/Schema/Result/BorrowerModification.pm >index 3db708d3fc..ede6a63d1a 100644 >--- a/Koha/Schema/Result/BorrowerModification.pm >+++ b/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", >diff --git a/Koha/Schema/Result/Deletedborrower.pm b/Koha/Schema/Result/Deletedborrower.pm >index 1ba0873e2f..dba3a22203 100644 >--- a/Koha/Schema/Result/Deletedborrower.pm >+++ b/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", >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 0f092725b5..5b1623a355 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/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`) >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 d4db2e37b3..673142d0d8 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >@@ -657,6 +657,64 @@ > [% END %] > </li> > [% END #/UNLESS nofax %] >+ >+ <li> >+ [% IF mandatoryprimary_contact_method %] >+ <label for="primary_contact_method" class="required"> >+ [% ELSE %] >+ <label for="primary_contact_method"> >+ [% END %] >+ Main contact method: </label> >+ >+ <select id="primary_contact_method" name="primary_contact_method"> >+ <option value=""></option> >+ [% UNLESS nophone %] >+ [% IF ( primary_contact_method == 'phone' ) %] >+ <option value="phone" selected="selected">Primary phone</option> >+ [% ELSE %] >+ <option value="phone">Primary phone</option> >+ [% END %] >+ [% END %] >+ [% UNLESS nophonepro %] >+ [% IF ( primary_contact_method == 'phonepro' ) %] >+ <option value="phonepro" selected="selected">Secondary phone</option> >+ [% ELSE %] >+ <option value="phonepro">Secondary phone</option> >+ [% END %] >+ [% END %] >+ [% UNLESS nomobile %] >+ [% IF ( primary_contact_method == 'mobile' ) %] >+ <option value="mobile" selected="selected">Other phone</option> >+ [% ELSE %] >+ <option value="mobile">Other phone</option> >+ [% END %] >+ [% END %] >+ [% UNLESS noemail %] >+ [% IF ( primary_contact_method == 'email' ) %] >+ <option value="email" selected="selected">Primary email</option> >+ [% ELSE %] >+ <option value="email">Primary email</option> >+ [% END %] >+ [% END %] >+ [% UNLESS noemailpro %] >+ [% IF ( primary_contact_method == 'emailpro' ) %] >+ <option value="emailpro" selected="selected">Secondary email</option> >+ [% ELSE %] >+ <option value="emailpro">Secondary email</option> >+ [% END %] >+ [% END %] >+ [% UNLESS nofax %] >+ [% IF ( primary_contact_method == 'fax' ) %] >+ <option value="fax" selected="selected">Fax</option> >+ [% ELSE %] >+ <option value="fax">Fax</option> >+ [% END %] >+ [% END %] >+ </select> >+ [% IF mandatoryprimary_contact_method %] >+ <span class="required">Required</span> >+ [% END %] >+ </li> > </ol> > </fieldset> <!-- /#memberentry_contact --> > [% 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 ab3e89abf7..b37d0522f7 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >@@ -283,6 +283,26 @@ > </ul> > </li> > [% END %] >+ >+ [% IF ( primary_contact_method ) %] >+ <li> >+ <span class="label">Main contact method: </span> >+ [% 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 %] >+ </li> >+ [% END %] > </ol> > </div> [% # /div.rows %] > </div> [% # /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 8761cc88ae..cbde19e497 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt >@@ -581,6 +581,65 @@ > [% IF mandatory.defined('fax') %]<span class="required">Required</span>[% END %] > </li> > [% END %] >+ >+ [% UNLESS hidden.defined('primary_contact_method') %] >+ <li> >+ [% IF ( mandatory.defined('primary_contact_method') ) %] >+ <label for="borrower_primary_contact_method" class="required">Main contact method:</label> >+ [% ELSE %] >+ <label for="borrower_primary_contact_method">Main contact method:</label> >+ [% END %] >+ >+ <select id="borrower_primary_contact_method" name="borrower_primary_contact_method"> >+ <option value=""></option> >+ [% FOREACH contactprincipalloo IN contactprincipalloop %] >+ [% IF ( contactprincipalloo.currentis_phone ) %] >+ [% IF ( borrower.primary_contact_method == 'phone' ) %] >+ <option value="phone" selected="selected">Primary phone</option> >+ [% ELSE %] >+ <option value="phone">Primary phone</option> >+ [% END %] >+ [% END %] >+ [% IF ( contactprincipalloo.currentis_phonepro ) %] >+ [% IF ( borrower.primary_contact_method == 'phonepro' ) %] >+ <option value="phonepro" selected="selected">Secondary phone</option> >+ [% ELSE %] >+ <option value="phonepro">Secondary phone</option> >+ [% END %] >+ [% END %] >+ [% IF ( contactprincipalloo.currentis_mobile ) %] >+ [% IF ( borrower.primary_contact_method == 'mobile' ) %] >+ <option value="mobile" selected="selected">Other phone</option> >+ [% ELSE %] >+ <option value="mobile">Other phone</option> >+ [% END %] >+ [% END %] >+ [% IF ( contactprincipalloo.currentis_email ) %] >+ [% IF ( borrower.primary_contact_method == 'email' ) %] >+ <option value="email" selected="selected">Primary email</option> >+ [% ELSE %] >+ <option value="email">Primary email</option> >+ [% END %] >+ [% END %] >+ [% IF ( contactprincipalloo.currentis_emailpro ) %] >+ [% IF ( borrower.primary_contact_method == 'emailpro' ) %] >+ <option value="emailpro" selected="selected">Secondary email</option> >+ [% ELSE %] >+ <option value="emailpro">Secondary email</option> >+ [% END %] >+ [% END %] >+ [% IF ( contactprincipalloo.currentis_fax ) %] >+ [% IF ( borrower.primary_contact_method == 'fax' ) %] >+ <option value="fax" selected="selected">Fax</option> >+ [% ELSE %] >+ <option value="fax">Fax</option> >+ [% END %] >+ [% END %] >+ [% END %] >+ </select> >+ [% IF ( mandatory.defined('primary_contact_method') ) %]<span class="required">Required</span>[% END %] >+ </li> >+ [% END %] > </ol> > </fieldset> > [% END %] >diff --git a/opac/opac-memberentry.pl b/opac/opac-memberentry.pl >index 391a78f8e0..ddb7128641 100755 >--- a/opac/opac-memberentry.pl >+++ b/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; > >-- >2.17.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 11879
:
25745
|
25922
|
25941
|
31300
|
31301
|
31320
|
34351
|
34482
|
34502
|
34503
|
34571
|
34572
|
34573
|
41209
|
41220
|
41221
|
41222
|
46101
|
46284
|
46285
|
46286
|
48073
|
48074
|
48075
|
48076
|
48077
|
48078
|
48079
|
48556
|
48557
|
48558
|
48559
|
50433
|
52607
|
52608
|
52614
|
52615
|
52616
|
52617
|
52618
|
52619
|
52620
|
53229
|
53688
|
53695
|
53705
|
53707
|
53708
|
53709
|
53710
|
53711
|
53712
|
53713
|
55946
|
56285
|
56286
|
58580
|
58591
|
58592
|
58593
|
63238
|
63239
|
65811
|
65812
|
69028
|
69029
|
69050
|
71955
|
71956
|
71957
|
71958
|
72632
|
72633
|
72634
|
72635
|
73987
|
73988
|
73989
|
73990
|
74123
|
74124
|
74125
|
74126
|
74818
|
75652
|
83757
|
83758
|
84017
|
84018
|
84019
|
84020
|
84021
|
84022
|
88358
|
88359
|
88360
|
88361
|
88362
|
88363
|
88394
|
88395
|
88396
|
88397
|
88398
|
88399
|
88400
|
93850
|
93851
|
93852
|
93853
|
93854
|
93855
|
93856
|
93900
|
93901
|
94456
|
94457
|
94458
|
94459
|
94460
|
94461
|
94463
|
94464
|
94465
|
94466
|
94467
|
94468
|
96432
|
100817
|
100843
|
112062
|
112063
|
112064
|
112557
|
112559
|
112560
|
118959
|
118960
|
118961
|
118962
|
118985
|
118986
|
118987
|
118988
|
120947
|
120948
|
120949
|
120950
|
122778