View | Details | Raw Unified | Return to bug 3966
Collapse All | Expand All

(-)a/C4/Acquisition.pm (-35 / +16 lines)
Lines 1118-1133 sub GetCancelledOrders { Link Here
1118
1118
1119
=head3 ModReceiveOrder
1119
=head3 ModReceiveOrder
1120
1120
1121
  &ModReceiveOrder($biblionumber, $ordernumber, $quantityreceived, $user,
1121
  &ModReceiveOrder($biblionumber, $ordernumber, $quantityreceived, $receiveditems);
1122
    $unitprice, $booksellerinvoicenumber, $biblioitemnumber,
1123
    $freight, $bookfund, $rrp);
1124
1122
1125
Updates an order, to reflect the fact that it was received, at least
1123
Updates an order, to reflect the fact that it was received, at least
1126
in part. All arguments not mentioned below update the fields with the
1124
in part.
1127
same name in the aqorders table of the Koha database.
1128
1125
1129
If a partial order is received, splits the order into two.  The received
1126
If a partial order is received, splits the order into two.  The received
1130
portion must have a booksellerinvoicenumber.
1127
portion must have a booksellerinvoicenumber. If $receiveditems are supplied,
1128
the rest of the items will be moved to the new order.
1131
1129
1132
Updates the order with bibilionumber C<$biblionumber> and ordernumber
1130
Updates the order with bibilionumber C<$biblionumber> and ordernumber
1133
C<$ordernumber>.
1131
C<$ordernumber>.
Lines 1136-1148 C<$ordernumber>. Link Here
1136
1134
1137
1135
1138
sub ModReceiveOrder {
1136
sub ModReceiveOrder {
1139
    my (
1137
    my ( $biblionumber, $ordernumber,  $quantrec, $receiveditems ) = @_;
1140
        $biblionumber,    $ordernumber,  $quantrec, $user, $cost,
1141
        $invoiceno, $freight, $rrp, $budget_id, $datereceived
1142
    )
1143
    = @_;
1144
    my $dbh = C4::Context->dbh;
1138
    my $dbh = C4::Context->dbh;
1145
    $datereceived = C4::Dates->output('iso') unless $datereceived;
1139
1146
    my $suggestionid = GetSuggestionFromBiblionumber( $dbh, $biblionumber );
1140
    my $suggestionid = GetSuggestionFromBiblionumber( $dbh, $biblionumber );
1147
    if ($suggestionid) {
1141
    if ($suggestionid) {
1148
        ModSuggestion( {suggestionid=>$suggestionid,
1142
        ModSuggestion( {suggestionid=>$suggestionid,
Lines 1160-1195 sub ModReceiveOrder { Link Here
1160
    $sth->finish();
1154
    $sth->finish();
1161
1155
1162
    if ( $order->{quantity} > $quantrec ) {
1156
    if ( $order->{quantity} > $quantrec ) {
1163
        $sth=$dbh->prepare("
1164
            UPDATE aqorders
1165
            SET quantityreceived=?
1166
                , datereceived=?
1167
                , booksellerinvoicenumber=?
1168
                , unitprice=?
1169
                , freight=?
1170
                , rrp=?
1171
                , quantity=?
1172
            WHERE biblionumber=? AND ordernumber=?");
1173
1174
        $sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$quantrec,$biblionumber,$ordernumber);
1175
        $sth->finish;
1176
1177
        # create a new order for the remaining items, and set its bookfund.
1157
        # create a new order for the remaining items, and set its bookfund.
1178
        foreach my $orderkey ( "linenumber", "allocation" ) {
1158
        foreach my $orderkey ( "linenumber", "allocation" ) {
1179
            delete($order->{'$orderkey'});
1159
            delete($order->{'$orderkey'});
1180
        }
1160
        }
1181
        $order->{'quantity'} -= $quantrec;
1161
        $order->{'quantity'} -= $quantrec;
1182
        $order->{'quantityreceived'} = 0;
1162
        $order->{'quantityreceived'} = 0;
1183
        my $newOrder = NewOrder($order);
1163
        my (undef, $newOrder) = NewOrder($order);
1184
} else {
1164
1185
        $sth=$dbh->prepare("update aqorders
1165
        if ($receiveditems && @$receiveditems) {
1186
                            set quantityreceived=?,datereceived=?,booksellerinvoicenumber=?,
1166
            my $sql = "
1187
                                unitprice=?,freight=?,rrp=?
1167
                UPDATE aqorders_items
1188
                            where biblionumber=? and ordernumber=?");
1168
                SET ordernumber = ?
1189
        $sth->execute($quantrec,$datereceived,$invoiceno,$cost,$freight,$rrp,$biblionumber,$ordernumber);
1169
                WHERE ordernumber = ?
1190
        $sth->finish;
1170
                AND itemnumber NOT IN (".join(",", map "?", @$receiveditems).")";
1171
            $dbh->do($sql, undef, $newOrder, $ordernumber, @$receiveditems);
1172
        }
1191
    }
1173
    }
1192
    return $datereceived;
1193
}
1174
}
1194
#------------------------------------------------------------#
1175
#------------------------------------------------------------#
1195
1176
(-)a/C4/Biblio.pm (-2 lines)
Lines 2603-2610 sub TransformMarcToKohaOneField { Link Here
2603
}
2603
}
2604
2604
2605
2605
2606
#"
2607
2608
#
2606
#
2609
# true ModZebra commented until indexdata fixes zebraDB crashes (it seems they occur on multiple updates
2607
# true ModZebra commented until indexdata fixes zebraDB crashes (it seems they occur on multiple updates
2610
# at the same time
2608
# at the same time
(-)a/C4/ImportBatch.pm (-2 / +2 lines)
Lines 547-556 sub BatchCommitItems { Link Here
547
            $updsth->execute();
547
            $updsth->execute();
548
            $num_items_errored++;
548
            $num_items_errored++;
549
        } else {
549
        } else {
550
            my ($item_biblionumber, $biblioitemnumber, $itemnumber) = AddItemFromMarc($item_marc, $biblionumber);
550
            my $item = AddItemFromMarc($item_marc, $biblionumber);
551
            my $updsth = $dbh->prepare("UPDATE import_items SET status = ?, itemnumber = ? WHERE import_items_id = ?");
551
            my $updsth = $dbh->prepare("UPDATE import_items SET status = ?, itemnumber = ? WHERE import_items_id = ?");
552
            $updsth->bind_param(1, 'imported');
552
            $updsth->bind_param(1, 'imported');
553
            $updsth->bind_param(2, $itemnumber);
553
            $updsth->bind_param(2, $item->{itemnumber});
554
            $updsth->bind_param(3, $row->{'import_items_id'});
554
            $updsth->bind_param(3, $row->{'import_items_id'});
555
            $updsth->execute();
555
            $updsth->execute();
556
            $updsth->finish();
556
            $updsth->finish();
(-)a/C4/Items.pm (-10 / +15 lines)
Lines 195-205 sub CartToShelf { Link Here
195
195
196
=head2 AddItemFromMarc
196
=head2 AddItemFromMarc
197
197
198
  my ($biblionumber, $biblioitemnumber, $itemnumber) 
198
  my $item = AddItemFromMarc($source_item_marc, $biblionumber);
199
      = AddItemFromMarc($source_item_marc, $biblionumber);
200
199
201
Given a MARC::Record object containing an embedded item
200
Given a MARC::Record object containing an embedded item
202
record and a biblionumber, create a new item record.
201
record and a biblionumber, create a new item record or update
202
existing one.
203
203
204
=cut
204
=cut
205
205
Lines 215-227 sub AddItemFromMarc { Link Here
215
	$localitemmarc->append_fields($source_item_marc->field($itemtag));
215
	$localitemmarc->append_fields($source_item_marc->field($itemtag));
216
    my $item = &TransformMarcToKoha( $dbh, $localitemmarc, $frameworkcode ,'items');
216
    my $item = &TransformMarcToKoha( $dbh, $localitemmarc, $frameworkcode ,'items');
217
    my $unlinked_item_subfields = _get_unlinked_item_subfields($localitemmarc, $frameworkcode);
217
    my $unlinked_item_subfields = _get_unlinked_item_subfields($localitemmarc, $frameworkcode);
218
    if (my $itemnumber = $item->{itemnumber}) {
219
        return ModItem($item, $biblionumber, $itemnumber, $dbh, $frameworkcode, $unlinked_item_subfields);
220
    }
218
    return AddItem($item, $biblionumber, $dbh, $frameworkcode, $unlinked_item_subfields);
221
    return AddItem($item, $biblionumber, $dbh, $frameworkcode, $unlinked_item_subfields);
219
}
222
}
220
223
221
=head2 AddItem
224
=head2 AddItem
222
225
223
  my ($biblionumber, $biblioitemnumber, $itemnumber) 
226
  my $item = AddItem($item, $biblionumber[, $dbh, $frameworkcode, $unlinked_item_subfields]);
224
      = AddItem($item, $biblionumber[, $dbh, $frameworkcode, $unlinked_item_subfields]);
225
227
226
Given a hash containing item column names as keys,
228
Given a hash containing item column names as keys,
227
create a new Koha item record.
229
create a new Koha item record.
Lines 273-279 sub AddItem { Link Here
273
   
275
   
274
    logaction("CATALOGUING", "ADD", $itemnumber, "item") if C4::Context->preference("CataloguingLog");
276
    logaction("CATALOGUING", "ADD", $itemnumber, "item") if C4::Context->preference("CataloguingLog");
275
    
277
    
276
    return ($item->{biblionumber}, $item->{biblioitemnumber}, $itemnumber);
278
    return $item;
277
}
279
}
278
280
279
=head2 AddItemBatchFromMarc
281
=head2 AddItemBatchFromMarc
Lines 455-460 sub ModItemFromMarc { Link Here
455
        $item->{$item_field} = $default_values_for_mod_from_marc{$item_field} unless (exists $item->{$item_field});
457
        $item->{$item_field} = $default_values_for_mod_from_marc{$item_field} unless (exists $item->{$item_field});
456
    }
458
    }
457
    my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode );
459
    my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode );
460
    $itemnumber ||= $item->{itemnumber};
458
461
459
    ModItem($item, $biblionumber, $itemnumber, $dbh, $frameworkcode, $unlinked_item_subfields); 
462
    ModItem($item, $biblionumber, $itemnumber, $dbh, $frameworkcode, $unlinked_item_subfields); 
460
    return $item;
463
    return $item;
Lines 462-468 sub ModItemFromMarc { Link Here
462
465
463
=head2 ModItem
466
=head2 ModItem
464
467
465
  ModItem({ column => $newvalue }, $biblionumber, $itemnumber);
468
  my $item = ModItem({ column => $newvalue }, $biblionumber, $itemnumber);
466
469
467
Change one or more columns in an item record and update
470
Change one or more columns in an item record and update
468
the MARC representation of the item.
471
the MARC representation of the item.
Lines 525-530 sub ModItem { Link Here
525
    ModZebra( $biblionumber, "specialUpdate", "biblioserver", undef, undef );
528
    ModZebra( $biblionumber, "specialUpdate", "biblioserver", undef, undef );
526
529
527
    logaction("CATALOGUING", "MODIFY", $itemnumber, Dumper($item)) if C4::Context->preference("CataloguingLog");
530
    logaction("CATALOGUING", "MODIFY", $itemnumber, Dumper($item)) if C4::Context->preference("CataloguingLog");
531
532
    return $item;
528
}
533
}
529
534
530
=head2 ModItemTransfer
535
=head2 ModItemTransfer
Lines 2540-2546 sub _find_value { Link Here
2540
2545
2541
=head2 PrepareItemrecordDisplay
2546
=head2 PrepareItemrecordDisplay
2542
2547
2543
  PrepareItemrecordDisplay($itemrecord,$bibnum,$itemumber,$frameworkcode);
2548
  PrepareItemrecordDisplay(bibnum,$itemumber,$itemrecord,$$frameworkcode);
2544
2549
2545
Returns a hash with all the fields for Display a given item data in a template
2550
Returns a hash with all the fields for Display a given item data in a template
2546
2551
Lines 2718-2731 sub PrepareItemrecordDisplay { Link Here
2718
                            my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, undef );
2723
                            my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, undef );
2719
                            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, undef );
2724
                            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, undef );
2720
                            $subfield_data{random}     = int(rand(1000000));    # why do we need 2 different randoms?
2725
                            $subfield_data{random}     = int(rand(1000000));    # why do we need 2 different randoms?
2721
                            $subfield_data{marc_value} = qq[<input tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255"
2726
                            $subfield_data{marc_value} = qq[<input tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" value="$defaultvalue"
2722
                                onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
2727
                                onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
2723
                                 onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
2728
                                 onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
2724
                                <a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a>
2729
                                <a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a>
2725
                                $javascript];
2730
                                $javascript];
2726
                        } else {
2731
                        } else {
2727
                            warn "Plugin Failed: $plugin";
2732
                            warn "Plugin Failed: $plugin";
2728
                            $subfield_data{marc_value} = qq(<input tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" />); # supply default input form
2733
                            $subfield_data{marc_value} = qq(<input tabindex="1" id="$subfield_data{id}" name="field_value" class="input_marceditor" size="67" maxlength="255" value="$defaultvalue" />); # supply default input form
2729
                        }
2734
                        }
2730
                }
2735
                }
