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

(-)a/Koha/Biblio.pm (-37 / +43 lines)
Lines 1783-1789 sub generate_marc_host_field { Link Here
1783
1783
1784
    my $marcflavour = C4::Context->preference('marcflavour');
1784
    my $marcflavour = C4::Context->preference('marcflavour');
1785
    my $marc_host   = $self->metadata->record;
1785
    my $marc_host   = $self->metadata->record;
1786
    my %sfd;
1786
    my @sfd;
1787
    my $host_field;
1787
    my $host_field;
1788
    my $link_field;
1788
    my $link_field;
1789
1789
Lines 1793-1811 sub generate_marc_host_field { Link Here
1793
        if ( $host_field = $marc_host->field('100') || $marc_host->field('110') || $marc_host->field('111') ) {
1793
        if ( $host_field = $marc_host->field('100') || $marc_host->field('110') || $marc_host->field('111') ) {
1794
            my $s = $host_field->as_string('ab');
1794
            my $s = $host_field->as_string('ab');
1795
            if ($s) {
1795
            if ($s) {
1796
                $sfd{a} = $s;
1796
                push @sfd, ( a => $s );
1797
            }
1797
            }
1798
        }
1798
        }
1799
1799
1800
        # Edition
1800
        # Title
1801
        if ( $host_field = $marc_host->field('250') ) {
1801
        if ( $host_field = $marc_host->field('245') ) {
1802
            my $s = $host_field->as_string('ab');
1802
            my $s = $host_field->as_string('abnp');
1803
            if ($s) {
1803
            if ($s) {
1804
                $sfd{b} = $s;
1804
                push @sfd, ( t => $s );
1805
            }
1805
            }
1806
        }
1806
        }
1807
1807
1808
        # Publication
1808
        # Publication
1809
        my $p;
1809
        my @publication_fields = $marc_host->field('264');
1810
        my @publication_fields = $marc_host->field('264');
1810
        @publication_fields = $marc_host->field('260') unless (@publication_fields);
1811
        @publication_fields = $marc_host->field('260') unless (@publication_fields);
1811
        my $index = 0;
1812
        my $index = 0;
Lines 1815-1846 sub generate_marc_host_field { Link Here
1815
            if ( $index == 0 ) {
1816
            if ( $index == 0 ) {
1816
                my $s = $host_field->as_string('abc');
1817
                my $s = $host_field->as_string('abc');
1817
                if ($s) {
1818
                if ($s) {
1818
                    $sfd{d} = $s;
1819
                    $p = $s;
1819
                }
1820
                }
1820
                $index++;
1821
                $index++;
1821
            }
1822
            }
1822
            if ( $host_field->indicator(1) && ( $host_field->indicator(1) == 3 ) ) {
1823
            if ( $host_field->indicator(1) && ( $host_field->indicator(1) eq '3' ) ) {
1823
                my $s = $host_field->as_string('abc');
1824
                my $s = $host_field->as_string('abc');
1824
                if ($s) {
1825
                if ($s) {
1825
                    $sfd{d} = $s;
1826
                    $p = $s;
1826
                }
1827
                }
1827
                last;
1828
                last;
1828
            }
1829
            }
1829
        }
1830
        }
1831
        push @sfd, ( d => $p ) if $p;
1830
1832
1831
        # Uniform title
1833
        # Uniform title
1832
        if ( $host_field = $marc_host->field('240') ) {
1834
        if ( $host_field = $marc_host->field('240') ) {
1833
            my $s = $host_field->as_string('a');
1835
            my $s = $host_field->as_string('a');
1834
            if ($s) {
1836
            if ($s) {
1835
                $sfd{s} = $s;
1837
                push @sfd, ( s => $s );
1836
            }
1838
            }
1837
        }
1839
        }
1838
1840
1839
        # Title
1841
        # Edition
1840
        if ( $host_field = $marc_host->field('245') ) {
1842
        if ( $host_field = $marc_host->field('250') ) {
1841
            my $s = $host_field->as_string('abnp');
1843
            my $s = $host_field->as_string('ab');
1842
            if ($s) {
1844
            if ($s) {
1843
                $sfd{t} = $s;
1845
                push @sfd, ( b => $s );
1844
            }
1846
            }
1845
        }
1847
        }
1846
1848
Lines 1848-1854 sub generate_marc_host_field { Link Here
1848
        if ( $host_field = $marc_host->field('022') ) {
1850
        if ( $host_field = $marc_host->field('022') ) {
1849
            my $s = $host_field->as_string('a');
1851
            my $s = $host_field->as_string('a');
1850
            if ($s) {
1852
            if ($s) {
1851
                $sfd{x} = $s;
1853
                push @sfd, ( x => $s );
1852
            }
1854
            }
1853
        }
1855
        }
1854
1856
Lines 1856-1884 sub generate_marc_host_field { Link Here
1856
        if ( $host_field = $marc_host->field('020') ) {
1858
        if ( $host_field = $marc_host->field('020') ) {
1857
            my $s = $host_field->as_string('a');
1859
            my $s = $host_field->as_string('a');
1858
            if ($s) {
1860
            if ($s) {
1859
                $sfd{z} = $s;
1861
                push @sfd, ( z => $s );
1860
            }
1862
            }
1861
        }
1863
        }
1862
        if ( C4::Context->preference('UseControlNumber') ) {
1864
        if ( C4::Context->preference('UseControlNumber') ) {
1863
1865
1866
            my $w;
1867
1864
            # Control number
1868
            # Control number
1865
            if ( $host_field = $marc_host->field('001') ) {
1869
            if ( $host_field = $marc_host->field('001') ) {
1866
                $sfd{w} = $host_field->data();
1870
                $w = $host_field->data();
1867
            }
1871
            }
1868
1872
1869
            # Control number identifier
1873
            # Control number identifier
1870
            if ( $host_field = $marc_host->field('003') ) {
1874
            if ( $host_field = $marc_host->field('003') ) {
1871
                $sfd{w} = '(' . $host_field->data() . ')' . $sfd{w};
1875
                $w = '(' . $host_field->data() . ')' . $w;
1872
            }
1876
            }
1877
1878
            push @sfd, ( w => $w );
1873
        }
1879
        }
1874
        $link_field = MARC::Field->new( 773, '0', ' ', %sfd );
1880
        $link_field = MARC::Field->new( 773, '0', ' ', @sfd );
1875
    } elsif ( $marcflavour eq 'UNIMARC' ) {
1881
    } elsif ( $marcflavour eq 'UNIMARC' ) {
1876
1882
1877
        # Author
1883
        # Author
1878
        if ( $host_field = $marc_host->field('700') || $marc_host->field('710') || $marc_host->field('720') ) {
1884
        if ( $host_field = $marc_host->field('700') || $marc_host->field('710') || $marc_host->field('720') ) {
1879
            my $s = $host_field->as_string('ab');
1885
            my $s = $host_field->as_string('ab');
1880
            if ($s) {
1886
            if ($s) {
1881
                $sfd{a} = $s;
1887
                push @sfd, ( a => $s );
1888
            }
1889
        }
1890
1891
        # Title
1892
        if ( $host_field = $marc_host->field('200') ) {
1893
            my $s = $host_field->as_string('a');
1894
            if ($s) {
1895
                push @sfd, ( t => $s );
1882
            }
1896
            }
1883
        }
1897
        }
1884
1898
Lines 1886-1892 sub generate_marc_host_field { Link Here
1886
        if ( $host_field = $marc_host->field('210') ) {
1900
        if ( $host_field = $marc_host->field('210') ) {
1887
            my $s = $host_field->as_string('a');
1901
            my $s = $host_field->as_string('a');
1888
            if ($s) {
1902
            if ($s) {
1889
                $sfd{c} = $s;
1903
                push @sfd, ( c => $s );
1890
            }
1904
            }
1891
        }
1905
        }
1892
1906
Lines 1894-1900 sub generate_marc_host_field { Link Here
1894
        if ( $host_field = $marc_host->field('210') ) {
1908
        if ( $host_field = $marc_host->field('210') ) {
1895
            my $s = $host_field->as_string('d');
1909
            my $s = $host_field->as_string('d');
1896
            if ($s) {
1910
            if ($s) {
1897
                $sfd{d} = $s;
1911
                push @sfd, ( d => $s );
1898
            }
1912
            }
1899
        }
1913
        }
1900
1914
Lines 1902-1916 sub generate_marc_host_field { Link Here
1902
        if ( $host_field = $marc_host->field('205') ) {
1916
        if ( $host_field = $marc_host->field('205') ) {
1903
            my $s = $host_field->as_string();
1917
            my $s = $host_field->as_string();
1904
            if ($s) {
1918
            if ($s) {
1905
                $sfd{e} = $s;
1919
                push @sfd, ( e => $s );
1906
            }
1907
        }
1908
1909
        # Title
1910
        if ( $host_field = $marc_host->field('200') ) {
1911
            my $s = $host_field->as_string('a');
1912
            if ($s) {
1913
                $sfd{t} = $s;
1914
            }
1920
            }
1915
        }
1921
        }
1916
1922
Lines 1918-1924 sub generate_marc_host_field { Link Here
1918
        if ( $host_field = $marc_host->field('856') ) {
1924
        if ( $host_field = $marc_host->field('856') ) {
1919
            my $s = $host_field->as_string('u');
1925
            my $s = $host_field->as_string('u');
1920
            if ($s) {
1926
            if ($s) {
1921
                $sfd{u} = $s;
1927
                push @sfd, ( u => $s );
1922
            }
1928
            }
1923
        }
1929
        }
1924
1930
Lines 1926-1932 sub generate_marc_host_field { Link Here
1926
        if ( $host_field = $marc_host->field('011') ) {
1932
        if ( $host_field = $marc_host->field('011') ) {
1927
            my $s = $host_field->as_string('a');
1933
            my $s = $host_field->as_string('a');
1928
            if ($s) {
1934
            if ($s) {
1929
                $sfd{x} = $s;
1935
                push @sfd, ( x => $s );
1930
            }
1936
            }
1931
        }
1937
        }
1932
1938
Lines 1934-1946 sub generate_marc_host_field { Link Here
1934
        if ( $host_field = $marc_host->field('010') ) {
1940
        if ( $host_field = $marc_host->field('010') ) {
1935
            my $s = $host_field->as_string('a');
1941
            my $s = $host_field->as_string('a');
1936
            if ($s) {
1942
            if ($s) {
1937
                $sfd{y} = $s;
1943
                push @sfd, ( y => $s );
1938
            }
1944
            }
1939
        }
1945
        }
1940
        if ( $host_field = $marc_host->field('001') ) {
1946
        if ( $host_field = $marc_host->field('001') ) {
1941
            $sfd{0} = $host_field->data();
1947
1948
            push @sfd, ( 0 => $host_field->data() );
1942
        }
1949
        }
1943
        $link_field = MARC::Field->new( 461, '0', ' ', %sfd );
1950
        $link_field = MARC::Field->new( 461, '0', ' ', @sfd );
1944
    }
1951
    }
1945
1952
1946
    return $link_field;
1953
    return $link_field;
1947
- 

Return to bug 37305