2599cd17c7
Bug 2546 removes the description DB field value in some case (3.15.00.003). But the receipt generated by scripts members/printfeercpt.pl and members/printinvoice.pl displays this field. When the description field is empty, the default value (based on accountlines.accounttype) should be displayed. Test plan: - Generate and pay some different kinds of fees for a patron without filling the 'description' field. - In Fines>Account, click on the 'print' link. - Before this patch, the "description of charges" values is empty if no description was given. It is a regression introduced by bug 2546, a default value was inserted in the description field depending on the account type selected. - After this patch, the "description of charges" values should be based on the account type. The string display on printing receipt should be the same as on the account screen (staff and opac). Note for QA: If removed the "payment" key, it is not used in template and generated a warning ("odd number of elements..."). Signed-off-by: Nick Clemens <nick@quecheelibrary.org> Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> This fixes the display of payments and other charges on the fines slip. Note: This patch fixes a line where the description in the database was still updated to say "Payment thanks" for partial payments. It might be worth to do a follow-up correcting the accountlines table and removing the unwanted comment (see bug 2546). Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
142 lines
4.8 KiB
Perl
Executable file
142 lines
4.8 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
#writen 3rd May 2010 by kmkale@anantcorp.com adapted from boraccount.pl by chris@katipo.oc.nz
|
|
#script to print fee receipts
|
|
|
|
# Copyright Koustubha Kale
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
use C4::Dates qw/format_date/;
|
|
use CGI;
|
|
use C4::Members;
|
|
use C4::Branch;
|
|
use C4::Accounts;
|
|
|
|
my $input = new CGI;
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{ template_name => "members/printinvoice.tt",
|
|
query => $input,
|
|
type => "intranet",
|
|
authnotrequired => 0,
|
|
flagsrequired => { borrowers => 1, updatecharges => 'remaining_permissions' },
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
my $borrowernumber = $input->param('borrowernumber');
|
|
my $action = $input->param('action') || '';
|
|
my $accountlines_id = $input->param('accountlines_id');
|
|
|
|
#get borrower details
|
|
my $data = GetMember( 'borrowernumber' => $borrowernumber );
|
|
|
|
if ( $data->{'category_type'} eq 'C' ) {
|
|
my ( $catcodes, $labels ) = GetborCatFromCatType( 'A', 'WHERE category_type = ?' );
|
|
my $cnt = scalar(@$catcodes);
|
|
$template->param( 'CATCODE_MULTI' => 1 ) if $cnt > 1;
|
|
$template->param( 'catcode' => $catcodes->[0] ) if $cnt == 1;
|
|
}
|
|
|
|
#get account details
|
|
my ( $total, $accts, $numaccts ) = GetMemberAccountRecords($borrowernumber);
|
|
my $totalcredit;
|
|
if ( $total <= 0 ) {
|
|
$totalcredit = 1;
|
|
}
|
|
|
|
my @accountrows; # this is for the tmpl-loop
|
|
|
|
my $toggle;
|
|
for ( my $i = 0 ; $i < $numaccts ; $i++ ) {
|
|
next if ( $accts->[$i]{'accountlines_id'} ne $accountlines_id );
|
|
|
|
if ( $i % 2 ) {
|
|
$toggle = 0;
|
|
} else {
|
|
$toggle = 1;
|
|
}
|
|
|
|
$accts->[$i]{'toggle'} = $toggle;
|
|
$accts->[$i]{'amount'} += 0.00;
|
|
|
|
if ( $accts->[$i]{'amount'} <= 0 ) {
|
|
$accts->[$i]{'amountcredit'} = 1;
|
|
}
|
|
|
|
$accts->[$i]{'amountoutstanding'} += 0.00;
|
|
if ( $accts->[$i]{'amountoutstanding'} <= 0 ) {
|
|
$accts->[$i]{'amountoutstandingcredit'} = 1;
|
|
}
|
|
|
|
my %row = (
|
|
'date' => format_date( $accts->[$i]{'date'} ),
|
|
'amountcredit' => $accts->[$i]{'amountcredit'},
|
|
'amountoutstandingcredit' => $accts->[$i]{'amountoutstandingcredit'},
|
|
'toggle' => $accts->[$i]{'toggle'},
|
|
'description' => $accts->[$i]{'description'},
|
|
'itemnumber' => $accts->[$i]{'itemnumber'},
|
|
'biblionumber' => $accts->[$i]{'biblionumber'},
|
|
'amount' => sprintf( "%.2f", $accts->[$i]{'amount'} ),
|
|
'amountoutstanding' => sprintf( "%.2f", $accts->[$i]{'amountoutstanding'} ),
|
|
'accountno' => $accts->[$i]{'accountno'},
|
|
accounttype => $accts->[$i]{accounttype},
|
|
);
|
|
|
|
if ( $accts->[$i]{'accounttype'} ne 'F' && $accts->[$i]{'accounttype'} ne 'FU' ) {
|
|
$row{'printtitle'} = 1;
|
|
$row{'title'} = $accts->[$i]{'title'};
|
|
}
|
|
|
|
push( @accountrows, \%row );
|
|
}
|
|
|
|
$template->param( adultborrower => 1 ) if ( $data->{'category_type'} eq 'A' );
|
|
|
|
my ( $picture, $dberror ) = GetPatronImage( $data->{'borrowernumber'} );
|
|
$template->param( picture => 1 ) if $picture;
|
|
|
|
$template->param(
|
|
finesview => 1,
|
|
firstname => $data->{'firstname'},
|
|
surname => $data->{'surname'},
|
|
borrowernumber => $borrowernumber,
|
|
cardnumber => $data->{'cardnumber'},
|
|
categorycode => $data->{'categorycode'},
|
|
category_type => $data->{'category_type'},
|
|
categoryname => $data->{'description'},
|
|
address => $data->{'address'},
|
|
address2 => $data->{'address2'},
|
|
city => $data->{'city'},
|
|
zipcode => $data->{'zipcode'},
|
|
country => $data->{'country'},
|
|
phone => $data->{'phone'},
|
|
email => $data->{'email'},
|
|
branchcode => $data->{'branchcode'},
|
|
branchname => GetBranchName( $data->{'branchcode'} ),
|
|
total => sprintf( "%.2f", $total ),
|
|
totalcredit => $totalcredit,
|
|
is_child => ( $data->{'category_type'} eq 'C' ),
|
|
accounts => \@accountrows
|
|
);
|
|
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|