From bf27216ce40d0e77f80c3b1c4453eebc2fa95545 Mon Sep 17 00:00:00 2001 From: Srdjan Date: Tue, 3 Apr 2012 15:40:48 +1200 Subject: [PATCH] bug_3966: Update items on receive Use sane interface for items as when creating order. Changed AddItem() and ModItem() interface so now they return item record. AddItemFromMarc() looks for itemnumber, and calls ModItem() if one is found. --- C4/Acquisition.pm | 51 ++----- C4/Biblio.pm | 2 - C4/ImportBatch.pm | 4 +- C4/Items.pm | 25 ++-- acqui/addorder.pl | 5 +- acqui/addorderiso2709.pl | 4 +- acqui/finishreceive.pl | 115 +++++++++----- acqui/orderreceive.pl | 60 ++++---- cataloguing/additem.pl | 8 +- .../prog/en/modules/acqui/orderreceive.tt | 157 ++++++++++---------- .../prog/en/modules/services/itemrecorddisplay.tt | 3 +- t/db_dependent/lib/KohaTest.pm | 16 +-- .../lib/KohaTest/Acquisition/GetParcel.pm | 17 +-- .../lib/KohaTest/Acquisition/GetParcels.pm | 18 +-- t/db_dependent/lib/KohaTest/Biblio/ModBiblio.pm | 6 +- 15 files changed, 246 insertions(+), 245 deletions(-) diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 4fd5cc2..cd64368 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -1118,16 +1118,14 @@ sub GetCancelledOrders { =head3 ModReceiveOrder - &ModReceiveOrder($biblionumber, $ordernumber, $quantityreceived, $user, - $unitprice, $booksellerinvoicenumber, $biblioitemnumber, - $freight, $bookfund, $rrp); + &ModReceiveOrder($biblionumber, $ordernumber, $quantityreceived, $receiveditems); Updates an order, to reflect the fact that it was received, at least -in part. All arguments not mentioned below update the fields with the -same name in the aqorders table of the Koha database. +in part. If a partial order is received, splits the order into two. The received -portion must have a booksellerinvoicenumber. +portion must have a booksellerinvoicenumber. If $receiveditems are supplied, +the rest of the items will be moved to the new order. Updates the order with bibilionumber C<$biblionumber> and ordernumber C<$ordernumber>. @@ -1136,13 +1134,9 @@ C<$ordernumber>. sub ModReceiveOrder { - my ( - $biblionumber, $ordernumber, $quantrec, $user, $cost, - $invoiceno, $freight, $rrp, $budget_id, $datereceived - ) - = @_; + my ( $biblionumber, $ordernumber, $quantrec, $receiveditems ) = @_; my $dbh = C4::Context->dbh; - $datereceived = C4::Dates->output('iso') unless $datereceived; + my $suggestionid = GetSuggestionFromBiblionumber( $dbh, $biblionumber ); if ($suggestionid) { ModSuggestion( {suggestionid=>$suggestionid, @@ -1160,36 +1154,23 @@ sub ModReceiveOrder { $sth->finish(); if ( $order->{quantity} > $quantrec ) { - $sth=$dbh->prepare(" - UPDATE aqorders - SET quantityreceived=? - , datereceived=? - , booksellerinvoicenumber=? - , unitprice=? - , freight=? - , rrp=? - , quantity=? - WHERE biblionumber=? AND ordernumber=?"); - - $sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$quantrec,$biblionumber,$ordernumber); - $sth->finish; - # create a new order for the remaining items, and set its bookfund. foreach my $orderkey ( "linenumber", "allocation" ) { delete($order->{'$orderkey'}); } $order->{'quantity'} -= $quantrec; $order->{'quantityreceived'} = 0; - my $newOrder = NewOrder($order); -} else { - $sth=$dbh->prepare("update aqorders - set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?, - unitprice=?,freight=?,rrp=? - where biblionumber=? and ordernumber=?"); - $sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber); - $sth->finish; + my (undef, $newOrder) = NewOrder($order); + + if ($receiveditems && @$receiveditems) { + my $sql = " + UPDATE aqorders_items + SET ordernumber = ? + WHERE ordernumber = ? + AND itemnumber NOT IN (".join(",", map "?", @$receiveditems).")"; + $dbh->do($sql, undef, $newOrder, $ordernumber, @$receiveditems); + } } - return $datereceived; } #------------------------------------------------------------# diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 56cd94e..8ba2807 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -2603,8 +2603,6 @@ sub TransformMarcToKohaOneField { } -#" - # # true ModZebra commented until indexdata fixes zebraDB crashes (it seems they occur on multiple updates # at the same time diff --git a/C4/ImportBatch.pm b/C4/ImportBatch.pm index 63cc60b..cc054ad 100644 --- a/C4/ImportBatch.pm +++ b/C4/ImportBatch.pm @@ -547,10 +547,10 @@ sub BatchCommitItems { $updsth->execute(); $num_items_errored++; } else { - my ($item_biblionumber, $biblioitemnumber, $itemnumber) = AddItemFromMarc($item_marc, $biblionumber); + my $item = AddItemFromMarc($item_marc, $biblionumber); my $updsth = $dbh->prepare("UPDATE import_items SET status = ?, itemnumber = ? WHERE import_items_id = ?"); $updsth->bind_param(1, 'imported'); - $updsth->bind_param(2, $itemnumber); + $updsth->bind_param(2, $item->{itemnumber}); $updsth->bind_param(3, $row->{'import_items_id'}); $updsth->execute(); $updsth->finish(); diff --git a/C4/Items.pm b/C4/Items.pm index 0b2f99b..0f01492 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -195,11 +195,11 @@ sub CartToShelf { =head2 AddItemFromMarc - my ($biblionumber, $biblioitemnumber, $itemnumber) - = AddItemFromMarc($source_item_marc, $biblionumber); + my $item = AddItemFromMarc($source_item_marc, $biblionumber); Given a MARC::Record object containing an embedded item -record and a biblionumber, create a new item record. +record and a biblionumber, create a new item record or update +existing one. =cut @@ -215,13 +215,15 @@ sub AddItemFromMarc { $localitemmarc->append_fields($source_item_marc->field($itemtag)); my $item = &TransformMarcToKoha( $dbh, $localitemmarc, $frameworkcode ,'items'); my $unlinked_item_subfields = _get_unlinked_item_subfields($localitemmarc, $frameworkcode); + if (my $itemnumber = $item->{itemnumber}) { + return ModItem($item, $biblionumber, $itemnumber, $dbh, $frameworkcode, $unlinked_item_subfields); + } return AddItem($item, $biblionumber, $dbh, $frameworkcode, $unlinked_item_subfields); } =head2 AddItem - my ($biblionumber, $biblioitemnumber, $itemnumber) - = AddItem($item, $biblionumber[, $dbh, $frameworkcode, $unlinked_item_subfields]); + my $item = AddItem($item, $biblionumber[, $dbh, $frameworkcode, $unlinked_item_subfields]); Given a hash containing item column names as keys, create a new Koha item record. @@ -273,7 +275,7 @@ sub AddItem { logaction("CATALOGUING", "ADD", $itemnumber, "item") if C4::Context->preference("CataloguingLog"); - return ($item->{biblionumber}, $item->{biblioitemnumber}, $itemnumber); + return $item; } =head2 AddItemBatchFromMarc @@ -455,6 +457,7 @@ sub ModItemFromMarc { $item->{$item_field} = $default_values_for_mod_from_marc{$item_field} unless (exists $item->{$item_field}); } my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode ); + $itemnumber ||= $item->{itemnumber}; ModItem($item, $biblionumber, $itemnumber, $dbh, $frameworkcode, $unlinked_item_subfields); return $item; @@ -462,7 +465,7 @@ sub ModItemFromMarc { =head2 ModItem - ModItem({ column => $newvalue }, $biblionumber, $itemnumber); + my $item = ModItem({ column => $newvalue }, $biblionumber, $itemnumber); Change one or more columns in an item record and update the MARC representation of the item. @@ -525,6 +528,8 @@ sub ModItem { ModZebra( $biblionumber, "specialUpdate", "biblioserver", undef, undef ); logaction("CATALOGUING", "MODIFY", $itemnumber, Dumper($item)) if C4::Context->preference("CataloguingLog"); + + return $item; } =head2 ModItemTransfer @@ -2540,7 +2545,7 @@ sub _find_value { =head2 PrepareItemrecordDisplay - PrepareItemrecordDisplay($itemrecord,$bibnum,$itemumber,$frameworkcode); + PrepareItemrecordDisplay(bibnum,$itemumber,$itemrecord,$$frameworkcode); Returns a hash with all the fields for Display a given item data in a template @@ -2718,14 +2723,14 @@ sub PrepareItemrecordDisplay { my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, undef ); my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, undef ); $subfield_data{random} = int(rand(1000000)); # why do we need 2 different randoms? - $subfield_data{marc_value} = qq[ ... $javascript]; } else { warn "Plugin Failed: $plugin"; - $subfield_data{marc_value} = qq(); # supply default input form + $subfield_data{marc_value} = qq(); # supply default input form } } elsif ( $tag eq '' ) { # it's an hidden field diff --git a/acqui/addorder.pl b/acqui/addorder.pl index 279084b..e977c23 100755 --- a/acqui/addorder.pl +++ b/acqui/addorder.pl @@ -262,9 +262,8 @@ if ( $orderinfo->{quantity} ne '0' ) { $itemhash{$item}->{'indicator'}, 'ITEM'); my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); - my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$$orderinfo{biblionumber}); - NewOrderItem($itemnumber, $$orderinfo{ordernumber}); - + my $item = AddItemFromMarc($record,$$orderinfo{biblionumber}); + NewOrderItem($item->{itemnumber}, $$orderinfo{ordernumber}); } } diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl index 8d9c0e3..ef17469 100755 --- a/acqui/addorderiso2709.pl +++ b/acqui/addorderiso2709.pl @@ -259,8 +259,8 @@ if ($op eq ""){ my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values, \@ind_tag, \@indicator ); my $record = MARC::Record::new_from_xml( $xml, 'UTF-8' ); for (my $qtyloop=1;$qtyloop <=$quantity;$qtyloop++) { - my ( $biblionumber, $bibitemnum, $itemnumber ) = AddItemFromMarc( $record, $biblionumber ); - NewOrderItem( $itemnumber, $ordernumber ); + my $item = AddItemFromMarc( $record, $biblionumber ); + NewOrderItem( $item->{itemnumber}, $ordernumber ); } } else { SetImportRecordStatus( $biblio->{'import_record_id'}, 'imported' ); diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index d09a40a..651903b 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -26,10 +26,10 @@ use CGI; use C4::Auth; use C4::Output; use C4::Context; +use C4::Dates; use C4::Acquisition; use C4::Biblio; use C4::Items; -use C4::Search; use List::MoreUtils qw/any/; my $input=new CGI; @@ -46,57 +46,89 @@ my $quantityrec=$input->param('quantityrec'); my $quantity=$input->param('quantity'); my $unitprice=$input->param('cost'); my $invoiceno=$input->param('invoice'); -my $datereceived=$input->param('datereceived'); +my $datereceived=$input->param('datereceived') || C4::Dates->output('iso'); my $replacement=$input->param('rrp'); my $gst=$input->param('gst'); my $freight=$input->param('freight'); my $booksellerid = $input->param('booksellerid'); my $cnt=0; -my $error_url_str; +my $error_url_str = ''; my $ecost = $input->param('ecost'); my $note = $input->param("note"); +my $order = GetOrder($ordernumber); +$order->{booksellerinvoicenumber} = $invoiceno; +$order->{datereceived} = $datereceived; +$order->{freight} = $freight; +$order->{quantity} = $quantity; +$order->{quantityreceived} = $quantityrec; +$order->{notes} = $note; +$order->{rrp} = $replacement; +$order->{ecost} = $ecost; +$order->{unitprice} = $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'); - my @serials = $input->param('serial'); - my @itemid = $input->param('itemid'); - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); - #Rebuilding ALL the data for items into a hash - # parting them on $itemid. - my %itemhash; - my $countdistinct; - my $range=scalar(@itemid); - for (my $i=0; $i<$range; $i++){ - unless ($itemhash{$itemid[$i]}){ - $countdistinct++; - } - push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i]; - push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i]; - push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i]; - push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i]; - push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i]; - } - 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'},'ITEM'); - my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); - my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber); - NewOrderItem($itemnumber, $ordernumber); - } + +# now, add or update items if applicable +my @tags = $input->param('tag'); +my @subfields = $input->param('subfield'); +my @field_values = $input->param('field_value'); +my @serials = $input->param('serial'); +my @itemid = $input->param('itemid'); +my @ind_tag = $input->param('ind_tag'); +my @indicator = $input->param('indicator'); +my @itemnumber = $input->param('itemnumber'); +#Rebuilding ALL the data for items into a hash +# parting them on $itemid. +# XXX this is all too flakey. HTML spec says explicitly that input order is arbitrary, yet we +# depend on the order for multiple items. This whole thing should be rewritten. +my %itemhash; +my $countdistinct = 0; +my $range=scalar(@itemid); +for (my $i=0; $i<$range; $i++){ + unless ($itemhash{$itemid[$i]}){ + $itemhash{$itemid[$i]}->{'itemnumber'} = $itemnumber[$countdistinct]; + $countdistinct++; + } + push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i]; + push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i]; + push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i]; + push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i]; + push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i]; +} +my $error; +my %itemnumbers = map { $_ => 1 } GetItemnumbersFromOrder($ordernumber); +my @received; +foreach my $id (keys %itemhash){ + my $itemnumber = $itemhash{$id}->{'itemnumber'}; + my $xml = TransformHtmlToXml( $itemhash{$id}->{'tags'}, + $itemhash{$id}->{'subfields'}, + $itemhash{$id}->{'field_values'}, + $itemhash{$id}->{'ind_tag'}, + $itemhash{$id}->{'indicator'},'ITEM'); + my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); + my $item; + if ($itemnumber) { + $item = ModItemFromMarc($record,$biblionumber, $itemnumber); + } else { + $item = AddItemFromMarc($record,$biblionumber); + } + if ($item) { + $itemnumber = $item->{itemnumber}; + push @received, $itemnumber; + NewOrderItem($itemnumber, $ordernumber) unless $itemnumbers{$itemnumber}; + } else { + $error++; } - +} + +if ($error) { + $error_url_str = "&error=Datbase+write+error"; +} +else { # save the quantity received. - $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived); + ModReceiveOrder($biblionumber,$ordernumber, $quantityrec, \@received); } update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber ); @@ -116,3 +148,4 @@ sub update_item { replacementpricedate => $datereceived, }, $biblionumber, $itemnumber ); } + diff --git a/acqui/orderreceive.pl b/acqui/orderreceive.pl index 2b59698..46783e0d 100755 --- a/acqui/orderreceive.pl +++ b/acqui/orderreceive.pl @@ -87,21 +87,13 @@ my $search = $input->param('receive'); my $invoice = $input->param('invoice'); my $freight = $input->param('freight'); my $datereceived = $input->param('datereceived'); - - $datereceived = $datereceived ? C4::Dates->new($datereceived, 'iso') : C4::Dates->new(); my $bookseller = GetBookSellerFromId($booksellerid); my $input_gst = ($input->param('gst') eq '' ? undef : $input->param('gst')); my $gst= $input_gst // $bookseller->{gstrate} // C4::Context->preference("gist") // 0; my $results = SearchOrder($ordernumber,$search); - - my $count = scalar @$results; -my $order = GetOrder($ordernumber); - - -my $date = @$results[0]->{'entrydate'}; my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -116,7 +108,14 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( # prepare the form for receiving if ( $count == 1 ) { - if (C4::Context->preference('AcqCreateItem') eq 'receiving') { + my $order = GetOrder($results->[0]->{ordernumber}); + my $biblionumber = $order->{biblionumber}; + + my @itemnumbers = GetItemnumbersFromOrder($ordernumber); + $template->param(items => \@itemnumbers); + + my $AcqCreateItem = C4::Context->preference('AcqCreateItem'); + if ($AcqCreateItem eq 'receiving' || $AcqCreateItem eq 'ordering') { # Check if ACQ framework exists my $marc = GetMarcStructure(1, 'ACQ'); unless($marc) { @@ -127,12 +126,9 @@ if ( $count == 1 ) { UniqueItemFields => C4::Context->preference('UniqueItemFields'), ); } - - if ( @$results[0]->{'quantityreceived'} == 0 ) { - @$results[0]->{'quantityreceived'} = ''; - } - if ( @$results[0]->{'unitprice'} == 0 ) { - @$results[0]->{'unitprice'} = ''; + + if ( $order->{'unitprice'} == 0 ) { + $order->{'unitprice'} = ''; } my $suggestion = GetSuggestionInfoFromBiblionumber(@$results[0]->{'biblionumber'}); @@ -144,26 +140,26 @@ if ( $count == 1 ) { $template->param( count => 1, - biblionumber => @$results[0]->{'biblionumber'}, - ordernumber => @$results[0]->{'ordernumber'}, - biblioitemnumber => @$results[0]->{'biblioitemnumber'}, - booksellerid => @$results[0]->{'booksellerid'}, + biblionumber => $biblionumber, + ordernumber => $order->{'ordernumber'}, + biblioitemnumber => $order->{'biblioitemnumber'}, + booksellerid => $booksellerid, freight => $freight, gst => $gst, name => $bookseller->{'name'}, - date => format_date($date), - title => @$results[0]->{'title'}, - author => @$results[0]->{'author'}, - copyrightdate => @$results[0]->{'copyrightdate'}, - isbn => @$results[0]->{'isbn'}, - seriestitle => @$results[0]->{'seriestitle'}, - bookfund => $budget->{budget_name}, - quantity => @$results[0]->{'quantity'}, - quantityreceivedplus1 => @$results[0]->{'quantityreceived'} + 1, - quantityreceived => @$results[0]->{'quantityreceived'}, - rrp => @$results[0]->{'rrp'}, - ecost => @$results[0]->{'ecost'}, - unitprice => @$results[0]->{'unitprice'}, + date => format_date($order->{'entrydate'}), + title => $order->{'title'}, + author => $order->{'author'}, + copyrightdate => $order->{'copyrightdate'}, + isbn => $order->{'isbn'}, + seriestitle => $order->{'seriestitle'}, + bookfund => $order->{'bookfundid'}, + quantity => $order->{'quantity'}, + quantityreceived => scalar(@itemnumbers), + origquantityrec => $order->{'quantityreceived'}, + rrp => $order->{'rrp'}, + ecost => $order->{'ecost'}, + unitprice => $order->{'unitprice'}, memberfirstname => $member->{firstname} || "", membersurname => $member->{surname} || "", invoice => $invoice, diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 9c8120e..c6a9b3f 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -347,8 +347,8 @@ if ($op eq "additem") { push @errors,"barcode_not_unique" if($exist_itemnumber); # if barcode exists, don't create, but report The problem. unless ($exist_itemnumber) { - my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = AddItemFromMarc($record,$biblionumber); - set_item_default_location($oldbibitemnum); + my $item = AddItemFromMarc($record,$biblionumber); + set_item_default_location($item->{biblioitemnumber}); } $nextop = "additem"; if ($exist_itemnumber) { @@ -415,8 +415,8 @@ if ($op eq "additem") { # Adding the item if (!$exist_itemnumber) { - my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = AddItemFromMarc($record,$biblionumber); - set_item_default_location($oldbibitemnum); + my $item = AddItemFromMarc($record,$biblionumber); + set_item_default_location($item->{biblioitemnumber}); # We count the item only if it was really added # That way, all items are added, even if there was some already existing barcodes diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt index bb706ec..b8cfca5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt @@ -6,7 +6,6 @@ + [% itemid = itemid + 1 %] + [% END %] + [% END %] + + -
- Item - [% IF ( NoACQframework ) %] -

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

- [% END %] -
-
- [% END %][%# IF (AcqCreateItemReceiving) %] @@ -139,42 +170,16 @@
Accounting details -
    -
  1. [% datereceived %]
  2. -
  3. [% bookfund %]
  4. -
  5. [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]
  6. -
  7. - [% IF ( edit ) %] - - [% ELSE %] - - [% END %] +
      +
    1. [% datereceived %]
    2. +
    3. [% bookfund %]
    4. +
    5. [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]
    6. +
    7. +
    8. - [% IF (AcqCreateItemReceiving) %] - - [% ELSE %] - [% IF ( quantityreceived ) %] - [% IF ( edit ) %] - - - [% ELSE %] - [% IF ( items ) %] - - [% ELSE %] - - [% END %] - - [% END %] - [% ELSE %] - [% IF ( items ) %] - - [% ELSE %] - - [% END %] - - [% END %] - [% END %][%# IF (AcqCreateItemReceiving) %] + +
    9. diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/services/itemrecorddisplay.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/services/itemrecorddisplay.tt index 6790b3d..1b92907 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/services/itemrecorddisplay.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/services/itemrecorddisplay.tt @@ -13,7 +13,7 @@ [% END %] [% iteminfo.marc_value %] - + @@ -22,3 +22,4 @@ [% END %]
    + diff --git a/t/db_dependent/lib/KohaTest.pm b/t/db_dependent/lib/KohaTest.pm index d8cf495..c632740 100644 --- a/t/db_dependent/lib/KohaTest.pm +++ b/t/db_dependent/lib/KohaTest.pm @@ -572,16 +572,12 @@ sub add_biblios { ok( $biblionumber, "the biblionumber is $biblionumber" ); ok( $biblioitemnumber, "the biblioitemnumber is $biblioitemnumber" ); if ( $param{'add_items'} ) { - # my @iteminfo = AddItem( {}, $biblionumber ); - my @iteminfo = AddItemFromMarc( $marcrecord, $biblionumber ); - is( $iteminfo[0], $biblionumber, "biblionumber is $biblionumber" ); - is( $iteminfo[1], $biblioitemnumber, "biblioitemnumber is $biblioitemnumber" ); - ok( $iteminfo[2], "itemnumber is $iteminfo[2]" ); - push @{ $self->{'items'} }, - { biblionumber => $iteminfo[0], - biblioitemnumber => $iteminfo[1], - itemnumber => $iteminfo[2], - }; + # my $item = AddItem( {}, $biblionumber ); + my $item = AddItemFromMarc( $marcrecord, $biblionumber ); + is( $item->{biblionumber}, "biblionumber is $biblionumber" ); + is( $item->{biblioitemnumber}, "biblioitemnumber is $biblioitemnumber" ); + ok( $item->{itemnumber}, "itemnumber is $item->{itemnumber}" ); + push @{ $self->{'items'} }, $item; } push @{$self->{'biblios'}}, $biblionumber; } diff --git a/t/db_dependent/lib/KohaTest/Acquisition/GetParcel.pm b/t/db_dependent/lib/KohaTest/Acquisition/GetParcel.pm index c26e5f2..b42ea9c 100644 --- a/t/db_dependent/lib/KohaTest/Acquisition/GetParcel.pm +++ b/t/db_dependent/lib/KohaTest/Acquisition/GetParcel.pm @@ -43,18 +43,11 @@ sub one_parcel : Test( 17 ) { ok( $basketno, "my basket number is $basketno" ); ok( $ordernumber, "my order number is $ordernumber" ); - my $datereceived = ModReceiveOrder( $self->{'biblios'}[0], # biblionumber - $ordernumber, # $ordernumber, - undef, # $quantrec, - undef, # $user, - undef, # $cost, - $invoice, # $invoiceno, - undef, # $freight, - undef, # $rrp, - $self->{'bookfundid'}, # $bookfund, - $today, # $datereceived - ); - is( $datereceived, $today, "the parcel was received on $datereceived" ); + ModReceiveOrder( $self->{'biblios'}[0], # biblionumber + $ordernumber, # $ordernumber, + 1, # $quantrec, + ); + pass( "the parcel was received" ); my @parcel = GetParcel( $self->{'booksellerid'}, $invoice, $today ); is( scalar @parcel, 1, 'we found one (1) parcel.' ) diff --git a/t/db_dependent/lib/KohaTest/Acquisition/GetParcels.pm b/t/db_dependent/lib/KohaTest/Acquisition/GetParcels.pm index fd3ad0f..b14095f 100644 --- a/t/db_dependent/lib/KohaTest/Acquisition/GetParcels.pm +++ b/t/db_dependent/lib/KohaTest/Acquisition/GetParcels.pm @@ -271,18 +271,12 @@ sub create_order { my ( $basketno, $ordernumber ) = $self->create_new_basket( %param ); - my $datereceived = ModReceiveOrder( $self->{'biblios'}[0], # biblionumber - $ordernumber, # $ordernumber, - undef, # $quantrec, - undef, # $user, - undef, # $cost, - $param{'invoice'}, # $invoiceno, - undef, # $freight, - undef, # $rrp, - $self->{'bookfundid'}, # $bookfund, - $param{'date'}, # $datereceived - ); - is( $datereceived, $param{'date'}, "the parcel was received on $datereceived" ); + ModReceiveOrder( $self->{'biblios'}[0], # biblionumber + $ordernumber, # $ordernumber, + 1, # $quantrec, + ); + # XXX Needs proper tests for partial receiving + pass( "the parcel was received" ); } diff --git a/t/db_dependent/lib/KohaTest/Biblio/ModBiblio.pm b/t/db_dependent/lib/KohaTest/Biblio/ModBiblio.pm index 5b29ea8..8a83268 100644 --- a/t/db_dependent/lib/KohaTest/Biblio/ModBiblio.pm +++ b/t/db_dependent/lib/KohaTest/Biblio/ModBiblio.pm @@ -31,10 +31,10 @@ sub add_bib_to_modify : Test( startup => 3 ) { $self->{'bib_to_modify'} = $bibnum; # add an item - my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum); + my $item = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum); - cmp_ok($item_bibnum, '==', $bibnum, "new item is linked to correct biblionumber"); - cmp_ok($item_bibitemnum, '==', $bibitemnum, "new item is linked to correct biblioitemnumber"); + cmp_ok($item->{biblionumber}, '==', $bibnum, "new item is linked to correct biblionumber"); + cmp_ok($item->{biblioitemnumber}, '==', $bibitemnum, "new item is linked to correct biblioitemnumber"); $self->reindex_marc(); -- 1.7.5.4