X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Fhistsearch.pl;h=1f097d828faeaeb29a74a79273be636977a948e1;hb=7531f66a921089b8b4bae60cf607820b4c483af0;hp=1ffbffeed07a9b9dda14b4e451fac39af7ea75ce;hpb=0db3cccf87fdb14b5556a8a1044d89a5b2baabc5;p=koha-ffzg.git diff --git a/acqui/histsearch.pl b/acqui/histsearch.pl index 1ffbffeed0..1f097d828f 100755 --- a/acqui/histsearch.pl +++ b/acqui/histsearch.pl @@ -5,18 +5,18 @@ # Copyright 2004 Biblibre # Parts copyright 2011 Catalyst IT Ltd. # -# 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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . =head1 NAME @@ -49,91 +49,93 @@ to filter on ended date. =cut -use strict; -#use warnings; FIXME - Bug 2505 -use CGI; +use Modern::Perl; +use CGI qw ( -utf8 ); use C4::Auth; # get_template_and_user use C4::Output; use C4::Acquisition; -use C4::Dates; use C4::Debug; +use C4::Koha; +use Koha::AdditionalFields; +use Koha::DateUtils; my $input = new CGI; -my $title = $input->param( 'title'); -my $author = $input->param('author'); -my $isbn = $input->param('isbn'); -my $name = $input->param( 'name' ); -my $ean = $input->param('ean'); -my $basket = $input->param( 'basket' ); -my $basketgroupname = $input->param('basketgroupname'); -my $booksellerinvoicenumber = $input->param( 'booksellerinvoicenumber' ); my $do_search = $input->param('do_search') || 0; -my $from_placed_on = C4::Dates->new($input->param('from')); -my $to_placed_on = C4::Dates->new($input->param('to')); -if ( not $input->param('from') ) { - # FIXME Dirty but we can't sent a Date::Calc to C4::Dates ? - # We would use a function like Add_Delta_YM(-1, 0, 0); - $$from_placed_on{dmy_arrayref}[5] -= 1; -} my $dbh = C4::Context->dbh; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { - template_name => "acqui/histsearch.tmpl", + template_name => "acqui/histsearch.tt", query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { acquisition => 'group_manage', acquisition => 'order_manage', acquisition => 'order_receive' }, + flagsrequired => { acquisition => '*' }, debug => 1, } ); -my ( $from_iso, $to_iso, $d ); -if ( $d = $input->param('from') ) { - $from_iso = C4::Dates->new($d)->output('iso'); +my $filters = { + basket => scalar $input->param('basket'), + title => scalar $input->param('title'), + author => scalar $input->param('author'), + isbn => scalar $input->param('isbn'), + name => scalar $input->param('name'), + ean => scalar $input->param('ean'), + basketgroupname => scalar $input->param('basketgroupname'), + budget => scalar $input->param('budget'), + booksellerinvoicenumber => scalar $input->param('booksellerinvoicenumber'), + budget => scalar $input->param('budget'), + orderstatus => scalar $input->param('orderstatus'), + ordernumber => scalar $input->param('ordernumber'), + search_children_too => scalar $input->param('search_children_too'), + created_by => [ $input->multi_param('created_by') ], + managing_library => scalar $input->param('managing_library'), +}; + +my $from_placed_on = eval { dt_from_string( scalar $input->param('from') ) } || dt_from_string; +my $to_placed_on = eval { dt_from_string( scalar $input->param('to') ) } || dt_from_string; +unless ( $input->param('from') ) { + # Fill the form with year-1 + $from_placed_on->set_time_zone('floating')->subtract( years => 1 ); } -if ( $d = $input->param('iso') ) { - $to_iso = C4::Dates->new($d)->output('iso'); +$filters->{from_placed_on} = output_pref( { dt => $from_placed_on, dateformat => 'iso', dateonly => 1 } ); +$filters->{to_placed_on} = output_pref( { dt => $to_placed_on, dateformat => 'iso', dateonly => 1 } ); +my @additional_fields = Koha::AdditionalFields->search( { tablename => 'aqbasket', searchable => 1 } ); +$template->param( available_additional_fields => \@additional_fields ); +my @additional_field_filters; +foreach my $additional_field (@additional_fields) { + my $value = $input->param('additional_field_' . $additional_field->id); + if (defined $value and $value ne '') { + push @additional_field_filters, { + id => $additional_field->id, + value => $value, + }; + } } +$filters->{additional_fields} = \@additional_field_filters; + -my ( $order_loop, $total_qty, $total_price, $total_qtyreceived ); +my $order_loop; # If we're supplied any value then we do a search. Otherwise we don't. if ($do_search) { - ( $order_loop, $total_qty, $total_price, $total_qtyreceived ) = GetHistory( - title => $title, - author => $author, - isbn => $isbn, - ean => $ean, - name => $name, - from_placed_on => $from_iso, - to_placed_on => $to_iso, - basket => $basket, - booksellerinvoicenumber => $booksellerinvoicenumber, - basketgroupname => $basketgroupname, - ); + $order_loop = GetHistory(%$filters); } -my $from_date = $from_placed_on ? $from_placed_on->output('syspref') : undef; -my $to_date = $to_placed_on ? $to_placed_on->output('syspref') : undef; +my $budgetperiods = C4::Budgets::GetBudgetPeriods; +my $bp_loop = $budgetperiods; +for my $bp ( @{$budgetperiods} ) { + my $hierarchy = C4::Budgets::GetBudgetHierarchy( $$bp{budget_period_id} ); + for my $budget ( @{$hierarchy} ) { + $$budget{budget_display_name} = sprintf("%s", ">" x $$budget{depth} . $$budget{budget_name}); + } + $$bp{hierarchy} = $hierarchy; +} $template->param( - suggestions_loop => $order_loop, - total_qty => $total_qty, - total_qtyreceived => $total_qtyreceived, - total_price => sprintf( "%.2f", $total_price ), - numresults => $order_loop ? scalar(@$order_loop) : undef, - title => $title, - author => $author, - isbn => $isbn, - ean => $ean, - name => $name, - basket => $basket, - booksellerinvoicenumber => $booksellerinvoicenumber, - basketgroupname => $basketgroupname, - from_placed_on => $from_date, - to_placed_on => $to_date, - debug => $debug || $input->param('debug') || 0, - uc(C4::Context->preference("marcflavour")) => 1 + order_loop => $order_loop, + filters => $filters, + bp_loop => $bp_loop, + search_done => $do_search, ); output_html_with_http_headers $input, $cookie, $template->output;