Merge branch 'master' of ssh://git-mbunkus@lx-office.linet-services.de/~/lx-office-erp
[kivitendo-erp.git] / SL / AM.pm
index 3f34e18..6c0ea0b 100644 (file)
--- a/SL/AM.pm
+++ b/SL/AM.pm
@@ -230,6 +230,13 @@ sub save_account {
     $form->{id} = "";
   }
 
+  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"});
+  }
+
   my @values;
 
   if ($form->{id}) {
@@ -262,52 +269,6 @@ sub save_account {
                 $form->{id},
     );
 
-  }
-  elsif ($form->{id} && !$form->{new_chart_valid}) {
-
-    $query = qq|
-                  UPDATE chart
-                  SET new_chart_id = ?,
-                  valid_from = ?
-                  WHERE id = ?
-             |;
-
-    @values = (
-                  conv_i($form->{new_chart_id}),
-                  conv_date($form->{valid_from}),
-                  $form->{id}
-              );
-  }
-  else {
-
-    $query = qq|
-                  INSERT INTO chart (
-                      accno,
-                      description,
-                      charttype,
-                      category,
-                      link,
-                      pos_bwa,
-                      pos_bilanz,
-                      pos_eur,
-                      new_chart_id,
-                      valid_from,
-                      datevautomatik )
-                  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-             |;
-
-    @values = (
-                      $form->{accno},
-                      $form->{description},
-                      $form->{charttype},
-                      $form->{category}, $form->{link},
-                      conv_i($form->{pos_bwa}),
-                      conv_i($form->{pos_bilanz}), conv_i($form->{pos_eur}),
-                      conv_i($form->{new_chart_id}),
-                      conv_date($form->{valid_from}),
-                      ($form->{datevautomatik} eq 'T') ? 'true':'false',
-              );
-
   }
 
   do_query($form, $dbh, $query, @values);
