From 665dd6eac511a776369aa338e0a240f31681dd15 Mon Sep 17 00:00:00 2001 From: "Martin Helmling martin.helmling@octosoft.eu" Date: Tue, 3 Jan 2017 15:18:48 +0100 Subject: [PATCH] ActionBar: Umstellung von Dialogbuchung und Berichtsfunktion in gl.pl --- bin/mozilla/gl.pl | 158 ++++++++++++++---- locale/de/all | 5 + templates/webpages/gl/form_footer.html | 28 +--- .../webpages/gl/generate_report_bottom.html | 11 +- templates/webpages/gl/search.html | 10 +- 5 files changed, 130 insertions(+), 82 deletions(-) diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index f44f3cbf1..f0cd92bac 100644 --- a/bin/mozilla/gl.pl +++ b/bin/mozilla/gl.pl @@ -338,6 +338,8 @@ sub search { $::form->{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all_sorted(query => [ deleted => 0 ]); $::form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all; + setup_gl_search_action_bar(); + $::form->header; print $::form->parse_html_template('gl/search', { employee_label => sub { "$_[0]{id}--$_[0]{name}" }, @@ -630,7 +632,9 @@ sub generate_report { $report->set_options('raw_bottom_info_text' => $raw_bottom_info_text); - $report->generate_with_headers(); + setup_gl_transactions_action_bar(num_rows => scalar(@{$form->{GL}})); + + $report->generate_with_headers(action_bar => 1); $main::lxdebug->leave_sub(); } @@ -949,6 +953,120 @@ sub _get_radieren { return ($::instance_conf->get_gl_changeable == 2) ? ($::form->current_date(\%::myconfig) eq $::form->{gldate}) : ($::instance_conf->get_gl_changeable == 1); } +sub setup_gl_action_bar { + my %params = @_; + my $form = $::form; + my $change_never = $::instance_conf->get_gl_changeable == 0; + my $change_on_same_day_only = $::instance_conf->get_gl_changeable == 2 && ($form->current_date(\%::myconfig) ne $form->{gldate}); + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + t8('Update'), + submit => [ '#form', { action => 'update' } ], + id => 'update_button', + accesskey => 'enter', + ], + action => [ + t8('Post'), + submit => [ '#form', { action => 'post' } ], + disabled => $form->{locked} ? t8('The billing period has already been locked.') + : $form->{storno} ? t8('A canceled general ledger transaction cannot be posted.') + : ($form->{id} && $change_never) ? t8('Changing general ledger transaction has been disabled in the configuration.') + : ($form->{id} && $change_on_same_day_only) ? t8('General ledger transactions can only be changed on the day they are posted.') + : undef, + ], + combobox => [ + action => [ t8('Storno'), + submit => [ '#form', { action => 'storno' } ], + confirm => t8('Do you really want to cancel this general ledger transaction?'), + disabled => !$form->{id} ? t8('This general ledger transaction has not been posted yet.') : undef, + ], + action => [ t8('Delete'), + submit => [ '#form', { action => 'delete' } ], + confirm => t8('Do you really want to delete this object?'), + disabled => !$form->{id} ? t8('This invoice has not been posted yet.') + : $form->{locked} ? t8('The billing period has already been locked.') + : $change_never ? t8('Changing invoices has been disabled in the configuration.') + : $change_on_same_day_only ? t8('Invoices can only be changed on the day they are posted.') + : undef, + ], + ], # end of combobox "Storno" + + combobox => [ + action => [ t8('more') ], + action => [ + t8('History'), + call => [ 'set_history_window', $form->{id} * 1, 'id' ], + disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef, + ], + action => [ + t8('Follow-Up'), + call => [ 'follow_up_window' ], + disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef, + ], + action => [ + t8('Record templates'), + call => [ 'kivi.RecordTemplate.popup', 'gl_transaction' ], + ], + action => [ + t8('Drafts'), + call => [ 'kivi.Draft.popup', 'gl', 'unknown', $form->{draft_id}, $form->{draft_description} ], + disabled => $form->{id} ? t8('This invoice has already been posted.') + : $form->{locked} ? t8('The billing period has already been locked.') + : undef, + ], + ], # end of combobox "more" + ); + } +} + +sub setup_gl_search_action_bar { + my %params = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + t8('Search'), + submit => [ '#form', { action => 'continue', nextsub => 'generate_report' } ], + accesskey => 'enter', + ], + ); + } +} + +sub setup_gl_transactions_action_bar { + my %params = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + combobox => [ + action => [ $::locale->text('Create new') ], + action => [ + $::locale->text('GL Transaction'), + submit => [ '#create_new_form', { action => 'gl_transaction' } ], + ], + action => [ + $::locale->text('AR Transaction'), + submit => [ '#create_new_form', { action => 'ar_transaction' } ], + ], + action => [ + $::locale->text('AP Transaction'), + submit => [ '#create_new_form', { action => 'ap_transaction' } ], + ], + action => [ + $::locale->text('Sales Invoice'), + submit => [ '#create_new_form', { action => 'sales_invoice' } ], + ], + action => [ + $::locale->text('Vendor Invoice'), + submit => [ '#create_new_form', { action => 'vendor_invoice' } ], + ], + ], # end of combobox "Create new" + ); + } +} + sub form_header { $::lxdebug->enter_sub; $::auth->assert('gl_transactions'); @@ -986,6 +1104,8 @@ sub form_header { $::form->{previous_id} ||= "--"; $::form->{previous_gldate} ||= "--"; + setup_gl_action_bar(); + $::form->header; print $::form->parse_html_template('gl/form_header', { hide_title => $title, @@ -1019,42 +1139,6 @@ sub form_footer { sub delete { $main::lxdebug->enter_sub(); - my $form = $main::form; - my $locale = $main::locale; - - $form->header; - - print qq| -
-|; - - map { $form->{$_} =~ s/\"/"/g } qw(reference description); - - delete $form->{header}; - - foreach my $key (keys %$form) { - next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key})); - print qq|\n|; - } - - print qq| -

| . $locale->text('Confirm!') . qq|

- -

| - . $locale->text('Are you sure you want to delete Transaction') - . qq| $form->{reference}

- - -
-|; - $main::lxdebug->leave_sub(); - -} - -sub yes { - $main::lxdebug->enter_sub(); - my $form = $main::form; my %myconfig = %main::myconfig; my $locale = $main::locale; diff --git a/locale/de/all b/locale/de/all index 175f0cf97..e8d8b6594 100755 --- a/locale/de/all +++ b/locale/de/all @@ -51,6 +51,7 @@ $self->{texts} = { 'Automatically create new bins in the following warehouse if not selected in the list above' => 'Automatisches Zuweisen der Lagerplätze im folgenden Lager, falls keine andere Zuweisung oben ausgewählt ist. ', 'Default Bins Migration !READ CAREFULLY!' => 'Standardlagerplatz Migration !AUFMERKSAM LESEN!', 'What do you want to look for?' => 'Wonach wollen Sie suchen?', + 'A canceled general ledger transaction cannot be posted.' => 'Eine stornierte Dialogbuchung kann nicht mehr gebucht werden.', 'A canceled invoice cannot be posted.' => 'Eine stornierte Rechnung kann nicht mehr gebucht werden.', 'A digit is required.' => 'Eine Ziffer ist vorgeschrieben.', 'A directory with the name for the new print templates exists already.' => 'Ein Verzeichnis mit dem selben Namen wie die neuen Druckvorlagen existiert bereits.', @@ -555,6 +556,7 @@ $self->{texts} = { 'Changed text blocks: #1' => 'Geänderte Textblöcke: #1', 'Changes in this block are only sensible if the account is NOT a summary account AND there exists one valid taxkey. To select both Receivables and Payables only make sense for Payment / Receipt (i.e. account cash).' => 'Es ist nur sinnvoll Änderungen vorzunehmen, wenn das Konto KEIN Sammelkonto ist und wenn ein gültiger Steuerschlüssel für das Konto existiert. Gleichzeitig Haken bei Forderungen und Verbindlichkeiten zu setzen, macht auch NUR für den Zahlungsein- und Ausgang (bspw. Bank oder Kasse) Sinn.', 'Changes to Receivables and Payables are only possible if no transactions to this account are posted yet.' => 'Änderungen bei Forderungen oder Verbindlichkeiten sind nur möglich, wenn dieses Konto noch nicht bebucht wurde.', + 'Changing general ledger transaction has been disabled in the configuration.' => 'Das Verändern von Dialogbuchungen ist in der Konfiguration deaktiviert.', 'Changing invoices has been disabled in the configuration.' => 'Das Verändern von Rechnungen ist in der Konfiguration deaktiviert.', 'Charge' => 'Berechnen', 'Charge Number' => 'Chargennummer', @@ -977,6 +979,7 @@ $self->{texts} = { 'Do not set this comment' => 'Diesen Kommentar nicht setzen', 'Do not set this warehouse' => 'Dieses Lager nicht setzen', 'Do you really want do continue?' => 'Wollen Sie wirklich fortfahren?', + 'Do you really want to cancel this general ledger transaction?' => 'Wollen Sie diese Dialogbuchung wirklich stornieren?', 'Do you really want to cancel this invoice?' => 'Wollen Sie diese Rechnung wirklich stornieren?', 'Do you really want to cancel?' => 'Wollen Sie wirklich abbrechen?', 'Do you really want to close the following SEPA exports? No payment will be recorded for bank collections that haven\'t been marked as executed yet.' => 'Wollen Sie wirklich die folgenden SEPA-Exporte abschließen? Für Überweisungen, die noch nicht gebucht wurden, werden dann keine Zahlungen verbucht.', @@ -1401,6 +1404,7 @@ $self->{texts} = { 'General ledger and cash' => 'Finanzbuchhaltung und Zahlungsverkehr', 'General ledger corrections' => 'Korrekturen im Hauptbuch', 'General ledger transaction \'#1\' posted' => 'Dialogbuchung \'#1\' verbucht.', + 'General ledger transactions can only be changed on the day they are posted.' => 'Dialogbuchungen können nur am Buchungstag geändert werden.', 'General settings' => 'Allgemeine Einstellungen', 'Generate and print sales delivery orders' => 'Erzeuge und drucke Lieferscheine', 'Generic Tax Report' => 'USTVA Bericht', @@ -3207,6 +3211,7 @@ $self->{texts} = { 'This export will include all records in the given time range and all supplicant information from checked entities. You will receive a single zip file. Please extract this file onto the data medium requested by your auditor.' => 'Dieser Export umfasst alle Belege im gewählten Zeitrahmen und die dazugehörgen Informationen aus den gewählten Blöcken. Sie erhalten eine einzelne Zip-Datei. Bitte entpacken Sie diese auf das Medium das Ihr Steuerprüfer wünscht.', 'This feature especially prevents mistakes by mixing up prior tax and sales tax.' => 'Dieses Feature vermeidet insbesondere Verwechslungen von Umsatz- und Vorsteuer.', 'This function requires the presence of articles with a time-based unit such as "h" or "min".' => 'Für diese Funktion mussen Artikel mit einer Zeit-basierten Einheit wie "Std" oder "min" existieren.', + 'This general ledger transaction has not been posted yet.' => 'Die Dialogbuchung wurde noch nicht gebucht.', 'This group is valid for the following clients' => 'Diese Gruppe ist für die folgenden Mandanten gültig', 'This has been changed in this version, therefore please change the "old" bins to some real warehouse bins.' => 'Das wurde in dieser Version umgestellt, bitte ändern Sie die Freitext-Lagerplätze auf vorhandene Lagerplätze.', 'This has been changed in this version.' => 'Ab dieser Version ist dies nicht mehr so.', diff --git a/templates/webpages/gl/form_footer.html b/templates/webpages/gl/form_footer.html index f9b018fd6..e2780802d 100644 --- a/templates/webpages/gl/form_footer.html +++ b/templates/webpages/gl/form_footer.html @@ -24,33 +24,7 @@ [%- IF id && follow_ups.size %]

[% LxERP.t8('There are #1 unfinished follow-ups of which #2 are due.', follow_ups.size , follow_ups_due) %]

[%- END %] - -
- -[%- IF id %] - [% L.submit_tag('action', LxERP.t8('Update'), id='update_button') %] - - [% IF !locked && radieren %] - [% L.submit_tag('action', LxERP.t8('Post'), accesskey='b') %] - [% L.submit_tag('action', LxERP.t8('Delete')) %] - [%- END %] - - [%- IF !storno %] - [% L.submit_tag('action', LxERP.t8('Storno')) %] - [%- END %] - - [% L.submit_tag('action', LxERP.t8('Follow-Up'), onclick='follow_up_window()') %] -[%- ELSE %] - - [% L.submit_tag('action', LxERP.t8('Update'), id='update_button') %] - [% L.submit_tag('action', LxERP.t8('Post')) %] - [% L.button_tag('kivi.Draft.popup("gl", "unknown", "' _ draft_id _ '", "' _ draft_description _ '")', LxERP.t8('Drafts')) %] - [% L.hidden_tag('draft_id', draft_id) %] - [% L.hidden_tag('draft_description', draft_description) %] -[%- END %] - - [% L.button_tag("kivi.RecordTemplate.popup('gl_transaction')", LxERP.t8("Record templates")) %] - +