sub LostItem{
- my ($itemnumber, $mark_returned, $charge_fee) = @_;
+ my ($itemnumber, $mark_returned) = @_;
my $dbh = C4::Context->dbh();
my $sth=$dbh->prepare("SELECT issues.*,items.*,biblio.title
my $issues=$sth->fetchrow_hashref();
$sth->finish;
- # if a borrower lost the item, add a replacement cost to the their record
+ # If a borrower lost the item, add a replacement cost to the their record
if ( my $borrowernumber = $issues->{borrowernumber} ){
my $borrower = C4::Members::GetMemberDetails( $borrowernumber );
- C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}")
- if $charge_fee;
- #FIXME : Should probably have a way to distinguish this from an item that really was returned.
- #warn " $issues->{'borrowernumber'} / $itemnumber ";
+ if (C4::Context->preference('WhenLostForgiveFine')){
+ my $exemptfine=1;
+ my $dropbox=0;
+ my $fix = _FixOverduesOnReturn($borrowernumber, $itemnumber, $exemptfine, $dropbox);
+ defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $itemnumber...) failed!"; # zero is OK, check defined
+ }
+ if (C4::Context->preference('WhenLostChargeReplacementFee')){
+ C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}");
+ #FIXME : Should probably have a way to distinguish this from an item that really was returned.
+ #warn " $issues->{'borrowernumber'} / $itemnumber ";
+ }
+
MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$borrower->{'privacy'}) if $mark_returned;
}
}
ModItem($item_changes, $biblionumber, $itemnumber);
-LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $itemlost;
+LostItem($itemnumber, 'MARK RETURNED') if $itemlost;
print $cgi->redirect("moredetail.pl?biblionumber=$biblionumber&itemnumber=$itemnumber#item$itemnumber");
use C4::Biblio;
use C4::Items;
use C4::Context;
+use C4::Circulation;
use C4::Koha; # XXX subfield_is_koha_internal_p
use C4::Branch; # XXX subfield_is_koha_internal_p
use C4::ClassSource;
ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
$itemnumber="";
}
+ my $item = GetItem( $itemnumber );
+ my $olditemlost = $item->{'itemlost'};
+ my $newitemlost = $itemtosave->subfield('952','1');
+ if (($olditemlost eq '0' or $olditemlost eq '' ) and $newitemlost ge '1'){
+ LostItem($itemnumber,'MARK RETURNED');
+ }
$nextop="additem";
} elsif ($op eq "delinkitem"){
my $analyticfield = '773';
('virtualshelves','1','','If ON, enables Lists management','YesNo'),
('WaitingNotifyAtCheckin','0',NULL,'If ON, notify librarians of waiting holds for the patron whose items they are checking in.','YesNo'),
('WebBasedSelfCheck','0',NULL,'If ON, enables the web-based self-check system','YesNo'),
+('WhenLostChargeReplacementFee','1',NULL,'If ON, Charge the replacement price when a patron loses an item.','YesNo'),
+('WhenLostForgiveFine','0',NULL,'If ON, Forgives the fines on an item when it is lost.','YesNo'),
('XISBN','0','','Use with FRBRizeEditions. If ON, Koha will use the OCLC xISBN web service in the Editions tab on the detail pages. See: http://www.worldcat.org/affiliate/webservices/xisbn/app.jsp','YesNo'),
('XISBNDailyLimit','999','','The xISBN Web service is free for non-commercial use when usage does not exceed 1000 requests per day','Integer'),
('XSLTDetailsDisplay','default','','Enable XSL stylesheet control over details page display on intranet','Free'),
SetVersion($DBversion);
}
+
+$DBversion = "3.13.00.XXX";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('WhenLostForgiveFine','0',NULL,'If ON, Forgives the fines on an item when it is lost.','YesNo')");
+ $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('WhenLostChargeReplacementFee','1',NULL,'If ON, Charge the replacement price when a patron loses an item.','YesNo')");
+ print "Upgrade to $DBversion done (Bug 7639: Added sysprefs WhenLostForgiveFine and WhenLostChargeReplacementFee)\n";
+ SetVersion ($DBversion);
+}
+
=head1 FUNCTIONS
=head2 TableExists($table)
yes: Include
no: "Don't include"
- the grace period when calculating the fine for an overdue item.
+ -
+ - pref: WhenLostForgiveFine
+ choices:
+ yes: Forgive
+ no: "Don't Forgive"
+ - the fines on an item when it is lost.
+ -
+ - pref: WhenLostChargeReplacementFee
+ choices:
+ yes: Charge
+ no: "Don't Charge"
+ - the replacement price when a patron loses an item.
Self Checkout:
-
- "Include the following JavaScript on all pages in the web-based self checkout:"
printf ("Due %s: item %5s from borrower %5s to lost: %s\n", $row->{date_due}, $row->{itemnumber}, $row->{borrowernumber}, $lostvalue) if($verbose);
if($confirm) {
ModItem({ itemlost => $lostvalue }, $row->{'biblionumber'}, $row->{'itemnumber'});
- LostItem($row->{'itemnumber'}, $mark_returned, 'CHARGE FEE') if( $charge && $charge eq $lostvalue);
+ LostItem($row->{'itemnumber'}, $mark_returned) if( $charge && $charge eq $lostvalue);
}
$count++;
}
UpdateMarcWith( $marcitem, $localmarcitem );
eval{
if ( my $item = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) ) {
- LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $item->{itemlost};
+ LostItem($itemnumber, 'MARK RETURNED') if $item->{itemlost};
}
};
}