]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Fremdschlüssel für Tabellen oe, delivery_orders, parts, translation
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 17 Jan 2013 14:18:03 +0000 (15:18 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 17 Jan 2013 14:47:25 +0000 (15:47 +0100)
SL/DB/DeliveryOrder.pm
SL/DB/MetaSetup/DeliveryOrder.pm
SL/DB/MetaSetup/Order.pm
SL/DB/MetaSetup/Part.pm
SL/DB/MetaSetup/Translation.pm
SL/DB/Order.pm
SL/DB/Part.pm
sql/Pg-upgrade2/oe_delivery_orders_foreign_keys.sql [new file with mode: 0644]
sql/Pg-upgrade2/parts_translation_foreign_keys.sql [new file with mode: 0644]

index 9c860bf7e6c7f69c96b1420e4992836b2a5c55b3..a48dad74c6c021e4a40461a91fdf0e1ce67f3d7d 100644 (file)
@@ -15,14 +15,6 @@ __PACKAGE__->meta->add_relationship(orderitems => { type         => 'one to many
                                                     column_map   => { id => 'delivery_order_id' },
                                                     manager_args => { with_objects => [ 'parts' ] }
                                                   },
                                                     column_map   => { id => 'delivery_order_id' },
                                                     manager_args => { with_objects => [ 'parts' ] }
                                                   },
-                                    shipto => { type       => 'one to one',
-                                                class      => 'SL::DB::Shipto',
-                                                column_map => { shipto_id => 'shipto_id' },
-                                              },
-                                    department => { type       => 'one to one',
-                                                    class      => 'SL::DB::Department',
-                                                    column_map => { department_id => 'id' },
-                                                  },
                                    );
 
 __PACKAGE__->meta->initialize;
                                    );
 
 __PACKAGE__->meta->initialize;
index fb4b82818a45a77276d9e3f0f70a5433b52a1ae9..523312160efbac71f3586b4448bd01ae6dff8b0f 100644 (file)
@@ -57,6 +57,11 @@ __PACKAGE__->meta->setup(
       key_columns => { customer_id => 'id' },
     },
 
       key_columns => { customer_id => 'id' },
     },
 
