From 89cb8d6ccccfb8851760ffebe6a25cb071a233ff Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Mon, 9 Feb 2015 16:26:32 +0100 Subject: [PATCH] Bug 11708: Remove column aqbasketgroups.closed It is redundant with aqbasketgroups.closeddate Signed-off-by: Paola Rossi Patch updated: use atomic update --- C4/Acquisition.pm | 25 +++++++++++++--------- ...g-11708-remove-column-aqbasketgroups-closed.sql | 3 +++ installer/data/mysql/kohastructure.sql | 3 +-- 3 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/Bug-11708-remove-column-aqbasketgroups-closed.sql diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 613eab4d3f..92ab382230 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -476,8 +476,7 @@ sub CloseBasketgroup { my $dbh = C4::Context->dbh; my $sth = $dbh->prepare(" UPDATE aqbasketgroups - SET closed=1, - closeddate=CAST(NOW() AS DATE) + SET closeddate=CAST(NOW() AS DATE) WHERE id=? "); $sth->execute($basketgroupno); @@ -498,7 +497,7 @@ sub ReOpenBasketgroup { my $dbh = C4::Context->dbh; my $sth = $dbh->prepare(" UPDATE aqbasketgroups - SET closed=0, closeddate=NULL + SET closeddate=NULL WHERE id=? "); $sth->execute($basketgroupno); @@ -925,7 +924,7 @@ $hashref->{'freedeliveryplace'} is the 'freedeliveryplace' field of the basketgr $hashref->{'deliverycomment'} is the 'deliverycomment' field of the basketgroup in the aqbasketgroups table, -$hashref->{'closed'} is the 'closed' field of the aqbasketgroups table, it is false if 0, true otherwise. +$hashref->{'closed'} set 'closeddate' if true, or reset 'closeddate' if defined but false. =cut @@ -934,7 +933,7 @@ sub NewBasketgroup { die "booksellerid is required to create a basketgroup" unless $basketgroupinfo->{'booksellerid'}; my $query = "INSERT INTO aqbasketgroups ("; my @params; - foreach my $field (qw(name billingplace deliveryplace freedeliveryplace deliverycomment closed)) { + foreach my $field (qw(name billingplace deliveryplace freedeliveryplace deliverycomment)) { if ( defined $basketgroupinfo->{$field} ) { $query .= "$field, "; push(@params, $basketgroupinfo->{$field}); @@ -989,7 +988,7 @@ $hashref->{'freedeliveryplace'} is the 'freedeliveryplace' field of the basketgr $hashref->{'deliverycomment'} is the 'deliverycomment' field of the basketgroup in the aqbasketgroups table, -$hashref->{'closed'} is the 'closed' field of the aqbasketgroups table, it is false if 0, true otherwise. +$hashref->{'closed'} set 'closeddate' if true, or reset 'closeddate' if defined but false. =cut @@ -1001,12 +1000,12 @@ sub ModBasketgroup { my @params; if ($basketgroupinfo->{closed}) { - $query .= "closeddate = IF(closed = 0, CAST(NOW() AS DATE), closeddate), "; + $query .= "closeddate = IF(closeddate IS NULL, CAST(NOW() AS DATE), closeddate), "; } elsif (defined $basketgroupinfo->{closed}) { $query .= "closeddate = NULL, "; } - foreach my $field (qw(name billingplace deliveryplace freedeliveryplace deliverycomment closed)) { + foreach my $field (qw(name billingplace deliveryplace freedeliveryplace deliverycomment)) { if ( defined $basketgroupinfo->{$field} ) { $query .= "$field=?, "; push(@params, $basketgroupinfo->{$field}); @@ -1079,7 +1078,9 @@ sub GetBasketgroup { { Slice => {} }, $basketgroupid ); - return $result_set->[0]; # id is unique + my $basketgroup = $result_set->[0]; # id is unique + $basketgroup->{closed} = defined($basketgroup->{closeddate}) ? 1 : 0; + return $basketgroup; } #------------------------------------------------------------# @@ -1099,7 +1100,11 @@ sub GetBasketgroups { my $dbh = C4::Context->dbh; my $sth = $dbh->prepare($query); $sth->execute($booksellerid); - return $sth->fetchall_arrayref({}); + my $basketgroups = $sth->fetchall_arrayref({}); + foreach my $bg (@$basketgroups) { + $bg->{closed} = defined($bg->{closeddate}) ? 1 : 0; + } + return $basketgroups; } #------------------------------------------------------------# diff --git a/installer/data/mysql/atomicupdate/Bug-11708-remove-column-aqbasketgroups-closed.sql b/installer/data/mysql/atomicupdate/Bug-11708-remove-column-aqbasketgroups-closed.sql new file mode 100644 index 0000000000..5e95153668 --- /dev/null +++ b/installer/data/mysql/atomicupdate/Bug-11708-remove-column-aqbasketgroups-closed.sql @@ -0,0 +1,3 @@ +UPDATE aqbasketgroups SET closeddate = CAST(NOW() AS DATE) WHERE closed = 1; + +ALTER TABLE aqbasketgroups DROP COLUMN closed; \ No newline at end of file diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 5524129480..d82c69b2dc 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -2807,8 +2807,7 @@ DROP TABLE IF EXISTS `aqbasketgroups`; CREATE TABLE `aqbasketgroups` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) default NULL, - `closed` tinyint(1) default NULL, - closeddate date default NULL, -- the date the basketgroup was closed + `closeddate` date default NULL, `booksellerid` int(11) NOT NULL, `deliveryplace` varchar(10) default NULL, `freedeliveryplace` text default NULL, -- 2.14.2