Revision a04ea831
Von Tamino Steinert vor 5 Monaten hinzugefügt
- ID a04ea8317415a60616201d6d9311c13b5089c038
- Vorgänger 8fdd7686
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
# edit an existing order
|
||
sub action_edit {
|
||
my ($self) = @_;
|
||
die "No 'id' was given." unless $::form->{id};
|
||
|
||
if ($::form->{id}) {
|
||
$self->load_order;
|
||
|
||
} else {
|
||
# this is to edit an order from an unsaved order object
|
||
|
||
# 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);
|
||
}
|
||
# 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 };
|
||
|
||
if (!$::form->{form_validity_token}) {
|
||
$::form->{form_validity_token} = SL::DB::ValidityToken->create(
|
||
scope => SL::DB::ValidityToken::SCOPE_DELIVERY_ORDER_SAVE()
|
||
)->token;
|
||
}
|
||
}
|
||
$self->load_order;
|
||
|
||
$self->pre_render();
|
||
$self->render(
|
||
... | ... | |
|
||
$self->order(SL::DB::DeliveryOrder->new(id => $::form->{id})->load);
|
||
|
||
# Add an empty custom shipto to the order, so that the dialog can render the cvar inputs.
|
||
# You need a custom shipto object to call cvars_by_config to get the cvars.
|
||
$self->order->custom_shipto(SL::DB::Shipto->new(module => 'DO', custom_variables => [])) if !$self->order->custom_shipto;
|
||
|
||
$self->order->prepare_stock_info($_) for $self->order->items;
|
||
$self->reinit_after_new_order();
|
||
|
||
return $self->order;
|
||
}
|
||
... | ... | |
if ($order->shipto) {
|
||
$self->is_custom_shipto_to_delete(1);
|
||
} else {
|
||
my $custom_shipto = $order->custom_shipto ?
|
||
$order->custom_shipto
|
||
: $order->custom_shipto(
|
||
SL::DB::Shipto->new(module => 'DO', custom_variables => [])
|
||
);
|
||
my $custom_shipto =
|
||
$order->custom_shipto
|
||
|| $order->custom_shipto(
|
||
SL::DB::Shipto->new(module => 'DO', custom_variables => [])
|
||
);
|
||
|
||
my $shipto_cvars = {
|
||
map { my ($key) = m{^shiptocvar_(.+)}; $key => delete $form->{$_}}
|
||
... | ... | |
delete $::form->{form_validity_token};
|
||
}
|
||
|
||
sub workflow_sales_or_request_for_quotation {
|
||
my ($self, $destination_type) = @_;
|
||
|
||
# always save
|
||
$self->save();
|
||
|
||
my $delivery_order = SL::Model::Record->new_from_workflow(
|
||
$self->order, $destination_type
|
||
);
|
||
$self->order($delivery_order);
|
||
$self->{converted_from_oe_id} = delete $::form->{id};
|
||
|
||
$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} = $self->order->type;
|
||
$self->type($self->init_type);
|
||
$self->cv ($self->init_cv);
|
||
$self->type_data($self->init_type_data);
|
||
$self->cv($self->init_cv);
|
||
$self->check_auth;
|
||
|
||
$self->setup_custom_shipto_from_form($self->order, $::form);
|
||
|
||
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);
|
||
... | ... | |
$item->{render_second_row} = 1;
|
||
}
|
||
|
||
$self->order->prepare_stock_info($_) for $self->order->items;
|
||
$self->get_unalterable_data();
|
||
}
|
||
|
SL/Controller/Order.pm | ||
---|---|---|
|
||
$self->order($order);
|
||
|
||
$self->action_edit();
|
||
$self->reinit_after_new_order();
|
||
|
||
$self->action_add();
|
||
}
|
||
|
||
sub action_add_from_email_journal {
|
||
... | ... | |
# edit an existing order
|
||
sub action_edit {
|
||
my ($self) = @_;
|
||
die "No 'id' was given." unless $::form->{id};
|
||
|
||
if ($::form->{id}) {
|
||
$self->load_order;
|
||
|
||
if ($self->order->is_sales && $::lx_office_conf{imap_client}->{enabled}) {
|
||
my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{imap_client}});
|
||
if ($imap_client) {
|
||
$imap_client->update_email_files_for_record(record => $self->order);
|
||
}
|
||
}
|
||
|
||
} else {
|
||
# this is to edit an order from an unsaved order object
|
||
|
||
# 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);
|
||
}
|
||
# 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 };
|
||
$self->load_order;
|
||
|
||
if (!$::form->{form_validity_token}) {
|
||
$::form->{form_validity_token} = SL::DB::ValidityToken->create(scope => SL::DB::ValidityToken::SCOPE_ORDER_SAVE())->token;
|
||
if ($self->order->is_sales && $::lx_office_conf{imap_client}->{enabled}) {
|
||
my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{imap_client}});
|
||
if ($imap_client) {
|
||
$imap_client->update_email_files_for_record(record => $self->order);
|
||
}
|
||
}
|
||
|
||
$self->recalc();
|
||
$self->pre_render();
|
||
$self->render(
|
||
'order/form',
|
||
... | ... | |
my $target_type = SALES_ORDER_TYPE();
|
||
my $order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate');
|
||
$self->order($order);
|
||
$self->reinit_after_new_order();
|
||
|
||
$self->action_edit();
|
||
$self->action_add();
|
||
}
|
||
|
||
# delete the order
|
||
... | ... | |
|
||
$self->order(SL::DB::Order->new(id => $::form->{id})->load);
|
||
|
||
# Add an empty custom shipto to the order, so that the dialog can render the cvar inputs.
|
||
# You need a custom shipto object to call cvars_by_config to get the cvars.
|
||
$self->order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => [])) if !$self->order->custom_shipto;
|
||
$self->reinit_after_new_order();
|
||
|
||
return $self->order;
|
||
}
|
||
... | ... | |
if ($order->shipto) {
|
||
$self->is_custom_shipto_to_delete(1);
|
||
} else {
|
||
my $custom_shipto = $order->custom_shipto || $order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => []));
|
||
my $custom_shipto =
|
||
$order->custom_shipto
|
||
|| $order->custom_shipto(
|
||
SL::DB::Shipto->new(module => 'OE', custom_variables => [])
|
||
);
|
||
|
||
my $shipto_cvars = {map { my ($key) = m{^shiptocvar_(.+)}; $key => delete $form->{$_}} grep { m{^shiptocvar_} } keys %$form};
|
||
my $shipto_attrs = {map { $_ => delete $form->{$_}} grep { m{^shipto} } keys %$form};
|
||
... | ... | |
$::form->{type} = $self->order->type;
|
||
$self->type($self->init_type);
|
||
$self->type_data($self->init_type_data);
|
||
$self->cv ($self->init_cv);
|
||
$self->cv($self->init_cv);
|
||
$self->check_auth;
|
||
|
||
$self->setup_custom_shipto_from_form($self->order, $::form);
|
||
|
||
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);
|
bin/mozilla/io.pl | ||
---|---|---|
|
||
require SL::Controller::Order;
|
||
my $c = SL::Controller::Order->new(order => $order);
|
||
$c->setup_custom_shipto_from_form($order, $::form);
|
||
$c->action_edit();
|
||
$c->reinit_after_new_order();
|
||
$c->action_add();
|
||
|
||
$main::lxdebug->leave_sub();
|
||
$::dispatcher->end_request;
|
Auch abrufbar als: Unified diff
Beleg laden für Auftrag, Lieferschein und Reklamation angleichen