Revision a00addba
Von Tamino Steinert vor mehr als 1 Jahr hinzugefügt
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
181 | 181 |
# make new order from given orders |
182 | 182 |
my @multi_orders = map { SL::DB::DeliveryOrder->new(id => $_)->load } @multi_ids; |
183 | 183 |
$self->{converted_from_oe_id} = join ' ', map { $_->id } @multi_orders; |
184 |
$self->order(SL::DB::DeliveryOrder->new_from_multi(\@multi_orders, sort_sources_by => 'transdate')); |
|
184 |
my $target_type = "sales_delivery_order"; |
|
185 |
my $delivery_order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate'); |
|
186 |
$self->order($delivery_order); |
|
185 | 187 |
|
186 | 188 |
$self->action_edit(); |
187 | 189 |
} |
SL/Controller/Order.pm | ||
---|---|---|
184 | 184 |
# make new order from given orders |
185 | 185 |
my @multi_orders = map { SL::DB::Order->new(id => $_)->load } @multi_ids; |
186 | 186 |
$self->{converted_from_oe_id} = join ' ', map { $_->id } @multi_orders; |
187 |
$self->order(SL::DB::Order->new_from_multi(\@multi_orders, sort_sources_by => 'transdate')); |
|
187 |
my $target_type = "sales_order"; |
|
188 |
my $order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate'); |
|
189 |
$self->order($order); |
|
188 | 190 |
|
189 | 191 |
$self->action_edit(); |
190 | 192 |
} |
SL/Model/Record.pm | ||
---|---|---|
69 | 69 |
return $target_object; |
70 | 70 |
} |
71 | 71 |
|
72 |
sub new_from_workflow_multi { |
|
73 |
my ($class, $source_objects, $target_subtype, %flags) = @_; |
|
74 |
# source: ein arrayref von quellobjekten. |
|
75 |
# target type: sollte ein subtype sein. wer das hier implementiert, sollte auch eine subtype registratur bauen in der man subtypes nachschlagen kann |
|
76 |
# flags: welche extra behandlungen sollen gemacht werden, z.B. record_links setzen |
|
77 |
|
|
78 |
# muss prüfen ob diese umwandlung korrekt ist |
|
79 |
# muss das entsprechende new_from_multi in den objekten selber benutzen |
|
80 |
# und dann evtl nachbearbeitung machen (die bisher im controller stand) |
|
81 |
|
|
82 |
# new_from_workflow_multi: (aus action_edit_collective) workflow umwandlung von bestehenden records |
|
83 |
|
|
84 |
# fehlerfall: exception aus unterliegendem code bubblen oder neue exception werfen |
|
85 |
# rückgabe: das neue objekt |
|
86 |
|
|
87 |
my %subtype_to_type = ( |
|
88 |
# Order |
|
89 |
"sales_order" => "SL::DB::Order", |
|
90 |
); |
|
91 |
my $target_type = $subtype_to_type{$target_subtype}; |
|
92 |
unless ($target_type) { |
|
93 |
croak("Conversion not supported to $target_subtype"); |
|
94 |
} |
|
95 |
|
|
96 |
my $target_object = ${target_type}->new_from_multi($source_objects, %flags); |
|
97 |
|
|
98 |
return $target_object; |
|
99 |
} |
|
100 |
|
|
72 | 101 |
# im Moment nur bei Aufträgen |
73 | 102 |
sub increment_subversion { |
74 | 103 |
my ($class, $record, %flags) = @_; |
Auch abrufbar als: Unified diff
Model::Record: new_from_workflow_multi implementiert