X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FRP.pm;h=a319cf59d50090e0efddaa3be72eb152b0590eb1;hb=420cc628dce84d55be98be5f9987b13879c2010e;hp=e0ed0b4eea27b9c903379cb4643c5eee7306146a;hpb=b0f652b639cd4d363235e8f9b53e14efc5085e1a;p=kivitendo-erp.git diff --git a/SL/RP.pm b/SL/RP.pm index e0ed0b4ee..a319cf59d 100644 --- a/SL/RP.pm +++ b/SL/RP.pm @@ -211,6 +211,13 @@ sub get_accounts { $sth->finish; + # if l_ob is selected l_cb is always ignored + if ( $form->{l_ob} ) { + $where .= ' AND ac.ob_transaction is true ' + } elsif ( not $form->{l_cb} ) { + $where .= ' AND ac.cb_transaction is false '; + }; + if ($fromdate) { $fromdate = conv_dateq($fromdate); if ($form->{method} eq 'cash') { @@ -464,6 +471,8 @@ sub get_accounts_g { my $inwhere = ""; my $item; + $where .= ' AND ac.cb_transaction is false ' unless $form->{l_cb}; + if ($fromdate) { $fromdate = conv_dateq($fromdate); if ($form->{method} eq 'cash') { @@ -507,13 +516,13 @@ sub get_accounts_g { if ($form->{method} eq 'cash') { $query = qq| - SELECT SUM( ac.amount * + SELECT SUM( ac.amount * CASE WHEN COALESCE((SELECT amount FROM ar WHERE id = ac.trans_id and amount != 0 ), 0) != 0 THEN (SELECT SUM(acc.amount) * -1 FROM acc_trans acc INNER JOIN chart c ON (acc.chart_id = c.id AND c.link LIKE '%AR_paid%') WHERE 1=1 $inwhere AND acc.trans_id = ac.trans_id) - / (SELECT amount FROM ar WHERE id = ac.trans_id) - ) AS amount, c.pos_eur + / (SELECT amount FROM ar WHERE id = ac.trans_id and amount != 0 ) ELSE 1 END + ) AS amount, c.$category FROM acc_trans ac LEFT JOIN chart c ON (c.id = ac.chart_id) LEFT JOIN ar ON (ar.id = ac.trans_id) @@ -526,7 +535,7 @@ sub get_accounts_g { ) WHERE ac.trans_id IN (SELECT DISTINCT trans_id FROM acc_trans WHERE 1=1 $subwhere) - GROUP BY c.pos_eur + GROUP BY c.$category /* SELECT SUM(ac.amount * chart_category_to_sgn(c.category)) AS amount, c.$category @@ -1162,6 +1171,8 @@ sub aging { my ($invoice, $arap, $buysell, $ct, $ct_id, $ml); + # falls customer ziehen wir die offene forderungsliste + # anderfalls für die lieferanten die offenen verbindlichkeitne if ($form->{ct} eq "customer") { $invoice = "is"; $arap = "ar"; @@ -1177,12 +1188,42 @@ sub aging { } $ct_id = "${ct}_id"; - $form->{todate} = $form->current_date($myconfig) unless ($form->{todate}); - my $todate = conv_dateq($form->{todate}); - my $fromdate = conv_dateq($form->{fromdate}); + # erweiterung um einen freien zeitraum oder einen stichtag + # mit entsprechender altersstrukturliste (s.a. Bug 1842) + # eine neue variable an der oberfläche eingeführt, somit ist + # todate == freier zeitrau und fordate == stichtag + + my ($review_of_aging_list, $todate, $fromdate, $fromwhere, $fordate); + + if ($form->{reporttype} eq 'custom') { # altersstrukturliste - my $fromwhere = ($form->{fromdate} ne "") ? " AND (transdate >= (date $fromdate)) " : ""; + # explizit rausschmeissen was man für diesen bericht nicht braucht + delete $form->{fromdate}; + delete $form->{todate}; + # an der oberfläche ist das tagesaktuelle datum vorausgewählt + # falls es dennoch per Benutzereingabe gelöscht wird, lieber wieder vorbelegen + # ferner muss für die spätere DB-Abfrage muss todate gesetzt sein. + $form->{fordate} = $form->current_date($myconfig) unless ($form->{fordate}); + $fordate = conv_dateq($form->{fordate}); + $todate = $fordate; + + if ($form->{review_of_aging_list}) { # falls die liste leer ist, alles anzeigen + if ($form->{review_of_aging_list} =~ m "-") { # .. periode von bis + my @period = split(/-/, $form->{review_of_aging_list}); # ... von periode bis periode + $review_of_aging_list = " AND $period[0] < (date $fordate) - duedate + AND (date $fordate) - duedate < $period[1]"; + } else { + $form->{review_of_aging_list} =~ s/[^0-9]//g; # größer 120 das substitute ist nur für das '>' zeichen + $review_of_aging_list = " AND $form->{review_of_aging_list} < (date $fordate) - duedate"; + } + } + } else { # freier zeitraum OHNE review_of_aging_list + $form->{todate} = $form->current_date($myconfig) unless ($form->{todate}); + $todate = conv_dateq($form->{todate}); + $fromdate = conv_dateq($form->{fromdate}); + $fromwhere = ($form->{fromdate} ne "") ? " AND (transdate >= (date $fromdate)) " : ""; + } my $where = " 1 = 1 "; my ($name, $null); @@ -1200,19 +1241,7 @@ sub aging { $where .= qq| AND (a.department_id = | . conv_i($department_id, 'NULL') . qq|)|; $where_dpt = qq| AND (${arap}.department_id = | . conv_i($department_id, 'NULL') . qq|)|; } - my $review_of_aging_list; - if ($form->{review_of_aging_list}) { - if ($form->{review_of_aging_list} =~ m "-"){ - my @period = split(/-/, $form->{review_of_aging_list}); - $review_of_aging_list = " AND $period[0] < date_part('days', now() - duedate) - AND date_part('days', now() - duedate) < $period[1]"; - } else { - $form->{review_of_aging_list} =~ s/[^0-9]//g; - $review_of_aging_list = " AND $form->{review_of_aging_list} < date_part('days', now() - duedate)"; - } - } - - my $q_details = qq| + my $q_details = qq| SELECT ${ct}.id AS ctid, ${ct}.name, street, zipcode, city, country, contact, email, @@ -1228,7 +1257,7 @@ sub aging { WHERE ((paid != amount) OR (datepaid > (date $todate) AND datepaid is not null)) AND NOT COALESCE (${arap}.storno, 'f') AND (${arap}.${ct}_id = ${ct}.id) - $where_dpt + $where_dpt AND (${ct}.id = ?) AND (transdate <= (date $todate) $fromwhere ) $review_of_aging_list @@ -1293,27 +1322,6 @@ sub get_customer { $main::lxdebug->leave_sub(); } -sub get_taxaccounts { - $main::lxdebug->enter_sub(); - - my ($self, $myconfig, $form) = @_; - - # connect to database - my $dbh = $form->dbconnect($myconfig); - - # get tax accounts - my $query = - qq|SELECT c.accno, c.description, t.rate - FROM chart c, tax t - WHERE (c.link LIKE '%CT_tax%') AND (c.id = t.chart_id) - ORDER BY c.accno|; - $form->{taxaccounts} = selectall_hashref_query($form, $dbh, $query); - - $dbh->disconnect; - - $main::lxdebug->leave_sub(); -} - sub tax_report { $main::lxdebug->enter_sub(); @@ -1641,7 +1649,7 @@ sub bwa { my @periods = qw(jetzt kumm); my @gesamtleistung = qw(1 3); - my @gesamtkosten = qw (10 11 12 13 14 15 16 17 18 19 20); + my @gesamtkosten = qw (10 11 12 13 14 15 16 17 18 20); my @ergebnisse = qw (rohertrag betriebrohertrag betriebsergebnis neutraleraufwand neutralerertrag ergebnisvorsteuern ergebnis gesamtleistung gesamtkosten); @@ -1676,13 +1684,13 @@ sub bwa { $form->{ "$key" . "betriebrohertrag" } - $form->{ "$key" . "gesamtkosten" }; $form->{ "$key" . "neutraleraufwand" } = - $form->{30}{$key} + $form->{31}{$key}; - $form->{ "$key" . "neutralertrag" } = + $form->{19}{$key} + $form->{30}{$key} + $form->{31}{$key}; + $form->{ "$key" . "neutralerertrag" } = $form->{32}{$key} + $form->{33}{$key} + $form->{34}{$key}; $form->{ "$key" . "ergebnisvorsteuern" } = $form->{ "$key" . "betriebsergebnis" } - $form->{ "$key" . "neutraleraufwand" } + - $form->{ "$key" . "neutralertrag" }; + $form->{ "$key" . "neutralerertrag" }; $form->{ "$key" . "ergebnis" } = $form->{ "$key" . "ergebnisvorsteuern" } - $form->{35}{$key};