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

(-)a/C4/Biblio.pm (-13 / +82 lines)
Lines 3638-3656 Generate the host item entry for an analytic child entry Link Here
3638
3638
3639
sub prepare_host_field {
3639
sub prepare_host_field {
3640
    my ( $hostbiblio, $marcflavour ) = @_;
3640
    my ( $hostbiblio, $marcflavour ) = @_;
3641
    $marcflavour ||= 'MARC21';
3641
    $marcflavour ||= C4::Context->preference('marcflavour');
3642
    my $host = GetMarcBiblio($hostbiblio);
3642
    my $host = GetMarcBiblio($hostbiblio);
3643
    if ( $marcflavour eq 'MARC21' ) {
3643
    # unfortunately as_string does not 'do the right thing'
3644
3644
    # if field returns undef
3645
        # unfortunately as_string does not 'do the right thing'
3645
    my %sfd;
3646
        # if field returns undef
3646
    my $field;
3647
        my %sfd;
3647
    my $host_field;
3648
        my $field;
3648
    if ( $marcflavour eq 'MARC21' || $marcflavour eq 'NORMARC' ) {
3649
        if ( $field = $host->author() ) {
3649
        if ( $field = $host->field('100') || $host->field('110') || $host->field('11') ) {
3650
            $sfd{a} = $field;
3650
            my $s = $field->as_string('ab');
3651
            if ($s) {
3652
                $sfd{a} = $s;
3653
            }
3651
        }
3654
        }
3652
        if ( $field = $host->title() ) {
3655
        if ( $field = $host->field('245') ) {
3653
            $sfd{t} = $field;
3656
            my $s = $field->as_string('a');
3657
            if ($s) {
3658
                $sfd{t} = $s;
3659
            }
3654
        }
3660
        }
3655
        if ( $field = $host->field('260') ) {
3661
        if ( $field = $host->field('260') ) {
3656
            my $s = $field->as_string('abc');
3662
            my $s = $field->as_string('abc');
Lines 3673-3685 sub prepare_host_field { Link Here
3673
        if ( $field = $host->field('020') ) {
3679
        if ( $field = $host->field('020') ) {
3674
            my $s = $field->as_string('a');
3680
            my $s = $field->as_string('a');
3675
            if ($s) {
3681
            if ($s) {
3676
                $sfd{x} = $s;
3682
                $sfd{z} = $s;
3677
            }
3683
            }
3678
        }
3684
        }
3679
        if ( $field = $host->field('001') ) {
3685
        if ( $field = $host->field('001') ) {
3680
            $sfd{w} = $field->data(),;
3686
            $sfd{w} = $field->data(),;
3681
        }
3687
        }
3682
        my $host_field = MARC::Field->new( 773, '0', ' ', %sfd );
3688
        $host_field = MARC::Field->new( 773, '0', ' ', %sfd );
3689
        return $host_field;
3690
    }
3691
    elsif ( $marcflavour eq 'UNIMARC' ) {
3692
        #author
3693
        if ( $field = $host->field('700') || $host->field('710') || $host->field('720') ) {
3694
            my $s = $field->as_string('ab');
3695
            if ($s) {
3696
                $sfd{a} = $s;
3697
            }
3698
        }
3699
        #title
3700
        if ( $field = $host->field('200') ) {
3701
            my $s = $field->as_string('a');
3702
            if ($s) {
3703
                $sfd{t} = $s;
3704
            }
3705
        }
3706
        #place of publicaton
3707
        if ( $field = $host->field('210') ) {
3708
            my $s = $field->as_string('a');
3709
            if ($s) {
3710
                $sfd{c} = $s;
3711
            }
3712
        }
3713
        #date of publication
3714
        if ( $field = $host->field('210') ) {
3715
            my $s = $field->as_string('d');
3716
            if ($s) {
3717
                $sfd{d} = $s;
3718
            }
3719
        }
3720
        #edition statement
3721
        if ( $field = $host->field('205') ) {
3722
            my $s = $field->as_string();
3723
            if ($s) {
3724
                $sfd{a} = $s;
3725
            }
3726
        }
3727
        #URL
3728
        if ( $field = $host->field('856') ) {
3729
            my $s = $field->as_string('u');
3730
            if ($s) {
3731
                $sfd{u} = $s;
3732
            }
3733
        }
3734
        #ISSN
3735
        if ( $field = $host->field('011') ) {
3736
            my $s = $field->as_string('a');
3737
            if ($s) {
3738
                $sfd{x} = $s;
3739
            }
3740
        }
3741
        #ISBN
3742
        if ( $field = $host->field('010') ) {
3743
            my $s = $field->as_string('a');
3744
            if ($s) {
3745
                $sfd{y} = $s;
3746
            }
3747
        }
3748
        if ( $field = $host->field('001') ) {
3749
            $sfd{0} = $field->data(),;
3750
        }
3751
        $host_field = MARC::Field->new( 461, '0', ' ', %sfd );
3683
        return $host_field;
3752
        return $host_field;
3684
    }
3753
    }
3685
    return;
3754
    return;
(-)a/cataloguing/addbiblio.pl (-10 lines)
Lines 995-1006 $template->param( Link Here
995
);
995
);
996
996
997
output_html_with_http_headers $input, $cookie, $template->output;
997
output_html_with_http_headers $input, $cookie, $template->output;
998
999
sub get_host_control_num {
1000
    my $host_biblio_nr = shift;
1001
    my $host = GetMarcBiblio($host_biblio_nr);
1002
    my $control_num = GetMarcControlnumber($host, C4::Context->preference('marcflavour'));
1003
    $host = GetBiblioData($host_biblio_nr);
1004
    $host->{control_number} = $control_num;
1005
    return $host;
1006
}
1007
- 

Return to bug 6831