$sql = "SELECT SUM(ac.amount) AS saldo
FROM acc_trans ac
JOIN chart c ON (c.id = ac.chart_id)
- WHERE (ac.transdate <= '31.12.2020')
+ WHERE (ac.transdate <= '30.12.2020')
AND (c.accno = '$mapping->{fromacc}') ";
my $result = SL::DBUtils::selectall_hashref_query($::form, $::form->get_standard_dbh, $sql);
$fromacc{$mapping->{fromacc}} = $result->[0]->{saldo};
}
elsif ($mapping->{typ} eq 'S') {
# process Soll
- $fromacc{$mapping->{fromacc}} = 200.;
- $toacc{$mapping->{toacc}} = 200.;
+ $sql = "SELECT SUM(ac.amount)* -1 AS saldo
+ FROM acc_trans ac
+ JOIN chart c ON (c.id = ac.chart_id)
+ WHERE (ac.transdate <= '30.12.2020')
+ AND (c.accno = '$mapping->{fromacc}') ";
+ my @result = SL::DBUtils::selectfirst_array_query($::form, $::form->get_standard_dbh, $sql);
+ $fromacc{$mapping->{fromacc}} = $result[0];
+ $toacc{$mapping->{toacc}} += $result[0];
}
elsif ($mapping->{typ} eq 'V') {
# process Vorjahr
$toacc{$mapping->{toacc}} = 400.;
}
elsif ($mapping->{typ} eq 'X') {
- # process Soll
- $fromacc{$mapping->{fromacc}} += $toacc{$mapping->{fromacc}};
+ # add to other account
$toacc{$mapping->{toacc}} += $toacc{$mapping->{fromacc}};
}
+ elsif ($mapping->{typ} eq 'Y') {
+ # substract from other account
+ $toacc{$mapping->{toacc}} -= $toacc{$mapping->{fromacc}};
+ }
else {
- die "Error: Invalid mapping type\n";
+ die "Error: Invalid mapping type: $mapping->{typ}\n";
}
}
controller_class => 'Mebil',
output_format => 'HTML',
# raw_top_info_text => $self->render('financial_overview/report_top', { output => 0 }, YEARS_TO_LIST => [ reverse(($self->current_year - 10)..($self->current_year + 5)) ]),
- title => 'mebil - Mapping',
+ title => 'mebil - Mapping: Werte für 2020',
# allow_pdf_export => 1,
# allow_csv_export => 1,
);
$self->report->set_columns(%column_defs);
$self->report->set_column_order(@columns);
# $self->report->set_export_options(qw(list year subtotals_per_quarter salesman_id));
- $self->report->set_options_from_form;
-
- while (my($a,$v) = each(%fromacc)) {
- if ($a =~ /\d+/) {
- # list only kivitendo accounts
- my %data = (
- name => { data => $a },
- amount => { data => $v },
- );
- $self->report->add_data(\%data);
- }
- }
- while (my($a,$v) = each(%toacc)) {
+ $self->report->set_options_from_form;
+ $self->add_data_sorted(\%fromacc);
+ $self->add_data_sorted(\%toacc);
+
+ return $self->report->generate_with_headers;
+ $::lxdebug->leave_sub;
+}
+sub add_data_sorted {
+ my $self = shift;
+ my $data = shift; # hash reference
+
+ foreach my $key (sort keys %$data) {
my %data = (
- name => { data => $a },
- amount => { data => $v },
+ name => { data => $key },
+ amount => { data => $::form->format_amount(\%::myconfig, $data->{$key}, 2) },
);
$self->report->add_data(\%data);
+
}
-
- return $self->report->generate_with_headers;
- $::lxdebug->leave_sub;
}
-
sub prepare_report {
my ($self) = @_;