X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FGL.pm;h=4dbd703c7940b0ceb3a75093e95ab92350354832;hb=ac0c6a8692e05549cb2dc0a60e692f550fa72894;hp=660c148efc64132420c05e525d4c21a0b3d8eb25;hpb=8a3ba14876691dea5ebc6e92d37a2fd3b469dc07;p=kivitendo-erp.git diff --git a/SL/GL.pm b/SL/GL.pm index 660c148ef..4dbd703c7 100644 --- a/SL/GL.pm +++ b/SL/GL.pm @@ -487,11 +487,13 @@ sub all_transactions { $ref->{debit}{$k} = $ref->{amount} * -1; $ref->{debit_accno}{$k} = $ref->{accno}; $ref->{debit_taxkey}{$k} = $ref->{taxkey}; + $ref->{transdate}{$k} = $ref->{transdate}; } else { $ref->{credit}{$l} = $ref->{amount} * 1; $ref->{credit_accno}{$l} = $ref->{accno}; $ref->{credit_taxkey}{$l} = $ref->{taxkey}; + $ref->{transdate}{$l} = $ref->{transdate}; } @@ -547,6 +549,7 @@ sub all_transactions { $ref->{debit}{$k} = $ref2->{amount} * - 1; $ref->{debit_accno}{$k} = $ref2->{accno}; $ref->{debit_taxkey}{$k} = $ref2->{taxkey}; + $ref->{transdate}{$k} = $ref2->{transdate}; } else { if ($ref->{credit_accno}{$l} ne "") { $l++; @@ -554,6 +557,7 @@ sub all_transactions { $ref->{credit}{$l} = $ref2->{amount}; $ref->{credit_accno}{$l} = $ref2->{accno}; $ref->{credit_taxkey}{$l} = $ref2->{taxkey}; + $ref->{transdate}{$l} = $ref2->{transdate}; } } } @@ -618,19 +622,19 @@ sub transaction { # retrieve individual rows $query = qq|SELECT c.accno, t.taxkey AS accnotaxkey, a.amount, a.memo, a.transdate, a.cleared, a.project_id, p.projectnumber,(SELECT p.projectnumber FROM project p - WHERE a.project_id = p.id) AS projectnumber, a.taxkey, t.rate AS taxrate, t.id, (SELECT c1.accno FROM chart c1, tax t1 WHERE t1.id=t.id AND c1.id=t.chart_id) AS taxaccno, t.id AS tax_id + WHERE a.project_id = p.id) AS projectnumber, a.taxkey, t.rate AS taxrate, t.id, (SELECT c1.accno FROM chart c1, tax t1 WHERE t1.id=t.id AND c1.id=t.chart_id) AS taxaccno, (SELECT tk.tax_id FROM taxkeys tk WHERE tk.chart_id =a.chart_id AND tk.startdate<=a.transdate ORDER BY tk.startdate desc LIMIT 1) AS tax_id FROM acc_trans a JOIN chart c ON (c.id = a.chart_id) LEFT JOIN project p ON (p.id = a.project_id) - LEFT JOIN tax t ON (t.id=(SELECT tk.tax_id from taxkeys tk WHERE (tk.taxkey_id=a.taxkey) AND ((CASE WHEN a.chart_id IN (SELECT chart_id FROM taxkeys WHERE taxkey_id=a.taxkey) THEN tk.chart_id=a.chart_id ELSE 1=1 END) OR (c.link='%tax%')) AND startdate <=a.transdate ORDER BY startdate DESC LIMIT 1)) + LEFT JOIN tax t ON (t.id=(SELECT tk.tax_id from taxkeys tk WHERE (tk.taxkey_id=a.taxkey) AND ((CASE WHEN a.chart_id IN (SELECT chart_id FROM taxkeys WHERE taxkey_id=a.taxkey) THEN tk.chart_id=a.chart_id ELSE 1=1 END) OR (c.link LIKE '%tax%')) AND startdate <=a.transdate ORDER BY startdate DESC LIMIT 1)) WHERE a.trans_id = $form->{id} AND a.fx_transaction = '0' ORDER BY a.oid,a.transdate|; - $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); + $form->{GL} = []; while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { push @{ $form->{GL} }, $ref; } @@ -639,20 +643,21 @@ sub transaction { $query = qq| SELECT * FROM tax t order by t.taxkey|; $sth = $dbh->prepare($query); $sth->execute || $form->dberror($query); - $form->{TAX} = (); + $form->{TAX} = []; while (my $ref = $sth->fetchrow_hashref(NAME_lc)) { push @{ $form->{TAX} }, $ref; } $sth->finish; } else { - $query = "SELECT current_date AS transdate, closedto, revtrans - FROM defaults"; - $sth = $dbh->prepare($query); - $sth->execute || $form->dberror($query); - - ($form->{transdate}, $form->{closedto}, $form->{revtrans}) = - $sth->fetchrow_array; + $query = "SELECT closedto, revtrans FROM defaults"; + ($form->{closedto}, $form->{revtrans}) = $dbh->selectrow_array($query); + $query = + "SELECT COALESCE(" . + " (SELECT transdate FROM gl WHERE id = " . + " (SELECT MAX(id) FROM gl) LIMIT 1), " . + " current_date)"; + ($form->{transdate}) = $dbh->selectrow_array($query); # get tax description $query = qq| SELECT * FROM tax t order by t.taxkey|;