Pflichtenheft: durchsuchbare CVars als Spalten in Bericht anzeigen können
[kivitendo-erp.git] / SL / CT.pm
index b7ae9a5..ab931c0 100644 (file)
--- a/SL/CT.pm
+++ b/SL/CT.pm
@@ -68,7 +68,7 @@ sub search {
       "email"              => "ct.email",
       "street"             => "ct.street",
       "taxnumber"          => "ct.taxnumber",
-      "business"           => "ct.business",
+      "business"           => "b.description",
       "invnumber"          => "ct.invnumber",
       "ordnumber"          => "ct.ordnumber",
       "quonumber"          => "ct.quonumber",
@@ -76,7 +76,8 @@ sub search {
       "city"               => "ct.city",
       "country"            => "ct.country",
       "discount"           => "ct.discount",
-      "salesman"           => "e.name"
+      "salesman"           => "e.name",
+      "payment"            => "pt.description"
     );
 
   $form->{sort} ||= "name";
@@ -170,6 +171,11 @@ sub search {
     push(@values, conv_i($form->{business_id}));
   }
 
+  if ($form->{salesman_id}) {
+    $where .= qq| AND (ct.salesman_id = ?)|;
+    push(@values, conv_i($form->{salesman_id}));
+  }
+
   # Nur Kunden finden, bei denen ich selber der Verkäufer bin
   # Gilt nicht für Lieferanten
   if ($cv eq 'customer' &&   !$main::auth->assert('customer_vendor_all_edit', 1)) {
@@ -197,11 +203,13 @@ sub search {
   }
 
   my $query =
-    qq|SELECT ct.*, b.description AS business, e.name as salesman | .
+    qq|SELECT ct.*, b.description AS business, e.name as salesman, |.
+    qq|  pt.description as payment | .
     (qq|, NULL AS invnumber, NULL AS ordnumber, NULL AS quonumber, NULL AS invid, NULL AS module, NULL AS formtype, NULL AS closed | x!! $join_records) .
     qq|FROM $cv ct | .
     qq|LEFT JOIN business b ON (ct.business_id = b.id) | .
     qq|LEFT JOIN employee e ON (ct.salesman_id = e.id) | .
+    qq|LEFT JOIN payment_terms pt ON (ct.payment_id = pt.id) | .
     qq|WHERE $where|;
 
   my @saved_values = @values;
@@ -215,7 +223,8 @@ sub search {
       push(@values, @saved_values);
       $query .=
         qq| UNION | .
-        qq|SELECT ct.*, b.description AS business, e.name as salesman, | .
+        qq|SELECT ct.*, b.description AS business, e.name as salesman, |.
+        qq|  pt.description as payment, | .
         qq|  a.invnumber, a.ordnumber, a.quonumber, a.id AS invid, | .
         qq|  '$module' AS module, 'invoice' AS formtype, | .
         qq|  (a.amount = a.paid) AS closed | .
@@ -223,6 +232,7 @@ sub search {
         qq|JOIN $ar a ON (a.${cv}_id = ct.id) | .
         qq|LEFT JOIN business b ON (ct.business_id = b.id) | .
         qq|LEFT JOIN employee e ON (ct.salesman_id = e.id) | .
+        qq|LEFT JOIN payment_terms pt ON (ct.payment_id = pt.id) | .
         qq|WHERE $where AND (a.invoice = '1')|;
     }
 
@@ -230,13 +240,15 @@ sub search {
       push(@values, @saved_values);
       $query .=
         qq| UNION | .
-        qq|SELECT ct.*, b.description AS business, e.name as salesman, | .
+        qq|SELECT ct.*, b.description AS business, e.name as salesman, |.
+        qq|  pt.description as payment, | .
         qq|  ' ' AS invnumber, o.ordnumber, o.quonumber, o.id AS invid, | .
         qq|  'oe' AS module, 'order' AS formtype, o.closed | .
         qq|FROM $cv ct | .
         qq|JOIN oe o ON (o.${cv}_id = ct.id) | .
         qq|LEFT JOIN business b ON (ct.business_id = b.id) | .
         qq|LEFT JOIN employee e ON (ct.salesman_id = e.id) | .
+        qq|LEFT JOIN payment_terms pt ON (ct.payment_id = pt.id) | .
         qq|WHERE $where AND (o.quotation = '0')|;
     }
 
@@ -245,12 +257,14 @@ sub search {
       $query .=
         qq| UNION | .
         qq|SELECT ct.*, b.description AS business, e.name as salesman, | .
+        qq|  pt.description as payment, | .
         qq|  ' ' AS invnumber, o.ordnumber, o.quonumber, o.id AS invid, | .
         qq|  'oe' AS module, 'quotation' AS formtype, o.closed | .
         qq|FROM $cv ct | .
         qq|JOIN oe o ON (o.${cv}_id = ct.id) | .
         qq|LEFT JOIN business b ON (ct.business_id = b.id) | .
         qq|LEFT JOIN employee e ON (ct.salesman_id = e.id) | .
+        qq|LEFT JOIN payment_terms pt ON (ct.payment_id = pt.id) | .
         qq|WHERE $where AND (o.quotation = '1')|;
     }
   }
@@ -308,7 +322,8 @@ sub get_bank_info {
   my $table        = $params{vc} eq 'customer' ? 'customer' : 'vendor';
   my @ids          = ref $params{id} eq 'ARRAY' ? @{ $params{id} } : ($params{id});
   my $placeholders = join ", ", ('?') x scalar @ids;
-  my $query        = qq|SELECT id, name, account_number, bank, bank_code, iban, bic
+  my $c_mandate    = $params{vc} eq 'customer' ? ', mandator_id, mandate_date_of_signature' : '';
+  my $query        = qq|SELECT id, name, account_number, bank, bank_code, iban, bic ${c_mandate}
                         FROM ${table}
                         WHERE id IN (${placeholders})|;