commit 98aafe29d1a58b3530f71317603a39860b61e050
Author: Moritz Bunkus <m.bunkus@linet.de>
Date:   Wed Nov 9 10:39:14 2016 +0100

    ActionBar: Tooltips für deaktivierte Aktionen in is.pl

diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl
index 64e8d2ff1..46f4d5716 100644
--- a/bin/mozilla/is.pl
+++ b/bin/mozilla/is.pl
@@ -360,13 +360,14 @@ sub form_header {
   $form->{duedate}             = $TMPL_VAR{payment_terms_obj}->calc_date(reference_date => $form->{invdate}, due_date => $form->{duedate})->to_kivitendo if $TMPL_VAR{payment_terms_obj};
 
   my @req_trans_desc = qw(kivi.SalesPurchase.check_transaction_description) x!!$::instance_conf->get_require_transaction_description_ps;
-  my $show_delete = ($::instance_conf->get_is_changeable == 2 && $form->current_date(\%myconfig) eq $form->{gldate})
-                  || $::instance_conf->get_is_changeable == 1;
+
+  my $change_never            = $::instance_conf->get_is_changeable == 0;
+  my $change_on_same_day_only = $::instance_conf->get_is_changeable == 2 && ($form->current_date(\%myconfig) ne $form->{gldate});
 
   for my $bar ($::request->layout->get('actionbar')) {
     $bar->add_actions([ t8('Update'),
       submit => [ '#form', { action_update         => 1 } ],
-      disabled => !$::form->{id} && $::form->{locked},
+      disabled => $form->{locked} ? t8('The billing period has already been locked.') : undef,
       id => 'update_button',
       accesskey => '13',
     ]);
@@ -374,17 +375,21 @@ sub form_header {
     $bar->actions->[-1]->add_actions([ t8('Post'),
       submit => [ '#form', { action_post           => 1 } ],
       checks => [ @req_trans_desc ],
-      disabled => (!$::form->{id} && $::form->{locked}) || !$show_delete || $::form->{storno},
+      disabled => $form->{locked}                           ? t8('The billing period has already been locked.')
+                : $form->{storno}                           ? t8('A canceled invoice cannot be posted.')
+                : ($form->{id} && $change_never)            ? t8('Changing invoices has been disabled in the configuration.')
+                : ($form->{id} && $change_on_same_day_only) ? t8('Invoices can only be changed on the day they are posted.')
+                :                                             undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('Post Payment'),
       submit => [ '#form', { action_post_payment    => 1 } ],
       checks => [ @req_trans_desc ],
-      disabled => !$::form->{id},
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('mark as paid'),
       submit => [ '#form', { action_mark_as_paid    => 1 } ],
       confirm => t8('This will remove the invoice from showing as unpaid even if the unpaid amount does not match the amount. Proceed?'),
-      disabled => !$::form->{id},
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]) if $::instance_conf->get_is_show_mark_as_paid;
 
     $bar->add_actions("combobox");
@@ -392,14 +397,18 @@ sub form_header {
       submit => [ '#form', { action_storno         => 1 } ],
       confirm => t8('Do you really want to cancel this invoice?'),
       checks => [ @req_trans_desc ],
-      disabled => !$::form->{id},
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('Delete'),
       submit => [ '#form', { action_delete         => 1 } ],
       confirm => t8('Do you really want to delete this object?'),
       checks => [ @req_trans_desc ],
-      disabled => !$::form->{id},
-    ]) if $show_delete;
+      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,
+    ]);
     $bar->add_actions('separator');
 
     $bar->add_actions('combobox');
@@ -408,47 +417,51 @@ sub form_header {
     ]);
     $bar->actions->[-1]->add_actions([ t8('Use As New'),
       submit => [ '#form', { action_use_as_new    => 1 } ],
-      disabled => !$::form->{id},
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('Credit Note'),
       submit => [ '#form', { action_credit_note    => 1 } ],
       checks => [ @req_trans_desc ],
-      disabled => !$::form->{id} || $form->{type} eq "credit_note",
+      disabled => $form->{type} eq "credit_note" ? t8('Credit notes cannot be converted into other credit notes.')
+                : !$form->{id}                   ? t8('This invoice has not been posted yet.')
+                :                                  undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('Sales Order'),
       submit => [ '#form', { action_sales_order   => 1 } ],
-      disabled => !$::form->{id},
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
 
     $bar->add_actions('combobox');
     $bar->actions->[-1]->add_actions([ t8('Export'),
       disabled => 1,
     ]);
-    $bar->actions->[-1]->add_actions([ ($::form->{id} ? t8('Print') : t8('Preview')),
+    $bar->actions->[-1]->add_actions([ ($form->{id} ? t8('Print') : t8('Preview')),
       submit => [ '#form', { action_print          => 1 } ],
       checks => [ @req_trans_desc ],
-      disabled => !$::form->{id} && $::form->{locked},
+      disabled => !$form->{id} && $form->{locked} ? t8('The billing period has already been locked.') : undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('E Mail'),
       submit => [ '#form', { action_print          => 1 } ],
       checks => [ @req_trans_desc ],
-      disabled => !$::form->{id},
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
     $bar->add_actions('combobox');
     $bar->actions->[-1]->add_actions([ t8('more'),
       disabled => 1,
     ]);
     $bar->actions->[-1]->add_actions([ t8('History'),
-      call     => [ 'set_history_window', $::form->{id} * 1, 'id' ],
-      disabled => !$::form->{id},
+      call     => [ 'set_history_window', $form->{id} * 1, 'id' ],
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('Follow-Up'),
       call     => [ 'follow_up_window' ],
-      disabled => !$::form->{id},
+      disabled => !$form->{id} ? t8('This invoice has not been posted yet.') : undef,
     ]);
     $bar->actions->[-1]->add_actions([ t8('Drafts'),
-      call     => [ 'kivi.Draft.popup', 'is', 'invoice', $::form->{draft_id}, $::form->{draft_description} ],
-      disabled => $::form->{id} || $::form->{locked},
+      call     => [ 'kivi.Draft.popup', 'is', 'invoice', $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,
     ]);
 
   }
