View | Details | Raw Unified | Return to bug 8336
Collapse All | Expand All

(-)a/C4/SIP/ILS.pm (-10 / +5 lines)
Lines 428-444 sub renew { Link Here
428
    if (!defined($item)) {
428
    if (!defined($item)) {
429
		$trans->screen_msg("Item not checked out to " . $patron->name);     # not checked out to $patron_id
429
		$trans->screen_msg("Item not checked out to " . $patron->name);     # not checked out to $patron_id
430
        $trans->ok(0);
430
        $trans->ok(0);
431
    } elsif (!$item->available($patron_id)) {
432
		$trans->screen_msg("Item unavailable due to outstanding holds");
433
        $trans->ok(0);
434
    } else {
431
    } else {
435
		$trans->renewal_ok(1);
432
        $trans->do_renew();
436
		$trans->desensitize(0);	# It's already checked out
433
        if ($trans->renewal_ok()) {
437
		$trans->do_renew();
434
            $item->{due_date} = $trans->{due};
438
		syslog("LOG_DEBUG", "done renew (ok:%s): %s renews %s", $trans->renewal_ok, $patron_id, $item_id);
435
            $trans->desensitize(0);
439
436
        }
440
#		$item->{due_date} = $nb_due_date if $no_block eq 'Y';
441
#		$item->{sip_item_properties} = $item_props if $item_props;
442
    }
437
    }
443
438
444
    return $trans;
439
    return $trans;
(-)a/C4/SIP/ILS/Transaction/Renew.pm (-12 / +16 lines)
Lines 8-19 use warnings; Link Here
8
use strict;
8
use strict;
9
9
10
use ILS;
10
use ILS;
11
use ILS::Transaction;
12
11
13
use C4::Circulation;
12
use C4::Circulation;
14
use C4::Members;
13
use C4::Members;
15
14
16
our @ISA = qw(ILS::Transaction);
15
use base qw(ILS::Transaction);
17
16
18
my %fields = (
17
my %fields = (
19
	renewal_ok => 0,
18
	renewal_ok => 0,
Lines 36-56 sub do_renew_for { Link Here
36
	my $borrower = shift;
35
	my $borrower = shift;
37
	my ($renewokay,$renewerror) = CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
36
	my ($renewokay,$renewerror) = CanBookBeRenewed($borrower->{borrowernumber},$self->{item}->{itemnumber});
38
	if ($renewokay){
37
	if ($renewokay){
39
		$self->{due} = AddIssue( $borrower, $self->{item}->id, undef, 0 );
38
        $self->{due} = undef;
40
		$self->renewal_ok(1);
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);
41
	} else {
44
	} else {
42
		$self->screen_msg(($self->screen_msg || '') . " " . $renewerror);
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);
43
		$self->renewal_ok(0);
48
		$self->renewal_ok(0);
44
	}
49
	}
45
    $! and warn "do_renew_for error: $!";
50
	$self->ok(1);
46
	$self->ok(1) unless $!;
51
	return;
47
	return $self;
48
}
52
}
49
53
50
sub do_renew {
54
sub do_renew {
51
	my $self = shift;
55
    my $self = shift;
52
	my $borrower = GetMember( 'cardnumber'=>$self->{patron}->id);
56
    my $borrower = GetMember( cardnumber => $self->{patron}->id );
53
	return $self->do_renew_for($borrower);
57
    return $self->do_renew_for($borrower);
54
}	
58
}
55
59
56
1;
60
1;
(-)a/C4/SIP/ILS/Transaction/RenewAll.pm (-39 / +45 lines)
Lines 1-4 Link Here
1
# 
1
#
2
# RenewAll: class to manage status of "Renew All" transaction
2
# RenewAll: class to manage status of "Renew All" transaction
3
3
4
package ILS::Transaction::RenewAll;
4
package ILS::Transaction::RenewAll;
Lines 9-65 use warnings; Link Here
9
use Sys::Syslog qw(syslog);
9
use Sys::Syslog qw(syslog);
10
10
11
use ILS::Item;
11
use ILS::Item;
12
use ILS::Transaction::Renew;
13
12
14
use C4::Members;	# GetMember
13
use C4::Members qw( GetMember );
15
14
16
our @ISA = qw(ILS::Transaction::Renew);
15
use base qw(ILS::Transaction::Renew);
17
16
18
my %fields = (
17
my %fields = (
19
	  renewed => [],
18
    renewed   => [],
20
	unrenewed => [],
19
    unrenewed => [],
21
);
20
);
22
21
23
sub new {
22
sub new {
24
	my $class = shift;
23
    my $class = shift;
25
	my $self = $class->SUPER::new();
24
    my $self  = $class->SUPER::new();
26
25
27
    foreach my $element (keys %fields) {
26
    foreach my $element ( keys %fields ) {
28
		$self->{_permitted}->{$element} = $fields{$element};
27
        $self->{_permitted}->{$element} = $fields{$element};
29
	}
28
    }
30
29
31
	@{$self}{keys %fields} = values %fields;
30
    @{$self}{ keys %fields } = values %fields;
32
	return bless $self, $class;
31
    return bless $self, $class;
33
}
32
}
34
33
35
sub do_renew_all {
34
sub do_renew_all {
36
	my $self = shift;
35
    my $self     = shift;
37
	my $patron = $self->{patron};							# SIP's  patron
36
    my $patron   = $self->{patron};                           # SIP's  patron
38
	my $borrower = GetMember('cardnumber'=>$patron->id);	# Koha's patron
37
    my $borrower = GetMember( cardnumber => $patron->id );    # Koha's patron
39
	my $all_ok = 1;
38
    my $all_ok   = 1;
40
    $self->{renewed} = [];
39
    $self->{renewed}   = [];
41
    $self->{unrenewed} = [];
40
    $self->{unrenewed} = [];
42
	foreach my $itemx (@{$patron->{items}}) {
41
    foreach my $itemx ( @{ $patron->{items} } ) {
43
		my $item_id = $itemx->{barcode};
42
        my $item_id = $itemx->{barcode};
44
		my $item = new ILS::Item $item_id;
43
        my $item    = ILS::Item->new($item_id);
45
		if (!defined($item)) {
44
        if ( !defined($item) ) {
46
			syslog("LOG_WARNING",
45
            syslog(
47
				"renew_all: Invalid item id '%s' associated with patron '%s'",
46
                'LOG_WARNING',
48
				$item_id, $patron->id);
47
                q|renew_all: Invalid item id '%s' associated with patron '%s'|,
49
			$all_ok = 0;
48
                $item_id,
50
			next;
49
                $patron->id
51
		}
50
            );
52
		$self->{item} = $item;
51
53
		$self->do_renew_for($borrower);
52
            # $all_ok = 0; Do net set as still ok
54
		if ($self->ok) {
53
            push @{ $self->unrenewed }, $item_id;
55
		    $item->{due_date} = $self->{due}->clone();
54
            next;
56
		    push @{$self->renewed  }, $item_id;
55
        }
57
		} else {
56
        $self->{item} = $item;
58
            push @{$self->{unrenewed}}, $item_id;
57
        $self->do_renew_for($borrower);
59
		}
58
        if ( $self->renewal_ok ) {
60
	}
59
            $item->{due_date} = $self->{due};
61
	$self->ok($all_ok);
60
            push @{ $self->{renewed} }, $item_id;
62
	return $self;
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;
63
}
69
}
64
70
65
1;
71
1;
(-)a/C4/SIP/Sip/MsgType.pm (-3 / +6 lines)
Lines 1346-1352 sub handle_renew { Link Here
1346
    $patron = $status->patron;
1346
    $patron = $status->patron;
1347
    $item   = $status->item;
1347
    $item   = $status->item;
1348
1348
1349
    if ($status->ok) {
1349
    if ($status->renewal_ok) {
1350
	$resp .= '1';
1350
	$resp .= '1';
1351
	$resp .= $status->renewal_ok ? 'Y' : 'N';
1351
	$resp .= $status->renewal_ok ? 'Y' : 'N';
1352
	if ($ils->supports('magnetic media')) {
1352
	if ($ils->supports('magnetic media')) {
Lines 1359-1365 sub handle_renew { Link Here
1359
	$resp .= add_field(FID_PATRON_ID, $patron->id);
1359
	$resp .= add_field(FID_PATRON_ID, $patron->id);
1360
	$resp .= add_field(FID_ITEM_ID,  $item->id);
1360
	$resp .= add_field(FID_ITEM_ID,  $item->id);
1361
	$resp .= add_field(FID_TITLE_ID, $item->title_id);
1361
	$resp .= add_field(FID_TITLE_ID, $item->title_id);
1362
	$resp .= add_field(FID_DUE_DATE, Sip::timestamp($item->due_date));
1362
    if ($item->due_date) {
1363
        $resp .= add_field(FID_DUE_DATE, Sip::timestamp($item->due_date));
1364
    } else {
1365
        $resp .= add_field(FID_DUE_DATE, q{});
1366
    }
1363
	if ($ils->supports('security inhibit')) {
1367
	if ($ils->supports('security inhibit')) {
1364
	    $resp .= add_field(FID_SECURITY_INHIBIT,
1368
	    $resp .= add_field(FID_SECURITY_INHIBIT,
1365
			       $status->security_inhibit);
1369
			       $status->security_inhibit);
1366
- 

Return to bug 8336