[Koha-patches] [PATCH 4/4] Bug 4440: Adding feature to print fines/fees receipts

Koustubha Kale kmkale at anantcorp.com
Tue May 4 23:03:35 CEST 2010


Small enhancement to allow printing of Fees  / Fines receipts from the Fines
page.
Submitting a patch which adds print links to the Fines page with two helper
files namely koha-tmpl/intranet-tmpl/prog/en/modules/members/fee-receipt.tmpl
and members/printfeercpt.pl

This will pop a new window when you click on the print link next to any receipt
and will print that with total outstanding as on date.

Can easily be adapted to print invoices too.
---
 .../prog/en/modules/members/boraccount.tmpl        |   10 ++-
 .../prog/en/modules/members/fee-receipt.tmpl       |   45 ++++++
 members/printfeercpt.pl                            |  142 ++++++++++++++++++++
 3 files changed, 196 insertions(+), 1 deletions(-)
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/members/fee-receipt.tmpl
 create mode 100755 members/printfeercpt.pl

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tmpl
index 8f649ad..689ed49 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tmpl
@@ -33,6 +33,7 @@
     <th>Amount</th>
     <th>Outstanding</th>
     <th>&nbsp;</th>
+    <th>Print</th>	
   </tr>
 
 	<!-- FIXME: Shouldn't hardcode dollar signs, since Euro or Pound might be needed -->
@@ -50,12 +51,19 @@
 		&nbsp;
 	<!-- /TMPL_IF -->
       </td>
+<td>
+	<!-- TMPL_IF NAME="payment" -->
+		<a target="_blank" href="printfeercpt.pl?action=print&borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->&accountno=<!-- TMPL_VAR NAME="accountno" -->">Print</a>
+	<!-- TMPL_ELSE -->
+		&nbsp;
+	<!-- /TMPL_IF -->
+      </td>
     </tr>
 
   <!-- /TMPL_LOOP -->
 <tfoot>
   <tr>
-    <td colspan="3">Total due</td>
+    <td colspan="4">Total due</td>
     <!-- TMPL_IF NAME="totalcredit" --><td colspan="2" class="credit"><!-- TMPL_ELSE --><td colspan="2" class="debit"><!-- /TMPL_IF --><!-- TMPL_VAR NAME="total" --></td>
   </tr>
   </tfoot>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/fee-receipt.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/fee-receipt.tmpl
new file mode 100644
index 0000000..7dbad00
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/fee-receipt.tmpl
@@ -0,0 +1,45 @@
+<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
+<title>Print Receipt for <!-- TMPL_VAR NAME="cardnumber" --></title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<link rel="shortcut icon" href="<!-- TMPL_VAR NAME="themelang" -->/includes/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" href="<!-- TMPL_VAR NAME="themelang" -->/css/print.css" />
+<script language="javascript">
+        window.print();
+        window.close();
+</script>
+</head>
+<body>
+
+<div id="receipt">
+
+<h3><!-- TMPL_VAR name="LibraryName" --></h3>
+<h2> Fee Receipt</h2>
+<!-- TMPL_IF NAME="branchname" --><h2><!-- TMPL_VAR NAME="branchname" --></h2><!-- /TMPL_IF -->
+Received with thanks from  <!-- TMPL_VAR NAME="firstname"> <!-- TMPL_VAR NAME="surname"> <br />
+Card Number : <!-- TMPL_VAR NAME="cardnumber" --><br />
+
+<!-- The table with the account items -->
+<table border="1">
+  <tr>
+  	<th>Date</th>
+    <th>Description of charges</th>
+    <th>Amount</th>
+ </tr>
+
+  <!-- TMPL_LOOP NAME="accounts" -->
+<tr class="highlight">
+      <td><!-- TMPL_VAR NAME="date" --></td>
+      <td><!-- TMPL_VAR NAME="description" --></td>
+      <!-- TMPL_IF NAME="amountcredit" --><td class="credit"><!-- TMPL_ELSE --><td class="debit"><!-- /TMPL_IF --><!-- TMPL_VAR NAME="amount" --></td>
+    </tr>
+
+  <!-- /TMPL_LOOP -->
+<tfoot>
+  <tr>
+    <td colspan="2">Total outstanding dues as on date : </td>
+    <!-- TMPL_IF NAME="totalcredit" --><td class="credit"><!-- TMPL_ELSE --><td class="debit"><!-- /TMPL_IF --><!-- TMPL_VAR NAME="total" --></td>
+  </tr>
+  </tfoot>
+</table>
+</div>
+<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
diff --git a/members/printfeercpt.pl b/members/printfeercpt.pl
new file mode 100755
index 0000000..1bc8b15
--- /dev/null
+++ b/members/printfeercpt.pl
@@ -0,0 +1,142 @@
+#!/usr/bin/perl
+
+
+#writen 3rd May 2010 by kmkale at anantcorp.com adapted from boraccount.pl by chris at 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/fee-receipt.tmpl",
+                            query => $input,
+                            type => "intranet",
+                            authnotrequired => 0,
+                            flagsrequired => {borrowers => 1, updatecharges => 1},
+                            debug => 1,
+                            });
+
+my $borrowernumber=$input->param('borrowernumber');
+my $action = $input->param('action') || '';
+my $accountno = $input->param('accountno');
+
+#get borrower details
+my $data=GetMember('borrowernumber' => $borrowernumber);
+
+if ( $action eq 'print' ) {
+#  ReversePayment( $borrowernumber, $input->param('accountno') );
+}
+
+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]{'accountno'} ne $accountno);
+    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'},
+                'payment' => ( $accts->[$i]{'accounttype'} eq 'Pay' ),
+                
+                );
+    
+    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->{'cardnumber'});
+$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'},
+ #   category_description => $data->{'description'},
+    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;
-- 
1.6.3.3




More information about the Koha-patches mailing list