X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDO.pm;h=15f1c8d0825c1f4b3ef97c5c4a806585c7f40179;hb=b167020e55e1fed6e66654f5ae397a91b580a7be;hp=fb8672c6a6fab970c250ad043715ee52b2dd9d06;hpb=90bb521a25eeb37c5bbae1ff68c38e6c142b6e6b;p=kivitendo-erp.git diff --git a/SL/DO.pm b/SL/DO.pm index fb8672c6a..15f1c8d08 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -39,6 +39,8 @@ use YAML; use SL::AM; use SL::Common; use SL::CVar; +use SL::DB::DeliveryOrder; +use SL::DB::Status; use SL::DBUtils; use SL::RecordLinks; use SL::IC; @@ -507,59 +509,16 @@ sub delete { my $form = $main::form; my $spool = $::lx_office_conf{paths}->{spool}; - # connect to database - my $dbh = $form->get_standard_dbh($myconfig); - - # delete spool files - my $query = qq|SELECT s.spoolfile FROM status s WHERE s.trans_id = ?|; - my $sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id})); - - my $spoolfile; - my @spoolfiles = (); - my @values; - - while (($spoolfile) = $sth->fetchrow_array) { - push @spoolfiles, $spoolfile; - } - $sth->finish(); - - # delete-values - @values = (conv_i($form->{id})); - - # delete status entries - $query = qq|DELETE FROM status - WHERE trans_id = ?|; - do_query($form, $dbh, $query, @values); + my $rc = SL::DB::Order->new->db->with_transaction(sub { + my @spoolfiles = grep { $_ } map { $_->spoolfile } @{ SL::DB::Manager::Status->get_all(where => [ trans_id => $form->{id} ]) }; - # delete individual entries - $query = qq|DELETE FROM delivery_order_items_stock - WHERE delivery_order_item_id IN ( - SELECT id FROM delivery_order_items - WHERE delivery_order_id = ? - )|; - do_query($form, $dbh, $query, @values); - - # delete individual entries - $query = qq|DELETE FROM delivery_order_items - WHERE delivery_order_id = ?|; - do_query($form, $dbh, $query, @values); - - # delete DO record - $query = qq|DELETE FROM delivery_orders - WHERE id = ?|; - do_query($form, $dbh, $query, @values); + SL::DB::DeliveryOrder->new(id => $form->{id})->delete; - $query = qq|DELETE FROM shipto - WHERE trans_id = ? AND module = 'DO'|; - do_query($form, $dbh, $query, @values); - - my $rc = $dbh->commit(); + my $spool = $::lx_office_conf{paths}->{spool}; + unlink map { "$spool/$_" } @spoolfiles if $spool; - if ($rc) { - foreach $spoolfile (@spoolfiles) { - unlink "$spool/$spoolfile" if $spoolfile; - } - } + 1; + }); $main::lxdebug->leave_sub();