]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Controller/Order.pm
Auftrags-Controller: Sortieren der Positionen
[mfinanz.git] / SL / Controller / Order.pm
index 8bebe381def059a560e56dd6140c33b39ced3288..5c8685fbb29dd2be5c766111e445f5e31ab76b64 100644 (file)
@@ -371,6 +371,7 @@ sub action_add_item {
     ->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('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');
     ->on('.recalc', 'change', 'recalc_amounts_and_taxes')
     ->on('.reformat_number', 'change', 'reformat_number')
     ->focus('#add_item_parts_id_name');
@@ -429,6 +430,7 @@ sub action_add_multi_items {
   $self->js
     ->run('close_multi_items_dialog')
     ->run('row_table_scroll_down')
   $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');
     ->on('.recalc', 'change', 'recalc_amounts_and_taxes')
     ->on('.reformat_number', 'change', 'reformat_number')
     ->focus('#add_item_parts_id_name');
@@ -447,6 +449,29 @@ sub action_recalc_amounts_and_taxes {
   $self->js->render();
 }
 
   $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) = @_;
 
 sub action_price_popup {
   my ($self) = @_;