Bug 8271 teach SIPServer.pm to set its own lib path
[koha.git] / acqui / finishreceive.pl
index 31c7c35..84391f5 100755 (executable)
@@ -16,9 +16,9 @@
 # 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.
 
 use strict;
 use warnings;
@@ -34,7 +34,9 @@ use List::MoreUtils qw/any/;
 
 my $input=new CGI;
 my $flagsrequired = {acquisition => 'order_receive'};
-my ($loggedinuser, $cookie, $sessionID) = checkauth($input, 0, $flagsrequired, 'intranet');
+
+checkauth($input, 0, $flagsrequired, 'intranet');
+
 my $user=$input->remote_user;
 my $biblionumber = $input->param('biblionumber');
 my $biblioitemnumber=$input->param('biblioitemnumber');
@@ -48,34 +50,17 @@ my $datereceived=$input->param('datereceived');
 my $replacement=$input->param('rrp');
 my $gst=$input->param('gst');
 my $freight=$input->param('freight');
-my $supplierid = $input->param('supplierid');
+my $booksellerid = $input->param('booksellerid');
 my $cnt=0;
 my $error_url_str;
 my $ecost = $input->param('ecost');
 my $note = $input->param("note");
 
-my %tplorder = ( 'quantity'                  =>     $input->param('quantity') || '',
-                             'quantityreceived'   =>     $input->param('quantityrec') || '',
-                             'notes'                      =>      $input->param("note") || '',
-                             'rrp'                          =>      $input->param('rrp') || '',
-                             'ecost'                      =>      $input->param('ecost') || '',
-                             'unitprice'                =>      $input->param('cost') || '',
-                     );
-my $order = GetOrder($ordernumber);
-if ( any { $order->{$_} ne $tplorder{$_} } qw(quantity quantityreceived notes rrp ecost unitprice) ) {
-    $order->{quantity} = $tplorder{quantity} if $tplorder{quantity};
-    $order->{quantityreceived} = $tplorder{quantityreceived} if $tplorder{quantityreceived};
-    $order->{notes} = $tplorder{notes} if $tplorder{notes};
-    $order->{rrp} = $tplorder{rrp} if $tplorder{rrp};
-    $order->{ecost} = $tplorder{ecost} if $tplorder{ecost};
-    $order->{unitprice} = $tplorder{unitprice} if $tplorder{unitprice};
-    ModOrder($order);
-}
-
 #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');
@@ -100,18 +85,39 @@ if ($quantityrec > $origquantityrec ) {
         }
         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'});
+                                          $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 ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
+            my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
+            NewOrderItem($itemnumber, $ordernumber);
         }
     }
-    
+
+    my @received_items = ();
+    if(C4::Context->preference('AcqCreateItem') eq 'ordering') {
+        @received_items = $input->param('items_to_receive');
+    }
+
     # save the quantity received.
-       if( $quantityrec > 0 ) {
-       $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived);
-       }
+    $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived, \@received_items);
+}
+
+update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber );
+
+print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&booksellerid=$booksellerid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str");
+
+################################ End of script ################################
+
+sub update_item {
+    my ( $itemnumber ) = @_;
+
+    ModItem( {
+        booksellerid         => $booksellerid,
+        dateaccessioned      => $datereceived,
+        price                => $unitprice,
+        replacementprice     => $replacement,
+        replacementpricedate => $datereceived,
+    }, $biblionumber, $itemnumber );
 }
-    print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str");