Revision 8e0f6e70
Von Sven Schöling vor mehr als 8 Jahren hinzugefügt
SL/OE.pm | ||
---|---|---|
51 | 51 |
use SL::IC; |
52 | 52 |
use SL::TransNumber; |
53 | 53 |
use SL::Util qw(trim); |
54 |
use SL::DB; |
|
54 | 55 |
use Text::ParseWords; |
55 | 56 |
|
56 | 57 |
use strict; |
... | ... | |
419 | 420 |
} |
420 | 421 |
|
421 | 422 |
sub save { |
423 |
my ($self, $myconfig, $form) = @_; |
|
424 |
$main::lxdebug->enter_sub(); |
|
425 |
|
|
426 |
my $rc = SL::DB->client->with_transaction(\&_save, $self, $myconfig, $form); |
|
427 |
|
|
428 |
$::lxdebug->leave_sub; |
|
429 |
|
|
430 |
return $rc; |
|
431 |
} |
|
432 |
|
|
433 |
sub _save { |
|
422 | 434 |
$main::lxdebug->enter_sub(); |
423 | 435 |
|
424 | 436 |
my ($self, $myconfig, $form) = @_; |
425 | 437 |
|
426 |
# connect to database, turn off autocommit |
|
427 |
my $dbh = $form->get_standard_dbh; |
|
438 |
my $dbh = SL::DB->client->dbh; |
|
428 | 439 |
my $restricter = SL::HTML::Restrict->create; |
429 | 440 |
|
430 | 441 |
my ($query, @values, $sth, $null); |
... | ... | |
793 | 804 |
|
794 | 805 |
Common::webdav_folder($form); |
795 | 806 |
|
796 |
my $rc = $dbh->commit; |
|
797 |
|
|
798 | 807 |
$self->save_periodic_invoices_config(dbh => $dbh, |
799 | 808 |
oe_id => $form->{id}, |
800 | 809 |
config_yaml => $form->{periodic_invoices_config}) |
... | ... | |
802 | 811 |
|
803 | 812 |
$main::lxdebug->leave_sub(); |
804 | 813 |
|
805 |
return $rc;
|
|
814 |
return 1;
|
|
806 | 815 |
} |
807 | 816 |
|
808 | 817 |
sub save_periodic_invoices_config { |
... | ... | |
846 | 855 |
my $myconfig = \%main::myconfig; |
847 | 856 |
my $form = $main::form; |
848 | 857 |
|
849 |
my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
|
|
858 |
my $dbh = $params{dbh} || SL::DB->client->dbh;
|
|
850 | 859 |
|
851 |
my $query = qq|SELECT quotation FROM oe WHERE id = ?|; |
|
852 |
my $sth = prepare_query($form, $dbh, $query); |
|
860 |
SL::DB->client->with_transaction(sub { |
|
853 | 861 |
|
854 |
do_statement($form, $sth, $query, conv_i($params{to_id})); |
|
862 |
my $query = qq|SELECT quotation FROM oe WHERE id = ?|; |
|
863 |
my $sth = prepare_query($form, $dbh, $query); |
|
855 | 864 |
|
856 |
my ($quotation) = $sth->fetchrow_array();
|
|
865 |
do_statement($form, $sth, $query, conv_i($params{to_id}));
|
|
857 | 866 |
|
858 |
if ($quotation) { |
|
859 |
$main::lxdebug->leave_sub(); |
|
860 |
return; |
|
861 |
} |
|
867 |
my ($quotation) = $sth->fetchrow_array(); |
|
862 | 868 |
|
863 |
my @close_ids; |
|
869 |
if ($quotation) { |
|
870 |
return; |
|
871 |
} |
|
864 | 872 |
|
865 |
foreach my $from_id (@{ $params{from_id} }) { |
|
866 |
$from_id = conv_i($from_id); |
|
867 |
do_statement($form, $sth, $query, $from_id); |
|
868 |
($quotation) = $sth->fetchrow_array(); |
|
869 |
push @close_ids, $from_id if ($quotation); |
|
870 |
} |
|
873 |
my @close_ids; |
|
871 | 874 |
|
872 |
$sth->finish(); |
|
875 |
foreach my $from_id (@{ $params{from_id} }) { |
|
876 |
$from_id = conv_i($from_id); |
|
877 |
do_statement($form, $sth, $query, $from_id); |
|
878 |
($quotation) = $sth->fetchrow_array(); |
|
879 |
push @close_ids, $from_id if ($quotation); |
|
880 |
} |
|
873 | 881 |
|
874 |
if (scalar @close_ids) { |
|
875 |
$query = qq|UPDATE oe SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar @close_ids) . qq|)|; |
|
876 |
do_query($form, $dbh, $query, @close_ids); |
|
882 |
$sth->finish(); |
|
877 | 883 |
|
878 |
$dbh->commit() unless ($params{dbh}); |
|
879 |
} |
|
884 |
if (scalar @close_ids) { |
|
885 |
$query = qq|UPDATE oe SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar @close_ids) . qq|)|; |
|
886 |
do_query($form, $dbh, $query, @close_ids); |
|
887 |
} |
|
888 |
|
|
889 |
}); |
|
880 | 890 |
|
881 | 891 |
$main::lxdebug->leave_sub(); |
882 | 892 |
} |
... | ... | |
903 | 913 |
} |
904 | 914 |
|
905 | 915 |
sub retrieve { |
916 |
my ($self, $myconfig, $form) = @_; |
|
906 | 917 |
$main::lxdebug->enter_sub(); |
907 | 918 |
|
919 |
my $rc = SL::DB->client->with_transaction(\&_retrieve, $self, $myconfig, $form); |
|
920 |
|
|
921 |
$::lxdebug->leave_sub; |
|
922 |
return $rc; |
|
923 |
} |
|
924 |
|
|
925 |
sub _retrieve { |
|
908 | 926 |
my ($self, $myconfig, $form) = @_; |
909 | 927 |
|
910 | 928 |
# connect to database |
911 |
my $dbh = $form->get_standard_dbh;
|
|
929 |
my $dbh = SL::DB->client->dbh;
|
|
912 | 930 |
|
913 | 931 |
my ($query, $query_add, @values, @ids, $sth); |
914 | 932 |
|
... | ... | |
1206 | 1224 |
|
1207 | 1225 |
$self->load_periodic_invoice_config($form); |
1208 | 1226 |
|
1209 |
my $rc = $dbh->commit; |
|
1210 |
|
|
1211 |
$main::lxdebug->leave_sub(); |
|
1212 |
|
|
1213 |
return $rc; |
|
1227 |
return 1; |
|
1214 | 1228 |
} |
1215 | 1229 |
|
1216 | 1230 |
sub retrieve_simple { |
Auch abrufbar als: Unified diff
OE: single-dbh