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;
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);
-
- # 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);
+ 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 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 $spool = $::lx_office_conf{paths}->{spool};
+ unlink map { "$spool/$_" } @spoolfiles if $spool;
- my $rc = $dbh->commit();
-
- if ($rc) {
- foreach $spoolfile (@spoolfiles) {
- unlink "$spool/$spoolfile" if $spoolfile;
- }
- }
+ 1;
+ });
$main::lxdebug->leave_sub();
delete $form->{id};
}
- my %oid = ('Pg' => 'oid',
- 'Oracle' => 'rowid');
-
# retrieve individual items
# this query looks up all information about the items
# stuff different from the whole will not be overwritten, but saved with a suffix.
LEFT JOIN project pr ON (doi.project_id = pr.id)
LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id)
WHERE doi.delivery_order_id IN ($do_ids_placeholders)
- ORDER BY doi.$oid{$myconfig->{dbdriver}}|;
+ ORDER BY doi.oid|;
$form->{form_details} = selectall_hashref_query($form, $dbh, $query, @do_ids);
my $partsgroup;
my $position = 0;
- my %oid = ('Pg' => 'oid',
- 'Oracle' => 'rowid');
-
my (@project_ids, %projectnumbers, %projectdescriptions);
push(@project_ids, $form->{"globalproject_id"}) if ($form->{"globalproject_id"});
my $sortorder = "";
if ($form->{groupitems}) {
$sortorder =
- qq|ORDER BY pg.partsgroup, a.$oid{$myconfig->{dbdriver}}|;
+ qq|ORDER BY pg.partsgroup, a.oid|;
} else {
- $sortorder = qq|ORDER BY a.$oid{$myconfig->{dbdriver}}|;
+ $sortorder = qq|ORDER BY a.oid|;
}
do_statement($form, $h_pg, $q_pg, conv_i($form->{"id_$i"}));