my $joins_needed = shift;
sub {
my ($col, $group) = @_;
- $renamed_columns{$col} ||= $col;
-
my @coalesce_tokens =
- map { ($_->[1] || 'p.') . $_->[0] }
+ map { ($_->[1] || 'p.') . $_->[0] }
grep { !$_->[2] || $joins_needed->{$_->[2]} }
grep { $_->[0] eq $col }
- @column_override,
- [ $col, $table_prefix{$col} ];
+ @column_override, [ $col, $table_prefix{$col} ];
- my $coalesce = scalar @coalesce_tokens > 1;
+ my $coalesce = scalar @coalesce_tokens > 1;
return ($coalesce
? sprintf 'COALESCE(%s)', join ', ', @coalesce_tokens
: shift @coalesce_tokens)
- . ($group && $coalesce
- ? " AS $renamed_columns{$col}"
+ . ($group && ($coalesce || $renamed_columns{$col})
+ ? " AS " . ($renamed_columns{$col} || $col)
: '');
}
};
push @bsooqr_tokens, q|module = 'oe' AND quotation AND cv = 'vendor'| if $form->{rfq};
push @where_tokens, join ' OR ', map { "($_)" } @bsooqr_tokens if $bsooqr;
- $renamed_columns{onhand} = 'onhand_before_bsooqr';
- $renamed_columns{qty} = 'onhand';
-
$joins_needed{partsgroup} = 1;
$joins_needed{pfac} = 1;
$joins_needed{makemodel} = 1 if grep { $form->{$_} || $form->{"l_$_"} } @makemodel_filters;
$joins_needed{apoe} = 1 if $joins_needed{cv} || grep { $form->{$_} || $form->{"l_$_"} } @apoe_filters;
$joins_needed{invoice_oi} = 1 if $joins_needed{apoe} || grep { $form->{$_} || $form->{"l_$_"} } @invoice_oi_filters;
+ # in bsoorq, use qtys instead of onhand
+ if ($joins_needed{invoice_oi}) {
+ $renamed_columns{onhand} = 'onhand_before_bsooqr';
+ $renamed_columns{qty} = 'onhand';
+ }
+
# special case for description search.
# up in the simple filter section the description filter got interpreted as something like: WHERE description ILIKE '%$form->{description}%'
# now we'd like to search also for the masked description entered in orderitems and invoice, so...