]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Controller/Order.pm
Auftrags-Controller: Sortieren der Positionen
[mfinanz.git] / SL / Controller / Order.pm
index 0f715189d6d9177571ae516ecdc77df6ddad2840..5c8685fbb29dd2be5c766111e445f5e31ab76b64 100644 (file)
@@ -449,6 +449,29 @@ sub action_recalc_amounts_and_taxes {
   $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) = @_;