clean_tax abhängigkeit explizit setzen
[kivitendo-erp.git] / sql / Pg-upgrade2 / clean_tax_18_19.pl
1 # @tag: clean_tax_18_19
2 # @description: Vorbereitung für neue Steuerschlüssel 18,19
3 # @depends: release_3_6_0 tax_reverse_charge
4 # @ignore: 0
5 package SL::DBUpgrade2::clean_tax_18_19;
6
7 use strict;
8 use utf8;
9
10 use parent qw(SL::DBUpgrade2::Base);
11
12 sub delete_alter_tax {
13   my $self = shift;
14
15   my $query = <<SQL;
16     SELECT id from tax
17     where taxkey = ?
18     and reverse_charge_chart_id is null
19 SQL
20   my $q_fetch = <<SQL;
21     SELECT trans_id
22     FROM acc_trans where tax_id = ?
23     LIMIT 1
24 SQL
25
26   my $delete_taxkey = <<SQL;
27     DELETE from taxkeys where tax_id = ?
28 SQL
29
30   my $delete_tax = <<SQL;
31     DELETE from tax where         id = ?
32 SQL
33
34
35   my $edit_tax = <<SQL;
36     UPDATE tax set chart_id = NULL
37     WHERE id = ?
38 SQL
39
40
41   my $h_fetch   = $self->dbh->prepare($query);
42   my $acc_fetch = $self->dbh->prepare($q_fetch);
43   my $delete_tk = $self->dbh->prepare($delete_taxkey);
44   my $delete_t  = $self->dbh->prepare($delete_tax);
45   my $edit_q    = $self->dbh->prepare($edit_tax);
46
47
48   my $tax_id;
49   foreach ( qw(18 19) ) {
50     $h_fetch->execute($_) || $::form->dberror($query);
51     while (my $entry = $h_fetch->fetchrow_hashref) {
52       $tax_id = $entry->{id};
53       next unless $tax_id;
54       $edit_q->execute($tax_id)    || $::form->dberror($edit_tax);
55       $acc_fetch->execute($tax_id) || $::form->dberror($q_fetch);
56       if (!$acc_fetch->fetchrow_hashref) {
57         $delete_tk->execute($tax_id) || $::form->dberror($delete_tk);
58         $delete_t ->execute($tax_id) || $::form->dberror($delete_t);
59       }
60     }
61   }
62 }
63
64 sub run {
65   my ($self) = @_;
66
67   return 1 unless ($self->check_coa('Germany-DATEV-SKR03EU') ||$self->check_coa('Germany-DATEV-SKR04EU'));
68
69   $self->delete_alter_tax;
70
71   return 1;
72 }
73
74 1;