[Koha-patches] [PATCH 34/55] (MT #2267) show borrower charges returning a document

Henri-Damien LAURENT henridamien.laurent at biblibre.com
Wed Mar 10 22:26:16 CET 2010


From: Nahuel ANGELINETTI <nahuel.angelinetti at biblibre.com>

This patch do:
 * rewrite setstatus.pl to redirect to the good url
 * modify GetFine to don't need itemnumber
 * Show borrower's charge when returning a document

Conflict Solved : circ/returns.pl C4/Circulation.pm

Signed-off-by: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>
---
 C4/Circulation.pm                                  |   12 +++++++++++-
 C4/Overdues.pm                                     |   10 ++++------
 circ/returns.pl                                    |   11 +++++++++++
 .../prog/en/modules/circ/returns.tmpl              |    3 +++
 members/setstatus.pl                               |    4 ++--
 5 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index 5f23199..fc7454a 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -30,6 +30,7 @@ use C4::Members;
 use C4::Dates;
 use C4::Calendar;
 use C4::Accounts;
+use C4::Overdues qw/GetFine/;
 use C4::ItemCirculationAlertPreference;
 use C4::Message;
 use C4::Debug;
@@ -1511,10 +1512,19 @@ sub AddReturn {
         $messages->{'WasLost'} = 1;
     }
 
-    # fix up the overdues in accounts...
     if ($borrowernumber) {
+        # fix up the overdues in accounts...
         my $fix = _FixOverduesOnReturn($borrowernumber, $item->{itemnumber}, $exemptfine, $dropbox);
         defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $item->{itemnumber}...) failed!";  # zero is OK, check defined
+    
+        # fix fine days
+        my $debardate = _FixFineDaysOnReturn($issue->{borrowernumber}, $itemnumber, $issue->{date_due});
+        $messages->{'Debarred'} = $debardate if($debardate);
+
+        # get fines for the borrower
+        my $fineamount = C4::Overdues::GetFine($borrowernumber);
+        $messages->{'HaveFines'} = $fineamount if($fineamount);
+        
     }
 
     # find reserves.....
diff --git a/C4/Overdues.pm b/C4/Overdues.pm
index ca8cbd0..94b72ab 100644
--- a/C4/Overdues.pm
+++ b/C4/Overdues.pm
@@ -598,25 +598,23 @@ sub ReplacementCost {
 
 =head2 GetFine
 
-$data->{'sum(amountoutstanding)'} = &GetFine($itemnum,$borrowernumber);
+$data->{'sum(amountoutstanding)'} = &GetFine($borrowernumber);
 
 return the total of fine
 
-C<$itemnum> is item number
-
 C<$borrowernumber> is the borrowernumber
 
 =cut 
 
 
 sub GetFine {
-    my ( $itemnum, $borrowernumber ) = @_;
+    my ( $borrowernumber ) = @_;
     my $dbh   = C4::Context->dbh();
     my $query = "SELECT sum(amountoutstanding) FROM accountlines
     where accounttype like 'F%'  
-  AND amountoutstanding > 0 AND itemnumber = ? AND borrowernumber=?";
+  AND amountoutstanding > 0 AND borrowernumber=?";
     my $sth = $dbh->prepare($query);
-    $sth->execute( $itemnum, $borrowernumber );
+    $sth->execute( $borrowernumber );
     my $data = $sth->fetchrow_hashref();
     return ( $data->{'sum(amountoutstanding)'} );
 }
diff --git a/circ/returns.pl b/circ/returns.pl
index 0b08219..6898087 100755
--- a/circ/returns.pl
+++ b/circ/returns.pl
@@ -36,6 +36,7 @@ use C4::Circulation;
 use C4::Dates qw/format_date/;
 use Date::Calc qw/Add_Delta_Days/;
 use C4::Calendar;
+use C4::Budgets qw/GetCurrency/;
 use C4::Print;
 use C4::Reserves;
 use C4::Biblio;
@@ -395,6 +396,16 @@ foreach my $code ( keys %$messages ) {
     elsif ( $code eq 'WasTransfered' ) {
         ;    # FIXME... anything to do here?
     }
+    elsif( $code eq 'Debarred' ){
+        $err{debarred}        = format_date($messages->{'Debarred'});
+        $err{debarcardnumber} = $borrower->{cardnumber};
+        $err{debarname}       = "$borrower->{firstname} $borrower->{surname}";
+    }
+    elsif( $code eq 'HaveFines' ){
+        $err{havefines}       = $borrower->{'flags'}->{'CHARGES'}->{'amount'} . %{GetCurrency()}->{symbol};
+        $err{finecardnumber} = $borrower->{cardnumber};
+        $err{finename}       = "$borrower->{firstname} $borrower->{surname}";
+    }
     elsif ( $code eq 'wthdrawn' ) {
         $err{withdrawn} = 1;
         $exit_required_p = 1;
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tmpl
index b8bab7f..61b8d73 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tmpl
@@ -293,6 +293,9 @@ function Dopop(link) {
                     <!-- TMPL_IF Name="waslost" -->
                         <p class="problem">Item was lost, now found.</p>
                     <!-- /TMPL_IF -->
+                    <!-- TMPL_IF Name="havefines" -->
+                        <p class="problem"><!-- TMPL_VAR NAME="finename" --> (<!-- TMPL_VAR NAME="finecardnumber" -->) has an outstanding fine of <!-- TMPL_VAR NAME="havefines" --> for books returned late.</p>
+                    <!-- /TMPL_IF -->
                     <!-- TMPL_IF Name="withdrawn" -->
                         <p class="problem">Item is withdrawn.</p>
                     <!-- /TMPL_IF -->
diff --git a/members/setstatus.pl b/members/setstatus.pl
index fc27c17..bf7b96d 100755
--- a/members/setstatus.pl
+++ b/members/setstatus.pl
@@ -63,8 +63,8 @@ if($destination eq "circ"){
 	}
 } else {
 	if($dateexpiry){
-		print $input->redirect("/cgi-bin/koha/members/moremember.pl?bornum=$borrowernumber&dateexpiry=$dateexpiry");
+		print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber&dateexpiry=$dateexpiry");
 	} else {
-		print $input->redirect("/cgi-bin/koha/members/moremember.pl?bornum=$borrowernumber");
+		print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber");
 	}
 }
-- 
1.6.3.3




More information about the Koha-patches mailing list