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