X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Fparcels.pl;h=ffcbb66bbf3a2595230e806f1aa2de4b05a5ea97;hb=19a977dc7b779173c4a3e96b6b06dc35db663601;hp=915b1e8aa744772f6f1bc47534050f41afe530dc;hpb=0d991c6abecc87105eddcf57db56f5e118b426dc;p=koha.git diff --git a/acqui/parcels.pl b/acqui/parcels.pl index 915b1e8aa7..ffcbb66bbf 100755 --- a/acqui/parcels.pl +++ b/acqui/parcels.pl @@ -9,18 +9,18 @@ # # 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., -# 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 @@ -35,7 +35,7 @@ It allows to write an order/parcels as 'received' when he arrives. =over 4 -=item supplierid +=item booksellerid To know the supplier this script has to show orders. @@ -44,9 +44,9 @@ To know the supplier this script has to show orders. sort list of order by 'orderby'. Orderby can be equals to * datereceived desc (default value) - * aqorders.booksellerinvoicenumber + * invoicenumber * datereceived - * aqorders.booksellerinvoicenumber desc + * invoicenumber desc =item filter @@ -68,26 +68,29 @@ To know how many results have to be display / page. use strict; use warnings; -use CGI; +use CGI qw ( -utf8 ); use C4::Auth; use C4::Output; -use C4::Dates qw/format_date/; use C4::Acquisition; -use C4::Bookseller qw/ GetBookSellerFromId /; +use C4::Budgets; + +use Koha::Acquisition::Bookseller; +use Koha::DateUtils qw( output_pref dt_from_string ); my $input = CGI->new; -my $supplierid = $input->param('supplierid'); -my $order = $input->param('orderby') || 'datereceived desc'; +my $booksellerid = $input->param('booksellerid'); +my $order = $input->param('orderby') || 'shipmentdate desc'; my $startfrom = $input->param('startfrom'); my $code = $input->param('filter'); my $datefrom = $input->param('datefrom'); my $dateto = $input->param('dateto'); my $resultsperpage = $input->param('resultsperpage'); +my $op = $input->param('op'); $resultsperpage ||= 20; -my ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { template_name => 'acqui/parcels.tmpl', +our ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user( + { template_name => 'acqui/parcels.tt', query => $input, type => 'intranet', authnotrequired => 0, @@ -96,8 +99,54 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -my $bookseller = GetBookSellerFromId($supplierid); -my @parcels = GetParcels( $supplierid, $order, $code, $datefrom, $dateto ); +my $invoicenumber = $input->param('invoice'); +my $shipmentcost = $input->param('shipmentcost'); +my $shipmentcost_budgetid = $input->param('shipmentcost_budgetid'); +my $shipmentdate = $input->param('shipmentdate'); +$shipmentdate and $shipmentdate = output_pref({ str => $shipmentdate, dateformat => 'iso', dateonly => 1 }); + +if ( $op and $op eq 'new' ) { + if ( C4::Context->preference('AcqWarnOnDuplicateInvoice') ) { + my @invoices = GetInvoices( + supplierid => $booksellerid, + invoicenumber => $invoicenumber, + ); + if ( scalar @invoices > 0 ) { + $template->{'VARS'}->{'duplicate_invoices'} = \@invoices; + $template->{'VARS'}->{'invoicenumber'} = $invoicenumber; + $template->{'VARS'}->{'shipmentdate'} = $shipmentdate; + $template->{'VARS'}->{'shipmentcost'} = $shipmentcost; + $template->{'VARS'}->{'shipmentcost_budgetid'} = + $shipmentcost_budgetid; + } + } + $op = 'confirm' unless $template->{'VARS'}->{'duplicate_invoices'}; +} +if ($op and $op eq 'confirm') { + my $invoiceid = AddInvoice( + invoicenumber => $invoicenumber, + booksellerid => $booksellerid, + shipmentdate => $shipmentdate, + shipmentcost => $shipmentcost, + shipmentcost_budgetid => $shipmentcost_budgetid, + ); + if(defined $invoiceid) { + # Successful 'Add' + print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid"); + exit 0; + } else { + $template->param(error_failed_to_create_invoice => 1); + } +} + +my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid }); +my @parcels = GetInvoices( + supplierid => $booksellerid, + invoicenumber => $code, + ( $datefrom ? ( shipmentdatefrom => output_pref({ dt => dt_from_string($datefrom), dateformat => 'iso' }) ) : () ), + ( $dateto ? ( shipmentdateto => output_pref({ dt => dt_from_string($dateto), dateformat => 'iso' }) ) : () ), + order_by => $order +); my $count_parcels = @parcels; # multi page display gestion @@ -114,19 +163,40 @@ for my $i ( $startfrom .. $last_row) { push @{$loopres}, { number => $i + 1, - code => $p->{booksellerinvoicenumber}, - nullcode => $p->{booksellerinvoicenumber} eq 'NULL', - emptycode => $p->{booksellerinvoicenumber} eq q{}, - raw_datereceived => $p->{datereceived}, - datereceived => format_date( $p->{datereceived} ), - bibcount => $p->{biblio}, - reccount => $p->{itemsreceived}, - itemcount => $p->{itemsexpected}, + invoiceid => $p->{invoiceid}, + code => $p->{invoicenumber}, + nullcode => $p->{invoicenumber} eq 'NULL', + emptycode => $p->{invoicenumber} eq q{}, + raw_datereceived => $p->{shipmentdate}, + datereceived => $p->{shipmentdate}, + bibcount => $p->{receivedbiblios} || 0, + reccount => $p->{receiveditems} || 0, + itemcount => $p->{itemsexpected} || 0, }; } if ($count_parcels) { $template->param( searchresults => $loopres, count => $count_parcels ); } + +# build budget list +my $budget_loop = []; +my $budgets = GetBudgetHierarchy; +foreach my $r (@{$budgets}) { + next unless (CanUserUseBudget($loggedinuser, $r, $flags)); + if (!defined $r->{budget_amount} || $r->{budget_amount} == 0) { + next; + } + push @{$budget_loop}, { + b_id => $r->{budget_id}, + b_txt => $r->{budget_name}, + b_active => $r->{budget_period_active}, + }; +} + +@{$budget_loop} = + sort { uc( $a->{b_txt}) cmp uc( $b->{b_txt}) } @{$budget_loop}; + + $template->param( orderby => $order, filter => $code, @@ -134,10 +204,10 @@ $template->param( dateto => $dateto, resultsperpage => $resultsperpage, name => $bookseller->{'name'}, - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), - datereceived_today => C4::Dates->new()->output(), - supplierid => $supplierid, + shipmentdate_today => dt_from_string, + booksellerid => $booksellerid, GST => C4::Context->preference('gist'), + budgets => $budget_loop, ); output_html_with_http_headers $input, $cookie, $template->output;