Koha/acqui/moddeliverydate.pl
Aleisha Amohia 2a1d85fc32
Bug 15348: Add estimated delivery date field to individual orders
This patch allows you to specify an estimated delivery date per order.
The specified estimated delivery date is also considered when searching
for late orders and exporting late orders. You can also edit the
estimated delivery date from the late orders page.

Test plan:
1. Update database, rebuild schema, restart services
2. Go to Acquisitions, search for a vendor, and create a new basket
3. Add an order to the basket. When filling in the accounting details,
notice the new 'estimated delivery date' field, but don't add a date.
Save the order.
4. Confirm no date shows in the estimated delivery date column in the
orders table.
5. Modify the order. Add a date in the estimated delivery date field and
save the order.
6. Confirm the date now shows in the orders table.
7. Close the basket.
8. Go to the Late Orders page.
9. Put estimated delivery date from and to parameters in the search
filters on the left. Ensure the from and to dates encapsulate the date
you entered in the estimated delivery date field for the order.
10. Click Filter and ensure the order shows.
11. Select the checkbox next to the order. Click the Export as CSV button.
12. Open the CSV and confirm the estimated delivery date that you
entered shows as expected in the file.
13. Click Edit under the estimated delivery date. Confirm the estimated
delivery date modal pops up with the correct order line number in the
modal header.
14. Remove the estimated delivery date and click Save.
15. Confirm that the estimated delivery date calculated by Koha now
shows in the late orders table.
16. Select the checkbox next to the order. Click the Export as CSV button.
17. Open the CSV and confirm the calculated estimated delivery date
shows in the CSV.
18. Confirm tests pass: t/db_dependent/Koha/Acquisition/Order.t

Sponsored-by: Bibliotheksservice-Zentrum Baden-Württemberg (BSZ)
Signed-off-by: Christian Stelzenmüller <christian.stelzenmueller@bsz-bw.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Christian Stelzenmüller <christian.stelzenmueller@bsz-bw.de>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2022-09-16 10:36:53 -03:00

83 lines
2.3 KiB
Perl
Executable file

#!/usr/bin/perl
# Copyright 2021 Aleisha Amohia <aleisha@catalyst.net.nz>
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
=head1 NAME
moddeliverydate.pl
=head1 DESCRIPTION
Modify just the estimated delivery date of an individual order when
its basket is closed.
=cut
use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Auth;
use C4::Output;
use C4::Acquisition;
use Koha::Acquisition::Booksellers;
use Koha::DateUtils;
my $input = CGI->new;
my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user( {
template_name => 'acqui/moddeliverydate.tt',
query => $input,
type => 'intranet',
flagsrequired => { 'acquisition' => '*' },
debug => 1,
} );
my $op = $input->param('op');
my $ordernumber = $input->param('ordernumber');
my $referrer = $input->param('referrer') || $input->referer();
my $order = GetOrder($ordernumber);
my $basket = GetBasket($order->{basketno});
my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
if($op and $op eq 'save') {
my $estimated_delivery_date = $input->param('estimated_delivery_date');
$order->{'estimated_delivery_date'} = dt_from_string( $estimated_delivery_date );
ModOrder($order);
print $input->redirect($referrer);
exit;
} else {
$template->param(
estimated_delivery_date => $order->{'estimated_delivery_date'}
);
}
if($op) {
$template->param($op => 1);
}
$template->param(
basketname => $basket->{'basketname'},
basketno => $order->{basketno},
booksellerid => $bookseller->id,
booksellername => $bookseller->name,
ordernumber => $ordernumber,
referrer => $referrer,
);
output_html_with_http_headers $input, $cookie, $template->output;