]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Fehler bei Splitbuchungen beseitigt, wenn mit Steuer inkl. gebucht wurde
authorPhilip Reetz <p.reetz@linet-services.de>
Mon, 2 Jan 2006 19:06:52 +0000 (19:06 +0000)
committerPhilip Reetz <p.reetz@linet-services.de>
Mon, 2 Jan 2006 19:06:52 +0000 (19:06 +0000)
SL/AR.pm
bin/mozilla/ar.pl

index 75dc0264b0b14f4af529eba60d3756f889685a23..a6b0f42d36237c69bf856b3df1dbd1cb4b156761 100644 (file)
--- a/SL/AR.pm
+++ b/SL/AR.pm
@@ -55,10 +55,11 @@ sub post_transaction {
                                 $form->{transdate}, 'buy');
   }
   for $i (1 .. $form->{rowcount}) {
                                 $form->{transdate}, 'buy');
   }
   for $i (1 .. $form->{rowcount}) {
-    $form->{AR_amounts}{"amount_$i"} = (split(/--/, $form->{"AR_amount_$i"}))[0];
+    $form->{AR_amounts}{"amount_$i"} =
+      (split(/--/, $form->{"AR_amount_$i"}))[0];
   }
   ($form->{AR_amounts}{receivables}) = split(/--/, $form->{ARselected});
   }
   ($form->{AR_amounts}{receivables}) = split(/--/, $form->{ARselected});
-  ($form->{AR}{receivables}) = split(/--/, $form->{ARselected});
+  ($form->{AR}{receivables})         = split(/--/, $form->{ARselected});
 
   $form->{exchangerate} =
     ($exchangerate)
 
   $form->{exchangerate} =
     ($exchangerate)
@@ -85,28 +86,33 @@ sub post_transaction {
 
   $form->{taxincluded} = 0 if ($form->{amount} == 0);
   for $i (1 .. $form->{rowcount}) {
 
   $form->{taxincluded} = 0 if ($form->{amount} == 0);
   for $i (1 .. $form->{rowcount}) {
-    ($form->{"taxkey_$i"},      $NULL)         = split /--/, $form->{"taxchart_$i"};
+    ($form->{"taxkey_$i"}, $NULL) = split /--/, $form->{"taxchart_$i"};
 
     $query =
       qq| SELECT c.accno, t.rate FROM chart c, tax t where c.id=t.chart_id AND t.taxkey=$form->{"taxkey_$i"}|;
     $sth = $dbh->prepare($query);
     $sth->execute || $form->dberror($query);
 
     $query =
       qq| SELECT c.accno, t.rate FROM chart c, tax t where c.id=t.chart_id AND t.taxkey=$form->{"taxkey_$i"}|;
     $sth = $dbh->prepare($query);
     $sth->execute || $form->dberror($query);
-    ($form->{AR_amounts}{"tax_$i"}, $form->{"taxrate_$i"}) = $sth->fetchrow_array;
-    $form->{AR_amounts}{"tax_$i"}{taxkey} = $form->{"taxkey_$i"};
+    ($form->{AR_amounts}{"tax_$i"}, $form->{"taxrate_$i"}) =
+      $sth->fetchrow_array;
+    $form->{AR_amounts}{"tax_$i"}{taxkey}    = $form->{"taxkey_$i"};
     $form->{AR_amounts}{"amount_$i"}{taxkey} = $form->{"taxkey_$i"};
 
     $sth->finish;
     if (!$form->{"korrektur_$i"}) {
       if ($form->{taxincluded} *= 1) {
     $form->{AR_amounts}{"amount_$i"}{taxkey} = $form->{"taxkey_$i"};
 
     $sth->finish;
     if (!$form->{"korrektur_$i"}) {
       if ($form->{taxincluded} *= 1) {
-        $tax = $form->{"amount_$i"} - ($form->{"amount_$i"} / ($form->{"taxrate_$i"} + 1));
+        $tax =
+          $form->{"amount_$i"} -
+          ($form->{"amount_$i"} / ($form->{"taxrate_$i"} + 1));
         $amount = $form->{"amount_$i"} - $tax;
         $form->{"amount_$i"} = $form->round_amount($amount, 2);
         $diff += $amount - $form->{"amount_$i"};
         $form->{"tax_$i"} = $form->round_amount($tax, 2);
         $form->{netamount} += $form->{"amount_$i"};
         $amount = $form->{"amount_$i"} - $tax;
         $form->{"amount_$i"} = $form->round_amount($amount, 2);
         $diff += $amount - $form->{"amount_$i"};
         $form->{"tax_$i"} = $form->round_amount($tax, 2);
         $form->{netamount} += $form->{"amount_$i"};
+      } else {
+        $form->{"tax_$i"} = $form->{"amount_$i"} * $form->{"taxrate_$i"};
+        $form->{"tax_$i"} =
+          $form->round_amount($form->{"tax_$i"} * $form->{exchangerate}, 2);
       }
       }
-      $form->{"tax_$i"} = $form->{"amount_$i"} * $form->{"taxrate_$i"};
-      $form->{"tax_$i"} = $form->round_amount($form->{"tax_$i"} * $form->{exchangerate}, 2);
     }
     $form->{total_tax} += $form->{"tax_$i"};
   }
     }
     $form->{total_tax} += $form->{"tax_$i"};
   }
@@ -223,9 +229,11 @@ sub post_transaction {
                                        WHERE c.accno = '$form->{AR_amounts}{"amount_$i"}'),
                  $form->{"amount_$i"}, '$form->{transdate}', $project_id, '$taxkey')|;
       $dbh->do($query) || $form->dberror($query);
                                        WHERE c.accno = '$form->{AR_amounts}{"amount_$i"}'),
                  $form->{"amount_$i"}, '$form->{transdate}', $project_id, '$taxkey')|;
       $dbh->do($query) || $form->dberror($query);
