Part api Funktion um eine Ware als json abzufragen
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 3 Apr 2014 12:43:40 +0000 (14:43 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 9 Apr 2014 15:37:34 +0000 (17:37 +0200)
SL/Controller/Part.pm
SL/DB/Part.pm
js/autocomplete_part.js

index 4349b1f..e64a774 100644 (file)
@@ -10,7 +10,7 @@ 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
@@ -33,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,
@@ -72,10 +72,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) = @_;
 
@@ -83,10 +108,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) ],
   );
index ecdaeaa..9f2c4bd 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 
 use Carp;
 use List::MoreUtils qw(any);
+use Rose::DB::Object::Helpers qw(as_tree);
 
 use SL::DBUtils;
 use SL::DB::MetaSetup::Part;
index 62c1bf4..a08130b 100644 (file)
@@ -53,7 +53,7 @@ namespace('kivi', function(k){
 
     function ajax_data(term) {
       var data = {
-        'filter.all:substr::ilike': term,
+        'filter.all:substr:multi::ilike': term,
         'filter.obsolete': 0,
         'filter.unit_obj.convertible_to': $convertible_unit && $convertible_unit.val() ? $convertible_unit.val() : '',
         no_paginate:  $('#no_paginate').prop('checked') ? 1 : 0,