}
}
+ my ($phone_notes_columns, $phone_notes_join);
+ $form->{phone_notes} = trim($form->{phone_notes});
+ if ($form->{phone_notes}) {
+ $phone_notes_columns = qq| , phone_notes.subject AS phone_notes_subject, phone_notes.body AS phone_notes_body |;
+ $phone_notes_join = qq| JOIN notes phone_notes ON (o.id = phone_notes.trans_id AND phone_notes.trans_module LIKE 'oe') |;
+ }
+
$query =
qq|SELECT o.id, o.ordnumber, o.transdate, o.reqdate, | .
qq| o.amount, ct.${vc}number, ct.name, o.netamount, o.${vc}_id, o.globalproject_id, | .
qq| ct.${vc}number AS vcnumber, ct.country, ct.ustid, ct.business_id, | .
qq| tz.description AS taxzone | .
$periodic_invoices_columns .
+ $phone_notes_columns .
qq| , o.order_probability, o.expected_billing_date, (o.netamount * o.order_probability / 100) AS expected_netamount | .
qq|FROM oe o | .
qq|JOIN $vc ct ON (o.${vc}_id = ct.id) | .
qq|LEFT JOIN tax_zones tz ON (o.taxzone_id = tz.id) | .
qq|LEFT JOIN department ON (o.department_id = department.id) | .
qq|$periodic_invoices_joins | .
+ $phone_notes_join .
qq|WHERE (o.quotation = ?) |;
push(@values, $quotation);
push(@values, like($form->{intnotes}));
}
+ if ($form->{phone_notes}) {
+ $query .= qq| AND (phone_notes.subject ILIKE ? OR phone_notes.body ILIKE ?)|;
+ push(@values, like($form->{phone_notes}), like($form->{phone_notes}));
+ }
+
+ $form->{fulltext} = trim($form->{fulltext});
+ if ($form->{fulltext}) {
+ my @fulltext_fields = qw(o.notes
+ o.intnotes
+ o.shippingpoint
+ o.shipvia
+ o.transaction_description
+ o.quonumber
+ o.ordnumber
+ o.cusordnumber);
+ $query .= ' AND (';
+ $query .= join ' ILIKE ? OR ', @fulltext_fields;
+ $query .= ' ILIKE ?';
+
+ $query .= <<SQL;
+ OR EXISTS (
+ SELECT files.id FROM files LEFT JOIN file_full_texts ON (file_full_texts.file_id = files.id)
+ WHERE files.object_id = o.id AND files.object_type = 'sales_order'
+ AND file_full_texts.full_text ILIKE ?)
+SQL
+
+ $query .= <<SQL;
+ OR EXISTS (
+ SELECT notes.id FROM notes
+ WHERE notes.trans_id = o.id AND notes.trans_module LIKE 'oe'
+ AND (notes.subject ILIKE ? OR notes.body ILIKE ?))
+SQL
+
+ $query .= <<SQL;
+ OR EXISTS (
+ SELECT follow_up_links.id FROM follow_up_links
+ WHERE follow_up_links.trans_id = o.id AND trans_type = 'sales_order'
+ AND EXISTS (
+ SELECT notes.id FROM notes
+ WHERE trans_module LIKE 'fu' AND trans_id = follow_up_links.follow_up_id
+ AND (notes.subject ILIKE ? OR notes.body ILIKE ?)))
+SQL
+
+ $query .= ')';
+
+ push(@values, like($form->{fulltext})) for 1 .. (scalar @fulltext_fields) + 5;
+ }
+
if ($form->{parts_partnumber}) {
$query .= <<SQL;
AND EXISTS (