Mahnungen löschen
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 17 Sep 2015 11:10:33 +0000 (13:10 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 21 Sep 2015 11:10:11 +0000 (13:10 +0200)
bin/mozilla/dn.pl
locale/de/all
templates/webpages/dunning/search.html
templates/webpages/dunning/show_dunning_bottom.html

index 6b2cad0..e418fa2 100644 (file)
@@ -36,6 +36,9 @@ use POSIX qw(strftime);
 use SL::IS;
 use SL::PE;
 use SL::DN;
+use SL::DB::Dunning;
+use SL::Helper::Flash;
+use SL::Locale::String qw(t8);
 use SL::ReportGenerator;
 
 require "bin/mozilla/common.pl";
@@ -473,6 +476,29 @@ sub print_dunning {
   $main::lxdebug->leave_sub();
 }
 
+sub delete {
+  $main::auth->assert('dunning_edit');
+
+  my @dunning_ids = map { $::form->{"dunning_id_$_"} } grep { $::form->{"selected_$_"} } (1..$::form->{rowcount});
+
+  if (!scalar @dunning_ids) {
+    $::form->error($::locale->text('No dunnings have been selected for printing.'));
+  }
+
+  my $dunnings = SL::DB::Manager::Dunning->get_all(query => [ dunning_id => \@dunning_ids ]);
+
+  SL::DB::Dunning->new->db->with_transaction(sub {
+    for my $dunning (@$dunnings) {
+      SL::DB::Manager::Invoice->find_by(id => $dunning->trans_id)->update_attributes(dunning_config_id => undef);
+      $dunning->delete;
+    }
+  });
+
+  flash('info', t8('#1 dunnings have been deleted', scalar @$dunnings));
+
+  search();
+}
+
 sub print_multiple {
   $main::lxdebug->enter_sub();
 
@@ -526,4 +552,14 @@ sub continue {
   call_sub($main::form->{nextsub});
 }
 
+sub dispatcher {
+  foreach my $action (qw(delete print_multiple)) {
+    if ($::form->{"action_${action}"}) {
+      call_sub($action);
+      return;
+    }
+  }
+
+  $::form->error($::locale->text('No action defined.'));
+}
 # end of main
index 512329a..74ca674 100755 (executable)
@@ -17,6 +17,7 @@ $self->{texts} = {
   '#1 (custom variable)'        => '#1 (benutzerdefinierte Variable)',
   '#1 MD'                       => '#1 PT',
   '#1 additional part(s)'       => '#1 zusätzliche(r) Artikel',
+  '#1 dunnings have been deleted' => '#1 Mahnung(en) wurden gelöscht',
   '#1 h'                        => '#1 h',
   '#1 of #2 importable objects were imported.' => '#1 von #2 importierbaren Objekten wurden importiert.',
   '#1 prices were updated.'     => '#1 Preise wurden aktualisiert.',
@@ -2931,6 +2932,7 @@ $self->{texts} = {
   'This requirement spec is currently linked to the following project:' => 'Dieses Pflichtenheft ist mit dem folgenden Projekt verknüpft:',
   'This requirement spec is currently not linked to a project.' => 'Dieses Pflichtenheft ist noch nicht mit einem Projekt verknüpft.',
   'This requires you to manually correct entries for which an automatic conversion failed and to check those for which it succeeded.' => 'Dies erfordert, dass Sie diejenigen Einträge manuell korrigieren, für die die automatische Umstellung fehlschlug, sowie dass Sie diejenigen überprüfen, für die die Umstellung erfolgreich war.',
+  'This resets the dunning process for the selected invoices. Posted dunning invoices will not be changed!' => 'Hiermit wird der Mahnprozess für die ausgewählten Rechnungen zurückgesetzt. Bereits gebuchte Rechnungen über Mahngebühren werden nicht geändert!',
   'This sales order has an active configuration for periodic invoices. If you save then all subsequently created invoices will contain those changes as well, but not those that have already been created. Do you want to continue?' => 'Dieser Auftrag besitzt eine aktive Konfiguration für wiederkehrende Rechnungen. Wenn Sie jetzt speichern, so werden alle zukünftig hieraus erzeugten Rechnungen die Änderungen enthalten, nicht aber die bereits erzeugten Rechnungen. Wollen Sie speichern?',
   'This status output will be refreshed every five seconds.' => 'Diese Statusausgabe wird alle fünf Sekunden aktualisiert.',
   'This transaction has to be split into several transactions manually.' => 'Diese Buchung muss manuell in mehrere Buchungen aufgeteilt werden.',
index 1c24756..83b59c6 100644 (file)
@@ -3,7 +3,7 @@
 [%- USE L %]
 <h1>[% title %]</h1>
 
- <script type="text/javascript" src="js/common.js"></script>
+[% PROCESS 'common/flash.html' %]
 
  <form method="post" name="search" action="dn.pl">
 
index f0b225e..9255680 100644 (file)
@@ -1,5 +1,8 @@
 [%- USE T8 %]
-[% USE HTML %]  <input type="hidden" name="rowcount" value="[% rowcount %]">
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- USE L %]
+<input type="hidden" name="rowcount" value="[% rowcount %]">
 
   <p>
     <input type="checkbox" id='force_lang' name="force_lang" size="6" value="1">
@@ -9,9 +12,9 @@
 
   <p>
    [% 'Dunnings' | $T8 %]<br>
-   <input type="hidden" name="print_nextsub" value="print_multiple">
-   <input type="hidden" name="action" value="print">
-   <input type="submit" class="submit" value="[%- 'Print' | $T8 %]">
+   [% L.hidden_tag('action', 'dispatcher') %]
+   <input type="submit" class="submit" name='action_print_multiple' value="[%- 'Print' | $T8 %]">
+   [% L.submit_tag('action_delete', LxERP.t8('Delete'), confirm=LxERP.t8('This resets the dunning process for the selected invoices. Posted dunning invoices will not be changed!')) %]
   </p>
 
  </form>