use SL::DB::Tax;
use SL::DB::TaxZone;
use SL::TransNumber;
+use SL::DB;
use Data::Dumper;
use strict;
}
sub post_invoice {
+ my ($self, $myconfig, $form, $provided_dbh, $payments_only) = @_;
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_post_invoice, $self, $myconfig, $form, $provided_dbh, $payments_only);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _post_invoice {
my ($self, $myconfig, $form, $provided_dbh, $payments_only) = @_;
- # connect to database, turn off autocommit
- my $dbh = $provided_dbh ? $provided_dbh : $form->get_standard_dbh;
+ my $dbh = $provided_dbh || SL::DB->client->dbh;
my $restricter = SL::HTML::Restrict->create;
my ($query, $sth, $null, $project_id, @values);
$form->new_lastmtime('ar');
- $dbh->commit if !$provided_dbh;
-
- $main::lxdebug->leave_sub();
return;
}
$datev->export;
if ($datev->errors) {
- $dbh->rollback;
die join "\n", $::locale->text('DATEV check returned errors:'), $datev->errors;
}
}
- my $rc = 1;
- $dbh->commit if !$provided_dbh;
-
- $main::lxdebug->leave_sub();
-
- return $rc;
+ return 1;
}
sub transfer_out {
}
sub post_payment {
+ my ($self, $myconfig, $form, $locale) = @_;
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_post_payment, $self, $myconfig, $form, $locale);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _post_payment {
my ($self, $myconfig, $form, $locale) = @_;
- # connect to database, turn off autocommit
- my $dbh = $form->get_standard_dbh;
+ my $dbh = SL::DB->client->dbh;
my (%payments, $old_form, $row, $item, $query, %keep_vars);
restore_form($old_form);
- my $rc = $dbh->commit();
-
- $main::lxdebug->leave_sub();
-
- return $rc;
+ return 1;
}
sub process_assembly {
my ($dbh, $myconfig, $form, $position, $id, $totalqty) = @_;
my $query =
- qq|SELECT a.parts_id, a.qty, p.assembly, p.partnumber, p.description, p.unit,
- p.inventory_accno_id, p.income_accno_id, p.expense_accno_id
+ qq|SELECT a.parts_id, a.qty, p.part_type, p.partnumber, p.description, p.unit
FROM assembly a
JOIN parts p ON (a.parts_id = p.id)
WHERE (a.id = ?)|;
# reverse inventory items
my $query =
- qq|SELECT i.id, i.parts_id, i.qty, i.assemblyitem, p.assembly, p.inventory_accno_id
+ qq|SELECT i.id, i.parts_id, i.qty, i.assemblyitem, p.part_type
FROM invoice i
JOIN parts p ON (i.parts_id = p.id)
WHERE i.trans_id = ?|;
}
sub delete_invoice {
+ my ($self, $myconfig, $form) = @_;
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_delete_invoice, $self, $myconfig, $form);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _delete_invoice {
my ($self, $myconfig, $form) = @_;
- # connect to database
- my $dbh = $form->get_standard_dbh;
+ my $dbh = SL::DB->client->dbh;
&reverse_invoice($dbh, $form);
_delete_transfers($dbh, $form, $form->{id});
map { do_query($form, $dbh, $_, @values) } @queries;
- my $rc = $dbh->commit;
+ my $spool = $::lx_office_conf{paths}->{spool};
+ map { unlink "$spool/$_" if -f "$spool/$_"; } @spoolfiles;
- if ($rc) {
- my $spool = $::lx_office_conf{paths}->{spool};
- map { unlink "$spool/$_" if -f "$spool/$_"; } @spoolfiles;
- }
-
- $main::lxdebug->leave_sub();
-
- return $rc;
+ return 1;
}
sub retrieve_invoice {
+ my ($self, $myconfig, $form) = @_;
$main::lxdebug->enter_sub();
+ my $rc = SL::DB->client->with_transaction(\&_retrieve_invoice, $self, $myconfig, $form);
+
+ $::lxdebug->leave_sub;
+ return $rc;
+}
+
+sub _retrieve_invoice {
my ($self, $myconfig, $form) = @_;
- # connect to database
- my $dbh = $form->get_standard_dbh;
+ my $dbh = SL::DB->client->dbh;
my ($sth, $ref, $query);
i.description, i.longdescription, i.qty, i.fxsellprice AS sellprice, i.discount, i.parts_id AS id, i.unit, i.deliverydate AS reqdate,
i.project_id, i.serialnumber, i.pricegroup_id, i.ordnumber, i.donumber, i.transdate, i.cusordnumber, i.subtotal, i.lastcost,
i.price_factor_id, i.price_factor, i.marge_price_factor, i.active_price_source, i.active_discount_source,
- p.partnumber, p.assembly, p.notes AS partnotes, p.inventory_accno_id AS part_inventory_accno_id, p.formel, p.listprice,
+ p.partnumber, p.part_type, p.notes AS partnotes, p.formel, p.listprice,
pr.projectnumber, pg.partsgroup, prg.pricegroup
FROM invoice i
Common::webdav_folder($form);
}
- my $rc = $dbh->commit;
-
- $main::lxdebug->leave_sub();
-
- return $rc;
+ return 1;
}
sub get_customer {
c3.new_chart_id AS expense_new_chart,
date($transdate) - c3.valid_from AS expense_valid,
- p.unit, p.assembly, p.onhand,
+ p.unit, p.part_type, p.onhand,
p.notes AS partnotes, p.notes AS longdescription,
p.not_discountable, p.formel, p.payment_id AS part_payment_id,
p.price_factor_id, p.weight,