1 # @tag: delete_wrong_charts_for_taxkeys_04
 
   2 # @description: SKR04: 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_04;
 
  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
 
  22   my $q_update_04 = <<SQL;
 
  27     AND (taxkey = 3 OR taxkey = 9)
 
  28     AND EXISTS (SELECT * FROM defaults WHERE coa = 'Germany-DATEV-SKR04EU')
 
  32   my $h_fetch = $self->dbh->prepare($q_fetch);
 
  33   $h_fetch->execute || $::form->dberror($q_fetch);
 
  35   my $h_update_04 = $self->dbh->prepare($q_update_04);
 
  37   while (my $entry = $h_fetch->fetchrow_hashref) {
 
  38     $h_update_04->execute($entry->{chart_id}) || $::form->dberror($q_update_04);
 
  41   $h_fetch->execute || $::form->dberror($q_fetch);
 
  43   if (!$h_fetch->fetchrow_hashref) {
 
  46       ADD CONSTRAINT chart_id_unique_tax UNIQUE (chart_id)
 
  48     my $q_unique_p = $self->dbh->prepare($q_unique);
 
  49     $q_unique_p->execute || $::form->dberror($q_unique_p);
 
  56   return 1 unless $self->check_coa('Germany-DATEV-SKR04EU');
 
  58   $self->delete_chart_id_tax;