1 # @tag: change_taxzone_id_0
2 # @description: Verändert die id von 0 auf einen anderen Wert größer 0 in tax_zones, wenn es so einen Eintrag gibt und setzt zwei Fremdschlüssel von Tabellen ar/ap auf tax_zones.
3 # @depends: convert_taxzone taxzone_default_id taxzone_sortkey
4 package SL::DBUpgrade2::change_taxzone_id_0;
9 use parent qw(SL::DBUpgrade2::Base);
14 my $query = qq|SELECT id FROM tax_zones ORDER BY id DESC LIMIT 1|;
15 my ($id) = $self->dbh->selectrow_array($query);
18 $query = qq|SELECT * FROM tax_zones WHERE id=0|;
19 my $sth = $self->dbh->prepare($query);
20 $sth->execute || $::form->dberror($query);
22 if (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
24 $query = qq|INSERT INTO tax_zones (id, description, sortkey) VALUES (?,?,?)|;
25 $self->db_query($query, bind => [ $id, $ref->{description}, $ref->{sortkey} ]);
27 $query = qq|UPDATE taxzone_charts SET taxzone_id=$id WHERE taxzone_id=0|;
28 $self->db_query($query);
30 $query = qq|DELETE FROM tax_zones WHERE id=0|;
31 $self->db_query($query);
33 #Adapt other tables to the new id:
34 $query = qq|UPDATE ar SET taxzone_id=$id WHERE taxzone_id=0|;
35 $self->db_query($query);
37 $query = qq|UPDATE ap SET taxzone_id=$id WHERE taxzone_id=0|;
38 $self->db_query($query);
42 $query = qq|ALTER TABLE ar ADD FOREIGN KEY (taxzone_id) REFERENCES tax_zones (id)|;
43 $self->db_query($query);
45 $query = qq|ALTER TABLE ap ADD FOREIGN KEY (taxzone_id) REFERENCES tax_zones (id)|;
46 $self->db_query($query);