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

(-)a/C4/Biblio.pm (-26 / +5 lines)
Lines 2298-2305 sub PrepHostMarcField { Link Here
2298
2298
2299
=head2 TransformHtmlToXml
2299
=head2 TransformHtmlToXml
2300
2300
2301
  $xml = TransformHtmlToXml( $tags, $subfields, $values, $indicator, 
2301
  $xml = TransformHtmlToXml( $tags, $subfields, $values, $auth_type )
2302
                             $ind_tag, $auth_type )
2303
2302
2304
$auth_type contains :
2303
$auth_type contains :
2305
2304
Lines 2316-2322 $auth_type contains : Link Here
2316
=cut
2315
=cut
2317
2316
2318
sub TransformHtmlToXml {
2317
sub TransformHtmlToXml {
2319
    my ( $tags, $subfields, $values, $indicator, $ind_tag, $auth_type ) = @_;
2318
    my ( $tags, $subfields, $values, $auth_type ) = @_;
2320
    my $xml = MARC::File::XML::header('UTF-8');
2319
    my $xml = MARC::File::XML::header('UTF-8');
2321
    $xml .= "<record>\n";
2320
    $xml .= "<record>\n";
2322
    $auth_type = C4::Context->preference('marcflavour') unless $auth_type;
2321
    $auth_type = C4::Context->preference('marcflavour') unless $auth_type;
Lines 2352-2372 sub TransformHtmlToXml { Link Here
2352
2351
2353
        if ( ( @$tags[$i] ne $prevtag ) ) {
2352
        if ( ( @$tags[$i] ne $prevtag ) ) {
2354
            $j++ unless ( @$tags[$i] eq "" );
2353
            $j++ unless ( @$tags[$i] eq "" );
2355
            my $indicator1 = eval { substr( @$indicator[$j], 0, 1 ) };
2356
            my $indicator2 = eval { substr( @$indicator[$j], 1, 1 ) };
2357
            my $ind1       = _default_ind_to_space($indicator1);
2358
            my $ind2;
2359
            if ( @$indicator[$j] ) {
2360
                $ind2 = _default_ind_to_space($indicator2);
2361
            } else {
2362
                warn "Indicator in @$tags[$i] is empty";
2363
                $ind2 = " ";
2364
            }
2365
            if ( !$first ) {
2354
            if ( !$first ) {
2366
                $xml .= "</datafield>\n";
2355
                $xml .= "</datafield>\n";
2367
                if (   ( @$tags[$i] && @$tags[$i] > 10 )
2356
                if (   ( @$tags[$i] && @$tags[$i] > 10 )
2368
                    && ( @$values[$i] ne "" ) ) {
2357
                    && ( @$values[$i] ne "" ) ) {
2369
                    $xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
2358
                    $xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"\" ind2=\"\">\n";
2370
                    $xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
2359
                    $xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
2371
                    $first = 0;
2360
                    $first = 0;
2372
                } else {
2361
                } else {
Lines 2385-2411 sub TransformHtmlToXml { Link Here
2385
                        $xml .= "<controlfield tag=\"@$tags[$i]\">@$values[$i]</controlfield>\n";
2374
                        $xml .= "<controlfield tag=\"@$tags[$i]\">@$values[$i]</controlfield>\n";
2386
                        $first = 1;
2375
                        $first = 1;
2387
                    } else {
2376
                    } else {
2388
                        $xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
2377
                        $xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"\" ind2=\"\">\n";
2389
                        $xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
2378
                        $xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
2390
                        $first = 0;
2379
                        $first = 0;
2391
                    }
2380
                    }
2392
                }
2381
                }
2393
            }
2382
            }
2394
        } else {    # @$tags[$i] eq $prevtag
2383
        } else {    # @$tags[$i] eq $prevtag
2395
            my $indicator1 = eval { substr( @$indicator[$j], 0, 1 ) };
2396
            my $indicator2 = eval { substr( @$indicator[$j], 1, 1 ) };
2397
            my $ind1       = _default_ind_to_space($indicator1);
2398
            my $ind2;
2399
            if ( @$indicator[$j] ) {
2400
                $ind2 = _default_ind_to_space($indicator2);
2401
            } else {
2402
                warn "Indicator in @$tags[$i] is empty";
2403
                $ind2 = " ";
2404
            }
2405
            if ( @$values[$i] eq "" ) {
2384
            if ( @$values[$i] eq "" ) {
2406
            } else {
2385
            } else {
2407
                if ($first) {
2386
                if ($first) {
2408
                    $xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
2387
                    $xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"\" ind2=\"\">\n";
2409
                    $first = 0;
2388
                    $first = 0;
2410
                }
2389
                }
2411
                $xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
2390
                $xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
(-)a/acqui/addorder.pl (-6 lines)
Lines 284-291 if ( $orderinfo->{quantity} ne '0' ) { Link Here
284
        my @field_values = $input->param('field_value');
284
        my @field_values = $input->param('field_value');
285
        my @serials      = $input->param('serial');
285
        my @serials      = $input->param('serial');
286
        my @itemid       = $input->param('itemid');
286
        my @itemid       = $input->param('itemid');
287
        my @ind_tag      = $input->param('ind_tag');
288
        my @indicator    = $input->param('indicator');
289
        #Rebuilding ALL the data for items into a hash
287
        #Rebuilding ALL the data for items into a hash
290
        # parting them on $itemid.
288
        # parting them on $itemid.
291
289
Lines 299-314 if ( $orderinfo->{quantity} ne '0' ) { Link Here
299
            push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i];
297
            push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i];
300
            push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i];
298
            push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i];
301
            push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i];
299
            push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i];
302
            push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i];
303
            push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i];
304
        }
