Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 76710613

Von Joachim Zach vor fast 14 Jahren hinzugefügt

  • ID 76710613b560641e094bcaa7cc65b1feca9564d0
  • Vorgänger 2bc081d8
  • Nachfolger 89d767d3

Bilanz repariert

Die Bilanzfunktion war seit der Einführung einer EB kaputt. Das einfache
Summieren seit Anbeginn der Welt funktioniert nicht mehr, da die EB und
SB-Buchungen alles verdoppeln.
Am Tag der EB sollte die Bilanz die Eröffnungsbilanz reproduzieren und alles
aus der Vorperiode ignorieren.
Ich habe das in RP.pm aufgesetzt, indem die Summierung nur noch ab dem Tag
"yearend" +1 läuft. yearend wird hierbei aus der Tabelle defaults ausgelesen.
Soweit ich sehe, wird dies Variable sonst nirgendwo benutzt.
Der patch führt eine neue Abhängigkeit vom Modul Date::Pcalc ein.
Ich habe außerdem noch einige unsinnige Doppelsummierungen entfernt.

Die Bilanz funktioniert jetzt. Es gibt wie früher eine Ausgleichsposition, die
ich jetzt "nicht verbuchter Gewinn/Verlust" genannt habe. Sie entsteht, wenn
zum Stichtag die Aufwands-/Ertragskonten noch nicht vollständig abgeschlossen
sind (oder die EB fehlerhaft war). Da ich am Template nichts geändert habe,
taucht sie jetzt (wie auch früher) etwas unglücklich unter "EIGENTUM" auf.

Unterschiede anzeigen:

SL/RP.pm
49 49
# - subdescription
50 50
# - proper testing for heading charts
51 51
# - transmission from $form to TMPL realm is not as clear as i'd like
52

  
53
sub get_openbalance_date {
54
  my ($closedto, $target) = map { $::locale->parse_date_to_object(\%::myconfig, $_) } @_;
55

  
56
  $closedto->subtract(years => 1) while ($target - $closedto)->is_negative;
57
  $closedto->add(days => 1);
58
  return $::locale->format_date(\%::myconfig, $closedto);
59
}
60

  
52 61
sub balance_sheet {
53 62
  $main::lxdebug->enter_sub();
54 63

  
55 64
  my $myconfig = \%main::myconfig;
56 65
  my $form     = $main::form;
57
  my $dbh      = $form->get_standard_dbh($myconfig);
66
  my $dbh      = $::form->get_standard_dbh;
58 67

  
59 68
  my $last_period = 0;
60 69
  my @categories  = qw(A C L Q);
......
64 73
    $form->{period} = $form->{this_period} = conv_dateq($form->{asofdate});
65 74
  }
66 75

  
67
  get_accounts($dbh, $last_period, "", $form->{asofdate}, $form, \@categories);
76
  # get end of financial year and convert to Date format
77
  my ($closedto) = selectfirst_arrayref_query($form, $dbh, 'SELECT closedto FROM defaults');
78

  
79
  # get date of last opening balance
80
  my $startdate = get_openbalance_date($closedto, $form->{asofdate});
81

  
82
  get_accounts($dbh, $last_period, $startdate, $form->{asofdate}, $form, \@categories);
68 83

  
69 84
  # if there are any compare dates
70 85
  if ($form->{compareasofdate}) {
71 86
    $last_period = 1;
72
    get_accounts($dbh, $last_period, "", $form->{compareasofdate}, $form, \@categories);
87

  
88
    $startdate = get_openbalance_date($closedto, $form->{compareasofdate});
89

  
90
    get_accounts($dbh, $last_period, $startdate, $form->{compareasofdate}, $form, \@categories);
73 91
    $form->{last_period} = conv_dateq($form->{compareasofdate});
74 92
  }
75 93

  
......
118 136
        next if ($period eq 'last' && !$last_period);
119 137
        # only add assets
120 138
        $row->{$period}                    *= $ml;
121
        $form->{total}{$category}{$period} += $row->{$period};      #      if ($row->{charttype} eq 'A') {   # why??
122 139
      }
123 140

  
124 141
      push @{ $TMPL_DATA->{$category} }, $row;
......
138 155
  for my $period (qw(this last)) {
139 156
    next if ($period eq 'last' && !$last_period);
140 157

  
141
    $form->{E}{$period}             = $form->{total}{A}{$period} - $form->{total}{L}{$period} - $form->{total}{Q}{$period};
142
    $form->{total}{Q}{$period}     += $form->{E}{$period};
143
    $TMPL_DATA->{total}{Q}{$period} = $form->{total}{Q}{$period};
144
    $TMPL_DATA->{total}{$period}    = $form->{total}{L}{$period} + $form->{total}{Q}{$period};
158
    $form->{E}{$period}             = $TMPL_DATA->{total}{A}{$period} - $TMPL_DATA->{total}{L}{$period} - $TMPL_DATA->{total}{Q}{$period};
159
    $TMPL_DATA->{total}{Q}{$period}     += $form->{E}{$period};
160
    $TMPL_DATA->{total}{$period}    = $TMPL_DATA->{total}{L}{$period} + $TMPL_DATA->{total}{Q}{$period};
145 161
  }
146

  
162
    $form->{E}{description}='nicht verbuchter Gewinn/Verlust';
147 163
  push @{ $TMPL_DATA->{Q} }, $form->{E};
148 164

  
149 165
  $main::lxdebug->leave_sub();
......
1186 1202
  if ($form->{review_of_aging_list}) {
1187 1203
    if ($form->{review_of_aging_list} =~ m "-"){
1188 1204
      my @period = split(/-/, $form->{review_of_aging_list});
1189
      $review_of_aging_list = " AND $period[0] < date_part('days', now() - duedate) 
1205
      $review_of_aging_list = " AND $period[0] < date_part('days', now() - duedate)
1190 1206
                                AND date_part('days', now() - duedate)  < $period[1]";
1191 1207
    } else {
1192 1208
      $form->{review_of_aging_list} =~ s/[^0-9]//g;
1193
      $review_of_aging_list = " AND $form->{review_of_aging_list} < date_part('days', now() - duedate)"; 
1209
      $review_of_aging_list = " AND $form->{review_of_aging_list} < date_part('days', now() - duedate)";
1194 1210
    }
1195 1211
  }
1196 1212

  

Auch abrufbar als: Unified diff