Bugzilla – Attachment 106695 Details for
Bug 25964
Data loss possible when items are modified
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 25964: Prevent data loss when editing items from a MARC record
Bug-25964-Prevent-data-loss-when-editing-items-fro.patch (text/plain), 3.70 KB, created by
Jonathan Druart
on 2020-07-09 09:33:06 UTC
(
hide
)
Description:
Bug 25964: Prevent data loss when editing items from a MARC record
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2020-07-09 09:33:06 UTC
Size:
3.70 KB
patch
obsolete
>From 7e0aefbd6566d16b9c289839d937f335caed9e4e Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Thu, 9 Jul 2020 10:52:11 +0200 >Subject: [PATCH] Bug 25964: Prevent data loss when editing items from a MARC > record > >Coming from: > Bug 23463: Use new method Koha::Object->set_or_blank > >We have DB fields that are not mapped with MARC fields, for instance paidfor. They are not handled correctly. > >In ModItemFromMarc, we get a MARC record in parameter and update the item in DB. But we are loosing the fields that are not in the MARC record >--- > C4/Items.pm | 13 +++++++++++++ > t/db_dependent/Items.t | 10 +++++++--- > 2 files changed, 20 insertions(+), 3 deletions(-) > >diff --git a/C4/Items.pm b/C4/Items.pm >index 53bf3edb65..f2db7a4894 100644 >--- a/C4/Items.pm >+++ b/C4/Items.pm >@@ -293,6 +293,19 @@ sub ModItemFromMarc { > $localitemmarc->append_fields( $item_marc->field($itemtag) ); > my $item_object = Koha::Items->find($itemnumber); > my $item = TransformMarcToKoha( $localitemmarc, $frameworkcode, 'items' ); >+ >+ # Retrieving the values for the fields that are not linked >+ my @mapped_fields = Koha::MarcSubfieldStructures->search( >+ { >+ frameworkcode => $frameworkcode, >+ kohafield => { -like => "items.%" } >+ } >+ )->get_column('kohafield'); >+ for my $c ( $item_object->_result->result_source->columns ) { >+ next if grep { "items.$c" eq $_ } @mapped_fields; >+ $item->{$c} = $item_object->$c; >+ } >+ > $item->{cn_source} = delete $item->{'items.cn_source'}; # Because of C4::Biblio::_disambiguate > $item->{cn_sort} = delete $item->{'items.cn_sort'}; # Because of C4::Biblio::_disambiguate > $item->{itemnumber} = $itemnumber; >diff --git a/t/db_dependent/Items.t b/t/db_dependent/Items.t >index 61a691b458..010b41e97a 100755 >--- a/t/db_dependent/Items.t >+++ b/t/db_dependent/Items.t >@@ -601,12 +601,12 @@ subtest 'SearchItems test' => sub { > > # Make sure the link is used > my $item3 = Koha::Items->find($item3_itemnumber); >- ok($item3->itemnotes eq 'foobar', 'itemnotes eq "foobar"'); >+ is($item3->itemnotes, 'foobar', 'itemnotes eq "foobar"'); > > # Do the same search again. > # This time it will search in items.itemnotes > ($items, $total_results) = SearchItems($filter); >- ok(scalar @$items == 1, 'found 1 item with itemnotes = "foobar"'); >+ is(scalar(@$items), 1, 'found 1 item with itemnotes = "foobar"'); > > my ($cpl_items_after) = SearchItems( { field => 'homebranch', query => $library1->{branchcode} } ); > is( ( scalar( @$cpl_items_after ) - scalar ( @$cpl_items_before ) ), 1, 'SearchItems should return something' ); >@@ -984,7 +984,7 @@ subtest 'Split subfields in Item2Marc (Bug 21774)' => sub { > }; > > subtest 'ModItemFromMarc' => sub { >- plan tests => 2; >+ plan tests => 4; > $schema->storage->txn_begin; > > my $builder = t::lib::TestBuilder->new; >@@ -1009,6 +1009,8 @@ subtest 'ModItemFromMarc' => sub { > my $item = Koha::Items->find($itemnumber); > is( $item->itemlost, 1, 'itemlost picked from the item marc'); > >+ $item->paidfor("this is something")->store; >+ > my $updated_item_record = new MARC::Record; > $updated_item_record->append_fields( > MARC::Field->new( >@@ -1019,6 +1021,8 @@ subtest 'ModItemFromMarc' => sub { > > my $updated_item = ModItemFromMarc($updated_item_record, $biblio->biblionumber, $itemnumber); > is( $updated_item->{itemlost}, 0, 'itemlost should have been reset to the default value in DB' ); >+ is( $updated_item->{paidfor}, "this is something", "Non mapped field has not been reset" ); >+ is( Koha::Items->find($itemnumber)->paidfor, "this is something" ); > > $schema->storage->txn_rollback; > }; >-- >2.20.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 25964
:
106695
|
106752
|
106765