Bug 15253: Add Koha::Logger based logging for SIP2
[koha-equinox.git] / C4 / SIP / ILS / Transaction / RenewAll.pm
1 #
2 # RenewAll: class to manage status of "Renew All" transaction
3
4 package C4::SIP::ILS::Transaction::RenewAll;
5
6 use strict;
7 use warnings;
8
9 use C4::SIP::Sip qw(syslog);
10
11 use C4::SIP::ILS::Item;
12
13 use Koha::Patrons;
14
15 use parent qw(C4::SIP::ILS::Transaction::Renew);
16
17 my %fields = (
18     renewed   => [],
19     unrenewed => [],
20 );
21
22 sub new {
23     my $class = shift;
24     my $self  = $class->SUPER::new();
25
26     foreach my $element ( keys %fields ) {
27         $self->{_permitted}->{$element} = $fields{$element};
28     }
29
30     @{$self}{ keys %fields } = values %fields;
31     return bless $self, $class;
32 }
33
34 sub do_renew_all {
35     my $self     = shift;
36     my $patron   = $self->{patron};                           # SIP's  patron
37     my $borrower = Koha::Patrons->find( { cardnumber => $patron->id } )->unblessed;    # Koha's patron
38     my $all_ok   = 1;
39     $self->{renewed}   = [];
40     $self->{unrenewed} = [];
41     foreach my $itemx ( @{ $patron->{items} } ) {
42         my $item_id = $itemx->{barcode};
43         my $item    = C4::SIP::ILS::Item->new($item_id);
44         if ( !defined($item) ) {
45             syslog(
46                 'LOG_WARNING',
47                 q|renew_all: Invalid item id '%s' associated with patron '%s'|,
48                 $item_id,
49                 $patron->id
50             );
51
52             # $all_ok = 0; Do net set as still ok
53             push @{ $self->unrenewed }, $item_id;
54             next;
55         }
56         $self->{item} = $item;
57         $self->do_renew_for($borrower);
58         if ( $self->renewal_ok ) {
59             $item->{due_date} = $self->{due};
60             push @{ $self->{renewed} }, $item_id;
61         }
62         else {
63             push @{ $self->{unrenewed} }, $item_id;
64         }
65         $self->screen_msg(q{});    # clear indiv message
66     }
67     $self->ok($all_ok);
68     return $self;
69 }
70
71 1;