koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] koha/acqui finishreceive.pl


From: Mason James
Subject: [Koha-cvs] koha/acqui finishreceive.pl
Date: Wed, 07 Jun 2006 03:47:50 +0000

CVSROOT:        /sources/koha
Module name:    koha
Changes by:     Mason James <sushi>     06/06/07 03:47:50

Modified files:
        acqui          : finishreceive.pl 

Log message:
        Merging Katipo changes.
        call to receiveorder() now takes $bookfund as arg.
        Mason's ACQ fixes from HLT-DEV , work in progress
        Added regex to convert & to %26 before redirect to receive.pl.
        Now has error alert for blank barcode field, and little tidyup.
        finishreceive.pl now updates aqorder table's order record with lastest 
added biblioitem for that order, so ordersearch() now returns the acq-orders 
most recently created bibitem info, instead of the initally created biblitem 
info.
        Now redirects back to acquire.pl if barcode exists or newitems() fails.
        Now allows user to create a new biblioitem/item using a checkbox.
        Adding option so magazines make new biblioitems as well as items - in 
testing stage
        adding in the update for the replacement cost on the item table when 
editing a received order via
        adding a bit to allow hlt to edit received order bit and not fail on 
duplicate barcode
        added elsif to handle dup barcode error.
        Fix to handle dup barcodes for newitem(), displays error the goes back 
to acquire.pl.
        Now checks to see if newly created item is currently reserved.
        Fix for the receive periodicals bit
        Catching any errors when making items
        More bugfixing this time a bug not saving volume info
        Fix for bug 3529, allow freight to be distributed among the items
        Now saves modified fields.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/acqui/finishreceive.pl?cvsroot=koha&r1=1.17&r2=1.18

Patches:
Index: finishreceive.pl
===================================================================
RCS file: /sources/koha/koha/acqui/finishreceive.pl,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- finishreceive.pl    14 Sep 2004 12:35:55 -0000      1.17
+++ finishreceive.pl    7 Jun 2006 03:47:50 -0000       1.18
@@ -3,7 +3,6 @@
 #script to add a new item and to mark orders as received
 #written 1/3/00 by address@hidden
 
-
 # Copyright 2000-2002 Katipo Communications
 #
 # This file is part of Koha.
@@ -21,50 +20,242 @@
 # 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
+
 use strict;
 use C4::Output;
 use C4::Acquisition;
 use C4::Biblio;
 use CGI;
 use C4::Search;
+use C4::Circulation::Circ2;
+use C4::Reserves2;
+use C4::Interface::CGI::Output;
+use C4::Auth;
+use HTML::Template;
+
+#use Data::Dumper;
+
+my $input = new CGI;
+my $dbh   = C4::Context->dbh;
 
-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,
+    }
+);
 
-my $user=$input->remote_user;
+my $user             = $input->remote_user;
 my $biblionumber = $input->param('biblio');
-my $bibitemno=$input->param('biblioitemnum');
-my $ordnum=$input->param('ordnum');
-my $quantrec=$input->param('quantityrec');
-my $quantity=$input->param('quantity');
-my $cost=$input->param('cost');
-my $invoiceno=$input->param('invoice');
-my $replacement=$input->param('rrp');
-my $gst=$input->param('gst');
-my $freight=$input->param('freight');
+my $biblioitemnumber = $input->param('biblioitemnum');
+my $ordnum           = $input->param('ordnum');
+my $cost             = $input->param('cost');
+my $invoiceno        = $input->param('invoice');
+my $replacement    = $input->param('rrp');
+my $gst            = $input->param('gst');
+my $freight        = $input->param('freight');
+my $freightperitem = $input->param('freightperitem');
 my $supplierid = $input->param('supplierid');
