From d496f547cf3bbb34b27859c4d7bac20872c7a9cc Mon Sep 17 00:00:00 2001 From: tipaul Date: Tue, 30 Sep 2003 16:22:05 +0000 Subject: [PATCH] adding barcode NOT mandatory feature. Just run updatedatabase to get it. Note it's impossible to issue an item without barcode, as issue/returns is based on barcode... --- updater/updatedatabase | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/updater/updatedatabase b/updater/updatedatabase index 550723164a..76543ecdbd 100755 --- a/updater/updatedatabase +++ b/updater/updatedatabase @@ -258,6 +258,9 @@ my %dropable_table = ( serialissues => 'serialissues', ); +# the other hash contains other actions that can't be done elsewhere. they are done +# either BEFORE of AFTER everything else, depending on "when" entry (default => AFTER) + # The tabledata hash contains data that should be in the tables. # The uniquefieldrequired hash entry is used to determine which (if any) fields # must not exist in the table for this row to be inserted. If the @@ -616,6 +619,7 @@ while ( my ($table) = $sth->fetchrow ) { $existingtables{$table} = 1; } + # Now add any missing tables foreach $table ( keys %requiretables ) { print "Checking $table table...\n" if $debug; @@ -757,12 +761,13 @@ foreach $table ( keys %fielddefinitions ) { # Get list of columns from items table my %itemtypes; - +my %nullenabled; $sth = $dbh->prepare("show columns from items"); $sth->execute; while ( my ( $column, $type, $null, $key, $default, $extra ) = $sth->fetchrow ) { $itemtypes{$column} = $type; + $nullenabled{$column} = $null; } unless ( $itemtypes{'barcode'} eq 'varchar(20)' ) { @@ -772,10 +777,23 @@ unless ( $itemtypes{'barcode'} eq 'varchar(20)' ) { print "Setting maximum barcode length to 20 (was $oldlength).\n"; my $sti = $dbh->prepare( - "alter table items change barcode barcode varchar(20) not null"); + "alter table items change barcode barcode varchar(20)"); $sti->execute; } } +# +# dropping unique barcode index & setting barcode to null allowed. +# +$sth = $dbh->prepare("show index from items"); +$sth->execute; +while ( my ( $table, $non_unique, $key_name, $Seq_in_index, $Column_name, $Collation, $cardinality, $sub_part, $Packed, $comment ) = $sth->fetchrow ) +{ + if ($key_name eq 'barcode' && $non_unique eq 0) { + print "dropping BARCODE index to enable empty barcodes\n"; + $dbh->do("ALTER TABLE `items` DROP INDEX `barcode`"); + } +} +$dbh->do("ALTER TABLE `items` CHANGE `barcode` `barcode` VARCHAR( 20 )") unless ($nullenabled{barcode} eq 'YES'); # extending the timestamp in branchtransfers... my %branchtransfers; @@ -896,6 +914,10 @@ $sth->finish; exit; # $Log$ +# Revision 1.59 2003/09/30 16:22:05 tipaul +# adding barcode NOT mandatory feature. Just run updatedatabase to get it. +# Note it's impossible to issue an item without barcode, as issue/returns is based on barcode... +# # Revision 1.58 2003/07/16 04:08:29 acli # Minor spelling correction # -- 2.39.2