Bug 19974: (QA follow-up) Move lost logic to else branch
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Fri, 23 Mar 2018 08:34:46 +0000 (09:34 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 20 Apr 2018 14:57:31 +0000 (11:57 -0300)
If an error is raised for the barcode, we should not try to perform the
lost logic succeeding it.
Futhermore there is no need to go to GetMarcFromKohaField etc. if we just
use the output of ModItemFromMarc.

Note: It seems unnecessary to clear $itemnumber, but I can understand
the anxiety about passing it to the template with op=additem. So just
leaving it here.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

cataloguing/additem.pl

index bd394c3..802e908 100755 (executable)
@@ -687,20 +687,16 @@ if ($op eq "additem") {
     # check that the barcode don't exist already
     my $addedolditem = TransformMarcToKoha($itemtosave);
     my $exist_itemnumber = get_item_from_barcode($addedolditem->{'barcode'});
-    my $item = GetItem( $itemnumber );
     if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {
         push @errors,"barcode_not_unique";
     } else {
-        ModItemFromMarc($itemtosave,$biblionumber,$itemnumber);
-        $itemnumber="";
-    }
-    my $olditemlost =  $item->{'itemlost'};
-
-   my ($lost_tag,$lost_subfield) = GetMarcFromKohaField("items.itemlost",'');
-
-   my $newitemlost = $itemtosave->subfield( $lost_tag, $lost_subfield );
-    if (($olditemlost eq '0' or $olditemlost eq '' ) and $newitemlost ge '1'){
-        LostItem( $item->{itemnumber} );
+        my $item = GetItem( $itemnumber );
+        my $newitem = ModItemFromMarc($itemtosave, $biblionumber, $itemnumber);
+        $itemnumber = q{};
+        my $olditemlost = $item->{itemlost};
+        my $newitemlost = $newitem->{itemlost};
+        LostItem( $item->{itemnumber} )
+            if $newitemlost && $newitemlost ge '1' && !$olditemlost;
     }
     $nextop="additem";
 } elsif ($op eq "delinkitem"){