Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision dfcefa49

Von Kivitendo Admin vor fast 11 Jahren hinzugefügt

  • ID dfcefa49d0da88facf307cf40e25ee1a1e39be0c
  • Vorgänger 92652bf7
  • Nachfolger 6e752af8

Startdatum in Bilanz in Mandantenkonfiguration konfigurierbar gemacht

Bisher wurde closed_to ("Bücher schließen zum") als Grundlage für das
Startdatum benutzt. Schließt man die Bücher allerdings monatsweise führt dies
zu falschen Werten. Siehe auch Ticket #2444.

Jetzt kann man Einstellen, ob man
  • weiterhin closed_to benutzt (Default, es ändert sich nichts zu vorher)
  • immer den Jahresanfang nimmt (1.1. relativ zum Stichtag)
  • immer die letzte Eröffnungsbuchung als Startdatum nimmt * mit Jahresanfang als Alternative wenn es keine EB-Buchungen gibt * oder mit "alle Buchungen" als Alternative"
  • immer alle Buchungen seit Beginn der Datenbank nimmt

Das "Bücher schließen Datum" ist sinnvoll, wenn man nur komplette Jahre
schließt. Bei Wirtschaftsjahr = Kalendarjahr entspricht dies aber auch
Jahresanfang.

"Alle Buchungen" kann z.B. sinnvoll sein wenn man ohne Jahresabschluß
durchbucht.

Eröffnungsbuchung mit "alle Buchungen" als Fallback ist z.B. sinnvoll, wenn man
am sich Anfang des zweiten Buchungsjahres befindet, und noch keinen
Jahreswechsel und auch noch keine EB-Buchungen hat.

Bei den Optionen mit EB-Buchungen wird vorausgesetzt, daß diese immer am 1. Tag
des Wirtschaftsjahres gebucht werden.

Zur Sicherheit wird das Startdatum im Bilanzbericht jetzt zusätzlich zum
Stichtag mit angezeigt. Das hilft auch bei der Kontrolle für den
Abgleich mit der GuV.

Es ist geplant dies weiter zu überarbeiten, wenn ein abweichendes
Wirtschaftsjahr umgesetzt wird. Die SuSa kann z.B. derzeit nicht mit
abweichenden Wirtschaftsjahren umgehen.

Unterschiede anzeigen:

SL/Controller/ClientConfig.pm
18 18
__PACKAGE__->run_before('check_auth');
19 19

  
20 20
use Rose::Object::MakeMethods::Generic (
21
  'scalar --get_set_init' => [ qw(defaults all_warehouses all_weightunits all_languages all_currencies all_templates posting_options payment_options accounting_options inventory_options profit_options accounts) ],
21
  'scalar --get_set_init' => [ qw(defaults all_warehouses all_weightunits all_languages all_currencies all_templates posting_options payment_options accounting_options inventory_options profit_options accounts balance_startdate_method_options) ],
22 22
);
23 23

  
24 24
sub action_edit {
......
167 167
    { title => t8("income"),          value => "income"    }, ]
