X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Flateorders.pl;h=7ce5683ae565174d23d3ab509d69e105a9f35c30;hb=30efb547c54e4dc4cc506d45a3fefab8384df079;hp=810f665b87959aaf07ac4bbfc8e93d9f7ef47471;hpb=c0234dd9b9649063acf2617fecf5c6efda38a532;p=koha-ffzg.git diff --git a/acqui/lateorders.pl b/acqui/lateorders.pl index 810f665b87..7ce5683ae5 100755 --- a/acqui/lateorders.pl +++ b/acqui/lateorders.pl @@ -1,20 +1,21 @@ #!/usr/bin/perl + +# Copyright 2005 Biblibre # 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 2 of the License, or (at your option) any later -# version. +# 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. +# 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, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA - +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . =head1 NAME @@ -29,7 +30,7 @@ given on input arg. =over 4 -=item supplierid +=item booksellerid To know on which supplier this script have to display late order. =item delay @@ -42,74 +43,106 @@ To know on which branch this script have to display late order. =cut -use strict; -use warnings; -use CGI; -use C4::Bookseller qw( GetBooksellersWithLateOrders ); -use C4::Auth; -use C4::Koha; -use C4::Output; +use Modern::Perl; +use CGI qw ( -utf8 ); +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); use C4::Context; -use C4::Acquisition; -use C4::Letters; -use C4::Branch; # GetBranches - -my $input = new CGI; -my ($template, $loggedinuser, $cookie) = get_template_and_user({ - template_name => "acqui/lateorders.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {acquisition => 'order_receive'}, - debug => 1, -}); - -my $supplierid = $input->param('supplierid') || undef; # we don't want "" or 0 -my $delay = $input->param('delay'); +use C4::Letters qw( SendAlerts GetLetters ); +use Koha::DateUtils qw( dt_from_string ); +use Koha::Acquisition::Orders qw( filter_by_lates ); +use Koha::CsvProfiles; + +my $input = CGI->new; +my ($template, $loggedinuser, $cookie) = get_template_and_user( + { + template_name => "acqui/lateorders.tt", + query => $input, + type => "intranet", + flagsrequired => { acquisition => 'order_receive' }, + } +); + +my $booksellerid = $input->param('booksellerid'); +my $delay = $input->param('delay') // 0; + +# Get the "date from" param if !defined is today +my $estimateddeliverydatefrom = $input->param('estimateddeliverydatefrom'); +my $estimateddeliverydateto = $input->param('estimateddeliverydateto'); + +# Get the "date to" param. If it is not defined and $delay is not defined too, it is the today's date. +$estimateddeliverydateto ||= + ( not defined $delay and not defined $estimateddeliverydatefrom ) + ? dt_from_string() + : undef; + my $branch = $input->param('branch'); my $op = $input->param('op'); my @errors = (); -$delay = 30 unless defined $delay; -unless ($delay =~ /^\d{1,3}$/) { - push @errors, {delay_digits => 1, bad_delay => $delay}; - $delay = 30; #default value for delay +if ( $delay and not $delay =~ /^\d{1,3}$/ ) { + push @errors, {delay_digits => 1, bad_delay => $delay}; } -my %supplierlist = GetBooksellersWithLateOrders($delay); -my (@sloopy); # supplier loop -foreach (keys %supplierlist){ - push @sloopy, (($supplierid and $supplierid eq $_ ) ? - {id=>$_, name=>$supplierlist{$_}, selected=>1} : - {id=>$_, name=>$supplierlist{$_}} ) ; +if ($op and $op eq "send_alert"){ + my @ordernums = $input->multi_param("ordernumber"); + my $err; + eval { + $err = SendAlerts( 'claimacquisition', \@ordernums, $input->param("letter_code") ); + if ( not ref $err or not exists $err->{error} ) { + Koha::Acquisition::Orders->find($_)->claim() for @ordernums; + } + }; + + if ( ref $err and exists $err->{error} and $err->{error} eq "no_email" ) { + $template->{VARS}->{'error_claim'} = "no_email"; + } elsif ( ref $err and exists $err->{error} and $err->{error} eq "no_order_selected"){ + $template->{VARS}->{'error_claim'} = "no_order_selected"; + } elsif ( $@ or ref $err and exists $err->{error} ) { + $template->param(error_claim => $@ || $err->{error}); + } else { + $template->{VARS}->{'info_claim'} = 1; + } } -$template->param(SUPPLIER_LOOP => \@sloopy); -$template->param(Supplier=>$supplierlist{$supplierid}) if ($supplierid); -my @lateorders = GetLateOrders($delay,$supplierid,$branch); +my @lateorders = Koha::Acquisition::Orders->filter_by_lates( + { + delay => $delay, + ( + $estimateddeliverydatefrom + ? ( estimated_from => dt_from_string($estimateddeliverydatefrom, 'iso') ) + : () + ), + ( + $estimateddeliverydateto + ? ( estimated_to => dt_from_string($estimateddeliverydateto, 'iso') ) + : () + ) + }, +)->as_list; + +my $booksellers = Koha::Acquisition::Booksellers->search( + { + id => { + -in => [ map { $_->basket->booksellerid } @lateorders ] + }, + } +); -my $total; -foreach (@lateorders){ - $total += $_->{subtotal}; -} +@lateorders = grep { $_->basket->booksellerid eq $booksellerid } @lateorders if $booksellerid; -my @letters; -my $letters=GetLetters("claimacquisition"); -foreach (keys %$letters){ - push @letters, {code=>$_,name=>$letters->{$_}}; -} -$template->param(letters=>\@letters) if (@letters); - -if ($op and $op eq "send_alert"){ - my @ordernums = $input->param("claim_for"); # FIXME: Fallback values? - SendAlerts('claimacquisition',\@ordernums,$input->param("letter_code")); # FIXME: Fallback value? -} +my $letters = GetLetters({ module => "claimacquisition" }); $template->param(ERROR_LOOP => \@errors) if (@errors); $template->param( - lateorders => \@lateorders, + lateorders => \@lateorders, + booksellers => $booksellers, + bookseller_filter => ( $booksellerid ? $booksellers->find($booksellerid) : undef), delay => $delay, - total => $total, + letters => $letters, + estimateddeliverydatefrom => $estimateddeliverydatefrom, + estimateddeliverydateto => $estimateddeliverydateto, intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), + csv_profiles => Koha::CsvProfiles->search({ type => 'sql', used_for => 'late_orders' }), ); output_html_with_http_headers $input, $cookie, $template->output;