Bugzilla – Attachment 10663 Details for
Bug 7639
system preference to forgive fines on lost items
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
0001-Bug-7639-system-preference-to-forgive-fines-on-lost---.patch (text/plain), 10.02 KB, created by
Meenakshi
on 2012-07-06 06:15:49 UTC
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Meenakshi
Created:
2012-07-06 06:15:49 UTC
Size:
10.02 KB
patch
obsolete
>From a2e19b7a4d235a070acbf811a8d68414e3011fa5 Mon Sep 17 00:00:00 2001 >From: Meenakshi.R <meenakshi.r@osslabs.biz> >Date: Fri, 6 Jul 2012 10:42:50 +0530 >Subject: [PATCH] Bug 7639 - system preference to forgive fines on lost items > > Forgive fine when an item is set to lost status, fines are forgiven only when syspref ForgiveFineWhenLost is set to yes. Item can be set to lost status from: > catalogue/moredetail.pl > cataloguing/additem.pl > tools/batchMod.pl > misc/cronjobs/longoverdue.pl > > Changed sub C4::Circulation::LostItem to forgive fines on the item depending on the value of syspref ForgiveFineWhenLost. This sub is currently used to return an item and charge a replacement cost. > > Also added a new syspref in C4::Circulation::LostItem - ChargeReplFeeWhenLost. Replacement fee will now be charged only if this syspref is set to yes. > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> >--- > C4/Circulation.pm | 24 ++++++++++++------- > catalogue/updateitem.pl | 2 +- > cataloguing/additem.pl | 7 +++++ > installer/data/mysql/sysprefs.sql | 2 + > installer/data/mysql/updatedatabase.pl | 8 ++++++ > .../en/modules/admin/preferences/circulation.pref | 12 ++++++++++ > misc/cronjobs/longoverdue.pl | 2 +- > tools/batchMod.pl | 2 +- > 8 files changed, 47 insertions(+), 12 deletions(-) > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index 3742ec7..0f02a84 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -3078,7 +3078,7 @@ sub ReturnLostItem{ > > > 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 >@@ -3091,14 +3091,20 @@ sub LostItem{ > $sth->finish; > > # if a borrower lost the item, add a replacement cost to the their record >- if ( my $borrowernumber = $issues->{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 "; >- MarkIssueReturned($borrowernumber,$itemnumber) if $mark_returned; >- } >+ if ( my $borrowernumber = $issues->{borrowernumber} ){ >+ if (C4::Context->preference('ForgiveFineWhenLost')){ >+ 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('ChargeReplFeeWhenLost')){ >+ 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) if $mark_returned; >+ } > } > > sub GetOfflineOperations { >diff --git a/catalogue/updateitem.pl b/catalogue/updateitem.pl >index abc809d..21e3c01 100755 >--- a/catalogue/updateitem.pl >+++ b/catalogue/updateitem.pl >@@ -74,6 +74,6 @@ if (defined $itemnotes) { # i.e., itemnotes parameter passed from form > > 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"); >diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl >index 9c8120e..c34731f 100755 >--- a/cataloguing/additem.pl >+++ b/cataloguing/additem.pl >@@ -27,6 +27,7 @@ use C4::Output; > 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; >@@ -519,6 +520,12 @@ if ($op eq "additem") { > 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'; >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index 49debd2..52935ea 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -34,6 +34,8 @@ INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('expandedSearchOption',0,'If ON, set advanced search to be expanded by default',NULL,'YesNo'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('FineNotifyAtCheckin',0,'If ON notify librarians of overdue fines on the items they are checking in.',NULL,'YesNo'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('FinesLog',1,'If ON, log fines',NULL,'YesNo'); >+INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('ForgiveFineWhenLost','0',NULL,'If ON, Forgives the fines on an item when it is lost.','YesNo'); >+INSERT INTO `systempreferences` (variable,value,options,explanation,type) VALUES('ChargeReplFeeWhenLost','1',NULL,'If ON, Charge the replacement price when a patron loses an item.','YesNo'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('hidelostitems',0,'If ON, disables display of\"lost\" items in OPAC.','','YesNo'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('hide_marc',0,'If ON, disables display of MARC fields, subfield codes & indicators (still shows data)',NULL,'YesNo'); > INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('WaitingNotifyAtCheckin',0,'If ON, notify librarians of waiting holds for the patron whose items they are checking in.',NULL,'YesNo'); >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 84f0437..40cb948 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -5212,6 +5212,14 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { > SetVersion($DBversion); > } > >+$DBversion = "3.08.00.XXX"; >+if (C4::Context->preference("Version") < TransformToNum($DBversion)) { >+ $dbh->do("INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES('ForgiveFineWhenLost','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('ChargeReplFeeWhenLost','1',NULL,'If ON, Charge the replacement price when a patron loses an item.','YesNo')"); >+ print "Upgrade to $DBversion done (Added sysprefs ForgiveFineWhenLost and ChargeReplFeeWhenLost)\n"; >+ SetVersion ($DBversion); >+} >+ > =head1 FUNCTIONS > > =head2 TableExists($table) >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >index 471aa0e..cf96088 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref >@@ -367,6 +367,18 @@ Circulation: > test: Calculate (but only for mailing to the admin) > production: Calculate and charge > - fines (when <code>misc/cronjobs/fines.pl</code> is being run). >+ - >+ - pref: ForgiveFineWhenLost >+ choices: >+ yes: Forgive >+ no: "Don't Forgive" >+ - the fines on an item when it is lost. >+ - >+ - pref: ChargeReplFeeWhenLost >+ choices: >+ yes: Charge >+ no: "Don't Charge" >+ - the replacement price when a patron loses an item. > Self Checkout: > - > - pref: ShowPatronImageInWebBasedSelfCheck >diff --git a/misc/cronjobs/longoverdue.pl b/misc/cronjobs/longoverdue.pl >index 159db51..0f64712 100755 >--- a/misc/cronjobs/longoverdue.pl >+++ b/misc/cronjobs/longoverdue.pl >@@ -165,7 +165,7 @@ foreach my $startrange (sort keys %$lost) { > 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++; > } >diff --git a/tools/batchMod.pl b/tools/batchMod.pl >index 9d59e3a..10388af 100755 >--- a/tools/batchMod.pl >+++ b/tools/batchMod.pl >@@ -188,7 +188,7 @@ if ($op eq "action") { > 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}; > } > }; > } >-- >1.7.2.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 7639
:
9281
|
9282
|
9436
|
10662
|
10663
|
13006
|
13007
|
14961
|
14962
|
15088
|
15089
|
16593
|
16607
|
16608
|
16609
|
16729
|
16730
|
16731
|
18929
|
18930
|
18932
|
18964
|
18965
|
18966
|
19654
|
19655
|
19656
|
19657
|
20436
|
20437
|
20438
|
20439
|
20456
|
20487