X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDO.pm;h=4ba4828509494fbc07b930efb89fa003bd2095dc;hb=62cf428a42c82fff01457f94cc9ec6785c6ac9d3;hp=acc2999f3e5afed67653a211ab0cb0532f62b885;hpb=a8ab093107924691935126205db483112aa7f50e;p=kivitendo-erp.git diff --git a/SL/DO.pm b/SL/DO.pm index acc2999f3..4ba482850 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -33,6 +33,7 @@ package DO; +use Carp; use List::Util qw(max); use YAML; @@ -46,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; @@ -180,6 +182,33 @@ sub transactions { push @values, conv_date($form->{insertdateto}); } + if ($form->{parts_partnumber}) { + push @where, <{parts_partnumber}); + } + + if ($form->{parts_description}) { + push @where, <{parts_description}); + } + if (@where) { $query .= " WHERE " . join(" AND ", map { "($_)" } @where); } @@ -232,6 +261,16 @@ sub transactions { } 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) = @_; @@ -239,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); @@ -284,7 +322,7 @@ sub save { 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}); @@ -510,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}; @@ -520,7 +556,7 @@ SQL $main::lxdebug->leave_sub(); - return $rc; + return 1; } sub mark_orders_if_delivered { @@ -534,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(); } @@ -562,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(); @@ -886,7 +926,7 @@ sub order_details { 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 = ""; @@ -1027,9 +1067,9 @@ sub order_details { $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}; @@ -1211,7 +1251,7 @@ sub get_shipped_qty { # Wird für LaTeX benötigt um im Lieferschein pro Position die Mengen auszugeben # $params{delivered}: Alle Aufträge zum Lieferschein $params{do_id} prüfen ob sie vollständiger ausgeliefert sind # Wird für das Setzen des 'delivered' Flag in der Datenbank beim "save" des Lieferscheins benötigt - + my $self = shift; my %params = @_;