commit ab4fd70d62762d7d0e1e136be66ff2a0b8b3568b
Author: Moritz Bunkus <m.bunkus@linet.de>
Date:   Thu Mar 23 09:22:38 2017 +0100

    Menüvereinheitlichung: »Zahlungsverkehr« → »Kontobewegungen/Auszugsimport/Verbuchen/Abgleich« umgestellt

diff --git a/SL/Controller/BankImport.pm b/SL/Controller/BankImport.pm
index bc65d17b7..6400e17bb 100644
--- a/SL/Controller/BankImport.pm
+++ b/SL/Controller/BankImport.pm
@@ -19,7 +19,7 @@ sub action_upload_mt940 {
   my ($self, %params) = @_;
 
   $self->setup_upload_mt940_action_bar;
-  $self->render('bankimport/form', title => $::locale->text('MT940 import'), profile => $self->profile ? 1 : 0);
+  $self->render('bankimport/form', title => $::locale->text('Import statement (MT940 format)'), profile => $self->profile ? 1 : 0);
 }
 
 sub action_import_mt940 {
@@ -63,6 +63,27 @@ sub setup_upload_mt940_action_bar {
         submit    => [ '#form', { action => 'BankImport/import_mt940' } ],
         accesskey => 'enter',
       ],
+
+      'separator',
+
+      combobox => [
+        action => [ t8('Account') ],
+
+        link => [
+          t8('Post Bank Statement'),
+          link => $self->url_for(controller => 'BankTransaction', action => 'search'),
+        ],
+
+        link => [
+          t8('Reconciliation with bank'),
+          link => $self->url_for(controller => 'Reconciliation', action => 'search'),
+        ],
+
+        link => [
+          t8('Manual Reconciliation'),
+          link => $self->url_for(controller => 'rc.pl', action => 'reconciliation'),
+        ],
+      ],
     );
   }
 }
diff --git a/SL/Controller/BankTransaction.pm b/SL/Controller/BankTransaction.pm
index d154667d5..14d3d9dde 100644
--- a/SL/Controller/BankTransaction.pm
+++ b/SL/Controller/BankTransaction.pm
@@ -50,6 +50,7 @@ sub action_search {
 
   $self->setup_search_action_bar;
   $self->render('bank_transactions/search',
+                title          => t8('Post Bank Statement'),
                  BANK_ACCOUNTS => $bank_accounts);
 }
 
