# along with Koha; if not, see <http://www.gnu.org/licenses>.
#
-use strict;
-use warnings;
+use Modern::Perl;
use CGI qw ( -utf8 );
use Carp;
use C4::Members;
use C4::Stats;
use C4::BackgroundJob;
-use Koha::Upload;
+use Koha::UploadedFiles;
use Koha::Account;
+use Koha::Checkouts;
+use Koha::Patrons;
use Date::Calc qw( Add_Delta_Days Date_to_Days );
$template->param(transactions_loaded => 1);
$template->param(messages => $results->{results});
} elsif ($fileID) {
- my $upload = Koha::Upload->new->get({ id => $fileID, filehandle => 1 });
- my $fh = $upload->{fh};
- my $filename = $upload->{name};
- my @input_lines = <$fh>;
+ my $upload = Koha::UploadedFiles->find( $fileID );
+ my $fh = $upload? $upload->file_handle: undef;
+ my $filename = $upload? $upload->filename: undef;
+ my @input_lines = $fh? <$fh>: ();
+ $fh->close if $fh;
my $job = undef;
$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 = GetItemIssue( $item->{'itemnumber'} );
+ my $patron = Koha::Patrons->find( { cardnumber => $circ->{cardnumber} } );
+ my $borrower = $patron->unblessed;
+ my $item = Koha::Items->find({ barcode => $circ->{barcode} });
+ my $issue = Koha::Checkouts->find( { itemnumber => $item->itemnumber } );
+ my $biblio = $item->biblio;
- 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.";
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 );
+ my $patron = Koha::Patrons->find( $borrowernumber );
C4::Circulation::MarkIssueReturned(
$borrowernumber,
- $item->{'itemnumber'},
- undef,
+ $item->itemnumber,
$circ->{'date'},
- $borrower->{'privacy'}
+ $patron->privacy
);
- ModItem({ onloan => undef }, $item->{'biblionumber'}, $item->{'itemnumber'});
- ModDateLastSeen( $item->{'itemnumber'} );
-
- push @output, {
- return => 1,
- title => $item->{ 'title' },
- biblionumber => $item->{'biblionumber'},
- barcode => $item->{ 'barcode' },
- borrowernumber => $borrower->{'borrowernumber'},
- firstname => $borrower->{'firstname'},
- surname => $borrower->{'surname'},
- cardnumber => $borrower->{'cardnumber'},
- datetime => $circ->{ 'datetime' }
- };
+ $item->onloadn(undef)->store;
+ ModDateLastSeen( $item->itemnumber );
+
+ push @output,
+ {
+ return => 1,
+ title => $biblio->title,
+ biblionumber => $biblio->biblionumber,
+ barcode => $item->barcode,
+ borrowernumber => $patron->borrowernumber,
+ firstname => $patron->firstname,
+ surname => $patron->surname,
+ cardnumber => $patron->cardnumber,
+ datetime => $circ->{'datetime'}
+ };
} else {
push @output, {
ERROR_no_borrower_from_item => 1,
my $cardnumber = $circ->{cardnumber};
my $amount = $circ->{amount};
- my $patron = Koha::Borrowers->find( { cardnumber => $cardnumber } );
+ my $patron = Koha::Patrons->find( { cardnumber => $cardnumber } );
Koha::Account->new( { patron_id => $patron->id } )
- ->pay( { amount => $amount } );
+ ->pay( { amount => $amount, interface => C4::Context->interface } );
push @output,
{
return unless $barcode;
- my $item = GetBiblioFromItemNumber( undef, $barcode );
- return unless $item->{'itemnumber'};
+ my $item = Koha::Items->find({ barcode => $barcode });
+ return unless $item;
- 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;
}