X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;ds=sidebyside;f=acqui%2Ffinishreceive.pl;h=d09a40ace0736fc141d010bf17c7efbe4401efa7;hb=00bd409a9a4e7576a2d5f613e7e86e26758ee287;hp=7491af41c5969c24799a6b24b0d58da3d955a640;hpb=3818a8dc384f1687d287e77fdb683b3eb518e036;p=koha_gimpoz diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index 7491af41c5..d09a40ace0 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -16,93 +16,103 @@ # 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 - -# this script makes the items, addorder.pl has already made the biblio and biblioitem records: MASON - - -=head1 NAME - -finishreceive.pl - -=head1 DESCRIPTION -TODO - -=head1 CGI PARAMETERS - -=over 4 - -TODO - -=back - -=cut +# 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. use strict; -use C4::Acquisition; +use warnings; use CGI; -use C4::Interface::CGI::Output; use C4::Auth; -use C4::Bookseller; - -my $input = new CGI; - -my ( $template, $borrowernumber, $cookie ) = get_template_and_user( - { - template_name => "acqui/finishreceive.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => { editcatalogue => 1 }, - debug => 1, +use C4::Output; +use C4::Context; +use C4::Acquisition; +use C4::Biblio; +use C4::Items; +use C4::Search; +use List::MoreUtils qw/any/; + +my $input=new CGI; +my $flagsrequired = {acquisition => 'order_receive'}; + +checkauth($input, 0, $flagsrequired, 'intranet'); + +my $user=$input->remote_user; +my $biblionumber = $input->param('biblionumber'); +my $biblioitemnumber=$input->param('biblioitemnumber'); +my $ordernumber=$input->param('ordernumber'); +my $origquantityrec=$input->param('origquantityrec'); +my $quantityrec=$input->param('quantityrec'); +my $quantity=$input->param('quantity'); +my $unitprice=$input->param('cost'); +my $invoiceno=$input->param('invoice'); +my $datereceived=$input->param('datereceived'); +my $replacement=$input->param('rrp'); +my $gst=$input->param('gst'); +my $freight=$input->param('freight'); +my $booksellerid = $input->param('booksellerid'); +my $cnt=0; +my $error_url_str; +my $ecost = $input->param('ecost'); +my $note = $input->param("note"); + +#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME +if ($quantityrec > $origquantityrec ) { + # now, add items if applicable + if (C4::Context->preference('AcqCreateItem') eq 'receiving') { + + my @tags = $input->param('tag'); + my @subfields = $input->param('subfield'); + my @field_values = $input->param('field_value'); + my @serials = $input->param('serial'); + my @itemid = $input->param('itemid'); + my @ind_tag = $input->param('ind_tag'); + my @indicator = $input->param('indicator'); + #Rebuilding ALL the data for items into a hash + # parting them on $itemid. + my %itemhash; + my $countdistinct; + my $range=scalar(@itemid); + for (my $i=0; $i<$range; $i++){ + unless ($itemhash{$itemid[$i]}){ + $countdistinct++; + } + push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i]; + push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i]; + push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i]; + push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i]; + push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i]; + } + foreach my $item (keys %itemhash){ + my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'}, + $itemhash{$item}->{'subfields'}, + $itemhash{$item}->{'field_values'}, + $itemhash{$item}->{'ind_tag'}, + $itemhash{$item}->{'indicator'},'ITEM'); + my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); + my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber); + NewOrderItem($itemnumber, $ordernumber); + } } -); + + # save the quantity received. + $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived); +} + +update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber ); -my @biblionumber = $input->param('biblionumber'); -my @ordnum = $input->param('ordernumber'); -my $cost = $input->param('invoicetotal'); -my $locacost = $input->param('localtotal'); -my $invoiceno = $input->param('invoice'); -my @replacement = $input->param('actual'); -my @gst = $input->param('gstrate'); -my $freight = $input->param('actualfreight'); -my @freightperitem = $input->param('freight'); -my $supplierid = $input->param('supplierid'); -my @title = $input->param('title'); -my $currencyrate=$input->param('currencyrate'); -my @bookfund = $input->param('bookfund'); -my @discount = $input->param('discount'); -my @quantrec = $input->param('received'); -my $totalreceived=$input->param('totalreceived'); -my $incgst=$input->param('incgst'); -my $ecost; -my $unitprice; -my $listprice; +print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&booksellerid=$booksellerid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str"); -my @supplier=GetBookSeller($supplierid); -my $count=scalar @quantrec; -my @additems; +################################ End of script ################################ - for (my $i=0; $i<$count;$i++){ - $freightperitem[$i]=$freight/$totalreceived unless $freightperitem[$i]; -$listprice=$replacement[$i]; - $replacement[$i]= $replacement[$i]*$currencyrate; - if ($incgst){ - $ecost= ($replacement[$i]*100/($gst[$i]+100))*(100 - $discount[$i])/100; - }else{ - $ecost= $replacement[$i]*(100 - $discount[$i])/100; - } -$unitprice=$ecost + $ecost*$gst[$i]/100; - if ( $quantrec[$i] != 0 ) { - # save the quantity recieved. - ModReceiveOrder( $biblionumber[$i], $ordnum[$i], $quantrec[$i], $unitprice, - $invoiceno, $freightperitem[$i], $replacement[$i] ,$listprice,$input ); - push @additems,{biblionumber=>$biblionumber[$i],itemcount=>$quantrec[$i], title=>$title[$i],supplier=>$supplier[0]->{name},rrp=>$replacement[$i],}; +sub update_item { + my ( $itemnumber ) = @_; - } + ModItem( { + booksellerid => $booksellerid, + dateaccessioned => $datereceived, + price => $unitprice, + replacementprice => $replacement, + replacementpricedate => $datereceived, + }, $biblionumber, $itemnumber ); } -$template->param(loopbiblios => \@additems,); - - output_html_with_http_headers $input, $cookie, $template->output; \ No newline at end of file