Bugzilla – Attachment 88212 Details for
Bug 12532
Copy guarantee email to guarantor (or redirect if guarantee has no email set)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 12532 - Send emails to guarantee and guarantor
Bug-12532---Send-emails-to-guarantee-and-guarantor.patch (text/plain), 8.19 KB, created by
Mikaël Olangcay Brisebois
on 2019-04-17 15:57:40 UTC
(
hide
)
Description:
Bug 12532 - Send emails to guarantee and guarantor
Filename:
MIME Type:
Creator:
Mikaël Olangcay Brisebois
Created:
2019-04-17 15:57:40 UTC
Size:
8.19 KB
patch
obsolete
>From 9e6c7ce4c927fc20df8126941accc7f5854c31f6 Mon Sep 17 00:00:00 2001 >From: Charles Farmer <charles.farmer@inLibro.com> >Date: Sat, 5 May 2018 22:38:37 -0400 >Subject: [PATCH] Bug 12532 - Send emails to guarantee and guarantor > >Checks for the syspref "RedirectGuaranteeEmail" in Koha::Patrons::notice_email_address. >When enabled, emails to a patron with a guarantor will be sent to both guarantor and guarantee. > >It does not affect values in the message_queue table. > >Test plan: > >Before applying >1) Search, or create, a patron with guarantor >2) Enable checkout emails >3) Checkout an item. An email should be sent only to the guarantee >4) Apply this patch >5) Run updatedatabase.pl >6) Enable 'RedirectGuaranteeEmail' >7) Go through step 1) to 3). Email should now be sent to both. >8) Run t/db_dependant/Members.t > >Sponsored by: Ville de Victoriaville >--- > C4/Letters.pm | 8 +++- > Koha/Patron.pm | 18 ++++++++- > ...g_12532-RedirectGuaranteeEmail_syspref.sql | 2 + > installer/data/mysql/sysprefs.sql | 1 + > .../en/modules/admin/preferences/patrons.pref | 6 +++ > t/db_dependent/Members.t | 39 ++++++++++++++++++- > 6 files changed, 69 insertions(+), 5 deletions(-) > create mode 100644 installer/data/mysql/atomicupdate/bug_12532-RedirectGuaranteeEmail_syspref.sql > >diff --git a/C4/Letters.pm b/C4/Letters.pm >index cbe6559e82..d98c1edbeb 100644 >--- a/C4/Letters.pm >+++ b/C4/Letters.pm >@@ -1267,14 +1267,18 @@ sub _send_message_by_email { > > my $patron = Koha::Patrons->find( $message->{borrowernumber} ); > my $to_address = $message->{'to_address'}; >- unless ($to_address) { >- unless ($patron) { >+ >+ my $use_garantor = C4::Context->preference('RedirectGuaranteeEmail'); >+ if($use_garantor || !$to_address) { >+ unless ($patron and $to_address) { > warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})"; > _set_message_status( { message_id => $message->{'message_id'}, > status => 'failed' } ); > return; > } >+ if ($patron) { > $to_address = $patron->notice_email_address; >+ } > unless ($to_address) { > # warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})"; > # warning too verbose for this more common case? >diff --git a/Koha/Patron.pm b/Koha/Patron.pm >index c3326285b9..c491649db5 100644 >--- a/Koha/Patron.pm >+++ b/Koha/Patron.pm >@@ -1027,14 +1027,28 @@ Returns the empty string if no email address. > > sub notice_email_address{ > my ( $self ) = @_; >+ my $address; > > my $which_address = C4::Context->preference("AutoEmailPrimaryAddress"); > # if syspref is set to 'first valid' (value == OFF), look up email address > if ( $which_address eq 'OFF' ) { >- return $self->first_valid_email_address; >+ $address = $self->first_valid_email_address; >+ } else { >+ $address = $self->$which_address || ''; > } > >- return $self->$which_address || ''; >+ my $use_guarantor = C4::Context->preference('RedirectGuaranteeEmail'); >+ if ($use_guarantor) { >+ my $guarantor = $self->guarantor; >+ if ($guarantor) { >+ my $guarantor_address = $guarantor->notice_email_address; >+ if ($address){ >+ $address .= ', '; >+ } >+ $address .= $guarantor_address if $guarantor_address; >+ } >+ } >+ return $address; > } > > =head3 first_valid_email_address >diff --git a/installer/data/mysql/atomicupdate/bug_12532-RedirectGuaranteeEmail_syspref.sql b/installer/data/mysql/atomicupdate/bug_12532-RedirectGuaranteeEmail_syspref.sql >new file mode 100644 >index 0000000000..e3de7b1303 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_12532-RedirectGuaranteeEmail_syspref.sql >@@ -0,0 +1,2 @@ >+INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type) >+VALUES ('RedirectGuaranteeEmail','0',NULL,'Enable the ability to redirect guarantee email messages to guarantor.','YesNo'); >\ No newline at end of file >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index 91fee6f7ed..dd3e5d19cc 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -486,6 +486,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('QuoteOfTheDay','0',NULL,'Enable or disable display of Quote of the Day on the OPAC home page','YesNo'), > ('RandomizeHoldsQueueWeight','0',NULL,'if ON, the holds queue in circulation will be randomized, either based on all location codes, or by the location codes specified in StaticHoldsQueueWeight','YesNo'), > ('RecordLocalUseOnReturn','0',NULL,'If ON, statistically record returns of unissued items as local use, instead of return','YesNo'), >+('RedirectGuaranteeEmail', '0', NULL, 'Enable the ability to redirect guarantee email messages to guarantor.', 'YesNo'), > ('RefundLostOnReturnControl','CheckinLibrary','CheckinLibrary|ItemHomeBranch|ItemHoldingBranch','If a lost item is returned, choose which branch to pick rules for refunding.','Choice'), > ('RenewalLog','0','','If ON, log information about renewals','YesNo'), > ('RenewalPeriodBase','date_due','date_due|now','Set whether the renewal date should be counted from the date_due or from the moment the Patron asks for renewal ','Choice'), >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref >index 9007da96a4..019453638f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref >@@ -220,6 +220,12 @@ Patrons: > - pref: FailedLoginAttempts > class: integer > - failed login attempts. >+ - >+ - pref: RedirectGuaranteeEmail >+ choices: >+ yes: Enable >+ no: Disable >+ - sending emails to both guarantees and their guarantor. This does not affect patrons without guarantors. > - > - pref: ProtectSuperlibrarianPrivileges > choices: >diff --git a/t/db_dependent/Members.t b/t/db_dependent/Members.t >index f9595beb1b..1488590de5 100755 >--- a/t/db_dependent/Members.t >+++ b/t/db_dependent/Members.t >@@ -17,7 +17,7 @@ > > use Modern::Perl; > >-use Test::More tests => 47; >+use Test::More tests => 50; > use Test::MockModule; > use Test::Exception; > >@@ -121,6 +121,43 @@ C4::Context->clear_syspref_cache(); > $checkcardnum=C4::Members::checkcardnumber($IMPOSSIBLE_CARDNUMBER, ""); > is ($checkcardnum, "2", "Card number is too long"); > >+# Test notice_email_address >+# Add Guarantor for testing >+my $GUARANTOR_EMAIL = "Robert\@email.com"; >+%data = ( >+ cardnumber => "2997924548", >+ firstname => "Robert", >+ surname => "Tables", >+ categorycode => $patron_category->{categorycode}, >+ branchcode => $BRANCHCODE, >+ dateofbirth => '', >+ dateexpiry => '9999-12-31', >+ userid => 'bobbytables', >+ email => $GUARANTOR_EMAIL >+); >+ >+$member->{guarantorid} = Koha::Patron->new(\%data)->store->borrowernumber; >+$patron->set($member)->store; >+ >+$member = Koha::Patrons->find( { cardnumber => $CARDNUMBER } ); >+t::lib::Mocks::mock_preference( 'RedirectGuaranteeEmail', '0' ); >+t::lib::Mocks::mock_preference( 'AutoEmailPrimaryAddress', 'OFF' ); >+C4::Context->clear_syspref_cache(); >+ >+my $notice_email = $member->notice_email_address; >+is ($notice_email, $EMAIL, "notice_email_address returns correct value when AutoEmailPrimaryAddress is off"); >+ >+t::lib::Mocks::mock_preference( 'AutoEmailPrimaryAddress', 'emailpro' ); >+C4::Context->clear_syspref_cache(); >+ >+$notice_email = $member->notice_email_address; >+is ($notice_email, $EMAILPRO, "notice_email_address returns correct value when AutoEmailPrimaryAddress is emailpro"); >+ >+t::lib::Mocks::mock_preference( 'AutoEmailPrimaryAddress', 'OFF' ); >+t::lib::Mocks::mock_preference( 'RedirectGuaranteeEmail', '1' ); >+C4::Context->clear_syspref_cache(); >+$notice_email = $member->notice_email_address; >+is ($notice_email, $EMAIL . ", " . $GUARANTOR_EMAIL, "notice_email_address returns correct value when RedirectGuaranteeEmail is enabled"); > > # Add a new borrower > %data = ( >-- >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 12532
:
29510
|
30747
|
35313
|
36752
|
39787
|
39925
|
48645
|
53649
|
53689
|
53690
|
53699
|
53700
|
55985
|
56052
|
56053
|
59445
|
59446
|
59447
|
63197
|
64802
|
64824
|
67115
|
68340
|
70865
|
72064
|
72617
|
75099
|
77606
|
80313
|
85134
|
85135
|
87815
|
87816
|
88208
|
88209
|
88210
|
88211
|
88212
|
88213
|
88295
|
88296
|
114455
|
114456
|
114457
|
114458
|
114459
|
114460
|
114461
|
131091
|
131092
|
131093
|
131094
|
149233
|
150071
|
150208
|
150217
|
150240
|
150256
|
151028
|
151029
|
154854
|
154855
|
154856
|
154857
|
155036
|
155037
|
155828
|
155829
|
155830
|
155831
|
155832
|
155833
|
155834
|
155835
|
155836
|
155837
|
155873
|
155874
|
155875
|
155876
|
155877
|
155878
|
155879
|
155880
|
155881
|
155882
|
155883
|
155886
|
155934
|
155935
|
155936
|
155937
|
155938
|
155939
|
155940
|
155941
|
155942
|
155943
|
155944
|
155945
|
155946