2731
                elsif ( $tag eq '' ) {       # it's an hidden field
2736
                elsif ( $tag eq '' ) {       # it's an hidden field
(-)a/acqui/addorder.pl (-3 / +2 lines)
Lines 262-270 if ( $orderinfo->{quantity} ne '0' ) { Link Here
262
                                    $itemhash{$item}->{'indicator'},
262
                                    $itemhash{$item}->{'indicator'},
263
                                    'ITEM');
263
                                    'ITEM');
264
            my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
264
            my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
265
            my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$$orderinfo{biblionumber});
265
            my $item = AddItemFromMarc($record,$$orderinfo{biblionumber});
266
            NewOrderItem($itemnumber, $$orderinfo{ordernumber});
266
            NewOrderItem($item->{itemnumber}, $$orderinfo{ordernumber});
267
268
        }
267
        }
269
    }
268
    }
270
269
(-)a/acqui/addorderiso2709.pl (-2 / +2 lines)
Lines 259-266 if ($op eq ""){ Link Here
259
            my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values, \@ind_tag, \@indicator );
259
            my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values, \@ind_tag, \@indicator );
260
            my $record = MARC::Record::new_from_xml( $xml, 'UTF-8' );
260
            my $record = MARC::Record::new_from_xml( $xml, 'UTF-8' );
