@@ -, +, @@ --- C4/Acquisition.pm | 41 ++++++++++- acqui/finishreceive.pl | 13 +++- acqui/orderreceive.pl | 15 +++- cataloguing/additem.pl | 1 + .../prog/en/modules/acqui/orderreceive.tt | 75 +++++++++++++++++--- .../prog/en/modules/cataloguing/additem.tt | 9 +++ 6 files changed, 132 insertions(+), 22 deletions(-) --- a/C4/Acquisition.pm +++ a/C4/Acquisition.pm @@ -56,7 +56,7 @@ BEGIN { &ModReceiveOrder &ModOrderBiblioitemNumber &GetCancelledOrders - &NewOrderItem &ModOrderItem + &NewOrderItem &ModOrderItem &ModItemOrder &GetParcels &GetParcel &GetContracts &GetContract @@ -1017,6 +1017,29 @@ sub ModOrderItem { return 0; } +=head3 ModItemOrder + + ModItemOrder($itemnumber, $ordernumber); + +Modifies the ordernumber of an item in aqorders_items. + +=cut + +sub ModItemOrder { + my ($itemnumber, $ordernumber) = @_; + + return unless ($itemnumber and $ordernumber); + + my $dbh = C4::Context->dbh; + my $query = qq{ + UPDATE aqorders_items + SET ordernumber = ? + WHERE itemnumber = ? + }; + my $sth = $dbh->prepare($query); + return $sth->execute($ordernumber, $itemnumber); +} + #------------------------------------------------------------# @@ -1102,7 +1125,7 @@ C<$ordernumber>. sub ModReceiveOrder { my ( $biblionumber, $ordernumber, $quantrec, $user, $cost, - $invoiceno, $freight, $rrp, $budget_id, $datereceived + $invoiceno, $freight, $rrp, $budget_id, $datereceived, $received_items ) = @_; my $dbh = C4::Context->dbh; @@ -1148,7 +1171,19 @@ sub ModReceiveOrder { $order->{'quantity'} -= $quantrec; $order->{'quantityreceived'} = 0; my $newOrder = NewOrder($order); -} else { + # Change ordernumber in aqorders_items for items not received + my @orderitems = GetItemnumbersFromOrder( $order->{'ordernumber'} ); + my $count = scalar @orderitems; + + for (my $i=0; $i<$count; $i++){ + foreach (@$received_items){ + splice (@orderitems, $i, 1) if ($orderitems[$i] == $_); + } + } + foreach (@orderitems) { + ModItemOrder($_, $newOrder); + } + } else { $sth=$dbh->prepare("update aqorders set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?, unitprice=?,freight=?,rrp=? --- a/acqui/finishreceive.pl +++ a/acqui/finishreceive.pl @@ -108,10 +108,15 @@ if ($quantityrec > $origquantityrec ) { my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber); } } - + + 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); - } + if( $quantityrec > 0 ) { + $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived, \@received_items); + } } print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoice=$invoiceno&supplierid=$supplierid&freight=$freight&gst=$gst&datereceived=$datereceived$error_url_str"); --- a/acqui/orderreceive.pl +++ a/acqui/orderreceive.pl @@ -111,17 +111,23 @@ my $count = scalar @$results; # prepare the form for receiving if ( $count == 1 ) { my $order = $results->[0]; - if (C4::Context->preference('AcqCreateItem') eq 'receiving') { + my $AcqCreateItem = C4::Context->preference('AcqCreateItem'); + if ($AcqCreateItem eq 'receiving') { # prepare empty item form my $cell = PrepareItemrecordDisplay('','','','ACQ'); unless ($cell) { $cell = PrepareItemrecordDisplay('','','',''); $template->param('NoACQframework' => 1); } - my @itemloop; - push @itemloop,$cell; - $template->param(items => \@itemloop); + $template->param(itemform => $cell); + } elsif ($AcqCreateItem eq 'ordering') { + my @itemnumbers = GetItemnumbersFromOrder($order->{ordernumber}); + my @items; + foreach (@itemnumbers) { + push @items, GetItem($_); + } + $template->param(items => \@items); } if ( $order->{'unitprice'} == 0 ) { @@ -134,6 +140,7 @@ if ( $count == 1 ) { my $budget = GetBudget( $order->{'budget_id'} ); $template->param( + AcqCreateItem => $AcqCreateItem, count => 1, biblionumber => $order->{'biblionumber'}, ordernumber => $order->{'ordernumber'}, --- a/cataloguing/additem.pl +++ a/cataloguing/additem.pl @@ -729,6 +729,7 @@ $template->param( itemtagsubfield => $itemtagsubfield, op => $nextop, opisadd => ($nextop eq "saveitem") ? 0 : 1, + popup => $input->param('popup') ? 1: 0, C4::Search::enabled_staff_search_views, ); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt @@ -2,6 +2,31 @@ Koha › Acquisitions › Receipt summary for : [% name %] [% IF ( invoice ) %]invoice, [% invoice %][% END %] [% INCLUDE 'doc-head-close.inc' %] + [% INCLUDE 'header.inc' %] @@ -35,17 +60,46 @@ [% seriestitle %] - [% IF ( items ) %] + [% IF (AcqCreateItem == 'ordering') %] + [% IF (items.size) %] +
+ Items + + + + + + + + + + + + + [% FOREACH item IN items %] + + + + + + + + + [% END %] + +
Receive?BarcodeHome branchLocationCall number 
[% item.barcode %][% item.homebranch %][% item.location %][% item.itemcallnumber %]Edit
+
+ [% END %] + [% ELSIF (AcqCreateItem == 'receiving') %]
Item [% IF ( NoACQframework ) %]

No ACQ framework, using default. You should create a framework with code ACQ, the items framework would be used

[% END %] - [% FOREACH item IN items %]
-
    [% FOREACH iteminformatio IN item.iteminformation %]
  1. +
      [% FOREACH iteminformatio IN itemform.iteminformation %]
    1. @@ -62,21 +116,20 @@
    2. [% END %]
    - Add - + Add +
- - - - + + + + - + [% END %]
- [% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt @@ -4,6 +4,12 @@