Revision a00addba
Von Tamino Steinert vor etwa 2 Jahren hinzugefügt
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
# make new order from given orders
|
||
my @multi_orders = map { SL::DB::DeliveryOrder->new(id => $_)->load } @multi_ids;
|
||
$self->{converted_from_oe_id} = join ' ', map { $_->id } @multi_orders;
|
||
$self->order(SL::DB::DeliveryOrder->new_from_multi(\@multi_orders, sort_sources_by => 'transdate'));
|
||
my $target_type = "sales_delivery_order";
|
||
my $delivery_order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate');
|
||
$self->order($delivery_order);
|
||
|
||
$self->action_edit();
|
||
}
|
SL/Controller/Order.pm | ||
---|---|---|
# make new order from given orders
|
||
my @multi_orders = map { SL::DB::Order->new(id => $_)->load } @multi_ids;
|
||
$self->{converted_from_oe_id} = join ' ', map { $_->id } @multi_orders;
|
||
$self->order(SL::DB::Order->new_from_multi(\@multi_orders, sort_sources_by => 'transdate'));
|
||
my $target_type = "sales_order";
|
||
my $order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate');
|
||
$self->order($order);
|
||
|
||
$self->action_edit();
|
||
}
|
SL/Model/Record.pm | ||
---|---|---|
return $target_object;
|
||
}
|
||
|
||
sub new_from_workflow_multi {
|
||
my ($class, $source_objects, $target_subtype, %flags) = @_;
|
||
# source: ein arrayref von quellobjekten.
|
||
# target type: sollte ein subtype sein. wer das hier implementiert, sollte auch eine subtype registratur bauen in der man subtypes nachschlagen kann
|
||
# flags: welche extra behandlungen sollen gemacht werden, z.B. record_links setzen
|
||
|
||
# muss prüfen ob diese umwandlung korrekt ist
|
||
# muss das entsprechende new_from_multi in den objekten selber benutzen
|
||
# und dann evtl nachbearbeitung machen (die bisher im controller stand)
|
||
|
||
# new_from_workflow_multi: (aus action_edit_collective) workflow umwandlung von bestehenden records
|
||
|
||
# fehlerfall: exception aus unterliegendem code bubblen oder neue exception werfen
|
||
# rückgabe: das neue objekt
|
||
|
||
my %subtype_to_type = (
|
||
# Order
|
||
"sales_order" => "SL::DB::Order",
|
||
);
|
||
my $target_type = $subtype_to_type{$target_subtype};
|
||
unless ($target_type) {
|
||
croak("Conversion not supported to $target_subtype");
|
||
}
|
||
|
||
my $target_object = ${target_type}->new_from_multi($source_objects, %flags);
|
||
|
||
return $target_object;
|
||
}
|
||
|
||
# im Moment nur bei Aufträgen
|
||
sub increment_subversion {
|
||
my ($class, $record, %flags) = @_;
|
Auch abrufbar als: Unified diff
Model::Record: new_from_workflow_multi implementiert