my ( $tbr, $barcode, $ignoreRs ) = @_;
my $messages;
my $dotransfer = 1;
- my $itemnumber = GetItemnumberFromBarcode( $barcode );
- my $issue = Koha::Checkouts->find({ itemnumber => $itemnumber });
- my $biblio = GetBiblioFromItemNumber($itemnumber);
+ my $item = Koha::Items->find( { barcode => $barcode } );
# bad barcode..
- if ( not $itemnumber ) {
+ unless ( $item ) {
$messages->{'BadBarcode'} = $barcode;
$dotransfer = 0;
}
+ my $itemnumber = $item->itemnumber;
+ my $issue = GetOpenIssue($itemnumber);
# get branches of book...
- my $hbr = $biblio->{'homebranch'};
- my $fbr = $biblio->{'holdingbranch'};
+ my $hbr = $item->homebranch;
+ my $fbr = $item->holdingbranch;
# if using Branch Transfer Limits
if ( C4::Context->preference("UseBranchTransferLimits") == 1 ) {
+ my $code = C4::Context->preference("BranchTransferLimitsType") eq 'ccode' ? $item->ccode : $item->biblio->biblioitem->itemtype; # BranchTransferLimitsType is 'ccode' or 'itemtype'
if ( C4::Context->preference("item-level_itypes") && C4::Context->preference("BranchTransferLimitsType") eq 'itemtype' ) {
- if ( ! IsBranchTransferAllowed( $tbr, $fbr, $biblio->{'itype'} ) ) {
- $messages->{'NotAllowed'} = $tbr . "::" . $biblio->{'itype'};
+ if ( ! IsBranchTransferAllowed( $tbr, $fbr, $item->itype ) ) {
+ $messages->{'NotAllowed'} = $tbr . "::" . $item->itype;
$dotransfer = 0;
}
- } elsif ( ! IsBranchTransferAllowed( $tbr, $fbr, $biblio->{ C4::Context->preference("BranchTransferLimitsType") } ) ) {
- $messages->{'NotAllowed'} = $tbr . "::" . $biblio->{ C4::Context->preference("BranchTransferLimitsType") };
+ } elsif ( ! IsBranchTransferAllowed( $tbr, $fbr, $code ) ) {
+ $messages->{'NotAllowed'} = $tbr . "::" . $code;
$dotransfer = 0;
- }
+ }
}
# if is permanent...
}
ModDateLastSeen( $itemnumber );
- return ( $dotransfer, $messages, $biblio );
+ return ( $dotransfer, $messages );
}
my $onsite_checkout = $params->{onsite_checkout} || 0;
my $override_high_holds = $params->{override_high_holds} || 0;
- my $item = GetItem(GetItemnumberFromBarcode( $barcode ));
+ my $item = GetItem(undef, $barcode );
my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
my $biblioitem = GetBiblioItemData($item->{biblioitemnumber});
$item->{'itemtype'}=$item->{'itype'};
sub checkHighHolds {
my ( $item, $borrower ) = @_;
- my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} );
my $branch = _GetCircControlBranch( $item, $borrower );
+ my $item_object = Koha::Items->find( $item->{itemnumber} );
my $return_data = {
exceeded => 0,
my $calendar = Koha::Calendar->new( branchcode => $branch );
- my $itype =
- ( C4::Context->preference('item-level_itypes') )
- ? $biblio->{'itype'}
- : $biblio->{'itemtype'};
-
+ my $itype = $item_object->effective_itemtype;
my $orig_due = C4::Circulation::CalcDateDue( $issuedate, $itype, $branch, $borrower );
my $decreaseLoanHighHoldsDuration = C4::Context->preference('decreaseLoanHighHoldsDuration');
# find which item we issue
my $item = GetItem( '', $barcode )
or return; # if we don't get an Item, abort.
+ my $item_object = Koha::Items->find( { barcode => $barcode } );
my $branch = _GetCircControlBranch( $item, $borrower );
# get actual issuing if there is one
my $actualissue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
- # get biblioinformation for this item
- my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} );
-
# check if we just renew the issue.
if ( $actualissue and $actualissue->borrowernumber eq $borrower->{'borrowernumber'}
and not $switch_onsite_checkout ) {
# Record in the database the fact that the book was issued.
unless ($datedue) {
- my $itype =
- ( C4::Context->preference('item-level_itypes') )
- ? $biblio->{'itype'}
- : $biblio->{'itemtype'};
+ my $itype = $item_object->effective_itemtype;
$datedue = CalcDateDue( $issuedate, $itype, $branch, $borrower );
}
logaction(
"CIRCULATION", "ISSUE",
$borrower->{'borrowernumber'},
- $biblio->{'itemnumber'}
+ $item->{'itemnumber'}
) if C4::Context->preference("IssueLog");
}
return $issue;
}
# full item data, but no borrowernumber or checkout info (no issue)
- # we know GetItem should work because GetItemnumberFromBarcode worked
my $hbr = GetBranchItemRule($item->{'homebranch'}, $item->{'itype'})->{'returnbranch'} || "homebranch";
# get the proper branch to which to return the item
my $returnbranch = $item->{$hbr} || $branch ;
my $lastreneweddate = shift || DateTime->now(time_zone => C4::Context->tz)->ymd();
my $item = GetItem($itemnumber) or return;
- my $biblio = GetBiblioFromItemNumber($itemnumber) or return;
+ my $item_object = Koha::Items->find( $itemnumber ); # Should replace $item
+ my $biblio = $item_object->biblio;
my $dbh = C4::Context->dbh;
# based on the value of the RenewalPeriodBase syspref.
unless ($datedue) {
- my $itemtype = (C4::Context->preference('item-level_itypes')) ? $biblio->{'itype'} : $biblio->{'itemtype'};
-
+ my $itemtype = $item_object->effective_itemtype;
$datedue = (C4::Context->preference('RenewalPeriodBase') eq 'date_due') ?
dt_from_string( $issue->date_due, 'sql' ) :
DateTime->now( time_zone => C4::Context->tz());
$sth->execute( $datedue->strftime('%Y-%m-%d %H:%M'), $renews, $lastreneweddate, $borrowernumber, $itemnumber );
# Update the renewal count on the item, and tell zebra to reindex
- $renews = $biblio->{'renewals'} + 1;
- ModItem({ renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $biblio->{'biblionumber'}, $itemnumber);
+ $renews = $item->{renewals} + 1;
+ ModItem({ renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $item->{biblionumber}, $itemnumber);
# Charge a new rental fee, if applicable?
my ( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber );
if ( $charge > 0 ) {
my $accountno = getnextacctno( $borrowernumber );
- my $item = GetBiblioFromItemNumber($itemnumber);
my $manager_id = 0;
$manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv;
$sth = $dbh->prepare(
VALUES (now(),?,?,?,?,?,?,?,?)"
);
$sth->execute( $borrowernumber, $accountno, $charge, $manager_id,
- "Renewal of Rental Item $item->{'title'} $item->{'barcode'}",
+ "Renewal of Rental Item " . $item_object->title . " $item->{'barcode'}",
'Rent', $charge, $itemnumber );
}
sub ProcessOfflineReturn {
my $operation = shift;
- my $itemnumber = C4::Items::GetItemnumberFromBarcode( $operation->{barcode} );
+ my $item = Koha::Items->find({barcode => $operation->{barcode}});
- if ( $itemnumber ) {
+ if ( $item ) {
+ my $itemnumber = $item->itemnumber;
my $issue = GetOpenIssue( $itemnumber );
if ( $issue ) {
MarkIssueReturned(
my $borrower = C4::Members::GetMember( cardnumber => $operation->{cardnumber} );
if ( $borrower->{borrowernumber} ) {
- my $itemnumber = C4::Items::GetItemnumberFromBarcode( $operation->{barcode} );
- unless ($itemnumber) {
+ my $item = Koha::Items->find({ barcode => $operation->{barcode} });
+ unless ($item) {
return "Barcode not found.";
}
+ my $itemnumber = $item->itemnumber;
my $issue = GetOpenIssue( $itemnumber );
if ( $issue and ( $issue->{borrowernumber} ne $borrower->{borrowernumber} ) ) { # Item already issued to another borrower, mark it returned
my $total = 0;
while ( my $data = $sth->fetchrow_hashref ) {
if ( $data->{itemnumber} ) {
- my $biblio = GetBiblioFromItemNumber( $data->{itemnumber} );
- $data->{biblionumber} = $biblio->{biblionumber};
- $data->{title} = $biblio->{title};
+ my $item = Koha::Items->find( $data->{itemnumber} );
+ my $biblio = $item->biblio;
+ $data->{biblionumber} = $biblio->biblionumber;
+ $data->{title} = $biblio->title;
}
$acctlines[$numlines] = $data;
$numlines++;
my $total = 0;
while ( my $data = $sth->fetchrow_hashref ) {
if ( $data->{itemnumber} ) {
- my $biblio = GetBiblioFromItemNumber( $data->{itemnumber} );
- $data->{biblionumber} = $biblio->{biblionumber};
- $data->{title} = $biblio->{title};
+ my $item = Koha::Items->find( $data->{itemnumber} );
+ my $biblio = $item->biblio;
+ $data->{biblionumber} = $biblio->biblionumber;
+ $data->{title} = $biblio->title;
}
$acctlines[$numlines] = $data;
$numlines++;
use Koha::Biblios;
use Koha::Checkouts;
use Koha::Patrons;
+use Koha::Items;
=encoding UTF-8
sub new {
my ($class, $item_id) = @_;
my $type = ref($class) || $class;
- my $self;
- my $itemnumber = GetItemnumberFromBarcode($item_id);
- my $item = GetBiblioFromItemNumber($itemnumber); # actually biblio.*, biblioitems.* AND items.* (overkill)
- if (! $item) {
+ my $item = Koha::Items->find( { barcode => $item_id } );
+ unless ( $item ) {
syslog("LOG_DEBUG", "new ILS::Item('%s'): not found", $item_id);
warn "new ILS::Item($item_id) : No item '$item_id'.";
return;
}
- $item->{ 'itemnumber' } = $itemnumber;
- $item->{ 'id' } = $item->{barcode}; # to SIP, the barcode IS the id.
- $item->{permanent_location}= $item->{homebranch};
- $item->{'collection_code'} = $item->{ccode};
- $item->{ 'call_number' } = $item->{itemcallnumber};
+ my $self = $item->unblessed;
+ $self->{ 'id' } = $item->barcode; # to SIP, the barcode IS the id.
+ $self->{permanent_location}= $item->homebranch;
+ $self->{'collection_code'} = $item->ccode;
+ $self->{ 'call_number' } = $item->itemcallnumber;
- my $it = C4::Context->preference('item-level_itypes') ? $item->{itype} : $item->{itemtype};
+ my $it = $item->effective_itemtype;
my $itemtype = Koha::Database->new()->schema()->resultset('Itemtype')->find( $it );
- $item->{sip_media_type} = $itemtype->sip_media_type() if $itemtype;
+ $self->{sip_media_type} = $itemtype->sip_media_type() if $itemtype;
# check if its on issue and if so get the borrower
- my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->itemnumber } );
if ($issue) {
- $item->{due_date} = dt_from_string( $issue->date_due, 'sql' )->truncate( to => 'minute' );
+ $self->{due_date} = dt_from_string( $issue->date_due, 'sql' )->truncate( to => 'minute' );
}
my $borrower = $issue ? GetMember( borrowernumber => $issue->borrowernumber ) : {};
- $item->{patron} = $borrower->{'cardnumber'};
- my $biblio = Koha::Biblios->find( $item->{biblionumber } );
+ $self->{patron} = $borrower->{'cardnumber'};
+ my $biblio = Koha::Biblios->find( $self->{biblionumber} );
my $holds = $biblio->current_holds->unblessed;
- $item->{hold_queue} = $holds;
- $item->{hold_shelf} = [( grep { defined $_->{found} and $_->{found} eq 'W' } @{$item->{hold_queue}} )];
- $item->{pending_queue} = [( grep {(! defined $_->{found}) or $_->{found} ne 'W' } @{$item->{hold_queue}} )];
- $self = $item;
+ $self->{hold_queue} = $holds;
+ $self->{hold_shelf} = [( grep { defined $_->{found} and $_->{found} eq 'W' } @{$self->{hold_queue}} )];
+ $self->{pending_queue} = [( grep {(! defined $_->{found}) or $_->{found} ne 'W' } @{$self->{hold_queue}} )];
bless $self, $type;
syslog("LOG_DEBUG", "new ILS::Item('%s'): found with title '%s'",
package C4::SIP::ILS::Transaction::Hold;
-use warnings;
-use strict;
+use Modern::Perl;
use C4::SIP::ILS::Transaction;
use C4::Reserves; # AddReserve
use C4::Members; # GetMember
-use C4::Biblio; # GetBiblioFromItemNumber GetBiblioItemByBiblioNumber
use parent qw(C4::SIP::ILS::Transaction);
-
+use Koha::Items;
my %fields = (
expiration_date => 0,
$self->ok(0);
return $self;
}
- my $bib = GetBiblioFromItemNumber( undef, $self->{item}->id );
- unless ($bib) {
+ my $item = Koha::Items->find({ barcode => $self->{item}->id });
+ unless ($item) {
$self->screen_msg( 'No biblio record matches barcode "' . $self->{item}->id . '".' );
$self->ok(0);
return $self;
$self->ok(0);
return $self;
}
- my $bibno = $bib->{biblionumber};
- AddReserve( $branch, $borrower->{borrowernumber}, $bibno, GetBiblioItemByBiblioNumber($bibno) );
+ AddReserve( $branch, $borrower->{borrowernumber}, $item->biblionumber );
# unfortunately no meaningful return value
$self->ok(1);
$self->ok(0);
return $self;
}
- my $bib = GetBiblioFromItemNumber(undef, $self->{item}->id);
+ my $item = Koha::Items->find({ barcode => $self->{item}->id });
CancelReserve({
- biblionumber => $bib->{biblionumber},
+ biblionumber => $item->biblionumber,
itemnumber => $self->{item}->id,
borrowernumber => $borrower->{borrowernumber}
});
$self->ok(0);
return $self;
}
- my $bib = GetBiblioFromItemNumber(undef, $self->{item}->id);
- unless ($bib) {
+ my $item = Koha::Items->find({ barcode => $self->{item}->id });
+ unless ($item) {
$self->screen_msg('No biblio record matches barcode "' . $self->{item}->id . '".');
$self->ok(0);
return $self;
$self->ok(0);
return $self;
}
- my $bibno = $bib->{biblionumber};
- ModReserve({ biblionumber => $bibno, borrowernumber => $borrower->{borrowernumber}, branchcode => $branch });
+ ModReserve({ biblionumber => $item->biblionumber, borrowernumber => $borrower->{borrowernumber}, branchcode => $branch });
$self->ok(1);
return $self;
use C4::Output;
use C4::Circulation; # GetBiblioIssues
-use C4::Biblio; # GetBiblio GetBiblioFromItemNumber
+use C4::Biblio; # GetBiblio
use C4::Search; # enabled_staff_search_views
my $query = new CGI;
use Date::Calc qw(Today);
use MARC::File::XML;
+
+use Koha::Items;
+
my $query = CGI->new;
# The biblio to move the item to
# If we already have the barcode of the item to move and the biblionumber to move the item to
if ($barcode && $biblionumber) {
-
- # We get his itemnumber
- my $itemnumber = GetItemnumberFromBarcode($barcode);
- if ($itemnumber) {
- # And then, we get the item
- my $item = GetItem($itemnumber);
+ my $itemnumber;
+ my $item = Koha::Items->find({ barcode => $barcode });
+
+ if ($item) {
- if ($item) {
+ $itemnumber = $item->itemnumber;
+ my $frombiblionumber = $item->biblionumber;
- my $results = GetBiblioFromItemNumber($itemnumber, $barcode);
- my $frombiblionumber = $results->{'biblionumber'};
-
my $moveresult = MoveItemFromBiblio($itemnumber, $frombiblionumber, $biblionumber);
if ($moveresult) {
$template->param(success => 1);
$template->param(error => 1,
errornoitem => 1);
}
- } else {
- $template->param(error => 1,
- errornoitemnumber => 1);
-
- }
$template->param(
barcode => $barcode,
itemnumber => $itemnumber,
use C4::Members;
use Koha::BiblioFrameworks;
use Koha::AuthorisedValues;
+use Koha::Items;
###############################################
# Getting state
# warn "barcode : $barcode";
if ($barcode) {
- my $iteminformation;
- ( $transfered, $messages, $iteminformation ) =
+ ( $transfered, $messages ) =
transferbook( $tobranchcd, $barcode, $ignoreRs );
-# use Data::Dumper;
-# warn "Transfered : $transfered / ".Dumper($messages);
+ my $item = Koha::Items->find({ barcode => $barcode });
$found = $messages->{'ResFound'};
if ($transfered) {
my %item;
+ my $biblio = $item->biblio;
my $frbranchcd = C4::Context->userenv->{'branch'};
-# if ( not($found) ) {
- $item{'biblionumber'} = $iteminformation->{'biblionumber'};
- $item{'itemnumber'} = $iteminformation->{'itemnumber'};
- $item{'title'} = $iteminformation->{'title'};
- $item{'author'} = $iteminformation->{'author'};
- $item{'itemtype'} = $iteminformation->{'itemtype'};
- $item{'ccode'} = $iteminformation->{'ccode'};
- $item{'itemcallnumber'} = $iteminformation->{'itemcallnumber'};
- my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $iteminformation->{location} });
+ $item{'biblionumber'} = $item->biblionumber;
+ $item{'itemnumber'} = $item->itemnumber;
+ $item{'title'} = $biblio->title;
+ $item{'author'} = $biblio->author;
+ $item{'itemtype'} = $biblio->biblioitem->itemtype;
+ $item{'ccode'} = $item->ccode;
+ $item{'itemcallnumber'} = $item->itemcallnumber;
+ my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $item->location });
$item{'location'} = $av->count ? $av->next->lib : '';
-# }
$item{counter} = 0;
$item{barcode} = $barcode;
$item{frombrcd} = $frbranchcd;
$item{tobrcd} = $tobranchcd;
push( @trsfitemloop, \%item );
-# warn Dumper(@trsfitemloop);
}
}
$item{barcode} = $bc;
$item{frombrcd} = $frbcd;
$item{tobrcd} = $tobcd;
- my ($iteminformation) = GetBiblioFromItemNumber( GetItemnumberFromBarcode($bc) );
- $item{'biblionumber'} = $iteminformation->{'biblionumber'};
- $item{'itemnumber'} = $iteminformation->{'itemnumber'};
- $item{'title'} = $iteminformation->{'title'};
- $item{'author'} = $iteminformation->{'author'};
- $item{'itemtype'} = $iteminformation->{'itemtype'};
- $item{'ccode'} = $iteminformation->{'ccode'};
- $item{'itemcallnumber'} = $iteminformation->{'itemcallnumber'};
- my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $iteminformation->{location} });
+ my $item = Koha::Items->find({ barcode => $bc });
+ my $biblio = $item->biblio;
+ $item{'biblionumber'} = $item->biblionumber;
+ $item{'itemnumber'} = $item->itemnumber;
+ $item{'title'} = $biblio->title;
+ $item{'author'} = $biblio->author;
+ $item{'itemtype'} = $biblio->biblioitem->itemtype;
+ $item{'ccode'} = $item->ccode;
+ $item{'itemcallnumber'} = $item->itemcallnumber;
+ my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $item->location });
$item{'location'} = $av->count ? $av->next->lib : '';
push( @trsfitemloop, \%item );
}
use Koha::Calendar;
use Koha::BiblioFrameworks;
use Koha::Checkouts;
+use Koha::Items;
use Koha::Patrons;
my $query = new CGI;
}
if ( $query->param('reserve_id') ) {
- my $item = $query->param('itemnumber');
+ my $itemnumber = $query->param('itemnumber');
my $borrowernumber = $query->param('borrowernumber');
my $reserve_id = $query->param('reserve_id');
my $diffBranchReturned = $query->param('diffBranch');
- my $iteminfo = GetBiblioFromItemNumber($item);
my $cancel_reserve = $query->param('cancel_reserve');
# fix up item type for display
- $iteminfo->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $iteminfo->{'itype'} : $iteminfo->{'itemtype'};
+ my $item = Koha::Items->find( $itemnumber );
+ my $biblio = $item->biblio;
if ( $cancel_reserve ) {
CancelReserve({ reserve_id => $reserve_id, charge_cancel_fee => !$forgivemanualholdsexpire });
my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef;
# diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
# i.e., whether to apply waiting status
- ModReserveAffect( $item, $borrowernumber, $diffBranchSend, $reserve_id );
+ ModReserveAffect( $itemnumber, $borrowernumber, $diffBranchSend, $reserve_id );
}
# check if we have other reserves for this document, if we have a return send the message of transfer
- my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
+ my ( $messages, $nextreservinfo ) = GetOtherReserves($itemnumber);
my $borr = GetMember( borrowernumber => $nextreservinfo );
my $name = $borr->{'surname'} . ", " . $borr->{'title'} . " " . $borr->{'firstname'};
if ( $messages->{'transfert'} ) {
$template->param(
- itemtitle => $iteminfo->{'title'},
- itemnumber => $iteminfo->{'itemnumber'},
- itembiblionumber => $iteminfo->{'biblionumber'},
- iteminfo => $iteminfo->{'author'},
+ itemtitle => $biblio->title,
+ itemnumber => $item->itemnumber,
+ itembiblionumber => $biblio->biblionumber,
+ iteminfo => $biblio->author,
name => $name,
borrowernumber => $borrowernumber,
borcnum => $borr->{'cardnumber'},
if ($barcode) {
$barcode =~ s/^\s*|\s*$//g; # remove leading/trailing whitespace
$barcode = barcodedecode($barcode) if C4::Context->preference('itemBarcodeInputFilter');
- $itemnumber = GetItemnumberFromBarcode($barcode);
-
-#
-# save the return
-#
-
- # get biblio description
- my $biblio = GetBiblioFromItemNumber($itemnumber);
- # fix up item type for display
- $biblio->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $biblio->{'itype'} : $biblio->{'itemtype'};
+ my $item = Koha::Items->find({ barcode => $barcode });
# Check if we should display a checkin message, based on the the item
# type of the checked in item
- my $itemtype = Koha::ItemTypes->find( $biblio->{'itemtype'} );
+ my $itemtype = Koha::ItemTypes->find( $item->effective_itemtype );
if ( $itemtype && $itemtype->checkinmsg ) {
$template->param(
checkinmsg => $itemtype->checkinmsg,
}
# make sure return branch respects home branch circulation rules, default to homebranch
- my $hbr = GetBranchItemRule($biblio->{'homebranch'}, $itemtype ? $itemtype->itemtype : undef )->{'returnbranch'} || "homebranch";
- $returnbranch = $biblio->{$hbr};
+ my $hbr = GetBranchItemRule($item->homebranch, $itemtype ? $itemtype->itemtype : undef )->{'returnbranch'} || "homebranch";
+ $returnbranch = $item->$hbr;
- my $materials = $biblio->{'materials'};
+ my $materials = $item->materials;
my $descriptions = Koha::AuthorisedValues->get_description_by_koha_field({frameworkcode => '', kohafield =>'items.materials', authorised_value => $materials });
$materials = $descriptions->{lib} // $materials;
my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } );
+ my $biblio = $item->biblio;
$template->param(
- title => $biblio->{'title'},
- homebranch => $biblio->{'homebranch'},
- holdingbranch => $biblio->{'holdingbranch'},
+ title => $biblio->title,
+ homebranch => $item->homebranch,
+ holdingbranch => $item->holdingbranch,
returnbranch => $returnbranch,
- author => $biblio->{'author'},
- itembarcode => $biblio->{'barcode'},
- itemtype => $biblio->{'itemtype'},
- ccode => $biblio->{'ccode'},
- itembiblionumber => $biblio->{'biblionumber'},
- biblionumber => $biblio->{'biblionumber'},
+ author => $biblio->author,
+ itembarcode => $item->barcode,
+ itemtype => $item->effective_itemtype,
+ ccode => $item->ccode,
+ itembiblionumber => $biblio->biblionumber,
+ biblionumber => $biblio->biblionumber,
borrower => $borrower,
additional_materials => $materials,
issue => $issue,
$ri{borrowernumber} = $riborrowernumber{$_};
}
- # my %ri;
- my $biblio = GetBiblioFromItemNumber(GetItemnumberFromBarcode($bar_code));
- my $item = GetItem( GetItemnumberFromBarcode($bar_code) );
- # fix up item type for display
- $biblio->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $biblio->{'itype'} : $biblio->{'itemtype'};
- $ri{itembiblionumber} = $biblio->{'biblionumber'};
- $ri{itemtitle} = $biblio->{'title'};
- $ri{itemauthor} = $biblio->{'author'};
- $ri{itemcallnumber} = $biblio->{'itemcallnumber'};
- $ri{dateaccessioned} = $item->{dateaccessioned};
- $ri{itemtype} = $biblio->{'itemtype'};
- $ri{itemnote} = $biblio->{'itemnotes'};
- $ri{itemnotes_nonpublic} = $item->{'itemnotes_nonpublic'};
- $ri{ccode} = $biblio->{'ccode'};
- $ri{enumchron} = $biblio->{'enumchron'};
- $ri{itemnumber} = $biblio->{'itemnumber'};
+ my $item = Koha::Items->find({ barcode => $bar_code });
+ my $biblio = $item->biblio;
+ # FIXME pass $item to the template and we are done here...
+ $ri{itembiblionumber} = $biblio->biblionumber;
+ $ri{itemtitle} = $biblio->title;
+ $ri{itemauthor} = $biblio->author;
+ $ri{itemcallnumber} = $item->itemcallnumber;
+ $ri{dateaccessioned} = $item->dateaccessioned;
+ $ri{itemtype} = $item->effective_itemtype;
+ $ri{itemnote} = $item->itemnotes;
+ $ri{itemnotes_nonpublic} = $item->itemnotes_nonpublic;
+ $ri{ccode} = $item->ccode;
+ $ri{enumchron} = $item->enumchron;
+ $ri{itemnumber} = $item->itemnumber;
$ri{barcode} = $bar_code;
- $ri{homebranch} = $item->{'homebranch'};
- $ri{holdingbranch} = $item->{'holdingbranch'};
+ $ri{homebranch} = $item->homebranch;
+ $ri{holdingbranch} = $item->holdingbranch;
$ri{location} = $biblio->{'location'};
my $shelfcode = $ri{'location'};
$getransf{'messcompa'} = 1;
$getransf{'diff'} = $diff;
}
- my $gettitle = GetBiblioFromItemNumber( $num->{'itemnumber'} );
- my $itemtype = Koha::ItemTypes->find( (C4::Context->preference('item-level_itypes')) ? $gettitle->{'itype'} : $gettitle->{'itemtype'} );
+
+ my $item = Koha::Items->find( $num->{itemnumber} );
+ my $biblio = $item->biblio;
+ my $itemtype = Koha::ItemTypes->find( $item->effective_itemtype );
$getransf{'datetransfer'} = $num->{'datesent'};
$getransf{'itemtype'} = $itemtype->description; # FIXME Should not it be translated_description?
- foreach (qw(title author biblionumber itemnumber barcode homebranch holdingbranch itemcallnumber)) {
- $getransf{$_} = $gettitle->{$_};
- }
-
- my $record = GetMarcBiblio($gettitle->{'biblionumber'});
- $getransf{'subtitle'} = GetRecordValue('subtitle', $record, GetFrameworkCode($gettitle->{'biblionumber'}));
+ %getransf = (
+ %getransf,
+ title => $biblio->title,
+ author => $biblio->author,
+ biblionumber => $biblio->biblionumber,
+ itemnumber => $item->itemnumber,
+ barcode => $item->barcode,
+ homebranch => $item->homebranch,
+ holdingbranch => $item->holdingbranch,
+ itemcallnumber => $item->itemcallnumber,
+ );
+
+ my $record = GetMarcBiblio($biblio->biblionumber);
+ $getransf{'subtitle'} = GetRecordValue('subtitle', $record, $biblio->frameworkcode);
# we check if we have a reserv for this transfer
- my $item = Koha::Items->find( $num->{itemnumber} );
my $holds = $item->current_holds;
if ( my $first_hold = $holds->next ) {
my $getborrower = C4::Members::GetMember( borrowernumber => $first_hold->borrowernumber );
use C4::Koha;
use Koha::DateUtils;
use Koha::BiblioFrameworks;
+use Koha::Items;
use Koha::ItemTypes;
my $input = new CGI;
next unless ($num->{'waitingdate'} && $num->{'waitingdate'} ne '0000-00-00');
my $itemnumber = $num->{'itemnumber'};
- my $gettitle = GetBiblioFromItemNumber( $itemnumber );
+ my $item = Koha::Items->find( $itemnumber );
+ my $biblio = $item->biblio;
my $borrowernum = $num->{'borrowernumber'};
- my $holdingbranch = $gettitle->{'holdingbranch'};
- my $homebranch = $gettitle->{'homebranch'};
+ my $holdingbranch = $item->holdingbranch;
+ my $homebranch = $item->homebranch;
my %getreserv = (
itemnumber => $itemnumber,
borrowernum => $borrowernum,
);
- # fix up item type for display
- $gettitle->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $gettitle->{'itype'} : $gettitle->{'itemtype'};
my $getborrower = GetMember(borrowernumber => $num->{'borrowernumber'});
- my $itemtype = Koha::ItemTypes->find( $gettitle->{'itemtype'} ); # using the fixed up itype/itemtype
+ my $itemtype = Koha::ItemTypes->find( $item->effective_itemtype );
$getreserv{'waitingdate'} = $num->{'waitingdate'};
my ( $expire_year, $expire_month, $expire_day ) = split (/-/, $num->{'expirationdate'});
my $calcDate = Date_to_Days( $expire_year, $expire_month, $expire_day );
$getreserv{'itemtype'} = $itemtype->description; # FIXME Should not it be translated_description?
- $getreserv{'title'} = $gettitle->{'title'};
- $getreserv{'subtitle'} = GetRecordValue('subtitle', GetMarcBiblio($gettitle->{'biblionumber'}), GetFrameworkCode($gettitle->{'biblionumber'}));
- $getreserv{'biblionumber'} = $gettitle->{'biblionumber'};
- $getreserv{'barcode'} = $gettitle->{'barcode'};
- $getreserv{'homebranch'} = $gettitle->{'homebranch'};
- $getreserv{'holdingbranch'} = $gettitle->{'holdingbranch'};
- $getreserv{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
- $getreserv{'enumchron'} = $gettitle->{'enumchron'};
- $getreserv{'copynumber'} = $gettitle->{'copynumber'};
+ $getreserv{'title'} = $biblio->title;
+ $getreserv{'subtitle'} = GetRecordValue('subtitle', GetMarcBiblio($biblio->biblionumber), $biblio->frameworkcode);
+ $getreserv{'biblionumber'} = $biblio->biblionumber;
+ $getreserv{'barcode'} = $item->barcode;
+ $getreserv{'homebranch'} = $homebranch;
+ $getreserv{'holdingbranch'} = $item->holdingbranch;
+ $getreserv{'itemcallnumber'} = $item->itemcallnumber;
+ $getreserv{'enumchron'} = $item->enumchron;
+ $getreserv{'copynumber'} = $item->copynumber;
if ( $homebranch ne $holdingbranch ) {
$getreserv{'dotransfer'} = 1;
}
if ($nextreservinfo) {
my %res;
my $borrowerinfo = C4::Members::GetMember( borrowernumber => $nextreservinfo );
- my $iteminfo = GetBiblioFromItemNumber($item);
+ my $title = Koha::Items->find( $item )->biblio->title;
if ( $messages->{'transfert'} ) {
$res{messagetransfert} = $messages->{'transfert'};
$res{branchcode} = $messages->{'transfert'};
$res{nextreservsurname} = $borrowerinfo->{'surname'};
$res{nextreservfirstname} = $borrowerinfo->{'firstname'};
$res{nextreservitem} = $item;
- $res{nextreservtitle} = $iteminfo->{'title'};
+ $res{nextreservtitle} = $title;
$res{waiting} = $messages->{'waiting'} ? 1 : 0;
return \%res;
[% IF ( errornonewitem ) %]ERROR: Unable to create the new item.<p>
[% INCLUDE actions %]
[% INCLUDE fail %]
+ </p>
[% END %]
[% IF ( errornoitem ) %]ERROR: Unable to get the item.<p>
[% INCLUDE actions %]
[% INCLUDE fail %]
- [% END %]
-
- [% IF ( errornoitemnumber ) %]ERROR: Unable to get the item number from this barcode.<p>
- [% INCLUDE actions %]
- [% INCLUDE fail %]
- [% END %]
</p>
+ [% END %]
</div>
[% ELSE %]
use C4::Overdues;
use Koha::DateUtils;
use C4::Log;
+use Koha::Items;
use Koha::Libraries;
use Koha::Patrons;
$due_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
$due_digest->{ $upcoming->{borrowernumber} }->{count}++;
} else {
- my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
+ my $item = Koha::Items->find( $upcoming->{itemnumber} );
my $letter_type = 'DUE';
$sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},'0');
my $titles = "";
my $letter = parse_letter( { letter_code => $letter_type,
borrowernumber => $upcoming->{'borrowernumber'},
branchcode => $upcoming->{'branchcode'},
- biblionumber => $biblio->{'biblionumber'},
+ biblionumber => $item->biblionumber,
itemnumber => $upcoming->{'itemnumber'},
substitute => { 'items.content' => $titles },
message_transport_type => $transport,
$upcoming_digest->{ $upcoming->{borrowernumber} }->{email} = $from_address;
$upcoming_digest->{ $upcoming->{borrowernumber} }->{count}++;
} else {
- my $biblio = C4::Biblio::GetBiblioFromItemNumber( $upcoming->{'itemnumber'} );
+ my $item = Koha::Items->find( $upcoming->{itemnumber} );
my $letter_type = 'PREDUE';
$sth->execute($upcoming->{'borrowernumber'},$upcoming->{'itemnumber'},$borrower_preferences->{'days_in_advance'});
my $titles = "";
my $letter = parse_letter( { letter_code => $letter_type,
borrowernumber => $upcoming->{'borrowernumber'},
branchcode => $upcoming->{'branchcode'},
- biblionumber => $biblio->{'biblionumber'},
+ biblionumber => $item->biblionumber,
itemnumber => $upcoming->{'itemnumber'},
substitute => { 'items.content' => $titles },
message_transport_type => $transport,
use C4::Items;
use C4::Members;
use C4::Stats;
-use Koha::UploadedFiles;
use Koha::Checkouts;
+use Koha::UploadedFiles;
+use Koha::Items;
use Date::Calc qw( Add_Delta_Days Date_to_Days );
return unless $barcode;
- my $item = GetBiblioFromItemNumber( undef, $barcode );
- return unless $item->{'itemnumber'};
+ my $item = Koha::Items->find({ barcode => $barcode });
+ return unless $item;
- my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->itemnumber } );
return unless $issue;
return $issue->borrowernumber;
}
use C4::Members;
use C4::Biblio;
+use Koha::Items;
+
my $query = CGI->new;
my ($template, $loggedinuser, $cookie) = get_template_and_user({
my $operations = GetOfflineOperations;
for (@$operations) {
- my $biblio = GetBiblioFromItemNumber(undef, $_->{'barcode'});
- $_->{'bibliotitle'} = $biblio->{'title'};
- $_->{'biblionumber'} = $biblio->{'biblionumber'};
+ my $item = Koha::Items->find({ barcode => $_->{barcode} });
+ my $biblio = $item->biblio;
+ $_->{'bibliotitle'} = $biblio->title;
+ $_->{'biblionumber'} = $biblio->biblionumber;
my $borrower = C4::Members::GetMember( cardnumber => $_->{'cardnumber'} );
if ($borrower) {
$_->{'borrowernumber'} = $borrower->{'borrowernumber'};
$circ->{ 'barcode' } = barcodedecode($circ->{'barcode'}) if( $circ->{'barcode'} && C4::Context->preference('itemBarcodeInputFilter'));
my $branchcode = C4::Context->userenv->{branch};
my $borrower = GetMember( 'cardnumber'=>$circ->{ 'cardnumber' } );
- my $item = GetBiblioFromItemNumber( undef, $circ->{ 'barcode' } );
- my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
+ my $item = Koha::Items->find({ barcode => $circ->{barcode} });
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->itemnumber } );
+ my $biblio = $item->biblio;
if ( $issue ) { ## Item is currently checked out to another person.
#warn "Item Currently Issued.";
- my $issue = GetOpenIssue( $item->{'itemnumber'} ); # FIXME Hum? That does not make sense, if it's in the issue table, the issue is open (i.e. returndate is null)
+ my $issue = GetOpenIssue( $item->itemnumber ); # FIXME Hum? That does not make sense, if it's in the issue table, the issue is open (i.e. returndate is null)
if ( $issue->{'borrowernumber'} eq $borrower->{'borrowernumber'} ) { ## Issued to this person already, renew it.
#warn "Item issued to this member already, renewing.";
C4::Circulation::AddRenewal(
$issue->{'borrowernumber'}, # borrowernumber
- $item->{'itemnumber'}, # itemnumber
+ $item->itemnumber, # itemnumber
undef, # branch
undef, # datedue - let AddRenewal calculate it automatically
$circ->{'date'}, # issuedate
push @output, {
renew => 1,
- title => $item->{ 'title' },
- biblionumber => $item->{'biblionumber'},
- barcode => $item->{ 'barcode' },
+ title => $biblio->title,
+ biblionumber => $biblio->biblionumber,
+ barcode => $item->barcode,
firstname => $borrower->{ 'firstname' },
surname => $borrower->{ 'surname' },
borrowernumber => $borrower->{'borrowernumber'},
C4::Circulation::AddIssue( $borrower, $circ->{'barcode'}, undef, undef, $circ->{'date'} ) unless ( DEBUG );
push @output, {
issue => 1,
- title => $item->{ 'title' },
- biblionumber => $item->{'biblionumber'},
- barcode => $item->{ 'barcode' },
+ title => $biblio->title,
+ biblionumber => $biblio->biblionumber,
+ barcode => $item->barcode,
firstname => $borrower->{ 'firstname' },
surname => $borrower->{ 'surname' },
borrowernumber => $borrower->{'borrowernumber'},
C4::Circulation::AddIssue( $borrower, $circ->{'barcode'}, undef, undef, $circ->{'date'} ) unless ( DEBUG );
push @output, {
issue => 1,
- title => $item->{ 'title' },
- biblionumber => $item->{'biblionumber'},
- barcode => $item->{ 'barcode' },
+ title => $biblio->title,
+ biblionumber => $biblio->biblionumber,
+ barcode => $item->barcode,
firstname => $borrower->{ 'firstname' },
surname => $borrower->{ 'surname' },
borrowernumber => $borrower->{'borrowernumber'},
sub kocReturnItem {
my ( $circ ) = @_;
$circ->{'barcode'} = barcodedecode($circ->{'barcode'}) if( $circ->{'barcode'} && C4::Context->preference('itemBarcodeInputFilter'));
- my $item = GetBiblioFromItemNumber( undef, $circ->{ 'barcode' } );
- #warn( Data::Dumper->Dump( [ $circ, $item ], [ qw( circ item ) ] ) );
+ my $item = Koha::Items->find({ barcode => $circ->{barcode} });
+ my $biblio = $item->biblio;
my $borrowernumber = _get_borrowernumber_from_barcode( $circ->{'barcode'} );
if ( $borrowernumber ) {
my $borrower = GetMember( 'borrowernumber' => $borrowernumber );
C4::Circulation::MarkIssueReturned(
$borrowernumber,
- $item->{'itemnumber'},
+ $item->itemnumber,
undef,
$circ->{'date'},
$borrower->{'privacy'}
);
- ModItem({ onloan => undef }, $item->{'biblionumber'}, $item->{'itemnumber'});
- ModDateLastSeen( $item->{'itemnumber'} );
+ ModItem({ onloan => undef }, $biblio->biblionumber, $item->itemnumber);
+ ModDateLastSeen( $item->itemnumber );
push @output, {
return => 1,
- title => $item->{ 'title' },
- biblionumber => $item->{'biblionumber'},
- barcode => $item->{ 'barcode' },
+ title => $biblio->title,
+ biblionumber => $biblio->biblionumber,
+ barcode => $item->barcode,
borrowernumber => $borrower->{'borrowernumber'},
firstname => $borrower->{'firstname'},
surname => $borrower->{'surname'},
return unless $barcode;
- my $item = GetBiblioFromItemNumber( undef, $barcode );
- return unless $item->{'itemnumber'};
+ my $item = Koha::Items->find({ barcode => $barcode });
+ return unless $item;
- my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->itemnumber } );
return unless $issue;
return $issue->borrowernumber;
}
use C4::XSLT;
use Koha::Biblioitems;
+use Koha::Items;
use Koha::ItemTypes;
use Koha::Virtualshelves;
use Koha::RecordProcessor;
if( my $barcode = $query->param('barcode') ) {
my $item = GetItem( 0, $barcode);
if (defined $item && $item->{itemnumber}) {
- my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} );
if ( $shelf->can_biblios_be_added( $loggedinuser ) ) {
- my $added = eval { $shelf->add_biblio( $biblio->{biblionumber}, $loggedinuser ); };
+ my $added = eval { $shelf->add_biblio( $item->{biblionumber}, $loggedinuser ); };
if ($@) {
push @messages, { type => 'error', code => ref($@), msg => $@ };
} elsif ( $added ) {
next if $barcode eq '';
my $item = GetItem( 0, $barcode);
if (defined $item && $item->{itemnumber}) {
- my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} );
- my $added = eval { $shelf->add_biblio( $biblio->{biblionumber}, $loggedinuser ); };
+ my $added = eval { $shelf->add_biblio( $item->{biblionumber}, $loggedinuser ); };
if ($@) {
push @messages, { item_barcode => $barcode, type => 'alert', code => ref($@), msg => $@ };
} elsif ( $added ) {