Revision 76710613
Von Joachim Zach vor fast 14 Jahren hinzugefügt
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
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.