logic error on due_date check
[working/Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Trigger / Validator.pm
1 package OpenILS::Application::Trigger::Validator;
2 use strict; use warnings;
3 use DateTime;
4 use DateTime::Format::ISO8601;
5 use OpenSRF::Utils qw/:datetime/;
6 use OpenSRF::Utils::Logger qw/:logger/;
7 sub fourty_two { return 42 }
8 sub NOOP_True { return 1 }
9 sub NOOP_False { return 0 }
10
11 sub CircIsOpen {
12     my $self = shift;
13     my $env = shift;
14
15     return defined($env->{target}->checkin_time) ? 0 : 1;
16 }
17
18 sub CircIsOverdue {
19     my $self = shift;
20     my $env = shift;
21     my $circ = $env->{target};
22
23     return 0 if $circ->checkin_time;
24     return 0 if $circ->stop_fines and not $circ->stop_fines =~ /MAXFINES|LONGOVERDUE/;
25
26     my $due_date = DateTime::Format::ISO8601->new->parse_datetime(clense_ISO8601($circ->due_date));
27     return 0 if $due_date > DateTime->now;
28
29     return 1;
30 }
31
32 sub HoldIsAvailable {
33     my $self = shift;
34     my $env = shift;
35
36     my $t = $env->{target}->transit;
37
38     die "Transit object exists, but is not fleshed.  Add 'transit' to the environment in order to use this Validator."
39         if ($t && !ref($t));
40
41     if ($t) {
42         return (defined($env->{target}->capture_time) && defined($t->dest_recv_time)) ? 1 : 0;
43     }
44
45     return defined($env->{target}->capture_time) ? 1 : 0;
46 }
47
48 1;