150 |
150 |
);
|
151 |
151 |
}
|
152 |
152 |
|
153 |
|
# edit a collective order (consisting of one or more existing orders)
|
154 |
|
sub action_edit_collective {
|
155 |
|
my ($self) = @_;
|
156 |
|
|
157 |
|
# collect order ids
|
158 |
|
my @multi_ids = map {
|
159 |
|
$_ =~ m{^multi_id_(\d+)$} && $::form->{'multi_id_' . $1} && $::form->{'trans_id_' . $1} && $::form->{'trans_id_' . $1}
|
160 |
|
} grep { $_ =~ m{^multi_id_\d+$} } keys %$::form;
|
161 |
|
|
162 |
|
# fall back to add if no ids are given
|
163 |
|
if (scalar @multi_ids == 0) {
|
164 |
|
$self->action_add();
|
165 |
|
return;
|
166 |
|
}
|
167 |
|
|
168 |
|
# fall back to save as new if only one id is given
|
169 |
|
if (scalar @multi_ids == 1) {
|
170 |
|
$self->order(SL::DB::DeliveryOrder->new(id => $multi_ids[0])->load);
|
171 |
|
$self->action_save_as_new();
|
172 |
|
return;
|
173 |
|
}
|
174 |
|
|
175 |
|
# make new order from given orders
|
176 |
|
my @multi_orders = map { SL::DB::DeliveryOrder->new(id => $_)->load } @multi_ids;
|
177 |
|
$self->{converted_from_oe_id} = join ' ', map { $_->id } @multi_orders;
|
178 |
|
my $target_type = SALES_DELIVERY_ORDER_TYPE();
|
179 |
|
my $delivery_order = SL::Model::Record->new_from_workflow_multi(\@multi_orders, $target_type, sort_sources_by => 'transdate');
|
180 |
|
$self->order($delivery_order);
|
181 |
|
|
182 |
|
$self->action_edit();
|
183 |
|
}
|
184 |
|
|
185 |
153 |
# delete the order
|
186 |
154 |
sub action_delete {
|
187 |
155 |
my ($self) = @_;
|
... | ... | |
231 |
199 |
my $new_order = SL::Model::Record->clone_for_save_as_new($saved_order, $order);
|
232 |
200 |
$self->order($new_order);
|
233 |
201 |
|
234 |
|
# no linked records on save as new
|
235 |
|
delete $::form->{$_} for qw(converted_from_oe_id converted_from_orderitems_ids);
|
236 |
|
|
237 |
202 |
if (!$::form->{form_validity_token}) {
|
238 |
203 |
$::form->{form_validity_token} = SL::DB::ValidityToken->create(scope => SL::DB::ValidityToken::SCOPE_DELIVERY_ORDER_SAVE())->token;
|
239 |
204 |
}
|
... | ... | |
515 |
480 |
);
|
516 |
481 |
}
|
517 |
482 |
|
518 |
|
# save the order and redirect to the frontend subroutine for a new
|
519 |
|
# delivery order
|
520 |
|
sub action_save_and_delivery_order {
|
521 |
|
my ($self) = @_;
|
522 |
|
|
523 |
|
$self->save_and_redirect_to(
|
524 |
|
controller => 'oe.pl',
|
525 |
|
action => 'oe_delivery_order_from_order',
|
526 |
|
);
|
527 |
|
}
|
528 |
|
|
529 |
483 |
# save the order and redirect to the frontend subroutine for a new
|
530 |
484 |
# invoice
|
531 |
485 |
sub action_save_and_invoice {
|
... | ... | |
537 |
491 |
);
|
538 |
492 |
}
|
539 |
493 |
|
540 |
|
# workflow from sales order to sales quotation
|
541 |
|
sub action_sales_quotation {
|
542 |
|
$_[0]->workflow_sales_or_request_for_quotation(SALES_QUOTATION_TYPE());
|
543 |
|
}
|
544 |
|
|
545 |
|
# workflow from sales order to sales quotation
|
546 |
|
sub action_request_for_quotation {
|
547 |
|
$_[0]->workflow_sales_or_request_for_quotation(REQUEST_QUOTATION_TYPE());
|
548 |
|
}
|
549 |
|
|
550 |
|
# workflow from sales quotation to sales order
|
551 |
|
sub action_sales_order {
|
552 |
|
$_[0]->workflow_sales_or_purchase_order(SALES_ORDER_TYPE());
|
553 |
|
}
|
554 |
|
|
555 |
|
# workflow from rfq to purchase order
|
556 |
|
sub action_purchase_order {
|
557 |
|
$_[0]->workflow_sales_or_purchase_order(PURCHASE_ORDER_TYPE());
|
558 |
|
}
|
559 |
|
|
560 |
494 |
# workflow from purchase order to ap transaction
|
561 |
495 |
sub action_save_and_ap_transaction {
|
562 |
496 |
my ($self) = @_;
|
... | ... | |
838 |
772 |
->render;
|
839 |
773 |
}
|
840 |
774 |
|
841 |
|
# show the popup to choose a price/discount source
|
842 |
|
sub action_price_popup {
|
843 |
|
my ($self) = @_;
|
844 |
|
|
845 |
|
my $idx = first_index { $_ eq $::form->{item_id} } @{ $::form->{orderitem_ids} };
|
846 |
|
my $item = $self->order->items_sorted->[$idx];
|
847 |
|
|
848 |
|
$self->render_price_dialog($item);
|
849 |
|
}
|
850 |
|
|
851 |
775 |
# save the order in a session variable and redirect to the part controller
|
852 |
776 |
sub action_create_part {
|
853 |
777 |
my ($self) = @_;
|
... | ... | |
1271 |
1195 |
$_[0]->make_order;
|
1272 |
1196 |
}
|
1273 |
1197 |
|
1274 |
|
sub init_all_price_factors {
|
1275 |
|
SL::DB::Manager::PriceFactor->get_all;
|
1276 |
|
}
|
1277 |
|
|
1278 |
1198 |
sub init_part_picker_classification_ids {
|
1279 |
1199 |
my ($self) = @_;
|
1280 |
1200 |
|
... | ... | |
1791 |
1711 |
action => [
|
1792 |
1712 |
t8('Workflow'),
|
1793 |
1713 |
],
|
1794 |
|
action => [
|
1795 |
|
t8('Save and Quotation'),
|
1796 |
|
submit => [ '#order_form', { action => "DeliveryOrder/sales_quotation" } ],
|
1797 |
|
only_if => $self->type_data->show_menu("save_and_quotation"),
|
1798 |
|
disabled => !$may_edit_create ? t8('You do not have the permissions to access this function.') : undef,
|
1799 |
|
],
|
1800 |
|
action => [
|
1801 |
|
t8('Save and RFQ'),
|
1802 |
|
submit => [ '#order_form', { action => "DeliveryOrder/request_for_quotation" } ],
|
1803 |
|
only_if => $self->type_data->show_menu("save_and_rfq"),
|
1804 |
|
disabled => !$may_edit_create ? t8('You do not have the permissions to access this function.') : undef,
|
1805 |
|
],
|
1806 |
|
action => [
|
1807 |
|
t8('Save and Sales Order'),
|
1808 |
|
submit => [ '#order_form', { action => "DeliveryOrder/sales_order" } ],
|
1809 |
|
only_if => $self->type_data->show_menu("save_and_sales_order"),
|
1810 |
|
disabled => !$may_edit_create ? t8('You do not have the permissions to access this function.') : undef,
|
1811 |
|
],
|
1812 |
|
action => [
|
1813 |
|
t8('Save and Purchase Order'),
|
1814 |
|
call => [ 'kivi.DeliveryOrder.purchase_order_check_for_direct_delivery' ],
|
1815 |
|
only_if => $self->type_data->show_menu("save_and_purchase_order"),
|
1816 |
|
disabled => !$may_edit_create ? t8('You do not have the permissions to access this function.') : undef,
|
1817 |
|
],
|
1818 |
|
action => [
|
1819 |
|
t8('Save and Delivery Order'),
|
1820 |
|
call => [ 'kivi.DeliveryOrder.save', {
|
1821 |
|
action => 'save_and_delivery_order',
|
1822 |
|
warn_on_duplicates => $::instance_conf->get_order_warn_duplicate_parts,
|
1823 |
|
warn_on_reqdate => $::instance_conf->get_order_warn_no_deliverydate,
|
1824 |
|
}],
|
1825 |
|
only_if => $self->type_data->show_menu("save_and_delivery_order"),
|
1826 |
|
disabled => !$may_edit_create ? t8('You do not have the permissions to access this function.') : undef,
|
1827 |
|
],
|
1828 |
1714 |
action => [
|
1829 |
1715 |
t8('Save and Invoice'),
|
1830 |
1716 |
call => [ 'kivi.DeliveryOrder.save', {
|
DeliveryOrder: nicht genutzter Code entfernt