X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FRP.pm;h=28d01af19c7572ab34c65db403679a1b79a42d35;hb=1b032ef45d886922f1fe347ec234c9b0c8c50efd;hp=79f0403f248ebdff051da9d76b2bf6e73c9e10cf;hpb=0e04ddd7e3ff23d051838617844698a39f680969;p=kivitendo-erp.git diff --git a/SL/RP.pm b/SL/RP.pm index 79f0403f2..28d01af19 100644 --- a/SL/RP.pm +++ b/SL/RP.pm @@ -311,7 +311,8 @@ sub get_accounts { FROM invoice ac JOIN ar a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.income_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.income_accno_id = c.id) -- use transdate from subwhere WHERE (c.category = 'I') $subwhere @@ -332,7 +333,8 @@ sub get_accounts { FROM invoice ac JOIN ap a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.expense_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.expense_accno_id = c.id) WHERE (c.category = 'E') $subwhere $dpt_where @@ -374,7 +376,8 @@ sub get_accounts { FROM invoice ac JOIN ar a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.income_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.income_accno_id = c.id) -- use transdate from subwhere WHERE (c.category = 'I') $subwhere @@ -388,7 +391,8 @@ sub get_accounts { FROM invoice ac JOIN ap a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.expense_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.expense_accno_id = c.id) WHERE (c.category = 'E') $subwhere $dpt_where @@ -572,7 +576,8 @@ sub get_accounts_g { FROM invoice ac JOIN ar a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.income_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.income_accno_id = c.id) WHERE (c.category = 'I') $prwhere $dpt_where AND ac.trans_id IN ( SELECT trans_id FROM acc_trans a WHERE (a.chart_link LIKE '%AR_paid%') $subwhere) $project @@ -584,7 +589,8 @@ sub get_accounts_g { FROM invoice ac JOIN ap a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.expense_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.expense_accno_id = c.id) WHERE (c.category = 'E') $prwhere $dpt_where AND ac.trans_id IN ( SELECT trans_id FROM acc_trans a WHERE (a.chart_link LIKE '%AP_paid%') $subwhere) $project @@ -617,7 +623,8 @@ sub get_accounts_g { FROM invoice ac JOIN ar a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.income_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.income_accno_id = c.id) WHERE (c.category = 'I') $prwhere $dpt_where @@ -630,7 +637,8 @@ sub get_accounts_g { FROM invoice ac JOIN ap a ON (a.id = ac.trans_id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c on (p.expense_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c on (t.expense_accno_id = c.id) WHERE (c.category = 'E') $prwhere $dpt_where @@ -824,14 +832,16 @@ sub trial_balance { if ($form->{fromdate} || $form->{todate}) { if ($form->{fromdate}) { $fromdate = conv_dateq($form->{fromdate}); + my $fiscal_year_startdate = conv_dateq($self->get_balance_starting_date($form->{fromdate})); + # my $date_trunc = "(select date_trunc('year', date $fromdate))"; $tofrom .= " AND (ac.transdate >= $fromdate)"; $subwhere .= " AND (ac.transdate >= $fromdate)"; - $sumsubwhere .= " AND (ac.transdate >= (select date_trunc('year', date $fromdate))) "; - $saldosubwhere .= " AND (ac,transdate>=(select date_trunc('year', date $fromdate))) "; - $invwhere .= " AND (a.transdate >= $fromdate)"; - $glsaldowhere .= " AND ac.transdate>=(select date_trunc('year', date $fromdate)) "; + $sumsubwhere .= " AND (ac.transdate >= $fiscal_year_startdate) "; + $saldosubwhere .= " AND (ac.transdate >= $fiscal_year_startdate) "; + $invwhere .= " AND (a.transdate >= $fromdate)"; + $glsaldowhere .= " AND (ac.transdate >= $fiscal_year_startdate) "; $glwhere = " AND (ac.transdate >= $fromdate)"; - $glsumwhere = " AND (ac.transdate >= (select date_trunc('year', date $fromdate))) "; + $glsumwhere = " AND (ac.transdate >= $fiscal_year_startdate) "; } if ($form->{todate}) { $todate = conv_dateq($form->{todate}); @@ -891,7 +901,8 @@ sub trial_balance { FROM invoice ac JOIN ar a ON (ac.trans_id = a.id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c ON (p.income_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c ON (t.income_accno_id = c.id) WHERE $invwhere $dpt_where $customer_where @@ -904,7 +915,8 @@ sub trial_balance { FROM invoice ac JOIN ap a ON (ac.trans_id = a.id) JOIN parts p ON (ac.parts_id = p.id) - JOIN chart c ON (p.expense_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c ON (t.expense_accno_id = c.id) WHERE $invwhere $dpt_where $customer_no_union @@ -1017,7 +1029,8 @@ sub trial_balance { FROM invoice ac JOIN parts p ON (ac.parts_id = p.id) JOIN ap a ON (ac.trans_id = a.id) - JOIN chart c ON (p.expense_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c ON (t.expense_accno_id = c.id) WHERE $invwhere $dpt_where $customer_no_union @@ -1028,7 +1041,8 @@ sub trial_balance { FROM invoice ac JOIN parts p ON (ac.parts_id = p.id) JOIN ar a ON (ac.trans_id = a.id) - JOIN chart c ON (p.income_accno_id = c.id) + JOIN taxzone_charts t ON (p.buchungsgruppen_id = t.id) + JOIN chart c ON (t.income_accno_id = c.id) WHERE $invwhere $dpt_where $customer_where @@ -1085,7 +1099,7 @@ sub trial_balance { } - my ($debit, $credit, $saldo, $soll_saldo, $haben_saldo,$soll_kummuliert, $haben_kummuliert, $last_transaction); + my ($debit, $credit, $saldo, $soll_saldo, $haben_saldo, $soll_kumuliert, $haben_kumuliert, $last_transaction); foreach my $accno (sort keys %trb) { $ref = {}; @@ -1194,19 +1208,6 @@ sub trial_balance { $main::lxdebug->leave_sub(); } -sub get_storno { - $main::lxdebug->enter_sub(); - my ($self, $dbh, $form) = @_; - my $arap = $form->{arap} eq "ar" ? "ar" : "ap"; - my $query = qq|SELECT invnumber FROM $arap WHERE invnumber LIKE "Storno zu "|; - my $sth = $dbh->prepare($query); - while(my $ref = $sth->fetchrow_hashref()) { - $ref->{invnumer} =~ s/Storno zu //g; - $form->{storno}{$ref->{invnumber}} = 1; - } - $main::lxdebug->leave_sub(); -} - sub aging { $main::lxdebug->enter_sub(); @@ -1295,9 +1296,9 @@ sub aging { SELECT ${ct}.id AS ctid, ${ct}.name, street, zipcode, city, country, contact, email, phone as customerphone, fax as customerfax, ${ct}number, - "invnumber", "transdate", + "invnumber", "transdate", "type", (amount - COALESCE((SELECT sum(amount)*$ml FROM acc_trans WHERE chart_link ilike '%paid%' AND acc_trans.trans_id=${arap}.id AND acc_trans.transdate <= (date $todate)),0)) as "open", "amount", - "duedate", invoice, ${arap}.id, date_part('days', now() - duedate) as overduedays, + "duedate", invoice, ${arap}.id, date_part('days', now() - duedate) as overduedays, datepaid, (amount - paid) as current_open, (SELECT $buysell FROM exchangerate WHERE (${arap}.currency_id = exchangerate.currency_id) @@ -1902,6 +1903,7 @@ sub erfolgsrechnung { my %categories = (I => "ERTRAG", E => "AUFWAND"); my $fromdate = conv_dateq($form->{fromdate}); my $todate = conv_dateq($form->{todate}); + my $department_id = conv_i((split /--/, $form->{department})[1], 'NULL'); $form->{total} = 0; @@ -1909,10 +1911,10 @@ sub erfolgsrechnung { my %category = ( name => $categories{$category}, total => 0, - accounts => get_accounts_ch($category), + accounts => get_accounts_ch($category) ); foreach my $account (@{$category{accounts}}) { - $account->{total} += get_total_ch($account->{id}, $fromdate, $todate); + $account->{total} = get_total_ch($department_id, $account->{id}, $fromdate, $todate); $category{total} += $account->{total}; $account->{total} = $form->format_amount($myconfig, $form->round_amount($account->{total}, 2), 2); } @@ -1930,7 +1932,7 @@ sub get_accounts_ch { $main::lxdebug->enter_sub(); my ($category) = @_; - my ($inclusion); + my $inclusion = '' ; if ($category eq 'I') { $inclusion = "AND pos_er = NULL OR pos_er = '1'"; @@ -1955,7 +1957,7 @@ sub get_accounts_ch { sub get_total_ch { $main::lxdebug->enter_sub(); - my ($chart_id, $fromdate, $todate) = @_; + my ($department_id, $chart_id, $fromdate, $todate) = @_; my $total = 0; my $query = qq| SELECT SUM(amount) @@ -1964,7 +1966,16 @@ sub get_total_ch { AND transdate >= ? AND transdate <= ? |; - $total += _query($query, $chart_id, $fromdate, $todate)->[0]->{sum}; + if ($department_id) { + $query .= qq| AND COALESCE( + (SELECT department_id FROM ar WHERE ar.id=trans_id), + (SELECT department_id FROM gl WHERE gl.id=trans_id), + (SELECT department_id FROM ap WHERE ap.id=trans_id) + ) = ? |; + $total += _query($query, $chart_id, $fromdate, $todate, $department_id)->[0]->{sum}; + } else { + $total += _query($query, $chart_id, $fromdate, $todate)->[0]->{sum}; + } $main::lxdebug->leave_sub(); return $total;