id ungleich Null setzen in tax_zones
authorNiclas Zimmermann <niclas@kivitendo-premium.de>
Thu, 5 Sep 2013 09:36:36 +0000 (11:36 +0200)
committerG. Richardson <information@kivitendo-premium.de>
Mon, 4 Aug 2014 15:31:39 +0000 (17:31 +0200)
In der Tabelle tax_zones gibt es sehr häufig noch Einträge mit id=0.
Dadurch kommt es bei der Anzeige, und auch beim Bearbeiten dieses
Eintrags zu fehlern. Dieser Commit vergibt verändert den Wert der
id, s.d. die id einen von 0 verschiedenen Wert hat.

sql/Pg-upgrade2/change_taxzone_id_0.pl [new file with mode: 0644]

diff --git a/sql/Pg-upgrade2/change_taxzone_id_0.pl b/sql/Pg-upgrade2/change_taxzone_id_0.pl
new file mode 100644 (file)
index 0000000..2afb053
--- /dev/null
@@ -0,0 +1,38 @@
+# @tag: change_taxzone_id_0
+# @description: Verändert die id von 0 auf einen anderen Wert größer 0 in tax_zones, wenn es so einen Eintrag gibt.
+# @depends: convert_taxzone taxzone_default_id taxzone_sortkey
+package SL::DBUpgrade2::change_taxzone_id_0;
+
+use strict;
+use utf8;
+
+use parent qw(SL::DBUpgrade2::Base);
+
+sub run {
+  my ($self) = @_;
+
+  my $query = qq|SELECT id FROM tax_zones ORDER BY id DESC|;
+  my ($id) = $self->dbh->selectrow_array($query);
+  $id++;
+
+  $query = qq|SELECT * FROM tax_zones WHERE id=0|;
+  my $sth = $self->dbh->prepare($query);
+  $sth->execute || $::form->dberror($query);
+
+  my $ref = $sth->fetchrow_hashref("NAME_lc");
+
+  $query = qq|INSERT INTO tax_zones (id, description, sortkey) VALUES (?,?,?)|;
+  $self->db_query($query, bind => [ $id, $ref->{description}, $ref->{sortkey} ]);
+
+  $query = qq|UPDATE taxzone_charts SET taxzone_id=$id WHERE taxzone_id=0|;
+  $self->db_query($query);
+
+  $sth->finish;
+
+  $query = qq|DELETE FROM tax_zones WHERE id=0|;
+  $self->db_query($query);
+
+  return 1;
+} # end run
+
+1;