@@ -, +, @@ --- C4/Letters.pm | 8 ++-- C4/Members.pm | 27 +++++------ ..._12532-EnableRedirectGuaranteeEmail_syspref.sql | 2 + installer/data/mysql/sysprefs.sql | 1 + .../prog/en/modules/admin/preferences/patrons.pref | 7 ++- .../prog/en/modules/members/memberentrygen.tt | 8 ++++ members/memberentry.pl | 4 +- t/db_dependent/Letters.t | 55 ++++++++++++++++++++++ t/db_dependent/Members.t | 24 ++++++++++ 9 files changed, 115 insertions(+), 21 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_12532-EnableRedirectGuaranteeEmail_syspref.sql mode change 100644 => 100755 t/db_dependent/Letters.t --- a/C4/Letters.pm +++ a/C4/Letters.pm @@ -1223,18 +1223,18 @@ sub _send_message_by_email { my ($username, $password, $method) = @_; my $member = C4::Members::GetMember( 'borrowernumber' => $message->{'borrowernumber'} ); + my $useGurantor = $member->{'guarantorid'} && C4::Context->preference("EnableRedirectGuaranteeEmail"); my $to_address = $message->{'to_address'}; - unless ($to_address) { + if ($useGurantor || !$to_address) { unless ($member) { - warn "FAIL: No 'to_address' and INVALID borrowernumber ($message->{borrowernumber})"; + warn "FAIL: INVALID borrowernumber ($message->{borrowernumber})"; _set_message_status( { message_id => $message->{'message_id'}, status => 'failed' } ); return; } $to_address = C4::Members::GetNoticeEmailAddress( $message->{'borrowernumber'} ); 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? + warn "FAIL: No 'to_address' and no email for " . ($member->{surname} ||'') . ", borrowernumber ($message->{borrowernumber})"; _set_message_status( { message_id => $message->{'message_id'}, status => 'failed' } ); return; --- a/C4/Members.pm +++ a/C4/Members.pm @@ -1206,22 +1206,21 @@ Returns the empty string if no email address. sub GetNoticeEmailAddress { my $borrowernumber = shift; + my $member = C4::Members::GetMember( 'borrowernumber' => $borrowernumber ); + + # Determine who we send the email to. + my $guarantorid = $member->{'guarantorid'}; + my $useGuarantor = $guarantorid && C4::Context->preference("EnableRedirectGuaranteeEmail"); + + my $guarantor = C4::Members::GetMember( 'borrowernumber' => $guarantorid ) if $useGuarantor; - 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 GetFirstValidEmailAddress($borrowernumber); - } - # specified email address field - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare( qq{ - SELECT $which_address AS primaryemail - FROM borrowers - WHERE borrowernumber=? - } ); - $sth->execute($borrowernumber); - my $data = $sth->fetchrow_hashref; - return $data->{'primaryemail'} || ''; + my $which_address = C4::Context->preference("AutoEmailPrimaryAddress"); + my $to_address = $which_address eq 'OFF' ? GetFirstValidEmailAddress($member->{'borrowernumber'}) : $member->{ $which_address }; + my $guarantor_to_address = $which_address eq 'OFF' ? GetFirstValidEmailAddress($guarantor->{'borrowernumber'}) : $guarantor->{ $which_address } if $guarantor; + $to_address .="," . $guarantor_to_address if $guarantor_to_address; + + return $to_address || ''; } =head2 GetExpiryDate --- a/installer/data/mysql/atomicupdate/bug_12532-EnableRedirectGuaranteeEmail_syspref.sql +++ a/installer/data/mysql/atomicupdate/bug_12532-EnableRedirectGuaranteeEmail_syspref.sql @@ -0,0 +1,2 @@ +INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) +VALUES ('EnableRedirectGuaranteeEmail','0',NULL,'Enable the ability to redirect guarantee email messages to guarantor.','YesNo'); --- a/installer/data/mysql/sysprefs.sql +++ a/installer/data/mysql/sysprefs.sql @@ -137,6 +137,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('EnableAdvancedCatalogingEditor','0','','Enable the Rancor advanced cataloging editor','YesNo'), ('EnableBorrowerFiles','0',NULL,'If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo'), ('EnableOpacSearchHistory','1','YesNo','Enable or disable opac search history',''), +('EnableRedirectGuaranteeEmail', '0', NULL, 'Enable the ability to redirect guarantee email messages to guarantor.', 'YesNo'), ('EnableSearchHistory','0','','Enable or disable search history','YesNo'), ('EnhancedMessagingPreferences','0','','If ON, allows patrons to select to receive additional messages about items due or nearly due.','YesNo'), ('EnhancedMessagingPreferencesOPAC', '1', NULL, 'If ON, show patrons messaging setting on the OPAC.', 'YesNo'), --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -179,7 +179,12 @@ Patrons: yes: Show no: "Don't show" - "patron messaging setting on the OPAC (note: EnhancedMessagingPreferences must be enabled)." - + - + - pref: EnableRedirectGuaranteeEmail + choices: + yes: Do + no: "Don't" + - enable the ability to redirect guarantee email messages to guarantor. All email message placed in message_queue table will be affected. "Norwegian patron database": - - pref: NorwegianPatronDBEnable --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -76,6 +76,9 @@ $(document).ready(function() { $("#entryform").submit(); } }); + $("#PatronMmessagingPreferences").click(function(){ + $("#entryform").submit(); + }); }); @@ -1054,6 +1057,11 @@ $(document).ready(function() { [% IF ( step_5 ) %][% IF ( EnhancedMessagingPreferences ) %]
Patron messaging preferences + [% IF ( !opadd ) && ( !opduplicate ) && !destination %] + + [% END %] [% IF ( opadd ) %]