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

(-)a/C4/Circulation.pm (-6 / +14 lines)
Lines 3281-3287 sub ReturnLostItem{ Link Here
3281
3281
3282
3282
3283
sub LostItem{
3283
sub LostItem{
3284
    my ($itemnumber, $mark_returned, $charge_fee) = @_;
3284
    my ($itemnumber, $mark_returned) = @_;
3285
3285
3286
    my $dbh = C4::Context->dbh();
3286
    my $dbh = C4::Context->dbh();
3287
    my $sth=$dbh->prepare("SELECT issues.*,items.*,biblio.title 
3287
    my $sth=$dbh->prepare("SELECT issues.*,items.*,biblio.title 
Lines 3293-3306 sub LostItem{ Link Here
3293
    my $issues=$sth->fetchrow_hashref();
3293
    my $issues=$sth->fetchrow_hashref();
3294
    $sth->finish;
3294
    $sth->finish;
3295
3295
3296
    # if a borrower lost the item, add a replacement cost to the their record
3296
    # If a borrower lost the item, add a replacement cost to the their record
3297
    if ( my $borrowernumber = $issues->{borrowernumber} ){
3297
    if ( my $borrowernumber = $issues->{borrowernumber} ){
3298
        my $borrower = C4::Members::GetMemberDetails( $borrowernumber );
3298
        my $borrower = C4::Members::GetMemberDetails( $borrowernumber );
3299
3299
3300
        C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}")
3300
        if (C4::Context->preference('WhenLostForgiveFine')){
3301
          if $charge_fee;
3301
            my $exemptfine=1;
3302
        #FIXME : Should probably have a way to distinguish this from an item that really was returned.
3302
            my $dropbox=0;
3303
        #warn " $issues->{'borrowernumber'}  /  $itemnumber ";
3303
            my $fix = _FixOverduesOnReturn($borrowernumber, $itemnumber, $exemptfine, $dropbox);
3304
            defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $itemnumber...) failed!";  # zero is OK, check defined
3305
        }
3306
        if (C4::Context->preference('WhenLostChargeReplacementFee')){
3307
            C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}");
3308
            #FIXME : Should probably have a way to distinguish this from an item that really was returned.
3309
            #warn " $issues->{'borrowernumber'}  /  $itemnumber ";
3310
        }
3311
3304
        MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$borrower->{'privacy'}) if $mark_returned;
3312
        MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$borrower->{'privacy'}) if $mark_returned;
3305
    }
3313
    }
3306
}
3314
}
(-)a/catalogue/updateitem.pl (-1 / +1 lines)
Lines 74-79 if (defined $itemnotes) { # i.e., itemnotes parameter passed from form Link Here
74
74
75
ModItem($item_changes, $biblionumber, $itemnumber);
75
ModItem($item_changes, $biblionumber, $itemnumber);
76
76
77
LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $itemlost;
77
LostItem($itemnumber, 'MARK RETURNED') if $itemlost;
78
78
79
print $cgi->redirect("moredetail.pl?biblionumber=$biblionumber&itemnumber=$itemnumber#item$itemnumber");
79
print $cgi->redirect("moredetail.pl?biblionumber=$biblionumber&itemnumber=$itemnumber#item$itemnumber");
(-)a/cataloguing/additem.pl (+7 lines)
Lines 27-32 use C4::Output; Link Here
27
use C4::Biblio;
27
use C4::Biblio;
28
use C4::Items;
28
use C4::Items;
29
use C4::Context;
29
use C4::Context;
30
use C4::Circulation;
30
use C4::Koha; # XXX subfield_is_koha_internal_p
31
use C4::Koha; # XXX subfield_is_koha_internal_p
31
use C4::Branch; # XXX subfield_is_koha_internal_p
32
use C4::Branch; # XXX subfield_is_koha_internal_p
32
use C4::ClassSource;
33
use C4::ClassSource;
Lines 605-610 if ($op eq "additem") { Link Here
605
        ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
606
        ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
606
        $itemnumber="";
607
        $itemnumber="";
607
    }
608
    }
609
  my $item = GetItem( $itemnumber );
610
    my $olditemlost =  $item->{'itemlost'};
611
    my $newitemlost = $itemtosave->subfield('952','1');
612
    if (($olditemlost eq '0' or $olditemlost eq '' ) and $newitemlost ge '1'){
613
  LostItem($itemnumber,'MARK RETURNED');
614
    }
608
    $nextop="additem";
615
    $nextop="additem";
