Helfermethoden in Belegobjekten.
[kivitendo-erp.git] / SL / CT.pm
index b36cfa3..eece19e 100644 (file)
--- a/SL/CT.pm
+++ b/SL/CT.pm
@@ -69,6 +69,9 @@ sub get_tuple {
 
   map { $form->{$_} = $ref->{$_} } keys %$ref;
 
+  # remove any trailing whitespace
+  $form->{curr} =~ s/\s*$//;
+
   $sth->finish;
   if ( $form->{salesman_id} ) {
     my $query =
@@ -236,7 +239,7 @@ sub save_customer {
   $form->{klass} = 0 unless ($form->{klass});
 
   # connect to database
-  my $dbh = $form->dbconnect_noauto($myconfig);
+  my $dbh = $form->get_standard_dbh;
 
   map( {
     $form->{"cp_${_}"} = $form->{"selected_cp_${_}"}
@@ -315,7 +318,8 @@ sub save_customer {
     qq|taxzone_id = ?, | .
     qq|user_password = ?, | .
     qq|c_vendor_id = ?, | .
-    qq|klass = ? | .
+    qq|klass = ?, | .
+    qq|curr = ? | .
     qq|WHERE id = ?|;
   my @values = (
     $form->{customernumber},
@@ -357,6 +361,7 @@ sub save_customer {
     $form->{user_password},
     $form->{c_vendor_id},
     conv_i($form->{klass}),
+    substr($form->{currency}, 0, 3),
     $form->{id}
     );
   do_query( $form, $dbh, $query, @values );
@@ -445,7 +450,6 @@ sub save_customer {
                               'always_valid' => 1);
 
   my $rc = $dbh->commit();
-  $dbh->disconnect();
 
   $main::lxdebug->leave_sub();
   return $rc;
@@ -458,7 +462,7 @@ sub save_vendor {
 
   $form->{taxzone_id} *= 1;
   # connect to database
-  my $dbh = $form->dbconnect_noauto($myconfig);
+  my $dbh = $form->get_standard_dbh;
 
   map( {
     $form->{"cp_${_}"} = $form->{"selected_cp_${_}"}
@@ -525,7 +529,8 @@ sub save_vendor {
     qq|  language_id = ?, | .
     qq|  username = ?, | .
     qq|  user_password = ?, | .
-    qq|  v_customer_id = ? | .
+    qq|  v_customer_id = ?, | .
+    qq|  curr = ? | .
     qq|WHERE id = ?|;
   my @values = (
     $form->{vendornumber},
@@ -565,6 +570,7 @@ sub save_vendor {
     $form->{username},
     $form->{user_password},
     $form->{v_customer_id},
+    substr($form->{currency}, 0, 3),
     $form->{id}
     );
   do_query($form, $dbh, $query, @values);
@@ -653,7 +659,6 @@ sub save_vendor {
                               'always_valid' => 1);
 
   my $rc = $dbh->commit();
-  $dbh->disconnect();
 
   $main::lxdebug->leave_sub();
   return $rc;
@@ -698,7 +703,7 @@ sub search {
   $form->{sort} = $sortorder;
   my $sortdir   = !defined $form->{sortdir} ? 'ASC' : $form->{sortdir} ? 'ASC' : 'DESC';
 
-  if ($sortorder ne 'id' && 1 >= scalar grep { $form->{$_} } qw(l_ordnumber l_quonumber l_invnumber)) {
+  if ($sortorder !~ /(business|id)/ && 1 >= scalar grep { $form->{$_} } qw(l_ordnumber l_quonumber l_invnumber )) {
     $sortorder  = "lower($sortorder) ${sortdir}";
   } else {
     $sortorder .= " ${sortdir}";
@@ -764,6 +769,13 @@ sub search {
     push(@values, conv_i($form->{business_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)) {
+    $where .= qq| AND ct.salesman_id = (select id from employee where login= ?)|;
+    push(@values, $form->{login});
+  }
+
   my ($cvar_where, @cvar_values) = CVar->build_filter_query('module'         => 'CT',
                                                             'trans_id_field' => 'ct.id',
                                                             'filter'         => $form);
@@ -856,6 +868,9 @@ sub get_contact {
   $main::lxdebug->enter_sub();
 
   my ( $self, $myconfig, $form ) = @_;
+
+  die 'Missing argument: cp_id' unless $::form->{cp_id};
+
   my $dbh   = $form->dbconnect($myconfig);
   my $query =
     qq|SELECT * FROM contacts c | .
@@ -1035,6 +1050,7 @@ sub _delete_selected_notes {
   $main::lxdebug->leave_sub();
 }
 
+# TODO: remove in 2.7.0 stable
 sub delete_shipto {
   $main::lxdebug->enter_sub();
 
@@ -1045,7 +1061,25 @@ sub delete_shipto {
   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);
+  do_query($form, $dbh, qq|UPDATE shipto SET trans_id = NULL WHERE shipto_id = ?|, $shipto_id);
+
+  $dbh->commit();
+
+  $main::lxdebug->leave_sub();
+}
+
+# TODO: remove in 2.7.0 stable
+sub delete_contact {
+  $main::lxdebug->enter_sub();
+
+  my $self      = shift;
+  my $cp_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 = ?|, $cp_id);
 
   $dbh->commit();