Revision 0845c4b7
Von Moritz Bunkus vor fast 12 Jahren hinzugefügt
SL/DB/DeliveryOrder.pm | ||
---|---|---|
15 | 15 |
__PACKAGE__->meta->add_relationship(orderitems => { type => 'one to many', |
16 | 16 |
class => 'SL::DB::DeliveryOrderItem', |
17 | 17 |
column_map => { id => 'delivery_order_id' }, |
18 |
manager_args => { with_objects => [ 'parts' ] }
|
|
18 |
manager_args => { with_objects => [ 'part' ] } |
|
19 | 19 |
}, |
20 | 20 |
); |
21 | 21 |
|
SL/DB/DeliveryOrderItem.pm | ||
---|---|---|
24 | 24 |
|
25 | 25 |
# methods |
26 | 26 |
|
27 |
sub part { |
|
28 |
# canonial alias for parts. |
|
29 |
goto &parts; |
|
30 |
} |
|
31 |
|
|
32 | 27 |
1; |
SL/DB/Invoice.pm | ||
---|---|---|
25 | 25 |
class => 'SL::DB::InvoiceItem', |
26 | 26 |
column_map => { id => 'trans_id' }, |
27 | 27 |
manager_args => { |
28 |
with_objects => [ 'parts' ]
|
|
28 |
with_objects => [ 'part' ] |
|
29 | 29 |
} |
30 | 30 |
}, |
31 | 31 |
); |
... | ... | |
34 | 34 |
|
35 | 35 |
# methods |
36 | 36 |
|
37 |
sub items { goto &invoiceitems; } |
|
38 |
sub payment_term { goto &payment; } |
|
37 |
sub items { goto &invoiceitems; } |
|
39 | 38 |
|
40 | 39 |
sub is_sales { |
41 | 40 |
# For compatibility with Order, DeliveryOrder |
SL/DB/InvoiceItem.pm | ||
---|---|---|
24 | 24 |
|
25 | 25 |
__PACKAGE__->meta->initialize; |
26 | 26 |
|
27 |
sub part { |
|
28 |
# canonial alias for parts. |
|
29 |
goto &parts; |
|
30 |
} |
|
31 |
|
|
32 | 27 |
1; |
SL/DB/MetaSetup/DeliveryOrderItem.pm | ||
---|---|---|
45 | 45 |
key_columns => { delivery_order_id => 'id' }, |
46 | 46 |
}, |
47 | 47 |
|
48 |
parts => {
|
|
48 |
part => { |
|
49 | 49 |
class => 'SL::DB::Part', |
50 | 50 |
key_columns => { parts_id => 'id' }, |
51 | 51 |
}, |
SL/DB/MetaSetup/Invoice.pm | ||
---|---|---|
99 | 99 |
key_columns => { language_id => 'id' }, |
100 | 100 |
}, |
101 | 101 |
|
102 |
payment => { |
|
102 |
payment_terms => {
|
|
103 | 103 |
class => 'SL::DB::PaymentTerm', |
104 | 104 |
key_columns => { payment_id => 'id' }, |
105 | 105 |
}, |
SL/DB/MetaSetup/InvoiceItem.pm | ||
---|---|---|
46 | 46 |
allow_inline_column_values => 1, |
47 | 47 |
|
48 | 48 |
foreign_keys => [ |
49 |
parts => {
|
|
49 |
part => { |
|
50 | 50 |
class => 'SL::DB::Part', |
51 | 51 |
key_columns => { parts_id => 'id' }, |
52 | 52 |
}, |
SL/DB/MetaSetup/Order.pm | ||
---|---|---|
93 | 93 |
key_columns => { language_id => 'id' }, |
94 | 94 |
}, |
95 | 95 |
|
96 |
payment => { |
|
96 |
payment_terms => {
|
|
97 | 97 |
class => 'SL::DB::PaymentTerm', |
98 | 98 |
key_columns => { payment_id => 'id' }, |
99 | 99 |
}, |
SL/DB/MetaSetup/OrderItem.pm | ||
---|---|---|
44 | 44 |
allow_inline_column_values => 1, |
45 | 45 |
|
46 | 46 |
foreign_keys => [ |
47 |
parts => {
|
|
47 |
part => { |
|
48 | 48 |
class => 'SL::DB::Part', |
49 | 49 |
key_columns => { parts_id => 'id' }, |
50 | 50 |
}, |
... | ... | |
64 | 64 |
key_columns => { project_id => 'id' }, |
65 | 65 |
}, |
66 | 66 |
|
67 |
trans => {
|
|
67 |
order => {
|
|
68 | 68 |
class => 'SL::DB::Order', |
69 | 69 |
key_columns => { trans_id => 'id' }, |
70 | 70 |
}, |
SL/DB/MetaSetup/PurchaseInvoice.pm | ||
---|---|---|
75 | 75 |
key_columns => { language_id => 'id' }, |
76 | 76 |
}, |
77 | 77 |
|
78 |
payment => { |
|
78 |
payment_terms => {
|
|
79 | 79 |
class => 'SL::DB::PaymentTerm', |
80 | 80 |
key_columns => { payment_id => 'id' }, |
81 | 81 |
}, |
SL/DB/Order.pm | ||
---|---|---|
23 | 23 |
class => 'SL::DB::OrderItem', |
24 | 24 |
column_map => { id => 'trans_id' }, |
25 | 25 |
manager_args => { |
26 |
with_objects => [ 'parts' ]
|
|
26 |
with_objects => [ 'part' ] |
|
27 | 27 |
} |
28 | 28 |
}, |
29 | 29 |
periodic_invoices_config => { |
... | ... | |
37 | 37 |
|
38 | 38 |
# methods |
39 | 39 |
|
40 |
sub items { goto &orderitems; } |
|
41 |
sub payment_terms { goto &payment; } |
|
40 |
sub items { goto &orderitems; } |
|
42 | 41 |
|
43 | 42 |
sub type { |
44 | 43 |
my $self = shift; |
SL/DB/OrderItem.pm | ||
---|---|---|
39 | 39 |
return sum(map { AM->convert_unit($_->unit => $self->unit) * $_->qty } @doi); |
40 | 40 |
} |
41 | 41 |
|
42 |
sub part { |
|
43 |
# canonial alias for parts. |
|
44 |
goto &parts; |
|
45 |
} |
|
46 |
|
|
47 |
sub order { |
|
48 |
# canonial alias for trans. |
|
49 |
goto &trans; |
|
50 |
} |
|
51 |
|
|
52 | 42 |
1; |
SL/DB/PurchaseInvoice.pm | ||
---|---|---|
19 | 19 |
|
20 | 20 |
__PACKAGE__->meta->initialize; |
21 | 21 |
|
22 |
sub items { goto &invoiceitems; } |
|
23 |
sub payment_term { goto &payment; } |
|
22 |
sub items { goto &invoiceitems; } |
|
24 | 23 |
|
25 | 24 |
sub is_sales { |
26 | 25 |
# For compatibility with Order, DeliveryOrder |
scripts/rose_auto_create_model.pl | ||
---|---|---|
44 | 44 |
|
45 | 45 |
my %config; |
46 | 46 |
|
47 |
our %foreign_key_name_map = ( |
|
48 |
oe => { payment => 'payment_terms', }, |
|
49 |
ar => { payment => 'payment_terms', }, |
|
50 |
ap => { payment => 'payment_terms', }, |
|
51 |
|
|
52 |
orderitems => { parts => 'part', trans => 'order', }, |
|
53 |
delivery_order_items => { parts => 'part' }, |
|
54 |
invoice => { parts => 'part' }, |
|
55 |
); |
|
56 |
|
|
47 | 57 |
sub setup { |
48 | 58 |
|
49 | 59 |
SL::LxOfficeConf->read; |
... | ... | |
103 | 113 |
} |
104 | 114 |
|
105 | 115 |
$definition =~ s/::AUTO::/::/g; |
116 |
|
|
117 |
while (my ($auto_generated_name, $desired_name) = each %{ $foreign_key_name_map{$table} || {} }) { |
|
118 |
$definition =~ s/( foreign_keys \s*=> \s*\[ .* ^\s+ ) ${auto_generated_name} \b/${1}${desired_name}/msx; |
|
119 |
} |
|
120 |
|
|
106 | 121 |
my $full_definition = <<CODE; |
107 | 122 |
# This file has been auto-generated. Do not modify it; it will be overwritten |
108 | 123 |
# by $::script automatically. |
Auch abrufbar als: Unified diff
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.