261
            for (my $qtyloop=1;$qtyloop <=$quantity;$qtyloop++) {
261
            for (my $qtyloop=1;$qtyloop <=$quantity;$qtyloop++) {
262
                my ( $biblionumber, $bibitemnum, $itemnumber ) = AddItemFromMarc( $record, $biblionumber );
262
                my $item = AddItemFromMarc( $record, $biblionumber );
263
                NewOrderItem( $itemnumber, $ordernumber );
263
                NewOrderItem( $item->{itemnumber}, $ordernumber );
264
            }
264
            }
265
        } else {
265
        } else {
266
            SetImportRecordStatus( $biblio->{'import_record_id'}, 'imported' );
266
            SetImportRecordStatus( $biblio->{'import_record_id'}, 'imported' );
(-)a/acqui/finishreceive.pl (-41 / +74 lines)
Lines 26-35 use CGI; Link Here
26
use C4::Auth;
26
use C4::Auth;
27
use C4::Output;
27
use C4::Output;
28
use C4::Context;
28
use C4::Context;
29
use C4::Dates;
29
use C4::Acquisition;
30
use C4::Acquisition;
30
use C4::Biblio;
31
use C4::Biblio;
31
use C4::Items;
32
use C4::Items;
32
use C4::Search;
33
use List::MoreUtils qw/any/;
33
use List::MoreUtils qw/any/;
34
34
35
my $input=new CGI;
35
my $input=new CGI;
Lines 46-102 my $quantityrec=$input->param('quantityrec'); Link Here
46
my $quantity=$input->param('quantity');
46
my $quantity=$input->param('quantity');
47
my $unitprice=$input->param('cost');
47
my $unitprice=$input->param('cost');
48
my $invoiceno=$input->param('invoice');
48
my $invoiceno=$input->param('invoice');
49
my $datereceived=$input->param('datereceived');
49
my $datereceived=$input->param('datereceived') || C4::Dates->output('iso');
50
my $replacement=$input->param('rrp');
50
my $replacement=$input->param('rrp');
51
my $gst=$input->param('gst');
51
my $gst=$input->param('gst');
52
my $freight=$input->param('freight');
52
my $freight=$input->param('freight');
53
my $booksellerid = $input->param('booksellerid');
53
my $booksellerid = $input->param('booksellerid');
54
my $cnt=0;
54
my $cnt=0;
55
my $error_url_str;
55
my $error_url_str = '';
56
my $ecost = $input->param('ecost');
56
my $ecost = $input->param('ecost');
57
my $note = $input->param("note");
57
my $note = $input->param("note");
58
58
59
my $order = GetOrder($ordernumber);
60
$order->{booksellerinvoicenumber} = $invoiceno;
61
$order->{datereceived} = $datereceived;
62
$order->{freight} = $freight;
63
$order->{quantity} = $quantity;
64
$order->{quantityreceived} = $quantityrec;
65
$order->{notes} = $note;
66
$order->{rrp} = $replacement;
67
$order->{ecost} = $ecost;
68
$order->{unitprice} = $unitprice;
69
ModOrder($order);
70
59
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME
71
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME
60
if ($quantityrec > $origquantityrec ) {
72
61
    # now, add items if applicable
73
# now, add or update items if applicable
62
    if (C4::Context->preference('AcqCreateItem') eq 'receiving') {
74
my @tags         = $input->param('tag');
63
75
my @subfields    = $input->param('subfield');
64
        my @tags         = $input->param('tag');
76
my @field_values = $input->param('field_value');
65
        my @subfields    = $input->param('subfield');
77
my @serials      = $input->param('serial');
66
        my @field_values = $input->param('field_value');
78
my @itemid       = $input->param('itemid');
67
        my @serials      = $input->param('serial');
79
my @ind_tag      = $input->param('ind_tag');
68
        my @itemid       = $input->param('itemid');
80
my @indicator    = $input->param('indicator');
69
        my @ind_tag      = $input->param('ind_tag');
81
my @itemnumber   = $input->param('itemnumber');
70
        my @indicator    = $input->param('indicator');
82
#Rebuilding ALL the data for items into a hash
71
        #Rebuilding ALL the data for items into a hash
83
# parting them on $itemid.
72
        # parting them on $itemid.
84
# XXX this is all too flakey. HTML spec says explicitly that input order is arbitrary, yet we
73
        my %itemhash;
85
# depend on the order for multiple items. This whole thing should be rewritten.
74
        my $countdistinct;
86
my %itemhash;
75
        my $range=scalar(@itemid);
87
my $countdistinct = 0;
76
        for (my $i=0; $i<$range; $i++){
88
my $range=scalar(@itemid);
77
            unless ($itemhash{$itemid[$i]}){
89
for (my $i=0; $i<$range; $i++){
78
            $countdistinct++;
90
    unless ($itemhash{$itemid[$i]}){
79
            }
91
        $itemhash{$itemid[$i]}->{'itemnumber'} = $itemnumber[$countdistinct];
80
            push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i];
92
        $countdistinct++;
81
            push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i];
93
    }
82
            push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i];
94
    push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i];
83
            push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i];
