Bearb. Buchungsgruppen: Spalte taxzone_id in oe/delivery_orders konvertieren
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 26 Aug 2014 08:53:15 +0000 (10:53 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 26 Aug 2014 08:55:33 +0000 (10:55 +0200)
1. Werte 0 und NULL durch neue ID für »Inland« ersetzen (oe,
   delivery_orders, ar, ap)

2. Spalte taxzone_id NOT NULL setzen (oe, delivery_orders, ar, ap)

3. Fremdschlüssel auf Tabelle tax_zones setzen (oe, delivery_orders)

SL/DB/MetaSetup/DeliveryOrder.pm
SL/DB/MetaSetup/Invoice.pm
SL/DB/MetaSetup/Order.pm
SL/DB/MetaSetup/PurchaseInvoice.pm
sql/Pg-upgrade2/taxzone_id_in_oe_delivery_orders.sql [new file with mode: 0644]

index a1efe9a..c4ee930 100644 (file)
@@ -35,7 +35,7 @@ __PACKAGE__->meta->columns(
   shipto_id               => { type => 'integer' },
   shipvia                 => { type => 'text' },
   taxincluded             => { type => 'boolean' },
-  taxzone_id              => { type => 'integer' },
+  taxzone_id              => { type => 'integer', not_null => 1 },
   terms                   => { type => 'integer' },
   transaction_description => { type => 'text' },
   transdate               => { type => 'date', default => 'now()' },
@@ -97,6 +97,11 @@ __PACKAGE__->meta->foreign_keys(
     key_columns => { shipto_id => 'shipto_id' },
   },
 
+  taxzone => {
+    class       => 'SL::DB::TaxZone',
+    key_columns => { taxzone_id => 'id' },
+  },
+
   vendor => {
     class       => 'SL::DB::Vendor',
     key_columns => { vendor_id => 'id' },
index b80cee7..72aaa45 100644 (file)
@@ -52,7 +52,7 @@ __PACKAGE__->meta->columns(
   storno                    => { type => 'boolean', default => 'false' },
   storno_id                 => { type => 'integer' },
   taxincluded               => { type => 'boolean' },
-  taxzone_id                => { type => 'integer' },
+  taxzone_id                => { type => 'integer', not_null => 1 },
   terms                     => { type => 'integer', default => '0' },
   transaction_description   => { type => 'text' },
   transdate                 => { type => 'date', default => 'now' },
index 92bb92f..5e67aac 100644 (file)
@@ -44,7 +44,7 @@ __PACKAGE__->meta->columns(
   shipto_id               => { type => 'integer' },
   shipvia                 => { type => 'text' },
   taxincluded             => { type => 'boolean' },
-  taxzone_id              => { type => 'integer' },
+  taxzone_id              => { type => 'integer', not_null => 1 },
   transaction_description => { type => 'text' },
   transdate               => { type => 'date', default => 'now' },
   vendor_id               => { type => 'integer' },
@@ -120,6 +120,11 @@ __PACKAGE__->meta->foreign_keys(
     key_columns => { shipto_id => 'shipto_id' },
   },
 
+  taxzone => {
+    class       => 'SL::DB::TaxZone',
+    key_columns => { taxzone_id => 'id' },
+  },
+
   vendor => {
     class       => 'SL::DB::Vendor',
     key_columns => { vendor_id => 'id' },
index 6de5abd..b3cb029 100644 (file)
@@ -40,7 +40,7 @@ __PACKAGE__->meta->columns(
   storno                  => { type => 'boolean', default => 'false' },
   storno_id               => { type => 'integer' },
   taxincluded             => { type => 'boolean', default => 'false' },
-  taxzone_id              => { type => 'integer' },
+  taxzone_id              => { type => 'integer', not_null => 1 },
   transaction_description => { type => 'text' },
   transdate               => { type => 'date', default => 'now' },
   type                    => { type => 'text' },
diff --git a/sql/Pg-upgrade2/taxzone_id_in_oe_delivery_orders.sql b/sql/Pg-upgrade2/taxzone_id_in_oe_delivery_orders.sql
new file mode 100644 (file)
index 0000000..00a654e
--- /dev/null
@@ -0,0 +1,16 @@
+-- @tag: taxzone_id_in_oe_delivery_orders
+-- @description: Werte für Inland in Spalte taxzone_id in Tabellen oe und delivery_orders in Foreign Key zu tax_zones konvertieren; NULL-Werte in ap/ar verhindern; Spalten NOT NULL setzen
+-- @depends: change_taxzone_id_0
+
+UPDATE oe              SET taxzone_id = (SELECT id FROM tax_zones WHERE description = 'Inland') WHERE (taxzone_id = 0) OR (taxzone_id IS NULL);
+UPDATE delivery_orders SET taxzone_id = (SELECT id FROM tax_zones WHERE description = 'Inland') WHERE (taxzone_id = 0) OR (taxzone_id IS NULL);
+UPDATE ar              SET taxzone_id = (SELECT id FROM tax_zones WHERE description = 'Inland') WHERE (taxzone_id = 0) OR (taxzone_id IS NULL);
+UPDATE ap              SET taxzone_id = (SELECT id FROM tax_zones WHERE description = 'Inland') WHERE (taxzone_id = 0) OR (taxzone_id IS NULL);
+
+ALTER TABLE oe              ALTER COLUMN taxzone_id SET NOT NULL;
+ALTER TABLE delivery_orders ALTER COLUMN taxzone_id SET NOT NULL;
+ALTER TABLE ar              ALTER COLUMN taxzone_id SET NOT NULL;
+ALTER TABLE ap              ALTER COLUMN taxzone_id SET NOT NULL;
+
+ALTER TABLE oe              ADD CONSTRAINT oe_taxzone_id_fkey              FOREIGN KEY (taxzone_id) REFERENCES tax_zones (id);
+ALTER TABLE delivery_orders ADD CONSTRAINT delivery_orders_taxzone_id_fkey FOREIGN KEY (taxzone_id) REFERENCES tax_zones (id);