->run('row_table_scroll_down')
->run('row_set_keyboard_events_by_id', $item_id)
->run('set_unit_change_with_oldval_by_id', $item_id)
+ ->run('renumber_positions')
->on('.recalc', 'change', 'recalc_amounts_and_taxes')
->on('.reformat_number', 'change', 'reformat_number')
->focus('#add_item_parts_id_name');
$self->js
->run('close_multi_items_dialog')
->run('row_table_scroll_down')
+ ->run('renumber_positions')
->on('.recalc', 'change', 'recalc_amounts_and_taxes')
->on('.reformat_number', 'change', 'reformat_number')
->focus('#add_item_parts_id_name');
$self->js->render();
}
+sub action_reorder_items {
+ my ($self) = @_;
+
+ my %sort_keys = (
+ partnumber => sub { $_[0]->part->partnumber },
+ description => sub { $_[0]->description },
+ qty => sub { $_[0]->qty },
+ sellprice => sub { $_[0]->sellprice },
+ discount => sub { $_[0]->discount },
+ );
+
+ my $method = $sort_keys{$::form->{order_by}};
+ my @to_sort = map { { old_pos => $_->position, order_by => $method->($_) } } @{ $self->order->items_sorted };
+ if ($::form->{sort_dir}) {
+ @to_sort = sort { $a->{order_by} cmp $b->{order_by} } @to_sort;
+ } else {
+ @to_sort = sort { $b->{order_by} cmp $a->{order_by} } @to_sort;
+ }
+ $self->js
+ ->run('redisplay_items', \@to_sort)
+ ->render;
+}
+
sub action_price_popup {
my ($self) = @_;