View | Details | Raw Unified | Return to bug 30016
Collapse All | Expand All

(-)a/C4/Circulation.pm (-28 / +5 lines)
Lines 94-100 BEGIN { Link Here
94
      GetBranchBorrowerCircRule
94
      GetBranchBorrowerCircRule
95
      GetBranchItemRule
95
      GetBranchItemRule
96
      GetBiblioIssues
96
      GetBiblioIssues
97
      GetOpenIssue
98
      GetUpcomingDueIssues
97
      GetUpcomingDueIssues
99
      CheckIfIssuedToPatron
98
      CheckIfIssuedToPatron
100
      IsItemIssued
99
      IsItemIssued
Lines 2665-2692 sub _GetCircControlBranch { Link Here
2665
    return $branch;
2664
    return $branch;
2666
}
2665
}
2667
2666
2668
=head2 GetOpenIssue
2669
2670
  $issue = GetOpenIssue( $itemnumber );
2671
2672
Returns the row from the issues table if the item is currently issued, undef if the item is not currently issued
2673
2674
C<$itemnumber> is the item's itemnumber
2675
2676
Returns a hashref
2677
2678
=cut
2679
2680
sub GetOpenIssue {
2681
  my ( $itemnumber ) = @_;
2682
  return unless $itemnumber;
2683
  my $dbh = C4::Context->dbh;  
2684
  my $sth = $dbh->prepare( "SELECT * FROM issues WHERE itemnumber = ? AND returndate IS NULL" );
2685
  $sth->execute( $itemnumber );
2686
  return $sth->fetchrow_hashref();
2687
2688
}
2689
2690
=head2 GetUpcomingDueIssues
2667
=head2 GetUpcomingDueIssues
2691
2668
2692
  my $upcoming_dues = GetUpcomingDueIssues( { days_in_advance => 4 } );
2669
  my $upcoming_dues = GetUpcomingDueIssues( { days_in_advance => 4 } );
