X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FPart.pm;h=eff03697610b2d6a41fd8352cf303bdf96d51289;hb=7ed4b336b89b861479a1fc2670b9456334b0d1be;hp=60bebd4c13d4026ffbbda7bf04d81022a40914ed;hpb=2f374c963333aa8ee6ebbab7942b57386585c58b;p=kivitendo-erp.git diff --git a/SL/Controller/Part.pm b/SL/Controller/Part.pm index 60bebd4c1..eff036976 100644 --- a/SL/Controller/Part.pm +++ b/SL/Controller/Part.pm @@ -10,11 +10,12 @@ use SL::Locale::String qw(t8); use SL::JSON; use Rose::Object::MakeMethods::Generic ( - 'scalar --get_set_init' => [ qw(parts models) ], + 'scalar --get_set_init' => [ qw(parts models part) ], ); # safety -__PACKAGE__->run_before(sub { $::auth->assert('part_service_assembly_edit') }); +__PACKAGE__->run_before(sub { $::auth->assert('part_service_assembly_edit') }, + except => [ qw(ajax_autocomplete part_picker_search part_picker_result) ]); sub action_ajax_autocomplete { my ($self, %params) = @_; @@ -32,8 +33,8 @@ sub action_ajax_autocomplete { obsolete => 0, SL::DB::Manager::Part->type_filter($::form->{filter}{type}), or => [ - description => { ilike => $::form->{filter}{'all:substr::ilike'} }, - partnumber => { ilike => $::form->{filter}{'all:substr::ilike'} }, + description => { ilike => $::form->{filter}{'all:substr:multi::ilike'} }, + partnumber => { ilike => $::form->{filter}{'all:substr:multi::ilike'} }, ] ], limit => 2, @@ -50,6 +51,8 @@ sub action_ajax_autocomplete { partnumber => $_->partnumber, description => $_->description, type => $_->type, + unit => $_->unit, + cvars => { map { ($_->config->name => { value => $_->value_as_text, is_valid => $_->is_valid }) } @{ $_->cvars_by_config } }, } } @{ $self->parts }; # neato: if exact match triggers we don't even need the init_parts @@ -57,8 +60,6 @@ sub action_ajax_autocomplete { } sub action_test_page { - $::request->{layout}->add_javascripts('autocomplete_part.js'); - $_[0]->render('part/test_page'); } @@ -70,10 +71,35 @@ sub action_part_picker_result { $_[0]->render('part/_part_picker_result', { layout => 0 }); } +sub action_show { + my ($self) = @_; + + if ($::request->type eq 'json') { + my $part_hash; + if (!$self->part) { + # TODO error + } else { + require Rose::DB::Object::Helpers; + $part_hash = $self->part->as_tree; + $part_hash->{cvars} = $self->part->cvar_as_hashref; + } + + $self->render(\ SL::JSON::to_json($part_hash), { layout => 0, type => 'json', process => 0 }); + } +} + sub init_parts { + if ($::form->{no_paginate}) { + $_[0]->models->disable_plugin('paginated'); + } + $_[0]->models->get; } +sub init_part { + SL::DB::Part->new(id => $::form->{id} || $::form->{part}{id})->load; +} + sub init_models { my ($self) = @_; @@ -81,10 +107,11 @@ sub init_models { controller => $self, sorted => { _default => { - by => 'partnumber', + by => 'description', dir => 1, }, partnumber => t8('Partnumber'), + description => t8('Description'), }, with_objects => [ qw(unit_obj) ], );