5b7893b47bf5a8fd5e12f7c890c8d86f35d8c5ea
[kivitendo-erp.git] / sql / Pg-upgrade2 / charts_without_taxkey.pl
1 # @tag: charts_without_taxkey
2 # @description: Fügt für jedes Konto, was keinen Steuerschlüssel hat, den Steuerschlüssel 0 hinzu
3 # @depends:
4 # @charset: UTF-8
5
6 use utf8;
7 use strict;
8 use SL::Locale;
9
10 die("This script cannot be run from the command line.") unless ($main::form);
11
12 sub mydberror {
13   my ($msg) = @_;
14   die($dbup_locale->text("Database update error:") . "<br>$msg<br>" . $DBI::errstr);
15 }
16
17 sub do_query {
18   my ($query, $may_fail) = @_;
19
20   if (!$dbh->do($query)) {
21     mydberror($query) unless ($may_fail);
22     $dbh->rollback();
23     $dbh->begin_work();
24   }
25 }
26
27
28 sub do_update {
29   my ($taxkey0_with_taxes_exists) = $dbh->selectrow_array("SELECT COUNT(*) FROM tax WHERE taxkey=0 AND NOT rate=0;"); 
30
31   if ($taxkey0_with_taxes_exists > 0){
32     print_error_message();
33     return 0;
34   }
35
36   my ($taxkey0_exists) = $dbh->selectrow_array("SELECT COUNT(*) FROM tax WHERE taxkey=0");
37
38   if ($taxkey0_exists == 0){
39     my $insert_taxkey0 = <<SQL;
40 INSERT INTO tax 
41   (rate, taxkey, taxdescription)
42   VALUES
43   (0, 0, 'Keine Steuer');
44 SQL
45     do_query($insert_taxkey0);
46     print $::locale->text("taxkey 0 with taxrate 0 was created.");
47   };
48   
49   my $insert_taxkeys = <<SQL;
50 INSERT INTO taxkeys 
51   (chart_id, tax_id, taxkey_id, startdate) 
52   SELECT 
53   c.id, (SELECT id FROM tax WHERE taxkey=0), 0, '1970-01-01' 
54   FROM chart c WHERE c.id NOT IN (SELECT chart_id FROM taxkeys);
55 SQL
56     do_query($insert_taxkeys);
57     return 1;
58 }; # end do_update
59
60 sub print_error_message {
61   print $main::form->parse_html_template("dbupgrade/taxkey_update");
62 };
63
64 return do_update();