X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FCustomVariableConfig.pm;h=1b780e5fc0441ef78616639b825bceb6e7508bd7;hb=9c19433144efc5b50d90a969aa9ac6ea65b2dbbf;hp=a56740b8f7d4528537bf2f91ff6f88dfbbcb3236;hpb=86b6ff8a570d2fdc5fa53ba3dc9b3833e657e2e6;p=kivitendo-erp.git diff --git a/SL/Controller/CustomVariableConfig.pm b/SL/Controller/CustomVariableConfig.pm index a56740b8f..1b780e5fc 100644 --- a/SL/Controller/CustomVariableConfig.pm +++ b/SL/Controller/CustomVariableConfig.pm @@ -8,6 +8,7 @@ use List::Util qw(first); use SL::DB::CustomVariableConfig; use SL::DB::CustomVariableValidity; +use SL::DB::PartsGroup; use SL::Helper::Flash; use SL::Locale::String; use Data::Dumper; @@ -66,6 +67,9 @@ sub show_form { split m/:/, ($self->config->flags || '') }); + $params{all_partsgroups} = SL::DB::Manager::PartsGroup->get_all(); + + $::request->layout->use_javascript("${_}.js") for qw(jquery.selectboxes jquery.multiselect2side); $self->render('custom_variable_config/form', %params); } @@ -90,13 +94,16 @@ sub action_update { sub action_destroy { my ($self) = @_; + # delete relationship to partsgroups (for filter) before cvar can be deleted + $self->config->update_attributes(partsgroups => []); + if (eval { $self->config->delete; 1; }) { flash_later('info', t8('The custom variable has been deleted.')); } else { flash_later('error', t8('The custom variable is in use and cannot be deleted.')); } - $self->redirect_to(action => 'list'); + $self->redirect_to(action => 'list', module => $self->module); } sub action_reorder { @@ -151,12 +158,14 @@ sub init_translated_types { sub init_modules { my ($self, %params) = @_; - return [ - { module => 'CT', description => t8('Customers and vendors') }, - { module => 'Contacts', description => t8('Contact persons') }, - { module => 'IC', description => t8('Parts, services and assemblies') }, - { module => 'Projects', description => t8('Projects') }, - ]; + return [ sort { $a->{description}->translated cmp $b->{description}->translated } ( + { module => 'CT', description => t8('Customers and vendors') }, + { module => 'Contacts', description => t8('Contact persons') }, + { module => 'IC', description => t8('Parts, services and assemblies') }, + { module => 'Projects', description => t8('Projects') }, + { module => 'RequirementSpecs', description => t8('Requirement Specs') }, + { module => 'ShipTo', description => t8('Shipping Address') }, + )]; } sub create_or_update { @@ -166,6 +175,14 @@ sub create_or_update { my $params = delete($::form->{config}) || { }; delete $params->{id}; + if ($self->module eq 'IC') { + $params->{partsgroups} = [] if !$params->{flag_partsgroup_filter}; + } else { + delete $params->{flag_partsgroup_filter}; + $params->{partsgroups} = []; + } + + $params->{partsgroups} ||= []; # The list is empty, if control is not send by the browser. $params->{default_value} = $::form->parse_amount(\%::myconfig, $params->{default_value}) if $params->{type} eq 'number'; $params->{included_by_default} = 0 if !$params->{includeable}; $params->{flags} = join ':', map { m/^flag_(.*)/; "${1}=" . delete($params->{$_}) } grep { m/^flag_/ } keys %{ $params }; @@ -180,13 +197,13 @@ sub create_or_update { return; } - my $dbh = $self->config->db; - $dbh->begin_work; - - $self->config->save; - $self->_set_cvar_validity() if $is_new; + SL::DB->client->with_transaction(sub { + my $dbh = SL::DB->client->dbh; - $dbh->commit; + $self->config->save; + $self->_set_cvar_validity() if $is_new; + 1; + }) or do { die SL::DB->client->error }; flash_later('info', $is_new ? t8('The custom variable has been created.') : t8('The custom variable has been saved.')); $self->redirect_to(action => 'list', module => $self->module);