X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIC.pm;h=649ad2fd0659faecc0437c583d357c4ef78172ef;hb=53fcb212544cf90957c5e6a3b3a1a36af395b273;hp=0b8924ba30ea46b8ceb79d88b93504442051a005;hpb=c6b2257945060625bcb86fa7e2efd27c737480ff;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index 0b8924ba3..649ad2fd0 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -50,7 +50,7 @@ sub get_part { my ($self, $myconfig, $form) = @_; # connect to db - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; my $sth; @@ -146,15 +146,10 @@ SQL } # get translations - $form->{language_values} = ""; $query = qq|SELECT language_id, translation, longdescription FROM translation WHERE parts_id = ?|; - my $trq = prepare_execute_query($form, $dbh, $query, conv_i($form->{id})); - while (my $tr = $trq->fetchrow_hashref("NAME_lc")) { - $form->{language_values} .= "---+++---" . join('--++--', @{$tr}{qw(language_id translation longdescription)}); - } - $trq->finish; + $form->{translations} = selectall_hashref_query($form, $dbh, $query, conv_i($form->{id})); # is it an orphan my @referencing_tables = qw(invoice orderitems inventory); @@ -176,7 +171,7 @@ SQL $form->{"unit_changeable"} = $form->{orphaned}; - $dbh->disconnect; + Common::webdav_folder($form) if $::lx_office_conf{features}{webdav}; $main::lxdebug->leave_sub(); } @@ -186,7 +181,7 @@ sub get_pricegroups { my ($self, $myconfig, $form) = @_; - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; # get pricegroups my $query = qq|SELECT id, pricegroup FROM pricegroup ORDER BY lower(pricegroup)|; @@ -204,8 +199,6 @@ sub get_pricegroups { #correct rows $form->{price_rows} = $i - 1; - $dbh->disconnect; - $main::lxdebug->leave_sub(); return $pricegroups; @@ -218,7 +211,7 @@ sub retrieve_buchungsgruppen { my ($query, $sth); - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; # get buchungsgruppen $query = qq|SELECT id, description FROM buchungsgruppen ORDER BY sortkey|; @@ -331,6 +324,8 @@ sub save { $subq_expense = "NULL"; } + normalize_text_blocks(); + $query = qq|UPDATE parts SET partnumber = ?, @@ -403,16 +398,17 @@ sub save { # delete translation records do_query($form, $dbh, qq|DELETE FROM translation WHERE parts_id = ?|, conv_i($form->{id})); - if ($form->{language_values} ne "") { - foreach my $item (split(/---\+\+\+---/, $form->{language_values})) { - my ($language_id, $translation, $longdescription) = split(/--\+\+--/, $item); - if ($translation ne "") { - $query = qq|INSERT into translation (parts_id, language_id, translation, longdescription) - VALUES ( ?, ?, ?, ? )|; - @values = (conv_i($form->{id}), conv_i($language_id), $translation, $longdescription); - do_query($form, $dbh, $query, @values); - } + my @translations = grep { $_->{language_id} && $_->{translation} } @{ $form->{translations} || [] }; + if (@translations) { + $query = qq|INSERT into translation (parts_id, language_id, translation, longdescription) + VALUES ( ?, ?, ?, ? )|; + $sth = $dbh->prepare($query); + + foreach my $translation (@translations) { + do_statement($form, $sth, $query, conv_i($form->{id}), conv_i($translation->{language_id}), $translation->{translation}, $translation->{longdescription}); } + + $sth->finish(); } # delete price records @@ -459,6 +455,22 @@ sub save { # add assembly records if ($form->{item} eq 'assembly') { + # check additional assembly row + my $i = $form->{assembly_rows}; + # if last row is not empty add them + if ($form->{"partnumber_$i"} ne "") { + $query = qq|SELECT id FROM parts WHERE partnumber = ?|; + my ($partid) = selectrow_query($form, $dbh, $query,$form->{"partnumber_$i"} ); + if ( $partid ) { + $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"}); + $form->{"id_$i"} = $partid; + $form->{"bom_$i"} = 0; + $form->{assembly_rows}++; + } + else { + $::form->error($::locale->text("uncorrect partnumber ").$form->{"partnumber_$i"}); + } + } for my $i (1 .. $form->{assembly_rows}) { $form->{"qty_$i"} = $form->parse_amount($myconfig, $form->{"qty_$i"}); @@ -471,7 +483,6 @@ sub save { do_query($form, $dbh, $query, @values); } } - my @a = localtime; $a[5] += 1900; $a[4]++; @@ -551,7 +562,7 @@ sub retrieve_assemblies { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; my $where = qq|NOT p.obsolete|; my @values; @@ -578,8 +589,6 @@ sub retrieve_assemblies { $form->{assembly_items} = selectall_hashref_query($form, $dbh, $query, @values); - $dbh->disconnect; - $main::lxdebug->leave_sub(); } @@ -589,7 +598,7 @@ sub delete { my ($self, $myconfig, $form) = @_; my @values = (conv_i($form->{id})); # connect to database, turn off AutoCommit - my $dbh = $form->dbconnect_noauto($myconfig); + my $dbh = $form->get_standard_dbh; my %columns = ( "assembly" => "id", "parts" => "id" ); @@ -600,7 +609,6 @@ sub delete { # commit my $rc = $dbh->commit; - $dbh->disconnect; $main::lxdebug->leave_sub(); @@ -643,7 +651,7 @@ sub assembly_item { } # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; my $query = qq|SELECT p.id, p.partnumber, p.description, p.sellprice, @@ -655,8 +663,6 @@ sub assembly_item { WHERE $where|; $form->{item_list} = selectall_hashref_query($form, $dbh, $query, @values); - $dbh->disconnect; - $main::lxdebug->leave_sub(); } @@ -1203,7 +1209,7 @@ sub update_prices { my $num_updated = 0; # connect to database - my $dbh = $form->dbconnect_noauto($myconfig); + my $dbh = $form->get_standard_dbh; for my $column (qw(sellprice listprice)) { next if ($form->{$column} eq ""); @@ -1264,7 +1270,6 @@ sub update_prices { $sth_multiply->finish(); my $rc= $dbh->commit; - $dbh->disconnect; $main::lxdebug->leave_sub(); @@ -1277,7 +1282,7 @@ sub create_links { my ($self, $module, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; my @values = ('%' . $module . '%'); my $query; @@ -1333,7 +1338,6 @@ sub create_links { ($form->{priceupdate}) = selectrow_query($form, $dbh, qq|SELECT current_date|); } - $dbh->disconnect; $main::lxdebug->leave_sub(); } @@ -1342,7 +1346,7 @@ sub get_parts { $main::lxdebug->enter_sub(); my ($self, $myconfig, $form, $sortorder) = @_; - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; my $order = qq| p.partnumber|; my $where = qq|1 = 1|; my @values; @@ -1385,7 +1389,6 @@ sub get_parts { } #while $form->{rows} = $j; $sth->finish; - $dbh->disconnect; $main::lxdebug->leave_sub(); @@ -1413,7 +1416,7 @@ sub retrieve_languages { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect($myconfig); + my $dbh = $form->get_standard_dbh; my @values; my $where; @@ -1435,8 +1438,6 @@ sub retrieve_languages { my $languages = selectall_hashref_query($form, $dbh, $query, @values); - $dbh->disconnect; - $main::lxdebug->leave_sub(); return $languages; @@ -1698,5 +1699,24 @@ sub prepare_parts_for_printing { $main::lxdebug->leave_sub(); } +sub normalize_text_blocks { + $main::lxdebug->enter_sub(); + + my $self = shift; + my %params = @_; + + my $form = $params{form} || $main::form; + + # check if feature is enabled (select normalize_part_descriptions from defaults) + return unless ($::instance_conf->get_normalize_part_descriptions); + + foreach (qw(description notes)) { + $form->{$_} =~ s/\s+$//s; + $form->{$_} =~ s/^\s+//s; + $form->{$_} =~ s/ {2,}/ /g; + } + $main::lxdebug->leave_sub(); +} + 1;