Bug 30813: Adjust TransformMarcToKoha to take kohafields parameter
[koha-ffzg.git] / C4 / Overdues.pm
index 9041bb7..a31d2b4 100644 (file)
@@ -90,14 +90,14 @@ sub Getoverdues {
     my $statement;
     if ( C4::Context->preference('item-level_itypes') ) {
         $statement = "
-   SELECT issues.*, items.itype as itemtype, items.homebranch, items.barcode, items.itemlost, items.replacementprice
+   SELECT issues.*, items.itype as itemtype, items.homebranch, items.barcode, items.itemlost, items.replacementprice, items.biblionumber
      FROM issues 
 LEFT JOIN items       USING (itemnumber)
     WHERE date_due < NOW()
 ";
     } else {
         $statement = "
-   SELECT issues.*, biblioitems.itemtype, items.itype, items.homebranch, items.barcode, items.itemlost, replacementprice
+   SELECT issues.*, biblioitems.itemtype, items.itype, items.homebranch, items.barcode, items.itemlost, replacementprice, items.biblionumber
      FROM issues 
 LEFT JOIN items       USING (itemnumber)
 LEFT JOIN biblioitems USING (biblioitemnumber)
@@ -260,11 +260,11 @@ sub CalcFine {
 
         # check if item has been recalled. recall should have been marked Overdue by cronjob, so only look at overdue recalls
         # only charge using recall_overdue_fine if there is an item-level recall for this particular item, OR a biblio-level recall
-        my @recalls = Koha::Recalls->search({ biblionumber => $item->{biblionumber}, old => undef, status => 'O' });
+        my @recalls = Koha::Recalls->search({ biblio_id => $item->{biblionumber}, status => 'overdue' })->as_list;
         my $bib_level_recall = 0;
         $bib_level_recall = 1 if scalar @recalls > 0;
         foreach my $recall ( @recalls ) {
-            if ( $recall->item_level_recall and $recall->itemnumber == $item->{itemnumber} and $issuing_rule->{recall_overdue_fine} ) {
+            if ( $recall->item_level and $recall->item_id == $item->{itemnumber} and $issuing_rule->{recall_overdue_fine} ) {
                 $bib_level_recall = 0;
                 $amount = $charge_periods * $issuing_rule->{recall_overdue_fine};
                 last;
@@ -274,7 +274,7 @@ sub CalcFine {
             # biblio-level recall
             $amount = $charge_periods * $issuing_rule->{recall_overdue_fine};
         }
-        if ( scalar @recalls == 0 ) {
+        if ( scalar @recalls == 0 && $issuing_rule->{fine}) {
             # no recall, use normal fine amount
             $amount = $charge_periods * $issuing_rule->{fine};
         }