]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/Controller/Mebil.pm
epic-ts
[kivitendo-erp.git] / SL / Controller / Mebil.pm
index fa80bcac8151ab8707c736fd457522305b84414c..ba50427b336f10eee93c7306eef0c543d22dd11c 100644 (file)
@@ -73,7 +73,7 @@ sub action_calcmap {
                        $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};
@@ -81,8 +81,14 @@ sub action_calcmap {
                }
                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
@@ -95,12 +101,15 @@ sub action_calcmap {
                        $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";
                }
        }
        
@@ -120,37 +129,33 @@ sub action_calcmap {
     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)      = @_;