X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/815c3639a21ed53b288fd8bbb231e741c8e67ce5..426a5bf3c8b6a5cd2509699ebace0d24e614f2b7:/SL/Presenter/Part.pm diff --git a/SL/Presenter/Part.pm b/SL/Presenter/Part.pm index 08c425ba6..e0f670c62 100644 --- a/SL/Presenter/Part.pm +++ b/SL/Presenter/Part.pm @@ -3,10 +3,11 @@ package SL::Presenter::Part; use strict; use SL::DB::Part; -use SL::DB::Manager::PartsClassification; +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; @@ -29,30 +30,28 @@ 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'); } # -# Must be addapted to new type table +# shortcut for article type # 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'; @@ -74,22 +73,40 @@ sub type_abbreviation { # $::locale->text('Merchandise') # $::locale->text('Production') +# +# shortcut for article type +# sub classification_abbreviation { my ($self, $id) = @_; - $main::lxdebug->message(LXDebug->DEBUG2(),"classif=".$id); - return $::locale->text(SL::DB::Manager::PartsClassification->get_abbreviation($id)); + SL::DB::Manager::PartClassification->cache_all(); + my $obj = SL::DB::PartClassification->load_cached($id); + $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) = @_; - return $::locale->text(SL::DB::Manager::PartsClassification->get_separate_abbreviation($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 +# sub select_classification { my ($self, $name, %attributes) = @_; $attributes{value_key} = 'id'; $attributes{title_key} = 'description'; - my $collection = SL::DB::Manager::PartsClassification->get_all_sorted(); + my $collection = SL::DB::Manager::PartClassification->get_all_sorted(); $_->description($::locale->text($_->description)) for @{ $collection }; return $self->select_tag( $name, $collection, %attributes ); } @@ -141,6 +158,40 @@ to the corresponding 'edit' action. =over 2 +=item C + +Returns the shortcut of the classification + +=back + +=over 2 + +=item C + +Returns the shortcut of the classification if the classifiaction has the separate flag set. + +=back + +=over 2 + +=item C + +Returns a HTML Select Tag with all available Classifications + +C<%params> can include: + +=over 4 + +=item * default + +The Id of the selected item . + +=back + +=back + +=over 2 + =item C All-in-one picker widget for parts. The name will be both id and name @@ -172,7 +223,7 @@ C will register it's javascript for inclusion in the next header rendering. If you write a standard controller that only call C once, it will just work. In case the header is generated in a different render call (multiple blocks, ajax, old C style controllers) you need to -include C yourself. +include C yourself. =back @@ -262,4 +313,6 @@ None atm :) Sven Schöling Es.schoeling@linet-services.deE +Martin Helmling Emartin.helmling@opendynamic.deE + =cut