]> wagnertech.de Git - mfinanz.git/blobdiff - SL/Presenter/Part.pm
kivi.Part.js: Datenübergabe Picker<->Presenter auf data umgestellt
[mfinanz.git] / SL / Presenter / Part.pm
index c3b366a9921e7dcbbdf445a6c9601ce2072e6932..e0f670c624d535257d4e189095ab3bd31a6d6720 100644 (file)
@@ -7,7 +7,7 @@ use SL::DB::PartClassification;
 use SL::Locale::String qw(t8);
 
 use Exporter qw(import);
-our @EXPORT = qw(part_picker part select_classification classification_abbreviation type_abbreviation separate_abbreviation);
+our @EXPORT = qw(part_picker part select_classification classification_abbreviation type_abbreviation separate_abbreviation typeclass_abbreviation);
 
 use Carp;
 
@@ -30,19 +30,18 @@ sub part_picker {
   my ($self, $name, $value, %params) = @_;
 
   $value = SL::DB::Manager::Part->find_by(id => $value) if $value && !ref $value;
-  my $id = delete($params{id}) || $self->name_to_id($name);
-  my $fat_set_item = delete $params{fat_set_item};
+  my $id = $params{id} || $self->name_to_id($name);
 
   my @classes = $params{class} ? ($params{class}) : ();
   push @classes, 'part_autocomplete';
-  push @classes, 'partpicker_fat_set_item' if $fat_set_item;
 
   my $ret =
-    $self->input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => "@classes", type => 'hidden', id => $id) .
-    join('', map { $params{$_} ? $self->input_tag("", delete $params{$_}, id => "${id}_${_}", type => 'hidden') : '' } qw(part_type unit convertible_unit)) .
+    $self->input_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => "@classes", type => 'hidden', id => $id,
+      'data-part-picker-data' => JSON::to_json(\%params),
+    ) .
     $self->input_tag("", ref $value ? $value->displayable_name : '', id => "${id}_name", %params);
 
-  $::request->layout->add_javascripts('autocomplete_part.js');
+  $::request->layout->add_javascripts('kivi.Part.js');
   $::request->presenter->need_reinit_widgets($id);
 
   $self->html_tag('span', $ret, class => 'part_picker');
@@ -53,7 +52,6 @@ sub part_picker {
 #
 sub type_abbreviation {
   my ($self, $part_type) = @_;
-  $main::lxdebug->message(LXDebug->DEBUG2(),"parttype=".$part_type);
   return $::locale->text('Assembly (typeabbreviation)')   if $part_type eq 'assembly';
   return $::locale->text('Part (typeabbreviation)')       if $part_type eq 'part';
   return $::locale->text('Assortment (typeabbreviation)') if $part_type eq 'assortment';
@@ -85,6 +83,22 @@ sub classification_abbreviation {
   $obj && $obj->abbreviation ? t8($obj->abbreviation) : '';
 }
 
+sub typeclass_abbreviation {
+  my ($self, $part) = @_;
+  return '' if !$part || !$part->isa('SL::DB::Part');
+  return $self->type_abbreviation($part->part_type).$self->classification_abbreviation($part->classification_id);
+}
+
+#
+# shortcut for article type
+#
+sub separate_abbreviation {
+  my ($self, $id) = @_;
+  SL::DB::Manager::PartClassification->cache_all();
+  my $obj = SL::DB::PartClassification->load_cached($id);
+  $obj && $obj->abbreviation && $obj->report_separate ? t8($obj->abbreviation) : '';
+}
+
 #
 # generate selection tag
 #
@@ -152,6 +166,14 @@ Returns the shortcut of the classification
 
 =over 2
 
+=item C<separate_abbreviation $classification_id>
+
+Returns the shortcut of the classification if the classifiaction has the separate flag set.
+
+=back
+
+=over 2
+
 =item C<select_classification $name,%params>
 
 Returns a HTML Select Tag with all available Classifications
@@ -201,7 +223,7 @@ C<part_picker> will register it's javascript for inclusion in the next header
 rendering. If you write a standard controller that only call C<render> once, it
 will just work.  In case the header is generated in a different render call
 (multiple blocks, ajax, old C<bin/mozilla> style controllers) you need to
-include C<js/autocomplete_part.js> yourself.
+include C<kivi.Part.js> yourself.
 
 =back