Bug 25539: Remove AddBiblio option "defer_marc_save"

Items are no longer embedded in the MARCXML and because of this the MARC data
does not need to be saved once more after changing record items data.
The "defer_marc_save" is no longer needed since bulkmarcimport.pl was the only
place this option was utilized in order to resave MARC data after possibly changing
items data. There is also a bug bulkmarcimport.pl where the record data is re-saved
without stripping items if duplicate items are found and the dedup barcodes
option is enabled that is resolved by this change.

This change enables MARC Overlay rules to be enabled for bulkmarkcimport.pl as using
the defer_marc option would previously effectively bypass any defined rules.

To test
1) Apply patch 29440 (which this depends on), but no not yet apply this
   patch
2) Remove comments around "bulkmarcimport: _("bulkmarcimport.pl"),"
   in koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt
   line 463
3) Enable MARC overlay rules and add a rule (with source => "*" or
   'bulkmarcimport') to protect some field.
4) Import a biblio using the bulkmarcimport script. Overlay rules will
   only be applied on updates so a match condition matching the
   record in Koha when bulkmarcimport.pl is run the next time for the same
   record needs to be supplied (for example -match "control-number,001")
5) Edit the imported biblio and change the value of the protected field
6) Run bulkmarcimport with the same parameters as in 4) and verify the
   the field that should have been protected has been overwritten
7) Revert changes for line 463 in marc-overlay-rules.tt (or will result in
   conflict applying the patch), apply the patch and repeat steps 4-5,
   verify that the field now was protected from being overwritten.

Signed-off-by: Michał Kula <148193449+mkibp@users.noreply.github.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
David Gustafsson 2021-11-12 23:16:55 +01:00 committed by Katrin Fischer
parent 2998254f1c
commit e1479daf11
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834
2 changed files with 1 additions and 16 deletions

View file

@ -190,9 +190,6 @@ The C<$options> argument is a hashref with additional parameters:
=over 4
=item B<defer_marc_save>
Used when ModBiblioMarc is handled by the caller
=item B<skip_record_index>
Used when the indexing scheduling will be handled by the caller
@ -211,7 +208,6 @@ sub AddBiblio {
$options //= {};
my $skip_record_index = $options->{'skip_record_index'} // 0;
my $defer_marc_save = $options->{defer_marc_save} // 0;
my $disable_autolink = $options->{disable_autolink} // 0;
if (!$record) {
@ -297,7 +293,7 @@ sub AddBiblio {
}
# now add the record, don't index while we are in the transaction though
ModBiblioMarc( $record, $biblionumber, { skip_record_index => 1 } ) unless $defer_marc_save;
ModBiblioMarc( $record, $biblionumber, { skip_record_index => 1 } );
# update OAI-PMH sets
if(C4::Context->preference("OAI-PMH:AutoUpdateSets")) {

View file

@ -568,13 +568,6 @@ RECORD: foreach my $record (@{$marc_records}) {
my $error_adding = $@;
$record_has_added_items = @{$itemnumbers_ref};
# Work on a clone so that if there are real errors, we can maybe
# fix them up later.
my $clone_record = $record->clone();
C4::Biblio::_strip_item_fields($clone_record, $framework);
# This sets the marc fields if there was an error, and also calls
# defer_marc_save.
ModBiblioMarc($clone_record, $record_id, $mod_biblio_options);
if ($error_adding) {
warn "ERROR: Adding items to bib $record_id failed: $error_adding";
printlog({ id => $record_id, op => "insert items", status => "ERROR"}) if ($logfile);
@ -619,10 +612,6 @@ RECORD: foreach my $record (@{$marc_records}) {
printlog({ id => $record_id, op => "insert items", status => "ERROR" }) if ($logfile);
# if we failed because of an exception, assume that
# the MARC columns in biblioitems were not set.
# @FIXME: Why do we save here without stripping items? Besides,
# save with stripped items has already been performed
ModBiblioMarc($record, $record_id, $mod_biblio_options);
next RECORD;
}
$record_has_added_items ||= @{$itemnumbers_ref};