Koha/acqui/lateorders-export.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

94 lines
3.4 KiB
Perl
Executable file

#!/usr/bin/perl
# 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>.
use Modern::Perl;
use CGI qw ( -utf8 );
use Encode;
use C4::Auth qw( get_template_and_user );
use C4::Acquisition qw( GetOrder );
use C4::Output;
use C4::Context;
my $input = CGI->new;
my ($template, $loggedinuser, $cookie) = get_template_and_user({
template_name => "acqui/csv/lateorders.tt",
query => $input,
type => "intranet",
flagsrequired => {acquisition => 'order_receive'},
});
my @ordernumbers = $input->multi_param('ordernumber');
my $csv_profile_id = $input->param('csv_profile');
unless ( $csv_profile_id ) {
my @orders;
for my $ordernumber ( @ordernumbers ) {
my $order = GetOrder $ordernumber;
my $order_object = Koha::Acquisition::Orders->find($ordernumber);
my $claims = $order_object->claims;
push @orders, {
orderdate => $order->{orderdate},
latesince => $order->{latesince},
estimateddeliverydate => $order->{estimated_delivery_date} ? $order->{estimated_delivery_date} : $order->{calculateddeliverydate},
supplier => $order->{supplier},
supplierid => $order->{supplierid},
title => $order->{title},
author => $order->{author},
publisher => $order->{publisher},
unitpricesupplier => $order->{unitpricesupplier},
quantity_to_receive => $order->{quantity_to_receive},
subtotal => $order->{subtotal},
budget => $order->{budget},
basketname => $order->{basketname},
basketno => $order->{basketno},
claims_count => $claims->count,
claimed_date => $claims->count ? $claims->last->claimed_on : undef,
internalnote => $order->{order_internalnote},
vendornote => $order->{order_vendornote},
isbn => $order->{isbn},
}
;
}
# We want to export using the default profile, using the template acqui/csv/lateorders.tt
print $input->header(
-type => 'text/csv',
-attachment => 'lateorders.csv',
);
$template->param( orders => \@orders );
for my $line ( split '\n', $template->output ) {
print "$line\n" unless $line =~ m|^\s*$|;
}
exit;
} else {
my $csv_profile = Koha::CsvProfiles->find($csv_profile_id);
my $content = '[% SET separator = "'.$csv_profile->csv_separator.'" ~%]' . $csv_profile->content;
my $csv = C4::Letters::_process_tt({
content => $content,
loops => { aqorders => \@ordernumbers },
});
print $input->header(
-type => 'text/csv',
-attachment => 'lateorders.csv',
-charset => 'UTF-8',
);
print Encode::encode_utf8($csv);
exit;
}