Actually the test to allow deleting an item type is : sub can_be_deleted { my ($self) = @_; my $nb_items = Koha::Items->search( { itype => $self->itemtype } )->count; my $nb_biblioitems = Koha::Biblioitems->search( { itemtype => $self->itemtype } )->count; return $nb_items + $nb_biblioitems == 0 ? 1 : 0; } But using item types on biblioitems.itemtype is not mandatory (for items.itype I do not know), so we should test if this DB column is configured in frameworks to use item types.
I am not sure I understand. In which cases it's a problem? You want to delete itemtype 'BOOK', 'BOOK' is used in biblioitems.itemtype but not using the 'itemtype' plugin and so you want to be able to delete the itemtype?
I think the problem here is something that we will encounter again and again. You can remove the plugin from the frameworks and use another list of authorised values for biblioitems.itemtype and I know some Biblibre libraries have done this, but I really believe that it's a terrible idea. Because on the other side we have hold features, article requests features, search and display features relying on this to be an actual item type. Note: I am speaking of features for item level itypes! We can change the check here... but I believe that we should not support this use case. It's harmful to the libraries locking them out of functionality and will keep having us add code and workarounds. ... and instead of changing the check you could use different codes to fix the issue locally in this case?
OK I close. We have a local fix : https://git.biblibre.com/biblibre/kohac/commit/c1a54004bff33174bde56c2ae3adad6eb417bc79