package DO;
+use Carp;
use List::Util qw(max);
use YAML;
use SL::RecordLinks;
use SL::IC;
use SL::TransNumber;
+use SL::DB;
use SL::Util qw(trim);
use strict;
}
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) = @_;
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);
my $items_reqdate;
$form->get_lists('price_factors' => 'ALL_PRICE_FACTORS');
- my %price_factors = map { $_->{id} => $_->{factor} } @{ $form->{ALL_PRICE_FACTORS} };
+ my %price_factors = map { $_->{id} => $_->{factor} *1 } @{ $form->{ALL_PRICE_FACTORS} };
my $price_factor;
my %part_id_map = map { $_ => 1 } grep { $_ } map { $form->{"id_$_"} } (1 .. $form->{rowcount});
'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};
$main::lxdebug->leave_sub();
- return $rc;
+ return 1;
}
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);
+ }
+ });
$main::lxdebug->leave_sub();
}
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} });
+ });
- $dbh->commit() unless ($params{dbh});
$form->new_lastmtime('delivery_orders');
$main::lxdebug->leave_sub();
push @arrays, map { "project_cvar_$_->{name}" } @{ $project_cvar_configs };
$form->get_lists('price_factors' => 'ALL_PRICE_FACTORS');
- my %price_factors = map { $_->{id} => $_->{factor} } @{ $form->{ALL_PRICE_FACTORS} };
+ my %price_factors = map { $_->{id} => $_->{factor} *1 } @{ $form->{ALL_PRICE_FACTORS} };
my $totalweight = 0;
my $sameitem = "";
$h_pg->finish();
$h_bin_wh->finish();
+ $form->{department} = SL::DB::Manager::Department->find_by(id => $form->{department_id})->description if $form->{department_id};
$form->{delivery_term} = SL::DB::Manager::DeliveryTerm->find_by(id => $form->{delivery_term_id} || undef);
$form->{delivery_term}->description_long($form->{delivery_term}->translated_attribute('description_long', $form->{language_id})) if $form->{delivery_term} && $form->{language_id};
- $form->{department} = SL::DB::Manager::Department->find_by(id => $form->{department_id})->description if $form->{department_id};
$form->{username} = $myconfig->{name};