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

(-)a/C4/Circulation.pm (-6 / +14 lines)
Lines 3286-3292 sub ReturnLostItem{ Link Here
3286
3286
3287
3287
3288
sub LostItem{
3288
sub LostItem{
3289
    my ($itemnumber, $mark_returned, $charge_fee) = @_;
3289
    my ($itemnumber, $mark_returned) = @_;
3290
3290
3291
    my $dbh = C4::Context->dbh();
3291
    my $dbh = C4::Context->dbh();
3292
    my $sth=$dbh->prepare("SELECT issues.*,items.*,biblio.title 
3292
    my $sth=$dbh->prepare("SELECT issues.*,items.*,biblio.title 
Lines 3298-3311 sub LostItem{ Link Here
3298
    my $issues=$sth->fetchrow_hashref();
3298
    my $issues=$sth->fetchrow_hashref();
3299
    $sth->finish;
3299
    $sth->finish;
3300
3300
3301
    # if a borrower lost the item, add a replacement cost to the their record
3301
    # If a borrower lost the item, add a replacement cost to the their record
3302
    if ( my $borrowernumber = $issues->{borrowernumber} ){
3302
    if ( my $borrowernumber = $issues->{borrowernumber} ){
3303
        my $borrower = C4::Members::GetMemberDetails( $borrowernumber );
3303
        my $borrower = C4::Members::GetMemberDetails( $borrowernumber );
3304
3304
3305
        C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}")
3305
        if (C4::Context->preference('WhenLostForgiveFine')){
3306
          if $charge_fee;
3306
            my $exemptfine=1;
3307
        #FIXME : Should probably have a way to distinguish this from an item that really was returned.
3307
            my $dropbox=0;
3308
        #warn " $issues->{'borrowernumber'}  /  $itemnumber ";
3308
            my $fix = _FixOverduesOnReturn($borrowernumber, $itemnumber, $exemptfine, $dropbox);
3309
            defined($fix) or warn "_FixOverduesOnReturn($borrowernumber, $itemnumber...) failed!";  # zero is OK, check defined
3310
        }
3311
        if (C4::Context->preference('WhenLostChargeReplacementFee')){
3312
            C4::Accounts::chargelostitem($borrowernumber, $itemnumber, $issues->{'replacementprice'}, "Lost Item $issues->{'title'} $issues->{'barcode'}");
3313
            #FIXME : Should probably have a way to distinguish this from an item that really was returned.
3314
            #warn " $issues->{'borrowernumber'}  /  $itemnumber ";
3315
        }
3316
3309
        MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$borrower->{'privacy'}) if $mark_returned;
3317
        MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$borrower->{'privacy'}) if $mark_returned;
3310
    }
3318
    }
3311
}
3319
}
(-)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 596-601 if ($op eq "additem") { Link Here
596
        ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
597
        ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
597
        $itemnumber="";
598
        $itemnumber="";
598
    }
599
    }
600
  my $item = GetItem( $itemnumber );
601
    my $olditemlost =  $item->{'itemlost'};
602
    my $newitemlost = $itemtosave->subfield('952','1');
603
    if (($olditemlost eq '0' or $olditemlost eq '' ) and $newitemlost ge '1'){
604
  LostItem($itemnumber,'MARK RETURNED');
605
    }
599
    $nextop="additem";
606
    $nextop="additem";
600
} elsif ($op eq "delinkitem"){
607
} elsif ($op eq "delinkitem"){
601
    my $analyticfield = '773';
608
    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 6399-6404 if ( CheckVersion($DBversion) ) { Link Here
6399
    SetVersion($DBversion);
6399
    SetVersion($DBversion);
6400
}
6400
}
6401
6401
6402
$DBversion = "3.11.00.XXX";
6403
if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
6404
    $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')");
6405
    $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')");
6406
    print "Upgrade to $DBversion done (Added sysprefs WhenLostForgiveFine and WhenLostChargeReplacementFee)\n";
6407
    SetVersion ($DBversion);
6408
}
6402
6409
6403
=head1 FUNCTIONS
6410
=head1 FUNCTIONS
6404
6411
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (+12 lines)
Lines 482-487 Circulation: Link Here
482
                  yes: Refund
482
                  yes: Refund
483
                  no: "Don't refund"
483
                  no: "Don't refund"
484
            - lost item fees charged to a borrower when the lost item is returned.
484
            - lost item fees charged to a borrower when the lost item is returned.
485
        -
486
            - pref: WhenLostForgiveFine
487
              choices:
488
                  yes: Forgive
489
                  no: "Don't Forgive"
490
            - the fines on an item when it is lost.
491
        -
492
            - pref: WhenLostChargeReplacementFee
493
              choices:
494
                  yes: Charge
495
                  no: "Don't Charge"
496
            - the replacement price when a patron loses an item.
485
    Self Checkout:
497
    Self Checkout:
486
        -
498
        -
487
            - "Include the following JavaScript on all pages in the web-based self checkout:"
499
            - "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