Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0845c4b7

Von Moritz Bunkus vor mehr als 12 Jahren hinzugefügt

  • ID 0845c4b7d7a969d68cd55a15780c0af2fbe4d2db
  • Vorgänger 026e601d
  • Nachfolger aa8fc8ca

Rose: Fremdschlüsselbenennung fixen

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.

Unterschiede anzeigen:

SL/DB/DeliveryOrder.pm
__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' ] }
},
);
SL/DB/DeliveryOrderItem.pm
# methods
sub part {
# canonial alias for parts.
goto &parts;
}
1;
SL/DB/Invoice.pm
class => 'SL::DB::InvoiceItem',
column_map => { id => 'trans_id' },
manager_args => {
with_objects => [ 'parts' ]
with_objects => [ 'part' ]
}
},
);
......
# methods
sub items { goto &invoiceitems; }
sub payment_term { goto &payment; }
sub items { goto &invoiceitems; }
sub is_sales {
# For compatibility with Order, DeliveryOrder
SL/DB/InvoiceItem.pm
__PACKAGE__->meta->initialize;
sub part {
# canonial alias for parts.
goto &parts;
}
1;
SL/DB/MetaSetup/DeliveryOrderItem.pm
key_columns => { delivery_order_id => 'id' },
},
parts => {
part => {
class => 'SL::DB::Part',
key_columns => { parts_id => 'id' },
},
SL/DB/MetaSetup/Invoice.pm
key_columns => { language_id => 'id' },
},
payment => {
payment_terms => {
class => 'SL::DB::PaymentTerm',
key_columns => { payment_id => 'id' },
},
SL/DB/MetaSetup/InvoiceItem.pm
allow_inline_column_values => 1,
foreign_keys => [
parts => {
part => {
class => 'SL::DB::Part',
key_columns => { parts_id => 'id' },
},
SL/DB/MetaSetup/Order.pm
key_columns => { language_id => 'id' },
},
payment => {
payment_terms => {
class => 'SL::DB::PaymentTerm',
key_columns => { payment_id => 'id' },
},
SL/DB/MetaSetup/OrderItem.pm
allow_inline_column_values => 1,
foreign_keys => [
parts => {
part => {
class => 'SL::DB::Part',
key_columns => { parts_id => 'id' },
},
......
key_columns => { project_id => 'id' },
},
trans => {
order => {
class => 'SL::DB::Order',
key_columns => { trans_id => 'id' },
},
SL/DB/MetaSetup/PurchaseInvoice.pm
key_columns => { language_id => 'id' },
},
payment => {
payment_terms => {
class => 'SL::DB::PaymentTerm',
key_columns => { payment_id => 'id' },
},
SL/DB/Order.pm
class => 'SL::DB::OrderItem',
column_map => { id => 'trans_id' },
manager_args => {
with_objects => [ 'parts' ]
with_objects => [ 'part' ]
}
},
periodic_invoices_config => {
......
# methods
sub items { goto &orderitems; }
sub payment_terms { goto &payment; }
sub items { goto &orderitems; }
sub type {
my $self = shift;
SL/DB/OrderItem.pm
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;
SL/DB/PurchaseInvoice.pm
__PACKAGE__->meta->initialize;
sub items { goto &invoiceitems; }
sub payment_term { goto &payment; }
sub items { goto &invoiceitems; }
sub is_sales {
# For compatibility with Order, DeliveryOrder
scripts/rose_auto_create_model.pl
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;
......
}
$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.

Auch abrufbar als: Unified diff