Lines 3894-3905 sub ProcessOfflineReturn { Link Here
3894
3871
3895
    if ( $item ) {
3872
    if ( $item ) {
3896
        my $itemnumber = $item->itemnumber;
3873
        my $itemnumber = $item->itemnumber;
3897
        my $issue = GetOpenIssue( $itemnumber );
3874
        my $issue = $item->issue;
3898
        if ( $issue ) {
3875
        if ( $issue ) {
3899
            my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0;
3876
            my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0;
3900
            ModDateLastSeen( $itemnumber, $leave_item_lost );
3877
            ModDateLastSeen( $itemnumber, $leave_item_lost );
3901
            MarkIssueReturned(
3878
            MarkIssueReturned(
3902
                $issue->{borrowernumber},
3879
                $issue->borrowernumber,
3903
                $itemnumber,
3880
                $itemnumber,
3904
                $operation->{timestamp},
3881
                $operation->{timestamp},
3905
            );
3882
            );
Lines 3926-3936 sub ProcessOfflineIssue { Link Here
3926
            return "Barcode not found.";
3903
            return "Barcode not found.";
3927
        }
3904
        }
3928
        my $itemnumber = $item->itemnumber;
3905
        my $itemnumber = $item->itemnumber;
3929
        my $issue = GetOpenIssue( $itemnumber );
3906
        my $issue = $item->issue;
3930
3907
3931
        if ( $issue and ( $issue->{borrowernumber} ne $patron->borrowernumber ) ) { # Item already issued to another patron mark it returned
3908
        if ( $issue and ( $issue->borrowernumber ne $patron->borrowernumber ) ) { # Item already issued to another patron mark it returned
3932
            MarkIssueReturned(
3909
            MarkIssueReturned(
3933
                $issue->{borrowernumber},
3910
                $issue->borrowernumber,
3934
                $itemnumber,
3911
                $itemnumber,
3935
                $operation->{timestamp},
3912
                $operation->{timestamp},
3936
            );
3913
            );
(-)a/C4/CourseReserves.pm (-2 / +2 lines)
Lines 20-31 use Modern::Perl; Link Here
20
use List::MoreUtils qw( any );
20
use List::MoreUtils qw( any );
21
21
22
use C4::Context;
22
use C4::Context;
23
use C4::Circulation qw( GetOpenIssue );
24
23
25
use Koha::Courses;
24
use Koha::Courses;
26
use Koha::Course::Instructors;
25
use Koha::Course::Instructors;
27
use Koha::Course::Items;
26
use Koha::Course::Items;
28
use Koha::Course::Reserves;
27
use Koha::Course::Reserves;
28
use Koha::Checkouts;
29
29
30
use vars qw(@FIELDS);
30
use vars qw(@FIELDS);
31
our (@ISA, @EXPORT_OK);
31
our (@ISA, @EXPORT_OK);
Lines 873-879 sub GetCourseReserves { Link Here
873
            $cr->{'item'}        = $item;
873
            $cr->{'item'}        = $item;
874
            $cr->{'biblio'}      = $biblio;
874
            $cr->{'biblio'}      = $biblio;
875
            $cr->{'biblioitem'}  = $biblioitem;
875
            $cr->{'biblioitem'}  = $biblioitem;
876
            $cr->{'issue'}       = GetOpenIssue( $cr->{'itemnumber'} );
876
            $cr->{'issue'}       = Koha::Checkouts->find({ itemnumber => $cr->{'itemnumber'} });
877
        }
877
        }
878
    }
878
    }
879
879
(-)a/offline_circ/process_koc.pl (-6 / +5 lines)
Lines 26-32 use C4::Output qw( output_html_with_http_headers ); Link Here
26
use C4::Auth qw( get_template_and_user );
26
use C4::Auth qw( get_template_and_user );
27
use C4::Context;
27
use C4::Context;
28
use C4::Accounts;
28
use C4::Accounts;
29
use C4::Circulation qw( barcodedecode GetOpenIssue AddRenewal AddIssue MarkIssueReturned );
29
use C4::Circulation qw( barcodedecode AddRenewal AddIssue MarkIssueReturned );
30
use C4::Items qw( ModDateLastSeen );
30
use C4::Items qw( ModDateLastSeen );
31
use C4::Members;
31
use C4::Members;
32
use C4::Stats;
32
use C4::Stats;
Lines 253-265 sub kocIssueItem { Link Here
253
253
254
    if ( $issue ) { ## Item is currently checked out to another person.
254
    if ( $issue ) { ## Item is currently checked out to another person.
255
        #warn "Item Currently Issued.";
255
        #warn "Item Currently Issued.";
256
        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)
257
256
258
        if ( $issue->{'borrowernumber'} eq $borrower->{'borrowernumber'} ) { ## Issued to this person already, renew it.
257
        if ( $issue->borrowernumber eq $borrower->{'borrowernumber'} ) { ## Issued to this person already, renew it.
259
            #warn "Item issued to this member already, renewing.";
258
            #warn "Item issued to this member already, renewing.";
260
259
261
            C4::Circulation::AddRenewal(
260
            C4::Circulation::AddRenewal(
262
                $issue->{'borrowernumber'},    # borrowernumber
261
                $issue->borrowernumber,        # borrowernumber
263
                $item->itemnumber,             # itemnumber
262
                $item->itemnumber,             # itemnumber
264
                undef,                         # branch
263
                undef,                         # branch
265
                undef,                         # datedue - let AddRenewal calculate it automatically
264
                undef,                         # datedue - let AddRenewal calculate it automatically
Lines 280-288 sub kocIssueItem { Link Here
280
279
281
        } else {
280
        } else {
282
            #warn "Item issued to a different member.";
281
            #warn "Item issued to a different member.";
283
            #warn "Date of previous issue: $issue->{'issuedate'}";
282
            #warn "Date of previous issue: $issue->issuedate";
284
            #warn "Date of this issue: $circ->{'date'}";
283
            #warn "Date of this issue: $circ->{'date'}";
285
            my ( $i_y, $i_m, $i_d ) = split( /-/, $issue->{'issuedate'} );
284
            my ( $i_y, $i_m, $i_d ) = split( /-/, $issue->issuedate );
286
            my ( $c_y, $c_m, $c_d ) = split( /-/, $circ->{'date'} );
285
            my ( $c_y, $c_m, $c_d ) = split( /-/, $circ->{'date'} );
287
286
288
            if ( Date_to_Days( $i_y, $i_m, $i_d ) < Date_to_Days( $c_y, $c_m, $c_d ) ) { ## Current issue to a different persion is older than this issue, return and issue.
287
            if ( Date_to_Days( $i_y, $i_m, $i_d ) < Date_to_Days( $c_y, $c_m, $c_d ) ) { ## Current issue to a different persion is older than this issue, return and issue.
(-)a/t/db_dependent/Circulation/issue.t (-9 / +2 lines)
Lines 17-30 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 48;
20
use Test::More tests => 46;
21
use DateTime::Duration;
21
use DateTime::Duration;
22
22
23
use t::lib::Mocks;
23
use t::lib::Mocks;
24
use t::lib::TestBuilder;
24
use t::lib::TestBuilder;
25
25
26
use C4::Biblio qw( AddBiblio );
26
use C4::Biblio qw( AddBiblio );
27
use C4::Circulation qw( AddIssue AddIssuingCharge AddRenewal AddReturn GetIssuingCharges GetOpenIssue GetRenewCount GetUpcomingDueIssues );
27
use C4::Circulation qw( AddIssue AddIssuingCharge AddRenewal AddReturn GetIssuingCharges GetRenewCount GetUpcomingDueIssues );
28
use C4::Context;
28
use C4::Context;
29
use C4::Items;
29
use C4::Items;
30
use C4::Reserves qw( AddReserve );
30
use C4::Reserves qw( AddReserve );
Lines 49-55 can_ok( Link Here
49
      AddRenewal
49
      AddRenewal
50
      AddReturn
50
      AddReturn
51
      GetIssuingCharges
51
      GetIssuingCharges
52
      GetOpenIssue
53
      GetRenewCount
52
      GetRenewCount
54
      GetUpcomingDueIssues
53
      GetUpcomingDueIssues
55
      )
54
      )
Lines 296-306 subtest 'Show that AddRenewal respects OpacRenewalBranch and interface' => sub { Link Here
296
    }
295
    }
297
};
296
};
298
297
299
#Test GetOpenIssue
300
is( GetOpenIssue(), undef, "Without parameter GetOpenIssue returns undef" );
301
is( GetOpenIssue(-1), undef,
302
    "With wrong parameter GetOpenIssue returns undef" );
303
my $openissue = GetOpenIssue($borrower_id1, $item_id1);
304
298
305
my @renewcount;
299
my @renewcount;
306
#Test GetRenewCount
300
#Test GetRenewCount
307
- 

Return to bug 30016