- if (scalar(@moditems)){
- my @tags = $query->param('tag');
- my @subfields = $query->param('subfield');
- my @field_values = $query->param('field_value');
- my @serials = $query->param('serial');
- my @bibnums = $query->param('bibnum');
- my @itemid = $query->param('itemid');
- my @ind_tag = $query->param('ind_tag');
- my @indicator = $query->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]}){
- if ($serials[$countdistinct] && $serials[$countdistinct] ne "NEW"){
- $itemhash{$itemid[$i]}->{'serial'}=$serials[$countdistinct];
- } else {
- $itemhash{$itemid[$i]}->{'serial'}=$newserial;
- }
- $itemhash{$itemid[$i]}->{'bibnum'}=$bibnums[$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];
- }
- foreach my $item (keys %itemhash){
- # Verify Itemization is "Valid", i.e. serial status is Arrived or Missing
- my $index=-1;
- for (my $i=0; $i<scalar(@serialids);$i++){
- $index = $i if ($itemhash{$item}->{'serial'} eq $serialids[$i] || ($itemhash{$item}->{'serial'} == $newserial && $serialids[$i] eq "NEW"));
- }
- if ($index>=0 && $status[$index]==2){
- my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'},
- $itemhash{$item}->{'subfields'},
- $itemhash{$item}->{'field_values'},
- $itemhash{$item}->{'ind_tag'},
- $itemhash{$item}->{'indicator'});
- # warn $xml;
- my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
- if ($item=~/^N/){
- #New Item
-
- # if autoBarcode is set to 'incremental', calculate barcode...
- my ($barcodetagfield,$barcodetagsubfield) = &GetMarcFromKohaField("items.barcode", GetFrameworkCode($serialdatalist[0]->{'biblionumber'}));
- if (C4::Context->preference("autoBarcode") eq 'incremental' ) {
- if (!$record->field($barcodetagfield)->subfield($barcodetagsubfield)) {
- my $sth_barcode = $dbh->prepare("select max(abs(barcode)) from items");
- $sth_barcode->execute;
- my ($newbarcode) = $sth_barcode->fetchrow;
- # OK, we have the new barcode, add the entry in MARC record # FIXME -> should be using barcode plugin here.
- $record->field($barcodetagfield)->update( $barcodetagsubfield => ++$newbarcode );
- }
+ if ( scalar(@moditems) ) {
+ my @tags = $query->param('tag');
+ my @subfields = $query->param('subfield');
+ my @field_values = $query->param('field_value');
+ my @serials = $query->param('serial');
+ my @bibnums = $query->param('bibnum');
+ my @itemid = $query->param('itemid');
+ my @ind_tag = $query->param('ind_tag');
+ my @indicator = $query->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] } ) {
+ if ( $serials[$countdistinct]
+ && $serials[$countdistinct] ne "NEW" )
+ {
+ $itemhash{ $itemid[$i] }->{'serial'} =
+ $serials[$countdistinct];
+ }
+ else {
+ $itemhash{ $itemid[$i] }->{'serial'} = $newserial;
+ }
+ $itemhash{ $itemid[$i] }->{'bibnum'} = $bibnums[$countdistinct];
+ $countdistinct++;