From 6fd825ea20c0bfdfb1640243d60ccc483e87f920 Mon Sep 17 00:00:00 2001 From: Martin Renvoize <martin.renvoize@ptfs-europe.com> Date: Thu, 16 Jul 2020 09:42:20 +0100 Subject: [PATCH] Bug 26734: Ratify account slip printing This patch simplifies the members/print*.pl controller scripts to only pass around the minimum required data for the templates. --- .../prog/en/modules/members/boraccount.tt | 6 +- members/printfeercpt.pl | 100 ++++++------------ members/printinvoice.pl | 78 +++++--------- pos/printreceipt.pl | 25 +++-- 4 files changed, 76 insertions(+), 133 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt index b0b51732ea..1a9d15972b 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt @@ -87,9 +87,9 @@ [% IF account.amountoutstanding <= 0 %]<td class="credit" style="text-align: right;">[% ELSE %]<td class="debit" style="text-align: right;">[% END %][% account.amountoutstanding | $Price %]</td> <td class="actions"> [% IF ( account.is_credit ) %] - <a target="_blank" href="printfeercpt.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]&borrowernumber=[% account.borrowernumber | uri %]" class="btn btn-default btn-xs"><i class="fa fa-print"></i> Print</a> + <a target="_blank" href="printfeercpt.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs"><i class="fa fa-print"></i> Print</a> [% ELSE %] - <a target="_blank" href="printinvoice.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]&borrowernumber=[% account.borrowernumber | uri %]" class="btn btn-default btn-xs"><i class="fa fa-print"></i> Print</a> + <a target="_blank" href="printinvoice.pl?action=print&accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs"><i class="fa fa-print"></i> Print</a> [% END %] <a href="accountline-details.pl?accountlines_id=[% account.accountlines_id | uri %]" class="btn btn-default btn-xs"><i class="fa fa-list"></i> Details</a> [% IF account.is_debit && account.amountoutstanding > 0 %] @@ -316,7 +316,7 @@ <script> $(document).ready(function() { [% IF payment_id && Koha.Preference('FinePaymentAutoPopup') %] - window.open('/cgi-bin/koha/members/printfeercpt.pl?action=print&change_given=[% change_given | html %]&accountlines_id=[% payment_id | html %]&borrowernumber=[% patron.borrowernumber | html %]', '_blank'); + window.open('/cgi-bin/koha/members/printfeercpt.pl?action=print&change_given=[% change_given | html %]&accountlines_id=[% payment_id | html %]', '_blank'); [% END %] var txtActivefilter = _("Filter paid transactions"); diff --git a/members/printfeercpt.pl b/members/printfeercpt.pl index 5777971868..0dd60f3de2 100755 --- a/members/printfeercpt.pl +++ b/members/printfeercpt.pl @@ -1,11 +1,7 @@ #!/usr/bin/perl - -#written 3rd May 2010 by kmkale@anantcorp.com adapted from boraccount.pl by chris@katipo.oc.nz -#script to print fee receipts - - -# Copyright Koustubha Kale +# Copyright Koustubha Kale 2010 +# Copyright PTFS Europe 2020 # # This file is part of Koha. # @@ -27,73 +23,47 @@ use Modern::Perl; use C4::Auth; use C4::Output; use CGI qw ( -utf8 ); -use C4::Members; -use C4::Accounts; use C4::Letters; use Koha::Account::Lines; -use Koha::DateUtils; -use Koha::Patrons; -use Koha::Patron::Categories; - -my $input=CGI->new; - - -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "members/printfeercpt.tt", - query => $input, - type => "intranet", - flagsrequired => {borrowers => 'edit_borrowers', updatecharges => 'remaining_permissions'}, - debug => 1, - }); - -my $borrowernumber=$input->param('borrowernumber'); -my $action = $input->param('action') || ''; -my $accountlines_id = $input->param('accountlines_id'); -my $change_given = $input->param('change_given'); -my $logged_in_user = Koha::Patrons->find( $loggedinuser ); -my $patron = Koha::Patrons->find( $borrowernumber ); -output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); - -#get account details -my $total = $patron->account->balance; - -# FIXME This whole stuff is ugly and should be rewritten -# FIXME We should pass the $accts iterator to the template and do this formatting part there -my $accountline_object = Koha::Account::Lines->find($accountlines_id); -my $accountline = $accountline_object->unblessed; -my $totalcredit; -if($total <= 0){ - $totalcredit = 1; -} - -$accountline->{'amount'} += 0.00; -if ( $accountline->{'amount'} <= 0 ) { - $accountline->{'amountcredit'} = 1; - $accountline->{'amount'} *= -1.00; -} -$accountline->{'amountoutstanding'} += 0.00; -if ( $accountline->{'amountoutstanding'} <= 0 ) { - $accountline->{'amountoutstandingcredit'} = 1; -} +my $input = CGI->new; + +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "members/printfeercpt.tt", + query => $input, + type => "intranet", + flagsrequired => { + borrowers => 'edit_borrowers', + updatecharges => 'remaining_permissions' + } + } +); -my $letter = C4::Letters::getletter( 'circulation', 'ACCOUNT_CREDIT', C4::Context::mybranch, 'print', $patron->lang ); +my $credit_id = $input->param('accountlines_id'); +my $credit = Koha::Account::Lines->find($credit_id); +my $patron = $credit->patron; + +my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in"; +output_and_exit_if_error( + $input, $cookie, + $template, + { + module => 'members', + logged_in_user => $logged_in_user, + current_patron => $patron + } +); -my @account_offsets = Koha::Account::Offsets->search( { credit_id => $accountline_object->id } ); +my $letter = C4::Letters::getletter( 'circulation', 'ACCOUNT_CREDIT', + C4::Context::mybranch, 'print', $patron->lang ); $template->param( - letter => $letter, - patron => $patron, - library => C4::Context::mybranch, - offsets => \@account_offsets, - credit => $accountline_object, - - finesview => 1, - total => $total, - totalcredit => $totalcredit, - accounts => [$accountline], # FIXME There is always only 1 row! + letter => $letter, + credit => $credit, - change_given => $change_given, + tendered => scalar $input->param('tendered'), + change => scalar $input->param('change') ); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/members/printinvoice.pl b/members/printinvoice.pl index 9fd49fb178..4c41461bfa 100755 --- a/members/printinvoice.pl +++ b/members/printinvoice.pl @@ -1,9 +1,7 @@ #!/usr/bin/perl -#written 3rd May 2010 by kmkale@anantcorp.com adapted from boraccount.pl by chris@katipo.oc.nz -#script to print fee receipts - -# Copyright Koustubha Kale +# Copyright Koustubha Kale 2010 +# Copyright PTFS Europe 2020 # # This file is part of Koha. # @@ -24,70 +22,46 @@ use Modern::Perl; use C4::Auth; use C4::Output; -use Koha::DateUtils; use CGI qw ( -utf8 ); -use C4::Members; -use C4::Accounts; - +use C4::Letters; use Koha::Account::Lines; -use Koha::Patrons; -use Koha::Patron::Categories; my $input = CGI->new; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { template_name => "members/printinvoice.tt", + { + template_name => "members/printinvoice.tt", query => $input, type => "intranet", - flagsrequired => { borrowers => 'edit_borrowers', updatecharges => 'remaining_permissions' }, - debug => 1, + flagsrequired => { + borrowers => 'edit_borrowers', + updatecharges => 'remaining_permissions' + } } ); -my $borrowernumber = $input->param('borrowernumber'); -my $action = $input->param('action') || ''; -my $accountlines_id = $input->param('accountlines_id'); - -my $logged_in_user = Koha::Patrons->find( $loggedinuser ); -my $patron = Koha::Patrons->find( $borrowernumber ); -output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } ); - -#get account details -my $total = $patron->account->balance; -my $accountline_object = Koha::Account::Lines->find($accountlines_id); -my $accountline = $accountline_object->unblessed; - -my $totalcredit; -if ( $total <= 0 ) { - $totalcredit = 1; -} - - -$accountline->{'amount'} += 0.00; -if ( $accountline->{'amount'} <= 0 ) { - $accountline->{'amountcredit'} = 1; - $accountline->{'amount'} *= -1.00; -} -$accountline->{'amountoutstanding'} += 0.00; -if ( $accountline->{'amountoutstanding'} <= 0 ) { - $accountline->{'amountoutstandingcredit'} = 1; -} - -my @account_offsets = Koha::Account::Offsets->search( { debit_id => $accountline_object->id } ); +my $debit_id = $input->param('accountlines_id'); +my $debit = Koha::Account::Lines->find($debit_id); +my $patron = $debit->patron; + +my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in"; +output_and_exit_if_error( + $input, $cookie, + $template, + { + module => 'members', + logged_in_user => $logged_in_user, + current_patron => $patron + } +); -my $letter = C4::Letters::getletter( 'circulation', 'ACCOUNT_DEBIT', C4::Context::mybranch, 'print', $patron->lang ); +my $letter = C4::Letters::getletter( 'circulation', 'ACCOUNT_DEBIT', + C4::Context::mybranch, 'print', $patron->lang ); $template->param( letter => $letter, - patron => $patron, - library => C4::Context::mybranch, - offsets => \@account_offsets, - debit => $accountline_object, + debit => $debit - finesview => 1, - total => sprintf( "%.2f", $total ), - totalcredit => $totalcredit, - accounts => [$accountline], # FIXME There is always only 1 row! ); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/pos/printreceipt.pl b/pos/printreceipt.pl index bb3861d04c..14e4b72484 100755 --- a/pos/printreceipt.pl +++ b/pos/printreceipt.pl @@ -36,31 +36,30 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -my $action = $input->param('action') || ''; my $payment_id = $input->param('accountlines_id'); +my $payment = Koha::Account::Lines->find($payment_id); +my $patron = $payment->patron; my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in"; output_and_exit_if_error( $input, $cookie, $template, { - module => 'pos', + module => 'members', logged_in_user => $logged_in_user, + current_patron => $patron } -); - -my $payment = Koha::Account::Lines->find($payment_id); -my @offsets = Koha::Account::Offsets->search( { credit_id => $payment_id } ); +) if $patron; # Payment could have been anonymous -my $letter = - C4::Letters::getletter( 'pos', 'RECEIPT', C4::Context::mybranch, 'print' ); +my $letter = C4::Letters::getletter( 'pos', 'RECEIPT', + C4::Context::mybranch, 'print', $patron->lang ); $template->param( - letter => $letter, - payment => $payment, - offsets => \@offsets, - collected => scalar $input->param('collected'), - change => scalar $input->param('change') + letter => $letter, + payment => $payment, + + tendered => scalar $input->param('tendered'), + change => scalar $input->param('change') ); output_html_with_http_headers $input, $cookie, $template->output; -- 2.20.1