Upgrade-Script für Steuerfilterung
[kivitendo-erp.git] / sql / Pg-upgrade2 / steuerfilterung.pl
1 # @tag: steuerfilterung
2 # @description: Steuern in Dialogbuchungen filtern.
3 # @depends: release_3_0_0
4 package SL::DBUpgrade2::steuerfilterung;
5
6 use strict;
7 use utf8;
8
9 use parent qw(SL::DBUpgrade2::Base);
10
11 sub run {
12   my ($self) = @_;
13
14   if ( $::form->{'continued'} ) {
15     my $update_query = qq|ALTER TABLE tax ADD chart_categories TEXT|;
16     $self->db_query($update_query);
17     my $categories;
18     my $tax_id;
19     foreach my $i (1 .. $::form->{rowcount}) {
20       $tax_id = $::form->{"tax_id_$i"};
21       $categories = '';
22       $categories .= 'A' if $::form->{"asset_$i"};
23       $categories .= 'L' if $::form->{"liability_$i"};
24       $categories .= 'Q' if $::form->{"equity_$i"};
25       $categories .= 'C' if $::form->{"costs_$i"};
26       $categories .= 'I' if $::form->{"revenue_$i"};
27       $categories .= 'E' if $::form->{"expense_$i"};
28       $update_query = qq|UPDATE tax SET chart_categories = '$categories' WHERE id=$tax_id|;
29       $self->db_query($update_query);
30     }
31     $update_query = qq|ALTER TABLE tax ALTER COLUMN chart_categories SET NOT NULL|;
32     $self->db_query($update_query);
33     $self->dbh->commit();
34     return 1;
35   }
36
37   my $query = qq|SELECT taxkey, taxdescription, rate, id AS tax_id FROM tax order by taxkey, rate|;
38
39   my $sth = $self->dbh->prepare($query);
40   $sth->execute || $::form->dberror($query);
41
42   $::form->{PARTS} = [];
43   while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
44     $ref->{rate} = $::form->format_amount(\%::myconfig, $::form->round_amount($ref->{rate} * 100));
45     push @{ $::form->{PARTS} }, $ref;
46   }
47
48   &print_message;
49   return 2;
50 } # end run
51
52 sub print_message {
53   print $::form->parse_html_template("dbupgrade/steuerfilterung");
54 }
55
56 1;