Nachtag zu r1125, neue format_amount gab keine negativen Zahlen zurueck
[kivitendo-erp.git] / SL / CT.pm
index a96420c..ab5d70e 100644 (file)
--- a/SL/CT.pm
+++ b/SL/CT.pm
 
 package CT;
 
-
 sub get_tuple {
   $main::lxdebug->enter_sub();
 
   my ($self, $myconfig, $form) = @_;
 
-  my $dbh = $form->dbconnect($myconfig);
+  my $dbh   = $form->dbconnect($myconfig);
   my $query = qq|SELECT ct.*, b.id AS business, s.*, cp.*
                  FROM $form->{db} ct
                 LEFT JOIN business b on ct.business_id = b.id
@@ -52,9 +51,9 @@ sub get_tuple {
                 WHERE ct.id = $form->{id}  order by cp.cp_id limit 1|;
   my $sth = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);
-  
+
   my $ref = $sth->fetchrow_hashref(NAME_lc);
-  
+
   map { $form->{$_} = $ref->{$_} } keys %$ref;
 
   $sth->finish;
@@ -64,12 +63,12 @@ sub get_tuple {
                   WHERE ct.id = $form->{salesman_id}|;
     my $sth = $dbh->prepare($query);
     $sth->execute || $form->dberror($query);
-    
+
     my ($ref) = $sth->fetchrow_array();
-    
+
     $form->{salesman} = $ref;
-  
-    $sth->finish;  
+
+    $sth->finish;
   }
 
   # check if it is orphaned
@@ -85,12 +84,11 @@ sub get_tuple {
              WHERE ct.id = $form->{id}|;
   $sth = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);
-  
+
   unless ($sth->fetchrow_array) {
     $form->{status} = "orphaned";
   }
   $sth->finish;
 
   # get tax labels
   $query = qq|SELECT c.accno, c.description
@@ -103,7 +101,7 @@ sub get_tuple {
 
   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
     $form->{taxaccounts} .= "$ref->{accno} ";
-    $form->{tax}{$ref->{accno}}{description} = $ref->{description};
+    $form->{tax}{ $ref->{accno} }{description} = $ref->{description};
   }
   $sth->finish;
   chop $form->{taxaccounts};
@@ -117,7 +115,7 @@ sub get_tuple {
   $sth->execute || $form->dberror($query);
 
   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
-    $form->{tax}{$ref->{accno}}{taxable} = 1;
+    $form->{tax}{ $ref->{accno} }{taxable} = 1;
   }
   $sth->finish;
 
@@ -127,12 +125,12 @@ sub get_tuple {
              ORDER BY 1|;
   $sth = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);
-  
+
   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
     push @{ $form->{all_business} }, $ref;
   }
   $sth->finish;
-  
+
   $dbh->disconnect;
 
   $main::lxdebug->leave_sub();
@@ -143,33 +141,35 @@ sub query_titles_and_greetings {
   $main::lxdebug->enter_sub();
 
   my ($self, $myconfig, $form) = @_;
-  my (%tmp, $ref);
+  my (%tmp,  $ref);
 
   my $dbh = $form->dbconnect($myconfig);
 
-  $query = "SELECT DISTINCT(c.cp_greeting) FROM contacts c WHERE c.cp_greeting LIKE '%'";
+  $query =
+    "SELECT DISTINCT(c.cp_greeting) FROM contacts c WHERE c.cp_greeting LIKE '%'";
   $sth = $dbh->prepare($query);
   $sth->execute() || $form->dberror($query);
   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
     next unless ($ref->{cp_greeting} =~ /[a-zA-Z]/);
-    $tmp{$ref->{cp_greeting}} = 1;
+    $tmp{ $ref->{cp_greeting} } = 1;
   }
   $sth->finish();
 
-  @{$form->{GREETINGS}} = sort(keys(%tmp));
+  @{ $form->{GREETINGS} } = sort(keys(%tmp));
 
   %tmp = ();
 
-  $query = "SELECT DISTINCT(c.cp_title) FROM contacts c WHERE c.cp_title LIKE '%'";
+  $query =
+    "SELECT DISTINCT(c.cp_title) FROM contacts c WHERE c.cp_title LIKE '%'";
   $sth = $dbh->prepare($query);
   $sth->execute() || $form->dberror($query);
   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
     next unless ($ref->{cp_title} =~ /[a-zA-Z]/);
