X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FIC.pm;h=649ad2fd0659faecc0437c583d357c4ef78172ef;hb=303a4d5d9c401254c2cf623a702a9e7676fb639f;hp=ff8484b7e489aa405e05df62b6f951fb4fd6dca5;hpb=d6db88a35e7253f6d9a0278141f71d7c78e1f5f8;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index ff8484b7e..649ad2fd0 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -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); @@ -329,6 +324,8 @@ sub save { $subq_expense = "NULL"; } + normalize_text_blocks(); + $query = qq|UPDATE parts SET partnumber = ?, @@ -401,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 @@ -1701,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;