- my $number = $form->like(lc $form->{$ordnumber});
- my $name = $form->like(lc $form->{ $form->{vc} });
-
- my $query = qq|SELECT o.id, o.ordnumber, o.transdate, o.reqdate,
- o.amount, ct.name, o.netamount, o.$form->{vc}_id,
- ex.$rate AS exchangerate,
- o.closed, o.delivered, o.quonumber, o.shippingpoint, o.shipvia,
- e.name AS employee
- FROM oe o
- JOIN $form->{vc} ct ON (o.$form->{vc}_id = ct.id)
- LEFT JOIN employee e ON (o.employee_id = e.id)
- LEFT JOIN exchangerate ex ON (ex.curr = o.curr
- AND ex.transdate = o.transdate)
- WHERE o.quotation = '$quotation'
- $department|;
-
- if ($form->{"$form->{vc}_id"}) {
- $query .= qq| AND o.$form->{vc}_id = $form->{"$form->{vc}_id"}|;
- } else {
- if ($form->{ $form->{vc} }) {
- $query .= " AND lower(ct.name) LIKE '$name'";
- }
+ my $vc = $form->{vc} eq "customer" ? "customer" : "vendor";
+
+ $query =
+ qq|SELECT o.id, o.ordnumber, o.transdate, o.reqdate, | .
+ qq| o.amount, ct.name, o.netamount, o.${vc}_id, o.globalproject_id, | .
+ qq| o.closed, o.delivered, o.quonumber, o.shippingpoint, o.shipvia, | .
+ qq| o.transaction_description, | .
+ qq| o.marge_total, o.marge_percent, | .
+ qq| ex.$rate AS exchangerate, | .
+ qq| pr.projectnumber AS globalprojectnumber, | .
+ qq| e.name AS employee, s.name AS salesman, | .
+ qq| ct.${vc}number AS vcnumber, ct.country, ct.ustid | .
+ $periodic_invoices_columns .
+ qq|FROM oe o | .
+ qq|JOIN $vc ct ON (o.${vc}_id = ct.id) | .
+ qq|LEFT JOIN employee e ON (o.employee_id = e.id) | .
+ qq|LEFT JOIN employee s ON (o.salesman_id = s.id) | .
+ qq|LEFT JOIN exchangerate ex ON (ex.curr = o.curr | .
+ qq| AND ex.transdate = o.transdate) | .
+ qq|LEFT JOIN project pr ON (o.globalproject_id = pr.id) | .
+ qq|$periodic_invoices_joins | .
+ qq|WHERE (o.quotation = ?) |;
+ push(@values, $quotation);
+
+ my ($null, $split_department_id) = split /--/, $form->{department};
+ my $department_id = $form->{department_id} || $split_department_id;
+ if ($department_id) {
+ $query .= qq| AND o.department_id = ?|;
+ push(@values, $department_id);
+ }
+
+ if ($form->{"project_id"}) {
+ $query .=
+ qq|AND ((globalproject_id = ?) OR EXISTS | .
+ qq| (SELECT * FROM orderitems oi | .
+ qq| WHERE oi.project_id = ? AND oi.trans_id = o.id))|;
+ push(@values, conv_i($form->{"project_id"}), conv_i($form->{"project_id"}));
+ }
+
+ if ($form->{"projectnumber"}) {
+ $query .= <<SQL;
+ AND (pr.projectnumber ILIKE ?) OR EXISTS (
+ SELECT * FROM orderitems oi
+ LEFT JOIN project proi ON proi.id = oi.project_id
+ WHERE proi.projectnumber ILIKE ? AND oi.trans_id = o.id
+ )
+SQL
+ push @values, "%" . $form->{"projectnumber"} . "%", "%" . $form->{"projectnumber"} . "%" ;
+ }
+
+ if ($form->{"${vc}_id"}) {
+ $query .= " AND o.${vc}_id = ?";
+ push(@values, $form->{"${vc}_id"});
+
+ } elsif ($form->{$vc}) {
+ $query .= " AND ct.name ILIKE ?";
+ push(@values, '%' . $form->{$vc} . '%');
+ }
+
+ if (!$main::auth->assert('sales_all_edit', 1)) {
+ $query .= " AND o.employee_id = (select id from employee where login= ?)";
+ push @values, $form->{login};
+ }
+ if ($form->{employee_id}) {
+ $query .= " AND o.employee_id = ?";
+ push @values, conv_i($form->{employee_id});
+ }
+
+ if ($form->{salesman_id}) {
+ $query .= " AND o.salesman_id = ?";
+ push @values, conv_i($form->{salesman_id});