Revert "Probleme bei Mwst-Wechsel"
[kivitendo-erp.git] / SL / CA.pm
index 1afbd7f..577d6b9 100644 (file)
--- a/SL/CA.pm
+++ b/SL/CA.pm
@@ -1,4 +1,4 @@
-#=====================================================================
+  #=====================================================================
 # LX-Office ERP
 # Copyright (C) 2004
 # Based on SQL-Ledger Version 2.1.9
 #
 #======================================================================
 
+use utf8;
+use strict;
+
 package CA;
 use Data::Dumper;
 use SL::DBUtils;
 
-use strict;
-
 sub all_accounts {
   $main::lxdebug->enter_sub();
 
@@ -50,22 +51,26 @@ sub all_accounts {
   # connect to database
   my $dbh = $form->dbconnect($myconfig);
 
-  # bug 1071 Warum sollte bei Erreichen eines neuen Jahres die Kontenübersicht nur noch die
+  # bug 1071 Warum sollte bei Erreichen eines neuen Jahres die Kontenübersicht nur noch die
   # bereits bebuchten Konten anzeigen?
   # Folgende Erweiterung:
-  # 1.) Gehe zurück bis zu dem Datum an dem die Bücher geschlossen wurden
-  # 2.) Falls die Bücher noch nie geschlossen wurden, gehe zurück bis zum Bearbeitungsstart
+  # 1.) Gehe zurück bis zu dem Datum an dem die Bücher geschlossen wurden
+  # 2.) Falls die Bücher noch nie geschlossen wurden, gehe zurück bis zum Bearbeitungsstart
   # COALESCE((SELECT closedto FROM defaults),(SELECT itime FROM defaults))
+  # PROBLEM: Das date_trunc schneidet auf den 1.1.20XX ab und KEINE Buchungen werden angezeigt
+  # Lösung: date_trunc rausgeworfen und nicht mehr auf itime geprüft, sondern auf die erste Buchung
+  # in transdate jan 11.04.2011
 
-  my $closedto_sql = "COALESCE((SELECT closedto FROM defaults),(SELECT itime FROM defaults))";
+  my $closedto_sql = "COALESCE((SELECT closedto FROM defaults),
+                               (SELECT transdate from acc_trans order by transdate limit 1))";
 
-  if ($form->{method} eq "cash") {  # EÜR
+  if ($form->{method} eq "cash") {  # EÜR
     $acc_cash_where = qq| AND (a.trans_id IN (SELECT id FROM ar WHERE datepaid>= $closedto_sql
                           UNION SELECT id FROM ap WHERE datepaid>= $closedto_sql
                           UNION SELECT id FROM gl WHERE transdate>= $closedto_sql
                         )) |;
   } else {  # Bilanzierung
-    $acc_cash_where = " AND ((select date_trunc('year', a.transdate::date)) >= $closedto_sql) ";
+    $acc_cash_where = " AND (a.transdate >= $closedto_sql) ";
   }
 
   my $query =
@@ -79,7 +84,7 @@ sub all_accounts {
     $amount{ $ref->{accno} } = $ref->{amount};
   }
 
-  my $where = "AND c.id = $chart_id" if ($chart_id ne '');
+  my $where = $chart_id ne '' ? "AND c.id = $chart_id" : '';
 
   $query = qq{
     SELECT
@@ -198,22 +203,6 @@ sub all_transactions {
     $project = qq| AND ac.project_id = ? |;
     @project_values = (conv_i($form->{project_id}));
   }
-  my $acc_cash_where = "";
-  my $ar_cash_where = "";
-  my $ap_cash_where = "";
-
-
-  if ($form->{method} eq "cash") {
-    $where = qq| (ac.trans_id IN (SELECT id FROM ar WHERE datepaid>= ? AND datepaid<= ? UNION SELECT id FROM ap WHERE datepaid>= ? AND datepaid<= ? UNION SELECT id FROM gl WHERE transdate>= ? AND transdate<= ?)) |;
-    @where_values = ();
-    push(@where_values, conv_date($form->{fromdate}));
-    push(@where_values, conv_date($form->{todate}));
-    push(@where_values, conv_date($form->{fromdate}));
-    push(@where_values, conv_date($form->{todate}));
-    push(@where_values, conv_date($form->{fromdate}));
-    push(@where_values, conv_date($form->{todate}));
- }
-
 
   if ($form->{accno}) {
 
@@ -284,7 +273,7 @@ sub all_transactions {
     $query =
       qq|SELECT a.id, a.reference, a.description, ac.transdate, ac.chart_id, | .
       qq|  $false AS invoice, ac.amount, 'gl' as module, | .
-      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo § .
+      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo Â§ .
       qq|FROM acc_trans ac, gl a | .
       $dpt_join .
       qq|WHERE | . $where . $dpt_where . $project .
@@ -296,7 +285,7 @@ sub all_transactions {
 
       qq|SELECT a.id, a.invnumber, c.name, ac.transdate, ac.chart_id, | .
       qq|  a.invoice, ac.amount, 'ar' as module, | .
-      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  § .
+      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  Â§ .
       qq|FROM acc_trans ac, customer c, ar a | .
       $dpt_join .
       qq|WHERE | . $where . $dpt_where . $project .
@@ -309,7 +298,7 @@ sub all_transactions {
 
       qq|SELECT a.id, a.invnumber, v.name, ac.transdate, ac.chart_id, | .
       qq|  a.invoice, ac.amount, 'ap' as module, | .
-      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  § .
+      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  Â§ .
       qq|FROM acc_trans ac, vendor v, ap a | .
       $dpt_join .
       qq|WHERE | . $where . $dpt_where . $project .
@@ -345,7 +334,7 @@ sub all_transactions {
 
         qq|SELECT a.id, a.invnumber, c.name, a.transdate, | .
         qq|  a.invoice, ac.qty * ac.sellprice AS sellprice, 'ar' as module, | .
-        qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo § .
+        qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo Â§ .
         qq|FROM ar a | .
         qq|JOIN invoice ac ON (ac.trans_id = a.id) | .
         qq|JOIN parts p ON (ac.parts_id = p.id) | .
@@ -360,7 +349,7 @@ sub all_transactions {
 
         qq|SELECT a.id, a.invnumber, v.name, a.transdate, | .
         qq|  a.invoice, ac.qty * ac.sellprice AS sellprice, 'ap' as module, | .
-        qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo § .
+        qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo Â§ .
         qq|FROM ap a | .
         qq|JOIN invoice ac ON (ac.trans_id = a.id) | .
         qq|JOIN parts p ON (ac.parts_id = p.id) | .