Rose: Fremdschlüsselbenennung fixen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 22 Jan 2013 15:26:38 +0000 (16:26 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 23 Jan 2013 09:13:10 +0000 (10:13 +0100)
Die von Rose erzeugten Fremdschlüsselaccessoren heißen wie die
Spaltennamen, also z.B. in Perl 'trans' zu Spalte 'trans_id'. Das ist
unintuitiv und muss an vielen Stellen (z.B. bei den manager_args,
with_objects etc.) auch als 'trans' angegeben werden.

Also im Generatorscript gewisse Namen auf sinnvollere Namen mappen.

14 files changed:
SL/DB/DeliveryOrder.pm
SL/DB/DeliveryOrderItem.pm
SL/DB/Invoice.pm
SL/DB/InvoiceItem.pm
SL/DB/MetaSetup/DeliveryOrderItem.pm
SL/DB/MetaSetup/Invoice.pm
SL/DB/MetaSetup/InvoiceItem.pm
SL/DB/MetaSetup/Order.pm
SL/DB/MetaSetup/OrderItem.pm
SL/DB/MetaSetup/PurchaseInvoice.pm
SL/DB/Order.pm
SL/DB/OrderItem.pm
SL/DB/PurchaseInvoice.pm
scripts/rose_auto_create_model.pl

index fda171a..ca36cbd 100644 (file)
@@ -15,7 +15,7 @@ use List::Util qw(first);
 __PACKAGE__->meta->add_relationship(orderitems => { type         => 'one to many',
                                                     class        => 'SL::DB::DeliveryOrderItem',
                                                     column_map   => { id => 'delivery_order_id' },
-                                                    manager_args => { with_objects => [ 'parts' ] }
+                                                    manager_args => { with_objects => [ 'part' ] }
                                                   },
                                    );
 
index 433e676..d50a63f 100644 (file)
@@ -24,9 +24,4 @@ __PACKAGE__->meta->initialize;
 
 # methods
 
-sub part {
-  # canonial alias for parts.
-  goto &parts;
-}
-
 1;
index f75a6cd..b164c03 100644 (file)
@@ -25,7 +25,7 @@ __PACKAGE__->meta->add_relationship(
     class        => 'SL::DB::InvoiceItem',
     column_map   => { id => 'trans_id' },
     manager_args => {
-      with_objects => [ 'parts' ]
+      with_objects => [ 'part' ]
     }
   },
 );
@@ -34,8 +34,7 @@ __PACKAGE__->meta->initialize;
 
 # methods
 
