Bug 34266: Default to biblioitems.itemtype only if it's a valid itemtype
biblioitems.itemtype can contain values that are not itemtypes (for instance if the MARC field mapped to it uses another authorised value category) This patch checks that before using it as a default value for the 'itemtypes' item subfield. Test plan: 0. Do not apply the patch yet 1. Change your MARC framework so that the field linked to biblioitems.itemtype uses an authorised value category different from 'itemtypes' 2. Make sure that you have an item subfield linked to the authorised value 'itemtypes' in your MARC framework 3. Create a biblio with an itemtype (using a value that is NOT an item type, but a value from the authorised value category you selected in step 1) 4. Create a new item for this biblio. Notice that the biblio itemtype is automatically selected for the 'itemtypes' subfield 5. Apply the patch 6. Create a new item for the same biblio. Now the 'itemtypes' subfield should be empty. 7. Revert the change at step 1 so that your biblioitems.itemtype MARC field uses the 'itemtypes' AV category 8. Modify your biblio to use a valid item type. 9. Create a new item. The biblio itemtype should be used as a default value Signed-off-by: joubu <xxx@example.org> Signed-off-by: tuxayo <victor@tuxayo.net> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
ed2b395a10
commit
807c58d28d
1 changed files with 7 additions and 1 deletions
|
@ -16,6 +16,7 @@ package Koha::UI::Form::Builder::Item;
|
||||||
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
||||||
|
|
||||||
use Modern::Perl;
|
use Modern::Perl;
|
||||||
|
use List::Util qw( any );
|
||||||
use MARC::Record;
|
use MARC::Record;
|
||||||
use C4::Context;
|
use C4::Context;
|
||||||
use C4::Biblio qw( GetFrameworkCode GetMarcStructure IsMarcStructureInternal );
|
use C4::Biblio qw( GetFrameworkCode GetMarcStructure IsMarcStructureInternal );
|
||||||
|
@ -224,7 +225,12 @@ sub generate_subfield_form {
|
||||||
my $itype_sth = $dbh->prepare(
|
my $itype_sth = $dbh->prepare(
|
||||||
"SELECT itemtype FROM biblioitems WHERE biblionumber = ?");
|
"SELECT itemtype FROM biblioitems WHERE biblionumber = ?");
|
||||||
$itype_sth->execute($biblionumber);
|
$itype_sth->execute($biblionumber);
|
||||||
($value) = $itype_sth->fetchrow_array;
|
my ($biblio_itemtype) = $itype_sth->fetchrow_array;
|
||||||
|
|
||||||
|
# Use biblioitems.itemtype as a default value only if it's a valid itemtype
|
||||||
|
if ( any { $_ eq $biblio_itemtype } @authorised_values ) {
|
||||||
|
$value = $biblio_itemtype;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#---- class_sources
|
#---- class_sources
|
||||||
|
|
Loading…
Reference in a new issue