Merge remote-tracking branch 'origin/new/bug_8623'
[koha.git] / C4 / SIP / ILS / Transaction / Renew.pm
1 #
2 # Status of a Renew Transaction
3 #
4
5 package ILS::Transaction::Renew;
6
7 use warnings;
8 use strict;
9
10 use ILS;
11
12 use C4::Circulation;
13 use C4::Members;
14
15 use base qw(ILS::Transaction);
16
17 my %fields = (
18     renewal_ok => 0,
19 );
20
21 sub new {
22     my $class = shift;
23     my $self = $class->SUPER::new();
24
25     foreach my $element (keys %fields) {
26         $self->{_permitted}->{$element} = $fields{$element};
27     }
28
29     @{$self}{keys %fields} = values %fields;    # overkill?
30     return bless $self, $class;
31 }
32
33 sub do_renew_for  {
34     my $self = shift;
35     my $borrower = shift;
36     my ($renewokay,$renewerror) = CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
37     if ($renewokay){
38         $self->{due} = undef;
39         my $due_date = AddIssue( $borrower, $self->{item}->id, undef, 0 );
40         if ($due_date) {
41             $self->{due} = $due_date;
42         }
43         $self->renewal_ok(1);
44     } else {
45         $renewerror=~s/on_reserve/Item unavailable due to outstanding holds/;
46         $renewerror=~s/too_many/Item has reached maximum renewals/;
47         $self->screen_msg($renewerror);
48         $self->renewal_ok(0);
49     }
50     $self->ok(1);
51     return;
52 }
53
54 sub do_renew {
55     my $self = shift;
56     my $borrower = GetMember( cardnumber => $self->{patron}->id );
57     return $self->do_renew_for($borrower);
58 }
59
60 1;