Merge branch 'f-project-search-custom-variables'
[kivitendo-erp.git] / SL / Controller / ClientConfig.pm
index a222a39..59fe4f5 100644 (file)
@@ -12,18 +12,21 @@ use SL::DB::Default;
 use SL::DB::Language;
 use SL::DB::Part;
 use SL::DB::Unit;
+use SL::DB::Customer;
 use SL::Helper::Flash;
 use SL::Locale::String qw(t8);
 use SL::PriceSource::ALL;
 use SL::Template;
 use SL::Controller::TopQuickSearch;
+use SL::Helper::ShippedQty;
 
 __PACKAGE__->run_before('check_auth');
 
 use Rose::Object::MakeMethods::Generic (
-  'scalar --get_set_init' => [ qw(defaults all_warehouses all_weightunits all_languages all_currencies all_templates all_price_sources h_unit_name available_quick_search_modules
+  'scalar --get_set_init' => [ qw(defaults all_warehouses all_weightunits all_languages all_currencies all_templates all_price_sources h_unit_name available_quick_search_modules available_shipped_qty_item_identity_fields
                                   all_project_statuses all_project_types
-                                  posting_options payment_options accounting_options inventory_options profit_options balance_startdate_method_options) ],
+                                  posting_options payment_options accounting_options inventory_options profit_options balance_startdate_method_options
+                                  displayable_name_specs_by_module) ],
 );
 
 sub action_edit {
@@ -130,6 +133,11 @@ sub action_save {
     $self->defaults->templates('templates/' . $::form->{new_templates});
   }
 
+  # Displayable name preferences
+  foreach my $specs (@{ $::form->{displayable_name_specs} }) {
+    $self->displayable_name_specs_by_module->{$specs->{module}}->{prefs}->store_default($specs->{default});
+  }
+
   # Finally save defaults.
   $self->defaults->save;
 
@@ -197,6 +205,27 @@ sub init_available_quick_search_modules {
   [ SL::Controller::TopQuickSearch->new->available_modules ];
 }
 
+sub init_available_shipped_qty_item_identity_fields {
+  [ SL::Helper::ShippedQty->new->available_item_identity_fields ];
+}
+
+sub init_displayable_name_specs_by_module {
+  +{
+     'SL::DB::Customer' => {
+       specs => SL::DB::Customer->displayable_name_specs,
+       prefs => SL::DB::Customer->displayable_name_prefs,
+     },
+     'SL::DB::Vendor' => {
+       specs => SL::DB::Vendor->displayable_name_specs,
+       prefs => SL::DB::Vendor->displayable_name_prefs,
+     },
+     'SL::DB::Part' => {
+       specs => SL::DB::Part->displayable_name_specs,
+       prefs => SL::DB::Part->displayable_name_prefs,
+     },
+  };
+}
+
 #
 # filters
 #
@@ -214,10 +243,25 @@ sub edit_form {
 
   $::request->layout->use_javascript("${_}.js") for qw(jquery.selectboxes jquery.multiselect2side kivi.File);
 
+  $self->setup_edit_form_action_bar;
   $self->render('client_config/form', title => t8('Client Configuration'),
                 make_chart_title     => sub { $_[0]->accno . '--' . $_[0]->description },
                 make_templates_value => sub { 'templates/' . $_[0] },
               );
 }
 
+sub setup_edit_form_action_bar {
+  my ($self) = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Save'),
+        submit    => [ '#form', { action => 'ClientConfig/save' } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
 1;