Bug 5403 Remove DisplayISBN and GetPublisherNameFromIsbn
[koha_fer] / C4 / Items.pm
index 3a4ec91..a7c190c 100644 (file)
@@ -13,11 +13,12 @@ package C4::Items;
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 use strict;
+#use warnings; FIXME - Bug 2505
 
 use Carp;
 use C4::Context;
@@ -65,6 +66,7 @@ BEGIN {
         GetItemsInfo
         get_itemnumbers_of
         GetItemnumberFromBarcode
+        GetBarcodeFromItemnumber
 
                DelItemCheck
                MoveItemFromBiblio 
@@ -116,11 +118,7 @@ of C<C4::Items>
 
 =head2 GetItem
 
-=over 4
-
-$item = GetItem($itemnumber,$barcode,$serial);
-
-=back
+  $item = GetItem($itemnumber,$barcode,$serial);
 
 Return item information, for a given itemnumber or barcode.
 The return value is a hashref mapping item column
@@ -150,7 +148,6 @@ sub GetItem {
     my $ssth = $dbh->prepare("SELECT serialseq,publisheddate from serialitems left join serial on serialitems.serialid=serial.serialid where serialitems.itemnumber=?");
         $ssth->execute($data->{'itemnumber'}) ;
         ($data->{'serialseq'} , $data->{'publisheddate'}) = $ssth->fetchrow_array();
-               warn $data->{'serialseq'} , $data->{'publisheddate'};
     }
        #if we don't have an items.itype, use biblioitems.itemtype.
        if( ! $data->{'itype'} ) {
@@ -163,11 +160,7 @@ sub GetItem {
 
 =head2 CartToShelf
 
-=over 4
-
-CartToShelf($itemnumber);
-
-=back
+  CartToShelf($itemnumber);
 
 Set the current shelving location of the item record
 to its stored permanent shelving location.  This is
@@ -191,12 +184,8 @@ sub CartToShelf {
 
 =head2 AddItemFromMarc
 
-=over 4
-
-my ($biblionumber, $biblioitemnumber, $itemnumber) 
-    = AddItemFromMarc($source_item_marc, $biblionumber);
-
-=back
+  my ($biblionumber, $biblioitemnumber, $itemnumber) 
+      = AddItemFromMarc($source_item_marc, $biblionumber);
 
 Given a MARC::Record object containing an embedded item
 record and a biblionumber, create a new item record.
@@ -209,19 +198,19 @@ sub AddItemFromMarc {
 
     # parse item hash from MARC
     my $frameworkcode = GetFrameworkCode( $biblionumber );
-    my $item = &TransformMarcToKoha( $dbh, $source_item_marc, $frameworkcode );
-    my $unlinked_item_subfields = _get_unlinked_item_subfields($source_item_marc, $frameworkcode);
+       my ($itemtag,$itemsubfield)=GetMarcFromKohaField("items.itemnumber",$frameworkcode);
+       
+       my $localitemmarc=MARC::Record->new;
+       $localitemmarc->append_fields($source_item_marc->field($itemtag));
+    my $item = &TransformMarcToKoha( $dbh, $localitemmarc, $frameworkcode ,'items');
+    my $unlinked_item_subfields = _get_unlinked_item_subfields($localitemmarc, $frameworkcode);
     return AddItem($item, $biblionumber, $dbh, $frameworkcode, $unlinked_item_subfields);
 }
 
 =head2 AddItem
 
-=over 4
-
-my ($biblionumber, $biblioitemnumber, $itemnumber) 
-    = AddItem($item, $biblionumber[, $dbh, $frameworkcode, $unlinked_item_subfields]);
-
-=back
+  my ($biblionumber, $biblioitemnumber, $itemnumber) 
+      = AddItem($item, $biblionumber[, $dbh, $frameworkcode, $unlinked_item_subfields]);
 
 Given a hash containing item column names as keys,
 create a new Koha item record.
@@ -280,11 +269,8 @@ sub AddItem {
 
 =head2 AddItemBatchFromMarc
 
-=over 4
-
-($itemnumber_ref, $error_ref) = AddItemBatchFromMarc($record, $biblionumber, $biblioitemnumber, $frameworkcode);
-
-=back
+  ($itemnumber_ref, $error_ref) = AddItemBatchFromMarc($record, 
+             $biblionumber, $biblioitemnumber, $frameworkcode);
 
 Efficiently create item records from a MARC biblio record with
 embedded item fields.  This routine is suitable for batch jobs.
@@ -302,7 +288,7 @@ This function returns an arrayref of new itemsnumbers and an arrayref of item
 errors encountered during the processing.  Each entry in the errors
 list is a hashref containing the following keys:
 
-=over 2
+=over
 
 =item item_sequence
 
@@ -387,11 +373,7 @@ sub AddItemBatchFromMarc {
 
 =head2 ModItemFromMarc
 
-=over 4
-
-ModItemFromMarc($item_marc, $biblionumber, $itemnumber);
-
-=back
+  ModItemFromMarc($item_marc, $biblionumber, $itemnumber);
 
 This function updates an item record based on a supplied
 C<MARC::Record> object containing an embedded item field.
@@ -437,6 +419,7 @@ my %default_values_for_mod_from_marc = (
     replacementpricedate => undef, 
     restricted           => undef, 
     stack                => undef, 
+    stocknumber          => undef, 
     uri                  => undef, 
     wthdrawn             => 0,
 );
@@ -452,22 +435,19 @@ sub ModItemFromMarc {
        
        my $localitemmarc=MARC::Record->new;
        $localitemmarc->append_fields($item_marc->field($itemtag));
-    my $item = &TransformMarcToKoha( $dbh, $item_marc, $frameworkcode ,'items');
+    my $item = &TransformMarcToKoha( $dbh, $localitemmarc, $frameworkcode, 'items');
     foreach my $item_field (keys %default_values_for_mod_from_marc) {
         $item->{$item_field} = $default_values_for_mod_from_marc{$item_field} unless exists $item->{$item_field};
     }
-    my $unlinked_item_subfields = _get_unlinked_item_subfields($item_marc, $frameworkcode);
+    my $unlinked_item_subfields = _get_unlinked_item_subfields($localitemmarc, $frameworkcode);
    
     return ModItem($item, $biblionumber, $itemnumber, $dbh, $frameworkcode, $unlinked_item_subfields); 
 }
 
 =head2 ModItem
 
-=over 4
-
-ModItem({ column => $newvalue }, $biblionumber, $itemnumber[, $original_item_marc]);
-
-=back
+  ModItem({ column => $newvalue }, $biblionumber, 
+                  $itemnumber[, $original_item_marc]);
 
 Change one or more columns in an item record and update
 the MARC representation of the item.
@@ -538,11 +518,7 @@ sub ModItem {
 
 =head2 ModItemTransfer
 
-=over 4
-
-ModItemTransfer($itenumber, $frombranch, $tobranch);
-
-=back
+  ModItemTransfer($itenumber, $frombranch, $tobranch);
 
 Marks an item as being transferred from one branch
 to another.
@@ -567,11 +543,7 @@ sub ModItemTransfer {
 
 =head2 ModDateLastSeen
 
-=over 4
-
-ModDateLastSeen($itemnum);
-
-=back
+  ModDateLastSeen($itemnum);
 
 Mark item as seen. Is called when an item is issued, returned or manually marked during inventory/stocktaking.
 C<$itemnum> is the item number
@@ -587,11 +559,7 @@ sub ModDateLastSeen {
 
 =head2 DelItem
 
-=over 4
-
-DelItem($biblionumber, $itemnumber);
-
-=back
+  DelItem($dbh, $biblionumber, $itemnumber);
 
 Exported function (core API) for deleting an item record in Koha.
 
@@ -628,8 +596,6 @@ sub DelItem {
 
 =head2 CheckItemPreSave
 
-=over 4
-
     my $item_ref = TransformMarcToKoha($marc, 'items');
     # do stuff
     my %errors = CheckItemPreSave($item_ref);
@@ -643,8 +609,6 @@ sub DelItem {
         print "item is OK";
     }
 
-=back
-
 Given a hashref containing item fields, determine if it can be
 inserted or updated in the database.  Specifically, checks for
 database integrity issues, and returns a hash containing any
@@ -727,11 +691,7 @@ has copy-and-paste work.
 
 =head2 GetItemStatus
 
-=over 4
-
-$itemstatushash = GetItemStatus($fwkcode);
-
-=back
+  $itemstatushash = GetItemStatus($fwkcode);
 
 Returns a list of valid values for the
 C<items.notforloan> field.
@@ -746,32 +706,24 @@ Create a status selector with the following code
 
 =head3 in PERL SCRIPT
 
-=over 4
-
-my $itemstatushash = getitemstatus;
-my @itemstatusloop;
-foreach my $thisstatus (keys %$itemstatushash) {
-    my %row =(value => $thisstatus,
-                statusname => $itemstatushash->{$thisstatus}->{'statusname'},
-            );
-    push @itemstatusloop, \%row;
-}
-$template->param(statusloop=>\@itemstatusloop);
-
-=back
+ my $itemstatushash = getitemstatus;
+ my @itemstatusloop;
+ foreach my $thisstatus (keys %$itemstatushash) {
+     my %row =(value => $thisstatus,
+                 statusname => $itemstatushash->{$thisstatus}->{'statusname'},
+             );
+     push @itemstatusloop, \%row;
+ }
+ $template->param(statusloop=>\@itemstatusloop);
 
 =head3 in TEMPLATE
 
-=over 4
-
-<select name="statusloop">
-    <option value="">Default</option>
-<!-- TMPL_LOOP name="statusloop" -->
-    <option value="<!-- TMPL_VAR name="value" -->" <!-- TMPL_IF name="selected" -->selected<!-- /TMPL_IF -->><!-- TMPL_VAR name="statusname" --></option>
-<!-- /TMPL_LOOP -->
-</select>
-
-=back
+ <select name="statusloop">
+     <option value="">Default</option>
+ <!-- TMPL_LOOP name="statusloop" -->
+     <option value="<!-- TMPL_VAR name="value" -->" <!-- TMPL_IF name="selected" -->selected<!-- /TMPL_IF -->><!-- TMPL_VAR name="statusname" --></option>
+ <!-- /TMPL_LOOP -->
+ </select>
 
 =cut
 
@@ -827,11 +779,7 @@ sub GetItemStatus {
 
 =head2 GetItemLocation
 
-=over 4
-
-$itemlochash = GetItemLocation($fwk);
-
-=back
+  $itemlochash = GetItemLocation($fwk);
 
 Returns a list of valid values for the
 C<items.location> field.
@@ -844,34 +792,26 @@ Create a location selector with the following code
 
 =head3 in PERL SCRIPT
 
-=over 4
-
-my $itemlochash = getitemlocation;
-my @itemlocloop;
-foreach my $thisloc (keys %$itemlochash) {
-    my $selected = 1 if $thisbranch eq $branch;
-    my %row =(locval => $thisloc,
-                selected => $selected,
-                locname => $itemlochash->{$thisloc},
-            );
-    push @itemlocloop, \%row;
-}
-$template->param(itemlocationloop => \@itemlocloop);
-
-=back
+  my $itemlochash = getitemlocation;
+  my @itemlocloop;
+  foreach my $thisloc (keys %$itemlochash) {
+      my $selected = 1 if $thisbranch eq $branch;
+      my %row =(locval => $thisloc,
+                  selected => $selected,
+                  locname => $itemlochash->{$thisloc},
+               );
+      push @itemlocloop, \%row;
+  }
+  $template->param(itemlocationloop => \@itemlocloop);
 
 =head3 in TEMPLATE
 
-=over 4
-
-<select name="location">
-    <option value="">Default</option>
-<!-- TMPL_LOOP name="itemlocationloop" -->
-    <option value="<!-- TMPL_VAR name="locval" -->" <!-- TMPL_IF name="selected" -->selected<!-- /TMPL_IF -->><!-- TMPL_VAR name="locname" --></option>
-<!-- /TMPL_LOOP -->
-</select>
-
-=back
+  <select name="location">
+      <option value="">Default</option>
+  <!-- TMPL_LOOP name="itemlocationloop" -->
+      <option value="<!-- TMPL_VAR name="locval" -->" <!-- TMPL_IF name="selected" -->selected<!-- /TMPL_IF -->><!-- TMPL_VAR name="locname" --></option>
+  <!-- /TMPL_LOOP -->
+  </select>
 
 =cut
 
@@ -925,11 +865,7 @@ sub GetItemLocation {
 
 =head2 GetLostItems
 
-=over 4
-
-$items = GetLostItems( $where, $orderby );
-
-=back
+  $items = GetLostItems( $where, $orderby );
 
 This function gets a list of lost items.
 
@@ -953,9 +889,9 @@ from the "items" table as keys.
 
 =item usage in the perl script:
 
-my $where = { barcode => '0001548' };
-my $items = GetLostItems( $where, "homebranch" );
-$template->param( itemsloop => $items );
+  my $where = { barcode => '0001548' };
+  my $items = GetLostItems( $where, "homebranch" );
+  $template->param( itemsloop => $items );
 
 =back
 
@@ -1000,11 +936,9 @@ sub GetLostItems {
 
 =head2 GetItemsForInventory
 
-=over 4
-
-$itemlist = GetItemsForInventory($minlocation, $maxlocation, $location, $itemtype $datelastseen, $branch, $offset, $size, $statushash);
-
-=back
+  $itemlist = GetItemsForInventory($minlocation, $maxlocation, 
+                 $location, $itemtype $datelastseen, $branch, 
+                 $offset, $size, $statushash);
 
 Retrieve a list of title/authors/barcode/callnumber, for biblio inventory.
 
@@ -1098,10 +1032,7 @@ END_SQL
 
 =head2 GetItemsCount
 
-=over 4
-$count = &GetItemsCount( $biblionumber);
-
-=back
+  $count = &GetItemsCount( $biblionumber);
 
 This function return count of item with $biblionumber
 
@@ -1121,11 +1052,7 @@ sub GetItemsCount {
 
 =head2 GetItemInfosOf
 
-=over 4
-
-GetItemInfosOf(@itemnumbers);
-
-=back
+  GetItemInfosOf(@itemnumbers);
 
 =cut
 
@@ -1142,11 +1069,7 @@ sub GetItemInfosOf {
 
 =head2 GetItemsByBiblioitemnumber
 
-=over 4
-
-GetItemsByBiblioitemnumber($biblioitemnumber);
-
-=back
+  GetItemsByBiblioitemnumber($biblioitemnumber);
 
 Returns an arrayref of hashrefs suitable for use in a TMPL_LOOP
 Called by C<C4::XISBN>
@@ -1198,11 +1121,7 @@ sub GetItemsByBiblioitemnumber {
 
 =head2 GetItemsInfo
 
-=over 4
-
-@results = GetItemsInfo($biblionumber, $type);
-
-=back
+  @results = GetItemsInfo($biblionumber, $type);
 
 Returns information about books with the given biblionumber.
 
@@ -1265,7 +1184,9 @@ sub GetItemsInfo {
            biblioitems.lccn,
            biblioitems.url,
            items.notforloan as itemnotforloan,
-           itemtypes.description
+           itemtypes.description,
+           itemtypes.notforloan as notforloan_per_itemtype,
+           branchurl
      FROM items
      LEFT JOIN branches ON items.homebranch = branches.branchcode
      LEFT JOIN biblio      ON      biblio.biblionumber     = items.biblionumber
@@ -1348,7 +1269,31 @@ sub GetItemsInfo {
             my ($lib) = $sthnflstatus->fetchrow;
             $data->{notforloanvalue} = $lib;
         }
-               $data->{itypenotforloan} = $data->{notforloan} if (C4::Context->preference('item-level_itypes'));
+
+        # get restricted status and description if applicable
+        my $restrictedstatus = $dbh->prepare(
+            'SELECT authorised_value
+            FROM   marc_subfield_structure
+            WHERE  kohafield="items.restricted"
+        '
+        );
+
+        $restrictedstatus->execute;
+        ($authorised_valuecode) = $restrictedstatus->fetchrow;
+        if ($authorised_valuecode) {
+            $restrictedstatus = $dbh->prepare(
+                "SELECT lib,lib_opac FROM authorised_values
+                 WHERE  category=?
+                 AND authorised_value=?"
+            );
+            $restrictedstatus->execute( $authorised_valuecode,
+                $data->{restricted} );
+
+            if ( my $rstdata = $restrictedstatus->fetchrow_hashref ) {
+                $data->{restricted} = $rstdata->{'lib'};
+                $data->{restrictedopac} = $rstdata->{'lib_opac'};
+            }
+        }
 
         # my stack procedures
         my $stackstatus = $dbh->prepare(
@@ -1399,11 +1344,8 @@ sub GetItemsInfo {
 
 =head2 GetLastAcquisitions
 
-=over 4
-
-my $lastacq = GetLastAcquisitions({'branches' => ('branch1','branch2'), 'itemtypes' => ('BK','BD')}, 10);
-
-=back
+  my $lastacq = GetLastAcquisitions({'branches' => ('branch1','branch2'), 
+                                    'itemtypes' => ('BK','BD')}, 10);
 
 =cut
 
@@ -1453,11 +1395,7 @@ sub  GetLastAcquisitions {
 
 =head2 get_itemnumbers_of
 
-=over 4
-
-my @itemnumbers_of = get_itemnumbers_of(@biblionumbers);
-
-=back
+  my @itemnumbers_of = get_itemnumbers_of(@biblionumbers);
 
 Given a list of biblionumbers, return the list of corresponding itemnumbers
 for each biblionumber.
@@ -1492,11 +1430,7 @@ sub get_itemnumbers_of {
 
 =head2 GetItemnumberFromBarcode
 
-=over 4
-
-$result = GetItemnumberFromBarcode($barcode);
-
-=back
+  $result = GetItemnumberFromBarcode($barcode);
 
 =cut
 
@@ -1511,14 +1445,30 @@ sub GetItemnumberFromBarcode {
     return ($result);
 }
 
+=head2 GetBarcodeFromItemnumber
+
+  $result = GetBarcodeFromItemnumber($itemnumber);
+
+=cut
+
+sub GetBarcodeFromItemnumber {
+    my ($itemnumber) = @_;
+    my $dbh = C4::Context->dbh;
+
+    my $rq =
+      $dbh->prepare("SELECT barcode FROM items WHERE items.itemnumber=?");
+    $rq->execute($itemnumber);
+    my ($result) = $rq->fetchrow;
+    return ($result);
+}
+
 =head3 get_item_authorised_values
 
-  find the types and values for all authorised values assigned to this item.
+find the types and values for all authorised values assigned to this item.
 
-  parameters:
-    itemnumber
+parameters: itemnumber
 
-  returns: a hashref malling the authorised value to the value set for this itemnumber
+returns: a hashref malling the authorised value to the value set for this itemnumber
 
     $authorised_values = {
              'CCODE'      => undef,
@@ -1534,7 +1484,7 @@ sub GetItemnumberFromBarcode {
              'itemtypes'  => 'SER',
            };
 
-   Notes: see C4::Biblio::get_biblio_authorised_values for a similar method at the biblio level.
+Notes: see C4::Biblio::get_biblio_authorised_values for a similar method at the biblio level.
 
 =cut
 
@@ -1564,25 +1514,24 @@ sub get_item_authorised_values {
 
 =head3 get_authorised_value_images
 
-  find a list of icons that are appropriate for display based on the
-  authorised values for a biblio.
+find a list of icons that are appropriate for display based on the
+authorised values for a biblio.
 
-  parameters: listref of authorised values, such as comes from
-    get_item_authorised_values or
-    from C4::Biblio::get_biblio_authorised_values
+parameters: listref of authorised values, such as comes from
+get_item_authorised_values or
+from C4::Biblio::get_biblio_authorised_values
 
-  returns: listref of hashrefs for each image. Each hashref looks like
-    this:
+returns: listref of hashrefs for each image. Each hashref looks like this:
 
       { imageurl => '/intranet-tmpl/prog/img/itemtypeimg/npl/WEB.gif',
         label    => '',
         category => '',
         value    => '', }
 
-  Notes: Currently, I put on the full path to the images on the staff
-  side. This should either be configurable or not done at all. Since I
-  have to deal with 'intranet' or 'opac' in
-  get_biblio_authorised_values, perhaps I should be passing it in.
+Notes: Currently, I put on the full path to the images on the staff
+side. This should either be configurable or not done at all. Since I
+have to deal with 'intranet' or 'opac' in
+get_biblio_authorised_values, perhaps I should be passing it in.
 
 =cut
 
@@ -1623,11 +1572,7 @@ without careful thought.
 
 =head2 GetMarcItem
 
-=over 4
-
-my $item_marc = GetMarcItem($biblionumber, $itemnumber);
-
-=back
+  my $item_marc = GetMarcItem($biblionumber, $itemnumber);
 
 Returns MARC::Record of the item passed in parameter.
 This function is meant for use only in C<cataloguing/additem.pl>,
@@ -1714,11 +1659,7 @@ my %derived_columns = (
 
 =head2 _set_derived_columns_for_add 
 
-=over 4
-
-_set_derived_column_for_add($item);
-
-=back
+  _set_derived_column_for_add($item);
 
 Given an item hash representing a new item to be added,
 calculate any derived columns.  Currently the only
@@ -1742,11 +1683,7 @@ sub _set_derived_columns_for_add {
 
 =head2 _set_derived_columns_for_mod 
 
-=over 4
-
-_set_derived_column_for_mod($item);
-
-=back
+  _set_derived_column_for_mod($item);
 
 Given an item hash representing a new item to be modified.
 calculate any derived columns.  Currently the only
@@ -1793,11 +1730,7 @@ sub _set_derived_columns_for_mod {
 
 =head2 _do_column_fixes_for_mod
 
-=over 4
-
-_do_column_fixes_for_mod($item);
-
-=back
+  _do_column_fixes_for_mod($item);
 
 Given an item hashref containing one or more
 columns to modify, fix up certain values.
@@ -1834,11 +1767,7 @@ sub _do_column_fixes_for_mod {
 
 =head2 _get_single_item_column
 
-=over 4
-
-_get_single_item_column($column, $itemnumber);
-
-=back
+  _get_single_item_column($column, $itemnumber);
 
 Retrieves the value of a single column from an C<items>
 row specified by C<$itemnumber>.
@@ -1858,11 +1787,7 @@ sub _get_single_item_column {
 
 =head2 _calc_items_cn_sort
 
-=over 4
-
-_calc_items_cn_sort($item, $source_values);
-
-=back
+  _calc_items_cn_sort($item, $source_values);
 
 Helper routine to calculate C<items.cn_sort>.
 
@@ -1877,11 +1802,7 @@ sub _calc_items_cn_sort {
 
 =head2 _set_defaults_for_add 
 
-=over 4
-
-_set_defaults_for_add($item_hash);
-
-=back
+  _set_defaults_for_add($item_hash);
 
 Given an item hash representing an item to be added, set
 correct default values for columns whose default value
@@ -1922,11 +1843,7 @@ sub _set_defaults_for_add {
 
 =head2 _koha_new_item
 
-=over 4
-
-my ($itemnumber,$error) = _koha_new_item( $item, $barcode );
-
-=back
+  my ($itemnumber,$error) = _koha_new_item( $item, $barcode );
 
 Perform the actual insert into the C<items> table.
 
@@ -2019,16 +1936,14 @@ sub _koha_new_item {
 
 =head2 MoveItemFromBiblio
 
-=over 4
-
-MoveItemFromBiblio($itenumber, $frombiblio, $tobiblio);
-
-=back
+  MoveItemFromBiblio($itenumber, $frombiblio, $tobiblio);
 
 Moves an item from a biblio to another
 
 Returns undef if the move failed or the biblionumber of the destination record otherwise
+
 =cut
+
 sub MoveItemFromBiblio {
     my ($itemnumber, $frombiblio, $tobiblio) = @_;
     my $dbh = C4::Context->dbh;
@@ -2095,11 +2010,7 @@ sub MoveItemFromBiblio {
 
 =head2 DelItemCheck
 
-=over 4
-
-DelItemCheck($dbh, $biblionumber, $itemnumber);
-
-=back
+   DelItemCheck($dbh, $biblionumber, $itemnumber);
 
 Exported function (core API) for deleting an item record in Koha if there no current issue.
 
@@ -2119,7 +2030,7 @@ sub DelItemCheck {
         $error = "book_on_loan" 
     }else{
         # check it doesnt have a waiting reserve
-        $sth=$dbh->prepare("SELECT * FROM reserves WHERE found = 'W' AND itemnumber = ?");
+        $sth=$dbh->prepare("SELECT * FROM reserves WHERE (found = 'W' or found = 'T') AND itemnumber = ?");
         $sth->execute($itemnumber);
         my $reserve=$sth->fetchrow;
         if ($reserve){
@@ -2134,11 +2045,7 @@ sub DelItemCheck {
 
 =head2 _koha_modify_item
 
-=over 4
-
-my ($itemnumber,$error) =_koha_modify_item( $item );
-
-=back
+  my ($itemnumber,$error) =_koha_modify_item( $item );
 
 Perform the actual update of the C<items> row.  Note that this
 routine accepts a hashref specifying the columns to update.
@@ -2170,11 +2077,7 @@ sub _koha_modify_item {
 
 =head2 _koha_delete_item
 
-=over 4
-
-_koha_delete_item( $dbh, $itemnum );
-
-=back
+  _koha_delete_item( $dbh, $itemnum );
 
 Internal function to delete an item record from the koha tables
 
@@ -2205,11 +2108,7 @@ sub _koha_delete_item {
 
 =head2 _marc_from_item_hash
 
-=over 4
-
-my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]);
-
-=back
+  my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]);
 
 Given an item hash representing a complete item record,
 create a C<MARC::Record> object containing an embedded
@@ -2256,11 +2155,7 @@ sub _marc_from_item_hash {
 
 =head2 _add_item_field_to_biblio
 
-=over 4
-
-_add_item_field_to_biblio($item_marc, $biblionumber, $frameworkcode);
-
-=back
+  _add_item_field_to_biblio($item_marc, $biblionumber, $frameworkcode);
 
 Adds the fields from a MARC record containing the
 representation of a Koha item record to the MARC
@@ -2283,11 +2178,7 @@ sub _add_item_field_to_biblio {
 
 =head2 _replace_item_field_in_biblio
 
-=over
-
-&_replace_item_field_in_biblio($item_marc, $biblionumber, $itemnumber, $frameworkcode)
-
-=back
+  &_replace_item_field_in_biblio($item_marc, $biblionumber, $itemnumber, $frameworkcode)
 
 Given a MARC::Record C<$item_marc> containing one tag with the MARC 
 representation of the item, examine the biblio MARC
@@ -2352,11 +2243,7 @@ sub _repack_item_errors {
 
 =head2 _get_unlinked_item_subfields
 
-=over 4
-
-my $unlinked_item_subfields = _get_unlinked_item_subfields($original_item_marc, $frameworkcode);
-
-=back
+  my $unlinked_item_subfields = _get_unlinked_item_subfields($original_item_marc, $frameworkcode);
 
 =cut
 
@@ -2386,11 +2273,7 @@ sub _get_unlinked_item_subfields {
 
 =head2 _get_unlinked_subfields_xml
 
-=over 4
-
-my $unlinked_subfields_xml = _get_unlinked_subfields_xml($unlinked_item_subfields);
-
-=back
+  my $unlinked_subfields_xml = _get_unlinked_subfields_xml($unlinked_item_subfields);
 
 =cut
 
@@ -2412,11 +2295,7 @@ sub _get_unlinked_subfields_xml {
 
 =head2 _parse_unlinked_item_subfields_from_xml
 
-=over 4
-
-my $unlinked_item_subfields = _parse_unlinked_item_subfields_from_xml($whole_item->{'more_subfields_xml'}):
-
-=back
+  my $unlinked_item_subfields = _parse_unlinked_item_subfields_from_xml($whole_item->{'more_subfields_xml'}):
 
 =cut