Bug 5549 : Sip scripts should handle dt due dates
[koha.git] / C4 / SIP / ILS / Transaction / Renew.pm
index 679e06b..d7f949b 100644 (file)
@@ -16,35 +16,42 @@ use C4::Members;
 our @ISA = qw(ILS::Transaction);
 
 my %fields = (
-             renewal_ok => 0,
-             );
+       renewal_ok => 0,
+);
 
 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};
-    }
-
-    @{$self}{keys %fields} = values %fields;
+       foreach $element (keys %fields) {
+               $self->{_permitted}->{$element} = $fields{$element};
+       }
 
-    return bless $self, $class;
+       @{$self}{keys %fields} = values %fields;        # overkill?
+       return bless $self, $class;
 }
 
-sub do_renew {
+sub do_renew_for ($$) {
        my $self = shift;
-       my $borrower = my $borrower = GetMember( $self->{patron}->id, 'cardnumber');
-       if (CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber})){
-               my $datedue = AddIssue( $borrower, $self->{item}->id, undef, 0 );
-               $self->{'due'} = $datedue;
-               $self->ok(1);
+       my $borrower = shift;
+       my ($renewokay,$renewerror) = CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
+       if ($renewokay){
+               $self->{due} = AddIssue( $borrower, $self->{item}->id, undef, 0 );
                $self->renewal_ok(1);
+       } else {
+               $self->screen_msg(($self->screen_msg || '') . " " . $renewerror);
+               $self->renewal_ok(0);
        }
-       else {
-               $self->ok(0);
-       }
+    $! and warn "do_renew_for error: $!";
+       $self->ok(1) unless $!;
        return $self;
+}
+
+sub do_renew {
+       my $self = shift;
+       my $borrower = GetMember( 'cardnumber'=>$self->{patron}->id);
+       return $self->do_renew_for($borrower);
 }      
+
 1;