X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=acqui%2Faddorder.pl;h=7c4bdcd54cbae64f63cdb2f4fe7b77342b15c97f;hb=7e2815885536a94cd93e7c328708eb68579ea231;hp=cbc16b54c77a3dab5a8f521a3c9c7cd619e26a95;hpb=6376aa43263cd868098bad1551b00567fe09491e;p=koha.git diff --git a/acqui/addorder.pl b/acqui/addorder.pl index cbc16b54c7..7c4bdcd54c 100755 --- a/acqui/addorder.pl +++ b/acqui/addorder.pl @@ -3,7 +3,6 @@ #script to add an order into the system #written 29/2/00 by chris@katipo.co.nz - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. @@ -21,110 +20,208 @@ # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA + +=head1 NAME + +addorder.pl + +=head1 DESCRIPTION + +this script allows to add an order. +It is called by : + +=item neworderbiblio.pl to add an order from nothing. + +=item neworderempty.pl to add an order from an existing biblio. + +=item newordersuggestion.pl to add an order from an existing suggestion. + +=head1 CGI PARAMETERS + +All of the cgi parameters below are related to the new order. + +=over 4 + +=item C +the number of this new order. + +=item C +the number of this new basket + +=item C +the bookseller the librarian has to pay. + +=item C + +=item C +the title of the record ordered. + +=item C<author> +the author of the record ordered. + +=item C<copyrightdate> +the copyrightdate of the record ordered. + +=item C<ISBN> +the ISBN of the record ordered. + +=item C<format> + +=item C<quantity> +the quantity to order. + +=item C<list_price> +the price of this order. + +=item C<branch> +the branch where this order will be received. + +=item C<series> + +=item C<notes> +Notes on this basket. + +=item C<bookfund> +bookfund use to pay this order. + +=item C<sort1> & C<sort2> + +=item C<rrp> + +=item C<ecost> + +=item C<GST> + +=item C<budget> + +=item C<cost> + +=item C<sub> + +=item C<invoice> +the number of the invoice for this order. + +=item C<publishercode> + +=item C<suggestionid> +if it is an order from an existing suggestion : the id of this suggestion. + +=item C<donation> + +=back + +=cut + use strict; use CGI; -use C4::Auth; -use C4::Output; -use C4::Acquisition; -use C4::Biblio; +use C4::Auth; # get_template_and_user +use C4::Acquisition; # NewOrder DelOrder ModOrder +use C4::Suggestions; # ModStatus +use C4::Biblio; # AddBiblio TransformKohaToMarc use C4::Output; -use C4::Interface::CGI::Output; -use C4::Database; -use HTML::Template; -#use Date::Manip; +# FIXME: This needs to do actual error checking and possibly return user to the same form, +# not just blindly call C4 functions and print a redirect. my $input = new CGI; + # get_template_and_user used only to check auth & get user id -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "acqui/order.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {acquisition => 1}, - debug => 1, - }); - -my $existing=$input->param('existing'); -my $title=$input->param('title'); -my $author=$input->param('author'); -my $copyrightdate=$input->param('copyrightdate'); -my $isbn=$input->param('ISBN'); -my $itemtype=$input->param('format'); -my $ordnum=$input->param('ordnum'); -my $basketno=$input->param('basket'); -my $quantity=$input->param('quantity'); -my $listprice=$input->param('list_price'); -my $series=$input->param('Series'); -if ($listprice eq ''){ - $listprice=0; -} -my $supplier=$input->param('supplier'); -my $notes=$input->param('notes'); -my $bookfund=$input->param('bookfund'); -my $sort1=$input->param('sort1'); -my $sort2=$input->param('sort2'); -my $who=$loggedinuser; -my $bibnum; -my $bibitemnum; -my $rrp=$input->param('rrp'); -my $ecost=$input->param('ecost'); -my $gst=$input->param('GST'); -my $orderexists=$input->param('orderexists'); -my $budget=$input->param('budget'); -my $cost=$input->param('cost'); -my $sub=$input->param('sub'); -my $invoice=$input->param('invoice'); +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "acqui/booksellers.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => { acquisition => 1 }, + debug => 1, + } +); + +# get CGI parameters +my $ordnum = $input->param('ordnum'); +my $basketno = $input->param('basketno'); +my $booksellerid = $input->param('booksellerid'); +my $existing = $input->param('existing'); # existing biblio, (not basket or order) +my $title = $input->param('title'); +my $author = $input->param('author'); +my $copyrightdate = $input->param('copyrightdate'); +my $isbn = $input->param('ISBN'); +my $itemtype = $input->param('format'); +my $quantity = $input->param('quantity'); # FIXME: else ERROR! +my $listprice = $input->param('list_price') || 0; +my $branch = $input->param('branch'); +my $series = $input->param('series'); +my $notes = $input->param('notes'); +my $bookfund = $input->param('bookfund'); +my $sort1 = $input->param('sort1'); +my $sort2 = $input->param('sort2'); +my $rrp = $input->param('rrp'); +my $ecost = $input->param('ecost'); +my $gst = $input->param('GST'); +my $budget = $input->param('budget'); +my $cost = $input->param('cost'); +my $sub = $input->param('sub'); +my $purchaseorder = $input->param('purchaseordernumber'); +my $invoice = $input->param('invoice'); my $publishercode = $input->param('publishercode'); -if ($quantity ne '0'){ - #check to see if biblio exists - if ($existing eq 'no'){ - #if it doesnt create it - $bibnum = &newbiblio({ title => $title?$title:"", - author => $author?$author:"", - copyrightdate => $copyrightdate?$copyrightdate:"", - series => $series?$series:"", - }); - $bibitemnum = &newbiblioitem({ biblionumber => $bibnum, - itemtype => $itemtype?$itemtype:"", - isbn => $isbn?$isbn:"", - publishercode => $publishercode?$publishercode:"", - }); - if ($title) { - newsubtitle($bibnum,$title); - } - } else { - $bibnum=$input->param('biblio'); - $bibitemnum=$input->param('bibitemnum'); - my $oldtype=$input->param('oldtype'); - if ($bibitemnum eq '' || $itemtype ne $oldtype){ - $bibitemnum= &newbiblioitem({ biblionumber => $bibnum, - itemtype => $itemtype?$itemtype:"", - isbn => $isbn?$isbn:"" , - publishercode => $publishercode?$publishercode:"", - }); - } else { - &modbibitem({biblioitemnumber => $bibitemnum, - isbn => $isbn, - publishercode => $publishercode, - }); - } - &modbiblio({ - biblionumber => $bibnum, - title => $title?$title:"", - author => $author?$author:"", - copyrightdate => $copyrightdate?$copyrightdate:"", - series => $series?$series:"" }, - ); - } - if ($orderexists ne '') { - modorder($title,$ordnum,$quantity,$listprice,$bibnum,$basketno,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst,$budget,$cost,$sub,$invoice,$sort1,$sort2); - }else { - neworder($bibnum,$title,$ordnum,$basketno,$quantity,$listprice,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst,$budget,$cost,$sub,$invoice,$sort1,$sort2); - } -} else { - $bibnum=$input->param('biblio'); - delorder($bibnum,$ordnum); -} +my $suggestionid = $input->param('suggestionid'); +my $user = $input->remote_user; -print $input->redirect("basket.pl?basket=$basketno"); +#warn "CREATEBIBITEM = $input->param('createbibitem')"; +#warn Dumper $input->param('createbibitem'); +my $createbibitem = $input->param('createbibitem'); + +# create, modify or delete biblio +# create if $quantity>=0 and $existing='no' +# modify if $quantity>=0 and $existing='yes' +# delete if $quantity has been set to 0 by the librarian +my $biblionumber = $input->param('biblionumber'); +my $bibitemnum; +if ( $quantity ne '0' ) { + #check to see if biblio exists + if ( $existing eq 'no' ) { + + #if it doesnt create it + my $record = TransformKohaToMarc( + { + "biblio.title" => "$title", + "biblio.author" => "$author", + "biblio.copyrightdate" => $copyrightdate ? $copyrightdate : "", + "biblio.series" => $series ? $series : "", + "biblioitems.itemtype" => $itemtype ? $itemtype : "", + "biblioitems.isbn" => $isbn ? $isbn : "", + "biblioitems.publishercode" => $publishercode ? $publishercode : "", + }); + # create the record in catalogue, with framework '' + ($biblionumber,$bibitemnum) = AddBiblio($record,''); + + # change suggestion status if applicable + if ($suggestionid) { + ModStatus( $suggestionid, 'ORDERED', '', $biblionumber ); + } + } + # if we already have $ordnum, then it's an ordermodif + if ($ordnum) { + ModOrder( + $title, $ordnum, $quantity, $listprice, + $biblionumber, $basketno, $booksellerid, $loggedinuser, + $notes, $bookfund, $bibitemnum, $rrp, + $ecost, $gst, $budget, $cost, + $invoice, $sort1, $sort2, $purchaseorder + ); + } + else { # else, it's a new line + ( $basketno, $ordnum ) = NewOrder( + $basketno, $biblionumber, $title, $quantity, + $listprice, $booksellerid, $loggedinuser, $notes, + $bookfund, $bibitemnum, $rrp, $ecost, + $gst, $budget, $cost, $sub, + $invoice, $sort1, $sort2, $purchaseorder + ); + } +} +else { # qty=0, delete the line + $biblionumber = $input->param('biblionumber'); + DelOrder( $biblionumber, $ordnum ); +} +print $input->redirect("basket.pl?basketno=$basketno");