@@ -, +, @@ 'return' rows --- installer/data/mysql/updatedatabase.pl | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -10796,6 +10796,46 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.21.00.XXX"; +if ( CheckVersion($DBversion) ) { + + $sth = $dbh->prepare(q{ + SELECT s.itemnumber, i.itype, b.itemtype FROM + ( SELECT DISTINCT itemnumber + FROM statistics + WHERE type="return" AND itemtype IS NULL ) s + LEFT JOIN + ( SELECT itemnumber,biblionumber, itype + FROM items ) i + ON (s.itemnumber=i.itemnumber) + LEFT JOIN + ( SELECT biblionumber, itemtype + FROM biblioitems ) b + ON (i.biblionumber=b.biblionumber) + }); + $sth->execute(); + + my $update_sth = $dbh->prepare(q{ + UPDATE statistics + SET itemtype=? + WHERE itemnumber=? AND itemtype IS NULL + }); + my $ilevel_itypes = C4::Context->preference('item-level_itypes'); + + while ( my ($itemnumber,$item_itype,$biblio_itype) = $sth->fetchrow_array ) { + + my $effective_itemtype = $ilevel_itypes + ? $item_itype // $biblio_itype + : $biblio_itype; + warn "item-level_itypes set but no itype defined for item ($itemnumber)" + if $ilevel_itypes and !defined $item_itype; + $update_sth->execute( $effective_itemtype, $itemnumber ); + } + + print "Upgrade to $DBversion done (Bug 14598: itemtype is not set on statistics by C4::Circulation::AddReturn)\n"; + SetVersion($DBversion); +} + # DEVELOPER PROCESS, search for anything to execute in the db_update directory # SEE bug 13068 # if there is anything in the atomicupdate, read and execute it. --