From a495ba861d8aa37f273a4f94f3a3e36fca30d2c3 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Fri, 20 Apr 2018 12:42:15 +0000 Subject: [PATCH] Bug 19191: Add syspref to control use of email receipts, defaulting to disabled Signed-off-by: Katrin Fischer Signed-off-by: Nick Clemens --- Koha/Account.pm | 50 ++++++++++--------- .../data/mysql/atomicupdate/bug_19191.sql | 7 ++- installer/data/mysql/sysprefs.sql | 1 + .../en/modules/admin/preferences/patrons.pref | 6 +++ t/db_dependent/Accounts.t | 2 +- 5 files changed, 40 insertions(+), 26 deletions(-) diff --git a/Koha/Account.pm b/Koha/Account.pm index 33ef868716..6b838a1c28 100644 --- a/Koha/Account.pm +++ b/Koha/Account.pm @@ -263,31 +263,33 @@ sub pay { ); } - require C4::Letters; - if ( - my $letter = C4::Letters::GetPreparedLetter( - module => 'circulation', - letter_code => uc("ACCOUNT_$type"), - message_transport_type => 'email', - lang => Koha::Patrons->find( $self->{patron_id} )->lang, - tables => { - borrowers => $self->{patron_id}, - branches => $self->{library_id}, - }, - substitute => { - credit => $payment, - offsets => scalar Koha::Account::Offsets->search( { id => { -in => [ map { $_->id } @account_offsets ] } } ), - }, - ) - ) - { - C4::Letters::EnqueueLetter( - { - letter => $letter, - borrowernumber => $self->{patron_id}, + if ( C4::Context->preference('UseEmailReceipts') ) { + require C4::Letters; + if ( + my $letter = C4::Letters::GetPreparedLetter( + module => 'circulation', + letter_code => uc("ACCOUNT_$type"), message_transport_type => 'email', - } - ) or warn "can't enqueue letter $letter"; + lang => Koha::Patrons->find( $self->{patron_id} )->lang, + tables => { + borrowers => $self->{patron_id}, + branches => $self->{library_id}, + }, + substitute => { + credit => $payment, + offsets => scalar Koha::Account::Offsets->search( { id => { -in => [ map { $_->id } @account_offsets ] } } ), + }, + ) + ) + { + C4::Letters::EnqueueLetter( + { + letter => $letter, + borrowernumber => $self->{patron_id}, + message_transport_type => 'email', + } + ) or warn "can't enqueue letter $letter"; + } } return $payment->id; diff --git a/installer/data/mysql/atomicupdate/bug_19191.sql b/installer/data/mysql/atomicupdate/bug_19191.sql index e081ef43e9..99d9f97756 100644 --- a/installer/data/mysql/atomicupdate/bug_19191.sql +++ b/installer/data/mysql/atomicupdate/bug_19191.sql @@ -1,4 +1,9 @@ INSERT IGNORE INTO `letter` (`module`, `code`, `branchcode`, `name`, `is_html`, `title`, `content`, `message_transport_type`, `lang`) VALUES - ('circulation', 'ACCOUNT_PAYMENT', '', 'Account Payment', 0, 'Account Payment', '[%- USE Price -%]\r\nA payment of [% credit.amount * -1 | $Price %] has been applied to your account.\r\n\r\nThis payment affected the following fees:\r\n[%- FOREACH o IN offsets %]\r\nDescription: [% o.debit.description %]\r\nAmount paid: [% o.amount * -1 | $Price %]\r\nAmount remaining: [% o.debit.amountoutstanding | $Price %]\r\n[% END %]', 'email', 'default'), + ('circulation', 'ACCOUNT_PAYMENT', '', 'Account payment', 0, 'Account payment', '[%- USE Price -%]\r\nA payment of [% credit.amount * -1 | $Price %] has been applied to your account.\r\n\r\nThis payment affected the following fees:\r\n[%- FOREACH o IN offsets %]\r\nDescription: [% o.debit.description %]\r\nAmount paid: [% o.amount * -1 | $Price %]\r\nAmount remaining: [% o.debit.amountoutstanding | $Price %]\r\n[% END %]', 'email', 'default'), ('circulation', 'ACCOUNT_WRITEOFF', '', 'Account Writeoff', 0, 'Account Writeoff', '[%- USE Price -%]\r\nAn account writeoff of [% credit.amount * -1 | $Price %] has been applied to your account.\r\n\r\nThis writeoff affected the following fees:\r\n[%- FOREACH o IN offsets %]\r\nDescription: [% o.debit.description %]\r\nAmount paid: [% o.amount * -1 | $Price %]\r\nAmount remaining: [% o.debit.amountoutstanding | $Price %]\r\n[% END %]', 'email', 'default'); + +$dbh->do(q{ + INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) + VALUES ('UseEmailReceipts','0','','Send email receipts for payments and write-offs','YesNo') +}); diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 2ea76a48dc..4a62a26bb4 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -597,6 +597,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('useDaysMode','Calendar','Calendar|Days|Datedue','Choose the method for calculating due date: select Calendar to use the holidays module, and Days to ignore the holidays module','Choice'), ('useDefaultReplacementCost', '0', NULL, 'default replacement cost defined in item type', 'YesNo'), ('useDischarge','','','Allows librarians to discharge borrowers and borrowers to request a discharge','YesNo'), +('UseEmailReceipts','0','','Send email receipts for payments and write-offs','YesNo'), ('UseICU','0','1','Tell Koha if ICU indexing is in use for Zebra or not.','YesNo'), ('UseKohaPlugins','0','','Enable or disable the ability to use Koha Plugins.','YesNo'), ('UseQueryParser','0',NULL,'If enabled, try to use QueryParser for queries.','YesNo'), 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 348e1dd9ed..4adcf1bb44 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 @@ -6,6 +6,12 @@ Patrons: yes: Send no: "Don't send" - an email to newly created patrons with their account details. + - + - pref: UseEmailReceipts + choices: + yes: Send + no: "Don't send" + - email receipts to patrons for payments and writeoffs. - - "Use" - pref: AutoEmailPrimaryAddress diff --git a/t/db_dependent/Accounts.t b/t/db_dependent/Accounts.t index 26a789c96a..1069877385 100644 --- a/t/db_dependent/Accounts.t +++ b/t/db_dependent/Accounts.t @@ -1013,7 +1013,7 @@ subtest "Payment notice tests" => sub { $id = $account->pay( { amount => 13, type => 'writeoff' } ); $notice = Koha::Notice::Messages->search()->next(); - is( $notice->subject, 'Account writeoff', 'Notice subject is correct for payment' ); + is( $notice->subject, 'Account Writeoff', 'Notice subject is correct for payment' ); is( $notice->letter_code, 'ACCOUNT_WRITEOFF', 'Notice letter code is correct for writeoff' ); is( $notice->content, 'A writeoff of 13.00 has been applied to your account.', 'Notice content is correct for writeoff' ); }; -- 2.20.1