}
}
+ 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->{"cp_name"}))x2);
}
- if ( !(($vc eq 'customer' && $main::auth->assert('sales_all_edit', 1)) || ($vc eq 'vendor' && $main::auth->assert('purchase_all_edit', 1))) ) {
+ if ( !( ($vc eq 'customer' && ($main::auth->assert('sales_all_edit', 1) || $main::auth->assert('sales_order_view', 1)))
+ || ($vc eq 'vendor' && ($main::auth->assert('purchase_all_edit', 1) || $main::auth->assert('purchase_order_view', 1))) ) ) {
$query .= " AND o.employee_id = (select id from employee where login= ?)";
push @values, $::myconfig{login};
}
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 (
customer_id = ?, amount = ?, netamount = ?, reqdate = ?, tax_point = ?, taxincluded = ?,
shippingpoint = ?, shipvia = ?, notes = ?, intnotes = ?, currency_id = (SELECT id FROM currencies WHERE name=?), closed = ?,
delivered = ?, proforma = ?, quotation = ?, department_id = ?, language_id = ?,
- taxzone_id = ?, shipto_id = ?, payment_id = ?, delivery_vendor_id = ?, delivery_customer_id = ?,delivery_term_id = ?,
+ taxzone_id = ?, shipto_id = ?, billing_address_id = ?, payment_id = ?, delivery_vendor_id = ?, delivery_customer_id = ?,delivery_term_id = ?,
globalproject_id = ?, employee_id = ?, salesman_id = ?, cp_id = ?, transaction_description = ?, marge_total = ?, marge_percent = ?
, order_probability = ?, expected_billing_date = ?
WHERE id = ?|;
$form->{delivered} ? "t" : "f", $form->{proforma} ? 't' : 'f',
$quotation, conv_i($form->{department_id}),
conv_i($form->{language_id}), conv_i($form->{taxzone_id}),
- conv_i($form->{shipto_id}), conv_i($form->{payment_id}),
+ conv_i($form->{shipto_id}), conv_i($form->{billing_address_id}), conv_i($form->{payment_id}),
conv_i($form->{delivery_vendor_id}),
conv_i($form->{delivery_customer_id}),
conv_i($form->{delivery_term_id}),
o.closed, o.reqdate, o.tax_point, o.quonumber, o.department_id, o.cusordnumber,
o.mtime, o.itime,
d.description AS department, o.payment_id, o.language_id, o.taxzone_id,
- o.delivery_customer_id, o.delivery_vendor_id, o.proforma, o.shipto_id,
+ o.delivery_customer_id, o.delivery_vendor_id, o.proforma, o.shipto_id, o.billing_address_id,
o.globalproject_id, o.delivered, o.transaction_description, o.delivery_term_id,
o.itime::DATE AS insertdate, o.order_probability, o.expected_billing_date
FROM oe o