4 # Copyright 2005 Biblibre
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
26 this script shows late orders for a specific supplier, branch and delay
34 To know on which supplier this script have to display late order.
37 To know the time boundary. Default value is 30 days.
40 To know on which branch this script have to display late order.
48 use C4::Auth qw( get_template_and_user );
49 use C4::Output qw( output_html_with_http_headers );
51 use C4::Letters qw( SendAlerts GetLetters );
52 use Koha::DateUtils qw( dt_from_string output_pref );
53 use Koha::Acquisition::Orders qw( filter_by_lates );
54 use Koha::CsvProfiles;
57 my ($template, $loggedinuser, $cookie) = get_template_and_user(
59 template_name => "acqui/lateorders.tt",
62 flagsrequired => { acquisition => 'order_receive' },
66 my $booksellerid = $input->param('booksellerid');
67 my $delay = $input->param('delay') // 0;
69 # Get the "date from" param if !defined is today
70 my $estimateddeliverydatefrom = $input->param('estimateddeliverydatefrom');
71 my $estimateddeliverydateto = $input->param('estimateddeliverydateto');
73 my $estimateddeliverydatefrom_dt =
74 $estimateddeliverydatefrom
75 ? dt_from_string($estimateddeliverydatefrom)
78 # Get the "date to" param. If it is not defined and $delay is not defined too, it is the today's date.
79 my $estimateddeliverydateto_dt = $estimateddeliverydateto
80 ? dt_from_string($estimateddeliverydateto)
81 : ( not defined $delay and not defined $estimateddeliverydatefrom)
85 # Format the output of "date from" and "date to"
86 if ($estimateddeliverydatefrom_dt) {
87 $estimateddeliverydatefrom = output_pref({dt => $estimateddeliverydatefrom_dt, dateonly => 1});
89 if ($estimateddeliverydateto_dt) {
90 $estimateddeliverydateto = output_pref({dt => $estimateddeliverydateto_dt, dateonly => 1});
93 my $branch = $input->param('branch');
94 my $op = $input->param('op');
97 if ( $delay and not $delay =~ /^\d{1,3}$/ ) {
98 push @errors, {delay_digits => 1, bad_delay => $delay};
101 if ($op and $op eq "send_alert"){
102 my @ordernums = $input->multi_param("ordernumber");
105 $err = SendAlerts( 'claimacquisition', \@ordernums, $input->param("letter_code") );
106 if ( not ref $err or not exists $err->{error} ) {
107 Koha::Acquisition::Orders->find($_)->claim() for @ordernums;
111 if ( ref $err and exists $err->{error} and $err->{error} eq "no_email" ) {
112 $template->{VARS}->{'error_claim'} = "no_email";
113 } elsif ( ref $err and exists $err->{error} and $err->{error} eq "no_order_selected"){
114 $template->{VARS}->{'error_claim'} = "no_order_selected";
115 } elsif ( $@ or ref $err and exists $err->{error} ) {
116 $template->param(error_claim => $@ || $err->{error});
118 $template->{VARS}->{'info_claim'} = 1;
122 my @lateorders = Koha::Acquisition::Orders->filter_by_lates(
126 $estimateddeliverydatefrom_dt
127 ? ( estimated_from => $estimateddeliverydatefrom_dt )
131 $estimateddeliverydateto_dt
132 ? ( estimated_to => $estimateddeliverydateto_dt )
138 my $booksellers = Koha::Acquisition::Booksellers->search(
141 -in => [ map { $_->basket->booksellerid } @lateorders ]
146 @lateorders = grep { $_->basket->booksellerid eq $booksellerid } @lateorders if $booksellerid;
148 my $letters = GetLetters({ module => "claimacquisition" });
150 $template->param(ERROR_LOOP => \@errors) if (@errors);
152 lateorders => \@lateorders,
153 booksellers => $booksellers,
154 bookseller_filter => ( $booksellerid ? $booksellers->find($booksellerid) : undef),
157 estimateddeliverydatefrom => $estimateddeliverydatefrom,
158 estimateddeliverydateto => $estimateddeliverydateto,
159 intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"),
160 csv_profiles => [ Koha::CsvProfiles->search({ type => 'sql', used_for => 'late_orders' }) ],
162 output_html_with_http_headers $input, $cookie, $template->output;