-my $branch=$input->param('branch');
+my $title         = $input->param('title');
+my $author        = $input->param('author');
+my $copyrightdate = $input->param('copyrightdate');
+my $itemtype      = $input->param('format');
+my $isbn          = $input->param('ISBN');
+my $seriestitle   = $input->param('series');
+my $branch        = $input->param('branch');
+my $holdingbranch = $branch;
+my $barcode       = $input->param('barcode');
+my $bookfund      = $input->param('bookfund');
+my $quantity      = $input->param('quantity');
+my $quantrec      = $input->param('quantityrec');
+my $ecost         = $input->param('ecost');
+my $unitprice     = $input->param('unitprice');
+my $notes         = $input->param('notes');
+my $booksellers   = $input->param('booksellers');
+my $foo           = $input->param('foo');
+my $volinf        = $input->param('volinf');
+my $catview = $input->param('catview');    # for editing from moredetail.tmpl
+my $barcodeexists = $input->param('barcodeexists');  # if barcode exists
+my $newitemfailed = $input->param('newitemfailed');  # if create new item 
failed
+my $createbibitem =
+  $input->param('createbibitem');    # user wants to create a new bibitem
+
+#get additional info on bib and bibitem from dbase for additional needed 
fields before modbiblio.
+( my $bibliocount,     my @biblios )     = &getbiblio($biblionumber);
+( my $biblioitemcount, my @biblioitems ) =
+  &getbiblioitembybiblionumber($biblionumber);
+( my $itemscount, my @items ) = &getitemsbybiblioitem($biblioitemnumber);
+
+my $bibliohash = {
+    biblionumber  => $biblionumber,
+    title         => $title,
+    author        => $author,
+    abstract      => $biblios[0]->{'abstract'},
+    copyrightdate => $copyrightdate,
+    seriestitle   => $seriestitle,
+    serial        => $biblios[0]->{'serial'},
+    unititle      => $biblios[0]->{'unititle'},
+    notes         => $biblios[0]->{'notes'}
+};
+
+my $biblioitemhash = {
+    illus            => $biblioitems[0]->{'illus'},
+    number           => $biblioitems[0]->{'number'},
+    itemtype         => $itemtype,
+    place            => $biblioitems[0]->{'place'},
+    biblioitemnumber => $biblioitemnumber,
+    issn             => $biblioitems[0]->{'issn'},
+    size             => $biblioitems[0]->{'size'},
+    marc             => $biblioitems[0]->{'marc'},
+    timestamp        => $biblioitems[0]->{'timestamp'},
+    biblionumber     => $biblionumber,
+    url              => $biblioitems[0]->{'url'},
+    dewey            => $biblioitems[0]->{'dewey'},
+    isbn             => $isbn,
+    publishercode    => $biblioitems[0]->{'publishercode'},
+    lccn             => $biblioitems[0]->{'iccn'},
+    volume           => $biblioitems[0]->{'volume'},
+    subclass         => $biblioitems[0]->{'subclass'},
+    notes            => $biblioitems[0]->{'notes'},
+    classification   => $biblioitems[0]->{'classification'},
+    volumeddesc      => $volinf,
+    publicationyear  => $biblioitems[0]->{'publicationyear'},
+    volumedate       => $biblioitems[0]->{'volumedate'},
+    pages            => $biblioitems[0]->{'pages'}
+};
+
+my $itemhash = {
+    biblionumber   => $biblionumber,
+    itemnum        => $items[0]->{'itemnumber'},
+    barcode        => $barcode,
+    notes          => $items[0]->{'notes'},
+    itemcallnumber => $items[0]->{'itemcallnumber'},
+    notforloan     => $items[0]->{'notforloan'},
+    location       => $items[0]->{'location'},
+    bibitemnum     => $biblioitemnumber,
+    homebranch     => $items[0]->{'homebranch'},
+    lost           => $items[0]->{'itemlost'},
+    withdrawn      => $items[0]->{'withdrawn'},
+    holdingbranch  => $items[0]->{'holdingbranch'},
+    replacement    => $replacement
+};
+
+# check if barcode exists, if so redirect back to acquire.pl and give message
+my $error = &checkitems( 1, $barcode );
+#warn "barcode check for $barcode result = $error";
+if ($error) {
+    print $input->redirect(
+               
"/cgi-bin/koha/acqui/acquire.pl?recieve=$ordnum&biblio=$biblionumber&invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&barcodeexists=$barcode"
+    );
+}
+# or if barcode is blank
+else {
 
-# if ($quantrec != 0){
-#      $cost /= $quantrec;
-# }
+    if ( $createbibitem eq "YES" ) {
+        &modbiblio($bibliohash);
+        $biblioitemnumber = &newbiblioitem($biblioitemhash);
 
-if ($quantity != 0) {
+#lets do a lookup on aqorders, with ordnum, then insert biblioitem fiels with 
new biblioitem number
+
+        my $query =
+          "UPDATE aqorders SET biblioitemnumber = ? where ordernumber = ? 
+               and biblionumber =  ?";
+        my $sth = $dbh->prepare($query);
+        my $error = $sth->execute( $biblioitemnumber, $ordnum, $biblionumber );
+        #warn Dumper $error;
+        $sth->fetchrow_hashref;
+        $sth->finish;
+    }
+    else {
+        &modbiblio($bibliohash);
+        &modbibitem($biblioitemhash);
+    }
+
+    if ($catview) {
+        &moditem($itemhash);
+        print $input->redirect(
+"/cgi-bin/koha/moredetail.pl?type=$itemtype&bib=$biblionumber&bi=$biblioitemnumber"
+        );
+    }
+
+    if ( $quantity != 0 ) {
        # save the quantity recieved.
-       
receiveorder($biblionumber,$ordnum,$quantrec,$user,$cost,$invoiceno,$freight,$replacement);
+        receiveorder( $biblionumber, $ordnum, $quantrec, $user, $cost,
+            $invoiceno, $freightperitem, $bookfund, $replacement );
+
        # create items if the user has entered barcodes
-       my $barcode=$input->param('barcode');
-       my @barcodes=split(/\,| |\|/,$barcode);
-       my ($error) = newitems({ biblioitemnumber => $bibitemno,
+        my @barcodes = split( /\,| |\|/, $barcode );    #WTF?
+
+        my ($error) = newitems(
+            {
+                biblioitemnumber => $biblioitemnumber,
                                        biblionumber     => $biblionumber,
                                        replacementprice => $replacement,
                                        price            => $cost,
                                        booksellerid     => $supplierid,
                                        homebranch       => $branch,
-                                       loan             => 0 },
-                               @barcodes);
-       print 
$input->redirect("/cgi-bin/koha/acqui/receive.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst");
-} else {
-       print $input->header;
-       delorder($biblionumber,$ordnum);
+                loan             => 0
+            },
+            @barcodes
+        );
+
+        if ($error)
+        { #if  newitems failes then display error, and send them back to 
acquire.pl????
+
+            print $input->redirect(
+                       
"/cgi-bin/koha/acqui/acquire.pl?recieve=$ordnum&biblio=$biblionumber&invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&newitemfailed=1"
+            );
+        }
+
+        elsif ( $itemtype ne 'P' && $itemtype ne 'PP' ) {   # chris's new if 
bit
+            my %env;
+            my $item = getiteminformation( \%env, 0, $barcode );
+            my ( $resfound, $resrec ) = CheckReserves( 0, $barcode );
+
+            if ($resfound) {                                # reserves is found
+                my ($borrower) =
+                  getpatroninformation( \%env, $resrec->{'borrowernumber'}, 0 
);
+                $template->param(
+                    borrowernumber => $borrower->{'borrowernumber'},
+                    cardnumber     => $borrower->{'cardnumber'},
+                    firstname      => $borrower->{'firstname'},
+                    surname        => $borrower->{'surname'},
+                    invoice        => $invoiceno,
+                    id             => $supplierid,
+                    freight        => $freight,
+                    gst            => $gst,
+                    items          => $quantity,
+                    ordnum         => $ordnum,
+                    biblionumber   => $biblionumber,
+                    barcode        => $barcode,
+                );
+
+                output_html_with_http_headers $input, $cookie,
+                  $template->output;
+            }
+            else {    #no reserves found
+                $invoiceno =~
+                  s/\&/\%26/g;   # swapping pesky & with url friendly hex 
codes.
+                print $input->redirect(
+                       
"/cgi-bin/koha/acqui/receive.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&quantity=$quantity"
+                );
+            }
+        }
+        else {
+            print $input->redirect(
+                "/cgi-bin/koha/loadmodules.pl?module=acquisitions")
+              ;    # chris's new bit
+        }    # end of if
+    }
+    else {
+
+        #        print $input->header;
+        delorder( $biblionumber, $ordnum );
        print $input->redirect("/acquisitions/");
+    }
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]