Add do_renew_all function, necessary for implementation.
authorJoe Atzberger (siptest <atz4sip@arwen.metavore.com>
Wed, 4 Jun 2008 23:14:42 +0000 (18:14 -0500)
committerJoshua Ferraro <jmf@liblime.com>
Fri, 6 Jun 2008 03:43:27 +0000 (22:43 -0500)
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
C4/SIP/ILS/Transaction/RenewAll.pm

index 6f3b90d..c8e81fd 100644 (file)
@@ -6,24 +6,59 @@ package ILS::Transaction::RenewAll;
 use strict;
 use warnings;
 
-our @ISA = qw(ILS::Transaction);
+use Sys::Syslog qw(syslog);
+
+use ILS::Item;
+use ILS::Transaction::Renew;
+
+use C4::Members;       # GetMember
+
+our @ISA = qw(ILS::Transaction::Renew);
 
 my %fields = (
-             renewed => [],
-             unrenewed => [],
-             );
+         renewed => [],
+       unrenewed => [],
+);
+
 sub new {
-    my $class = shift;;
-    my $self = $class->SUPER::new();
-    my $element;
+       my $class = shift;
+       my $self = $class->SUPER::new();
+       my $element;
 
-    foreach $element (keys %fields) {
-       $self->{_permitted}->{$element} = $fields{$element};
-    }
+       foreach $element (keys %fields) {
+               $self->{_permitted}->{$element} = $fields{$element};
+       }
 
-    @{$self}{keys %fields} = values %fields;
+       @{$self}{keys %fields} = values %fields;
+       return bless $self, $class;
+}
 
-    return bless $self, $class;
+sub do_renew_all {
+       my $self = shift;
+       my $patron = $self->{patron};                                                   # SIP's  patron
+       my $borrower = GetMember($patron->id, 'cardnumber');    # Koha's patron
+       my $all_ok = 1;
+       foreach my $itemx (@{$patron->{items}}) {
+               my $item_id = $itemx->{barcode};
+               my $item = new ILS::Item $item_id;
+               if (!defined($item)) {
+                       syslog("LOG_WARNING",
+                               "renew_all: Invalid item id '%s' associated with patron '%s'",
+                               $item_id, $patron->id);
+                       $all_ok = 0;
+                       next;
+               }
+               $self->{item} = $item;
+               $self->do_renew_for($borrower);
+               if ($self->ok) {
+                       $item->{due_date} = $self->{due};
+                       push @{$self->renewed  }, $item_id;
+               } else {
+                       push @{$self->unrenewed}, $item_id;
+               }
+       }
+       $self->ok($all_ok);
+       return $self;
 }
 
 1;