Revision c5725a1e
Von Tamino Steinert vor 3 Tagen hinzugefügt
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
172 | 172 |
# edit an existing order |
173 | 173 |
sub action_edit { |
174 | 174 |
my ($self) = @_; |
175 |
die "No 'id' was given." unless $::form->{id}; |
|
175 | 176 |
|
176 |
if ($::form->{id}) { |
|
177 |
$self->load_order; |
|
178 |
|
|
179 |
} else { |
|
180 |
# this is to edit an order from an unsaved order object |
|
181 |
|
|
182 |
# set item ids to new fake id, to identify them as new items |
|
183 |
foreach my $item (@{$self->order->items_sorted}) { |
|
184 |
$item->{new_fake_id} = |
|
185 |
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 }; |
|
191 |
|
|
192 |
if (!$::form->{form_validity_token}) { |
|
193 |
$::form->{form_validity_token} = SL::DB::ValidityToken->create( |
|
194 |
scope => SL::DB::ValidityToken::SCOPE_DELIVERY_ORDER_SAVE() |
|
195 |
)->token; |
|
196 |
} |
|
197 |
} |
|
177 |
$self->load_order; |
|
198 | 178 |
|
199 | 179 |
$self->pre_render(); |
200 | 180 |
$self->render( |
... | ... | |
1573 | 1553 |
|
1574 | 1554 |
$self->order(SL::DB::DeliveryOrder->new(id => $::form->{id})->load); |
1575 | 1555 |
|
1576 |
# Add an empty custom shipto to the order, so that the dialog can render the cvar inputs. |
|
1577 |
# You need a custom shipto object to call cvars_by_config to get the cvars. |
|
1578 |
$self->order->custom_shipto(SL::DB::Shipto->new(module => 'DO', custom_variables => [])) if !$self->order->custom_shipto; |
|
1579 |
|
|
1580 |
$self->order->prepare_stock_info($_) for $self->order->items; |
|
1556 |
$self->reinit_after_new_order(); |
|
1581 | 1557 |
|
1582 | 1558 |
return $self->order; |
1583 | 1559 |
} |
... | ... | |
1768 | 1744 |
if ($order->shipto) { |
1769 | 1745 |
$self->is_custom_shipto_to_delete(1); |
1770 | 1746 |
} else { |
1771 |
my $custom_shipto = $order->custom_shipto ?
|
|
1772 |
$order->custom_shipto |
|
1773 |
: $order->custom_shipto(
|
|
1774 |
SL::DB::Shipto->new(module => 'DO', custom_variables => []) |
|
1775 |
); |
|
1747 |
my $custom_shipto = |
|
1748 |
$order->custom_shipto
|
|
1749 |
|| $order->custom_shipto(
|
|
1750 |
SL::DB::Shipto->new(module => 'DO', custom_variables => [])
|
|
1751 |
);
|
|
1776 | 1752 |
|
1777 | 1753 |
my $shipto_cvars = { |
1778 | 1754 |
map { my ($key) = m{^shiptocvar_(.+)}; $key => delete $form->{$_}} |
... | ... | |
1845 | 1821 |
delete $::form->{form_validity_token}; |
1846 | 1822 |
} |
1847 | 1823 |
|
1848 |
sub workflow_sales_or_request_for_quotation { |
|
1849 |
my ($self, $destination_type) = @_; |
|
1850 |
|
|
1851 |
# always save |
|
1852 |
$self->save(); |
|
1853 |
|
|
1854 |
my $delivery_order = SL::Model::Record->new_from_workflow( |
|
1855 |
$self->order, $destination_type |
|
1856 |
); |
|
1857 |
$self->order($delivery_order); |
|
1858 |
$self->{converted_from_oe_id} = delete $::form->{id}; |
|
1859 |
|
|
1860 |
$self->reinit_after_new_order(); |
|
1861 |
|
|
1862 |
$self->render( |
|
1863 |
'delivery_order/form', |
|
1864 |
title => $self->get_title_for('edit'), |
|
1865 |
%{$self->{template_args}} |
|
1866 |
); |
|
1867 |
} |
|
1868 |
|
|
1869 | 1824 |
sub reinit_after_new_order { |
1870 | 1825 |
my ($self) = @_; |
1871 | 1826 |
|
1872 | 1827 |
# change form type |
1873 | 1828 |
$::form->{type} = $self->order->type; |
1874 | 1829 |
$self->type($self->init_type); |
1875 |
$self->cv ($self->init_cv); |
|
1830 |
$self->type_data($self->init_type_data); |
|
1831 |
$self->cv($self->init_cv); |
|
1876 | 1832 |
$self->check_auth; |
1877 | 1833 |
|
1834 |
$self->setup_custom_shipto_from_form($self->order, $::form); |
|
1835 |
|
|
1878 | 1836 |
foreach my $item (@{$self->order->items_sorted}) { |
1879 | 1837 |
# set item ids to new fake id, to identify them as new items |
1880 | 1838 |
$item->{new_fake_id} = join('_', 'new', Time::HiRes::gettimeofday(), int rand 1000000000000); |
... | ... | |
1885 | 1843 |
$item->{render_second_row} = 1; |
1886 | 1844 |
} |
1887 | 1845 |
|
1846 |
$self->order->prepare_stock_info($_) for $self->order->items; |
|
1888 | 1847 |
$self->get_unalterable_data(); |
1889 | 1848 |
} |
1890 | 1849 |
|
Auch abrufbar als: Unified diff
Beleg laden für Auftrag, Lieferschein und Reklamation angleichen