use C4::ClassSource;
use C4::Log;
use List::MoreUtils qw/any/;
-use C4::Search;
use Data::Dumper; # used as part of logging item record changes, not just for
# debugging; so please don't remove this
use vars qw($VERSION @ISA @EXPORT);
BEGIN {
- $VERSION = 3.01;
+ $VERSION = 3.07.00.049;
require Exporter;
@ISA = qw( Exporter );
AddItem
AddItemBatchFromMarc
ModItemFromMarc
- Item2Marc
+ Item2Marc
ModItem
ModDateLastSeen
ModItemTransfer
GetItemnumberFromBarcode
GetBarcodeFromItemnumber
GetHiddenItemnumbers
- DelItemCheck
- MoveItemFromBiblio
- GetLatestAcquisitions
+ DelItemCheck
+ MoveItemFromBiblio
+ GetLatestAcquisitions
+
CartToShelf
+ ShelfToCart
GetAnalyticsCount
GetItemHolds
}
my $item = GetItem($itemnumber);
- $item->{location} = $item->{permanent_location};
+ if ( $item->{location} eq 'CART' ) {
+ $item->{location} = $item->{permanent_location};
+ ModItem($item, undef, $itemnumber);
+ }
+}
+
+=head2 ShelfToCart
+
+ ShelfToCart($itemnumber);
+
+Set the current shelving location of the item
+to shelving cart ('CART').
+
+=cut
+
+sub ShelfToCart {
+ my ( $itemnumber ) = @_;
+
+ unless ( $itemnumber ) {
+ croak "FAILED ShelfToCart() - no itemnumber supplied";
+ }
+
+ my $item = GetItem($itemnumber);
+ $item->{'location'} = 'CART';
ModItem($item, undef, $itemnumber);
}
booksellerid => undef,
ccode => undef,
'items.cn_source' => undef,
+ coded_location_qualifier => undef,
copynumber => undef,
damaged => 0,
# dateaccessioned => undef,
$item->{'more_subfields_xml'} = _get_unlinked_subfields_xml($unlinked_item_subfields);
};
- $item->{'itemnumber'} = $itemnumber or return undef;
+ $item->{'itemnumber'} = $itemnumber or return;
$item->{onloan} = undef if $item->{itemlost};
my $dbh = C4::Context->dbh;
+ # Remove the 'shelving cart' location status if it is being used.
+ CartToShelf( $itemnumber ) if ( C4::Context->preference("ReturnToShelvingCart") );
+
#new entry in branchtransfers....
my $sth = $dbh->prepare(
"INSERT INTO branchtransfers (itemnumber, frombranch, datesent, tobranch)
my $dbh = C4::Context->dbh;
my $query = "
- SELECT *
+ SELECT title, author, lib, itemlost, authorised_value, barcode, datelastseen, price, replacementprice, homebranch,
+ itype, itemtype, holdingbranch, location, itemnotes, items.biblionumber as biblionumber
FROM items
LEFT JOIN biblio ON (items.biblionumber = biblio.biblionumber)
LEFT JOIN biblioitems ON (items.biblionumber = biblioitems.biblionumber)
LEFT JOIN biblioitems ON biblioitems.biblioitemnumber = items.biblioitemnumber
LEFT JOIN itemtypes ON itemtypes.itemtype = "
. (C4::Context->preference('item-level_itypes') ? 'items.itype' : 'biblioitems.itemtype');
- $query .= " WHERE items.biblionumber = ? ORDER BY home.branchname,items.dateaccessioned desc" ;
+ $query .= " WHERE items.biblionumber = ? ORDER BY home.branchname, items.enumchron, LPAD( items.copynumber, 8, '0' ), items.dateaccessioned DESC" ;
my $sth = $dbh->prepare($query);
$sth->execute($biblionumber);
my $i = 0;
$data->{'datedue'} = $datedue;
# get notforloan complete status if applicable
- my $sthnflstatus = $dbh->prepare(
- 'SELECT authorised_value
- FROM marc_subfield_structure
- WHERE kohafield="items.notforloan"
- '
- );
-
- $sthnflstatus->execute;
- my ($authorised_valuecode) = $sthnflstatus->fetchrow;
- if ($authorised_valuecode) {
- $sthnflstatus = $dbh->prepare(
- "SELECT lib FROM authorised_values
- WHERE category=?
- AND authorised_value=?"
- );
- $sthnflstatus->execute( $authorised_valuecode,
- $data->{itemnotforloan} );
- my ($lib) = $sthnflstatus->fetchrow;
- $data->{notforloanvalue} = $lib;
+ if ( my $code = C4::Koha::GetAuthValCode( 'items.notforloan', $data->{frameworkcode} ) ) {
+ $data->{notforloanvalue} = C4::Koha::GetKohaAuthorisedValueLib( $code, $data->{itemnotforloan} );
+ $data->{notforloanvalueopac} = C4::Koha::GetKohaAuthorisedValueLib( $code, $data->{itemnotforloan}, 1 );
}
# 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'};
- }
+ if ( my $code = C4::Koha::GetAuthValCode( 'items.restricted', $data->{frameworkcode} ) ) {
+ $data->{restricted} = C4::Koha::GetKohaAuthorisedValueLib( $code, $data->{restricted} );
+ $data->{restrictedopac} = C4::Koha::GetKohaAuthorisedValueLib( $code, $data->{restricted}, 1 );
}
# my stack procedures
- my $stackstatus = $dbh->prepare(
- 'SELECT authorised_value
- FROM marc_subfield_structure
- WHERE kohafield="items.stack"
- '
- );
- $stackstatus->execute;
-
- ($authorised_valuecode) = $stackstatus->fetchrow;
- if ($authorised_valuecode) {
- $stackstatus = $dbh->prepare(
- "SELECT lib
- FROM authorised_values
- WHERE category=?
- AND authorised_value=?
- "
- );
- $stackstatus->execute( $authorised_valuecode, $data->{stack} );
- my ($lib) = $stackstatus->fetchrow;
- $data->{stack} = $lib;
+ if ( my $code = C4::Koha::GetAuthValCode( 'items.stack', $data->{frameworkcode} ) ) {
+ $data->{stack} = C4::Koha::GetKohaAuthorisedValueLib( $code, $data->{stack} );
}
# Find the last 3 people who borrowed this item.
my $sth2 = $dbh->prepare("SELECT * FROM old_issues,borrowers
itemlost = ?,
wthdrawn = ?,
itemcallnumber = ?,
+ coded_location_qualifier = ?,
restricted = ?,
itemnotes = ?,
holdingbranch = ?,
$item->{'itemlost'},
$item->{'wthdrawn'},
$item->{'itemcallnumber'},
+ $item->{'coded_location_qualifier'},
$item->{'restricted'},
$item->{'itemnotes'},
$item->{'holdingbranch'},
# delete from items table
$sth = $dbh->prepare("DELETE FROM items WHERE itemnumber=?");
$sth->execute($itemnum);
- return undef;
+ return;
}
=head2 _marc_from_item_hash
sub GetAnalyticsCount {
my ($itemnumber) = @_;
+ require C4::Search;
if (C4::Context->preference('NoZebra')) {
# Read the index Koha-Auth-Number for this authid and count the lines
my $result = C4::Search::NZanalyse("hi=$itemnumber");
$itemrecord = C4::Items::GetMarcItem( $bibnum, $itemnum );
}
my @loop_data;
- my $authorised_values_sth = $dbh->prepare( "SELECT authorised_value,lib FROM authorised_values WHERE category=? ORDER BY lib" );
+
+ my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
+ my $query = qq{
+ SELECT authorised_value,lib FROM authorised_values
+ };
+ $query .= qq{
+ LEFT JOIN authorised_values_branches ON ( id = av_id )
+ } if $branch_limit;
+ $query .= qq{
+ WHERE category = ?
+ };
+ $query .= qq{ AND ( branchcode = ? OR branchcode IS NULL )} if $branch_limit;
+ $query .= qq{ ORDER BY lib};
+ my $authorised_values_sth = $dbh->prepare( $query );
foreach my $tag ( sort keys %{$tagslib} ) {
my $previous_tag = '';
if ( $tag ne '' ) {
if ( ( $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.location' )
&& $defaultvalues
&& $defaultvalues->{'location'} ) {
- my $temp = $itemrecord->field($subfield) if ($itemrecord);
+
+ my $temp; # make perlcritic happy :)
+ $temp = $itemrecord->field($subfield) if ($itemrecord);
+
unless ($temp) {
$defaultvalue = $defaultvalues->{location} if $defaultvalues;
}
$authorised_lib{$branchcode} = $branchname;
}
}
+ $defaultvalue = C4::Context->userenv->{branch};
#----- itemtypes
} elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes" ) {
#---- "true" authorised value
} else {
- $authorised_values_sth->execute( $tagslib->{$tag}->{$subfield}->{authorised_value} );
+ $authorised_values_sth->execute(
+ $tagslib->{$tag}->{$subfield}->{authorised_value},
+ $branch_limit ? $branch_limit : ()
+ );
push @authorised_values, ""
unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
while ( my ( $value, $lib ) = $authorised_values_sth->fetchrow_array ) {