Koha-clms/t/db_dependent
Jonathan Druart a881984413
Bug 23463: Use new method Koha::Object->set_or_blank
This patch fixes an issue when editing items.

* The issue
Cannot blank a subfield when editing an item.
If you have an item with itemcallnumber=42, then edit it, blank it and
save. The itemcallnumber is still 42

* Why? (line numbers from https://gitlab.com/joubu/Koha/-/tree/bug_23463)
additem (and other item's edition forms) receives a list of tags,
subfields and values, generates a MARC::Record::XML then calls
ModItemFromMarc:

717     my $itemtosave=MARC::Record::new_from_xml($xml, 'UTF-8');
727         my $newitem = ModItemFromMarc($itemtosave, $biblionumber,
$itemnumber);

And ModItemFromMarc:
 282     my $item = TransformMarcToKoha( $localitemmarc,
$frameworkcode, 'items' );
 283     $item->{cn_source} = delete $item->{'items.cn_source'}; #
Because of C4::Biblio::_disambiguate
 284     $item_object->set($item);

ModItemFromMarc never knows that the field has been blank.
Prior to bug 23463 we had a map of default values, and ModItemFromMarc
was doing:
 426     my $item = TransformMarcToKoha( $localitemmarc,
$frameworkcode, 'items' );
 427     my $default_values = _build_default_values_for_mod_marc();
 428     foreach my $item_field ( keys %$default_values ) {
 429         $item->{$item_field} = $default_values->{$item_field}
 430           unless exists $item->{$item_field};
 431     }

I do not want to reinsert that list of default values.

Here I wrote a generic method in Koha::Object to set the value passed in parameter,
or "blank" if not passed.
It's nulled if can be set to null in DB, or the default value is retrieved from
the schema info.

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2020-03-23 09:26:34 +00:00
..
Acquisition Bug 23463: Fix CancelReceipt.t 2020-03-23 09:26:31 +00:00
Auth Bug 20128: (QA follow-up) Corrections to haspermission 2019-04-17 12:25:26 +00:00
Authority
…
Biblio Bug 22721: Remove frameworkcode parameter in GetMarcFromKohaField calls 2019-07-15 11:28:08 +01:00
Circulation Bug 23463: Fix IsItemIssued.t 2020-03-23 09:26:34 +00:00
CourseReserves Bug 22142: Do not revert data if 'unchanged' was set 2019-08-13 11:22:13 +01:00
Creators
…
Exporter Bug 22155: Adapt uses of biblio_metadata.marcflavour to schema 2019-01-30 11:35:34 +00:00
Holds Bug 23463: Replace AddItem calls with Koha::Item->store 2020-03-23 09:26:26 +00:00
Illrequest Bug 20750: Add unit tests 2019-03-15 19:07:08 +00:00
Items Bug 23463: Move DelItem.t and Items_DelItemCheck.t tests to a Koha/Item.t subtest 2020-03-23 09:26:33 +00:00
Koha Bug 23463: Use new method Koha::Object->set_or_blank 2020-03-23 09:26:34 +00:00
LDAP
…
Labels Bug 23463: Replace ModItem with Koha::Item->store 2020-03-23 09:26:30 +00:00
Letters Bug 14711: Change prototype for AddReserve - pass a hashref 2020-02-11 14:32:47 +00:00
Members Bug 23463: Fix tests 2020-03-23 09:26:34 +00:00
OAI Bug 24531: Test for OAI-PMH sets and repeated fields 2020-02-14 12:00:20 +00:00
Patron Bug 23463: Replace AddItem calls with Koha::Item->store 2020-03-23 09:26:26 +00:00
Record Bug 24029: Remove "Truncated incorrect DOUBLE value: '01e'" from marcrecord2csv.t 2019-11-13 13:22:11 +00:00
Reports Bug 24511: Update variable names to avoid confusion 2020-01-27 10:14:15 +00:00
Reserves Bug 14711: Change prototype for AddReserve - pass a hashref 2020-02-11 14:32:47 +00:00
SIP Bug 24553: Unit tests 2020-03-20 15:39:14 +00:00
Search Bug 22048: Use set_password in tests 2019-01-25 20:15:31 +00:00
Serials Bug 7047: (QA follow-up) Fix tests 2019-12-23 12:07:15 +00:00
Template/Plugin Bug 23463: Replace AddItem calls with Koha::Item->store 2020-03-23 09:26:26 +00:00
Utils Bug 17374: (follow-up) Unit tests 2020-03-10 15:18:29 +00:00
XSLT_Handler
…
api/v1 Bug 24862: Regression tests 2020-03-16 14:44:02 +00:00
cronjobs Bug 24268: Unit tests 2019-12-20 12:05:47 +00:00
data Bug 11677: Use zebra not-onloan-count index for availability limit 2019-08-20 15:00:16 +01:00
selenium Bug 17374: (follow-up) Unit tests 2020-03-10 15:18:29 +00:00
www Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
00-strict.t
…
01-test_dbic.t
…
Accounts.t Bug 24818: (RM follow-up) Update tests for DATE -> TIMESTAMP change 2020-03-19 13:05:58 +00:00
Acquisition.t Bug 23463: Replace AddItem calls with Koha::Item->store 2020-03-23 09:26:26 +00:00
Amazon.t
…
ArticleRequests.t Bug 22273: Modify Koha::ArticleRequest->store to fill created_on 2020-03-02 09:49:57 +00:00
AudioAlerts.t
…
Auth.t Bug 24145: (bug 22543 follow-up) Fix Auth.t 2019-12-02 17:13:27 +00:00
Auth_with_cas.t
…
Auth_with_ldap.t
…
AuthorisedValues.t Bug 23272: Adapt controller and tests 2019-09-13 08:04:15 +01:00
AuthoritiesMarc.t
…
BackgroundJob.t Bug 24760: (follow-up) Add a neighboring test messsage 2020-03-06 14:58:47 +00:00
Barcodes.t
…
Barcodes_ValueBuilder.t Bug 21937: Add test to show autoBarcode annual increment bug 2019-04-19 14:32:17 +00:00
Biblio.t Bug 24094: Unit tests 2020-02-19 11:31:23 +00:00
Bookseller.t Bug 21684: Koha::Object->delete must return a Koha::Object 2020-01-07 16:33:04 +00:00
Breeding.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
Budgets.t Bug 10577: Improve semantics of GetBudgetPeriod() 2019-03-28 12:46:14 +00:00
Cache.t Bug 22808: Move Cache.t to db_dependent 2019-05-07 10:50:00 +00:00
Calendar.t Bug 23974: Add test descriptions 2020-01-10 08:23:50 +00:00
Charset.t Bug 22721: Remove frameworkcode parameter in GetMarcFromKohaField calls 2019-07-15 11:28:08 +01:00
Circulation.t Bug 23463: Replace recently added occurrences 2020-03-23 09:26:32 +00:00
Clubs.t
…
ColumnsSettings.t
…
Context.t
…
Contract.t
…
CourseReserves.t Bug 23463: Replace AddItem calls with Koha::Item->store 2020-03-23 09:26:26 +00:00
DecreaseLoanHighHolds.t Bug 18936: (follow-up) Add foreign key and scope enhancement to circ rules 2020-02-04 09:56:24 +00:00
Filter_MARC_ViewPolicy.t Bug 22721: Remove frameworkcode parameter in GetMarcFromKohaField calls 2019-07-15 11:28:08 +01:00
Fines.t Bug 18936: (follow-up) Add foreign key and scope enhancement to circ rules 2020-02-04 09:56:24 +00:00
FrameworkPlugin.t
…
Heading.t Bug 24269: Adjust C4::Heading to generate headings from auth tags 2020-02-19 13:33:32 +00:00
Heading_MARC21.t Bug 24269: Adjust C4::Heading to generate headings from auth tags 2020-02-19 13:33:32 +00:00
Hold.t Bug 21684: Fix Hold.t 2020-01-07 16:33:04 +00:00
Holds.t Bug 23463: Fix tests 2020-03-23 09:26:34 +00:00
HoldsQueue.t Bug 14711: Change prototype for AddReserve - pass a hashref 2020-02-11 14:32:47 +00:00
Holidays.t
…
ILSDI_Services.t Bug 23531: Simplify tests using build_object 2020-03-18 08:42:56 +00:00
Illcomments.t
…
Illrequestattributes.t
…
Illrequests.t Bug 23112: (QA follow-up) Clean up tests, catch warnings 2020-03-10 11:00:13 +00:00
ImportBatch.t Bug 24827: Add a test 2020-03-16 14:45:53 +00:00
ImportExportFramework.t
…
Installer.t Bug 22472: Add tests 2019-04-11 13:34:09 +00:00
Items.t Bug 23463: Use new method Koha::Object->set_or_blank 2020-03-23 09:26:34 +00:00
Koha.t Bug 22302: Unit tests 2020-02-05 12:35:24 +00:00
Koha_Authority.t
…
Koha_Database.t
…
Koha_Elasticsearch.t Bug 18235: (follow-up) fix tests and remove trailing space 2019-03-28 15:57:32 +00:00
Koha_ExternalContent_OverDrive.t
…
Koha_ExternalContent_RecordedBooks.t
…
Koha_Misc_Files.t
…
Languages.t Bug 18213: Add language facets to Elasticsearch 2019-03-28 15:57:32 +00:00
Letters.t Bug 23673: Avoid sleep in tests 2020-02-05 14:23:32 +00:00
LibraryGroups.t Bug 22284: New methods in Koha::Library::Groups and Koha::Library 2020-01-03 12:58:03 +00:00
Linker_Default.t Bug 24269: Adjust C4::Heading to generate headings from auth tags 2020-02-19 13:33:32 +00:00
Linker_FirstMatch.t Bug 24269: Adjust C4::Heading to generate headings from auth tags 2020-02-19 13:33:32 +00:00
Log.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
MarcModificationTemplates.t Bug 17510: update MMT-related unit tests 2020-02-21 16:01:28 +00:00
Members.t Bug 23579: (RM follow-up) Fix failing tests 2019-10-25 13:13:26 +01:00
MungeMarcPrice.t
…
NewsChannels.t
…
Overdues.t Bug 24408: Do not compare floats with precision in tests 2020-01-13 13:42:45 +00:00
Passwordrecovery.t
…
PatronLists.t Bug 21817: Centralize the mock of userenv from tests 2019-01-02 20:18:29 +00:00
Patroncards.t Bug 22878: Add tests 2019-05-15 12:10:52 +00:00
Patrons.t Bug 17168: (QA follow-up) Only remove guarantor relationship if not Child AND not Professional 2019-10-26 07:37:42 +01:00
Record.t
…
RecordProcessor_EmbedSeeFromHeadings.t
…
RefundLostItemFeeRule.t Bug 18936: (follow-up) Add foreign key and scope enhancement to circ rules 2020-02-04 09:56:24 +00:00
Reports.t
…
Reserves.t Bug 23463: Fix tests 2020-03-23 09:26:34 +00:00
RotatingCollections.t Bug 23463: Replace AddItem calls with Koha::Item->store 2020-03-23 09:26:26 +00:00
Search.t Bug 24735: Remove more code from tests 2020-03-02 11:13:11 +00:00
Serials.t Bug 23416: Add PreserveSerialNotes system preference 2019-08-12 14:35:18 +01:00
Serials_2.t
…
Service.t
…
ShelfBrowser.t Bug 23463: Replace AddItem calls with Koha::Item->store 2020-03-23 09:26:26 +00:00
Sitemapper.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
Stats.t Bug 21683: (follow-up) Remove last occurences of statistics.proccode 2019-03-21 18:19:23 +00:00
StockRotationItems.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
StockRotationRotas.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
StockRotationStages.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
SuggestionEngine_ExplodedTerms.t
…
Suggestions.t Bug 14973: Check existing biblio when submitting a purchase suggestion (opac side) 2020-01-02 12:30:56 +00:00
Tags.t Bug 21846: Simplify ugly double for loops 2019-03-15 12:27:44 +00:00
Templates.t
…
TestBuilder.t Bug 18936: (follow-up) Add foreign key and scope enhancement to circ rules 2020-02-04 09:56:24 +00:00
Upload.t Bug 21684: Fix UploadedFile[s]->delete 2020-01-07 16:32:53 +00:00
UsageStats.t Bug 24735: Remove QueryParser-related code 2020-03-02 11:13:03 +00:00
Virtualshelves.t Bug 21684: Adjust some tests 2020-01-03 10:58:51 +00:00
XISBN.t Bug 23274: Mock simple_search_compat to cover both search engines 2020-01-10 10:48:53 +00:00
XSLT.t Bug 23463: Fix XSLT.t 2020-03-23 09:26:34 +00:00
XSLT_Handler.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
check_kohastructure.t
…
check_sysprefs.t Bug 24545: Fix license statements 2020-02-24 13:31:26 +00:00
db_structure.t
…
rollingloans.t Bug 21817: Centralize the mock of userenv from tests 2019-01-02 20:18:29 +00:00
sysprefs.t Bug 22880: (follow-up) Loose ends: Better DB update, global inclusion, etc. 2020-02-24 13:24:25 +00:00
zebra_config.pl Bug 24735: Remove QueryParser-related code 2020-03-02 11:13:03 +00:00