Bug 28799: Log when item was lost and now found
In the subroutine ModDateLastSeen we unset an item's lost status when checked in. This routine passes a noi log parameter to the store request, this is to avoid spamming the cataloguing log on every checkin. When marking an item unlost we should record this change. To test: 1 - Enable cataloguing log 2 - Mark an item lost 3 - View the log and confirm this chagne was recorded 4 - Check the item in 5 - The message indicates item is now found, but logs have no new entry 6 - Apply patch, restart all 7 - Mark the item lost and verify it is logged 8 - Check the item in, reported found and log entry recorded Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
047489ece0
commit
80eb5555d6
2 changed files with 29 additions and 4 deletions
|
@ -401,8 +401,9 @@ sub ModDateLastSeen {
|
||||||
|
|
||||||
my $item = Koha::Items->find($itemnumber);
|
my $item = Koha::Items->find($itemnumber);
|
||||||
$item->datelastseen(dt_from_string);
|
$item->datelastseen(dt_from_string);
|
||||||
|
my $log = $item->itemlost && !$leave_item_lost ? 1 : 0; # If item was lost, record the change to the item
|
||||||
$item->itemlost(0) unless $leave_item_lost;
|
$item->itemlost(0) unless $leave_item_lost;
|
||||||
$item->store({ log_action => 0, skip_record_index => $params->{skip_record_index}, skip_holds_queue => $params->{skip_holds_queue} });
|
$item->store({ log_action => $log, skip_record_index => $params->{skip_record_index}, skip_holds_queue => $params->{skip_holds_queue} });
|
||||||
}
|
}
|
||||||
|
|
||||||
=head2 CheckItemPreSave
|
=head2 CheckItemPreSave
|
||||||
|
|
|
@ -19,7 +19,7 @@ use Modern::Perl;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
|
||||||
use MARC::Record;
|
use MARC::Record;
|
||||||
use C4::Items qw( ModItemTransfer SearchItems AddItemFromMarc ModItemFromMarc get_hostitemnumbers_of Item2Marc );
|
use C4::Items qw( ModItemTransfer SearchItems AddItemFromMarc ModItemFromMarc get_hostitemnumbers_of Item2Marc ModDateLastSeen );
|
||||||
use C4::Biblio qw( GetMarcFromKohaField AddBiblio );
|
use C4::Biblio qw( GetMarcFromKohaField AddBiblio );
|
||||||
use C4::Circulation qw( AddIssue );
|
use C4::Circulation qw( AddIssue );
|
||||||
use Koha::Items;
|
use Koha::Items;
|
||||||
|
@ -34,7 +34,7 @@ use Koha::AuthorisedValues;
|
||||||
use t::lib::Mocks;
|
use t::lib::Mocks;
|
||||||
use t::lib::TestBuilder;
|
use t::lib::TestBuilder;
|
||||||
|
|
||||||
use Test::More tests => 11;
|
use Test::More tests => 12;
|
||||||
|
|
||||||
use Test::Warn;
|
use Test::Warn;
|
||||||
|
|
||||||
|
@ -931,4 +931,28 @@ subtest 'ModItemFromMarc' => sub {
|
||||||
|
|
||||||
$schema->storage->txn_rollback;
|
$schema->storage->txn_rollback;
|
||||||
Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" );
|
Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" );
|
||||||
}
|
};
|
||||||
|
|
||||||
|
subtest 'ModDateLastSeen' => sub {
|
||||||
|
plan tests => 5;
|
||||||
|
$schema->storage->txn_begin;
|
||||||
|
|
||||||
|
my $builder = t::lib::TestBuilder->new;
|
||||||
|
my $item = $builder->build_sample_item;
|
||||||
|
t::lib::Mocks::mock_preference('CataloguingLog', '1');
|
||||||
|
my $logs_before = Koha::ActionLogs->search({ module => 'CATALOGUING', action => 'MODIFY', object => $item->itemnumber })->count;
|
||||||
|
ModDateLastSeen($item->itemnumber);
|
||||||
|
my $logs_after = Koha::ActionLogs->search({ module => 'CATALOGUING', action => 'MODIFY', object => $item->itemnumber })->count;
|
||||||
|
is( $logs_after, $logs_before, "ModDateLastSeen doesn't log if item not lost");
|
||||||
|
$item->itemlost(1)->store({ log_action => 0 });
|
||||||
|
ModDateLastSeen($item->itemnumber, 1);
|
||||||
|
$item->discard_changes;
|
||||||
|
$logs_after = Koha::ActionLogs->search({ module => 'CATALOGUING', action => 'MODIFY', object => $item->itemnumber })->count;
|
||||||
|
is( $item->itemlost, 1, "Item left lost when parameter is passed");
|
||||||
|
is( $logs_after, $logs_before, "ModDateLastSeen doesn't log if item not lost");
|
||||||
|
ModDateLastSeen($item->itemnumber);
|
||||||
|
$item->discard_changes;
|
||||||
|
$logs_after = Koha::ActionLogs->search({ module => 'CATALOGUING', action => 'MODIFY', object => $item->itemnumber })->count;
|
||||||
|
is( $item->itemlost, 0, "Item no longer lost when no parameter is passed");
|
||||||
|
is( $logs_after, $logs_before + 1, "ModDateLastSeen logs if item was lost and now found");
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in a new issue