Revision 31155ae5
Von Sven Schöling vor mehr als 8 Jahren hinzugefügt
SL/AccTransCorrections.pm | ||
---|---|---|
7 | 7 |
|
8 | 8 |
use SL::DBUtils; |
9 | 9 |
use SL::Taxkeys; |
10 |
use SL::DB; |
|
10 | 11 |
|
11 | 12 |
sub new { |
12 | 13 |
my $type = shift; |
... | ... | |
698 | 699 |
my $myconfig = \%main::myconfig; |
699 | 700 |
my $form = $main::form; |
700 | 701 |
|
701 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
|
|
702 |
my $dbh = $params{dbh} || SL::DB->client->dbh;
|
|
702 | 703 |
|
703 | 704 |
my $query = qq|SELECT 'ap' AS module, |
704 | 705 |
at.acc_trans_id, at.trans_id, at.chart_id, at.amount, at.taxkey, at.transdate, |
... | ... | |
778 | 779 |
} |
779 | 780 |
|
780 | 781 |
if (scalar @corrections) { |
781 |
my $q_taxkey_only = qq|UPDATE acc_trans SET taxkey = ? WHERE acc_trans_id = ?|; |
|
782 |
my $h_taxkey_only = prepare_query($form, $dbh, $q_taxkey_only); |
|
783 |
|
|
784 |
my $q_taxkey_chart_id = qq|UPDATE acc_trans SET taxkey = ?, chart_id = ? WHERE acc_trans_id = ?|; |
|
785 |
my $h_taxkey_chart_id = prepare_query($form, $dbh, $q_taxkey_chart_id); |
|
786 |
|
|
787 |
foreach my $entry (@corrections) { |
|
788 |
if ($entry->{chart_id}) { |
|
789 |
do_statement($form, $h_taxkey_chart_id, $q_taxkey_chart_id, $entry->{taxkey}, $entry->{chart_id}, $entry->{acc_trans_id}); |
|
790 |
} else { |
|
791 |
do_statement($form, $h_taxkey_only, $q_taxkey_only, $entry->{taxkey}, $entry->{acc_trans_id}); |
|
782 |
SL::DB->with_transaction(sub { |
|
783 |
my $q_taxkey_only = qq|UPDATE acc_trans SET taxkey = ? WHERE acc_trans_id = ?|; |
|
784 |
my $h_taxkey_only = prepare_query($form, $dbh, $q_taxkey_only); |
|
785 |
|
|
786 |
my $q_taxkey_chart_id = qq|UPDATE acc_trans SET taxkey = ?, chart_id = ? WHERE acc_trans_id = ?|; |
|
787 |
my $h_taxkey_chart_id = prepare_query($form, $dbh, $q_taxkey_chart_id); |
|
788 |
|
|
789 |
foreach my $entry (@corrections) { |
|
790 |
if ($entry->{chart_id}) { |
|
791 |
do_statement($form, $h_taxkey_chart_id, $q_taxkey_chart_id, $entry->{taxkey}, $entry->{chart_id}, $entry->{acc_trans_id}); |
|
792 |
} else { |
|
793 |
do_statement($form, $h_taxkey_only, $q_taxkey_only, $entry->{taxkey}, $entry->{acc_trans_id}); |
|
794 |
} |
|
792 | 795 |
} |
793 |
} |
|
794 | 796 |
|
795 |
$h_taxkey_only->finish(); |
|
796 |
$h_taxkey_chart_id->finish(); |
|
797 |
|
|
798 |
$dbh->commit() unless ($params{dbh}); |
|
797 |
$h_taxkey_only->finish(); |
|
798 |
$h_taxkey_chart_id->finish(); |
|
799 |
}); |
|
799 | 800 |
} |
800 | 801 |
|
801 | 802 |
$main::lxdebug->leave_sub(); |
... | ... | |
814 | 815 |
my $myconfig = \%main::myconfig; |
815 | 816 |
my $form = $main::form; |
816 | 817 |
|
817 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
|
|
818 |
my $dbh = $params{dbh} || SL::DB->client->dbh;
|
|
818 | 819 |
|
819 | 820 |
my $query = qq|SELECT at.*, c.link |
820 | 821 |
FROM acc_trans at |
... | ... | |
862 | 863 |
} |
863 | 864 |
|
864 | 865 |
if (@corrections) { |
865 |
$query = qq|UPDATE acc_trans SET taxkey = 0 WHERE acc_trans_id = ?|; |
|
866 |
$sth = prepare_query($form, $dbh, $query); |
|
867 |
|
|
868 |
foreach my $acc_trans_id (@corrections) { |
|
869 |
do_statement($form, $sth, $query, $acc_trans_id); |
|
870 |
} |
|
866 |
SL::DB->client->with_transaction(sub { |
|
867 |
$query = qq|UPDATE acc_trans SET taxkey = 0 WHERE acc_trans_id = ?|; |
|
868 |
$sth = prepare_query($form, $dbh, $query); |
|
871 | 869 |
|
872 |
$sth->finish(); |
|
870 |
foreach my $acc_trans_id (@corrections) { |
|
871 |
do_statement($form, $sth, $query, $acc_trans_id); |
|
872 |
} |
|
873 | 873 |
|
874 |
$dbh->commit() unless ($params{dbh});
|
|
875 |
# $dbh->rollback();
|
|
874 |
$sth->finish();
|
|
875 |
});
|
|
876 | 876 |
} |
877 | 877 |
|
878 | 878 |
$main::lxdebug->leave_sub(); |
... | ... | |
889 | 889 |
my $myconfig = \%main::myconfig; |
890 | 890 |
my $form = $main::form; |
891 | 891 |
|
892 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
|
|
892 |
my $dbh = $params{dbh} || SL::DB->client->dbh;
|
|
893 | 893 |
|
894 |
my $q_taxkey_only = qq|UPDATE acc_trans SET taxkey = ? WHERE acc_trans_id = ?|; |
|
895 |
my $h_taxkey_only = prepare_query($form, $dbh, $q_taxkey_only); |
|
894 |
SL::DB->client->with_transaction(sub { |
|
895 |
my $q_taxkey_only = qq|UPDATE acc_trans SET taxkey = ? WHERE acc_trans_id = ?|; |
|
896 |
my $h_taxkey_only = prepare_query($form, $dbh, $q_taxkey_only); |
|
896 | 897 |
|
897 |
my $q_taxkey_chart = qq|UPDATE acc_trans SET taxkey = ?, chart_id = ? WHERE acc_trans_id = ?|; |
|
898 |
my $h_taxkey_chart = prepare_query($form, $dbh, $q_taxkey_chart); |
|
898 |
my $q_taxkey_chart = qq|UPDATE acc_trans SET taxkey = ?, chart_id = ? WHERE acc_trans_id = ?|;
|
|
899 |
my $h_taxkey_chart = prepare_query($form, $dbh, $q_taxkey_chart);
|
|
899 | 900 |
|
900 |
my $q_transdate = qq|SELECT transdate FROM acc_trans WHERE acc_trans_id = ?|; |
|
901 |
my $h_transdate = prepare_query($form, $dbh, $q_transdate); |
|
901 |
my $q_transdate = qq|SELECT transdate FROM acc_trans WHERE acc_trans_id = ?|;
|
|
902 |
my $h_transdate = prepare_query($form, $dbh, $q_transdate);
|
|
902 | 903 |
|
903 |
foreach my $fix (@{ $params{fixes} }) { |
|
904 |
next unless ($fix->{acc_trans_id}); |
|
904 |
foreach my $fix (@{ $params{fixes} }) {
|
|
905 |
next unless ($fix->{acc_trans_id});
|
|
905 | 906 |
|
906 |
do_statement($form, $h_taxkey_only, $q_taxkey_only, conv_i($fix->{taxkey}), conv_i($fix->{acc_trans_id})); |
|
907 |
do_statement($form, $h_taxkey_only, $q_taxkey_only, conv_i($fix->{taxkey}), conv_i($fix->{acc_trans_id}));
|
|
907 | 908 |
|
908 |
next unless ($fix->{tax_entry_acc_trans_id}); |
|
909 |
next unless ($fix->{tax_entry_acc_trans_id});
|
|
909 | 910 |
|
910 |
do_statement($form, $h_transdate, $q_transdate, conv_i($fix->{tax_entry_acc_trans_id})); |
|
911 |
my ($transdate) = $h_transdate->fetchrow_array(); |
|
911 |
do_statement($form, $h_transdate, $q_transdate, conv_i($fix->{tax_entry_acc_trans_id}));
|
|
912 |
my ($transdate) = $h_transdate->fetchrow_array();
|
|
912 | 913 |
|
913 |
my %all_taxes = $self->{taxkeys}->get_full_tax_info('transdate' => $transdate); |
|
914 |
my $tax_info = $all_taxes{taxkeys}->{ $fix->{taxkey} }; |
|
914 |
my %all_taxes = $self->{taxkeys}->get_full_tax_info('transdate' => $transdate);
|
|
915 |
my $tax_info = $all_taxes{taxkeys}->{ $fix->{taxkey} };
|
|
915 | 916 |
|
916 |
next unless ($tax_info); |
|
917 |
|
|
918 |
do_statement($form, $h_taxkey_chart, $q_taxkey_chart, conv_i($fix->{taxkey}), conv_i($tax_info->{taxchart_id}), conv_i($fix->{tax_entry_acc_trans_id})); |
|
919 |
} |
|
917 |
next unless ($tax_info); |
|
920 | 918 |
|
921 |
$h_taxkey_only->finish(); |
|
922 |
$h_taxkey_chart->finish(); |
|
923 |
$h_transdate->finish(); |
|
919 |
do_statement($form, $h_taxkey_chart, $q_taxkey_chart, conv_i($fix->{taxkey}), conv_i($tax_info->{taxchart_id}), conv_i($fix->{tax_entry_acc_trans_id})); |
|
920 |
} |
|
924 | 921 |
|
925 |
# $dbh->rollback(); |
|
926 |
$dbh->commit() unless ($params{dbh}); |
|
922 |
$h_taxkey_only->finish(); |
|
923 |
$h_taxkey_chart->finish(); |
|
924 |
$h_transdate->finish(); |
|
925 |
}); |
|
927 | 926 |
|
928 | 927 |
$main::lxdebug->leave_sub(); |
929 | 928 |
} |
... | ... | |
939 | 938 |
my $myconfig = \%main::myconfig; |
940 | 939 |
my $form = $main::form; |
941 | 940 |
|
942 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); |
|
943 |
|
|
944 |
do_query($form, $dbh, qq|UPDATE ar SET storno_id = NULL WHERE storno_id = ?|, conv_i($params{trans_id})); |
|
945 |
do_query($form, $dbh, qq|UPDATE ap SET storno_id = NULL WHERE storno_id = ?|, conv_i($params{trans_id})); |
|
946 |
do_query($form, $dbh, qq|UPDATE gl SET storno_id = NULL WHERE storno_id = ?|, conv_i($params{trans_id})); |
|
941 |
my $dbh = $params{dbh} || SL::DB->client->dbh; |
|
947 | 942 |
|
948 |
do_query($form, $dbh, qq|DELETE FROM ar WHERE id = ?|, conv_i($params{trans_id}));
|
|
949 |
do_query($form, $dbh, qq|DELETE FROM ap WHERE id = ?|, conv_i($params{trans_id}));
|
|
950 |
do_query($form, $dbh, qq|DELETE FROM gl WHERE id = ?|, conv_i($params{trans_id}));
|
|
951 |
do_query($form, $dbh, qq|DELETE FROM acc_trans WHERE trans_id = ?|, conv_i($params{trans_id}));
|
|
943 |
SL::DB->client->with_transaction(sub {
|
|
944 |
do_query($form, $dbh, qq|UPDATE ar SET storno_id = NULL WHERE storno_id = ?|, conv_i($params{trans_id}));
|
|
945 |
do_query($form, $dbh, qq|UPDATE ap SET storno_id = NULL WHERE storno_id = ?|, conv_i($params{trans_id}));
|
|
946 |
do_query($form, $dbh, qq|UPDATE gl SET storno_id = NULL WHERE storno_id = ?|, conv_i($params{trans_id}));
|
|
952 | 947 |
|
953 |
# $dbh->rollback(); |
|
954 |
$dbh->commit() unless ($params{dbh}); |
|
948 |
do_query($form, $dbh, qq|DELETE FROM ar WHERE id = ?|, conv_i($params{trans_id})); |
|
949 |
do_query($form, $dbh, qq|DELETE FROM ap WHERE id = ?|, conv_i($params{trans_id})); |
|
950 |
do_query($form, $dbh, qq|DELETE FROM gl WHERE id = ?|, conv_i($params{trans_id})); |
|
951 |
do_query($form, $dbh, qq|DELETE FROM acc_trans WHERE trans_id = ?|, conv_i($params{trans_id})); |
|
952 |
}); |
|
955 | 953 |
|
956 | 954 |
$main::lxdebug->leave_sub(); |
957 | 955 |
} |
Auch abrufbar als: Unified diff
AccTransCorrections: single-dbh