@@ -59,8 +60,13 @@ sub action_list_all {
   $self->make_filter_summary;
   $self->prepare_report;
 
-  $self->setup_list_all_action_bar;
-  $self->report_generator_list_objects(report => $self->{report}, objects => $self->models->get);
+  $self->report_generator_list_objects(
+    report  => $self->{report},
+    objects => $self->models->get,
+    options => {
+      action_bar_setup_hook => sub { $self->setup_list_all_action_bar(report_generator_actions => \@_) },
+    },
+  );
 }
 
 sub action_list {
@@ -264,6 +270,7 @@ sub action_list {
   $bank_transactions = [ sort { $b->{agreement} <=> $a->{agreement} } @{ $bank_transactions } ] if $::form->{sort_by} eq 'proposal' and $::form->{sort_dir} == 0;
 
   $::request->layout->add_javascripts("kivi.BankTransaction.js");
+  $self->setup_list_action_bar;
   $self->render('bank_transactions/list',
                 title             => t8('Bank transactions MT940'),
                 BANK_TRANSACTIONS => $bank_transactions,
@@ -813,8 +820,8 @@ sub prepare_report {
     std_column_visibility => 1,
     controller_class      => 'BankTransaction',
     output_format         => 'HTML',
-    top_info_text         => $::locale->text('Bank transactions'),
-    title                 => $::locale->text('Bank transactions'),
+    top_info_text         => $::locale->text('Show account movements'),
+    title                 => $::locale->text('Show account movements'),
     allow_pdf_export      => 1,
     allow_csv_export      => 1,
   );
@@ -905,6 +912,70 @@ sub setup_search_action_bar {
         submit    => [ '#search_form', { action => 'BankTransaction/list' } ],
         accesskey => 'enter',
       ],
+
+      'separator',
+
+      combobox => [
+        action => [ t8('Account') ],
+
+        link => [
+          t8('Import Bank Statement'),
+          link => $self->url_for(controller => 'BankImport', action => 'upload_mt940'),
+        ],
+
+        link => [
+          t8('Reconciliation with bank'),
+          link => $self->url_for(controller => 'Reconciliation', action => 'search'),
+        ],
+
+        link => [
+          t8('Manual Reconciliation'),
+          link => $self->url_for(controller => 'rc.pl', action => 'reconciliation'),
+        ],
+      ],
+    );
+  }
+}
+
+sub setup_list_action_bar {
+  my ($self, %params) = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      combobox => [
+        action => [ t8('Save') ],
+
+        action => [
+          t8('Save assigned invoices'),
+          submit => [ '#list_all_form', { action => 'BankTransaction/save_invoices' } ],
+        ],
+
+        action => [
+          t8('Save selected proposals'),
+          submit => [ '#list_automatic_form', { action => 'BankTransaction/save_proposals' } ],
+        ],
+      ], # end of combobox "Save"
+
+      'separator',
+
+      combobox => [
+        action => [ t8('Account') ],
+
+        link => [
+          t8('Import Bank Statement'),
+          link => $self->url_for(controller => 'BankImport', action => 'upload_mt940'),
+        ],
+
+        link => [
+          t8('Reconciliation with bank'),
+          link => $self->url_for(controller => 'Reconciliation', action => 'search'),
+        ],
+
+        link => [
+          t8('Manual Reconciliation'),
+          link => $self->url_for(controller => 'rc.pl', action => 'reconciliation'),
+        ],
+      ], # end of combobox "Account"
     );
   }
 }
@@ -919,6 +990,34 @@ sub setup_list_all_action_bar {
         submit    => [ '#filter_form', { action => 'BankTransaction/list_all' } ],
         accesskey => 'enter',
       ],
+
+      'separator',
+
+      @{ $params{report_generator_actions} },
+
+      combobox => [
+        action => [ t8('Account') ],
+
+        link => [
+          t8('Import Bank Statement'),
+          link => $self->url_for(controller => 'BankImport', action => 'upload_mt940'),
+        ],
+
+        link => [
+          t8('Post Bank Statement'),
+          link => $self->url_for(controller => 'BankTransaction', action => 'search'),
+        ],
+
+        link => [
+          t8('Reconciliation with bank'),
+          link => $self->url_for(controller => 'Reconciliation', action => 'search'),
+        ],
+
+        link => [
+          t8('Manual Reconciliation'),
+          link => $self->url_for(controller => 'rc.pl', action => 'reconciliation'),
+        ],
+      ],
     );
   }
 }
diff --git a/SL/Controller/CsvImport.pm b/SL/Controller/CsvImport.pm
index af70dac3d..370b51bef 100644
--- a/SL/Controller/CsvImport.pm
+++ b/SL/Controller/CsvImport.pm
@@ -766,6 +766,31 @@ sub setup_render_inputs_action_bar {
         id        => 'action_import',
       ],
     );
+
+    if ($self->profile && ($self->profile->{type} eq 'bank_transactions')) {
+      $bar->add(
+        'separator',
+
+        combobox => [
+          action => [ t8('Account') ],
+
+          link => [
+            t8('Post Bank Statement'),
+            link => $self->url_for(controller => 'BankTransaction', action => 'search'),
+          ],
+
+          link => [
+            t8('Reconciliation with bank'),
+            link => $self->url_for(controller => 'Reconciliation', action => 'search'),
+          ],
+
+          link => [
+            t8('Manual Reconciliation'),
+            link => $self->url_for(controller => 'rc.pl', action => 'reconciliation'),
+          ],
+        ],
+      );
+    }
   }
 }
 
