View | Details | Raw Unified | Return to bug 9129
Collapse All | Expand All

(-)a/C4/Overdues.pm (+13 lines)
Lines 268-275 sub CalcFine { Link Here
268
    } else {
268
    } else {
269
        # a zero (or null) chargeperiod or negative units_minus_grace value means no charge.
269
        # a zero (or null) chargeperiod or negative units_minus_grace value means no charge.
270
    }
270
    }
271
271
    $amount = $data->{overduefinescap} if $data->{overduefinescap} && $amount > $data->{overduefinescap};
272
    $amount = $data->{overduefinescap} if $data->{overduefinescap} && $amount > $data->{overduefinescap};
273
    $amount = $item->{'replacementprice'} if ( C4::Context->preference('MaxFineIsReplacementPrice') && $item->{'replacementprice'} && $amount > $item->{'replacementprice'} );
274
272
    $debug and warn sprintf("CalcFine returning (%s, %s, %s, %s)", $amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units);
275
    $debug and warn sprintf("CalcFine returning (%s, %s, %s, %s)", $amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units);
276
273
    return ($amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units);
277
    return ($amount, $data->{'chargename'}, $units_minus_grace, $chargeable_units);
274
    # FIXME: chargename is NEVER populated anywhere.
278
    # FIXME: chargename is NEVER populated anywhere.
275
}
279
}
Lines 543-548 sub UpdateFine { Link Here
543
        $total_amount_other += $rec->{'amountoutstanding'};
547
        $total_amount_other += $rec->{'amountoutstanding'};
544
    }
548
    }
545
549
550
    if ( C4::Context->preference('MaxFineIsReplacementPrice') ) {
551
        my $item = C4::Items::GetItem( $itemnum );
552
        if ( $item->{'replacementprice'} && $amount > $item->{'replacementprice'} ) {
553
            $debug && warn "Reducing fine for item $itemnum borrower $borrowernumber from $amount to $item->{'replacementprice'} - Fine exceeds replacement price";
554
            $amount = $item->{'replacementprice'};
555
        }
556
    }
557
546
    if (my $maxfine = C4::Context->preference('MaxFine')) {
558
    if (my $maxfine = C4::Context->preference('MaxFine')) {
547
        if ($total_amount_other + $amount > $maxfine) {
559
        if ($total_amount_other + $amount > $maxfine) {
548
            my $new_amount = $maxfine - $total_amount_other;
560
            my $new_amount = $maxfine - $total_amount_other;
Lines 552-557 sub UpdateFine { Link Here
552
        }
564
        }
553
    }
565
    }
554
566
567
555
    if ( $data ) {
568
    if ( $data ) {
556
569
557
		# we're updating an existing fine.  Only modify if amount changed
570
		# we're updating an existing fine.  Only modify if amount changed
(-)a/installer/data/mysql/sysprefs.sql (+1 lines)
Lines 426-428 INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ( Link Here
426
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UniqueItemFields', 'barcode', 'Space-separated list of fields that should be unique (used in acquisition module for item creation). Fields must be valid SQL column names of items table', '', 'Free');
426
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UniqueItemFields', 'barcode', 'Space-separated list of fields that should be unique (used in acquisition module for item creation). Fields must be valid SQL column names of items table', '', 'Free');
427
INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('UseCourseReserves', '0', 'Enable the course reserves feature.', NULL, 'YesNo');
427
INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('UseCourseReserves', '0', 'Enable the course reserves feature.', NULL, 'YesNo');
428
INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowHoldNotes',0,'Show hold notes on OPAC','','YesNo');
428
INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacShowHoldNotes',0,'Show hold notes on OPAC','','YesNo');
429
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('MaxFineIsReplacementPrice',0,'Make the replacement price a second max fine ceiling.',NULL,'YesNo');
(-)a/installer/data/mysql/updatedatabase.pl (+8 lines)
Lines 6971-6976 if(CheckVersion($DBversion)) { Link Here
6971
    SetVersion ($DBversion);
6971
    SetVersion ($DBversion);
6972
}
6972
}
6973
6973
6974
$DBversion = "3.13.00.XXX";
6975
if ( CheckVersion($DBversion) ) {
6976
   $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('MaxFineIsReplacementPrice',0,'Make the replacement price a second max fine ceiling.',NULL,'YesNo')");
6977
   print "Upgrade to $DBversion done (Bug 9129: Add syspref MaxFineIsReplacementPrice)\n";
6978
   SetVersion ($DBversion);
6979
}
6980
6981
6974
=head1 FUNCTIONS
6982
=head1 FUNCTIONS
6975
6983
6976
=head2 TableExists($table)
6984
=head2 TableExists($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref (-1 / +6 lines)
Lines 80-85 Patrons: Link Here
80
         - '[% local_currency %].'
80
         - '[% local_currency %].'
81
         - Empty value means no limit. Single item caps are specified in the circulation rules matrix.
81
         - Empty value means no limit. Single item caps are specified in the circulation rules matrix.
82
     -
82
     -
83
         - pref: MaxFineIsReplacementPrice
84
           choices:
85
               yes: Allow
86
               no: "Don't allow"
87
         - the maximum fine for an item to exceed the replacement price for that item.
88
     -
83
         - pref: memberofinstitution
89
         - pref: memberofinstitution
84
           choices:
90
           choices:
85
               yes: Do
91
               yes: Do
86
- 

Return to bug 9129