Revision 1d39311e
Added by Tamino Steinert 5 months ago
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
sub action_add {
|
||
my ($self) = @_;
|
||
|
||
$self->order(SL::Model::Record->update_after_new($self->order));
|
||
|
||
$self->pre_render();
|
||
|
||
if (!$::form->{form_validity_token}) {
|
||
... | ... | |
|
||
my $delivery_order = SL::Model::Record->new_from_workflow($record, $self->type, %flags);
|
||
$self->order($delivery_order);
|
||
$self->reinit_after_new_order();
|
||
|
||
$self->action_add;
|
||
}
|
||
... | ... | |
sub action_return_from_create_part {
|
||
my ($self) = @_;
|
||
|
||
$self->{created_part} =
|
||
SL::DB::Part->new(id => delete $::form->{new_parts_id})->load
|
||
if $::form->{new_parts_id};
|
||
$self->{created_part} = SL::DB::Part->new(
|
||
id => delete $::form->{new_parts_id}
|
||
)->load if $::form->{new_parts_id};
|
||
|
||
$::auth->restore_form_from_session(delete $::form->{previousform});
|
||
|
||
# set item ids to new fake id, to identify them as new items
|
||
foreach my $item (@{$self->order->items_sorted}) {
|
||
$item->{new_fake_id} = join('_',
|
||
'new',
|
||
Time::HiRes::gettimeofday(),
|
||
int rand 1000000000000
|
||
);
|
||
}
|
||
|
||
$self->get_unalterable_data();
|
||
$self->pre_render();
|
||
$self->order($self->init_order);
|
||
$self->reinit_after_new_order();
|
||
|
||
# trigger rendering values for second row/longdescription as hidden,
|
||
# because they are loaded only on demand. So we need to keep the values
|
||
# from the source.
|
||
$_->{render_second_row} = 1 for @{ $self->order->items_sorted };
|
||
$_->{render_longdescription} = 1 for @{ $self->order->items_sorted };
|
||
if ($self->order->id) {
|
||
$self->action_edit;
|
||
} else {
|
||
$self->action_add;
|
||
}
|
||
|
||
$self->render(
|
||
'delivery_order/form',
|
||
title => $self->get_title_for('edit'),
|
||
%{$self->{template_args}}
|
||
);
|
||
}
|
||
|
||
sub action_stock_in_out_dialog {
|
||
... | ... | |
if ($::form->{id}) {
|
||
$order = SL::DB::DeliveryOrder->new(
|
||
id => $::form->{id}
|
||
)->load(with => [ 'orderitems', 'orderitems.part' ]);
|
||
)->load(
|
||
with => [
|
||
'orderitems',
|
||
'orderitems.part',
|
||
]
|
||
);
|
||
} else {
|
||
$order = SL::DB::DeliveryOrder->new(
|
||
orderitems => [],
|
||
currency_id => $::instance_conf->get_currency_id(),
|
||
record_type => $::form->{type}
|
||
);
|
||
$order = SL::Model::Record->update_after_new($order);
|
||
}
|
||
|
||
my $cv_id_method = $order->type_data->properties('customervendor'). '_id';
|
||
... | ... | |
$self->order($delivery_order);
|
||
$self->{converted_from_oe_id} = delete $::form->{id};
|
||
|
||
# set item ids to new fake id, to identify them as new items
|
||
foreach my $item (@{$self->order->items_sorted}) {
|
||
$item->{new_fake_id} = join('_',
|
||
'new',
|
||
Time::HiRes::gettimeofday(),
|
||
int rand 1000000000000
|
||
);
|
||
}
|
||
$self->reinit_after_new_order();
|
||
|
||
$self->render(
|
||
'delivery_order/form',
|
||
title => $self->get_title_for('edit'),
|
||
%{$self->{template_args}}
|
||
);
|
||
}
|
||
|
||
sub reinit_after_new_order {
|
||
my ($self) = @_;
|
||
|
||
# change form type
|
||
$::form->{type} = $destination_type;
|
||
$::form->{type} = $self->order->type;
|
||
$self->type($self->init_type);
|
||
$self->cv ($self->init_cv);
|
||
$self->check_auth;
|
||
|
||
$self->get_unalterable_data();
|
||
$self->pre_render();
|
||
foreach my $item (@{$self->order->items_sorted}) {
|
||
# set item ids to new fake id, to identify them as new items
|
||
$item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000);
|
||
|
||
# trigger rendering values for second row as hidden, because they
|
||
# are loaded only on demand. So we need to keep the values from the
|
||
# source.
|
||
$_->{render_second_row} = 1 for @{ $self->order->items_sorted };
|
||
# trigger rendering values for second row as hidden, because they
|
||
# are loaded only on demand. So we need to keep the values from the
|
||
# source.
|
||
$item->{render_second_row} = 1;
|
||
}
|
||
|
||
$self->render(
|
||
'delivery_order/form',
|
||
title => $self->get_title_for('edit'),
|
||
%{$self->{template_args}}
|
||
);
|
||
$self->get_unalterable_data();
|
||
}
|
||
|
||
|
||
sub pre_render {
|
||
my ($self) = @_;
|
||
|
Also available in: Unified diff
FIX: S:C:DeliveryOrder: Daten über Workflows vollständig und korrekt laden