Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 31155ae5

Von Sven Schöling vor mehr als 8 Jahren hinzugefügt

  • ID 31155ae51e91035bfd04b4cae4609315fb240f77
  • Vorgänger 9d17d16c
  • Nachfolger 0022ca37

AccTransCorrections: single-dbh

Unterschiede anzeigen:

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