Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ec90d597

Von Tamino Steinert vor mehr als 1 Jahr hinzugefügt

  • ID ec90d5977ba6752ae8ac2ce7b87822c2068becdc
  • Vorgänger 728164f0
  • Nachfolger aa2fcd58

Model::Record: Workflow mit ausgewählten Positionen ermöglichen

Unterschiede anzeigen:

SL/Controller/DeliveryOrder.pm
__PACKAGE__->run_before('get_unalterable_data',
only => [ qw(
save save_as_new save_and_delivery_order save_and_invoice
save save_as_new save_and_new_record save_and_invoice
save_and_ap_transaction print send_email
) ]);
......
die "No 'from_type' was given." unless ($from_type);
die "No 'from_id' was given." unless ($from_id);
my %flags = ();
if (defined($::form->{from_item_ids})) {
my %use_item = map { $_ => 1 } @{$::form->{from_item_ids}};
$flags{item_filter} = sub {
my ($item) = @_;
return %use_item{$item->id};
}
}
my $record = SL::Model::Record->get_record($from_type, $from_id);
my $delivery_order = SL::Model::Record->new_from_workflow($record, $self->type);
my $delivery_order = SL::Model::Record->new_from_workflow($record, $self->type, %flags);
$self->order($delivery_order);
$self->action_add;
......
my $to_type = $::form->{to_type};
my $to_controller = get_object_name_from_type($to_type);
my %additional_params = ();
if ($::form->{only_selected_items}) {
my $from_item_ids = $::form->{selected_items} || [];
$additional_params{from_item_ids} = $from_item_ids;
}
$self->save();
flash_later('info', $self->type_data->text('saved'));
......
type => $to_type,
from_id => $self->order->id,
from_type => $self->order->type,
%additional_params,
);
}
SL/Controller/Order.pm
die "No 'from_type' was given." unless ($from_type);
die "No 'from_id' was given." unless ($from_id);
my %flags = ();
if (defined($::form->{from_item_ids})) {
my %use_item = map { $_ => 1 } @{$::form->{from_item_ids}};
$flags{item_filter} = sub {
my ($item) = @_;
return %use_item{$item->id};
}
}
my $record = SL::Model::Record->get_record($from_type, $from_id);
my $order = SL::Model::Record->new_from_workflow($record, $self->type);
my $order = SL::Model::Record->new_from_workflow($record, $self->type, %flags);
$self->order($order);
if (ref($record) eq 'SL::DB::Reclamation') {
......
$self->save();
flash_later('info', $self->type_data->text('saved'));
my %additional_params = ();
if ($::form->{only_selected_items}) {
my $from_item_ids = $::form->{selected_items} || [];
$additional_params{from_item_ids} = $from_item_ids;
}
$self->redirect_to(
controller => $to_controller,
action => 'add_from_record',
type => $to_type,
from_id => $self->order->id,
from_type => $self->order->type,
%additional_params,
);
}
SL/Controller/Reclamation.pm
die "No 'from_type' was given." unless ($from_type);
die "No 'from_id' was given." unless ($from_id);
my %flags = ();
if (defined($::form->{from_item_ids})) {
my %use_item = map { $_ => 1 } @{$::form->{from_item_ids}};
$flags{item_filter} = sub {
my ($item) = @_;
return %use_item{$item->id};
}
}
my $record = SL::Model::Record->get_record($from_type, $from_id);
my $reclamation = SL::Model::Record->new_from_workflow($record, $self->type);
my $reclamation = SL::Model::Record->new_from_workflow($record, $self->type, %flags);
$self->reclamation($reclamation);
if ($record->type eq SALES_RECLAMATION_TYPE()) { # check for direct delivery
......
my $to_type = $::form->{to_type};
my $to_controller = get_object_name_from_type($to_type);
my %additional_params = ();
if ($::form->{only_selected_items}) {
my $from_item_ids = $::form->{selected_items} || [];
$additional_params{from_item_ids} = $from_item_ids;
}
$self->save();
flash_later('info', t8('The reclamation has been saved'));
......
type => $to_type,
from_id => $self->reclamation->id,
from_type => $self->reclamation->type,
%additional_params,
);
}

Auch abrufbar als: Unified diff