1 # @tag: delete_wrong_charts_for_taxkeys
 
   2 # @description: Uralte falsch angelegte Automatikkonten raus -> Chance auf tax.chart_id unique setzen
 
   3 # @depends: release_3_6_0
 
   5 package SL::DBUpgrade2::delete_wrong_charts_for_taxkeys;
 
  10 use parent qw(SL::DBUpgrade2::Base);
 
  12 sub delete_chart_id_tax {
 
  17     FROM tax where chart_id is not null
 
  18     GROUP BY chart_id HAVING COUNT(*) > 1
 
  27     AND (taxkey = 19 OR taxkey = 13)
 
  28     AND EXISTS (SELECT * FROM defaults WHERE coa = 'Germany-DATEV-SKR03EU')
 
  31   my $h_fetch = $self->dbh->prepare($q_fetch);
 
  32   $h_fetch->execute || $::form->dberror($q_fetch);
 
  34   my $h_update_03 = $self->dbh->prepare($q_update);
 
  36   while (my $entry = $h_fetch->fetchrow_hashref) {
 
  37     $h_update_03->execute($entry->{chart_id}) || $::form->dberror($q_update);
 
  40   $h_fetch->execute || $::form->dberror($q_fetch);
 
  42   if (!$h_fetch->fetchrow_hashref) {
 
  45       ADD CONSTRAINT chart_id_unique_tax UNIQUE (chart_id)
 
  47     my $q_unique_p = $self->dbh->prepare($q_unique);
 
  48     $q_unique_p->execute || $::form->dberror($q_unique_p);
 
  55   return 1 unless $self->check_coa('Germany-DATEV-SKR03EU');
 
  57   $self->delete_chart_id_tax;