Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 4528f3f2

Von Tamino Steinert vor etwa 1 Jahr hinzugefügt

  • ID 4528f3f2ac62e91e79608d69354956eacd39c696
  • Vorgänger ef24ff5a
  • Nachfolger 9c01bef6

Model::Record: new_from_workflow_multi implementiert

Unterschiede anzeigen:

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