$customer_join
WHERE ((select date_trunc('year', ac.transdate::date)) = (select date_trunc('year', ?::date))) AND ac.ob_transaction
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
GROUP BY c.accno, c.category, c.description |;
}
$sth->finish;
- if (!$form->{method} ne "cash") {
+ if ($form->{method} ne "cash") { # better eq 'accrual'
$sth = prepare_execute_query($form, $dbh, $fetch_accounts_before_from);
while ($ref = $sth->fetchrow_hashref("NAME_lc")) {
$trb{ $ref->{accno} }{description} = $ref->{description};
$customer_join
WHERE $where
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
AND (ac.amount < 0)
$customer_join
WHERE $where
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
AND ac.amount > 0
$customer_join
WHERE $saldowhere
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
AND c.accno = ? AND (NOT ac.ob_transaction OR ac.ob_transaction IS NULL)) AS saldo,
$customer_join
WHERE $sumwhere
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
AND ac.amount > 0
$customer_join
WHERE $sumwhere
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
AND ac.amount < 0
$customer_join
WHERE $where
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
AND c.accno = ?) AS last_transaction
$customer_join
WHERE $where
$dpt_where_without_arapgl
- $dpt_where
$customer_where
$project
AND c.accno = ?) AS last_transaction
}
$main::lxdebug->leave_sub();
}
+
+sub erfolgsrechnung {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $myconfig, $form) = @_;
+ $form->{company} = $::instance_conf->get_company;
+ $form->{address} = $::instance_conf->get_address;
+
+ # wrong user inputs should be handled during users input
+ # e.g. spaces, tabs, wrong format or wrong dates
+ $form->{fromdate} = "01.01.2000" if !$form->{fromdate};
+ $form->{todate} = $form->current_date(%{$myconfig}) if !$form->{todate};
+
+ my %categories = (I => "ERTRAG", E => "AUFWAND");
+ my $fromdate = conv_dateq($form->{fromdate});
+ my $todate = conv_dateq($form->{todate});
+
+ $form->{total} = 0;
+ foreach my $category (keys %categories) {
+ my %category = (
+ name => $categories{$category},
+ total => 0,
+ accounts => get_accounts_ch($category),
+ );
+ foreach my $account (@{$category{accounts}}) {
+ $account->{total} += ($account->{category} eq $category ? 1 : -1) * get_total_ch($account->{id}, $fromdate, $todate);
+ $category{total} += $account->{total};
+ $account->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $account->{total}), 2);
+ }
+ $form->{total} += $category{total};
+ $category{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $category{total}), 2);
+ push(@{$form->{categories}}, \%category);
+ }
+ $form->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $form->{total}), 2);
+
+ $main::lxdebug->leave_sub();
+ return {};
+}
+
+sub get_accounts_ch {
+ $main::lxdebug->enter_sub();
+
+ my ($category) = @_;
+ my ($inclusion);
+
+ if ($category eq 'I') {
+ $inclusion = "AND pos_er = NULL OR pos_er > '0' AND pos_er <= '5'";
+ } elsif ($category eq 'E') {
+ $inclusion = "AND pos_er = NULL OR pos_er >= '6' AND pos_er < '100'";
+ } else {
+ $inclusion = "";
+ }
+
+ my $query = qq|
+ SELECT id, accno, description, category
+ FROM chart
+ WHERE category = ? $inclusion
+ ORDER BY accno
+ |;
+ my $accounts = selectall_hashref_query($::form, $::form->get_standard_dbh, $query, $category);
+
+ $main::lxdebug->leave_sub();
+ return $accounts;
+}
+
+sub get_total_ch {
+ $main::lxdebug->enter_sub();
+
+ my ($chart_id, $fromdate, $todate) = @_;
+ my $total = 0;
+ my $query = qq|
+ SELECT SUM(amount)
+ FROM acc_trans
+ WHERE chart_id = ?
+ AND transdate >= ?
+ AND transdate <= ?
+ |;
+ my $data = selectfirst_hashref_query($::form, $::form->get_standard_dbh, $query, $chart_id, $fromdate, $todate);
+ $total += $data->{sum};
+
+ $main::lxdebug->leave_sub();
+ return $total;
+}
+
1;