From 4a0a74b0d973bd9e01d86944843e51c73cfb73e1 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 14 Sep 2015 16:01:48 +0100 Subject: [PATCH] Bug 14811: Don't update permanent_location with CART or PROC The permanent_location should not be set to CART or PROC when the item is edited. Otherwise we lost an important info. Test plan: 0/ Set the ReturnToShelvingCart pref 1/ Create an item with location "on_my_shelf" 2/ Check the item in and out 3/ Look at the DB values, location should be "CART" and permanent_location unchanged (on_my_shelf) 4/ Edit the item, add a note for instance 5/ Without this patch, the permanent_location is erased with 'CART' and you have definitely lost the info. With this patch, the permanent_location is unchanged. --- C4/Items.pm | 6 +++++- t/db_dependent/Items.t | 12 +++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/C4/Items.pm b/C4/Items.pm index 1c6d7ef..193a5d1 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -2048,7 +2048,11 @@ sub _do_column_fixes_for_mod { (not defined $item->{'withdrawn'} or $item->{'withdrawn'} eq '')) { $item->{'withdrawn'} = 0; } - if (exists $item->{'location'} && !$item->{'permanent_location'}) { + if (exists $item->{location} + and $item->{location} ne 'CART' + and $item->{location} ne 'PROC' + and not $item->{permanent_location} + ) { $item->{'permanent_location'} = $item->{'location'}; } if (exists $item->{'timestamp'}) { diff --git a/t/db_dependent/Items.t b/t/db_dependent/Items.t index d18471d..488b94c 100755 --- a/t/db_dependent/Items.t +++ b/t/db_dependent/Items.t @@ -38,7 +38,7 @@ my $location = 'My Location'; subtest 'General Add, Get and Del tests' => sub { - plan tests => 10; + plan tests => 14; # Start transaction $dbh->{AutoCommit} = 0; @@ -75,6 +75,16 @@ subtest 'General Add, Get and Del tests' => sub { is( $getitem->{location}, $location, "The location should not have been modified" ); is( $getitem->{permanent_location}, 'my permanent location', "The permanent_location should not have modified" ); + ModItem({ location => $location }, $bibnum, $itemnumber); + $getitem = GetItem($itemnumber); + is( $getitem->{location}, $location, "The location should have been set to correct location" ); + is( $getitem->{permanent_location}, $location, "The permanent_location should have been set to location" ); + + ModItem({ location => 'CART' }, $bibnum, $itemnumber); + $getitem = GetItem($itemnumber); + is( $getitem->{location}, 'CART', "The location should have been set to CART" ); + is( $getitem->{permanent_location}, $location, "The permanent_location should not have been set to CART" ); + $dbh->rollback; }; -- 2.1.0