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

(-)a/C4/Circulation.pm (-28 / +5 lines)
Lines 95-101 BEGIN { Link Here
95
      GetBranchBorrowerCircRule
95
      GetBranchBorrowerCircRule
96
      GetBranchItemRule
96
      GetBranchItemRule
97
      GetBiblioIssues
97
      GetBiblioIssues
98
      GetOpenIssue
99
      GetUpcomingDueIssues
98
      GetUpcomingDueIssues
100
      CheckIfIssuedToPatron
99
      CheckIfIssuedToPatron
101
      IsItemIssued
100
      IsItemIssued
Lines 2790-2817 sub _GetCircControlBranch { Link Here
2790
    return $branch;
2789
    return $branch;
2791
}
2790
}
2792
2791
2793
=head2 GetOpenIssue
2794
2795
  $issue = GetOpenIssue( $itemnumber );
2796
2797
Returns the row from the issues table if the item is currently issued, undef if the item is not currently issued
2798
2799
C<$itemnumber> is the item's itemnumber
2800
2801
Returns a hashref
2802
2803
=cut
2804
2805
sub GetOpenIssue {
2806
  my ( $itemnumber ) = @_;
2807
  return unless $itemnumber;
2808
  my $dbh = C4::Context->dbh;  
2809
  my $sth = $dbh->prepare( "SELECT * FROM issues WHERE itemnumber = ? AND returndate IS NULL" );
2810
  $sth->execute( $itemnumber );
2811
  return $sth->fetchrow_hashref();
2812
2813
}
2814
2815
=head2 GetUpcomingDueIssues
2792
=head2 GetUpcomingDueIssues
2816
2793
2817
  my $upcoming_dues = GetUpcomingDueIssues( { days_in_advance => 4 } );
2794
  my $upcoming_dues = GetUpcomingDueIssues( { days_in_advance => 4 } );
Lines 4011-4022 sub ProcessOfflineReturn { Link Here
4011
3988
4012
    if ( $item ) {
3989
    if ( $item ) {
4013
        my $itemnumber = $item->itemnumber;
3990
        my $itemnumber = $item->itemnumber;
4014
        my $issue = GetOpenIssue( $itemnumber );
3991
        my $issue = $item->checkout;
4015
        if ( $issue ) {
3992
        if ( $issue ) {
4016
            my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0;
3993
            my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0;
4017
            ModDateLastSeen( $itemnumber, $leave_item_lost );
3994
            ModDateLastSeen( $itemnumber, $leave_item_lost );
4018
            MarkIssueReturned(
3995
            MarkIssueReturned(
4019
                $issue->{borrowernumber},
3996
                $issue->borrowernumber,
4020
                $itemnumber,
3997
                $itemnumber,
4021
                $operation->{timestamp},
3998
                $operation->{timestamp},
4022
            );
3999
            );
Lines 4043-4053 sub ProcessOfflineIssue { Link Here
4043
            return "Barcode not found.";
4020
            return "Barcode not found.";
4044
        }
4021
        }
4045
        my $itemnumber = $item->itemnumber;
4022
        my $itemnumber = $item->itemnumber;
4046
        my $issue = GetOpenIssue( $itemnumber );
4023
        my $issue = $item->checkout;
4047
4024
4048
        if ( $issue and ( $issue->{borrowernumber} ne $patron->borrowernumber ) ) { # Item already issued to another patron mark it returned
4025
        if ( $issue and ( $issue->borrowernumber ne $patron->borrowernumber ) ) { # Item already issued to another patron mark it returned
4049
            MarkIssueReturned(
4026
            MarkIssueReturned(
4050
                $issue->{borrowernumber},
4027
                $issue->borrowernumber,
4051
                $itemnumber,
4028
                $itemnumber,
4052
                $operation->{timestamp},
4029
                $operation->{timestamp},
4053
            );
4030
            );
(-)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 => 50;
20
use Test::More tests => 48;
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