95
    push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i];
84
            push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i];
96
    push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i];
85
        }
97
    push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i];
86
        foreach my $item (keys %itemhash){
98
    push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i];
87
            my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'},
99
}
88
                                          $itemhash{$item}->{'subfields'},
100
my $error;
89
                                          $itemhash{$item}->{'field_values'},
101
my %itemnumbers = map { $_ => 1 } GetItemnumbersFromOrder($ordernumber);
90
                                          $itemhash{$item}->{'ind_tag'},
102
my @received;
91
                                          $itemhash{$item}->{'indicator'},'ITEM');
103
foreach my $id (keys %itemhash){
92
            my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
104
    my $itemnumber = $itemhash{$id}->{'itemnumber'};
93
            my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
105
    my $xml = TransformHtmlToXml( $itemhash{$id}->{'tags'},
94
            NewOrderItem($itemnumber, $ordernumber);
106
                                  $itemhash{$id}->{'subfields'},
95
        }
107
                                  $itemhash{$id}->{'field_values'},
108
                                  $itemhash{$id}->{'ind_tag'},
109
                                  $itemhash{$id}->{'indicator'},'ITEM');
110
    my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
111
    my $item;
112
    if ($itemnumber) {
113
        $item = ModItemFromMarc($record,$biblionumber, $itemnumber);
114
    } else {
115
        $item = AddItemFromMarc($record,$biblionumber);
116
    }
117
    if ($item) {
118
        $itemnumber = $item->{itemnumber};
119
        push @received, $itemnumber;
120
        NewOrderItem($itemnumber, $ordernumber) unless $itemnumbers{$itemnumber};
121
    } else {
122
        $error++;
96
    }
123
    }
97
    
124
}
125
126
if ($error) {
127
    $error_url_str = "&error=Datbase+write+error";
128
}
129
else {
98
    # save the quantity received.
130
    # save the quantity received.
99
    $datereceived = ModReceiveOrder($biblionumber,$ordernumber, $quantityrec ,$user,$unitprice,$invoiceno,$freight,$replacement,undef,$datereceived);
131
    ModReceiveOrder($biblionumber,$ordernumber, $quantityrec, \@received);
100
}
132
}
101
133
102
update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber );
134
update_item( $_ ) foreach GetItemnumbersFromOrder( $ordernumber );
Lines 116-118 sub update_item { Link Here
116
        replacementpricedate => $datereceived,
148
        replacementpricedate => $datereceived,
117
    }, $biblionumber, $itemnumber );
149
    }, $biblionumber, $itemnumber );
