Revision c5725a1e
Von Tamino Steinert vor 3 Tagen hinzugefügt
SL/Controller/Order.pm | ||
---|---|---|
143 | 143 |
|
144 | 144 |
$self->order($order); |
145 | 145 |
|
146 |
$self->action_edit(); |
|
146 |
$self->reinit_after_new_order(); |
|
147 |
|
|
148 |
$self->action_add(); |
|
147 | 149 |
} |
148 | 150 |
|
149 | 151 |
sub action_add_from_email_journal { |
... | ... | |
166 | 168 |
# edit an existing order |
167 | 169 |
sub action_edit { |
168 | 170 |
my ($self) = @_; |
171 |
die "No 'id' was given." unless $::form->{id}; |
|
169 | 172 |
|
170 |
if ($::form->{id}) { |
|
171 |
$self->load_order; |
|
172 |
|
|
173 |
if ($self->order->is_sales && $::lx_office_conf{imap_client}->{enabled}) { |
|
174 |
my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{imap_client}}); |
|
175 |
if ($imap_client) { |
|
176 |
$imap_client->update_email_files_for_record(record => $self->order); |
|
177 |
} |
|
178 |
} |
|
179 |
|
|
180 |
} else { |
|
181 |
# this is to edit an order from an unsaved order object |
|
182 |
|
|
183 |
# set item ids to new fake id, to identify them as new items |
|
184 |
foreach my $item (@{$self->order->items_sorted}) { |
|
185 |
$item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000); |
|
186 |
} |
|
187 |
# trigger rendering values for second row as hidden, because they |
|
188 |
# are loaded only on demand. So we need to keep the values from |
|
189 |
# the source. |
|
190 |
$_->{render_second_row} = 1 for @{ $self->order->items_sorted }; |
|
173 |
$self->load_order; |
|
191 | 174 |
|
192 |
if (!$::form->{form_validity_token}) { |
|
193 |
$::form->{form_validity_token} = SL::DB::ValidityToken->create(scope => SL::DB::ValidityToken::SCOPE_ORDER_SAVE())->token; |
|
175 |
if ($self->order->is_sales && $::lx_office_conf{imap_client}->{enabled}) { |
|
176 |
my $imap_client = SL::IMAPClient->new(%{$::lx_office_conf{imap_client}}); |
|
177 |
if ($imap_client) { |
|
178 |
$imap_client->update_email_files_for_record(record => $self->order); |
|
194 | 179 |
} |
195 | 180 |
} |
196 | 181 |
|
197 |
$self->recalc(); |
|
198 | 182 |
$self->pre_render(); |
199 | 183 |
$self->render( |
200 | 184 |
'order/form', |
... | ... | |
230 | 214 |
my $target_type = SALES_ORDER_TYPE(); |
231 | 215 |
my $order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate'); |
232 | 216 |
$self->order($order); |
217 |
$self->reinit_after_new_order(); |
|
233 | 218 |
|
234 |
$self->action_edit();
|
|
219 |
$self->action_add();
|
|
235 | 220 |
} |
236 | 221 |
|
237 | 222 |
# delete the order |
... | ... | |
1805 | 1790 |
|
1806 | 1791 |
$self->order(SL::DB::Order->new(id => $::form->{id})->load); |
1807 | 1792 |
|
1808 |
# Add an empty custom shipto to the order, so that the dialog can render the cvar inputs. |
|
1809 |
# You need a custom shipto object to call cvars_by_config to get the cvars. |
|
1810 |
$self->order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => [])) if !$self->order->custom_shipto; |
|
1793 |
$self->reinit_after_new_order(); |
|
1811 | 1794 |
|
1812 | 1795 |
return $self->order; |
1813 | 1796 |
} |
... | ... | |
1998 | 1981 |
if ($order->shipto) { |
1999 | 1982 |
$self->is_custom_shipto_to_delete(1); |
2000 | 1983 |
} else { |
2001 |
my $custom_shipto = $order->custom_shipto || $order->custom_shipto(SL::DB::Shipto->new(module => 'OE', custom_variables => [])); |
|
1984 |
my $custom_shipto = |
|
1985 |
$order->custom_shipto |
|
1986 |
|| $order->custom_shipto( |
|
1987 |
SL::DB::Shipto->new(module => 'OE', custom_variables => []) |
|
1988 |
); |
|
2002 | 1989 |
|
2003 | 1990 |
my $shipto_cvars = {map { my ($key) = m{^shiptocvar_(.+)}; $key => delete $form->{$_}} grep { m{^shiptocvar_} } keys %$form}; |
2004 | 1991 |
my $shipto_attrs = {map { $_ => delete $form->{$_}} grep { m{^shipto} } keys %$form}; |
... | ... | |
2174 | 2161 |
$::form->{type} = $self->order->type; |
2175 | 2162 |
$self->type($self->init_type); |
2176 | 2163 |
$self->type_data($self->init_type_data); |
2177 |
$self->cv ($self->init_cv);
|
|
2164 |
$self->cv($self->init_cv); |
|
2178 | 2165 |
$self->check_auth; |
2179 | 2166 |
|
2167 |
$self->setup_custom_shipto_from_form($self->order, $::form); |
|
2168 |
|
|
2180 | 2169 |
foreach my $item (@{$self->order->items_sorted}) { |
2181 | 2170 |
# set item ids to new fake id, to identify them as new items |
2182 | 2171 |
$item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000); |
Auch abrufbar als: Unified diff
Beleg laden für Auftrag, Lieferschein und Reklamation angleichen