# --------------------------------------------------------------------------
if ($circulator->use_booking && (my $bc = $circulator->copy_barcode) && $api !~ /checkout|inspect/) { # do we have a barcode?
+
my $resources = $circulator->editor->search_booking_resource( { barcode => $bc } ); # any resources by this barcode?
if (@$resources) { # yes!
+
my $res_id_list = [ map { $_->id } @$resources ];
my $transit = $circulator->editor->search_action_reservation_transit_copy(
[
$circulator->override(1) if $api =~ /override/o;
$circulator->mk_env();
+
$circulator->noop(1) if $circulator->claims_never_checked_out;
return circ_events($circulator) if $circulator->bail_out;
}
if( $circulator->bail_out ) {
-
+ $logger->error("Bailing out");
my @ee;
# make sure no success event accidentally slip in
$circulator->events(
my $expire = DateTime::Format::ISO8601->new->parse_datetime(
clean_ISO8601($patron->expire_date));
-
- $self->bail_on_events(OpenILS::Event->new('PATRON_ACCOUNT_EXPIRED'))
- if( CORE::time > $expire->epoch ) ;
+
+ # An expired patron needs an OUS disabled to renew
+ my $expire_setting = $U->ou_ancestor_setting_value($patron->home_ou, OILS_SETTING_BLOCK_RENEW_FOR_EXPIRED_PATRON);
+ $logger->error($expire_setting);
+ if(CORE::time > $expire->epoch) {
+ $self->bail_on_events(OpenILS::Event->new('PATRON_ACCOUNT_EXPIRED'))
+ unless ($expire_setting == 0 && $self->is_renewal);
+ }
}
}
$self->check_captured_holds();
$self->do_copy_checks();
return if $self->bail_out;
+
$self->run_patron_permit_scripts();
$self->run_copy_permit_scripts()
unless $self->is_precat or $self->is_noncat;
$self->check_item_deposit_events();
$self->override_events();
+
+ $logger->error("Checking bailout after override events");
+ $logger->error($self->bail_out);
return if $self->bail_out;
if($self->is_precat and not $self->request_precat) {
sub matrix_test_result_events {
my $self = shift;
+ $logger->error("Entering matrix_test_result_events");
map {
my $event = new OpenILS::Event(
$LEGACY_CIRC_EVENT_MAP->{$_->{"fail_part"}} || $_->{"fail_part"}
sub run_indb_circ_test {
my $self = shift;
+ $logger->error("entering run_indb_circ_test");
return $self->matrix_test_result if $self->matrix_test_result;
+ $logger->error("Not immediately returning...");
my $dbfunc = ($self->is_renewal) ?
'action.item_user_renew_test' : 'action.item_user_circ_test';
$self->make_precat_copy;
return if $self->bail_out;
}
-
+ $logger->error("Patron id is ");$logger->error($self->patron->id);
my $results = $self->editor->json_query(
{ from => [
$dbfunc,
]
}
);
-
+ $logger->error("Gathered results:");
+ $logger->error($results);
+ $logger->error($results->[0]);
+ $logger->error($results->[0]->{success});
$self->circ_test_success($U->is_true($results->[0]->{success}));
if(my $mp = $results->[0]->{matchpoint}) {
+ $logger->error("Matchpoint found as");
+ $logger->error($mp);
$logger->info("circulator: circ policy test found matchpoint built via rows " . $results->[0]->{buildrows});
$self->circ_matrix_matchpoint($self->editor->retrieve_config_circ_matrix_matchpoint($mp));
$self->circ_matrix_matchpoint->duration_rule($self->editor->retrieve_config_rules_circ_duration($results->[0]->{duration_rule}));
my @events = @{$self->events};
return unless @events;
my $oargs = $self->override_args;
-
+ $logger->error("Events amount are @events");
+ $logger->error($events[0]->{textcode}); # No matchpoint
+ $logger->error($events[1]->{textcode}); # Success
if(!$self->override) {
return $self->bail_out(1)
if( @events > 1 or $events[0]->{textcode} ne 'SUCCESS' );
}
-
+ $logger->error("Only one event or first event is a success");
$self->events([]);
for my $e (@events) {
unless( $circ->usr eq $self->editor->requestor->id ) {
return $self->bail_on_events($self->editor->events)
unless $self->editor->allowed('RENEW_CIRC', $circ->circ_lib);
- }
+ }
$self->push_events(OpenILS::Event->new('MAX_RENEWALS_REACHED'))
if $circ->renewal_remaining < 1;
#$self->handle_fines;
$self->run_renew_permit;
+ $logger->error("Checking events post renew_permit");
+ $logger->error(@{$self->events}); # One
+ $logger->error(@{$self->events}[0]->{textcode}); # No matchpoint
# Check the item in
$self->do_checkin();
+
return if $self->bail_out;
unless( $self->permit_override ) {
sub run_renew_permit {
my $self = shift;
-
+ $logger->error("Entering run_renew_permit");
if ($U->ou_ancestor_setting_value($self->circ_lib, 'circ.block_renews_for_holds')) {
my ($hold, undef, $retarget) = $holdcode->find_nearest_permitted_hold(
$self->editor, $self->copy, $self->editor->requestor, 1
}
my $results = $self->run_indb_circ_test;
+ $logger->error("Pushing events");
$self->push_events($self->matrix_test_result_events)
unless $self->circ_test_success;
+
+ $logger->error(@{$self->events});
}