168 168
}
169 169

  
170
sub init_balance_startdate_method_options {
171
  [ { title => t8("After closed period"),                       value => "closed_to"                   },
172
    { title => t8("Start of year"),                             value => "start_of_year"               },
173
    { title => t8("All transactions"),                          value => "all_transactions"            },
174
    { title => t8("Last opening balance or all transactions"),  value => "last_ob_or_all_transactions" },
175
    { title => t8("Last opening balance or start of year"),     value => "last_ob_or_start_of_year"    }, ]
176
}
177

  
170 178
sub init_accounts {
171 179
  my %accounts;
172 180

  
SL/DB/MetaSetup/Default.pm
18 18
  ar_show_mark_as_paid                    => { type => 'boolean', default => 'true' },
19 19
  articlenumber                           => { type => 'text' },
20 20
  assemblynumber                          => { type => 'text' },
21
  balance_startdate_method                => { type => 'text' },
21 22
  bin_id                                  => { type => 'integer' },
22 23
  bin_id_ignore_onhand                    => { type => 'integer' },
23 24
  businessnumber                          => { type => 'text' },
SL/InstanceConfiguration.pm
123 123

  
124 124
Returns the default profit determination method, balance or income
125 125

  
126
=item C<get_balance_startdate_method>
127

  
128
Returns the default method for determining the startdate for the balance
129
report.
130

  
131
Valid options:
132
closed_to start_of_year all_transactions last_ob_or_all_transactions last_ob_or_start_of_year  
126 133

  
127 134
=item C<get_is_changeable>
128 135

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

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

  
56
  return unless $closedto;
55
  # determine date from which the balance is calculated. The method is
56
  # configured in the client configuration.
57 57

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

  
61
  $asofdate = $::locale->parse_date_to_object(\%::myconfig, $asofdate);
62

  
63
  my $form = $main::form;
64
  my $dbh  = $::form->get_standard_dbh;
65

  
66
  my $startdate_method = $::instance_conf->get_balance_startdate_method;
67

  
68
  # We could use the following objects to determine the starting date for
69
  # calculating the balance from asofdate (the reference date for the balance):
70
  # * start_of_year - 1.1., no deviating fiscal year supported
71
  # * closed_to - all transactions since the books were last closed
72
  # * last_ob - all transactions since last opening balance transaction (usually 1.1.)
73
  # * mindate - all transactions in database
74

  
75
  my $start_of_year = $asofdate->clone();
76
  $start_of_year->set_day(1);
77
  $start_of_year->set_month(1);
78

  
79
  # closedto assumes that we only close the books at the end of a fiscal year,
80
  # never during the fiscal year. If this assumption is valid closedto should
81
  # also work for deviating fiscal years. But as the trial balance (SuSa)
82
  # doesn't yet deal with deviating fiscal years, and is useful to also close
83
  # the books after a month has been exported via DATEV, so this method of
84
  # determining the starting date isn't recommended and has been removed as
85
  # default.
86
  my ($closedto) = selectfirst_array_query($form, $dbh, 'SELECT closedto FROM defaults');
87
  if ($closedto) {
88
    $closedto = $::locale->parse_date_to_object(\%::myconfig, $closedto);
89
    $closedto->subtract(years => 1) while ($asofdate - $closedto)->is_negative;
90
    $closedto->add(days => 1);
91
  };
92

  
93
  my ($query, $startdate, $last_ob, $mindate);
94
  $query = qq|select max(transdate) from acc_trans where ob_transaction is true and transdate <= ?|;                                                                         
95
  ($last_ob) = selectrow_query($::form, $dbh, $query, $::locale->format_date(\%::myconfig, $asofdate));
96
  $last_ob = $::locale->parse_date_to_object(\%::myconfig, $last_ob) if $last_ob;
97
 
98
  $query = qq|select min(transdate) from acc_trans|;                                                                                                                       
99
  ($mindate) = selectrow_query($::form, $dbh, $query);
100
  $mindate = $::locale->parse_date_to_object(\%::myconfig, $mindate);
101

  
102
  # the default method is to use all transactions ($mindate)
103

  
104
  if ( $startdate_method eq 'closed_to' and $closedto ) {
105
    # if no closedto is configured use default
106
    return $::locale->format_date(\%::myconfig, $closedto);
107

  
108
  } elsif ( $startdate_method eq 'start_of_year' ) {
109

  
110
    return $::locale->format_date(\%::myconfig, $start_of_year);
111

  
112
  } elsif ( $startdate_method eq 'all_transactions' ) {
113

  
114
    return $::locale->format_date(\%::myconfig, $mindate);
115

  
116
  } elsif ( $startdate_method eq 'last_ob_or_all_transactions' and $last_ob ) {
117
    # use default if there are no ob transactions
118

  
119
    return $::locale->format_date(\%::myconfig, $last_ob);
120

  
121
  } elsif ( $startdate_method eq 'last_ob_or_start_of_year' ) {
122

  
123
    if ( $last_ob ) {
124
      return $::locale->format_date(\%::myconfig, $last_ob);
125
    } else {
126
      return $::locale->format_date(\%::myconfig, $start_of_year);
127
    };
128

  
129
  } else {
130
    # default action, also used for closedto and last_ob_or_all_transactions if
131
    # there are no valid dates
132

  
133
    return $::locale->format_date(\%::myconfig, $mindate);
134
  };
135
     
136
};               
62 137

  
63 138
sub balance_sheet {
64 139
  $main::lxdebug->enter_sub();
......
75 150
    $form->{period} = $form->{this_period} = conv_dateq($form->{asofdate});
76 151
  }
77 152

  
78
  # get end of financial year and convert to Date format