@@ -325,6 +286,9 @@ sub save_account {
     # Loop control
 
     # Check if the account already exists, else cancel
+
+    print(STDERR "Keine Taxkeys weil ID =: $form->{id}\n");
+
     last READTAXKEYS if ( $form->{'id'} == 0);
 
     # check if there is a startdate
@@ -1506,9 +1470,12 @@ sub save_defaults {
         vendornumber       = ?,
         articlenumber      = ?,
         servicenumber      = ?,
+        sdonumber          = ?,
+        pdonumber          = ?,
         yearend            = ?,
         curr               = ?,
-        businessnumber     = ?|;
+        businessnumber     = ?,
+        weightunit         = ?|;
   my @values = ($accnos{inventory_accno}, $accnos{income_accno}, $accnos{expense_accno},
                 $accnos{fxgain_accno},    $accnos{fxloss_accno},
                 $form->{invnumber},       $form->{cnnumber},
@@ -1516,8 +1483,9 @@ sub save_defaults {
                 $form->{sqnumber},        $form->{rfqnumber},
                 $form->{customernumber},  $form->{vendornumber},
                 $form->{articlenumber},   $form->{servicenumber},
+                $form->{sdonumber},       $form->{pdonumber},
                 $form->{yearend},         $currency,
-                $form->{businessnumber});
+                $form->{businessnumber},  $form->{weightunit});
   do_query($form, $dbh, $query, @values);
 
   $dbh->commit();
@@ -1547,7 +1515,7 @@ sub save_preferences {
 
   $form->{businessnumber} =  $businessnumber;
 
-  my $myconfig = new User($form->{login});
+  $myconfig = new User($form->{login});
 
   foreach my $item (keys %$form) {
     $myconfig->{$item} = $form->{$item};
@@ -1607,6 +1575,26 @@ sub save_preferences {
   return $rc;
 }
 
+sub get_defaults {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  my $myconfig = \%main::myconfig;
+  my $form     = $main::form;
+
+  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+  my $defaults = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM defaults|) || {};
+
+  $defaults->{weightunit} ||= 'kg';
+
+  $main::lxdebug->leave_sub();
+
+  return $defaults;
+}
+
 sub defaultaccounts {
   $main::lxdebug->enter_sub();
 
@@ -1620,12 +1608,14 @@ sub defaultaccounts {
   my $sth   = $dbh->prepare($query);
   $sth->execute || $form->dberror($query);
 
-  $form->{defaults}             = $sth->fetchrow_hashref(NAME_lc);
-  $form->{defaults}{IC}         = $form->{defaults}{inventory_accno_id};
-  $form->{defaults}{IC_income}  = $form->{defaults}{income_accno_id};
-  $form->{defaults}{IC_expense} = $form->{defaults}{expense_accno_id};
-  $form->{defaults}{FX_gain}    = $form->{defaults}{fxgain_accno_id};
-  $form->{defaults}{FX_loss}    = $form->{defaults}{fxloss_accno_id};
+  $form->{defaults}               = $sth->fetchrow_hashref(NAME_lc);
+  $form->{defaults}{IC}           = $form->{defaults}{inventory_accno_id};
+  $form->{defaults}{IC_income}    = $form->{defaults}{income_accno_id};
+  $form->{defaults}{IC_expense}   = $form->{defaults}{expense_accno_id};
+  $form->{defaults}{FX_gain}      = $form->{defaults}{fxgain_accno_id};
+  $form->{defaults}{FX_loss}      = $form->{defaults}{fxloss_accno_id};
+
+  $form->{defaults}{weightunit} ||= 'kg';
 
   $sth->finish;
 
@@ -1776,19 +1766,13 @@ sub get_base_unit {
 sub retrieve_units {
   $main::lxdebug->enter_sub();
 
-  my ($self, $myconfig, $form, $type, $prefix) = @_;
+  my ($self, $myconfig, $form, $prefix) = @_;
 
   my $dbh = $form->dbconnect($myconfig);
 
   my $query = "SELECT *, base_unit AS original_base_unit FROM units";
-  my @values;
-  if ($type) {
-    $query .= " WHERE (type = ?)";
-    @values = ($type);
-  }
 
-  my $sth = $dbh->prepare($query);
-  $sth->execute(@values) || $form->dberror($query . " (" . join(", ", @values) . ")");
+  my $sth = prepare_execute_query($form, $dbh, $query);
 
   my $units = {};
   while (my $ref = $sth->fetchrow_hashref()) {
@@ -1951,9 +1935,10 @@ sub convert_unit {
   $main::lxdebug->enter_sub(2);
   ($this, $a, $b, $all_units) = @_;
 
+  $main::lxdebug->leave_sub(2) and return 0 unless $a && $b;
   $main::lxdebug->leave_sub(2) and return 0 unless $all_units->{$a} && $all_units->{$b};
   $main::lxdebug->leave_sub(2) and return 0 unless $all_units->{$a}{base_unit} eq $all_units->{$b}{base_unit};
-  $main::lxdebug->leave_sub(2) and return $all_units->{$a}{factor} / $all_units->{$b}{factor}; 
+  $main::lxdebug->leave_sub(2) and return $all_units->{$a}{factor} / $all_units->{$b}{factor};
 }
 
 sub unit_select_data {
@@ -2037,16 +2022,16 @@ sub sum_with_unit {
 sub add_unit {
   $main::lxdebug->enter_sub();
 
-  my ($self, $myconfig, $form, $name, $base_unit, $factor, $type, $languages) = @_;
+  my ($self, $myconfig, $form, $name, $base_unit, $factor, $languages) = @_;
 
   my $dbh = $form->dbconnect_noauto($myconfig);
 
   my $query = qq|SELECT COALESCE(MAX(sortkey), 0) + 1 FROM units|;
   my ($sortkey) = selectrow_query($form, $dbh, $query);
 
-  $query = "INSERT INTO units (name, base_unit, factor, type, sortkey) " .
-    "VALUES (?, ?, ?, ?, ?)";
-  do_query($form, $dbh, $query, $name, $base_unit, $factor, $type, $sortkey);
+  $query = "INSERT INTO units (name, base_unit, factor, sortkey) " .
+    "VALUES (?, ?, ?, ?)";
+  do_query($form, $dbh, $query, $name, $base_unit, $factor, $sortkey);
 
   if ($languages) {
     $query = "INSERT INTO units_language (unit, language_id, localized, localized_plural) VALUES (?, ?, ?, ?)";
@@ -2067,7 +2052,7 @@ sub add_unit {
 sub save_units {
   $main::lxdebug->enter_sub();
 
-  my ($self, $myconfig, $form, $type, $units, $delete_units) = @_;
+  my ($self, $myconfig, $form, $units, $delete_units) = @_;
 
   my $dbh = $form->dbconnect_noauto($myconfig);
 
@@ -2125,7 +2110,7 @@ sub save_units {
 sub swap_units {
   $main::lxdebug->enter_sub();
 
-  my ($self, $myconfig, $form, $dir, $name_1, $unit_type) = @_;
+  my ($self, $myconfig, $form, $dir, $name_1) = @_;
 
   my $dbh = $form->dbconnect_noauto($myconfig);
 
@@ -2136,9 +2121,9 @@ sub swap_units {
 
   $query =
     qq|SELECT sortkey FROM units | .
-    qq|WHERE sortkey | . ($dir eq "down" ? ">" : "<") . qq| ? AND type = ? | .
+    qq|WHERE sortkey | . ($dir eq "down" ? ">" : "<") . qq| ? | .
     qq|ORDER BY sortkey | . ($dir eq "down" ? "ASC" : "DESC") . qq| LIMIT 1|;
-  my ($sortkey_2) = selectrow_query($form, $dbh, $query, $sortkey_1, $unit_type);
+  my ($sortkey_2) = selectrow_query($form, $dbh, $query, $sortkey_1);
 
   if (defined($sortkey_1)) {
     $query = qq|SELECT name FROM units WHERE sortkey = ${sortkey_2}|;
@@ -2498,9 +2483,8 @@ sub delete_warehouse {
     return 0;
   }
 
-  do_query($form, $dbh, qq|DELETE FROM warehouse_access WHERE warehouse_id = ?|, conv_i($form->{id}));
-  do_query($form, $dbh, qq|DELETE FROM bin              WHERE warehouse_id = ?|, conv_i($form->{id}));
-  do_query($form, $dbh, qq|DELETE FROM warehouse        WHERE id           = ?|, conv_i($form->{id}));
+  do_query($form, $dbh, qq|DELETE FROM bin       WHERE warehouse_id = ?|, conv_i($form->{id}));
+  do_query($form, $dbh, qq|DELETE FROM warehouse WHERE id           = ?|, conv_i($form->{id}));
 
   $dbh->commit();