my $messages;
my $dotransfer = 1;
my $itemnumber = GetItemnumberFromBarcode( $barcode );
- my $issue = GetItemIssue($itemnumber);
+ my $issue = Koha::Checkouts->find({ itemnumber => $itemnumber });
my $biblio = GetBiblioFromItemNumber($itemnumber);
# bad barcode..
}
# check if it is still issued to someone, return it...
- if ($issue->{borrowernumber}) {
+ if ( $issue ) {
AddReturn( $barcode, $fbr );
- $messages->{'WasReturned'} = $issue->{borrowernumber};
+ $messages->{'WasReturned'} = $issue->borrowernumber;
}
# find reserves.....
my $override_high_holds = $params->{override_high_holds} || 0;
my $item = GetItem(GetItemnumberFromBarcode( $barcode ));
- my $issue = GetItemIssue($item->{itemnumber});
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
my $biblioitem = GetBiblioItemData($item->{biblioitemnumber});
$item->{'itemtype'}=$item->{'itype'};
my $dbh = C4::Context->dbh;
#
my $switch_onsite_checkout = (
C4::Context->preference('SwitchOnSiteCheckouts')
- and $issue->{onsite_checkout}
and $issue
- and $issue->{borrowernumber} == $borrower->{'borrowernumber'} ? 1 : 0 );
+ and $issue->onsite_checkout
+ and $issue->borrowernumber == $borrower->{'borrowernumber'} ? 1 : 0 );
my $toomany = TooMany( $borrower, $item->{biblionumber}, $item, { onsite_checkout => $onsite_checkout, switch_onsite_checkout => $switch_onsite_checkout, } );
# if TooMany max_allowed returns 0 the user doesn't have permission to check out this book
if ( $toomany ) {
#
# CHECK IF BOOK ALREADY ISSUED TO THIS BORROWER
#
- if ( $issue->{borrowernumber} && $issue->{borrowernumber} eq $borrower->{'borrowernumber'} ){
+ if ( $issue && $issue->borrowernumber eq $borrower->{'borrowernumber'} ){
# Already issued to current borrower.
# If it is an on-site checkout if it can be switched to a normal checkout
# or ask whether the loan should be renewed
- if ( $issue->{onsite_checkout}
+ if ( $issue->onsite_checkout
and C4::Context->preference('SwitchOnSiteCheckouts') ) {
$messages{ONSITE_CHECKOUT_WILL_BE_SWITCHED} = 1;
} else {
}
}
}
- elsif ($issue->{borrowernumber}) {
+ elsif ( $issue ) {
# issued to someone else
- my $currborinfo = C4::Members::GetMember( borrowernumber => $issue->{borrowernumber} );
+ my $currborinfo = C4::Members::GetMember( borrowernumber => $issue->borrowernumber );
my ( $can_be_returned, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} );
my $branch = _GetCircControlBranch( $item, $borrower );
# get actual issuing if there is one
- my $actualissue = GetItemIssue( $item->{itemnumber} );
+ 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->{borrowernumber} eq $borrower->{'borrowernumber'}
+ if ( $actualissue and $actualissue->borrowernumber eq $borrower->{'borrowernumber'}
and not $switch_onsite_checkout ) {
$datedue = AddRenewal(
$borrower->{'borrowernumber'},
}
else {
# it's NOT a renewal
- if ( $actualissue->{borrowernumber}
- and not $switch_onsite_checkout ) {
+ if ( $actualissue and not $switch_onsite_checkout ) {
# This book is currently on loan, but not to the person
# who wants to borrow it now. mark it returned before issuing to the new borrower
my ( $allowed, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} );
push @bind, $issue_id;
# FIXME Improve the return value and handle it from callers
- my $do_not_lock = ( exists $ENV{_} && $ENV{_} =~ m|prove| ) || $ENV{KOHA_NO_TABLE_LOCKS};
$schema->txn_do(sub {
$dbh->do( $query, undef, @bind );
- C4::Context->dbh->do(q|LOCK TABLE old_issues READ|) unless $do_not_lock;
- C4::Context->dbh->do(q|LOCK TABLE old_issues WRITE|) unless $do_not_lock;
-
- my $original_issue_id = $issue_id;
my $issue = Koha::Checkouts->find( $issue_id ); # FIXME should be fetched earlier
# Create the old_issues entry
my $old_checkout_data = $issue->unblessed;
if ( Koha::Old::Checkouts->find( $issue_id ) ) {
- my $new_issue_id = Koha::Old::Checkouts->search(
+ my $new_issue_id = ( Koha::Old::Checkouts->search(
{},
{ columns => [ { max_issue_id => { max => 'issue_id' } } ] }
- )->get_column('max_issue_id') + 1;
+ )->get_column('max_issue_id') )[0];
+ $new_issue_id++;
$issue_id = $new_issue_id;
}
$old_checkout_data->{issue_id} = $issue_id;
my $old_checkout = Koha::Old::Checkout->new($old_checkout_data)->store;
- C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock;
-
# Update the fines
$dbh->do(q|UPDATE accountlines SET issue_id = ? WHERE issue_id = ?|, undef, $old_checkout->issue_id, $issue->issue_id);
my $dbh = C4::Context->dbh;
my $item = GetItem($itemnumber) or return;
- my $itemissue = GetItemIssue($itemnumber) or return;
+ my $itemissue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return;
- $borrowernumber ||= $itemissue->{borrowernumber};
+ $borrowernumber ||= $itemissue->borrowernumber;
my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber )
or return;
and $issuing_rule->norenewalbefore ne "" )
{
my $soonestrenewal =
- $itemissue->{date_due}->clone()
- ->subtract(
+ dt_from_string( $itemissue->date_due )->subtract(
$issuing_rule->lengthunit => $issuing_rule->norenewalbefore );
if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date'
my $dbh = C4::Context->dbh;
my $item = GetItem($itemnumber) or return;
- my $itemissue = GetItemIssue($itemnumber) or return;
+ my $itemissue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return;
- $borrowernumber ||= $itemissue->{borrowernumber};
+ $borrowernumber ||= $itemissue->borrowernumber;
my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber )
or return;
my $maximum_renewal_date;
if ( $issuing_rule->no_auto_renewal_after ) {
- $maximum_renewal_date = dt_from_string($itemissue->{issuedate});
+ $maximum_renewal_date = dt_from_string($itemissue->issuedate);
$maximum_renewal_date->add(
$issuing_rule->lengthunit => $issuing_rule->no_auto_renewal_after
);