package IC;
use Data::Dumper;
-use List::MoreUtils qw(all any);
+use List::MoreUtils qw(all any uniq);
use YAML;
use SL::CVar;
# now the master trick: soldtotal.
if ($form->{l_soldtotal}) {
- push @where_tokens, 'ioi.qty >= 0';
+ push @where_tokens, 'NOT ioi.qty = 0';
push @group_tokens, @select_tokens;
map { s/.*\sAS\s+//si } @group_tokens;
push @select_tokens, 'SUM(ioi.qty)';
my $where_clause = join ' AND ', map { "($_)" } @where_tokens;
my $group_clause = ' GROUP BY ' . join ', ', map { $token_builder->($_) } @group_tokens if scalar @group_tokens;
- my ($cvar_where, @cvar_values) = CVar->build_filter_query('module' => 'IC',
- 'trans_id_field' => 'p.id',
- 'filter' => $form);
+ my %oe_flag_to_cvar = (
+ bought => 'invoice',
+ sold => 'invoice',
+ onorder => 'orderitems',
+ ordered => 'orderitems',
+ rfq => 'orderitems',
+ quoted => 'orderitems',
+ );
+
+ my ($cvar_where, @cvar_values) = CVar->build_filter_query(
+ module => 'IC',
+ trans_id_field => $bsooqr ? 'ioi.id': 'p.id',
+ filter => $form,
+ sub_module => $bsooqr ? [ uniq grep { $oe_flag_to_cvar{$form->{$_}} } @oe_flags ] : undef,
+ );
+
+ $::lxdebug->dump(0, "\@cvar_val", \@cvar_values);
if ($cvar_where) {
$where_clause .= qq| AND ($cvar_where)|;
qq| cnew.accno | .
qq|FROM chart c | .
qq|LEFT JOIN chart cnew ON c.new_chart_id = cnew.id | .
- qq|WHERE (c.id = ?) AND NOT c.new_chart_id ISNULL AND (c.new_chart_id > 0)|;
+ qq|WHERE (c.id = ?) AND NOT c.new_chart_id IS NULL AND (c.new_chart_id > 0)|;
$sth = prepare_query($form, $dbh, $query);
while (1) {