300
        }
305
        foreach my $item (keys %itemhash){
301
        foreach my $item (keys %itemhash){
306
302
307
            my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'},
303
            my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'},
308
                                    $itemhash{$item}->{'subfields'},
304
                                    $itemhash{$item}->{'subfields'},
309
                                    $itemhash{$item}->{'field_values'},
305
                                    $itemhash{$item}->{'field_values'},
310
                                    $itemhash{$item}->{'ind_tag'},
311
                                    $itemhash{$item}->{'indicator'},
312
                                    'ITEM');
306
                                    'ITEM');
313
            my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
307
            my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
314
            my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$$orderinfo{biblionumber});
308
            my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$$orderinfo{biblionumber});
(-)a/acqui/addorderiso2709.pl (-5 / +1 lines)
Lines 271-285 if ($op eq ""){ Link Here
271
            my @subfields    = $input->param('subfield');
271
            my @subfields    = $input->param('subfield');
272
            my @field_values = $input->param('field_value');
272
            my @field_values = $input->param('field_value');
273
            my @serials      = $input->param('serial');
273
            my @serials      = $input->param('serial');
274
            my @ind_tag   = $input->param('ind_tag');
275
            my @indicator = $input->param('indicator');
276
            my $item;
274
            my $item;
277
            push @{ $item->{tags} },         $tags[0];
275
            push @{ $item->{tags} },         $tags[0];
278
            push @{ $item->{subfields} },    $subfields[0];
276
            push @{ $item->{subfields} },    $subfields[0];
279
            push @{ $item->{field_values} }, $field_values[0];
277
            push @{ $item->{field_values} }, $field_values[0];
280
            push @{ $item->{ind_tag} },      $ind_tag[0];
278
            my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values );
281
            push @{ $item->{indicator} },    $indicator[0];
282
            my $xml = TransformHtmlToXml( \@tags, \@subfields, \@field_values, \@ind_tag, \@indicator );
283
            my $record = MARC::Record::new_from_xml( $xml, 'UTF-8' );
279
            my $record = MARC::Record::new_from_xml( $xml, 'UTF-8' );
284
            for (my $qtyloop=1;$qtyloop <= $c_quantity;$qtyloop++) {
280
            for (my $qtyloop=1;$qtyloop <= $c_quantity;$qtyloop++) {
285
                my ( $biblionumber, $bibitemnum, $itemnumber ) = AddItemFromMarc( $record, $biblionumber );
281
                my ( $biblionumber, $bibitemnum, $itemnumber ) = AddItemFromMarc( $record, $biblionumber );
(-)a/acqui/finishreceive.pl (-6 / +1 lines)
Lines 127-134 if ($quantityrec > $origquantityrec ) { Link Here
127
        my @field_values = $input->param('field_value');
127
        my @field_values = $input->param('field_value');
128
        my @serials      = $input->param('serial');
128
        my @serials      = $input->param('serial');
129
        my @itemid       = $input->param('itemid');
129
        my @itemid       = $input->param('itemid');
130
        my @ind_tag      = $input->param('ind_tag');
131
        my @indicator    = $input->param('indicator');
132
        #Rebuilding ALL the data for items into a hash
130
        #Rebuilding ALL the data for items into a hash
133
        # parting them on $itemid.
131
        # parting them on $itemid.
134
        my %itemhash;
132
        my %itemhash;
Lines 141-156 if ($quantityrec > $origquantityrec ) { Link Here
141
            push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i];
139
            push @{$itemhash{$itemid[$i]}->{'tags'}},$tags[$i];
142
            push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i];
140
            push @{$itemhash{$itemid[$i]}->{'subfields'}},$subfields[$i];
143
            push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i];
141
            push @{$itemhash{$itemid[$i]}->{'field_values'}},$field_values[$i];
144
            push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i];
