@@ -, +, @@ --- C4/Acquisition.pm | 41 ++++++++- acqui/finishreceive.pl | 9 ++- acqui/orderreceive.pl | 35 +++++++- cataloguing/additem.pl | 1 + .../prog/en/modules/acqui/orderreceive.tt | 95 +++++++++++++++++++- .../prog/en/modules/cataloguing/additem.tt | 9 ++ 6 files changed, 181 insertions(+), 9 deletions(-) --- a/C4/Acquisition.pm +++ a/C4/Acquisition.pm @@ -57,7 +57,7 @@ BEGIN { &ModReceiveOrder &ModOrderBiblioitemNumber &GetCancelledOrders - &NewOrderItem &ModOrderItem + &NewOrderItem &ModOrderItem &ModItemOrder &GetParcels &GetParcel &GetContracts &GetContract @@ -1053,6 +1053,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); +} + #------------------------------------------------------------# @@ -1138,7 +1161,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; @@ -1181,7 +1204,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 @@ -94,9 +94,14 @@ if ($quantityrec > $origquantityrec ) { NewOrderItem($itemnumber, $ordernumber); } } - + + my @received_items = (); + if(C4::Context->preference('AcqCreateItem') eq 'ordering') { + @received_items = $input->param('items_to_receive'); + } + # save the quantity received. - $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 ); --- a/acqui/orderreceive.pl +++ a/acqui/orderreceive.pl @@ -112,7 +112,8 @@ 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') { # Check if ACQ framework exists my $marc = GetMarcStructure(1, 'ACQ'); unless($marc) { @@ -122,6 +123,37 @@ if ( $count == 1 ) { AcqCreateItemReceiving => 1, UniqueItemFields => C4::Context->preference('UniqueItemFields'), ); + } elsif ($AcqCreateItem eq 'ordering') { + my @itemnumbers = GetItemnumbersFromOrder($order->{ordernumber}); + my @items; + foreach (@itemnumbers) { + my $item = GetItem($_); + if($item->{homebranch}) { + $item->{homebranchname} = GetBranchName($item->{homebranch}); + } + if($item->{holdingbranch}) { + $item->{holdingbranchname} = GetBranchName($item->{holdingbranch}); + } + if(my $code = GetAuthValCode("items.notforloan", "ACQ")) { + $item->{notforloan} = GetKohaAuthorisedValueLib($code, $item->{notforloan}); + } + if(my $code = GetAuthValCode("items.restricted", "ACQ")) { + $item->{restricted} = GetKohaAuthorisedValueLib($code, $item->{restricted}); + } + if(my $code = GetAuthValCode("items.location", "ACQ")) { + $item->{location} = GetKohaAuthorisedValueLib($code, $item->{location}); + } + if(my $code = GetAuthValCode("items.ccode", "ACQ")) { + $item->{collection} = GetKohaAuthorisedValueLib($code, $item->{ccode}); + } + if(my $code = GetAuthValCode("items.materials", "ACQ")) { + $item->{materials} = GetKohaAuthorisedValueLib($code, $item->{materials}); + } + my $itemtype = getitemtypeinfo($item->{itype}); + $item->{itemtype} = $itemtype->{description}; + push @items, $item; + } + $template->param(items => \@items); } if ( $order->{'unitprice'} == 0 ) { @@ -136,6 +168,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 @@ -724,6 +724,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 @@ -32,9 +32,46 @@ return true; } + [% IF (AcqCreateItem == 'ordering') %] + function PopupEditPage(biblionumber, itemnumber) { + var url = "/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=" + + biblionumber + "&itemnumber=" + itemnumber + "&popup=1#edititem"; + window.open(url); + } + + function CalcQtyToReceive() { + var qty = $("input[name='items_to_receive']:checked").length; + $("#quantity").val(qty); + } + + function CheckNItems(n) { + $("input[name='items_to_receive']").each(function() { + $(this).attr('checked', false); + }); + $("input[name='items_to_receive']:lt("+n+")").each(function () { + $(this).attr('checked', true); + }); + } + [% END %] + $(document).ready(function() { [% IF (AcqCreateItemReceiving) %] cloneItemBlock(0, '[% UniqueItemFields %]'); + [% ELSIF (AcqCreateItem == 'ordering') %] + $("input[name='items_to_receive']").change(function() { + CalcQtyToReceive(); + }); + CalcQtyToReceive(); + $("#quantity").keyup(function() { + var qty = parseInt($("#quantity").val()); + var qtyto = parseInt($("#quantity_to_receive").val()); + if(qty > qtyto) { + $("#qtyrecerror").show(); + } else { + $("#qtyrecerror").hide(); + } + CheckNItems($(this).val()); + }); [% END %] }); //]]> @@ -127,7 +164,55 @@ [% END %]
- [% END %][%# IF (AcqCreateItemReceiving) %] + [% ELSIF (AcqCreateItem == 'ordering') %] + [% IF (items.size) %] +Receive? | ++ | Barcode | +Home branch | +Holding branch | +Not for loan | +Restricted | +Location | +Call number | +Copy number | +Stock number | +Collection code | +Item type | +Materials | +Notes | +
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ | Edit | +[% item.barcode %] | +[% item.homebranchname %] | +[% item.holdingbranchname %] | +[% item.notforloan %] | +[% item.restricted %] | +[% item.location %] | +[% item.itemcallnumber %] | +[% item.copynumber %] | +[% item.stocknumber %] | +[% item.collection %] | +[% item.itemtype %] | +[% item.materials %] | +[% item.itemnotes %] | +