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

(-)a/C4/Biblio.pm (+7 lines)
Lines 2637-2642 sub _koha_marc_update_bib_ids { Link Here
2637
    } else {
2637
    } else {
2638
        C4::Biblio::UpsertMarcSubfield($record, $biblioitem_tag, $biblioitem_subfield, $biblioitemnumber);
2638
        C4::Biblio::UpsertMarcSubfield($record, $biblioitem_tag, $biblioitem_subfield, $biblioitemnumber);
2639
    }
2639
    }
2640
2641
    # update the control number (001) in MARC
2642
    if(C4::Context->preference('autoControlNumber') eq 'biblionumber'){
2643
        unless($record->field('001')){
2644
            $record->insert_fields_ordered(MARC::Field->new('001', $biblionumber));
2645
        }
2646
    }
2640
}
2647
}
2641
2648
2642
=head2 _koha_marc_update_biblioitem_cn_sort
2649
=head2 _koha_marc_update_biblioitem_cn_sort
(-)a/cataloguing/addbiblio.pl (-1 / +5 lines)
Lines 799-805 if (($biblionumber) && !($breedingid)){ Link Here
799
if ($breedingid) {
799
if ($breedingid) {
800
    ( $record, $encoding ) = MARCfindbreeding( $breedingid ) ;
800
    ( $record, $encoding ) = MARCfindbreeding( $breedingid ) ;
801
}
801
}
802
802
if ( $record && $op eq 'duplicate' &&
803
     C4::Context->preference('autoControlNumber') eq 'biblionumber' ){
804
    my @control_num = $record->field('001');
805
    $record->delete_fields(@control_num);
806
}
803
#populate hostfield if hostbiblionumber is available
807
#populate hostfield if hostbiblionumber is available
804
if ($hostbiblionumber) {
808
if ($hostbiblionumber) {
805
    my $marcflavour = C4::Context->preference("marcflavour");
809
    my $marcflavour = C4::Context->preference("marcflavour");
(-)a/installer/data/mysql/mandatory/sysprefs.sql (+1 lines)
Lines 73-78 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
73
('AuthoritySeparator','--','10','Used to separate a list of authorities in a display. Usually --','free'),
73
('AuthoritySeparator','--','10','Used to separate a list of authorities in a display. Usually --','free'),
74
('AuthSuccessLog','0',NULL,'If enabled, log successful authentications','YesNo'),
74
('AuthSuccessLog','0',NULL,'If enabled, log successful authentications','YesNo'),
75
('autoBarcode','OFF','incremental|annual|hbyymmincr|EAN13|OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB=Home Branch','Choice'),
75
('autoBarcode','OFF','incremental|annual|hbyymmincr|EAN13|OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB=Home Branch','Choice'),
76
('autoControlNumber','OFF','biblionumber|OFF','Used to autogenerate a Control Number: biblionumber will be as biblionumber, OFF will leave the field as it is;','Choice'),
76
('AutoCreateAuthorities','0',NULL,'Automatically create authorities that do not exist when cataloging records.','YesNo'),
77
('AutoCreateAuthorities','0',NULL,'Automatically create authorities that do not exist when cataloging records.','YesNo'),
77
('AutoCreditNumber', '', '', 'Automatically generate a number for account credits', 'Choice'),
78
('AutoCreditNumber', '', '', 'Automatically generate a number for account credits', 'Choice'),
78
('AutoEmailOpacUser','0',NULL,'Sends notification emails containing new account details to patrons - when account is created.','YesNo'),
79
('AutoEmailOpacUser','0',NULL,'Sends notification emails containing new account details to patrons - when account is created.','YesNo'),
(-)a/koha-tmpl/intranet-tmpl/lib/koha/cateditor/koha-backend.js (-2 / +3 lines)
Lines 103-117 define( [ '/cgi-bin/koha/svc/cataloguing/framework?frameworkcode=&callback=defin Link Here
103
            return _framework_kohafields[kohafield];
103
            return _framework_kohafields[kohafield];
104
        },
104
        },
105
105
106
        GetRecord: function( id, callback ) {
106
        GetRecord: function( id, remove_control_num, callback ) {
107
            $.get(
107
            $.get(
108
                '/cgi-bin/koha/svc/bib/' + id
108
                '/cgi-bin/koha/svc/bib/'+ id
109
            ).done( function( metadata ) {
109
            ).done( function( metadata ) {
110
                $.get(
110
                $.get(
111
                    '/cgi-bin/koha/svc/bib_framework/' + id
111
                    '/cgi-bin/koha/svc/bib_framework/' + id
112
                ).done( function( frameworkcode ) {
112
                ).done( function( frameworkcode ) {
113
                    var record = new MARC.Record();
113
                    var record = new MARC.Record();
114
                    record.loadMARCXML(metadata);
114
                    record.loadMARCXML(metadata);
115
                    if( remove_control_num ) { record.removeField("001"); }
115
                    record.frameworkcode = $(frameworkcode).find('frameworkcode').text();
116
                    record.frameworkcode = $(frameworkcode).find('frameworkcode').text();
116
                    initFramework( record.frameworkcode, function( error ) {
117
                    initFramework( record.frameworkcode, function( error ) {
117
                        if ( typeof error === 'undefined' ) {
118
                        if ( typeof error === 'undefined' ) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/cateditor-ui.inc (-2 / +6 lines)
Lines 251-263 require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr Link Here
251
            saveLabel: _("Duplicate"),
251
            saveLabel: _("Duplicate"),
252
            get: function( id, callback ) {
252
            get: function( id, callback ) {
253
                if ( !id ) return false;
253
                if ( !id ) return false;
254
                var remove_control_num = [% IF Koha.Preference('autoControlNumber') == 'OFF' %] 0 [% ELSE %] 1 [% END %];
254
255
255
                KohaBackend.GetRecord( id, callback );
256
                KohaBackend.GetRecord( id, remove_control_num, callback );
256
            },
257
            },
257
            save: function( id, record, done ) {
258
            save: function( id, record, done ) {
258
                function finishCb( data ) {
259
                function finishCb( data ) {
259
                    done( { error: data.error, newRecord: data.marcxml && data.marcxml[0], newId: data.biblionumber && [ 'catalog', data.biblionumber ] } );
260
                    done( { error: data.error, newRecord: data.marcxml && data.marcxml[0], newId: data.biblionumber && [ 'catalog', data.biblionumber ] } );
260
                }
261
                }
262
                [% IF Koha.Preference('autoControlNumber') != 'OFF' %]
263
                    record.removeField("001");
264
                [% END %]
261
265
262
                KohaBackend.CreateRecord( record, finishCb );
266
                KohaBackend.CreateRecord( record, finishCb );
263
            }
267
            }
Lines 272-278 require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr Link Here
272
            get: function( id, callback ) {
276
            get: function( id, callback ) {
273
                if ( !id ) return false;
277
                if ( !id ) return false;
274
278
275
                KohaBackend.GetRecord( id, callback );
279
                KohaBackend.GetRecord( id, "", callback );
276
            },
280
            },
277
            save: function( id, record, done ) {
281
            save: function( id, record, done ) {
278
                function finishCb( data ) {
282
                function finishCb( data ) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref (+6 lines)
Lines 158-163 Cataloging: Link Here
158
            - and record's last modifier name in MARC subfield
158
            - and record's last modifier name in MARC subfield
159
            - pref: MarcFieldForModifierName
159
            - pref: MarcFieldForModifierName
160
            - ". <br/><strong>NOTE:</strong> Use a dollar sign between field and subfield like 123$a."
160
            - ". <br/><strong>NOTE:</strong> Use a dollar sign between field and subfield like 123$a."
161
        -
162
            - Control Number (001) is
163
            - pref: autoControlNumber
164
              choices:
165
                  biblionumber: generated as biblionumber.
166
                  "OFF": not generated automatically.
161
    Display:
167
    Display:
162
        -
168
        -
163
            - 'Separate main entry and subdivisions with '
169
            - 'Separate main entry and subdivisions with '
(-)a/t/db_dependent/Biblio.t (-2 / +25 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 15;
20
use Test::More tests => 16;
21
use Test::MockModule;
21
use Test::MockModule;
22
use Test::Warn;
22
use Test::Warn;
23
use List::MoreUtils qw( uniq );
23
use List::MoreUtils qw( uniq );
Lines 246-251 sub run_tests { Link Here
246
    # Authority tests don't interact well with Elasticsearch at the moment due to the fact that there's currently no way to
246
    # Authority tests don't interact well with Elasticsearch at the moment due to the fact that there's currently no way to
247
    # roll back ES index changes.
247
    # roll back ES index changes.
248
    t::lib::Mocks::mock_preference('SearchEngine', 'Zebra');
248
    t::lib::Mocks::mock_preference('SearchEngine', 'Zebra');
249
    t::lib::Mocks::mock_preference('autoControlNumber', 'OFF');
249
250
250
    my $isbn = '0590353403';
251
    my $isbn = '0590353403';
251
    my $title = 'Foundation';
252
    my $title = 'Foundation';
Lines 821-826 subtest "LinkBibHeadingsToAuthorities record generation tests" => sub { Link Here
821
    );
822
    );
822
};
823
};
823
824
825
subtest 'autoControlNumber tests' => sub {
826
    plan tests => 3;
827
828
    t::lib::Mocks::mock_preference('autoControlNumber', 'OFF');
829
830
    my $record = MARC::Record->new();
831
    my ($biblionumber) = C4::Biblio::AddBiblio($record, '');
832
    $record = GetMarcBiblio({biblionumber => $biblionumber});
833
    is($record->field('001'), undef, '001 not set when pref is off');
834
835
    t::lib::Mocks::mock_preference('autoControlNumber', 'biblionumber');
836
    C4::Biblio::ModBiblio($record, $biblionumber, "", 1);
837
    $record = GetMarcBiblio({biblionumber => $biblionumber});
838
    is($record->field('001')->as_string(), $biblionumber, '001 set to biblionumber when pref set and field is blank');
839
840
    $record->field('001')->update('Not biblionumber');
841
    C4::Biblio::ModBiblio($record, $biblionumber, "", 1);
842
    $record = GetMarcBiblio({biblionumber => $biblionumber});
843
    is($record->field('001')->as_string(), 'Not biblionumber', '001 not set to biblionumber when pref set and field exists');
844
845
};
846
847
824
# Cleanup
848
# Cleanup
825
Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" );
849
Koha::Caches->get_instance->clear_from_cache( "MarcSubfieldStructure-" );
826
$schema->storage->txn_rollback;
850
$schema->storage->txn_rollback;
827
- 

Return to bug 27981