Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 4d45be84

Von Tamino Steinert vor 6 Monaten hinzugefügt

  • ID 4d45be848f4418fa2518f62c111d1f0b164c5eb6
  • Vorgänger e4982f5b
  • Nachfolger 5f8fd730

Varianten: Sortieren der Variantentabelle ermöglicht

Unterschiede anzeigen:

SL/Controller/Part.pm
857 857
  $self->js->run('kivi.Part.redisplay_items', \@to_sort)->render;
858 858
}
859 859

  
860
sub action_reorder_variants {
861
  my ($self) = @_;
862

  
863
  my $part= $self->part;
864

  
865
  my %sort_keys = (
866
    partnumber       => sub { $_[0]->partnumber },
867
    description      => sub { $_[0]->description },
868
    sellprice        => sub { $_[0]->sellprice },
869
    lastcost         => sub { $_[0]->lastcost },
870
    variant_values   => sub { $_[0]->variant_values },
871
  );
872
  foreach my $variant_property (@{$part->variant_properties}) {
873
    my $key = 'variant_property_' . $variant_property->unique_name;
874
    $sort_keys{$key} = sub {
875
      $_[0]->get_variant_property_value_by_unique_name($variant_property->unique_name)->value;
876
    }
877
  }
878

  
879
  my $method = $sort_keys{$::form->{order_by}};
880

  
881
  my @items = $part->variants;
882

  
883
  my %variant_id_to_position =
884
    map {$_->{id} => $_->{position}}
885
    @{$::form->{variants}};
886

  
887
  my @to_sort = map { { old_pos => $variant_id_to_position{$_->id}, order_by => $method->($_) } } @items;
888
  if ($::form->{order_by} =~ /^(sellprice|lastcost)$/) {
889
    if ($::form->{sort_dir}) {
890
      @to_sort = sort { $a->{order_by} <=> $b->{order_by} } @to_sort;
891
    } else {
892
      @to_sort = sort { $b->{order_by} <=> $a->{order_by} } @to_sort;
893
    }
894
  } else {
895
    if ($::form->{sort_dir}) {
896
      @to_sort = sort { $a->{order_by} cmp $b->{order_by} } @to_sort;
897
    } else {
898
      @to_sort = sort { $b->{order_by} cmp $a->{order_by} } @to_sort;
899
    }
900
  };
901

  
902
  $self->js->run('kivi.Part.redisplay_variants', \@to_sort)->render;
903
}
904

  
860 905
sub action_warehouse_changed {
861 906
  my ($self) = @_;
862 907

  

Auch abrufbar als: Unified diff