X-Git-Url: http://wagnertech.de/git?p=kivitendo-erp.git;a=blobdiff_plain;f=SL%2FWH.pm;fp=SL%2FWH.pm;h=52e174ff0bfe3c4ed6a3e564d6b54fc312e5af7b;hp=69874ceeb33d6a8e292de5cfd54c433a77aa92f0;hb=b293ff8ad52fc76ba0c44783e3982418114d6b08;hpb=d4925a8b60f04674885e30d9316dc0263f8b9a84 diff --git a/SL/WH.pm b/SL/WH.pm index 69874ceeb..52e174ff0 100644 --- a/SL/WH.pm +++ b/SL/WH.pm @@ -61,7 +61,7 @@ sub transfer { require SL::DB::Part; require SL::DB::Employee; - my $employee = SL::DB::Manager::Employee->find_by(login => $::myconfig{login}); + my $employee = SL::DB::Manager::Employee->current; my ($now) = selectrow_query($::form, $::form->get_standard_dbh, qq|SELECT current_date|); my @directions = (undef, qw(out in transfer)); @@ -306,6 +306,18 @@ sub get_warehouse_journal { my $where_clause = @filter_ary ? join(" AND ", @filter_ary) . " AND " : ''; + my ($cvar_where, @cvar_values) = CVar->build_filter_query( + module => 'IC', + trans_id_field => 'p.id', + filter => $form, + sub_module => undef, + ); + + if ($cvar_where) { + $where_clause .= qq| ($cvar_where) AND |; + push @filter_vars, @cvar_values; + } + $select_tokens{'trans'} = { "parts_id" => "i1.parts_id", "qty" => "ABS(SUM(i1.qty))", @@ -355,11 +367,11 @@ sub get_warehouse_journal { # take all the requested ones from the first hash and overwrite them from the out/in hashes if present. for my $i ('trans', 'out', 'in') { $select{$i} = join ', ', map { +/^l_/; ($select_tokens{$i}{"$'"} || $select_tokens{'trans'}{"$'"}) . " AS r_$'" } - ( grep( { !/qty$/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_qty l_partunit l_shippingdate) ); + ( grep( { !/qty$/ and !/^l_cvar/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_qty l_partunit l_shippingdate) ); } my $group_clause = join ", ", map { +/^l_/; "r_$'" } - ( grep( { !/qty$/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_partunit l_shippingdate l_itime) ); + ( grep( { !/qty$/ and !/^l_cvar/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_partunit l_shippingdate l_itime) ); $where_clause = defined($where_clause) ? $where_clause : ''; @@ -542,6 +554,11 @@ sub get_warehouse_report { push @filter_vars, $filter{partsid}; } + if ($filter{partsgroup_id}) { + push @filter_ary, "p.partsgroup_id = ?"; + push @filter_vars, $filter{partsgroup_id}; + } + if ($filter{chargenumber}) { push @filter_ary, "i.chargenumber ILIKE ?"; push @filter_vars, like($filter{chargenumber}); @@ -627,11 +644,11 @@ sub get_warehouse_report { $form->{l_part_type} = 'Y'; my $select_clause = join ', ', map { +/^l_/; "$select_tokens{$'} AS $'" } - ( grep( { !/qty/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), + ( grep( { !/qty/ and !/^l_cvar/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_qty l_partunit) ); my $group_clause = join ", ", map { +/^l_/; "$'" } - ( grep( { !/qty/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), + ( grep( { !/qty/ and !/^l_cvar/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_partunit) ); my %join_tokens = ( @@ -639,9 +656,21 @@ sub get_warehouse_report { ); my $joins = join ' ', grep { $_ } map { +/^l_/; $join_tokens{"$'"} } - ( grep( { !/qty/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), + ( grep( { !/qty/ and !/^l_cvar/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_qty l_partunit) ); + my ($cvar_where, @cvar_values) = CVar->build_filter_query( + module => 'IC', + trans_id_field => 'p.id', + filter => $form, + sub_module => undef, + ); + + if ($cvar_where) { + $where_clause .= qq| AND ($cvar_where)|; + push @filter_vars, @cvar_values; + } + my $query = qq|SELECT * FROM ( SELECT $select_clause FROM inventory i