145
            push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i];
146
        }
142
        }
147
        my $order = Koha::Acquisition::Order->fetch({ ordernumber => $new_ordernumber });
143
        my $order = Koha::Acquisition::Order->fetch({ ordernumber => $new_ordernumber });
148
        foreach my $item (keys %itemhash){
144
        foreach my $item (keys %itemhash){
149
            my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'},
145
            my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'},
150
                                          $itemhash{$item}->{'subfields'},
146
                                          $itemhash{$item}->{'subfields'},
151
                                          $itemhash{$item}->{'field_values'},
147
                                          $itemhash{$item}->{'field_values'},
152
                                          $itemhash{$item}->{'ind_tag'},
148
                                          'ITEM');
153
                                          $itemhash{$item}->{'indicator'},'ITEM');
154
            my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
149
            my $record=MARC::Record::new_from_xml($xml, 'UTF-8');
155
            my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
150
            my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber);
156
            $order->add_item( $itemnumber );
151
            $order->add_item( $itemnumber );
(-)a/cataloguing/additem.pl (-24 / +2 lines)
Lines 43-64 use URI::Escape; Link Here
43
43
44
our $dbh = C4::Context->dbh;
44
our $dbh = C4::Context->dbh;
45
45
46
sub find_value {
47
    my ($tagfield,$insubfield,$record) = @_;
48
    my $result;
49
    my $indicator;
50
    foreach my $field ($record->field($tagfield)) {
51
        my @subfields = $field->subfields();
52
        foreach my $subfield (@subfields) {
53
            if (@$subfield[0] eq $insubfield) {
54
                $result .= @$subfield[1];
55
                $indicator = $field->indicator(1).$field->indicator(2);
56
            }
57
        }
58
    }
59
    return($indicator,$result);
60
}
61
62
sub get_item_from_barcode {
46
sub get_item_from_barcode {
63
    my ($barcode)=@_;
47
    my ($barcode)=@_;
64
    my $dbh=C4::Context->dbh;
48
    my $dbh=C4::Context->dbh;
Lines 433-442 if ($op eq "additem") { Link Here
433
    my @tags      = $input->param('tag');
417
    my @tags      = $input->param('tag');
434
    my @subfields = $input->param('subfield');
418
    my @subfields = $input->param('subfield');
435
    my @values    = $input->param('field_value');
419
    my @values    = $input->param('field_value');
436
    # build indicator hash.
420
    my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values, 'ITEM');
437
    my @ind_tag   = $input->param('ind_tag');
438
    my @indicator = $input->param('indicator');
439
    my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM');
440
    my $record = MARC::Record::new_from_xml($xml, 'UTF-8');
421
    my $record = MARC::Record::new_from_xml($xml, 'UTF-8');
441
422
442
    # type of add
423
    # type of add
Lines 641-651 if ($op eq "additem") { Link Here
641
    my @tags      = $input->param('tag');
622
    my @tags      = $input->param('tag');
642
    my @subfields = $input->param('subfield');
623
    my @subfields = $input->param('subfield');
643
    my @values    = $input->param('field_value');
624
    my @values    = $input->param('field_value');
644
    # build indicator hash.
645
    my @ind_tag   = $input->param('ind_tag');
646
    my @indicator = $input->param('indicator');
647
    # my $itemnumber = $input->param('itemnumber');
625
    # my $itemnumber = $input->param('itemnumber');
648
    my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag,'ITEM');
626
    my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,'ITEM');
649
    my $itemtosave=MARC::Record::new_from_xml($xml, 'UTF-8');
627
    my $itemtosave=MARC::Record::new_from_xml($xml, 'UTF-8');
650
    # MARC::Record builded => now, record in DB
628
    # MARC::Record builded => now, record in DB
651
    # warn "R: ".$record->as_formatted;
629
    # warn "R: ".$record->as_formatted;
(-)a/serials/serials-edit.pl (-6 lines)
Lines 254-261 if ( $op and $op eq 'serialchangestatus' ) { Link Here
254
        my @serials      = $query->param('serial');
254
        my @serials      = $query->param('serial');
255
        my @bibnums      = $query->param('bibnum');
255
        my @bibnums      = $query->param('bibnum');
256
        my @itemid       = $query->param('itemid');
256
        my @itemid       = $query->param('itemid');
257
        my @ind_tag      = $query->param('ind_tag');
258
        my @indicator    = $query->param('indicator');
259
257
260
        #Rebuilding ALL the data for items into a hash
258
        #Rebuilding ALL the data for items into a hash
261
        # parting them on $itemid.
259
        # parting them on $itemid.
Lines 280-287 if ( $op and $op eq 'serialchangestatus' ) { Link Here
280
            push @{ $itemhash{ $itemid[$i] }->{'subfields'} }, $subfields[$i];
278
            push @{ $itemhash{ $itemid[$i] }->{'subfields'} }, $subfields[$i];
281
            push @{ $itemhash{ $itemid[$i] }->{'field_values'} },
279
            push @{ $itemhash{ $itemid[$i] }->{'field_values'} },
282
              $field_values[$i];
280
              $field_values[$i];
283
            push @{ $itemhash{ $itemid[$i] }->{'ind_tag'} },   $ind_tag[$i];
284
            push @{ $itemhash{ $itemid[$i] }->{'indicator'} }, $indicator[$i];
285
        }
281
        }
286
        foreach my $item ( keys %itemhash ) {
282
        foreach my $item ( keys %itemhash ) {
287
283
Lines 301-308 if ( $op and $op eq 'serialchangestatus' ) { Link Here
301
                    $itemhash{$item}->{'tags'},
297
                    $itemhash{$item}->{'tags'},
302
                    $itemhash{$item}->{'subfields'},
298
                    $itemhash{$item}->{'subfields'},
303
                    $itemhash{$item}->{'field_values'},
299
                    $itemhash{$item}->{'field_values'},
304
                    $itemhash{$item}->{'indicator'},
305
                    $itemhash{$item}->{'ind_tag'}
306
                );
300
                );
307
301
308
                #           warn $xml;
302
                #           warn $xml;
(-)a/tools/batchMod.pl (-21 / +1 lines)
Lines 104-112 if ($op eq "action") { Link Here
104
    my @subfields = $input->param('subfield');
104
    my @subfields = $input->param('subfield');
105
    my @values    = $input->param('field_value');
105
    my @values    = $input->param('field_value');
106
    my @disabled  = $input->param('disable_input');
106
    my @disabled  = $input->param('disable_input');
107
    # build indicator hash.
108
    my @ind_tag   = $input->param('ind_tag');
109
    my @indicator = $input->param('indicator');
110
107
111
    # Is there something to modify ?
108
    # Is there something to modify ?
112
    # TODO : We shall use this var to warn the user in case no modification was done to the items
109
    # TODO : We shall use this var to warn the user in case no modification was done to the items
Lines 146-152 if ($op eq "action") { Link Here
146
	#initializing values for updates
143
	#initializing values for updates
147
	my (  $itemtagfield,   $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", "");
144
	my (  $itemtagfield,   $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", "");
148
	if ($values_to_modify){
145
	if ($values_to_modify){
149
	    my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM');
146
	    my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values, 'ITEM');
150
	    $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8');
147
	    $marcitem = MARC::Record::new_from_xml($xml, 'UTF-8');
151
        }
148
        }
152
        if ($values_to_blank){
149
        if ($values_to_blank){
Lines 626-647 sub UpdateMarcWith { Link Here
626
    return $modified;
623
    return $modified;
627
}
624
}
628
625
629
sub find_value {
630
    my ($tagfield,$insubfield,$record) = @_;
631
    my $result;
632
    my $indicator;
633
    foreach my $field ($record->field($tagfield)) {
634
        my @subfields = $field->subfields();
635
        foreach my $subfield (@subfields) {
636
            if (@$subfield[0] eq $insubfield) {
637
                $result .= @$subfield[1];
638
                $indicator = $field->indicator(1).$field->indicator(2);
639
            }
640
        }
641
    }
642
    return($indicator,$result);
643
}
644
645
# ----------------------------
626
# ----------------------------
646
# Background functions
627
# Background functions
647
628
648
- 

Return to bug 11247