X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FWH.pm;h=3428b91bcbed9fd66896a3ad2164138fa2eef495;hb=115d9bb0740b874e6b68637db5847bac38f00996;hp=00220f24531fcc79228b631aa403135170357902;hpb=83914eeb2e95cdf587565952eef54be59dd58693;p=kivitendo-erp.git diff --git a/SL/WH.pm b/SL/WH.pm index 00220f245..3428b91bc 100644 --- a/SL/WH.pm +++ b/SL/WH.pm @@ -98,7 +98,7 @@ sub transfer { push @values, "$transfer->{comment}"; - $qty = $transfer->{qty}; + my $qty = $transfer->{qty}; if ($transfer->{unit}) { my $partunit = $partunits{$transfer->{parts_id}}; @@ -161,7 +161,7 @@ sub get_warehouse_journal { } if ($filter{chargenumber}) { - push @filter_ary, "w1.chargenumber ILIKE ?"; + push @filter_ary, "i1.chargenumber ILIKE ?"; push @filter_vars, '%' . $filter{chargenumber} . '%'; } @@ -240,12 +240,12 @@ sub get_warehouse_journal { # build the select clauses. # 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_itime) ); + $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_itime) ); } my $group_clause = join ", ", map { +/^l_/; "r_$'" } - ( grep( { !/qty$/ and /l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_partunit l_itime) ); + ( grep( { !/qty$/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_partunit l_itime) ); my $query = qq|SELECT DISTINCT $select{trans} @@ -433,15 +433,24 @@ sub get_warehouse_report { "chargeid" => "c.id", "warehousedescription" => "w.description", "partunit" => "p.unit", + "stock_value" => "p.lastcost / COALESCE(pfac.factor, 1)", ); - my $select_clause = join ', ', map { +/l_/; "$select_tokens{$'} AS $'" } - ( grep( { !/qty/ and /l_/ and $form->{$_} eq 'Y' } keys %$form), + my $select_clause = join ', ', map { +/^l_/; "$select_tokens{$'} AS $'" } + ( grep( { !/qty/ 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_/ and $form->{$_} eq 'Y' } keys %$form), qw(l_parts_id l_partunit) ); + my %join_tokens = ( + "stock_value" => "LEFT JOIN price_factors pfac ON (p.price_factor_id = pfac.id)", + ); + + my $joins = join ' ', grep { $_ } map { +/^l_/; $join_tokens{"$'"} } + ( grep( { !/qty/ and /^l_/ and $form->{$_} eq 'Y' } keys %$form), + qw(l_parts_id l_qty l_partunit) ); + my $query = qq|SELECT $select_clause $columns @@ -449,6 +458,7 @@ sub get_warehouse_report { LEFT JOIN parts p ON i.parts_id = p.id LEFT JOIN bin b ON i.bin_id = b.id LEFT JOIN warehouse w ON i.warehouse_id = w.id + $joins WHERE $where_clause GROUP BY $group_clause $group_by ORDER BY $form->{sort}|; @@ -477,6 +487,8 @@ sub get_warehouse_report { @all_fields = keys %{ $ref } unless (@all_fields); } + $ref->{stock_value} *= $ref->{qty}; + push @contents, $ref; }