X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDO.pm;h=b087becdd0f8939656270940f144e8c7634f743e;hb=12f8fb507f7531f2e434214eb9a8c4d7a55c75d5;hp=4ef285461b645d6fe745f7b8c3502f6e978715c2;hpb=2134f89abb07c18b07b3121e80d243af03ede0e0;p=kivitendo-erp.git diff --git a/SL/DO.pm b/SL/DO.pm index 4ef285461..b087becdd 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -47,6 +47,7 @@ use SL::HTML::Restrict; use SL::RecordLinks; use SL::IC; use SL::TransNumber; +use SL::DB; use SL::Util qw(trim); use strict; @@ -260,6 +261,16 @@ SQL } sub save { + my ($self) = @_; + $main::lxdebug->enter_sub(); + + my $rc = SL::DB->client->with_transaction(\&_save, $self); + + $main::lxdebug->leave_sub(); + return $rc; +} + +sub _save { $main::lxdebug->enter_sub(); my ($self) = @_; @@ -267,8 +278,7 @@ sub save { my $myconfig = \%main::myconfig; my $form = $main::form; - # connect to database, turn off autocommit - my $dbh = $form->get_standard_dbh($myconfig); + my $dbh = SL::DB->client->dbh; my $restricter = SL::HTML::Restrict->create; my ($query, @values, $sth, $null); @@ -538,8 +548,6 @@ SQL 'type' => $form->{type} eq 'sales_delivery_order' ? 'sales' : 'purchase', 'dbh' => $dbh,); - my $rc = $dbh->commit(); - $form->{saved_donumber} = $form->{donumber}; $form->{saved_ordnumber} = $form->{ordnumber}; $form->{saved_cusordnumber} = $form->{cusordnumber}; @@ -548,7 +556,7 @@ SQL $main::lxdebug->leave_sub(); - return $rc; + return 1; } sub mark_orders_if_delivered { @@ -562,14 +570,16 @@ sub mark_orders_if_delivered { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); + SL::DB->client->with_transaction(sub { + my $dbh = $params{dbh} || SL::DB->client->dbh; - my %ship = $self->get_shipped_qty('dbh' => $dbh, 'do_id' => $form->{id}, 'delivered' => 1); + my %ship = $self->get_shipped_qty('dbh' => $dbh, 'do_id' => $form->{id}, 'delivered' => 1); - foreach my $oe_id (keys %ship) { - do_query($form, $dbh,"UPDATE oe SET delivered = ".($ship{$oe_id}->{delivered}?"TRUE":"FALSE")." WHERE id = ?", $oe_id); - } - $dbh->commit() if (!$params{dbh}); + foreach my $oe_id (keys %ship) { + do_query($form, $dbh,"UPDATE oe SET delivered = ".($ship{$oe_id}->{delivered}?"TRUE":"FALSE")." WHERE id = ?", $oe_id); + } + 1; + }) or do { die SL::DB->client->error }; $main::lxdebug->leave_sub(); } @@ -590,13 +600,15 @@ sub close_orders { my $myconfig = \%main::myconfig; my $form = $main::form; - my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); + SL::DB->client->with_transaction(sub { + my $dbh = $params{dbh} || SL::DB->client->dbh; - my $query = qq|UPDATE delivery_orders SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar(@{ $params{ids} })) . qq|)|; + my $query = qq|UPDATE delivery_orders SET closed = TRUE WHERE id IN (| . join(', ', ('?') x scalar(@{ $params{ids} })) . qq|)|; - do_query($form, $dbh, $query, map { conv_i($_) } @{ $params{ids} }); + do_query($form, $dbh, $query, map { conv_i($_) } @{ $params{ids} }); + 1; + }) or die { SL::DB->client->error }; - $dbh->commit() unless ($params{dbh}); $form->new_lastmtime('delivery_orders'); $main::lxdebug->leave_sub(); @@ -767,7 +779,7 @@ sub retrieve { # stuff different from the whole will not be overwritten, but saved with a suffix. $query = qq|SELECT doi.id AS delivery_order_items_id, - p.partnumber, p.assembly, p.listprice, doi.description, doi.qty, + p.partnumber, p.part_type, p.listprice, doi.description, doi.qty, doi.sellprice, doi.parts_id AS id, doi.unit, doi.discount, p.notes AS partnotes, doi.reqdate, doi.project_id, doi.serialnumber, doi.lastcost, doi.ordnumber, doi.transdate, doi.cusordnumber, doi.longdescription,