+    department => {
+      class       => 'SL::DB::Department',
+      key_columns => { department_id => 'id' },
+    },
+
     employee => {
       class       => 'SL::DB::Employee',
       key_columns => { employee_id => 'id' },
     employee => {
       class       => 'SL::DB::Employee',
       key_columns => { employee_id => 'id' },
@@ -77,6 +82,11 @@ __PACKAGE__->meta->setup(
       key_columns => { salesman_id => 'id' },
     },
 
       key_columns => { salesman_id => 'id' },
     },
 
+    shipto => {
+      class       => 'SL::DB::Shipto',
+      key_columns => { shipto_id => 'shipto_id' },
+    },
+
     vendor => {
       class       => 'SL::DB::Vendor',
       key_columns => { vendor_id => 'id' },
     vendor => {
       class       => 'SL::DB::Vendor',
       key_columns => { vendor_id => 'id' },
index 3595026b08e5e117825737985cee3ce84e12b51e..de072ec7053ea7e49bf66dd390ab4a33b39e624c 100644 (file)
@@ -28,7 +28,7 @@ __PACKAGE__->meta->setup(
     quonumber               => { type => 'text' },
     cusordnumber            => { type => 'text' },
     intnotes                => { type => 'text' },
     quonumber               => { type => 'text' },
     cusordnumber            => { type => 'text' },
     intnotes                => { type => 'text' },
-    department_id           => { type => 'integer', default => '0' },
+    department_id           => { type => 'integer' },
     itime                   => { type => 'timestamp', default => 'now()' },
     mtime                   => { type => 'timestamp' },
     shipvia                 => { type => 'text' },
     itime                   => { type => 'timestamp', default => 'now()' },
     mtime                   => { type => 'timestamp' },
     shipvia                 => { type => 'text' },
@@ -53,26 +53,66 @@ __PACKAGE__->meta->setup(
   allow_inline_column_values => 1,
 
   foreign_keys => [
   allow_inline_column_values => 1,
 
   foreign_keys => [
+    contact => {
+      class       => 'SL::DB::Contact',
+      key_columns => { cp_id => 'cp_id' },
+    },
+
     customer => {
       class       => 'SL::DB::Customer',
       key_columns => { customer_id => 'id' },
     },
 
     customer => {
       class       => 'SL::DB::Customer',
       key_columns => { customer_id => 'id' },
     },
 
+    delivery_customer => {
+      class       => 'SL::DB::Customer',
+      key_columns => { delivery_customer_id => 'id' },
+    },
+
+    delivery_vendor => {
+      class       => 'SL::DB::Vendor',
+      key_columns => { delivery_vendor_id => 'id' },
+    },
+
+    department => {
+      class       => 'SL::DB::Department',
+      key_columns => { department_id => 'id' },
+    },
+
     employee => {
       class       => 'SL::DB::Employee',
       key_columns => { employee_id => 'id' },
     },
 
     employee => {
       class       => 'SL::DB::Employee',
       key_columns => { employee_id => 'id' },
     },
 
+    employee_obj => {
+      class       => 'SL::DB::Employee',
+      key_columns => { employee_id => 'id' },
+    },
+
     globalproject => {
       class       => 'SL::DB::Project',
       key_columns => { globalproject_id => 'id' },
     },
 
     globalproject => {
       class       => 'SL::DB::Project',
       key_columns => { globalproject_id => 'id' },
     },
 
+    language => {
+      class       => 'SL::DB::Language',
+      key_columns => { language_id => 'id' },
+    },
+
+    payment => {
+      class       => 'SL::DB::PaymentTerm',
+      key_columns => { payment_id => 'id' },
+    },
+
     salesman => {
       class       => 'SL::DB::Employee',
       key_columns => { salesman_id => 'id' },
     },
 
     salesman => {
       class       => 'SL::DB::Employee',
       key_columns => { salesman_id => 'id' },
     },
 
+    shipto => {
+      class       => 'SL::DB::Shipto',
+      key_columns => { shipto_id => 'shipto_id' },
+    },
+
     vendor => {
       class       => 'SL::DB::Vendor',
       key_columns => { vendor_id => 'id' },
     vendor => {
       class       => 'SL::DB::Vendor',
       key_columns => { vendor_id => 'id' },
index d4e142b741a3343bfe97091e8d6208f8f18c1662..c94c66c38ecf6bd62cce98773dd294058183cd31 100644 (file)
@@ -60,6 +60,21 @@ __PACKAGE__->meta->setup(
       key_columns => { buchungsgruppen_id => 'id' },
     },
 
       key_columns => { buchungsgruppen_id => 'id' },
     },
 
+    partsgroup => {
+      class       => 'SL::DB::PartsGroup',
+      key_columns => { partsgroup_id => 'id' },
+    },
+
+    payment => {
+      class       => 'SL::DB::PaymentTerm',
+      key_columns => { payment_id => 'id' },
+    },
+
+    price_factor => {
+      class       => 'SL::DB::PriceFactor',
+      key_columns => { price_factor_id => 'id' },
+    },
+
     unit_obj => {
       class       => 'SL::DB::Unit',
       key_columns => { unit => 'name' },
     unit_obj => {
       class       => 'SL::DB::Unit',
       key_columns => { unit => 'name' },
index acd9606ac89ca020e00f82c7adce3bfa827ad576..54165bb776b2d8de98f6ada7c8d6f90988c00c3d 100644 (file)
@@ -22,6 +22,13 @@ __PACKAGE__->meta->setup(
   primary_key_columns => [ 'id' ],
 
   allow_inline_column_values => 1,
   primary_key_columns => [ 'id' ],
 
   allow_inline_column_values => 1,
+
+  foreign_keys => [
+    language => {
+      class       => 'SL::DB::Language',
+      key_columns => { language_id => 'id' },
+    },
+  ],
 );
 
 1;
 );
 
 1;
index b5e8c90f8175b0688bb3e3dcea50a589175ac715..b3edda5dc85dfb72504a66a229e2694b786eace5 100644 (file)
@@ -31,38 +31,14 @@ __PACKAGE__->meta->add_relationship(
     class                  => 'SL::DB::PeriodicInvoicesConfig',
     column_map             => { id => 'oe_id' },
   },
     class                  => 'SL::DB::PeriodicInvoicesConfig',
     column_map             => { id => 'oe_id' },
   },
-  payment_term => {
-    type       => 'one to one',
-    class      => 'SL::DB::PaymentTerm',
-    column_map => { payment_id => 'id' },
-  },
-  contact      => {
-    type       => 'one to one',
-    class      => 'SL::DB::Contact',
-    column_map => { cp_id => 'cp_id' },
-  },
-  shipto       => {
-    type       => 'one to one',
-    class      => 'SL::DB::Shipto',
-    column_map => { shipto_id => 'shipto_id' },
-  },
-  department   => {
-    type       => 'one to one',
-    class      => 'SL::DB::Department',
-    column_map => { department_id => 'id' },
-  },
-  language     => {
-    type       => 'one to one',
-    class      => 'SL::DB::Language',
-    column_map => { language_id => 'id' },
-  },
 );
 
 __PACKAGE__->meta->initialize;
 
 # methods
 
 );
 
 __PACKAGE__->meta->initialize;
 
 # methods
 
-sub items { goto &orderitems; }
+sub items         { goto &orderitems; }
+sub payment_terms { goto &payment;    }
 
 sub type {
   my $self = shift;
 
 sub type {
   my $self = shift;
index 1ef2c1b68164724f967d1df8a9057d05cce46e63..5c795f197b07409fe3594e1e3bbcae339e21eb81 100644 (file)
@@ -21,16 +21,6 @@ __PACKAGE__->meta->add_relationships(
     class        => 'SL::DB::Assembly',
     column_map   => { id => 'id' },
   },
     class        => 'SL::DB::Assembly',
     column_map   => { id => 'id' },
   },
-  partsgroup                     => {
-    type         => 'one to one',
-    class        => 'SL::DB::PartsGroup',
-    column_map   => { partsgroup_id => 'id' },
-  },
-  price_factor   => {
-    type         => 'one to one',
-    class        => 'SL::DB::PriceFactor',
-    column_map   => { price_factor_id => 'id' },
-  },
   prices         => {
     type         => 'one to many',
     class        => 'SL::DB::Price',
   prices         => {
     type         => 'one to many',
     class        => 'SL::DB::Price',
diff --git a/sql/Pg-upgrade2/oe_delivery_orders_foreign_keys.sql b/sql/Pg-upgrade2/oe_delivery_orders_foreign_keys.sql
new file mode 100644 (file)
index 0000000..2e2e8c9
--- /dev/null
@@ -0,0 +1,28 @@
+-- @tag: oe_delivery_orders_foreign_keys
+-- @description: Fremdschlüsseldefinitionen für oe und delivery_orders
+-- @depends: release_3_0_0
+-- @charset: utf-8
+ALTER TABLE oe ALTER COLUMN department_id DROP DEFAULT;
+
+UPDATE oe              SET cp_id                = NULL WHERE (cp_id                IS NOT NULL) AND (cp_id                NOT IN (SELECT cp_id     FROM contacts));
+UPDATE oe              SET delivery_customer_id = NULL WHERE (delivery_customer_id IS NOT NULL) AND (delivery_customer_id NOT IN (SELECT id        FROM customer));
+UPDATE oe              SET delivery_vendor_id   = NULL WHERE (delivery_vendor_id   IS NOT NULL) AND (delivery_vendor_id   NOT IN (SELECT id        FROM vendor));
+UPDATE oe              SET department_id        = NULL WHERE (department_id        IS NOT NULL) AND (department_id        NOT IN (SELECT id        FROM department));
+UPDATE oe              SET language_id          = NULL WHERE (language_id          IS NOT NULL) AND (language_id          NOT IN (SELECT id        FROM language));
+UPDATE oe              SET payment_id           = NULL WHERE (payment_id           IS NOT NULL) AND (payment_id           NOT IN (SELECT id        FROM payment_terms));
+UPDATE oe              SET shipto_id            = NULL WHERE (shipto_id            IS NOT NULL) AND (shipto_id            NOT IN (SELECT shipto_id FROM shipto));
+
+UPDATE delivery_orders SET department_id        = NULL WHERE (department_id        IS NOT NULL) AND (department_id        NOT IN (SELECT id        FROM department));
+UPDATE delivery_orders SET shipto_id            = NULL WHERE (shipto_id            IS NOT NULL) AND (shipto_id            NOT IN (SELECT shipto_id FROM shipto));
+
+ALTER TABLE oe              ADD FOREIGN KEY (cp_id)                REFERENCES contacts      (cp_id);
+ALTER TABLE oe              ADD FOREIGN KEY (delivery_customer_id) REFERENCES customer      (id);
+ALTER TABLE oe              ADD FOREIGN KEY (delivery_vendor_id)   REFERENCES vendor        (id);
+ALTER TABLE oe              ADD FOREIGN KEY (department_id)        REFERENCES department    (id);
+ALTER TABLE oe              ADD FOREIGN KEY (employee_id)          REFERENCES employee      (id);
+ALTER TABLE oe              ADD FOREIGN KEY (language_id)          REFERENCES language      (id);
+ALTER TABLE oe              ADD FOREIGN KEY (payment_id)           REFERENCES payment_terms (id);
+ALTER TABLE oe              ADD FOREIGN KEY (shipto_id)            REFERENCES shipto        (shipto_id);
+
+ALTER TABLE delivery_orders ADD FOREIGN KEY (department_id)        REFERENCES department    (id);
+ALTER TABLE delivery_orders ADD FOREIGN KEY (shipto_id)            REFERENCES shipto        (shipto_id);
diff --git a/sql/Pg-upgrade2/parts_translation_foreign_keys.sql b/sql/Pg-upgrade2/parts_translation_foreign_keys.sql
new file mode 100644 (file)
index 0000000..77b6a72
--- /dev/null
@@ -0,0 +1,14 @@
+-- @tag: parts_translation_foreign_keys
+-- @description: Fremdschlüsseldefinitionen für parts, translation
+-- @depends: release_3_0_0
+-- @charset: utf-8
+
+UPDATE parts SET partsgroup_id   = NULL WHERE (partsgroup_id   IS NOT NULL) AND (partsgroup_id   NOT IN (SELECT id FROM partsgroup));
+UPDATE parts SET payment_id      = NULL WHERE (payment_id      IS NOT NULL) AND (payment_id      NOT IN (SELECT id FROM payment_terms));
+UPDATE parts SET price_factor_id = NULL WHERE (price_factor_id IS NOT NULL) AND (price_factor_id NOT IN (SELECT id FROM price_factors));
+
+ALTER TABLE parts ADD FOREIGN KEY (partsgroup_id)   REFERENCES partsgroup    (id);
+ALTER TABLE parts ADD FOREIGN KEY (price_factor_id) REFERENCES price_factors (id);
+ALTER TABLE parts ADD FOREIGN KEY (payment_id)      REFERENCES payment_terms (id);
+
+ALTER TABLE translation ADD FOREIGN KEY (language_id) REFERENCES language (id);