X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/6a30f8361ba15cc0e1a058d1002600a61dcab6c1..d59576d22d6c7720c0078b3e17232c81bbaf9373:/scripts/rose_auto_create_model.pl diff --git a/scripts/rose_auto_create_model.pl b/scripts/rose_auto_create_model.pl index e65adc0ac..36c78da38 100755 --- a/scripts/rose_auto_create_model.pl +++ b/scripts/rose_auto_create_model.pl @@ -13,7 +13,7 @@ use Data::Dumper; use Digest::MD5 qw(md5_hex); use English qw( -no_match_vars ); use Getopt::Long; -use List::MoreUtils qw(none); +use List::MoreUtils qw(apply none uniq); use List::UtilsBy qw(partition_by); use Pod::Usage; use Rose::DB::Object 0.809; @@ -70,10 +70,13 @@ our %foreign_key_name_map = ( orderitems => { parts_id => 'part', trans_id => 'order', }, delivery_order_items => { parts_id => 'part' }, invoice => { parts_id => 'part' }, - follow_ups => { created_for_user => 'created_for', created_by => 'created_by', }, + follow_ups => { created_for_user => 'created_for_employee', created_by => 'created_by_employee', }, follow_up_access => { who => 'with_access', what => 'to_follow_ups_by', }, - periodic_invoices_configs => { oe_id => 'order' }, + periodic_invoices_configs => { oe_id => 'order', email_recipient_contact_id => 'email_recipient_contact' }, + reconciliation_links => { acc_trans_id => 'acc_trans' }, + + assembly => { parts_id => 'part', id => 'assembly_part' }, }, ); @@ -147,8 +150,7 @@ CODE eval <meta->table('$table'); $schema_str @@ -207,6 +209,7 @@ CODE } $definition =~ s/(meta->table.*)\n/$1\n$schema_str/m if $schema; + $definition =~ s{^use base}{use parent}m; my $full_definition = < 99, sections => 'SYNOPSIS'); } +sub list_all_tables { + my ($db) = @_; + + my @schemas = (undef, uniq apply { s{\..*}{} } grep { m{\.} } keys %{ $package_names{KIVITENDO} }); + my @tables; + + foreach my $schema (@schemas) { + $db->schema($schema); + push @tables, map { $schema ? "${schema}.${_}" : $_ } $db->list_tables; + } + + $db->schema(undef); + + return @tables; +} + sub make_tables { my %tables_by_domain; if ($config{all}) { @@ -347,7 +365,7 @@ sub make_tables { foreach my $domain (@domains) { my $db = SL::DB::create(undef, $domain); - $tables_by_domain{$domain} = [ grep { my $table = $_; none { $_ eq $table } @{ $blacklist{$domain} } } $db->list_tables ]; + $tables_by_domain{$domain} = [ grep { my $table = $_; none { $_ eq $table } @{ $blacklist{$domain} } } list_all_tables($db) ]; $db->disconnect; }