+ if ($form->{$ordnumber}) {
+ $query .= qq| AND o.$ordnumber ILIKE ?|;
+ push(@values, like($form->{$ordnumber}));
+ }
+
+ if ($form->{cusordnumber}) {
+ $query .= qq| AND o.cusordnumber ILIKE ?|;
+ push(@values, like($form->{cusordnumber}));
+ }
+
+ if($form->{transdatefrom}) {
+ $query .= qq| AND o.transdate >= ?|;
+ push(@values, conv_date($form->{transdatefrom}));
+ }
+
+ if($form->{transdateto}) {
+ $query .= qq| AND o.transdate <= ?|;
+ push(@values, conv_date($form->{transdateto}));
+ }
+
+ if($form->{reqdatefrom}) {
+ $query .= qq| AND o.reqdate >= ?|;
+ push(@values, conv_date($form->{reqdatefrom}));
+ }
+
+ if($form->{reqdateto}) {
+ $query .= qq| AND o.reqdate <= ?|;
+ push(@values, conv_date($form->{reqdateto}));
+ }
+
+ if($form->{insertdatefrom}) {
+ $query .= qq| AND o.itime::DATE >= ?|;
+ push(@values, conv_date($form->{insertdatefrom}));
+ }
+
+ if($form->{insertdateto}) {
+ $query .= qq| AND o.itime::DATE <= ?|;
+ push(@values, conv_date($form->{insertdateto}));
+ }
+
+ if ($form->{shippingpoint}) {
+ $query .= qq| AND o.shippingpoint ILIKE ?|;
+ push(@values, like($form->{shippingpoint}));
+ }
+
+ if ($form->{taxzone_id} ne '') { # taxzone_id could be 0
+ $query .= qq| AND tz.id = ?|;
+ push(@values, $form->{taxzone_id});
+ }
+
+ if ($form->{transaction_description}) {
+ $query .= qq| AND o.transaction_description ILIKE ?|;
+ push(@values, like($form->{transaction_description}));
+ }
+
+ if ($form->{periodic_invoices_active} ne $form->{periodic_invoices_inactive}) {
+ my $not = $form->{periodic_invoices_inactive} ? 'NOT' : '';
+ $query .= qq| AND ${not} COALESCE(pcfg.active, 'f')|;
+ }
+
+ if ($form->{reqdate_unset_or_old}) {
+ $query .= qq| AND ((o.reqdate IS NULL) OR (o.reqdate < date_trunc('month', current_date)))|;
+ }
+
+ if (($form->{order_probability_value} || '') ne '') {
+ my $op = $form->{order_probability_value} eq 'le' ? '<=' : '>=';
+ $query .= qq| AND (o.order_probability ${op} ?)|;
+ push @values, trim($form->{order_probability_value});
+ }
+
+ if ($form->{expected_billing_date_from}) {
+ $query .= qq| AND (o.expected_billing_date >= ?)|;
+ push @values, conv_date($form->{expected_billing_date_from});
+ }
+
+ if ($form->{expected_billing_date_to}) {
+ $query .= qq| AND (o.expected_billing_date <= ?)|;
+ push @values, conv_date($form->{expected_billing_date_to});
+ }
+
+ if ($form->{parts_partnumber}) {
+ $query .= <<SQL;
+ AND EXISTS (
+ SELECT orderitems.trans_id
+ FROM orderitems
+ LEFT JOIN parts ON (orderitems.parts_id = parts.id)
+ WHERE (orderitems.trans_id = o.id)
+ AND (parts.partnumber ILIKE ?)
+ LIMIT 1
+ )
+SQL
+ push @values, like($form->{parts_partnumber});
+ }