Artikel-Reihenfolge beibehalten beim Erzeugen und autom. Drucken wiederkehrender...
[kivitendo-erp.git] / scripts / rose_auto_create_model.pl
index b23a75d..1850f45 100755 (executable)
@@ -44,6 +44,18 @@ 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' },
+
+  periodic_invoices_configs => { oe => 'order' },
+);
+
 sub setup {
 
   SL::LxOfficeConf->read;
@@ -81,7 +93,7 @@ sub process_table {
   my $file       =  "SL/DB/${package}.pm";
 
   $schema        = <<CODE if $schema;
-    __PACKAGE__->meta->schema('$schema');
+__PACKAGE__->meta->schema('$schema');
 CODE
 
   my $definition =  eval <<CODE;
@@ -90,7 +102,7 @@ CODE
     use base qw(SL::DB::Object);
 
     __PACKAGE__->meta->table('$table');
-$schema
+    $schema
     __PACKAGE__->meta->auto_initialize;
 
     __PACKAGE__->meta->perl_class_definition(indent => 2); # , braces => 'bsd'
@@ -103,6 +115,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.
@@ -120,6 +137,7 @@ use strict;
 use SL::DB::MetaSetup::${package};
 
 # Creates get_all, get_all_count, get_all_iterator, delete_all and update_all.
+$schema
 __PACKAGE__->meta->make_manager_class;
 
 1;
@@ -246,7 +264,7 @@ __END__
 
 =head1 NAME
 
-rose_auto_create_model - mana Rose::DB::Object classes for Lx-Office
+rose_auto_create_model - mana Rose::DB::Object classes for kivitendo
 
 =head1 SYNOPSIS