Bug 27509: Prevent cn_sort value to be lost when editing items
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 21 Jan 2021 16:21:15 +0000 (17:21 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Fri, 22 Jan 2021 12:46:38 +0000 (13:46 +0100)
commitdcd4ab94cd0a7b0a599cdc507810f9a8eb819202
treedf6802981e979eccd72acdc11307f13305f1a861
parenta57278f39b8c5b7a82b21671f266dbf32e2d41a0
Bug 27509: Prevent cn_sort value to be lost when editing items

This is a bit dirty, cn_sort is not passed from the UI but built in
Koha::Item->store depending on the values of itemcallnumber and
cn_source.
It must be updated only if one of those 2 attributes are modified.
The problem is that, as it's not passed, $item->{cn_sort} does not exist,
and set_or_blank will set it to undef.
The trick here is to backup the value before set_or_blank and set it
back to the item object.
Another solution would be to force the processing of cn_sort each time
we call Koha::Item->store. I don't think that's a good idea.

Test plan:
- Create a new item with a cn_source value and an itemcallnumber value
- write a quick report to see the cn_sort value: SELECT cn_sort FROM items WHERE itemnumber=your itemnumber, see your item has a cn_sort value
- edit your item and save it without changing either the cn_source of the itemcallnumber
- run your report again, cn_sort is not modified
- edit your item, changing either the cn_source or itemcallnumber
- run report again, cn_sort is modified as expected

Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
C4/Items.pm
t/db_dependent/Items.t