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} );
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
);
use DateTime;
use C4::Auth;
use C4::Members::Attributes qw(GetBorrowerAttributes);
+use Koha::DateUtils;
use Koha::Biblios;
+use Koha::Checkouts;
use Koha::Libraries;
use Koha::Patrons;
my @renewal = CanBookBeRenewed( $borrowernumber, $itemnumber );
if ( $renewal[0] ) { AddRenewal( $borrowernumber, $itemnumber ); }
- my $issue = GetItemIssue($itemnumber);
+ my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return; # FIXME should be handled
# Hashref building
my $out;
- $out->{'renewals'} = $issue->{'renewals'};
- $out->{date_due} = $issue->{date_due}->strftime('%Y-%m-%d %H:%S');
+ $out->{'renewals'} = $issue->renewals;
+ $out->{date_due} = dt_from_string($issue->date_due)->strftime('%Y-%m-%d %H:%S');
$out->{'success'} = $renewal[0];
$out->{'error'} = $renewal[1];
use C4::Reserves;
use Koha::Database;
use Koha::Biblios;
+use Koha::Checkouts;
use Koha::Patrons;
=encoding UTF-8
$item->{sip_media_type} = $itemtype->sip_media_type() if $itemtype;
# check if its on issue and if so get the borrower
- my $issue = GetItemIssue($item->{'itemnumber'});
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
if ($issue) {
- $item->{due_date} = $issue->{date_due};
+ $item->{due_date} = dt_from_string( $issue->date_due, 'sql' )->truncate( to => 'minute' );
}
- my $borrower = GetMember(borrowernumber=>$issue->{'borrowernumber'});
+ my $borrower = $issue ? GetMember( borrowernumber => $issue->borrowernumber ) : {};
$item->{patron} = $borrower->{'cardnumber'};
my $biblio = Koha::Biblios->find( $item->{biblionumber } );
my $holds = $biblio->current_holds->unblessed;
use strict;
use warnings;
use C4::Context;
-use C4::Circulation qw( GetItemIssue );
use Koha::DateUtils;
+use Koha::Checkouts;
my %fields = (
ok => 0,
} # renew from AddIssue ??
else {
# need to reread the issue to get due date
- $iss = GetItemIssue($itemnum);
- if ($iss && $iss->{date_due} ) {
- $due_dt = dt_from_string( $iss->{date_due} );
+ $iss = Koha::Checkouts->find( { itemnumber => $itemnum } );
+ if ($iss && $iss->date_due ) {
+ $due_dt = dt_from_string( $iss->date_due, 'sql' );
}
}
return $due_dt;
use C4::Members;
use C4::Stats;
use Koha::UploadedFiles;
+use Koha::Checkouts;
+use Koha::Upload;
use Date::Calc qw( Add_Delta_Days Date_to_Days );
my $item = GetBiblioFromItemNumber( undef, $barcode );
return unless $item->{'itemnumber'};
- my $issue = C4::Circulation::GetItemIssue( $item->{'itemnumber'} );
- return unless $issue->{'borrowernumber'};
- return $issue->{'borrowernumber'};
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
+ return unless $issue;
+ return $issue->borrowernumber;
}
use C4::BackgroundJob;
use Koha::UploadedFiles;
use Koha::Account;
+use Koha::Checkouts;
use Koha::Patrons;
use Date::Calc qw( Add_Delta_Days Date_to_Days );
my $branchcode = C4::Context->userenv->{branch};
my $borrower = GetMember( 'cardnumber'=>$circ->{ 'cardnumber' } );
my $item = GetBiblioFromItemNumber( undef, $circ->{ 'barcode' } );
- my $issue = GetItemIssue( $item->{'itemnumber'} );
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
- if ( $issue->{ 'date_due' } ) { ## Item is currently checked out to another person.
+ if ( $issue ) { ## Item is currently checked out to another person.
#warn "Item Currently Issued.";
- my $issue = GetOpenIssue( $item->{'itemnumber'} );
+ 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.";
my $item = GetBiblioFromItemNumber( undef, $barcode );
return unless $item->{'itemnumber'};
- my $issue = C4::Circulation::GetItemIssue( $item->{'itemnumber'} );
- return unless $issue->{'borrowernumber'};
- return $issue->{'borrowernumber'};
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
+ return unless $issue;
+ return $issue->borrowernumber;
}
use Koha::DateUtils;
use Koha::Items;
use Koha::ItemTypes;
+use Koha::Checkouts;
use Koha::Libraries;
use Koha::Patrons;
use Date::Calc qw/Today Date_to_Days/;
# If the item is currently on loan, we display its return date and
# change the background color.
- my $issues= GetItemIssue($itemNum);
- if ( $issues->{'date_due'} ) {
- $itemLoopIter->{dateDue} = output_pref({ dt => dt_from_string($issues->{date_due}, 'sql'), as_due_date => 1 });
+ my $issue = Koha::Checkouts->find( { itemnumber => $itemNum } );
+ if ( $issue ) {
+ $itemLoopIter->{dateDue} = output_pref({ dt => dt_from_string($issue->date_due, 'sql'), as_due_date => 1 });
$itemLoopIter->{backgroundcolor} = 'onloan';
}
use C4::Members;
use C4::Search; # enabled_staff_search_views
use Koha::DateUtils;
+use Koha::Checkouts;
use Koha::Holds;
use Koha::Items;
use Koha::ItemTypes;
# if the item is currently on loan, we display its return date and
# change the background color
- my $issues= GetItemIssue($itemnumber);
- if ( $issues->{'date_due'} ) {
- $item->{date_due} = $issues->{date_due_sql};
+ my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } );
+ if ( $issue ) {
+ $item->{date_due} = $issue->date_due;
$item->{backgroundcolor} = 'onloan';
}
use Koha::DateUtils;
use Koha::Database;
use Koha::IssuingRules;
+use Koha::Checkouts;
use Koha::Subscriptions;
my $schema = Koha::Database->schema;
is (defined $issue2, 1, "Item 2 checked out, due date: " . $issue2->date_due());
- my $borrowing_borrowernumber = GetItemIssue($itemnumber)->{borrowernumber};
+ my $borrowing_borrowernumber = Koha::Checkouts->find( { itemnumber => $itemnumber } )->borrowernumber;
is ($borrowing_borrowernumber, $renewing_borrowernumber, "Item checked out to $renewing_borrower->{firstname} $renewing_borrower->{surname}");
my ( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber, 1);
my $issue = AddIssue( $renewing_borrower, $barcode1);
my $datedue = dt_from_string( $issue->date_due() );
is (defined $issue->date_due(), 1, "item 1 checked out");
- my $borrowing_borrowernumber = GetItemIssue($itemnumber1)->{borrowernumber};
+ my $borrowing_borrowernumber = Koha::Checkouts->find({ itemnumber => $itemnumber1 })->borrowernumber;
my %reserving_borrower_data1 = (
firstname => 'Katrin',
use Koha::DateUtils qw( dt_from_string );
use Koha::Database;
+use Koha::Checkouts;
use t::lib::TestBuilder;
use t::lib::Mocks;
is( $messages->{ONSITE_CHECKOUT_WILL_BE_SWITCHED}, 1, 'If SwitchOnSiteCheckouts, switch the on-site checkout' );
is( exists $impossible->{TOO_MANY}, '', 'If SwitchOnSiteCheckouts, switch the on-site checkout' );
C4::Circulation::AddIssue( $patron, $item->{barcode}, undef, undef, undef, undef, { switch_onsite_checkout => 1 } );
-my $issue = C4::Circulation::GetItemIssue( $item->{itemnumber} );
-is( $issue->{onsite_checkout}, 0, 'The issue should have been switched to a regular checkout' );
+my $issue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
+is( $issue->onsite_checkout, 0, 'The issue should have been switched to a regular checkout' );
my $five_days_after = dt_from_string->add( days => 5 )->set( hour => 23, minute => 59, second => 0 );
-is( $issue->{date_due}, $five_days_after, 'The date_due should have been set depending on the circ rules when the on-site checkout has been switched' );
+is( dt_from_string($issue->date_due, 'sql'), $five_days_after, 'The date_due should have been set depending on the circ rules when the on-site checkout has been switched' );
# Specific case
t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
use Modern::Perl;
-use Test::More tests => 33;
+use Test::More tests => 32;
use DateTime::Duration;
use t::lib::Mocks;
AddReturn
GetBiblioIssues
GetIssuingCharges
- GetItemIssue
GetOpenIssue
GetRenewCount
GetUpcomingDueIssues
#Test GetBiblioIssues
is( GetBiblioIssues(), undef, "GetBiblio Issues without parameters" );
-#Test GetItemIssue
-#FIXME : As the issues are not correctly added in the database, these tests don't work correctly
-is(GetItemIssue,undef,"Without parameter GetItemIssue returns undef");
-#is(GetItemIssue($item_id1),{},"Item1's issues");
-
#Test GetOpenIssue
is( GetOpenIssue(), undef, "Without parameter GetOpenIssue returns undef" );
is( GetOpenIssue(-1), undef,