Browse Source

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.

Test plan
Slips should continue to print as they did prior to the patch
1/ Add a manual invoice and manual debit to a patrons account
2/ Print a slip for the manual invoice, compare to a printed slip prior
to the patch.
3/ Print a slip for the manual debit, compare to a printed slip prior to
the patch.
4/ Signoff.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
21.05.x
Martin Renvoize 3 years ago
committed by Jonathan Druart
parent
commit
58ec862da2
  1. 6
      koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt
  2. 100
      members/printfeercpt.pl
  3. 78
      members/printinvoice.pl
  4. 25
      pos/printreceipt.pl

6
koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt

@ -103,9 +103,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&amp;accountlines_id=[% account.accountlines_id | uri %]&amp;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&amp;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&amp;accountlines_id=[% account.accountlines_id | uri %]&amp;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&amp;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 %]
@ -343,7 +343,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");

100
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;

78
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;

25
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;

Loading…
Cancel
Save