79
  my ($closedto) = selectfirst_array_query($form, $dbh, 'SELECT closedto FROM defaults');
80

  
81
  # get date of last opening balance
82
  my $startdate = get_openbalance_date($closedto, $form->{asofdate});
153
  # get starting date for calculating balance 
154
  $form->{this_startdate} = get_balance_starting_date($form->{asofdate});
83 155

  
84
  get_accounts($dbh, $last_period, $startdate, $form->{asofdate}, $form, \@categories);
156
  get_accounts($dbh, $last_period, $form->{this_startdate}, $form->{asofdate}, $form, \@categories);
85 157

  
86 158
  # if there are any compare dates
87 159
  if ($form->{compareasofdate}) {
88 160
    $last_period = 1;
89 161

  
90
    $startdate = get_openbalance_date($closedto, $form->{compareasofdate});
162
    $form->{last_startdate} = get_balance_starting_date($form->{compareasofdate});
91 163

  
92
    get_accounts($dbh, $last_period, $startdate, $form->{compareasofdate}, $form, \@categories);
164
    get_accounts($dbh, $last_period, $form->{last_startdate} , $form->{compareasofdate}, $form, \@categories);
93 165
    $form->{last_period} = conv_dateq($form->{compareasofdate});
94 166
  }
95 167

  
doc/changelog
85 85
  maximalen Zeitraum in dem in die Zukunft gebucht werden darf (default 360 Tage) (s.a. #1987)
86 86

  
87 87
- Alle Feature-Konfigurationen sind jetzt in der Mandantenkonfiguration eingestellt (s.a. #2300)
88

  
88 89
- Dokumentenbelege optional in WebDAV-Ordner speichern (s.a. #2301)
89 90

  
91
- Die Bestimmung des Startdatums für die Bilanz kann jetzt in der
92
__Mandantenkonfiguration einstellt werden.
93

  
90 94
Wichtige Änderungen:
91 95

  
92 96
- Der Administrationsbereich ist unter einer neuen URL erreichbar:
......
338 342
- Bugfix #2430: installaton_check.pl: bitte -D pushen
339 343
- Bugfix #2432: Neuer Mandant - Kunde oder Lieferant speichern schlägt fehl bei Nummernkreis
340 344
- Bugfix #2433: HTML UStVA-Bericht funktioniert nicht wenn WebDAV Belege speichern aktiv ist
345
- Bugfix #2444: Datum aus "Bücher abschließen zum" wird als Basis für Startdatum der Bilanz benutzt
341 346

  
342 347

  
343 348
2012-12-10 - Release 3.0.0
locale/de/all
176 176
  'Administration'              => 'Administration',
177 177
  'Administration area'         => 'Administration',
178 178
  'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
179
  'After closed period'         => 'Ab geschlossenem Zeitraum',
179 180
  'Aktion'                      => 'Aktion',
180 181
  'All'                         => 'Alle',
181 182
  'All Accounts'                => 'Alle Konten',
......
187 188
  'All reports'                 => 'Alle Berichte (Konten&uuml;bersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
188 189
  'All the other clients will start with an empty set of WebDAV folders.' => 'Alle anderen Mandanten werden mit einem leeren Satz von WebDAV-Ordnern ausgestattet.',
189 190
  'All the selected exports have already been closed, or all of their items have already been executed.' => 'Alle ausgewählten Exporte sind als abgeschlossen markiert, oder für alle Einträge wurden bereits Zahlungen verbucht.',
191
  'All transactions'            => 'Alle Buchungen',
190 192
  'All units have either no or exactly one base unit of which they are multiples.' => 'Einheiten haben entweder keine oder genau eine Basiseinheit, von der sie ein Vielfaches sind.',
191 193
  'All users'                   => 'Alle BenutzerInnen',
192 194
  'Allow access'                => 'Zugriff erlauben',
......
273 275
  'Balance'                     => 'Bilanz',
274 276
  'Balance Sheet'               => 'Bilanz',
275 277
  'Balance sheet date'          => 'Bilanzstichtag',
278
  'Balance startdate method'    => 'Methode zur Ermittlung des Startdatums für Bilanz',
276 279
  'Balancing'                   => 'Bilanzierung',
277 280
  'Bank'                        => 'Bank',
278 281
  'Bank Code'                   => 'BLZ',
......
1233 1236
  'Last Transaction'            => 'Letzte Buchung',
1234 1237
  'Last Vendor Number'          => 'Letzte Lieferantennummer',
1235 1238
  'Last command output'         => 'Ausgabe des letzten Befehls',
1239
  'Last opening balance or all transactions' => 'Letzte Eröffnungsbuchung oder alle Buchungen',
1240
  'Last opening balance or start of year' => 'Letzte Eröffnungsbuchung oder Jahresanfang',
1236 1241
  'Last run at'                 => 'Letzte Ausführung um',
1237 1242
  'Lastcost'                    => 'Einkaufspreis',
1238 1243
  'Lastcost (with X being a number)' => 'Einkaufspreis (X ist eine fortlaufende Zahl)',
......
1972 1977
  'Start Dunning Process'       => 'Mahnprozess starten',
1973 1978
  'Start analysis'              => 'Analyse beginnen',
1974 1979
  'Start date'                  => 'Startdatum',
1980
  'Start of year'               => 'Jahresanfang',
1975 1981
  'Start task server'           => 'Task-Server starten',
1976 1982
  'Start the correction assistant' => 'Korrekturassistenten starten',
1977 1983
  'Startdate_coa'               => 'Gültig ab',
......
2326 2332
  'This means that the user has created an AP transaction and chosen a taxkey for sales taxes, or that he has created an AR transaction and chosen a taxkey for input taxes.' => 'Das bedeutet, dass ein Benutzer eine Kreditorenbuchung angelegt und in ihr einen Umsatzsteuer-Steuerschlüssel verwendet oder eine Debitorenbuchung mit Vorsteuer-Steuerschlüssel angelegt hat.',
2327 2333
  'This module can help you identify and correct such entries by analyzing the general ledger and presenting you likely solutions but also allowing you to fix problems yourself.' => 'Dieses Modul kann Ihnen helfen, problematische Einträge im Hauptbuch zu identifizieren und teilweise zu beheben. Dabei werden je nach Problem mögliche Lösungen aufgezeigt, wobei Sie die entscheiden können, welche Probleme automatisch gelöst werden sollen.',
2328 2334
  'This option controls the inventory system.' => 'Dieser Parameter legt die Warenbuchungsmethode fest.',
2335
  'This option controls the method used for determining the startdate for the balance report.' => 'Diese Option bestimmt, wie das Startdatum für den Bilanzbericht ermittelt wird',
2329 2336
  'This option controls the method used for profit determination.' => 'Dieser Parameter legt die Berechnungsmethode für die Gewinnermittlung fest.',
2330 2337
  'This option controls the posting and calculation behavior for the accounting method.' => 'Dieser Parameter steuert die Buchungs- und Berechnungsmethoden für die Versteuerungsart.',
2331 2338
  'This partnumber is not unique. You should change it.' => 'Diese Artikelnummer ist nicht eindeutig. Bitte wählen Sie eine andere.',
templates/webpages/client_config/_posting_configuration.html
81 81
   <td>[% L.select_tag('defaults.profit_determination', SELF.profit_options, value_key = 'value', title_key = 'title', default = SELF.defaults.profit_determination) %]</td>
82 82
   <td>[% LxERP.t8('This option controls the method used for profit determination.') %]</td>
83 83
  </tr>
84
  <tr>
85
   <td align="right">[% LxERP.t8('Balance startdate method') %]</td>
86
   <td>[% L.select_tag('defaults.balance_startdate_method', SELF.balance_startdate_method_options, value_key = 'value', title_key = 'title', default = SELF.defaults.balance_startdate_method) %]</td>
87
   <td>[% LxERP.t8('This option controls the method used for determining the startdate for the balance report.') %]</td>
88
  </tr>
84 89
 </table>
85 90
</div>
templates/webpages/rp/balance_sheet.html
12 12
<table border="0">
13 13
  <tr>
14 14
    <th align="left" width="400" colspan="2">[% 'ASSETS' | $T8 %]<br><hr align="left" width="250" size="5" noshade></th>
15
    <th><b>[% this_period %]<b></th>
16
    <th><b>[% last_period %]<b></th>
15
    <th><b>[% this_startdate %] - [% this_period %]<b></th>
16
    <th><b>[% IF last_period %][% last_startdate %] - [% last_period %][% END %]<b></th>
17 17
  </tr>
18 18

  
19 19
  [% FOREACH row = A %]

Auch abrufbar als: Unified diff