Bug 17680: C4::Circulation - Remove GetItemIssue, simple calls
[koha.git] / offline_circ / process_koc.pl
index 21462ef..7567dd3 100755 (executable)
@@ -22,6 +22,8 @@ use strict;
 use warnings;
 
 use CGI qw ( -utf8 );
+use Carp;
+
 use C4::Output;
 use C4::Auth;
 use C4::Koha;
@@ -32,8 +34,11 @@ use C4::Circulation;
 use C4::Items;
 use C4::Members;
 use C4::Stats;
-use Koha::Upload;
 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 );
 
@@ -69,16 +74,17 @@ if ($completedJobID) {
     $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;
 
     if ($runinbackground) {
         my $job_size = scalar(@input_lines);
-        $job = C4::BackgroundJob->new($sessionID, $filename, $ENV{'SCRIPT_NAME'}, $job_size);
+        $job = C4::BackgroundJob->new($sessionID, $filename, '/cgi-bin/koha/offline_circ/process_koc.pl', $job_size);
         my $jobID = $job->id();
 
         # fork off
@@ -104,7 +110,7 @@ if ($completedJobID) {
         } else {
             # fork failed, so exit immediately
             # fork failed, so exit immediately
-            warn "fork failed while attempting to run $ENV{'SCRIPT_NAME'} as a background job";
+            warn "fork failed while attempting to run offline_circ/process_koc.pl as a background job";
             exit 0;
         }
 
@@ -245,11 +251,11 @@ sub kocIssueItem {
     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.";
@@ -356,17 +362,25 @@ sub kocReturnItem {
 }
 
 sub kocMakePayment {
-    my ( $circ ) = @_;
-    my $borrower = GetMember( 'cardnumber'=>$circ->{ 'cardnumber' } );
-    recordpayment( $borrower->{'borrowernumber'}, $circ->{'amount'} );
-    push @output, {
-        payment => 1,
-        amount => $circ->{'amount'},
-        firstname => $borrower->{'firstname'},
-        surname => $borrower->{'surname'},
-        cardnumber => $circ->{'cardnumber'},
-        borrower => $borrower->{'borrowernumber'}
-    };
+    my ($circ) = @_;
+
+    my $cardnumber = $circ->{cardnumber};
+    my $amount = $circ->{amount};
+
+    my $patron = Koha::Patrons->find( { cardnumber => $cardnumber } );
+
+    Koha::Account->new( { patron_id => $patron->id } )
+      ->pay( { amount => $amount } );
+
+    push @output,
+      {
+        payment    => 1,
+        amount     => $circ->{'amount'},
+        firstname  => $patron->firstname,
+        surname    => $patron->surname,
+        cardnumber => $patron->cardnumber,
+        borrower   => $patron->id,
+      };
 }
 
 =head2 _get_borrowernumber_from_barcode
@@ -385,7 +399,7 @@ sub _get_borrowernumber_from_barcode {
     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;
 }