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

(-)a/C4/Circulation.pm (-28 / +5 lines)
Lines 96-102 BEGIN { Link Here
96
      GetBranchBorrowerCircRule
96
      GetBranchBorrowerCircRule
97
      GetBranchItemRule
97
      GetBranchItemRule
98
      GetBiblioIssues
98
      GetBiblioIssues
99
      GetOpenIssue
100
      GetUpcomingDueIssues
99
      GetUpcomingDueIssues
101
      CheckIfIssuedToPatron
100
      CheckIfIssuedToPatron
102
      IsItemIssued
101
      IsItemIssued
Lines 2794-2821 sub _GetCircControlBranch { Link Here
2794
    return $branch;
2793
    return $branch;
2795
}
2794
}
2796
2795
2797
=head2 GetOpenIssue
2798
2799
  $issue = GetOpenIssue( $itemnumber );
2800
2801
Returns the row from the issues table if the item is currently issued, undef if the item is not currently issued
2802
2803
C<$itemnumber> is the item's itemnumber
2804
2805
Returns a hashref
2806
2807
=cut
2808
2809
sub GetOpenIssue {
2810
  my ( $itemnumber ) = @_;
2811
  return unless $itemnumber;
2812
  my $dbh = C4::Context->dbh;  
2813
  my $sth = $dbh->prepare( "SELECT * FROM issues WHERE itemnumber = ? AND returndate IS NULL" );
2814
  $sth->execute( $itemnumber );
2815
  return $sth->fetchrow_hashref();
2816
2817
}
2818
2819
=head2 GetUpcomingDueIssues
2796
=head2 GetUpcomingDueIssues
2820
2797
2821
  my $upcoming_dues = GetUpcomingDueIssues( { days_in_advance => 4 } );
2798
  my $upcoming_dues = GetUpcomingDueIssues( { days_in_advance => 4 } );
Lines 4073-4084 sub ProcessOfflineReturn { Link Here
4073
4050
4074
    if ( $item ) {
4051
    if ( $item ) {
4075
        my $itemnumber = $item->itemnumber;
4052
        my $itemnumber = $item->itemnumber;
4076
        my $issue = GetOpenIssue( $itemnumber );
4053
        my $issue = $item->checkout;
4077
        if ( $issue ) {
4054
        if ( $issue ) {
4078
            my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0;
4055
            my $leave_item_lost = C4::Context->preference("BlockReturnOfLostItems") ? 1 : 0;
4079
            ModDateLastSeen( $itemnumber, $leave_item_lost );
4056
            ModDateLastSeen( $itemnumber, $leave_item_lost );
4080
            MarkIssueReturned(
4057
            MarkIssueReturned(
4081
                $issue->{borrowernumber},
4058
                $issue->borrowernumber,
4082
                $itemnumber,
4059
                $itemnumber,
4083
                $operation->{timestamp},
4060
                $operation->{timestamp},
4084
            );
4061
            );
Lines 4105-4115 sub ProcessOfflineIssue { Link Here
4105
            return "Barcode not found.";
4082
            return "Barcode not found.";
4106
        }
4083
        }
4107
        my $itemnumber = $item->itemnumber;
4084
        my $itemnumber = $item->itemnumber;
4108
        my $issue = GetOpenIssue( $itemnumber );
4085
        my $issue = $item->checkout;
4109
4086
4110
        if ( $issue and ( $issue->{borrowernumber} ne $patron->borrowernumber ) ) { # Item already issued to another patron mark it returned
4087
        if ( $issue and ( $issue->borrowernumber ne $patron->borrowernumber ) ) { # Item already issued to another patron mark it returned
4111
            MarkIssueReturned(
4088
            MarkIssueReturned(
4112
                $issue->{borrowernumber},
4089
                $issue->borrowernumber,
4113
                $itemnumber,
4090
                $itemnumber,
4114
                $operation->{timestamp},
4091
                $operation->{timestamp},
4115
            );
4092
            );
(-)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