-      if ($form->{"tax_$i"} !=0) {
+      if ($form->{"tax_$i"} != 0) {
+
         # insert detail records in acc_trans
         # insert detail records in acc_trans
-        $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate,
+        $query =
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate,
                                           project_id, taxkey)
                     VALUES ($form->{id}, (SELECT c.id FROM chart c
                                           WHERE c.accno = '$form->{AR_amounts}{"tax_$i"}'),
                                           project_id, taxkey)
                     VALUES ($form->{id}, (SELECT c.id FROM chart c
                                           WHERE c.accno = '$form->{AR_amounts}{"tax_$i"}'),
@@ -234,6 +242,7 @@ sub post_transaction {
       }
     }
   }
       }
     }
   }
+
   # add recievables
   $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate,
                                       project_id)
   # add recievables
   $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate,
                                       project_id)
@@ -242,7 +251,6 @@ sub post_transaction {
               $form->{receivables}, '$form->{transdate}', $project_id)|;
   $dbh->do($query) || $form->dberror($query);
 
               $form->{receivables}, '$form->{transdate}', $project_id)|;
   $dbh->do($query) || $form->dberror($query);
 
-
   # add paid transactions
   for my $i (1 .. $form->{paidaccounts}) {
     if ($form->{"paid_$i"} != 0) {
   # add paid transactions
   for my $i (1 .. $form->{paidaccounts}) {
     if ($form->{"paid_$i"} != 0) {
index eaa0f2224abe8f7729b062db2a2f053d86fed3e1..d70bc3c90f07ddacf81a4e88176b7bd238e24631 100644 (file)
@@ -116,7 +116,8 @@ sub create_links {
 
   $form->{duedate}     = $duedate if $duedate;
   $form->{oldcustomer} = "$form->{customer}--$form->{customer_id}";
 
   $form->{duedate}     = $duedate if $duedate;
   $form->{oldcustomer} = "$form->{customer}--$form->{customer_id}";
-  $form->{rowcount} = 1;
+  $form->{rowcount}    = 1;
+
   # currencies
   @curr = split /:/, $form->{currencies};
   chomp $curr[0];
   # currencies
   @curr = split /:/, $form->{currencies};
   chomp $curr[0];
@@ -182,7 +183,7 @@ sub create_links {
     # if there is a value we have an old entry
     my $j = 0;
     my $k = 0;
     # if there is a value we have an old entry
     my $j = 0;
     my $k = 0;
-    print(STDERR Dumper($form->{acc_trans}));
+
     for $i (1 .. scalar @{ $form->{acc_trans}{$key} }) {
       if ($key eq "AR_paid") {
         $j++;
     for $i (1 .. scalar @{ $form->{acc_trans}{$key} }) {
       if ($key eq "AR_paid") {
         $j++;
@@ -205,7 +206,7 @@ sub create_links {
         $akey = $key;
         $akey =~ s/AR_//;
 
         $akey = $key;
         $akey =~ s/AR_//;
 
-        if ($key eq "AR_tax") {
+        if ($key eq "AR_tax" || $key eq "AP_tax") {
           $form->{"${key}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} =
             "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
           $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} =
           $form->{"${key}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} =
             "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
           $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"} =
@@ -223,11 +224,10 @@ sub create_links {
               $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"};
             $withholdingrate +=
               $form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"};
               $form->{"${akey}_$form->{acc_trans}{$key}->[$i-1]->{accno}"};
             $withholdingrate +=
               $form->{"$form->{acc_trans}{$key}->[$i-1]->{accno}_rate"};
-          }          
-          print(STDERR $form->{acc_trans}{$key}->[$i - 1]->{amount}, " ACC_TRANS\n");
-          print(STDERR "$key KEY, $k Zeile\n");
+          }
           $index = $form->{acc_trans}{$key}->[$i - 1]->{index};
           $form->{"tax_$index"} = $form->{acc_trans}{$key}->[$i - 1]->{amount};
           $index = $form->{acc_trans}{$key}->[$i - 1]->{index};
           $form->{"tax_$index"} = $form->{acc_trans}{$key}->[$i - 1]->{amount};
+          $totaltax += $form->{"tax_$index"};
 
         } else {
           $k++;
 
         } else {
           $k++;
@@ -275,33 +275,15 @@ sub create_links {
         ($totaltax + $totalwithholding) * $form->{"amount_$i"} / $totalamount;
       $tax = $form->round_amount($taxamount, 2);
       $diff                += ($taxamount - $tax);
         ($totaltax + $totalwithholding) * $form->{"amount_$i"} / $totalamount;
       $tax = $form->round_amount($taxamount, 2);
       $diff                += ($taxamount - $tax);
-      $form->{"amount_$i"} += $tax;
+      $form->{"amount_$i"} += $form->{"tax_$i"};
     }
     $form->{amount_1} += $form->round_amount($diff, 2);
   }
 
     }
     $form->{amount_1} += $form->round_amount($diff, 2);
   }
 
-  # check if calculated is equal to stored
-  if ($form->{taxincluded} && $form->{taxrate} && $withholdingrate) {
-    if ($form->{"taxrate"} > 0) {
-      $taxamount =
-        $form->round_amount(
-            ($form->{amount_1} - ($form->{amount_1} / ($form->{taxrate} + 1))),
-            2);
-    } else {
-      $taxamount =
-        $form->round_amount(
-            ($totalamount + $totaltax + $totalwithholding) * $withholdingrate /
-              (1 - $withholdingrate),
-            2
-        ) * $form->{"taxrate"} / $withholdingrate;
-    }
-  } else {
-    $taxamount = $totalamount * $form->{"taxrate"};
-  }
   $taxamount = $form->round_amount($taxamount, 2);
   $form->{tax} = $taxamount;
 
   $taxamount = $form->round_amount($taxamount, 2);
   $form->{tax} = $taxamount;
 
-  $form->{invtotal} = $totalamount + $totaltax + $totalwithholding;
+  $form->{invtotal} = $totalamount + $totaltax;
 
   $form->{locked} =
     ($form->datetonum($form->{transdate}, \%myconfig) <=
 
   $form->{locked} =
     ($form->datetonum($form->{transdate}, \%myconfig) <=
@@ -353,8 +335,9 @@ sub form_header {
       s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
   }
   $selectAR_amount_unquoted = $form->{selectAR_amount};
       s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
   }
   $selectAR_amount_unquoted = $form->{selectAR_amount};
-  $taxchart = $form->{taxchart};
-  map { $form->{$_} =~ s/\"/&quot;/g } qw(AR_amount selectAR_amount AR taxchart);
+  $taxchart                 = $form->{taxchart};
+  map { $form->{$_} =~ s/\"/&quot;/g }
+    qw(AR_amount selectAR_amount AR taxchart);
 
   # format amounts
   $form->{exchangerate} =
 
   # format amounts
   $form->{exchangerate} =
@@ -438,14 +421,12 @@ sub form_header {
     $button1 = qq|
        <td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value=$form->{transdate}></td>
        <td><input type=button name=transdate id="trigger1" value=|
     $button1 = qq|
        <td><input name=transdate id=transdate size=11 title="$myconfig{dateformat}" value=$form->{transdate}></td>
        <td><input type=button name=transdate id="trigger1" value=|
-      . $locale->text('button')
-      . qq|></td>
+      . $locale->text('button') . qq|></td>
        |;
     $button2 = qq|
        <td><input name=duedate id=duedate size=11 title="$myconfig{dateformat}" value=$form->{duedate}></td>
        <td><input type=button name=duedate id="trigger2" value=|
        |;
     $button2 = qq|
        <td><input name=duedate id=duedate size=11 title="$myconfig{dateformat}" value=$form->{duedate}></td>
        <td><input type=button name=duedate id="trigger2" value=|
-      . $locale->text('button')
-      . qq|></td></td>
+      . $locale->text('button') . qq|></td></td>
      |;
 
     #write Trigger
      |;
 
     #write Trigger
@@ -571,23 +552,23 @@ $jsscript
        </tr>
 |;
 
        </tr>
 |;
 
-
   $amount  = $locale->text('Amount');
   $project = $locale->text('Project');
 
   for $i (1 .. $form->{rowcount}) {
 
     # format amounts
   $amount  = $locale->text('Amount');
   $project = $locale->text('Project');
 
   for $i (1 .. $form->{rowcount}) {
 
     # format amounts
-    $form->{"amount_$i"} = $form->format_amount(\%myconfig, $form->{"amount_$i"}, 2);
+    $form->{"amount_$i"} =
+      $form->format_amount(\%myconfig, $form->{"amount_$i"}, 2);
     $form->{"tax_$i"} = $form->format_amount(\%myconfig, $form->{"tax_$i"}, 2);
     $selectAR_amount = $selectAR_amount_unquoted;
     $form->{"tax_$i"} = $form->format_amount(\%myconfig, $form->{"tax_$i"}, 2);
     $selectAR_amount = $selectAR_amount_unquoted;
-    $selectAR_amount =~ s/option value=\"$form->{"AR_amount_$i"}\"/option value=\"$form->{"AR_amount_$i"}\" selected/;
+    $selectAR_amount =~
+      s/option value=\"$form->{"AR_amount_$i"}\"/option value=\"$form->{"AR_amount_$i"}\" selected/;
     $tax          = $taxchart;
     $tax_selected = $form->{"taxchart_$i"};
     $tax =~ s/value=\"$tax_selected\"/value=\"$tax_selected\" selected/;
     $tax =
     $tax          = $taxchart;
     $tax_selected = $form->{"taxchart_$i"};
     $tax =~ s/value=\"$tax_selected\"/value=\"$tax_selected\" selected/;
     $tax =
-            qq|<td><select id="taxchart_$i" name="taxchart_$i">$tax</select></td>|;
+      qq|<td><select id="taxchart_$i" name="taxchart_$i">$tax</select></td>|;
 
     print qq|
        <tr>
 
     print qq|
        <tr>
@@ -605,9 +586,6 @@ $jsscript
     $project = "";
   }
 
     $project = "";
   }
 
-
-
-
   $form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2);
 
   print qq|
   $form->{invtotal} = $form->format_amount(\%myconfig, $form->{invtotal}, 2);
 
   print qq|
@@ -648,8 +626,7 @@ $jsscript
       <table width=100%>
        <tr class=listheading>
          <th colspan=6 class=listheading>|
       <table width=100%>
        <tr class=listheading>
          <th colspan=6 class=listheading>|
-    . $locale->text('Incoming Payments')
-    . qq|</th>
+    . $locale->text('Incoming Payments') . qq|</th>
        </tr>
 |;
 
        </tr>
 |;
 
@@ -816,9 +793,9 @@ sub update {
 
   $form->{invtotal} = 0;
 
 
   $form->{invtotal} = 0;
 
-#   $form->{selectAR_amount} = $form->{AR_amount};
-#   $form->{selectAR_amount} =~
-#     s/value=\"$form->{AR_amountselected}\"/value=\"$form->{AR_amountselected}\" selected/;
+  #   $form->{selectAR_amount} = $form->{AR_amount};
+  #   $form->{selectAR_amount} =~
+  #     s/value=\"$form->{AR_amountselected}\"/value=\"$form->{AR_amountselected}\" selected/;
 
   $form->{selectAR} = $form->{AR};
 
 
   $form->{selectAR} = $form->{AR};
 
@@ -843,8 +820,7 @@ sub update {
   for $i (1 .. $form->{rowcount}) {
     $form->{"amount_$i"} =
       $form->parse_amount(\%myconfig, $form->{"amount_$i"});
   for $i (1 .. $form->{rowcount}) {
     $form->{"amount_$i"} =
       $form->parse_amount(\%myconfig, $form->{"amount_$i"});
-    $form->{"tax_$i"} =
-      $form->parse_amount(\%myconfig, $form->{"tax_$i"});
+    $form->{"tax_$i"} = $form->parse_amount(\%myconfig, $form->{"tax_$i"});
     if ($form->{"amount_$i"}) {
       push @a, {};
       $j = $#a;
     if ($form->{"amount_$i"}) {
       push @a, {};
       $j = $#a;
@@ -887,7 +863,6 @@ sub update {
 
   &check_project;
 
 
   &check_project;
 
-
   $form->{invtotal} =
     ($form->{taxincluded}) ? $form->{invtotal} : $form->{invtotal} + $totaltax;
 
   $form->{invtotal} =
     ($form->{taxincluded}) ? $form->{invtotal} : $form->{invtotal} + $totaltax;
 
@@ -1083,14 +1058,12 @@ sub search {
     $button1 = qq|
        <td><input name=transdatefrom id=transdatefrom size=11 title="$myconfig{dateformat}">
        <input type=button name=transdatefrom id="trigger1" value=|
     $button1 = qq|
        <td><input name=transdatefrom id=transdatefrom size=11 title="$myconfig{dateformat}">
        <input type=button name=transdatefrom id="trigger1" value=|
-      . $locale->text('button')
-      . qq|></td>
+      . $locale->text('button') . qq|></td>
       |;
     $button2 = qq|
        <td><input name=transdateto id=transdateto size=11 title="$myconfig{dateformat}">
        <input type=button name=transdateto name=transdateto id="trigger2" value=|
       |;
     $button2 = qq|
        <td><input name=transdateto id=transdateto size=11 title="$myconfig{dateformat}">
        <input type=button name=transdateto name=transdateto id="trigger2" value=|
-      . $locale->text('button')
-      . qq|></td>
+      . $locale->text('button') . qq|></td>
      |;
 
     #write Trigger
      |;
 
     #write Trigger
@@ -1309,10 +1282,9 @@ sub ar_transactions {
     $option   .= $locale->text('Closed');
   }
 
     $option   .= $locale->text('Closed');
   }
 
-  @columns =
-    $form->sort_columns(
+  @columns = $form->sort_columns(
     qw(transdate id invnumber ordnumber name netamount tax amount paid datepaid due duedate notes employee shippingpoint shipvia)
     qw(transdate id invnumber ordnumber name netamount tax amount paid datepaid due duedate notes employee shippingpoint shipvia)
-    );
+  );
 
   foreach $item (@columns) {
     if ($form->{"l_$item"} eq "Y") {
 
   foreach $item (@columns) {
     if ($form->{"l_$item"} eq "Y") {