Debugmeldungen entfernt
[kivitendo-erp.git] / SL / IS.pm
index 205cbcb..97f6fef 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -421,7 +421,7 @@ sub customer_details {
   # get contact id, set it if nessessary
   $form->{cp_id} *= 1;
 
-  my @values;
+  my @values =  (conv_i($form->{customer_id}));
 
   my $where = "";
   if ($form->{cp_id}) {
@@ -438,7 +438,6 @@ sub customer_details {
        WHERE (ct.id = ?) $where
        ORDER BY cp.cp_id
        LIMIT 1|;
-  push(@values, conv_i($form->{customer_id}));
   my $ref = selectfirst_hashref_query($form, $dbh, $query, @values);
 
   # remove id and taxincluded before copy back
@@ -974,7 +973,8 @@ Message: $form->{message}\r| if $form->{message};
                 salesman_id = ?,
                 storno = ?,
                 globalproject_id = ?,
-                cp_id = ?
+                cp_id = ?,
+                transaction_description = ?
               WHERE id = ?|;
   @values = ($form->{"invnumber"}, $form->{"ordnumber"}, $form->{"quonumber"}, $form->{"cusordnumber"},
              conv_date($form->{"invdate"}), conv_date($form->{"orddate"}), conv_date($form->{"quodate"}),
@@ -988,10 +988,18 @@ Message: $form->{message}\r| if $form->{message};
              conv_i($form->{"delivery_customer_id"}), conv_i($form->{"delivery_vendor_id"}),
              conv_i($form->{"employee_id"}), conv_i($form->{"salesman_id"}),
              $form->{"storno"} ? 't' : 'f', conv_i($form->{"globalproject_id"}),
-             conv_i($form->{"cp_id"}),
+             conv_i($form->{"cp_id"}), $form->{transaction_description},
              conv_i($form->{"id"}));
   do_query($form, $dbh, $query, @values);
-
+  
+  if($form->{"formname"} eq "credit_note") {
+    for my $i (1 .. $form->{paidaccounts}) {
+      $query = qq|UPDATE parts SET onhand = onhand - ? WHERE id = ?|;
+      @values = (conv_i($form->{"qty_$i"}), conv_i($form->{"id_$i"}));
+      do_query($form, $dbh, $query, @values);
+    }
+  }
+  
   if ($form->{storno}) {
     $query =
       qq!UPDATE ar SET
@@ -1369,16 +1377,11 @@ sub retrieve_invoice {
 
   $query =
     qq|SELECT
-         (SELECT c.accno FROM chart c
-          WHERE d.inventory_accno_id = c.id) AS inventory_accno,
-         (SELECT c.accno FROM chart c
-          WHERE d.income_accno_id = c.id) AS income_accno,
-         (SELECT c.accno FROM chart c
-          WHERE d.expense_accno_id = c.id) AS expense_accno,
-         (SELECT c.accno FROM chart c
-          WHERE d.fxgain_accno_id = c.id) AS fxgain_accno,
-         (SELECT c.accno FROM chart c
-          WHERE d.fxloss_accno_id = c.id) AS fxloss_accno,
+         (SELECT c.accno FROM chart c WHERE d.inventory_accno_id = c.id) AS inventory_accno,
+         (SELECT c.accno FROM chart c WHERE d.income_accno_id = c.id)    AS income_accno,
+         (SELECT c.accno FROM chart c WHERE d.expense_accno_id = c.id)   AS expense_accno,
+         (SELECT c.accno FROM chart c WHERE d.fxgain_accno_id = c.id)    AS fxgain_accno,
+         (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id)    AS fxloss_accno,
          d.curr AS currencies
          ${query_transdate}
        FROM defaults d|;
@@ -1399,6 +1402,7 @@ sub retrieve_invoice {
            a.duedate, a.taxincluded, a.curr AS currency, a.shipto_id, a.cp_id,
            a.employee_id, a.salesman_id, a.payment_id,
            a.language_id, a.delivery_customer_id, a.delivery_vendor_id, a.type,
+           a.transaction_description,
            e.name AS employee
          FROM ar a
          LEFT JOIN employee e ON (e.id = a.employee_id)
@@ -1528,7 +1532,7 @@ sub retrieve_invoice {
              (SELECT tk.tax_id
               FROM taxkeys tk
               WHERE tk.chart_id = (SELECT id FROM chart WHERE accno = ?)
-                AND startdate <= $transdate
+                AND startdate <= date($transdate)
               ORDER BY startdate DESC
               LIMIT 1)
            ORDER BY c.accno|;
@@ -1715,7 +1719,7 @@ sub get_customer {
             qq|SELECT tk.tax_id, t.rate
                FROM taxkeys tk
                LEFT JOIN tax t ON tk.tax_id = t.id
-               WHERE (tk.chart_id = ?) AND (startdate <= ?)
+               WHERE (tk.chart_id = ?) AND (startdate <= date(?))
                ORDER BY tk.startdate DESC
                LIMIT 1|;
           my ($tax_id, $rate) =
@@ -1872,7 +1876,7 @@ sub retrieve_item {
             ORDER BY startdate DESC
             LIMIT 1)
          ORDER BY c.accno|;
-    @values = ($accno_id, $transdate);
+    @values = ($accno_id, $transdate eq "current_date" ? "now" : $transdate);
     $stw = $dbh->prepare($query);
     $stw->execute(@values) || $form->dberror($query);
 
@@ -2135,6 +2139,29 @@ sub has_storno {
 
   my $dbh = $form->dbconnect($myconfig);
 
+  my $query = qq|SELECT storno FROM $table WHERE storno_id = ?|;
+  my ($result) = selectrow_query($form, $dbh, $query, $form->{id});
+
+  $dbh->disconnect();
+
+  $main::lxdebug->leave_sub();
+
+  return $result;
+}
+
+sub is_storno {
+  $main::lxdebug->enter_sub();
+
+  my ($self, $myconfig, $form, $table) = @_;
+
+  $main::lxdebug->leave_sub() and return 0 unless ($form->{id});
+
+  # make sure there's no funny stuff in $table
+  # ToDO: die when this happens and throw an error
+  $main::lxdebug->leave_sub() and return 0 if ($table =~ /\W/);
+
+  my $dbh = $form->dbconnect($myconfig);
+
   my $query = qq|SELECT storno FROM $table WHERE id = ?|;
   my ($result) = selectrow_query($form, $dbh, $query, $form->{id});