X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FIC.pm;h=868fb741748649aa43dbf15ed6c1666e13a46a0e;hb=654022f9fe773c2a43fb7f907817e7b866b9d90e;hp=4254236db69e42e61e67ba6b8dd45642ead86e5c;hpb=0c050c7650dd6ce44a6f4d7a5592f979582c427e;p=kivitendo-erp.git diff --git a/SL/IC.pm b/SL/IC.pm index 4254236db..868fb7417 100644 --- a/SL/IC.pm +++ b/SL/IC.pm @@ -37,7 +37,6 @@ package IC; use Data::Dumper; use List::MoreUtils qw(all any uniq); -use YAML; use SL::CVar; use SL::DBUtils; @@ -527,6 +526,22 @@ sub all_parts { push @bind_vars, @cvar_values; } + # simple search for assemblies by items used in assemblies + if ($form->{bom} eq '2' && $form->{l_assembly}) { + # nuke where clause and bind vars + $where_clause = ' 1=1 AND p.id in (SELECT id from assembly where parts_id IN ' . + ' (select id from parts where 1=1 AND '; + @bind_vars = (); + # use only like filter for items used in assemblies + foreach (@like_filters) { + next unless $form->{$_}; + $form->{"l_$_"} = '1'; # show the column + $where_clause .= " $_ ILIKE ? "; + push @bind_vars, like($form->{$_}); + } + $where_clause .='))'; + } + my $query = <<" SQL"; SELECT DISTINCT $select_clause FROM parts p @@ -791,7 +806,8 @@ sub retrieve_accounts { SQL my $query_tax = <{"taxaccounts_$index"} = $ref->{"accno"}; $form->{"taxaccounts"} .= "$ref->{accno} "if $form->{"taxaccounts"} !~ /$ref->{accno}/; - $form->{"$ref->{accno}_${_}"} = $ref->{$_} for qw(rate description taxnumber); + $form->{"$ref->{accno}_${_}"} = $ref->{$_} for qw(rate description taxnumber tax_id); } $sth_tax->finish; @@ -906,6 +922,25 @@ sub prepare_parts_for_printing { $sth->finish(); + $query = qq|SELECT + cp.parts_id, + cp.customer_partnumber AS customer_model, + c.name AS customer_make + FROM part_customer_prices cp + LEFT JOIN customer c ON (cp.customer_id = c.id) + WHERE cp.parts_id IN ($placeholders)|; + + my %customermodel = (); + + $sth = prepare_execute_query($form, $dbh, $query, @part_ids); + + while (my $ref = $sth->fetchrow_hashref()) { + $customermodel{$ref->{parts_id}} ||= []; + push @{ $customermodel{$ref->{parts_id}} }, $ref; + } + + $sth->finish(); + my @columns = qw(ean image microfiche drawing); $query = qq|SELECT id, | . join(', ', @columns) . qq| @@ -915,7 +950,7 @@ sub prepare_parts_for_printing { my %data = selectall_as_map($form, $dbh, $query, 'id', \@columns, @part_ids); my %template_arrays; - map { $template_arrays{$_} = [] } (qw(make model), @columns); + map { $template_arrays{$_} = [] } (qw(make model customer_make customer_model), @columns); foreach my $i (1 .. $rowcount) { my $id = $form->{"${prefix}${i}"}; @@ -929,11 +964,21 @@ sub prepare_parts_for_printing { push @{ $template_arrays{make} }, []; push @{ $template_arrays{model} }, []; - next if (!$makemodel{$id}); + if ($makemodel{$id}) { + foreach my $ref (@{ $makemodel{$id} }) { + map { push @{ $template_arrays{$_}->[-1] }, $ref->{$_} } qw(make model); + } + } + + push @{ $template_arrays{customer_make} }, []; + push @{ $template_arrays{customer_model} }, []; - foreach my $ref (@{ $makemodel{$id} }) { - map { push @{ $template_arrays{$_}->[-1] }, $ref->{$_} } qw(make model); + if ($customermodel{$id}) { + foreach my $ref (@{ $customermodel{$id} }) { + push @{ $template_arrays{$_}->[-1] }, $ref->{$_} for qw(customer_make customer_model); + } } + } my $parts = SL::DB::Manager::Part->get_all(query => [ id => \@part_ids ]); @@ -954,24 +999,4 @@ sub prepare_parts_for_printing { return %template_arrays; } -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;