X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Flateorders.pl;h=7ce5683ae565174d23d3ab509d69e105a9f35c30;hb=30efb547c54e4dc4cc506d45a3fefab8384df079;hp=5232dd7e054d74e551c253cd3d98653bfa7a0801;hpb=34dfe783c6e13f8298c4e296860711e44889980d;p=koha-ffzg.git diff --git a/acqui/lateorders.pl b/acqui/lateorders.pl index 5232dd7e05..7ce5683ae5 100755 --- a/acqui/lateorders.pl +++ b/acqui/lateorders.pl @@ -45,54 +45,36 @@ To know on which branch this script have to display late order. use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Bookseller qw( GetBooksellersWithLateOrders ); -use C4::Auth; -use C4::Koha; -use C4::Output; +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 Koha::DateUtils; -use Koha::Acquisition::Orders; +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 = new CGI; +my $input = CGI->new; my ($template, $loggedinuser, $cookie) = get_template_and_user( { template_name => "acqui/lateorders.tt", query => $input, type => "intranet", - authnotrequired => 0, flagsrequired => { acquisition => 'order_receive' }, - debug => 1, } ); -my $booksellerid = $input->param('booksellerid') || undef; # we don't want "" or 0 +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'); -my $estimateddeliverydatefrom_dt = - $estimateddeliverydatefrom - ? dt_from_string($estimateddeliverydatefrom) - : undef; - # Get the "date to" param. If it is not defined and $delay is not defined too, it is the today's date. -my $estimateddeliverydateto_dt = $estimateddeliverydateto - ? dt_from_string($estimateddeliverydateto) - : ( not defined $delay and not defined $estimateddeliverydatefrom) - ? dt_from_string() - : undef; - -# Format the output of "date from" and "date to" -if ($estimateddeliverydatefrom_dt) { - $estimateddeliverydatefrom = output_pref({dt => $estimateddeliverydatefrom_dt, dateonly => 1}); -} -if ($estimateddeliverydateto_dt) { - $estimateddeliverydateto = output_pref({dt => $estimateddeliverydateto_dt, dateonly => 1}); -} +$estimateddeliverydateto ||= + ( not defined $delay and not defined $estimateddeliverydatefrom ) + ? dt_from_string() + : undef; my $branch = $input->param('branch'); my $op = $input->param('op'); @@ -108,93 +90,59 @@ if ($op and $op eq "send_alert"){ eval { $err = SendAlerts( 'claimacquisition', \@ordernums, $input->param("letter_code") ); if ( not ref $err or not exists $err->{error} ) { - AddClaim ( $_ ) for @ordernums; + Koha::Acquisition::Orders->find($_)->claim() for @ordernums; } }; - if ( $@ ) { - $template->param(error_claim => $@); - } elsif ( ref $err and exists $err->{error} and $err->{error} eq "no_email" ) { + 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; } } -if ($op && $op eq "save"){ - my $listorders; - my @orders = $input->param; - - foreach my $order (@orders){ - if ( $order ne "op"){ - my @split = split (/_/,$order); - $listorders->{$split[0]}->{$split[1]} = $input->param($order); - } - } - - my $orders_rs = Koha::Acquisition::Orders->search({ ordernumber => [ keys %$listorders ] }); - while ( my $order = $orders_rs->next ) { - my $internalnote = $listorders->{$order->ordernumber}->{i}; - my $vendornote = $listorders->{$order->ordernumber}->{v}; - - $order->order_internalnote($internalnote) if defined $internalnote; - $order->order_vendornote($vendornote) if defined $vendornote; - $order->store; +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 @parameters = ( $delay ); -push @parameters, $estimateddeliverydatefrom_dt - ? $estimateddeliverydatefrom_dt->ymd() - : undef; - -push @parameters, $estimateddeliverydateto_dt - ? $estimateddeliverydateto_dt->ymd() - : undef; - -my %supplierlist = GetBooksellersWithLateOrders(@parameters); - -my (@sloopy); # supplier loop -foreach( sort { $supplierlist{$a} cmp $supplierlist{$b} } keys %supplierlist ) { - push @sloopy, (($booksellerid and $booksellerid eq $_ ) ? - {id=>$_, name=>$supplierlist{$_}, selected=>1} : - {id=>$_, name=>$supplierlist{$_}} ) ; -} -$template->param(SUPPLIER_LOOP => \@sloopy); - -$template->param(Supplier=>$supplierlist{$booksellerid}) if ($booksellerid); -$template->param(booksellerid=>$booksellerid) if ($booksellerid); - -@parameters = - ( $delay, $booksellerid, $branch ); -if ($estimateddeliverydatefrom_dt) { - push @parameters, $estimateddeliverydatefrom_dt->ymd(); -} -else { - push @parameters, undef; -} -if ($estimateddeliverydateto_dt) { - push @parameters, $estimateddeliverydateto_dt->ymd(); -} -my @lateorders = GetLateOrders( @parameters ); +); -my $total; -foreach (@lateorders){ - $total += $_->{subtotal}; -} +@lateorders = grep { $_->basket->booksellerid eq $booksellerid } @lateorders if $booksellerid; 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, letters => $letters, estimateddeliverydatefrom => $estimateddeliverydatefrom, estimateddeliverydateto => $estimateddeliverydateto, - total => $total, 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;