-    $tmp{$ref->{cp_title}} = 1;
+    $tmp{ $ref->{cp_title} } = 1;
   }
   $sth->finish();
 
-  @{$form->{TITLES}} = sort(keys(%tmp));
+  @{ $form->{TITLES} } = sort(keys(%tmp));
 
   $dbh->disconnect();
   $main::lxdebug->leave_sub();
@@ -195,7 +195,7 @@ sub taxaccounts {
   my $ref = ();
   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
     $form->{taxaccounts} .= "$ref->{accno} ";
-    $form->{tax}{$ref->{accno}}{description} = $ref->{description};
+    $form->{tax}{ $ref->{accno} }{description} = $ref->{description};
   }
   $sth->finish;
   chop $form->{taxaccounts};
@@ -205,62 +205,70 @@ sub taxaccounts {
               FROM business|;
   $sth = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);
-  
+
   while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
     push @{ $form->{all_business} }, $ref;
   }
   $sth->finish;
-  
+
   $dbh->disconnect;
 
   $main::lxdebug->leave_sub();
 }
 
-
 sub save_customer {
   $main::lxdebug->enter_sub();
 
-  
   my ($self, $myconfig, $form) = @_;
+
+  # set pricegroup to default
+  if ($form->{klass}) { }
+  else { $form->{klass} = 0; }
+
   # connect to database
   my $dbh = $form->dbconnect($myconfig);
 ##LINET
-  map({ $form->{"cp_${_}"} = $form->{"selected_cp_${_}"} if ($form->{"selected_cp_${_}"}); } qw(title greeting));
+  map({
+      $form->{"cp_${_}"} = $form->{"selected_cp_${_}"}
+        if ($form->{"selected_cp_${_}"});
+  } qw(title greeting));
+
+  #
   # escape '
-  map { $form->{$_} =~ s/\'/\'\'/g } qw(customernumber name street zipcode city country homepage contact notes cp_title cp_greeting language);
+  map { $form->{$_} =~ s/\'/\'\'/g }
+    qw(customernumber name street zipcode city country homepage contact notes cp_title cp_greeting language pricegroup);
 ##/LINET
   # assign value discount, terms, creditlimit
   $form->{discount} = $form->parse_amount($myconfig, $form->{discount});
   $form->{discount} /= 100;
-  $form->{terms} *= 1;
+  $form->{terms}       *= 1;
   $form->{taxincluded} *= 1;
-  $form->{obsolete} *= 1;
-  $form->{business} *= 1;
+  $form->{obsolete}    *= 1;
+  $form->{business}    *= 1;
   $form->{salesman_id} *= 1;
   $form->{creditlimit} = $form->parse_amount($myconfig, $form->{creditlimit});
-  
+
   my ($query, $sth);
 
   if ($form->{id}) {
     $query = qq|DELETE FROM customertax
                 WHERE customer_id = $form->{id}|;
     $dbh->do($query) || $form->dberror($query);
-  
+
     $query = qq|DELETE FROM shipto
                 WHERE trans_id = $form->{id}|;
     $dbh->do($query) || $form->dberror($query);
-    } else {
-    my $uid = rand().time;
+  } else {
+    my $uid = rand() . time;
 
     $uid .= $form->{login};
 
-    $uid = substr($uid,2,75);
+    $uid = substr($uid, 2, 75);
 
     $query = qq|INSERT INTO customer (name)
                 VALUES ('$uid')|;
     $dbh->do($query) || $form->dberror($query);
-    
+
     $query = qq|SELECT c.id FROM customer c
                 WHERE c.name = '$uid'|;
     $sth = $dbh->prepare($query);
@@ -269,15 +277,16 @@ sub save_customer {
     ($form->{id}) = $sth->fetchrow_array;
     $sth->finish;
     if (!$form->{customernumber} && $form->{business}) {
-      $form->{customernumber} = $form->update_business($myconfig, $form->{business});
-    }    
+      $form->{customernumber} =
+        $form->update_business($myconfig, $form->{business});
+    }
     if (!$form->{customernumber}) {
-      $form->{customernumber} = $form->update_defaults($myconfig, "customernumber");
+      $form->{customernumber} =
+        $form->update_defaults($myconfig, "customernumber");
     }
 
   }
 
-  
   $query = qq|UPDATE customer SET
               customernumber = '$form->{customernumber}',
              name = '$form->{name}',
@@ -310,13 +319,14 @@ sub save_customer {
               ustid = '$form->{ustid}',
               username = '$form->{username}',
               salesman_id = '$form->{salesman_id}',
-              user_password = '$form->{user_password}',
-              c_vendor_id = '$form->{c_vendor_id}'
+              user_password = | . $dbh->quote($form->{user_password}) . qq|,
+              c_vendor_id = '$form->{c_vendor_id}',
+              klass = '$form->{klass}'
              WHERE id = $form->{id}|;
   $dbh->do($query) || $form->dberror($query);
-  
+
   if ($form->{cp_id}) {
-       $query = qq|UPDATE contacts SET
+    $query = qq|UPDATE contacts SET
                cp_greeting = '$form->{cp_greeting}',
                cp_title = '$form->{cp_title}',
                cp_givenname = '$form->{cp_givenname}',
@@ -326,7 +336,8 @@ sub save_customer {
                cp_phone2 = '$form->{cp_phone2}'
                WHERE cp_id = $form->{cp_id}|;
   } elsif ($form->{cp_name} || $form->{cp_givenname}) {
-  $query = qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2)
+    $query =
+      qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2)
                  VALUES ($form->{id}, '$form->{cp_greeting}','$form->{cp_title}','$form->{cp_givenname}','$form->{cp_name}','$form->{cp_email}','$form->{cp_phone1}','$form->{cp_phone2}')|;
   }
   $dbh->do($query) || $form->dberror($query);
@@ -341,16 +352,16 @@ sub save_customer {
       $dbh->do($query) || $form->dberror($query);
     }
   }
-  
+
   # add shipto
   $form->add_shipto($dbh, $form->{id});
 
-  $dbh->disconnect;
+  $rc = $dbh->disconnect;
 
   $main::lxdebug->leave_sub();
+  return $rc;
 }
 
-
 sub save_vendor {
   $main::lxdebug->enter_sub();
 
@@ -359,20 +370,25 @@ sub save_vendor {
   # connect to database
   my $dbh = $form->dbconnect($myconfig);
 ##LINET
-  map({ $form->{"cp_${_}"} = $form->{"selected_cp_${_}"} if ($form->{"selected_cp_${_}"}); } qw(title greeting));
+  map({
+      $form->{"cp_${_}"} = $form->{"selected_cp_${_}"}
+        if ($form->{"selected_cp_${_}"});
+  } qw(title greeting));
+
   # escape '
-  map { $form->{$_} =~ s/\'/\'\'/g } qw(vendornumber name street zipcode city country homepage contact notes cp_title cp_greeting language);
+  map { $form->{$_} =~ s/\'/\'\'/g }
+    qw(vendornumber name street zipcode city country homepage contact notes cp_title cp_greeting language);
 ##/LINET
   $form->{discount} = $form->parse_amount($myconfig, $form->{discount});
   $form->{discount} /= 100;
-  $form->{terms} *= 1;
+  $form->{terms}       *= 1;
   $form->{taxincluded} *= 1;
-  $form->{obsolete} *= 1;
-  $form->{business} *= 1;
+  $form->{obsolete}    *= 1;
+  $form->{business}    *= 1;
   $form->{creditlimit} = $form->parse_amount($myconfig, $form->{creditlimit});
+
   my $query;
-  
+
   if ($form->{id}) {
     $query = qq|DELETE FROM vendortax
                 WHERE vendor_id = $form->{id}|;
@@ -380,15 +396,17 @@ sub save_vendor {
 
     $query = qq|DELETE FROM shipto
                 WHERE trans_id = $form->{id}|;
-    $dbh->do($query) || $form->dberror($query);  
-    } else {
+    $dbh->do($query) || $form->dberror($query);
+  } else {
     my $uid = time;
     $uid .= $form->{login};
-    
+    my $uid = rand() . time;
+    $uid .= $form->{login};
+    $uid = substr($uid, 2, 75);
     $query = qq|INSERT INTO vendor (name)
                 VALUES ('$uid')|;
     $dbh->do($query) || $form->dberror($query);
-   
+
     $query = qq|SELECT v.id FROM vendor v
                 WHERE v.name = '$uid'|;
     $sth = $dbh->prepare($query);
@@ -397,11 +415,12 @@ sub save_vendor {
     ($form->{id}) = $sth->fetchrow_array;
     $sth->finish;
     if (!$form->{vendornumber}) {
-      $form->{vendornumber} = $form->update_defaults($myconfig, "vendornumber");
+      $form->{vendornumber} =
+        $form->update_defaults($myconfig, "vendornumber");
     }
 
   }
-   
+
 ##LINET
   $query = qq|UPDATE vendor SET
               vendornumber = '$form->{vendornumber}',
@@ -441,7 +460,7 @@ sub save_vendor {
   $dbh->do($query) || $form->dberror($query);
 
   if ($form->{cp_id}) {
-       $query = qq|UPDATE contacts SET
+    $query = qq|UPDATE contacts SET
                cp_greeting = '$form->{cp_greeting}',
                cp_title = '$form->{cp_title}',
                cp_givenname = '$form->{cp_givenname}',
@@ -451,11 +470,12 @@ sub save_vendor {
                cp_phone2 = '$form->{cp_phone2}'
                WHERE cp_id = $form->{cp_id}|;
   } elsif ($form->{cp_name} || $form->{cp_givenname}) {
-  $query = qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2)
+    $query =
+      qq|INSERT INTO contacts ( cp_cv_id, cp_greeting, cp_title, cp_givenname, cp_name, cp_email, cp_phone1, cp_phone2)
                  VALUES ($form->{id}, '$form->{cp_greeting}','$form->{cp_title}','$form->{cp_givenname}','$form->{cp_name}','$form->{cp_email}','$form->{cp_phone1}','$form->{cp_phone2}')|;
   }
   $dbh->do($query) || $form->dberror($query);
-  
+
   # save taxes
   foreach $item (split / /, $form->{taxaccounts}) {
     if ($form->{"tax_$item"}) {
@@ -470,13 +490,12 @@ sub save_vendor {
   # add shipto
   $form->add_shipto($dbh, $form->{id});
 
-  $dbh->disconnect;
+  $rc = $dbh->disconnect;
 
   $main::lxdebug->leave_sub();
+  return $rc;
 }
 
-
-
 sub delete {
   $main::lxdebug->enter_sub();
 
@@ -495,7 +514,6 @@ sub delete {
   $main::lxdebug->leave_sub();
 }
 
-
 sub search {
   $main::lxdebug->enter_sub();
 
@@ -506,7 +524,7 @@ sub search {
 
   my $where = "1 = 1";
   $form->{sort} = "name" unless ($form->{sort});
-  
+
   if ($form->{"$form->{db}number"}) {
     my $companynumber = $form->like(lc $form->{"$form->{db}number"});
     $where .= " AND lower(ct.$form->{db}number) LIKE '$companynumber'";
@@ -553,9 +571,9 @@ sub search {
     $query = "";
 
     if ($form->{l_invnumber}) {
-      $ar = ($form->{db} eq 'customer') ? 'ar' : 'ap';
-      $module = ($ar eq 'ar') ? 'is' : 'ir';
-    
+      $ar     = ($form->{db} eq 'customer') ? 'ar' : 'ap';
+      $module = ($ar         eq 'ar')       ? 'is' : 'ir';
+
       $query = qq|SELECT ct.*, b.description AS business,
                   a.invnumber, a.ordnumber, a.quonumber, a.id AS invid,
                  '$module' AS module, 'invoice' AS formtype,
@@ -565,12 +583,12 @@ sub search {
                LEFT JOIN business b ON (ct.business_id = b.id)
                  WHERE $where
                  AND a.invoice = '1'|;
-  
+
       $union = qq|
               UNION|;
-      
+
     }
-    
+
     if ($form->{l_ordnumber}) {
       $query .= qq|$union
                   SELECT ct.*, b.description AS business,
@@ -582,7 +600,7 @@ sub search {
                LEFT JOIN business b ON (ct.business_id = b.id)
                  WHERE $where
                  AND o.quotation = '0'|;
-  
+
       $union = qq|
               UNION|;
     }
@@ -620,6 +638,5 @@ sub search {
   $main::lxdebug->leave_sub();
 }
 
-
 1;