Project

General

Profile

« Previous | Next » 

Revision 1d39311e

Added by Tamino Steinert 5 months ago

FIX: S:C:DeliveryOrder: Daten über Workflows vollständig und korrekt laden

Helferfunktion für Neuinitialisierung nach Änderung des
Lieferschein-Objektes
behebt: #697 #696 (redmine)

View differences:

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