diff --git a/SL/Controller/Reconciliation.pm b/SL/Controller/Reconciliation.pm
index c9d415f1e..3cf3f17ee 100644
--- a/SL/Controller/Reconciliation.pm
+++ b/SL/Controller/Reconciliation.pm
@@ -45,7 +45,7 @@ sub action_reconciliation {
   $self->setup_reconciliation_action_bar;
   $self->render('reconciliation/form',
                 ui_tab => scalar(@{$self->{PROPOSALS}}) > 0?1:0,
-                title => t8('Reconciliation'));
+                title  => t8('Reconciliation with bank'));
 }
 
 sub action_load_overview {
@@ -632,6 +632,27 @@ sub setup_search_action_bar {
         submit    => [ '#search_form', { action => 'Reconciliation/reconciliation' } ],
         accesskey => 'enter',
       ],
+
+      'separator',
+
+      combobox => [
+        action => [ t8('Account') ],
+
+        link => [
+          t8('Import Bank Statement'),
+          link => $self->url_for(controller => 'BankImport', action => 'upload_mt940'),
+        ],
+
+        link => [
+          t8('Post Bank Statement'),
+          link => $self->url_for(controller => 'BankTransaction', action => 'search'),
+        ],
+
+        link => [
+          t8('Manual Reconciliation'),
+          link => $self->url_for(controller => 'rc.pl', action => 'reconciliation'),
+        ],
+      ],
     );
   }
 }
@@ -646,6 +667,27 @@ sub setup_reconciliation_action_bar {
         call      => [ 'filter_table' ],
         accesskey => 'enter',
       ],
+
+      'separator',
+
+      combobox => [
+        action => [ t8('Account') ],
+
+        link => [
+          t8('Import Bank Statement'),
+          link => $self->url_for(controller => 'BankImport', action => 'upload_mt940'),
+        ],
+
+        link => [
+          t8('Post Bank Statement'),
+          link => $self->url_for(controller => 'BankTransaction', action => 'search'),
+        ],
+
+        link => [
+          t8('Manual Reconciliation'),
+          link => $self->url_for(controller => 'rc.pl', action => 'reconciliation'),
+        ],
+      ],
     );
   }
 }
diff --git a/SL/Presenter/Record.pm b/SL/Presenter/Record.pm
index d8d11fc98..799d7f766 100644
--- a/SL/Presenter/Record.pm
+++ b/SL/Presenter/Record.pm
@@ -458,7 +458,7 @@ sub _bank_transactions {
 
   return $self->record_list(
     $list,
-    title   => $::locale->text('Bank transactions'),
+    title   => $::locale->text('Account movements'),
     type    => 'bank_transactions',
     columns => [
       [ $::locale->text('Transdate'),            'transdate'                      ],
diff --git a/bin/mozilla/rc.pl b/bin/mozilla/rc.pl
index f0ef98e73..d59030f74 100644
--- a/bin/mozilla/rc.pl
+++ b/bin/mozilla/rc.pl
@@ -173,6 +173,27 @@ sub setup_rc_reconciliation_action_bar {
         submit    => [ '#form', { action => "get_payments" } ],
         accesskey => 'enter',
       ],
+
+      'separator',
+
+      combobox => [
+        action => [ t8('Account') ],
+
+        link => [
+          t8('Import Bank Statement'),
+          link => 'controller.pl?action=BankImport/upload_mt940',
+        ],
+
+        link => [
+          t8('Post Bank Statement'),
+          link => 'controller.pl?action=BankTransaction/search',
+        ],
+
+        link => [
+          t8('Reconciliation with bank'),
+          link => 'controller.pl?action=Reconciliation/search',
+        ],
+      ],
     );
   }
 }
