Verknüpfungen zwischen Angeboten, Aufträgen, Lieferscheinen, Rechnungen in einer...
[kivitendo-erp.git] / SL / CT.pm
index e25e41c..0468c37 100644 (file)
--- a/SL/CT.pm
+++ b/SL/CT.pm
@@ -160,7 +160,7 @@ sub populate_drop_down_boxes {
   $form->{SHIPTO} = selectall_hashref_query($form, $dbh, $query, $form->{id});
 
   # get contacts
-  $query  = qq|SELECT cp_id, cp_name, cp_givenname FROM contacts WHERE cp_cv_id = ?|;
+  $query  = qq|SELECT cp_id, cp_name, cp_givenname FROM contacts WHERE cp_cv_id = ? ORDER BY cp_name|;
   $form->{CONTACTS} = selectall_hashref_query($form, $dbh, $query, $form->{id});
 
   # get languages
@@ -470,11 +470,7 @@ sub save_vendor {
 
   my $query;
 
-  if ( $form->{id} ) {
-    $query = qq|DELETE FROM shipto WHERE (trans_id = ?) AND (module = 'CT')|;
-    do_query($form, $dbh, $query, $form->{id});
-
-  } else {
+  if (!$form->{id}) {
     $query = qq|SELECT nextval('id')|;
     ($form->{id}) = selectrow_query($form, $dbh, $query);
 
@@ -684,13 +680,18 @@ sub search {
   my @values;
 
   my %allowed_sort_columns =
-    map({ $_, 1 } qw(id customernumber name address contact phone fax email
+    map({ $_, 1 } qw(id customernumber vendornumber name address contact phone fax email
                      taxnumber sic_code business invnumber ordnumber quonumber));
   $sortorder =
     $form->{sort} && $allowed_sort_columns{$form->{sort}} ?
     $form->{sort} : "name";
   $form->{sort} = $sortorder;
-  $sortorder = "country,city,street" if ($sortorder eq "address");
+
+  if ($sortorder eq "address") {
+    $sortorder = "lower(country), lower(city), lower(street)";
+  } elsif ($sortorder ne 'id') {
+    $sortorder = "lower($sortorder)";
+  }
 
   if ($form->{"${cv}number"}) {
     $where .= " AND ct.${cv}number ILIKE ?";
@@ -827,6 +828,14 @@ sub get_contact {
 
   map { $form->{$_} = $ref->{$_} } keys %$ref;
 
+  $query = qq|SELECT COUNT(cp_id) AS used FROM (
+    SELECT cp_id FROM oe UNION
+    SELECT cp_id FROM ar UNION
+    SELECT cp_id FROM ap UNION
+    SELECT cp_id FROM delivery_orders
+  ) AS cpid WHERE cp_id = ? OR ? = 0|;
+  ($form->{cp_used}) = selectfirst_array_query($form, $dbh, $query, ($form->{cp_id})x2);
+
   $sth->finish;
   $dbh->disconnect;
 
@@ -845,6 +854,13 @@ sub get_shipto {
 
   map { $form->{$_} = $ref->{$_} } keys %$ref;
 
+  $query = qq|SELECT COUNT(shipto_id) AS used FROM (
+    SELECT shipto_id FROM oe UNION
+    SELECT shipto_id FROM ar UNION
+    SELECT shipto_id FROM delivery_orders
+  ) AS stid WHERE shipto_id = ? OR ? = 0|;
+  ($form->{shiptoused}) = selectfirst_array_query($form, $dbh, $query, ($form->{shipto_id})x2);
+
   $sth->finish;
   $dbh->disconnect;
 
@@ -979,4 +995,38 @@ sub _delete_selected_notes {
   $main::lxdebug->leave_sub();
 }
 
+sub delete_shipto {
+  $main::lxdebug->enter_sub();
+
+  my $self      = shift;
+  my $shipto_id = shift;
+
+  my $form      = $main::form;
+  my %myconfig  = %main::myconfig;
+  my $dbh       = $form->get_standard_dbh(\%myconfig);
+
+  do_query($form, $dbh, qq|UPDATE shipto SET trans_id = NULL WHERE shipto_id = ?|, $shipto_id);
+
+  $dbh->commit();
+
+  $main::lxdebug->leave_sub();
+}
+
+sub delete_shipto {
+  $main::lxdebug->enter_sub();
+
+  my $self      = shift;
+  my $shipto_id = shift;
+
+  my $form      = $main::form;
+  my %myconfig  = %main::myconfig;
+  my $dbh       = $form->get_standard_dbh(\%myconfig);
+
+  do_query($form, $dbh, qq|UPDATE contacts SET cp_cv_id = NULL WHERE cp_id = ?|, $shipto_id);
+
+  $dbh->commit();
+
+  $main::lxdebug->leave_sub();
+}
+
 1;