Merge branch 'erzeugnisnummern'
[kivitendo-erp.git] / SL / AM.pm
index 6862eb7..502ebd9 100644 (file)
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -213,11 +213,8 @@ sub save_account {
       qw(AR_amount AR_tax AR_paid AP_amount AP_tax AP_paid IC_sale IC_cogs IC_taxpart IC_income IC_expense IC_taxservice);
   }
 
-  if ($form->{AR_include_in_dropdown}) {
-    $form->{$form->{AR_include_in_dropdown}} = $form->{AR_include_in_dropdown};
-  }
-  if ($form->{AP_include_in_dropdown}) {
-    $form->{$form->{AP_include_in_dropdown}} = $form->{AP_include_in_dropdown};
+  for (qw(AR_include_in_dropdown AP_include_in_dropdown)) {
+    $form->{$form->{$_}} = $form->{$_} if $form->{$_};
   }
 
   $form->{link} = "";
@@ -244,11 +241,18 @@ sub save_account {
   }
 
   $query = '
-    SELECT
-    accno
+    SELECT accno
     FROM chart
     WHERE accno = ?';
-  my ($accno) = selectrow_query($form, $dbh, $query, $form->{accno});
+
+  my @values = ($form->{accno});
+
+  if ( $form->{id} ) {
+    $query .= ' AND NOT id = ?';
+    push(@values, $form->{id});
+  }
+
+  my ($accno) = selectrow_query($form, $dbh, $query, @values);
 
   if ($accno) {
     $form->error($::locale->text('Account number not unique!'));
@@ -258,11 +262,11 @@ sub save_account {
   if (!$form->{id} || $form->{id} eq "") {
     $query = qq|SELECT nextval('id')|;
     ($form->{"id"}) = selectrow_query($form, $dbh, $query);
-    $query = qq|INSERT INTO chart (id, accno) VALUES (?, ?)|;
-    do_query($form, $dbh, $query, $form->{"id"}, $form->{"accno"});
+    $query = qq|INSERT INTO chart (id, accno, link) VALUES (?, ?, ?)|;
+    do_query($form, $dbh, $query, $form->{"id"}, $form->{"accno"}, '');
   }
 
-  my @values;
+  @values = ();
 
 
   if ($form->{id}) {
@@ -468,11 +472,9 @@ sub delete_account {
     do_query($form, $dbh, $query, $form->{id});
   }
 
-  foreach my $table (qw(partstax customertax vendortax tax)) {
-    $query = qq|DELETE FROM $table
-                WHERE chart_id = ?|;
-    do_query($form, $dbh, $query, $form->{id});
-  }
+  $query = qq|DELETE FROM tax
+              WHERE chart_id = ?|;
+  do_query($form, $dbh, $query, $form->{id});
 
   # delete chart of account record
   $query = qq|DELETE FROM chart
@@ -1082,6 +1084,7 @@ sub save_defaults {
         vendornumber       = ?,
         articlenumber      = ?,
         servicenumber      = ?,
+        assemblynumber     = ?,
         sdonumber          = ?,
         pdonumber          = ?,
         curr               = ?,
@@ -1095,6 +1098,7 @@ sub save_defaults {
                 $form->{sqnumber},        $form->{rfqnumber},
                 $form->{customernumber},  $form->{vendornumber},
                 $form->{articlenumber},   $form->{servicenumber},
+                $form->{assemblynumber},
                 $form->{sdonumber},       $form->{pdonumber},
                 $currency,
                 $form->{businessnumber},  $form->{weightunit},
@@ -1772,7 +1776,9 @@ sub get_tax {
                    taxkey,
                    taxdescription,
                    round(rate * 100, 2) AS rate,
-                   chart_id
+                   chart_id,
+                   (id IN (SELECT tax_id
+                           FROM acc_trans)) AS tax_already_used
                  FROM tax
                  WHERE id = ? |;