diff --git a/locale/de/all b/locale/de/all
index ac22ec61e..5c8f173ef 100755
--- a/locale/de/all
+++ b/locale/de/all
@@ -132,6 +132,7 @@ $self->{texts} = {
   'Account deleted!'            => 'Konto gelöscht!',
   'Account for fees'            => 'Konto f&uuml;r Geb&uuml;hren',
   'Account for interest'        => 'Konto f&uuml;r Zinsen',
+  'Account movements'           => 'Kontobewegungen',
   'Account number'              => 'Kontonummer',
   'Account number not unique!'  => 'Kontonummer bereits vorhanden!',
   'Account number of the goal/source' => 'Ziel- oder Quellkonto',
@@ -373,7 +374,6 @@ $self->{texts} = {
   'Bank Code Number'            => 'Bankleitzahl',
   'Bank Connection Tax Office'  => 'Bankverbindung des Finanzamts',
   'Bank Connections'            => 'Bankverbindungen',
-  'Bank Import'                 => 'Kontoauszug importieren',
   'Bank Transaction'            => 'Bankkonto',
   'Bank account'                => 'Bankkonto',
   'Bank accounts'               => 'Bankkonten',
@@ -1497,6 +1497,7 @@ $self->{texts} = {
   'Import'                      => 'Import',
   'Import AP from Scanner or Email' => 'Einkaufsbelege importieren vom Scanner oder von Email',
   'Import AR from Scanner or Email' => 'Verkaufsbelege importieren vom Scanner oder von Email',
+  'Import Bank Statement'       => 'Kontoauszug importieren',
   'Import CSV'                  => 'CSV-Import',
   'Import Status'               => 'Import Status',
   'Import a MT940 file:'        => 'Laden Sie eine MT940 Datei hoch:',
@@ -1510,6 +1511,7 @@ $self->{texts} = {
   'Import profiles'             => 'Import-Profil',
   'Import result'               => 'Import-Ergebnis',
   'Import scanned documents'    => 'Importiere gescannte Dateien',
+  'Import statement (MT940 format)' => 'Kontoauszug importieren (MT940-Format)',
   'In order to do that hit the button "Delete transaction".' => 'Drücken Sie dafür auf den Button "Buchung löschen".',
   'In order to migrate the old folder structure into the new structure you have to chose which client the old structure will be assigned to.' => 'Um die alte Ordnerstruktur in die neue Struktur zu migrieren, müssen Sie festlegen, welchem Mandanten die bisherige Struktur zugewiesen wird.',
   'In order to use kivitendo you have to create at least a client, a user and a group.' => 'Um kivitendo zu nutzen, müssen Sie mindestens einen Mandanten, einen Benutzer und eine Gruppe anlegen.',
@@ -1719,7 +1721,6 @@ $self->{texts} = {
   'MAILED'                      => 'Gesendet',
   'MD'                          => 'PT',
   'MIME type'                   => 'MIME-Typ',
-  'MT940 import'                => 'MT940 Import',
   'Main Preferences'            => 'Grundeinstellungen',
   'Main sorting'                => 'Hauptsortierung',
   'Make'                        => 'Lieferant',
@@ -1732,6 +1733,7 @@ $self->{texts} = {
   'Mandate Date of Signature'   => 'Mandat-Unterschriftsdatum',
   'Mandator ID'                 => 'Mandanten-ID',
   'Mandatory Departments'       => 'Benutzer muss Abteilungen vergeben',
+  'Manual Reconciliation'       => 'Manueller Kontenabgleich',
   'Manually sent E-Mails will have their BCC field appended with this address. Will not trigger for employees without the right to send bcc, and will not apply to mails sent by automated jobs.' => 'Diese Mailadresse wird automatisch in das BCC Feld bei Mailversand kopiert. Hat keine Auswirkungen für Mitarbeiter ohne das Recht BCC zu versenden, und ignoriert wenn Mails automatisch versendet werden.',
   'Map'                         => 'Karte',
   'Mappings (csv_import)'       => 'Spaltenzuordnungen',
@@ -2159,6 +2161,7 @@ $self->{texts} = {
   'Portrait'                    => 'Hochformat',
   'Position type in quotation/order' => 'Positionstyp in Angebot/Auftrag',
   'Post'                        => 'Buchen',
+  'Post Bank Statement'         => 'Kontoauszug verbuchen',
   'Post Outgoing Payment'       => 'Zahlungsausgang verbuchen',
   'Post Payment'                => 'Zahlung buchen',
   'Post Receipt'                => 'Zahlungseingang verbuchen',
@@ -2530,11 +2533,11 @@ $self->{texts} = {
   'Save and keep open'          => 'Speichern und geöffnet lassen',
   'Save as a new draft.'        => 'Als neuen Entwurf speichern',
   'Save as new'                 => 'Als neu speichern',
+  'Save assigned invoices'      => 'Zugewiesene Rechnungen speichern',
   'Save document in WebDAV repository' => 'Dokument in WebDAV-Ablage speichern',
   'Save draft'                  => 'Entwurf speichern',
-  'Save invoices'               => 'Rechnungen speichern',
   'Save profile'                => 'Profil speichern',
-  'Save proposals'              => 'Vorschläge speichern',
+  'Save selected proposals'     => 'Ausgewählte Vorschläge speichern',
   'Save settings as'            => 'Einstellungen speichern unter',
   'Saving failed. Error message from the database: #1' => 'Speichern schlug fehl. Fehlermeldung der Datenbank: #1',
   'Saving the file \'%s\' failed. OS error message: %s' => 'Das Speichern der Datei \'%s\' schlug fehl. Fehlermeldung des Betriebssystems: %s',
@@ -2544,7 +2547,6 @@ $self->{texts} = {
   'Search'                      => 'Suchen',
   'Search AP Aging'             => 'Offene Verbindlichkeiten',
   'Search AR Aging'             => 'Offene Forderungen',
-  'Search bank transactions'    => 'Filter für Bankbuchungen',
   'Search contacts'             => 'Personensuche',
   'Search projects'             => 'Projektsuche',
   'Search term'                 => 'Suchbegriff',
@@ -2648,6 +2650,7 @@ $self->{texts} = {
   'Show Stornos'                => 'Stornos anzeigen',
   'Show TODO list'              => 'Aufgabenliste anzeigen',
   'Show Transfer via default'   => 'Ein- / Auslagern über Standardlagerplatz anzeigen (zusätzlicher Knopf in Beleg Lieferschein)',
+  'Show account movements'      => 'Kontobewegungen anzeigen',
   'Show administration link'    => 'Link zur Administration anzeigen',
   'Show all details'            => 'Alle Details anzeigen',
   'Show all parts'              => 'Alle Artikel anzeigen',
diff --git a/menus/user/00-erp.yaml b/menus/user/00-erp.yaml
index 55eba2334..85ca10198 100644
--- a/menus/user/00-erp.yaml
+++ b/menus/user/00-erp.yaml
@@ -465,43 +465,8 @@
     action: bank_transfer_search
     vc: vendor
 - parent: cash
-  id: cash_bank_import
-  name: Bank Import
-  order: 500
-  access: bank_transaction
-  params:
-    action: BankImport/upload_mt940
-- parent: cash
-  id: cash_bank_transactions_mt940
-  name: Bank transactions MT940
-  order: 600
-  access: bank_transaction
-  params:
-    action: BankTransaction/search
-- parent: cash
-  id: cash_reconciliation_with_bank
-  name: Reconciliation with bank
-  order: 700
-  access: bank_transaction
-  params:
-    action: Reconciliation/search
-- parent: cash
-  id: cash_reconciliation
-  name: Reconciliation
-  icon: reconcilliation
-  order: 800
-  access: cash
-  module: rc.pl
-  params:
-    action: reconciliation
-- parent: cash
-  id: cash_reports
-  name: Reports
-  icon: cash_report
-  order: 900
-- parent: cash_reports
-  id: cash_reports_bank_transactions
-  name: Bank transactions
+  id: cash_bank_transactions
+  name: Account movements
   order: 500
   access: bank_transaction
   params:
diff --git a/templates/webpages/bank_transactions/search.html b/templates/webpages/bank_transactions/search.html
index 2ea2ef450..a2f1beaed 100644
--- a/templates/webpages/bank_transactions/search.html
+++ b/templates/webpages/bank_transactions/search.html
@@ -5,9 +5,9 @@
 
 [%- INCLUDE 'common/flash.html' %]
 
- <form method="post" action="controller.pl" id="search_form">
+ <h1>[% title %]</h1>
 
-  <div class="listtop">[% 'Search bank transactions' | $T8 %]</div>
+ <form method="post" action="controller.pl" id="search_form">
 
   <p>
    <table>
diff --git a/templates/webpages/bank_transactions/tabs/all.html b/templates/webpages/bank_transactions/tabs/all.html
index eae900822..1c1ab823e 100644
--- a/templates/webpages/bank_transactions/tabs/all.html
+++ b/templates/webpages/bank_transactions/tabs/all.html
@@ -13,7 +13,6 @@
 [% L.hidden_tag('filter.bank_account', FORM.filter.bank_account) %]
 [% L.hidden_tag('filter.fromdate', FORM.filter.fromdate) %]
 [% L.hidden_tag('filter.todate',   FORM.filter.todate) %]
-[% L.hidden_tag('action', 'BankTransaction/dispatch') %]
 [% L.hidden_tag('ui_tab', ui_tab) %]
 
  <table id="bt_list">
@@ -151,7 +150,6 @@
  </table>
 
  <p>
-  [% L.submit_tag('action_save_invoices', LxERP.t8('Save invoices')) %]
   [% L.button_tag('kivi.BankTransaction.show_set_all_sources_memos_dialog("#list_all_form [name^=\\"sources_\\"]:visible", "#list_all_form [name^=\\"memos_\\"]:visible")', LxERP.t8('Set all source and memo fields')) %]
  </p>
 
diff --git a/templates/webpages/bank_transactions/tabs/automatic.html b/templates/webpages/bank_transactions/tabs/automatic.html
index b0dcc2ba4..62c213ed9 100644
--- a/templates/webpages/bank_transactions/tabs/automatic.html
+++ b/templates/webpages/bank_transactions/tabs/automatic.html
@@ -4,7 +4,6 @@
 [% L.hidden_tag('filter.bank_account', FORM.filter.bank_account) %]
 [% L.hidden_tag('filter.fromdate', FORM.filter.fromdate) %]
 [% L.hidden_tag('filter.todate',   FORM.filter.todate) %]
-[% L.hidden_tag('action', 'BankTransaction/dispatch') %]
 [% L.hidden_tag('ui_tab', ui_tab) %]
 
 <table id="bank_transactions_proposals">
@@ -84,7 +83,6 @@
 </table>
 
 <p>
- [% L.submit_tag('action_save_proposals', LxERP.t8('Save proposals')) %]
  [% L.button_tag('kivi.BankTransaction.show_set_all_sources_memos_dialog("#list_automatic_form [name^=\\"sources.\\"]", "#list_automatic_form [name^=\\"memos.\\"]")', LxERP.t8('Set all source and memo fields')) %]
 </p>
 
diff --git a/templates/webpages/rc/step1.html b/templates/webpages/rc/step1.html
index 7debc6688..2c4e663f1 100644
--- a/templates/webpages/rc/step1.html
+++ b/templates/webpages/rc/step1.html
@@ -2,7 +2,7 @@
 [%- USE HTML %]
 [%- USE L %]
 [%- USE LxERP %]
-<h1>[% 'Reconciliation' | $T8 %]</h1>
+<h1>[% 'Manual Reconciliation' | $T8 %]</h1>
 
 <form method="post" action="rc.pl" id="form">
 
diff --git a/templates/webpages/rc/step2.html b/templates/webpages/rc/step2.html
index 369ccc707..245685cbc 100644
--- a/templates/webpages/rc/step2.html
+++ b/templates/webpages/rc/step2.html
@@ -3,7 +3,7 @@
 [%- USE T8 %]
 [%- USE LxERP  %]
 
-<h1>[% accno | html %]--[% account | html %]</h1>
+<h1>[% LxERP.t8('Manual Reconciliation') %] — [% accno | html %] — [% account | html %]</h1>
 
 <p>[% FOREACH row IN option %][% row %][% ', ' UNLESS loop.last %][% END %]</p>
 
