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

(-)a/C4/SIP/ILS.pm (-35 / +43 lines)
Lines 126-173 sub offline_ok { Link Here
126
# the response.
126
# the response.
127
#
127
#
128
sub checkout {
128
sub checkout {
129
    my ($self, $patron_id, $item_id, $sc_renew, $fee_ack) = @_;
129
    my ( $self, $patron_id, $item_id, $sc_renew, $fee_ack ) = @_;
130
    my ($patron, $item, $circ);
130
    my ( $patron, $item, $circ );
131
131
132
    $circ = C4::SIP::ILS::Transaction::Checkout->new();
132
    $circ = C4::SIP::ILS::Transaction::Checkout->new();
133
133
    # BEGIN TRANSACTION
134
    # BEGIN TRANSACTION
134
    $circ->patron($patron = C4::SIP::ILS::Patron->new( $patron_id));
135
    $circ->patron( $patron = C4::SIP::ILS::Patron->new($patron_id) );
135
    $circ->item($item = C4::SIP::ILS::Item->new( $item_id));
136
    $circ->item( $item     = C4::SIP::ILS::Item->new($item_id) );
136
    if ($fee_ack) {
137
    if ($fee_ack) {
137
        $circ->fee_ack($fee_ack);
138
        $circ->fee_ack($fee_ack);
138
    }
139
    }
139
140
140
    if (!$patron) {
141
    if ( !$patron ) {
141
		$circ->screen_msg("Invalid Patron");
142
        $circ->screen_msg("Invalid Patron");
142
    } elsif (!$patron->charge_ok) {
143
    }
143
		$circ->screen_msg("Patron Blocked");
144
    elsif ( !$patron->charge_ok ) {
144
    } elsif (!$item) {
145
        $circ->screen_msg("Patron Blocked");
145
		$circ->screen_msg("Invalid Item");
146
    }
146
    # holds checked inside do_checkout
147
    elsif ( !$item ) {
147
    # } elsif ($item->hold_queue && @{$item->hold_queue} && ! $item->barcode_is_borrowernumber($patron_id, $item->hold_queue->[0]->{borrowernumber})) {
148
        $circ->screen_msg("Invalid Item");
148
	#	$circ->screen_msg("Item on Hold for Another User");
149
    } elsif ($item->{patron} && !_ci_cardnumber_cmp($item->{patron},$patron_id)) {
150
		$circ->screen_msg("Item checked out to another patron");
151
    } else {
152
		$circ->do_checkout();
153
		if ($circ->ok){
154
			$debug and warn "circ is ok";
155
			# If the item is already associated with this patron, then
156
			# we're renewing it.
157
			$circ->renew_ok($item->{patron} && _ci_cardnumber_cmp($item->{patron}, $patron_id));
158
		
159
			$item->{patron} = $patron_id;
160
			$item->{due_date} = $circ->{due};
161
			push(@{$patron->{items}}, $item_id);
162
			$circ->desensitize(!$item->magnetic_media);
163
164
			syslog("LOG_DEBUG", "ILS::Checkout: patron %s has checked out %s",
165
				$patron_id, join(', ', @{$patron->{items}}));
166
		}
167
		else {
168
			syslog("LOG_ERR", "ILS::Checkout Issue failed");
169
		}
170
    }
149
    }
150
    elsif ( $item->{patron}
151
        && !_ci_cardnumber_cmp( $item->{patron}, $patron_id ) )
152
    {
153
        $circ->screen_msg("Item checked out to another patron");
154
    }
155
    else {
156
        $circ->do_checkout();
157
        if ( $circ->ok ) {
158
            $debug and warn "circ is ok";
159
160
            # If the item is already associated with this patron, then
161
            # we're renewing it.
162
            $circ->renew_ok( $item->{patron}
163
                  && _ci_cardnumber_cmp( $item->{patron}, $patron_id ) );
164
165
            $item->{patron}   = $patron_id;
166
            $item->{due_date} = $circ->{due};
167
            push( @{ $patron->{items} }, $item_id );
168
            $circ->desensitize( !$item->magnetic_media );
169
170
            syslog(
171
                "LOG_DEBUG", "ILS::Checkout: patron %s has checked out %s",
172
                $patron_id, join( ', ', @{ $patron->{items} } )
173
            );
174
        }
175
        else {
176
            syslog( "LOG_ERR", "ILS::Checkout Issue failed" );
177
        }
178
    }
179
171
    # END TRANSACTION
180
    # END TRANSACTION
172
181
173
    return $circ;
182
    return $circ;
174
- 

Return to bug 15479