Bug 25020: Preserve time part when batch extending due dates
When selecting a new hard due date, we should keep the time part of the original checkouts. Test plan: 1 - Checkout an item specifying a date due 2 - Checkout an item without specifying a date due 3 - Use Tools->Batch extend due date 4 - Select a hard due date 5 - On the confirmation screen you should see that the time part has been kept 6 - Confirm 7 - Make sure the correct values hava been inserted in DB 8 - Try now using the other option, give a number of days 9 - Repeat 4-7 Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Joy Nelson <joy@bywatersolutions.com> (cherry picked from commit5550da8a50) Signed-off-by: Lucas Gass <lucas@bywatersolutions.com> (cherry picked from commit5d49c80644) Signed-off-by: Hayley Mapley <hayleymapley@catalyst.net.nz>
This commit is contained in:
parent
e41180c459
commit
91faeb16bb
|
|
@ -134,11 +134,7 @@
|
|||
<td>[% checkout.issuedate | $KohaDates %]</td>
|
||||
<td>[% Branches.GetName( checkout.branchcode ) | html %]</td>
|
||||
<td>
|
||||
[% IF new_hard_due_date %]
|
||||
[% new_hard_due_date | $KohaDates %]
|
||||
[% ELSE %]
|
||||
[% new_due_dates.shift | $KohaDates %]
|
||||
[% END %]
|
||||
[% new_due_dates.shift | $KohaDates as_due_date => 1 %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ use C4::Auth qw( get_template_and_user );
|
|||
use C4::Output qw( output_html_with_http_headers );
|
||||
use C4::Items qw( ModItem );
|
||||
use Koha::Checkouts;
|
||||
use Koha::DateUtils qw( dt_from_string );
|
||||
use Koha::DateUtils qw( dt_from_string output_pref );
|
||||
|
||||
my $input = new CGI;
|
||||
my $op = $input->param('op') // q|form|;
|
||||
|
|
@ -53,6 +53,8 @@ elsif ( $op eq 'list' ) {
|
|||
my $new_hard_due_date = $input->param('new_hard_due_date');
|
||||
my $due_date_days = $input->param('due_date_days');
|
||||
|
||||
$new_hard_due_date &&= dt_from_string($new_hard_due_date);
|
||||
|
||||
my $dtf = Koha::Database->new->schema->storage->datetime_parser;
|
||||
my $search_params;
|
||||
if (@categorycodes) {
|
||||
|
|
@ -100,12 +102,17 @@ elsif ( $op eq 'list' ) {
|
|||
);
|
||||
|
||||
my @new_due_dates;
|
||||
if ( not $new_hard_due_date && $due_date_days ) {
|
||||
while ( my $checkout = $checkouts->next ) {
|
||||
my $due_date = dt_from_string( $checkout->date_due );
|
||||
push @new_due_dates, $due_date->add( days => $due_date_days );
|
||||
push @new_due_dates,
|
||||
output_pref({ dt => calc_new_due_date(
|
||||
{
|
||||
due_date => dt_from_string($checkout->date_due),
|
||||
new_hard_due_date => $new_hard_due_date,
|
||||
add_days => $due_date_days
|
||||
}
|
||||
), dateformat => 'iso' });
|
||||
}
|
||||
|
||||
$template->param(
|
||||
checkouts => $checkouts,
|
||||
new_hard_due_date => $new_hard_due_date
|
||||
|
|
@ -127,8 +134,13 @@ elsif ( $op eq 'modify' ) {
|
|||
my $checkouts =
|
||||
Koha::Checkouts->search( { issue_id => { -in => \@issue_ids } } );
|
||||
while ( my $checkout = $checkouts->next ) {
|
||||
my $new_due_date = $new_hard_due_date
|
||||
|| dt_from_string( $checkout->date_due )->add( days => $due_date_days );
|
||||
my $new_due_date = calc_new_due_date(
|
||||
{
|
||||
due_date => dt_from_string($checkout->date_due),
|
||||
new_hard_due_date => $new_hard_due_date,
|
||||
add_days => $due_date_days
|
||||
}
|
||||
);
|
||||
|
||||
# Update checkout's due date
|
||||
$checkout->date_due($new_due_date)->store;
|
||||
|
|
@ -144,4 +156,23 @@ elsif ( $op eq 'modify' ) {
|
|||
);
|
||||
}
|
||||
|
||||
sub calc_new_due_date {
|
||||
my ($params) = @_;
|
||||
my $due_date = $params->{due_date};
|
||||
my $new_hard_due_date = $params->{new_hard_due_date};
|
||||
my $add_days = $params->{add_days};
|
||||
|
||||
my $new;
|
||||
if ( $new_hard_due_date ) {
|
||||
$new = $new_hard_due_date->clone->set(
|
||||
hour => $due_date->hour,
|
||||
minute => $due_date->minute,
|
||||
second => $due_date->second,
|
||||
)
|
||||
} else {
|
||||
$new = $due_date->clone->add( days => $add_days );
|
||||
}
|
||||
return $new;
|
||||
}
|
||||
|
||||
output_html_with_http_headers $input, $cookie, $template->output;
|
||||
|
|
|
|||
Loading…
Reference in New Issue