Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 347f2cff

Von Moritz Bunkus vor mehr als 11 Jahren hinzugefügt

  • ID 347f2cff58f8d798bb0fe52495fb09b4e08db036
  • Vorgänger 428bc365
  • Nachfolger f1a40f51

Perl-Datenbank-Upgradescripte auf Objektorientierung & strict umgestellt

Unterschiede anzeigen:

sql/Pg-upgrade2/SKR04-3804-addition.pl
1 1
# @tag: SKR04-3804-addition
2 2
# @description: Konto 3804 zu SKR04 hinzufügen: Umsatzsteuer 19% für Steuerschlüssel 13 (Umsatzsteuer aus EG-Erwerb)
3 3
# @depends:
4
# @charset: UTF-8
4
package SL::DBUpgrade2::SKR04_3804_addition;
5 5

  
6 6
use utf8;
7 7
use strict;
8 8

  
9
die("This script cannot be run from the command line.") unless ($main::form);
10

  
11
sub mydberror {
12
  my ($msg) = @_;
13
  die($dbup_locale->text("Database update error:") . "<br>$msg<br>" . $DBI::errstr);
14
}
15

  
16
sub do_query {
17
  my ($query, $may_fail) = @_;
18

  
19
  if (!$dbh->do($query)) {
20
    mydberror($query) unless ($may_fail);
21
    $dbh->rollback();
22
    $dbh->begin_work();
23
  }
24
}
9
use parent qw(SL::DBUpgrade2::Base);
25 10

  
26

  
27
sub do_update {
11
sub run {
12
  my ($self) = @_;
28 13

  
29 14
  # 1. Überprüfen ob Kontenrahmen SKR04 ist, wenn nicht alles überspringen
30
  my ($kontenrahmen) = $dbh->selectrow_array("select coa from defaults");
15
  my ($kontenrahmen) = $self->dbh->selectrow_array("select coa from defaults");
31 16

  
32 17
  unless ( $kontenrahmen eq 'Germany-DATEV-SKR04EU' ) {
33 18
    print "Kontenrahmen ist nicht SKR04, &uuml;berspringen<br>";
......
39 24
  # mit der falschen MwSt (16%) gebucht worden, wenn dies nicht manuell
40 25
  # geändert worden ist
41 26

  
42
  my ($anzahl_buchungen) = $dbh->selectrow_array("select count (*) from acc_trans where taxkey=13 and transdate >= '2007-01-01';");
27
  my ($anzahl_buchungen) = $self->dbh->selectrow_array("select count (*) from acc_trans where taxkey=13 and transdate >= '2007-01-01';");
43 28
  if ( $anzahl_buchungen > 0 ) {
44
    if ($main::form->{bookings_exist} ) {
29
    if ($::form->{bookings_exist} ) {
45 30
      # Benutzer hat Meldung bestätigt
46 31
      print "Buchungen nach dem 01.01.2007 existierten, Upgrade &uuml;berspringen";
47
      return 1;  
48
    } else {
49
      # Meldung anzeigen und auf Rückgabe warten
50
      print_past_booking_warning();
51
      return 2;
52
    };
53
  } else {  # es gibt keine Buchungen mit taxkey 13 nach 01.01.2007
54
  
55
    # prüfen ob Konto 3804 schon existiert
56
    my ($konto_existiert) = $dbh->selectrow_array("select count (*) from chart where accno = '3804'");
57
    if ( $konto_existiert ) {
58
      # 3804 existiert, wir gehen davon aus, daß der Benutzer das Konto schon selber angelegt hat und
59
      # ordnungsgemäß benutzt
60

  
61
      if ($main::form->{account_exists} ) {
32
      return 1;
33
    }
34

  
35
    # Meldung anzeigen und auf Rückgabe warten
36
    print_past_booking_warning();
37
    return 2;
38
  }
39

  
40
  # es gibt keine Buchungen mit taxkey 13 nach 01.01.2007
41

  
42
  # prüfen ob Konto 3804 schon existiert
43
  my ($konto_existiert) = $self->dbh->selectrow_array("select count (*) from chart where accno = '3804'");
44
  if ( $konto_existiert ) {
45
    # 3804 existiert, wir gehen davon aus, daß der Benutzer das Konto schon selber angelegt hat und
46
    # ordnungsgemäß benutzt
47

  
48
    if ($::form->{account_exists} ) {
62 49
      # Benutzer hat Meldung bestätigt
63
        print "Konto existiert, Upgrade &uuml;berspringen\n";
64
        return 1;  
65
      } else {
66
        # Meldung anzeigen und auf Rückgabe warten
67
        print_3804_already_exists();
68
        return 2;
69
      };
70
    } else {
50
      print "Konto existiert, Upgrade &uuml;berspringen\n";
51
      return 1;
52
    }
53

  
54
    # Meldung anzeigen und auf Rückgabe warten
55
    print_3804_already_exists();
56
    return 2;
57
  }
71 58

  
72 59
    # noch keine Buchungen mit taxkey 13 und Konto 3804 existiert noch nicht,
73 60
    # also legen wir es an und machen noch die nötigen Einstellungen in tax und
74 61
    # taxkeys
75 62

  
76
        my $insert_chart = <<SQL;
63
  my $insert_chart = <<SQL;
77 64
INSERT INTO chart (
78 65
  accno, description,
79 66
  charttype,   category,  link,
......
89 76
);
90 77
SQL
91 78

  
92
        do_query($insert_chart);
93

  
94
        my $konto_anlegen = $dbh->prepare($insert_chart) || mydberror($insert_chart);
95

  
79
  $self->db_query($insert_chart);
96 80

  
97
        # 13-1 (16%) korrigieren:
98
        my $edit_taxkey_13 = qq|UPDATE tax SET taxdescription = 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', rate = '0.16', chart_id = (select id FROM chart where accno = '3803'), taxnumber = 3803 WHERE taxkey = '13'|;
99
        do_query($edit_taxkey_13);
81
  my $konto_anlegen = $self->dbh->prepare($insert_chart) || $self->db_error($insert_chart);
100 82

  
101
        # Sicherstellen, daß 3803 die richtige Bezeichnung hat
102
        my $update_3803 = qq|update chart set description = 'Umsatzsteuer aus EG-Erwerb 16%' where accno = '3803'|;
103
        do_query($update_3803);
83
  # 13-1 (16%) korrigieren:
84
  my $edit_taxkey_13 = qq|UPDATE tax SET taxdescription = 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', rate = '0.16', chart_id = (select id FROM chart where accno = '3803'), taxnumber = 3803 WHERE taxkey = '13'|;
85
  $self->db_query($edit_taxkey_13);
104 86

  
105
        # Zweiter  Eintrag für taxkey 13 in key: 19%
106
        my $insert_taxkey_13_2 = qq|INSERT INTO tax ( taxkey, taxdescription, rate, chart_id, taxnumber ) VALUES ('13', 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', '0.19', (select id from chart where accno = '3804'), '3804')|;
87
  # Sicherstellen, daß 3803 die richtige Bezeichnung hat
88
  my $update_3803 = qq|update chart set description = 'Umsatzsteuer aus EG-Erwerb 16%' where accno = '3803'|;
89
  $self->db_query($update_3803);
107 90

  
108
        do_query($insert_taxkey_13_2);
91
  # Zweiter  Eintrag für taxkey 13 in key: 19%
92
  my $insert_taxkey_13_2 = qq|INSERT INTO tax ( taxkey, taxdescription, rate, chart_id, taxnumber ) VALUES ('13', 'Steuerpflichtige EG-Lieferung zum vollen Steuersatz', '0.19', (select id from chart where accno = '3804'), '3804')|;
109 93

  
110
        # alle Konten finden, bei denen 3803 das Steuerautomatikkonto ist,
111
        # und dort den zweiten Eintrag ab 1.1.2007 für 19% einstellen
112
        my $sth_query  = $dbh->prepare(qq|select c.id from chart c join taxkeys t on (c.id = t.chart_id) where tax_id = (select id from tax where taxnumber = '3803')|);
113
        my $sth_insert = $dbh->prepare(qq|INSERT INTO taxkeys ( taxkey_id, chart_id, tax_id, pos_ustva, startdate )
114
                                                       VALUES (13, ?, (select id from tax where taxkey = 13 and rate = '0.19'),
115
            (select pos_ustva from taxkeys where tax_id = (select id from tax where taxnumber = '3803') and pos_ustva > 0 limit 1),
116
            '01.01.2007')|);
117
        $sth_query->execute();
94
  $self->db_query($insert_taxkey_13_2);
118 95

  
119
        while (my $ref = $sth_query->fetchrow_hashref()) {
120
          $sth_insert->execute($ref->{id});
121
        }
122
        $sth_query->finish();
123
        $sth_insert->finish();
96
  # alle Konten finden, bei denen 3803 das Steuerautomatikkonto ist,
97
  # und dort den zweiten Eintrag ab 1.1.2007 für 19% einstellen
98
  my $sth_query  = $self->dbh->prepare(qq|select c.id from chart c join taxkeys t on (c.id = t.chart_id) where tax_id = (select id from tax where taxnumber = '3803')|);
99
  my $sth_insert = $self->dbh->prepare(<<SQL);
100
    INSERT INTO taxkeys ( taxkey_id, chart_id, tax_id, pos_ustva, startdate )
101
    VALUES              ( 13, ?, (select id from tax where taxkey = 13 and rate = '0.19'),
102
                          (SELECT pos_ustva FROM taxkeys WHERE tax_id = (SELECT id FROM tax WHERE taxnumber = '3803') AND pos_ustva > 0 LIMIT 1),
103
                         '01.01.2007' )
104
SQL
105
  $sth_query->execute;
124 106

  
125
      }; # end code update
126
  }; # end check if 3804 exists
107
  while (my $ref = $sth_query->fetchrow_hashref) {
108
    $sth_insert->execute($ref->{id});
109
  }
110
  $sth_query->finish;
111
  $sth_insert->finish;
127 112

  
128
}; # end do_update
113
} # end run
129 114

  
130 115
sub print_past_booking_warning {
131
  print $main::form->parse_html_template("dbupgrade/SKR04_3804_update");
132
};
116
  print $::form->parse_html_template("dbupgrade/SKR04_3804_update");
117
}
118

  
133 119
sub print_3804_already_exists {
134
  print $main::form->parse_html_template("dbupgrade/SKR04_3804_already_exists");
135
};
120
  print $::form->parse_html_template("dbupgrade/SKR04_3804_already_exists");
121
}
136 122

  
137
return do_update();
123
1;

Auch abrufbar als: Unified diff