|
Lines 875-880
sub open_hours_between {
Link Here
|
| 875 |
|
875 |
|
| 876 |
return ($working_hours_between->next()->get_column('hours_between') - $not_used_hours->next()->get_column('not_used_hours')); |
876 |
return ($working_hours_between->next()->get_column('hours_between') - $not_used_hours->next()->get_column('not_used_hours')); |
| 877 |
} |
877 |
} |
|
|
878 |
|
| 879 |
sub open_minutes_between { |
| 880 |
my ($self, $start_date, $end_date) = @_; |
| 881 |
my $branchcode = $self->{branchcode}; |
| 882 |
my $schema = Koha::Database->new->schema; |
| 883 |
my $dtf = $schema->storage->datetime_parser; |
| 884 |
$start_date = $dtf->format_datetime($start_date); |
| 885 |
$end_date = $dtf->format_datetime($end_date); |
| 886 |
|
| 887 |
my $working_minutes_between = $schema->resultset('DiscreteCalendar')->search( |
| 888 |
{ |
| 889 |
branchcode => $branchcode, |
| 890 |
isopened => 1, |
| 891 |
}, |
| 892 |
{ |
| 893 |
select => \['sum(time_to_sec(timediff(closehour, openhour)) / 60)'], |
| 894 |
as => [qw /minutes_between/], |
| 895 |
where => \['date BETWEEN DATE(?) AND DATE(?)', $start_date, $end_date] |
| 896 |
} |
| 897 |
); |
| 898 |
|
| 899 |
my $loan_day = $schema->resultset('DiscreteCalendar')->search( |
| 900 |
{ |
| 901 |
branchcode => $branchcode, |
| 902 |
}, |
| 903 |
{ |
| 904 |
where => \['date = DATE(?)', $start_date], |
| 905 |
} |
| 906 |
); |
| 907 |
|
| 908 |
my $return_day = $schema->resultset('DiscreteCalendar')->search( |
| 909 |
{ |
| 910 |
branchcode => $branchcode, |
| 911 |
}, |
| 912 |
{ |
| 913 |
where => \['date = DATE(?)', $end_date], |
| 914 |
} |
| 915 |
); |
| 916 |
|
| 917 |
#Capture the time portion of the date |
| 918 |
$start_date =~ /\s(.*)/; |
| 919 |
my $loan_date_time = $1; |
| 920 |
$end_date =~ /\s(.*)/; |
| 921 |
my $return_date_time = $1; |
| 922 |
|
| 923 |
my $not_used_minutes = $schema->resultset('DiscreteCalendar')->search( |
| 924 |
{ |
| 925 |
branchcode => $branchcode, |
| 926 |
isopened => 1, |
| 927 |
}, |
| 928 |
{ |
| 929 |
select => \[ '(time_to_sec(timediff(?, ?)) + time_to_sec(timediff(?, ?)) ) / 60', $return_day->next()->closehour(), $return_date_time, $loan_date_time, $loan_day->next()->openhour()], |
| 930 |
as => [qw /not_used_minutes/], |
| 931 |
} |
| 932 |
); |
| 933 |
|
| 934 |
return DateTime::Duration->new( minutes => $working_minutes_between->next()->get_column('minutes_between') - $not_used_minutes->next()->get_column('not_used_minutes')); |
| 935 |
} |
| 936 |
|
| 878 |
sub addDate { |
937 |
sub addDate { |
| 879 |
my ( $self, $startdate, $add_duration, $unit ) = @_; |
938 |
my ( $self, $startdate, $add_duration, $unit ) = @_; |
| 880 |
|
939 |
|
|
Lines 889-897
sub addDate {
Link Here
|
| 889 |
if ( $unit eq 'hours' ) { |
948 |
if ( $unit eq 'hours' ) { |
| 890 |
# Fixed for legacy support. Should be set as a branch parameter |
949 |
# Fixed for legacy support. Should be set as a branch parameter |
| 891 |
my $return_by_hour = 10; |
950 |
my $return_by_hour = 10; |
| 892 |
|
|
|
| 893 |
$dt = $self->addHours($startdate, $add_duration, $return_by_hour); |
951 |
$dt = $self->addHours($startdate, $add_duration, $return_by_hour); |
| 894 |
} else { |
952 |
} elsif($unit eq 'minutes'){ |
|
|
953 |
$dt = $self->addMinutes($startdate, $add_duration); |
| 954 |
}else { |
| 895 |
# days |
955 |
# days |
| 896 |
$dt = $self->addDays($startdate, $add_duration); |
956 |
$dt = $self->addDays($startdate, $add_duration); |
| 897 |
} |
957 |
} |
|
Lines 899-904
sub addDate {
Link Here
|
| 899 |
return $dt; |
959 |
return $dt; |
| 900 |
} |
960 |
} |
| 901 |
|
961 |
|
|
|
962 |
sub addMinutes { |
| 963 |
my ( $self, $startdate, $minutes_duration) = @_; |
| 964 |
my $base_date = $startdate->clone(); |
| 965 |
|
| 966 |
$base_date->add_duration($minutes_duration); |
| 967 |
|
| 968 |
my $dateInfo = $self->get_date_info($base_date); |
| 969 |
|
| 970 |
my $close_datetime = dt_from_string($dateInfo->{date} ." ". $dateInfo->{closehour}, 'iso'); |
| 971 |
|
| 972 |
if(DateTime->compare($base_date, $close_datetime) > 0) { |
| 973 |
return $close_datetime; |
| 974 |
} |
| 975 |
|
| 976 |
return $base_date; |
| 977 |
} |
| 978 |
|
| 902 |
sub addHours { |
979 |
sub addHours { |
| 903 |
my ( $self, $startdate, $hours_duration, $return_by_hour ) = @_; |
980 |
my ( $self, $startdate, $hours_duration, $return_by_hour ) = @_; |
| 904 |
my $base_date = $startdate->clone(); |
981 |
my $base_date = $startdate->clone(); |
| 905 |
- |
|
|