-sub items        { goto &invoiceitems; }
-sub payment_term { goto &payment;      }
+sub items { goto &invoiceitems; }
 
 sub is_sales {
   # For compatibility with Order, DeliveryOrder
index 36f0870..a4135fc 100644 (file)
@@ -24,9 +24,4 @@ __PACKAGE__->meta->make_manager_class;
 
 __PACKAGE__->meta->initialize;
 
-sub part {
-  # canonial alias for parts.
-  goto &parts;
-}
-
 1;
index 1e9a52b..d5aaf3c 100644 (file)
@@ -45,7 +45,7 @@ __PACKAGE__->meta->setup(
       key_columns => { delivery_order_id => 'id' },
     },
 
-    parts => {
+    part => {
       class       => 'SL::DB::Part',
       key_columns => { parts_id => 'id' },
     },
index 1111a98..b01b141 100644 (file)
@@ -99,7 +99,7 @@ __PACKAGE__->meta->setup(
       key_columns => { language_id => 'id' },
     },
 
-    payment => {
+    payment_terms => {
       class       => 'SL::DB::PaymentTerm',
       key_columns => { payment_id => 'id' },
     },
index 470c4c4..eb5d84d 100644 (file)
@@ -46,7 +46,7 @@ __PACKAGE__->meta->setup(
   allow_inline_column_values => 1,
 
   foreign_keys => [
-    parts => {
+    part => {
       class       => 'SL::DB::Part',
       key_columns => { parts_id => 'id' },
     },
index 05512cd..f68c276 100644 (file)
@@ -93,7 +93,7 @@ __PACKAGE__->meta->setup(
       key_columns => { language_id => 'id' },
     },
 
-    payment => {
+    payment_terms => {
       class       => 'SL::DB::PaymentTerm',
       key_columns => { payment_id => 'id' },
     },
index 732d4c9..3d0c98e 100644 (file)
@@ -44,7 +44,7 @@ __PACKAGE__->meta->setup(
   allow_inline_column_values => 1,
 
   foreign_keys => [
-    parts => {
+    part => {
       class       => 'SL::DB::Part',
       key_columns => { parts_id => 'id' },
     },
@@ -64,7 +64,7 @@ __PACKAGE__->meta->setup(
       key_columns => { project_id => 'id' },
     },
 
-    trans => {
+    order => {
       class       => 'SL::DB::Order',
       key_columns => { trans_id => 'id' },
     },
index 636a5d8..309884c 100644 (file)
@@ -75,7 +75,7 @@ __PACKAGE__->meta->setup(
       key_columns => { language_id => 'id' },
     },
 
-    payment => {
+    payment_terms => {
       class       => 'SL::DB::PaymentTerm',
       key_columns => { payment_id => 'id' },
     },
index ae5c504..b9959aa 100644 (file)
@@ -23,7 +23,7 @@ __PACKAGE__->meta->add_relationship(
     class        => 'SL::DB::OrderItem',
     column_map   => { id => 'trans_id' },
     manager_args => {
-      with_objects => [ 'parts' ]
+      with_objects => [ 'part' ]
     }
   },
   periodic_invoices_config => {
@@ -37,8 +37,7 @@ __PACKAGE__->meta->initialize;
 
 # methods
 
-sub items         { goto &orderitems; }
-sub payment_terms { goto &payment;    }
+sub items { goto &orderitems; }
 
 sub type {
   my $self = shift;
index f7ff3bb..862a215 100644 (file)
@@ -39,14 +39,4 @@ sub shipped_qty {
   return sum(map { AM->convert_unit($_->unit => $self->unit) * $_->qty } @doi);
 }
 
-sub part {
-  # canonial alias for parts.
-  goto &parts;
-}
-
-sub order {
-  # canonial alias for trans.
-  goto &trans;
-}
-
 1;
index 9ec6035..da34a27 100644 (file)
@@ -19,8 +19,7 @@ __PACKAGE__->meta->add_relationship(invoiceitems => { type         => 'one to ma
 
 __PACKAGE__->meta->initialize;
 
-sub items        { goto &invoiceitems; }
-sub payment_term { goto &payment;      }
+sub items { goto &invoiceitems; }
 
 sub is_sales {
   # For compatibility with Order, DeliveryOrder
index f7cc62d..20048f2 100755 (executable)
@@ -44,6 +44,16 @@ our $meta_path = "SL/DB/MetaSetup";
 
 my %config;
 
+our %foreign_key_name_map = (
+  oe                   => { payment => 'payment_terms', },
+  ar                   => { payment => 'payment_terms', },
+  ap                   => { payment => 'payment_terms', },
+
+  orderitems           => { parts => 'part', trans => 'order', },
+  delivery_order_items => { parts => 'part' },
+  invoice              => { parts => 'part' },
+);
+
 sub setup {
 
   SL::LxOfficeConf->read;
@@ -103,6 +113,11 @@ CODE
   }
 
   $definition =~ s/::AUTO::/::/g;
+
+  while (my ($auto_generated_name, $desired_name) = each %{ $foreign_key_name_map{$table} || {} }) {
+    $definition =~ s/( foreign_keys \s*=> \s*\[ .* ^\s+ ) ${auto_generated_name} \b/${1}${desired_name}/msx;
+  }
+
   my $full_definition = <<CODE;
 # This file has been auto-generated. Do not modify it; it will be overwritten
 # by $::script automatically.