118
}
150
}
151
(-)a/acqui/orderreceive.pl (-32 / +28 lines)
Lines 87-107 my $search = $input->param('receive'); Link Here
87
my $invoice      = $input->param('invoice');
87
my $invoice      = $input->param('invoice');
88
my $freight      = $input->param('freight');
88
my $freight      = $input->param('freight');
89
my $datereceived = $input->param('datereceived');
89
my $datereceived = $input->param('datereceived');
90
91
92
$datereceived = $datereceived ? C4::Dates->new($datereceived, 'iso') : C4::Dates->new();
90
$datereceived = $datereceived ? C4::Dates->new($datereceived, 'iso') : C4::Dates->new();
93
91
94
my $bookseller = GetBookSellerFromId($booksellerid);
92
my $bookseller = GetBookSellerFromId($booksellerid);
95
my $input_gst = ($input->param('gst') eq '' ? undef : $input->param('gst'));
93
my $input_gst = ($input->param('gst') eq '' ? undef : $input->param('gst'));
96
my $gst= $input_gst // $bookseller->{gstrate} // C4::Context->preference("gist") // 0;
94
my $gst= $input_gst // $bookseller->{gstrate} // C4::Context->preference("gist") // 0;
97
my $results = SearchOrder($ordernumber,$search);
95
my $results = SearchOrder($ordernumber,$search);
98
99
100
my $count   = scalar @$results;
96
my $count   = scalar @$results;
101
my $order 	= GetOrder($ordernumber);
102
103
104
my $date = @$results[0]->{'entrydate'};
105
97
106
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
98
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
107
    {
99
    {
Lines 116-122 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
116
108
117
# prepare the form for receiving
109
# prepare the form for receiving
118
if ( $count == 1 ) {
110
if ( $count == 1 ) {
119
    if (C4::Context->preference('AcqCreateItem') eq 'receiving') {
111
    my $order 	= GetOrder($results->[0]->{ordernumber});
112
    my $biblionumber = $order->{biblionumber};
113
114
    my @itemnumbers = GetItemnumbersFromOrder($ordernumber);
115
    $template->param(items => \@itemnumbers);
116
117
    my $AcqCreateItem = C4::Context->preference('AcqCreateItem');
118
    if ($AcqCreateItem eq 'receiving' || $AcqCreateItem eq 'ordering') {
120
        # Check if ACQ framework exists
119
        # Check if ACQ framework exists
121
        my $marc = GetMarcStructure(1, 'ACQ');
120
        my $marc = GetMarcStructure(1, 'ACQ');
122
        unless($marc) {
121
        unless($marc) {
Lines 127-138 if ( $count == 1 ) { Link Here
127
            UniqueItemFields => C4::Context->preference('UniqueItemFields'),
126
            UniqueItemFields => C4::Context->preference('UniqueItemFields'),
128
        );
127
        );
129
    }
128
    }
130
129
        
131
    if ( @$results[0]->{'quantityreceived'} == 0 ) {
130
    if ( $order->{'unitprice'} == 0 ) {
132
        @$results[0]->{'quantityreceived'} = '';
131
        $order->{'unitprice'} = '';
133
    }
134
    if ( @$results[0]->{'unitprice'} == 0 ) {
135
        @$results[0]->{'unitprice'} = '';
136
    }
132
    }
137
133
138
    my $suggestion   = GetSuggestionInfoFromBiblionumber(@$results[0]->{'biblionumber'});
134
    my $suggestion   = GetSuggestionInfoFromBiblionumber(@$results[0]->{'biblionumber'});
Lines 144-169 if ( $count == 1 ) { Link Here
144
140
145
    $template->param(
141
    $template->param(
146
        count                 => 1,
142
        count                 => 1,
147
        biblionumber          => @$results[0]->{'biblionumber'},
143
        biblionumber          => $biblionumber,
148
        ordernumber           => @$results[0]->{'ordernumber'},
144
        ordernumber           => $order->{'ordernumber'},
149
        biblioitemnumber      => @$results[0]->{'biblioitemnumber'},
145
        biblioitemnumber      => $order->{'biblioitemnumber'},
150
        booksellerid            => @$results[0]->{'booksellerid'},
146
        booksellerid          => $booksellerid,
151
        freight               => $freight,
147
        freight               => $freight,
152
        gst                   => $gst,
148
        gst                   => $gst,
153
        name                  => $bookseller->{'name'},
149
        name                  => $bookseller->{'name'},
154
        date                  => format_date($date),
150
        date                  => format_date($order->{'entrydate'}),
155
        title                 => @$results[0]->{'title'},
151
        title                 => $order->{'title'},
156
        author                => @$results[0]->{'author'},
152
        author                => $order->{'author'},
157
        copyrightdate         => @$results[0]->{'copyrightdate'},
153
        copyrightdate         => $order->{'copyrightdate'},
158
        isbn                  => @$results[0]->{'isbn'},
154
        isbn                  => $order->{'isbn'},
159
        seriestitle           => @$results[0]->{'seriestitle'},
155
        seriestitle           => $order->{'seriestitle'},
160
        bookfund              => $budget->{budget_name},
156
        bookfund              => $order->{'bookfundid'},
161
        quantity              => @$results[0]->{'quantity'},
157
        quantity              => $order->{'quantity'},
162
        quantityreceivedplus1 => @$results[0]->{'quantityreceived'} + 1,
158
        quantityreceived      => scalar(@itemnumbers),
163
        quantityreceived      => @$results[0]->{'quantityreceived'},
159
        origquantityrec       => $order->{'quantityreceived'},
164
        rrp                   => @$results[0]->{'rrp'},
160
        rrp                   => $order->{'rrp'},
165
        ecost                 => @$results[0]->{'ecost'},
161
        ecost                 => $order->{'ecost'},
166
        unitprice             => @$results[0]->{'unitprice'},
162
        unitprice             => $order->{'unitprice'},
167
        memberfirstname       => $member->{firstname} || "",
163
        memberfirstname       => $member->{firstname} || "",
168
        membersurname         => $member->{surname} || "",
164
        membersurname         => $member->{surname} || "",
169
        invoice               => $invoice,
165
        invoice               => $invoice,
(-)a/cataloguing/additem.pl (-4 / +4 lines)
Lines 347-354 if ($op eq "additem") { Link Here
347
	push @errors,"barcode_not_unique" if($exist_itemnumber);
347
	push @errors,"barcode_not_unique" if($exist_itemnumber);
348
	# if barcode exists, don't create, but report The problem.
348
	# if barcode exists, don't create, but report The problem.
349
    unless ($exist_itemnumber) {
349
    unless ($exist_itemnumber) {
350
	    my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = AddItemFromMarc($record,$biblionumber);
350
	    my $item = AddItemFromMarc($record,$biblionumber);
351
        set_item_default_location($oldbibitemnum);
351
        set_item_default_location($item->{biblioitemnumber});
352
    }
352
    }
353
	$nextop = "additem";
353
	$nextop = "additem";
354
	if ($exist_itemnumber) {
354
	if ($exist_itemnumber) {
Lines 415-422 if ($op eq "additem") { Link Here
415
415
416
		# Adding the item
416
		# Adding the item
417
        if (!$exist_itemnumber) {
417
        if (!$exist_itemnumber) {
418
            my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = AddItemFromMarc($record,$biblionumber);
418
	        my $item = AddItemFromMarc($record,$biblionumber);
419
            set_item_default_location($oldbibitemnum);
419
            set_item_default_location($item->{biblioitemnumber});
420
420
421
            # We count the item only if it was really added
421
            # We count the item only if it was really added
422
            # That way, all items are added, even if there was some already existing barcodes
422
            # That way, all items are added, even if there was some already existing barcodes
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt (-76 / +81 lines)
Lines 6-12 Link Here
6
<script type="text/javascript">
6
<script type="text/javascript">
7
//<![CDATA[
7
//<![CDATA[
8
    function Check(form) {
8
    function Check(form) {
9
        [% IF (AcqCreateItemReceiving) %]
10
            // Remove last itemblock if it is not in items_list
9
            // Remove last itemblock if it is not in items_list
11
            var lastitemblock = $("#outeritemblock > div:last");
10
            var lastitemblock = $("#outeritemblock > div:last");
12
            var tobedeleted = true;
11
            var tobedeleted = true;
Lines 27-33 Link Here
27
                }
26
                }
28
                return false;
27
                return false;
29
            };
28
            };
30
        [% END %]
31
29
32
        return true;
30
        return true;
33
    }
31
    }
Lines 86-133 Link Here
86
        </fieldset>
84
        </fieldset>
87
    [% END %]
85
    [% END %]
88
86
89
    [% IF (AcqCreateItemReceiving) %]
87
    <div id="items_list" style="display:none">
90
        <div id="items_list" style="display:none">
88
        <p><b>Items list</b></p>
91
            <p><b>Items list</b></p>
89
        <div style="width:100%;overflow:auto;">
92
            <div style="width:100%;overflow:auto;">
90
            <table>
93
                <table>
91
                <thead>
94
                    <thead>
92
                    <tr>
95
                        <tr>
93
                        <th>&nbsp;</th>
96
                            <th>&nbsp;</th>
94
                        <th>&nbsp;</th>
97
                            <th>&nbsp;</th>
95
                        <th>Barcode</th>
98
                            <th>Barcode</th>
96
                        <th>Home branch</th>
99
                            <th>Home branch</th>
97
                        <th>Holding branch</th>
100
                            <th>Holding branch</th>
98
                        <th>Not for loan</th>
101
                            <th>Not for loan</th>
99
                        <th>Restricted</th>
102
                            <th>Restricted</th>
100
                        <th>Location</th>
103
                            <th>Location</th>
101
                        <th>Call number</th>
104
                            <th>Call number</th>
102
                        <th>Copy number</th>
105
                            <th>Copy number</th>
103
                        <th>Stock number</th>
106
                            <th>Stock number</th>
104
                        <th>Collection code</th>
107
                            <th>Collection code</th>
105
                        <th>Item type</th>
108
                            <th>Item type</th>
106
                        <th>Materials</th>
109
                            <th>Materials</th>
107
                        <th>Notes</th>
110
                            <th>Notes</th>
108
                    </tr>
111
                        </tr>
109
                </thead>
112
                    </thead>
110
                <tbody>
113
                    <tbody>
111
                </tbody>
114
                    </tbody>
112
            </table>
115
                </table>
116
            </div>
117
        </div>
113
        </div>
114
    </div>
115
116
    <fieldset class="rows" id="itemfieldset">
117
        <legend>Item</legend>
118
        [% IF ( NoACQframework ) %]
119
            <p class="required">
120
                No ACQ framework, using default. You should create a
121
                framework with code ACQ, the items framework would be
122
                used
123
            </p>
124
        [% END %]
125
        <div id="outeritemblock">
126
        [% IF ( items ) %]
127
            [% itemid = 1 %]
128
            [% FOREACH itemnumber IN items %]
129
            <div id="itemblock[% itemid %]" style="display:none"></div>
130
            <script type="text/javascript">
131
                $(document).ready(function() {
132
                    var unique_item_fields = 'barcode';
133
                    $.ajax({
134
                        url: "/cgi-bin/koha/services/itemrecorddisplay.pl",
135
                        dataType: 'html',
136
                        data: {
137
                            frameworkcode: 'ACQ',
138
                            biblionumber: [% biblionumber %],
139
                            itemnumber: [% itemnumber %]
140
                        },
141
                        success: function(data, textStatus, jqXHR) {
142
                            /* Create the item block */
143
                            var buttonPlus = '<a name="buttonPlus" style="cursor:pointer; margin:0 1em;" onclick="addItem(this,\'' + unique_item_fields + '\')">Update</a>';
144
                            var buttonClear = '<a name="buttonClear" style="cursor:pointer;" onclick="clearItemBlock(this)">' + (window.MSG_ADDITEM_JS_CLEAR || 'Clear') + '</a>';
145
146
                            $("#itemblock[% itemid %]").append(data).append(buttonPlus).append(buttonClear);
147
                            $("#itemblock[% itemid %]").find("input[name='itemid']").each(function(){
148
                                $(this).val([% itemid %]);
149
                            });
150
                        }
151
                    });
152
153
                    addItemInList("itemblock[% itemid %]", unique_item_fields);
154
                });
155
            </script>
156
            [% itemid = itemid + 1 %]
157
            [% END %] <!-- /items -->
158
        [% END %] <!-- if items -->
159
        </div>
160
    </fieldset>
118
161
119
        <fieldset class="rows" id="itemfieldset">
120
            <legend>Item</legend>
121
            [% IF ( NoACQframework ) %]
122
                <p class="required">
123
                    No ACQ framework, using default. You should create a
124
                    framework with code ACQ, the items framework would be
125
                    used
126
                </p>
127
            [% END %]
128
            <div id="outeritemblock"></div>
129
        </fieldset>
130
    [% END %][%# IF (AcqCreateItemReceiving) %]
131
    <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
162
    <input type="hidden" name="biblionumber" value="[% biblionumber %]" />
132
    <input type="hidden" name="ordernumber" value="[% ordernumber %]" />
163
    <input type="hidden" name="ordernumber" value="[% ordernumber %]" />
133
    <input type="hidden" name="biblioitemnumber" value="[% biblioitemnumber %]" />
164
    <input type="hidden" name="biblioitemnumber" value="[% biblioitemnumber %]" />
Lines 139-180 Link Here
139
	<div class="yui-u">
170
	<div class="yui-u">
140
    <fieldset class="rows">
171
    <fieldset class="rows">
141
    <legend>Accounting details</legend>
172
    <legend>Accounting details</legend>
142
       <ol>
173
    <ol>
143
       <li><label for="datereceived">Date received: </label><span> [% datereceived %] </span></li>
174
        <li><label for="datereceived">Date received: </label><span> [% datereceived %] </span></li>
144
       <li><label for="bookfund">Budget: </label><span> [% bookfund %] </span></li>
175
        <li><label for="bookfund">Budget: </label><span> [% bookfund %] </span></li>
145
       <li><label for="creator">Created by: </label><span> [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]</span></li>
176
        <li><label for="creator">Created by: </label><span> [% IF ( memberfirstname and membersurname ) %][% IF ( memberfirstname ) %][% memberfirstname %][% END %] [% membersurname %][% ELSE %]No name[% END %]</span></li>
146
       <li><label for="quantityto">Quantity to receive: </label><span class="label">
177
        <li><label for="quantity">Quantity to receive: </label><span class="label">
147
           [% IF ( edit ) %]
178
            <input type="text" readonly="readonly" name="quantity" value="[% quantity %]" />
148
               <input type="text" id="quantity_to_receive" name="quantity" value="[% quantity %]" />
149
           [% ELSE %]
150
               <input type="text" readonly="readonly" id="quantity_to_receive" name="quantity" value="[% quantity %]" />
151
           [% END %]
152
           </span></li>
179
           </span></li>
153
        <li><label for="quantity">Quantity received: </label>
180
        <li><label for="quantity">Quantity received: </label>
154
          [% IF (AcqCreateItemReceiving) %]
181
            <input readonly="readonly" type="text" size="20" name="quantityrec" id="quantity" value="[% quantityreceived || 0 %]" />
155
            <input readonly="readonly" type="text" size="20" name="quantityrec" id="quantity" value="0" />
182
            <input id="origquantityrec" type="hidden" name="origquantityrec" value="[% origquantityrec %]" />
156
          [% ELSE %]
157
            [% IF ( quantityreceived ) %]
158
                [% IF ( edit ) %]
159
                    <input type="text" size="20" name="quantityrec" id="quantity" value="[% quantityreceived %]" />
160
                    <input id="origquantityrec" READONLY type="hidden" name="origquantityrec" value="[% quantityreceived %]" />
161
                [% ELSE %]
162
                [% IF ( items ) %]
163
                    <input READONLY type="text" size="20" name="quantityrec" id="quantity" value="[% quantityreceivedplus1 %]" />
164
                [% ELSE %]
165
                    <input type="text" size="20" name="quantityrec" id="quantity" value="[% quantityreceivedplus1 %]" />
166
                [% END %]
167
                <input id="origquantityrec" READONLY type="hidden" name="origquantityrec" value="[% quantityreceived %]" />
168
                [% END %]
169
            [% ELSE %]
170
                [% IF ( items ) %]
171
                    <input READONLY type="text" id="quantity" size="20" name="quantityrec" value="1" />
172
                [% ELSE %]
173
                    <input type="text" size="20" id="quantity" name="quantityrec" value="1" />
174
                [% END %]
175
                <input id="origquantityrec" READONLY type="hidden" name="origquantityrec" value="0" />
176
            [% END %]
177
          [% END %][%# IF (AcqCreateItemReceiving) %]
178
		</li>
183
		</li>
179
        <li><label for="rrp">Replacement cost: </label><input type="text" size="20" name="rrp" id="rrp" value="[% rrp %]" /></li>
184
        <li><label for="rrp">Replacement cost: </label><input type="text" size="20" name="rrp" id="rrp" value="[% rrp %]" /></li>
180
        <li><label for="ecost">Budgeted cost: </label><input type="text" size="20" name="ecost" id="ecost" value="[% ecost %]" /></li>
185
        <li><label for="ecost">Budgeted cost: </label><input type="text" size="20" name="ecost" id="ecost" value="[% ecost %]" /></li>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/services/itemrecorddisplay.tt (-1 / +2 lines)
Lines 13-19 Link Here
13
            [% END %]
13
            [% END %]
14
        </label>
14
        </label>
15
        [% iteminfo.marc_value %]
15
        [% iteminfo.marc_value %]
16
        <input type="hidden" name="itemid" value="1" />
16
        <input type="hidden" name="itemid" />
17
        <input type="hidden" name="kohafield" value="[% iteminfo.kohafield %]" />
17
        <input type="hidden" name="kohafield" value="[% iteminfo.kohafield %]" />
18
        <input type="hidden" name="tag" value="[% iteminfo.tag %]" />
18
        <input type="hidden" name="tag" value="[% iteminfo.tag %]" />
19
        <input type="hidden" name="subfield" value="[% iteminfo.subfield %]" />
19
        <input type="hidden" name="subfield" value="[% iteminfo.subfield %]" />
Lines 22-24 Link Here
22
    </li>
22
    </li>
23
  [% END %]
23
  [% END %]
24
</ol>
24
</ol>
25
<input type="hidden" name="itemnumber" value="[% itemnumber %]" />
(-)a/t/db_dependent/lib/KohaTest.pm (-10 / +6 lines)
Lines 572-587 sub add_biblios { Link Here
572
        ok( $biblionumber, "the biblionumber is $biblionumber" );
572
        ok( $biblionumber, "the biblionumber is $biblionumber" );
573
        ok( $biblioitemnumber, "the biblioitemnumber is $biblioitemnumber" );
573
        ok( $biblioitemnumber, "the biblioitemnumber is $biblioitemnumber" );
574
        if ( $param{'add_items'} ) {
574
        if ( $param{'add_items'} ) {
575
            # my @iteminfo = AddItem( {}, $biblionumber );
575
            # my $item = AddItem( {}, $biblionumber );
576
            my @iteminfo = AddItemFromMarc( $marcrecord, $biblionumber );
576
            my $item = AddItemFromMarc( $marcrecord, $biblionumber );
577
            is( $iteminfo[0], $biblionumber,     "biblionumber is $biblionumber" );
577
            is( $item->{biblionumber},     "biblionumber is $biblionumber" );
578
            is( $iteminfo[1], $biblioitemnumber, "biblioitemnumber is $biblioitemnumber" );
578
            is( $item->{biblioitemnumber}, "biblioitemnumber is $biblioitemnumber" );
579
            ok( $iteminfo[2], "itemnumber is $iteminfo[2]" );
579
            ok( $item->{itemnumber}, "itemnumber is $item->{itemnumber}" );
580
        push @{ $self->{'items'} },
580
            push @{ $self->{'items'} }, $item;
581
          { biblionumber     => $iteminfo[0],
582
            biblioitemnumber => $iteminfo[1],
583
            itemnumber       => $iteminfo[2],
584
          };
585
        }
581
        }
586
        push @{$self->{'biblios'}}, $biblionumber;
582
        push @{$self->{'biblios'}}, $biblionumber;
587
    }
583
    }
(-)a/t/db_dependent/lib/KohaTest/Acquisition/GetParcel.pm (-12 / +5 lines)
Lines 43-60 sub one_parcel : Test( 17 ) { Link Here
43
    
43
    
44
    ok( $basketno, "my basket number is $basketno" );
44
    ok( $basketno, "my basket number is $basketno" );
45
    ok( $ordernumber,   "my order number is $ordernumber" );
45
    ok( $ordernumber,   "my order number is $ordernumber" );
46
    my $datereceived = ModReceiveOrder( $self->{'biblios'}[0],             # biblionumber
46
    ModReceiveOrder( $self->{'biblios'}[0],             # biblionumber
47
                                        $ordernumber,       # $ordernumber,
47
                     $ordernumber,       # $ordernumber,
48
                                        undef,         # $quantrec,
48
                     1,         # $quantrec,
49
                                        undef,         # $user,
49
                   );
50
                                        undef,         # $cost,
50
    pass( "the parcel was received" );
51
                                        $invoice,         # $invoiceno,
52
                                        undef,         # $freight,
53
                                        undef,         # $rrp,
54
                                        $self->{'bookfundid'},         # $bookfund,
55
                                        $today,         # $datereceived
56
                                   );
57
    is( $datereceived, $today, "the parcel was received on $datereceived" );
58
51
59
    my @parcel = GetParcel( $self->{'booksellerid'}, $invoice, $today );
52
    my @parcel = GetParcel( $self->{'booksellerid'}, $invoice, $today );
60
    is( scalar @parcel, 1, 'we found one (1) parcel.' )
53
    is( scalar @parcel, 1, 'we found one (1) parcel.' )
(-)a/t/db_dependent/lib/KohaTest/Acquisition/GetParcels.pm (-12 / +6 lines)
Lines 271-288 sub create_order { Link Here
271
271
272
    my ( $basketno, $ordernumber ) = $self->create_new_basket( %param );
272
    my ( $basketno, $ordernumber ) = $self->create_new_basket( %param );
273
273
274
    my $datereceived = ModReceiveOrder( $self->{'biblios'}[0],             # biblionumber
274
    ModReceiveOrder( $self->{'biblios'}[0],             # biblionumber
275
                                        $ordernumber,       # $ordernumber,
275
                     $ordernumber,       # $ordernumber,
276
                                        undef,         # $quantrec,
276
                     1,         # $quantrec,
277
                                        undef,         # $user,
277
                   );
278
                                        undef,         # $cost,
278
    # XXX Needs proper tests for partial receiving
279
                                        $param{'invoice'},         # $invoiceno,
279
    pass( "the parcel was received" );
280
                                        undef,         # $freight,
281
                                        undef,         # $rrp,
282
                                        $self->{'bookfundid'},         # $bookfund,
283
                                        $param{'date'},         # $datereceived
284
                                   );
285
    is( $datereceived, $param{'date'}, "the parcel was received on $datereceived" );
286
280
287
}
281
}
288
282
(-)a/t/db_dependent/lib/KohaTest/Biblio/ModBiblio.pm (-4 / +3 lines)
Lines 31-40 sub add_bib_to_modify : Test( startup => 3 ) { Link Here
31
    $self->{'bib_to_modify'} = $bibnum;
31
    $self->{'bib_to_modify'} = $bibnum;
32
32
33
    # add an item
33
    # add an item
34
    my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum);
34
    my $item = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum);
35
35
36
    cmp_ok($item_bibnum, '==', $bibnum, "new item is linked to correct biblionumber"); 
36
    cmp_ok($item->{biblionumber}, '==', $bibnum, "new item is linked to correct biblionumber"); 
37
    cmp_ok($item_bibitemnum, '==', $bibitemnum, "new item is linked to correct biblioitemnumber"); 
37
    cmp_ok($item->{biblioitemnumber}, '==', $bibitemnum, "new item is linked to correct biblioitemnumber"); 
38
38
39
    $self->reindex_marc(); 
39
    $self->reindex_marc(); 
40
40
41
- 

Return to bug 3966