From b5138b786cad868f567966489d492d5d83b5fb9d Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 26 Jan 2010 11:22:51 +0100 Subject: [PATCH] =?utf8?q?Datenbankupgradescript=20zur=20Behebung=20falsch?= =?utf8?q?er=20Steuerschl=C3=BCssel=20in=20acc=5Ftrans=20bei=20Einkaufsrec?= =?utf8?q?hnungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Frühere Lx-Office-Versionen hatten einen Bug beim Buchen von Einkaufsrechnungen, bei denen falsche Steuerschlüssel in acc_trans geschrieben wurden. Dieses Script behebt diese falschen Einträge. --- locale/de/all | 1 + locale/de/fix_acc_trans_ap_taxkey_bug | 14 +++ .../fix_acc_trans_ap_taxkey_bug.pl | 108 ++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 locale/de/fix_acc_trans_ap_taxkey_bug create mode 100644 sql/Pg-upgrade2/fix_acc_trans_ap_taxkey_bug.pl diff --git a/locale/de/all b/locale/de/all index 8173d6ab3..305a847b7 100644 --- a/locale/de/all +++ b/locale/de/all @@ -1080,6 +1080,7 @@ $self->{texts} = { 'Number missing in Row' => 'Nummer fehlt in Zeile', 'Number of bins' => 'Anzahl Lagerplätze', 'Number of copies' => 'Anzahl Kopien', + 'Number of entries changed: #1' => 'Anzahl geänderter Einträge: #1', 'Number of new bins' => 'Anzahl neuer Lagerplätze', 'Number pages' => 'Seiten nummerieren', 'Number variables: \'PRECISION=n\' forces numbers to be shown with exactly n decimal places.' => 'Zahlenvariablen: Mit \'PRECISION=n\' erzwingt man, dass Zahlen mit n Nachkommastellen formatiert werden.', diff --git a/locale/de/fix_acc_trans_ap_taxkey_bug b/locale/de/fix_acc_trans_ap_taxkey_bug new file mode 100644 index 000000000..31846ea0d --- /dev/null +++ b/locale/de/fix_acc_trans_ap_taxkey_bug @@ -0,0 +1,14 @@ +#!/usr/bin/perl + +$self->{texts} = { + 'Database update error:' => 'Fehler beim Datenbankupgrade:', + 'Number of entries changed: #1' => 'Anzahl geänderter Einträge: #1', +}; + +$self->{subs} = { + 'do_query' => 'do_query', + 'do_update' => 'do_update', + 'mydberror' => 'mydberror', +}; + +1; diff --git a/sql/Pg-upgrade2/fix_acc_trans_ap_taxkey_bug.pl b/sql/Pg-upgrade2/fix_acc_trans_ap_taxkey_bug.pl new file mode 100644 index 000000000..a2e70f944 --- /dev/null +++ b/sql/Pg-upgrade2/fix_acc_trans_ap_taxkey_bug.pl @@ -0,0 +1,108 @@ +# @tag: fix_acc_trans_ap_taxkey_bug +# @description: Korrektur falscher Steuerschlüssel in acc_trans bei Eingangsrechnungen +# @depends: release_2_6_0 + +use strict; + +die "This script cannot be run from the command line." unless $::form; + +sub mydberror { + my $msg = shift; + die $dbup_locale->text("Database update error:") . "
$msg
" . $DBI::errstr; +} + +sub do_query { + my $query = shift; + my $may_fail = shift; + + if (!$dbh->do($query)) { + mydberror($query) unless $may_fail; + $dbh->rollback(); + $dbh->begin_work(); + } +} + +sub do_update { + my $q_find = < 0) + )) + ORDER BY ap.id + ) AS the_query + WHERE the_query.actual_taxkey <> the_query.wanted_taxkey +SQL + + my $q_change = <prepare($q_find) || mydberror($q_find); + my $h_change = $dbh->prepare($q_change) || mydberror($q_change); + + $h_find->execute() || mydberror($q_find); + + my $num_changed = 0; + + while (my $ref = $h_find->fetchrow_hashref()) { + # $::lxdebug->dump(0, "ref", $ref); + $h_change->execute($ref->{wanted_taxkey}, $ref->{acc_trans_id}) || mydberror($q_change); + $num_changed++; + } + + $h_find->finish(); + $h_change->finish(); + + print $dbup_locale->text('Number of entries changed: #1', $num_changed) . "
\n"; +} + +do_update(); -- 2.20.1