609
} elsif ($op eq "delinkitem"){
616
} elsif ($op eq "delinkitem"){
610
    my $analyticfield = '773';
617
    my $analyticfield = '773';
(-)a/installer/data/mysql/sysprefs.sql (+2 lines)
Lines 28-33 INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES Link Here
28
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('expandedSearchOption',0,'If ON, set advanced search to be expanded by default',NULL,'YesNo');
28
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('expandedSearchOption',0,'If ON, set advanced search to be expanded by default',NULL,'YesNo');
29
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');
29
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');
30
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('FinesLog',1,'If ON, log fines',NULL,'YesNo');
30
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('FinesLog',1,'If ON, log fines',NULL,'YesNo');
31
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');
32
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');
31
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('hidelostitems',0,'If ON, disables display of\"lost\" items in OPAC.','','YesNo');
33
INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('hidelostitems',0,'If ON, disables display of\"lost\" items in OPAC.','','YesNo');
32
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');
34
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');
33
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');
35
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');
(-)a/installer/data/mysql/updatedatabase.pl (+7 lines)
Lines 6990-6995 if ( CheckVersion($DBversion) ) { Link Here
6990
    SetVersion($DBversion);
6990
    SetVersion($DBversion);
6991
}
6991
}
6992
6992
6993
$DBversion = "3.13.00.XXX";
6994
if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6995
    $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')");
6996
    $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')");
6997
    print "Upgrade to $DBversion done (Added sysprefs WhenLostForgiveFine and WhenLostChargeReplacementFee)\n";
6998
    SetVersion ($DBversion);
6999
}
6993
7000
6994
=head1 FUNCTIONS
7001
=head1 FUNCTIONS
6995
7002
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (+12 lines)
Lines 495-500 Circulation: Link Here
495
                  yes: Include
495
                  yes: Include
496
                  no: "Don't include"
496
                  no: "Don't include"
497
            - the grace period when calculating the fine for an overdue item.
497
            - the grace period when calculating the fine for an overdue item.
498
        -
499
            - pref: WhenLostForgiveFine
500
              choices:
501
                  yes: Forgive
502
                  no: "Don't Forgive"
503
            - the fines on an item when it is lost.
504
        -
505
            - pref: WhenLostChargeReplacementFee
506
              choices:
507
                  yes: Charge
508
                  no: "Don't Charge"
509
            - the replacement price when a patron loses an item.
498
    Self Checkout:
510
    Self Checkout:
499
        -
511
        -
500
            - "Include the following JavaScript on all pages in the web-based self checkout:"
512
            - "Include the following JavaScript on all pages in the web-based self checkout:"
(-)a/misc/cronjobs/longoverdue.pl (-1 / +1 lines)
Lines 165-171 foreach my $startrange (sort keys %$lost) { Link Here
165
            printf ("Due %s: item %5s from borrower %5s to lost: %s\n", $row->{date_due}, $row->{itemnumber}, $row->{borrowernumber}, $lostvalue) if($verbose);
165
            printf ("Due %s: item %5s from borrower %5s to lost: %s\n", $row->{date_due}, $row->{itemnumber}, $row->{borrowernumber}, $lostvalue) if($verbose);
166
            if($confirm) {
166
            if($confirm) {
167
                ModItem({ itemlost => $lostvalue }, $row->{'biblionumber'}, $row->{'itemnumber'});
167
                ModItem({ itemlost => $lostvalue }, $row->{'biblionumber'}, $row->{'itemnumber'});
168
                LostItem($row->{'itemnumber'}, $mark_returned, 'CHARGE FEE') if( $charge && $charge eq $lostvalue);
168
                LostItem($row->{'itemnumber'}, $mark_returned) if( $charge && $charge eq $lostvalue);
169
            }
169
            }
170
            $count++;
170
            $count++;
171
        }
171
        }
(-)a/tools/batchMod.pl (-2 / +1 lines)
Lines 190-196 if ($op eq "action") { Link Here
190
			UpdateMarcWith( $marcitem, $localmarcitem );
190
			UpdateMarcWith( $marcitem, $localmarcitem );
191
			eval{
191
			eval{
192
                            if ( my $item = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) ) {
192
                            if ( my $item = ModItemFromMarc( $localmarcitem, $itemdata->{biblionumber}, $itemnumber ) ) {
193
                                LostItem($itemnumber, 'MARK RETURNED', 'CHARGE FEE') if $item->{itemlost};
193
                                LostItem($itemnumber, 'MARK RETURNED') if $item->{itemlost};
194
                            }
194
                            }
195
                        };
195
                        };
196
		    }
196
		    }
197
- 

Return to bug 7639