X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Forderreceive.pl;h=17c2d5ea732d6a8a30c71431485b6cf3955abff0;hb=970ff591d9adb4aa8cac85ba067e00a37060fa08;hp=bcf6f7476927bb6039dc6e197b58456dfda1f5e9;hpb=8ad2c7d7acc3cb0033426bd78928214a22ad9dd1;p=koha_fer diff --git a/acqui/orderreceive.pl b/acqui/orderreceive.pl index bcf6f74769..17c2d5ea73 100755 --- a/acqui/orderreceive.pl +++ b/acqui/orderreceive.pl @@ -17,15 +17,16 @@ # 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. =head1 NAME orderreceive.pl =head1 DESCRIPTION + This script shows all order already receive and all pendings orders. It permit to write a new order as 'received'. @@ -33,17 +34,20 @@ It permit to write a new order as 'received'. =over 4 -=item supplierid +=item booksellerid + to know on what supplier this script has to display receive order. =item receive -=item invoice -the number of this invoice. +=item invoiceid + +the id of this invoice. =item freight =item biblio + The biblionumber of this order. =item datereceived @@ -57,7 +61,8 @@ The biblionumber of this order. =cut use strict; -# use warnings; # FIXME +use warnings; + use CGI; use C4::Context; use C4::Koha; # GetKohaAuthorisedValues GetItemTypes @@ -65,37 +70,31 @@ use C4::Acquisition; use C4::Auth; use C4::Output; use C4::Dates qw/format_date/; -use C4::Bookseller; +use C4::Bookseller qw/ GetBookSellerFromId /; +use C4::Budgets qw/ GetBudget /; use C4::Members; use C4::Branch; # GetBranches use C4::Items; use C4::Biblio; +use C4::Suggestions; my $input = new CGI; my $dbh = C4::Context->dbh; -my $supplierid = $input->param('supplierid'); -my $ordernumber = $input->param('ordernumber'); +my $invoiceid = $input->param('invoiceid'); +my $invoice = GetInvoice($invoiceid); +my $booksellerid = $invoice->{booksellerid}; +my $freight = $invoice->{shipmentcost}; +my $datereceived = $invoice->{shipmentdate}; +my $ordernumber = $input->param('ordernumber'); my $search = $input->param('receive'); -my $invoice = $input->param('invoice'); -my $freight = $input->param('freight'); -my $datereceived = $input->param('datereceived'); - $datereceived = $datereceived ? C4::Dates->new($datereceived, 'iso') : C4::Dates->new(); -my $bookseller = GetBookSellerFromId($supplierid); -my $gst= $input->param('gst') || $bookseller->{gstrate} || C4::Context->preference("gist") || 0; +my $bookseller = GetBookSellerFromId($booksellerid); my $results = SearchOrder($ordernumber,$search); - -my $count = scalar @$results; -my $order = GetOrder($ordernumber); - - -my $date = @$results[0]->{'entrydate'}; - my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => "acqui/orderreceive.tmpl", @@ -107,49 +106,125 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +my $count = scalar @$results; # prepare the form for receiving if ( $count == 1 ) { - if (C4::Context->preference('AcqCreateItem') eq 'receiving') { - # prepare empty item form - my $cell = PrepareItemrecordDisplay(); - my @itemloop; - push @itemloop,$cell; - - $template->param(items => \@itemloop); - } + my $order = $results->[0]; - if ( @$results[0]->{'quantityreceived'} == 0 ) { - @$results[0]->{'quantityreceived'} = ''; + # Check if ACQ framework exists + my $acq_fw = GetMarcStructure(1, 'ACQ'); + unless($acq_fw) { + $template->param('NoACQframework' => 1); } - if ( @$results[0]->{'unitprice'} == 0 ) { - @$results[0]->{'unitprice'} = ''; + + my $AcqCreateItem = C4::Context->preference('AcqCreateItem'); + if ($AcqCreateItem eq 'receiving') { + $template->param( + AcqCreateItemReceiving => 1, + UniqueItemFields => C4::Context->preference('UniqueItemFields'), + ); + } elsif ($AcqCreateItem eq 'ordering') { + my $fw = ($acq_fw) ? 'ACQ' : ''; + my @itemnumbers = GetItemnumbersFromOrder($order->{ordernumber}); + my @items; + foreach (@itemnumbers) { + my $item = GetItem($_); + if($item->{homebranch}) { + $item->{homebranchname} = GetBranchName($item->{homebranch}); + } + if($item->{holdingbranch}) { + $item->{holdingbranchname} = GetBranchName($item->{holdingbranch}); + } + if(my $code = GetAuthValCode("items.notforloan", $fw)) { + $item->{notforloan} = GetKohaAuthorisedValueLib($code, $item->{notforloan}); + } + if(my $code = GetAuthValCode("items.restricted", $fw)) { + $item->{restricted} = GetKohaAuthorisedValueLib($code, $item->{restricted}); + } + if(my $code = GetAuthValCode("items.location", $fw)) { + $item->{location} = GetKohaAuthorisedValueLib($code, $item->{location}); + } + if(my $code = GetAuthValCode("items.ccode", $fw)) { + $item->{collection} = GetKohaAuthorisedValueLib($code, $item->{ccode}); + } + if(my $code = GetAuthValCode("items.materials", $fw)) { + $item->{materials} = GetKohaAuthorisedValueLib($code, $item->{materials}); + } + my $itemtype = getitemtypeinfo($item->{itype}); + $item->{itemtype} = $itemtype->{description}; + push @items, $item; + } + $template->param(items => \@items); } + + $order->{quantityreceived} = '' if $order->{quantityreceived} == 0; + $order->{unitprice} = '' if $order->{unitprice} == 0; + + my $rrp; + my $ecost; + my $unitprice; + if ( $bookseller->{listincgst} ) { + if ( $bookseller->{invoiceincgst} ) { + $rrp = $order->{rrp}; + $ecost = $order->{ecost}; + $unitprice = $order->{unitprice}; + } else { + $rrp = $order->{rrp} / ( 1 + $order->{gstrate} ); + $ecost = $order->{ecost} / ( 1 + $order->{gstrate} ); + $unitprice = $order->{unitprice} / ( 1 + $order->{gstrate} ); + } + } else { + if ( $bookseller->{invoiceincgst} ) { + $rrp = $order->{rrp} * ( 1 + $order->{gstrate} ); + $ecost = $order->{ecost} * ( 1 + $order->{gstrate} ); + $unitprice = $order->{unitprice} * ( 1 + $order->{gstrate} ); + } else { + $rrp = $order->{rrp}; + $ecost = $order->{ecost}; + $unitprice = $order->{unitprice}; + } + } + + my $suggestion = GetSuggestionInfoFromBiblionumber($order->{biblionumber}); + + my $authorisedby = $order->{authorisedby}; + my $member = GetMember( borrowernumber => $authorisedby ); + + my $budget = GetBudget( $order->{budget_id} ); + $template->param( + AcqCreateItem => $AcqCreateItem, count => 1, - biblionumber => @$results[0]->{'biblionumber'}, - ordernumber => @$results[0]->{'ordernumber'}, - biblioitemnumber => @$results[0]->{'biblioitemnumber'}, - supplierid => @$results[0]->{'booksellerid'}, + biblionumber => $order->{'biblionumber'}, + ordernumber => $order->{'ordernumber'}, + biblioitemnumber => $order->{'biblioitemnumber'}, + booksellerid => $order->{'booksellerid'}, freight => $freight, - gst => $gst, + gstrate => $order->{gstrate} || $bookseller->{gstrate} || C4::Context->preference("gist") || 0, name => $bookseller->{'name'}, - date => format_date($date), - title => @$results[0]->{'title'}, - author => @$results[0]->{'author'}, - copyrightdate => @$results[0]->{'copyrightdate'}, - isbn => @$results[0]->{'isbn'}, - seriestitle => @$results[0]->{'seriestitle'}, - bookfund => @$results[0]->{'bookfundid'}, - quantity => @$results[0]->{'quantity'}, - quantityreceivedplus1 => @$results[0]->{'quantityreceived'} + 1, - quantityreceived => @$results[0]->{'quantityreceived'}, - rrp => @$results[0]->{'rrp'}, - ecost => @$results[0]->{'ecost'}, - unitprice => @$results[0]->{'unitprice'}, - invoice => $invoice, + date => format_date($order->{entrydate}), + title => $order->{'title'}, + author => $order->{'author'}, + copyrightdate => $order->{'copyrightdate'}, + isbn => $order->{'isbn'}, + seriestitle => $order->{'seriestitle'}, + bookfund => $budget->{budget_name}, + quantity => $order->{'quantity'}, + quantityreceivedplus1 => $order->{'quantityreceived'} + 1, + quantityreceived => $order->{'quantityreceived'}, + rrp => sprintf( "%.2f", $rrp ), + ecost => sprintf( "%.2f", $ecost ), + unitprice => sprintf( "%.2f", $unitprice), + memberfirstname => $member->{firstname} || "", + membersurname => $member->{surname} || "", + invoiceid => $invoice->{invoiceid}, + invoice => $invoice->{invoicenumber}, datereceived => $datereceived->output(), - datereceived_iso => $datereceived->output('iso'), - notes => $order->{notes} + datereceived_iso => $datereceived->output('iso'), + notes => $order->{notes}, + suggestionid => $suggestion->{suggestionid}, + surnamesuggestedby => $suggestion->{surnamesuggestedby}, + firstnamesuggestedby => $suggestion->{firstnamesuggestedby}, ); } else { @@ -157,23 +232,24 @@ else { for ( my $i = 0 ; $i < $count ; $i++ ) { my %line = %{ @$results[$i] }; - $line{invoice} = $invoice; + $line{invoice} = $invoice->{invoicenumber}; $line{datereceived} = $datereceived->output(); $line{freight} = $freight; - $line{gst} = $gst; + $line{gstrate} = @$results[$i]->{'gstrate'} || $bookseller->{gstrate} || C4::Context->preference("gist") || 0; $line{title} = @$results[$i]->{'title'}; $line{author} = @$results[$i]->{'author'}; - $line{supplierid} = $supplierid; + $line{booksellerid} = $booksellerid; push @loop, \%line; } $template->param( loop => \@loop, - supplierid => $supplierid, + booksellerid => $booksellerid, + invoiceid => $invoice->{invoiceid}, ); } my $op = $input->param('op'); -if ($op eq 'edit'){ +if ($op and $op eq 'edit'){ $template->param(edit => 1); } output_html_with_http_headers $input, $cookie, $template->output;