Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 05c6840d

Von Moritz Bunkus vor fast 14 Jahren hinzugefügt

  • ID 05c6840d4fbb90cbe81e14427617793c45ba4714
  • Vorgänger 2af9eae7
  • Nachfolger 9437bec6

Dateiencodings auf UTF-8 geändert

Fix für Bug 1375.

Unterschiede anzeigen:

SL/AccTransCorrections.pm
1 1
package AccTransCorrections;
2 2

  
3
use utf8;
3 4
use strict;
4 5

  
5 6
use List::Util qw(first);
......
129 130
    delete $entry->{chartlink};
130 131
  }
131 132

  
132
  # Verkn?pfungen zwischen Steuerschl?sseln und zum Zeitpunkt der Transaktion
133
  # g?ltigen Steuers?tze
133
  # Verknüpfungen zwischen Steuerschlüsseln und zum Zeitpunkt der Transaktion
134
  # gültigen Steuersätze
134 135
  my %all_taxes = $self->{taxkeys}->get_full_tax_info('transdate' => $transaction->[0]->{transdate});
135 136

  
136 137
  my ($trans_type, $previous_non_tax_entry);
......
184 185
    }
185 186
  }
186 187

  
187
  # Alle Eintr?ge entfernen, die die Gegenkonten zu Zahlungsein- und
188
  # -ausg?ngen darstellen.
188
  # Alle Einträge entfernen, die die Gegenkonten zu Zahlungsein- und
189
  # -ausgängen darstellen.
189 190
  foreach my $payment (@{ $data->{payments} }) {
190 191
    my $idx = 0 < $payment->{amount} ? 'debit' : 'credit';
191 192

  
......
253 254
}
254 255

  
255 256
# Problemfall: Verkaufsrechnungen, bei denen Buchungen auf Warenbestandskonten
256
# mit Steuerschl?ssel != 0 durchgef?hrt wurden. Richtig w?re, dass alle
257
# Steuerschl?ssel f?r solche Warenbestandsbuchungen 0 sind.
257
# mit Steuerschlüssel != 0 durchgeführt wurden. Richtig wäre, dass alle
258
# Steuerschlüssel für solche Warenbestandsbuchungen 0 sind.
258 259
sub _check_trans_invoices_inventory_with_taxkeys {
259 260
  $main::lxdebug->enter_sub();
260 261

  
......
289 290
}
290 291

  
291 292
# Problemfall: Verkaufsrechnungen, bei denen Steuern verbucht wurden, obwohl
292
# kein Steuerschl?ssel eingetragen ist.
293
# kein Steuerschlüssel eingetragen ist.
293 294
sub _check_missing_taxkeys_in_invoices {
294 295
  $::lxdebug->enter_sub;
295 296

  
......
331 332
  return $found_broken;
332 333
}
333 334

  
334
# Problemfall: Kreditorenbuchungen, bei denen mit Umsatzsteuerschl?sseln
335
# gebucht wurde und Debitorenbuchungen, bei denen mit Vorsteuerschl?sseln
335
# Problemfall: Kreditorenbuchungen, bei denen mit Umsatzsteuerschlüsseln
336
# gebucht wurde und Debitorenbuchungen, bei denen mit Vorsteuerschlüsseln
336 337
# gebucht wurde.
337 338
sub _check_trans_ap_ar_wrong_taxkeys {
338 339
  $main::lxdebug->enter_sub();
......
360 361
}
361 362

  
362 363
# Problemfall: Splitbuchungen, die mehrere Haben- und Sollkonten ansprechen.
363
# Aber nur f?r Debitoren- und Kreditorenbuchungen, weil das bei Einkaufs- und
364
# Verkaufsrechnungen hingegen v?llig normal ist.
364
# Aber nur für Debitoren- und Kreditorenbuchungen, weil das bei Einkaufs- und
365
# Verkaufsrechnungen hingegen völlig normal ist.
365 366
sub _check_trans_split_multiple_credit_and_debit {
366 367
  $main::lxdebug->enter_sub();
367 368

  
......
385 386
}
386 387

  
387 388
# Problemfall: Buchungen, bei denen Steuersummen nicht mit den Summen
388
# ?bereinstimmen, die nach ausgew?hltem Steuerschl?ssel h?tten auftreten m?ssen.
389
# übereinstimmen, die nach ausgewähltem Steuerschlüssel hätten auftreten müssen.
389 390
sub _check_trans_wrong_taxkeys {
390 391
  $main::lxdebug->enter_sub();
391 392

  
......
510 511
  return $retval;
511 512
}
512 513

  
513
# Inaktiver Code f?r das Erraten m?glicher Verteilungen von
514
# Steuerschl?sseln. Deaktiviert, weil er exponentiell Zeit
515
# ben?tigt.
514
# Inaktiver Code für das Erraten möglicher Verteilungen von
515
# Steuerschlüsseln. Deaktiviert, weil er exponentiell Zeit
516
# benötigt.
516 517

  
517 518
#       if (abs($expected_tax - $data{$side}->{tax_sum}) >= 0.02) {
518 519
#         my @potential_taxkeys = $trans_type eq 'AP' ? (0, 8, 9) : (0, 1, 2, 3);
519 520

  
520 521
#         $main::lxdebug->dump(0, "pota", \@potential_taxkeys);
521 522

  
522
#         # ?ber alle Kombinationen aus Buchungss?tzen und potenziellen Steuerschl?sseln
523
#         # Über alle Kombinationen aus Buchungssätzen und potenziellen Steuerschlüsseln
523 524
#         # iterieren und jeweils die Summe ermitteln.
524 525
#         my $num_entries    = scalar @{ $data{$side}->{entries} };
525 526
#         my @taxkey_indices = (0) x $num_entries;
......
533 534
#         while ($num_entries == scalar @taxkey_indices) {
534 535
#           my @tax_cache = ();
535 536

  
536
#           # Berechnen der Steuersumme f?r die aktuell angenommenen Steuerschl?ssel.
537
#           # Berechnen der Steuersumme für die aktuell angenommenen Steuerschlüssel.
537 538
#           my $tax_sum = 0;
538 539
#           foreach my $i (0 .. $num_entries - 1) {
539 540
#             my $taxkey      = $potential_taxkeys[$taxkey_indices[$i]];
......
543 544
#             $tax_sum       += $tax_cache[$i];
544 545
#           }
545 546

  
546
#           # Entspricht die Steuersumme mit den aktuell angenommenen Steuerschl?sseln
547
#           # Entspricht die Steuersumme mit den aktuell angenommenen Steuerschlüsseln
547 548
#           # der verbuchten Steuersumme? Wenn ja, dann ist das eine potenzielle
548
#           # L?sung.
549
#           # Lösung.
549 550
#           if (abs($tax_sum - $data{$side}->{tax_sum}) < 0.02) {
550 551
#             push @solutions, {
551 552
#               'taxkeys' => [ @potential_taxkeys[@taxkey_indices] ],
......
553 554
#             }
554 555
#           }
555 556

  
556
#           # Weiterz?hlen der Steuerschl?sselindices zum Interieren ?ber
557
#           # alle m?glichen Kombinationen.
557
#           # Weiterzählen der Steuerschlüsselindices zum Interieren über
558
#           # alle möglichen Kombinationen.
558 559
#           my $i = 0;
559 560
#           while (1) {
560 561
#             $taxkey_indices[$i]++;
SL/CA.pm
34 34
#
35 35
#======================================================================
36 36

  
37
use utf8;
38
use strict;
39

  
37 40
package CA;
38 41
use Data::Dumper;
39 42
use SL::DBUtils;
40 43

  
41
use strict;
42

  
43 44
sub all_accounts {
44 45
  $main::lxdebug->enter_sub();
45 46

  
......
50 51
  # connect to database
51 52
  my $dbh = $form->dbconnect($myconfig);
52 53

  
53
  # bug 1071 Warum sollte bei Erreichen eines neuen Jahres die Konten?bersicht nur noch die
54
  # bug 1071 Warum sollte bei Erreichen eines neuen Jahres die Kontenübersicht nur noch die
54 55
  # bereits bebuchten Konten anzeigen?
55 56
  # Folgende Erweiterung:
56
  # 1.) Gehe zur?ck bis zu dem Datum an dem die B?cher geschlossen wurden
57
  # 2.) Falls die B?cher noch nie geschlossen wurden, gehe zur?ck bis zum Bearbeitungsstart
57
  # 1.) Gehe zurück bis zu dem Datum an dem die Bücher geschlossen wurden
58
  # 2.) Falls die Bücher noch nie geschlossen wurden, gehe zurück bis zum Bearbeitungsstart
58 59
  # COALESCE((SELECT closedto FROM defaults),(SELECT itime FROM defaults))
59 60

  
60 61
  my $closedto_sql = "COALESCE((SELECT closedto FROM defaults),(SELECT itime FROM defaults))";
61 62

  
62
  if ($form->{method} eq "cash") {  # E?R
63
  if ($form->{method} eq "cash") {  # EÜR
63 64
    $acc_cash_where = qq| AND (a.trans_id IN (SELECT id FROM ar WHERE datepaid>= $closedto_sql
64 65
                          UNION SELECT id FROM ap WHERE datepaid>= $closedto_sql
65 66
                          UNION SELECT id FROM gl WHERE transdate>= $closedto_sql
......
284 285
    $query =
285 286
      qq|SELECT a.id, a.reference, a.description, ac.transdate, ac.chart_id, | .
286 287
      qq|  $false AS invoice, ac.amount, 'gl' as module, | .
287
      qq?(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo ? .
288
      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo § .
288 289
      qq|FROM acc_trans ac, gl a | .
289 290
      $dpt_join .
290 291
      qq|WHERE | . $where . $dpt_where . $project .
......
296 297

  
297 298
      qq|SELECT a.id, a.invnumber, c.name, ac.transdate, ac.chart_id, | .
298 299
      qq|  a.invoice, ac.amount, 'ar' as module, | .
299
      qq?(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  ? .
300
      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  § .
300 301
      qq|FROM acc_trans ac, customer c, ar a | .
301 302
      $dpt_join .
302 303
      qq|WHERE | . $where . $dpt_where . $project .
......
309 310

  
310 311
      qq|SELECT a.id, a.invnumber, v.name, ac.transdate, ac.chart_id, | .
311 312
      qq|  a.invoice, ac.amount, 'ap' as module, | .
312
      qq?(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  ? .
313
      qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo, ac.source || ' ' || ac.memo AS memo  § .
313 314
      qq|FROM acc_trans ac, vendor v, ap a | .
314 315
      $dpt_join .
315 316
      qq|WHERE | . $where . $dpt_where . $project .
......
345 346

  
346 347
        qq|SELECT a.id, a.invnumber, c.name, a.transdate, | .
347 348
        qq|  a.invoice, ac.qty * ac.sellprice AS sellprice, 'ar' as module, | .
348
        qq?(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo ? .
349
        qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo § .
349 350
        qq|FROM ar a | .
350 351
        qq|JOIN invoice ac ON (ac.trans_id = a.id) | .
351 352
        qq|JOIN parts p ON (ac.parts_id = p.id) | .
......
360 361

  
361 362
        qq|SELECT a.id, a.invnumber, v.name, a.transdate, | .
362 363
        qq|  a.invoice, ac.qty * ac.sellprice AS sellprice, 'ap' as module, | .
363
        qq?(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo ? .
364
        qq§(SELECT accno||'--'||rate FROM tax LEFT JOIN chart ON (tax.chart_id=chart.id) WHERE tax.id = (SELECT tax_id FROM taxkeys WHERE taxkey_id = ac.taxkey AND taxkeys.startdate <= ac.transdate ORDER BY taxkeys.startdate DESC LIMIT 1)) AS taxinfo § .
364 365
        qq|FROM ap a | .
365 366
        qq|JOIN invoice ac ON (ac.trans_id = a.id) | .
366 367
        qq|JOIN parts p ON (ac.parts_id = p.id) | .
SL/Common.pm
8 8

  
9 9
package Common;
10 10

  
11
use utf8;
12
use strict;
13

  
11 14
use Time::HiRes qw(gettimeofday);
12 15
use Data::Dumper;
13 16

  
......
15 18

  
16 19
use vars qw(@db_encodings %db_encoding_to_charset %charset_to_db_encoding);
17 20

  
18
use strict;
19

  
20 21
@db_encodings = (
21 22
  { "label" => "ASCII",          "dbencoding" => "SQL_ASCII", "charset" => "ASCII" },
22 23
  { "label" => "UTF-8 Unicode",  "dbencoding" => "UNICODE",   "charset" => "UTF-8" },
......
286 287

  
287 288
  my $query =
288 289
    qq!SELECT id, name, customernumber, (street || ', ' || zipcode || city) AS address FROM customer ! .
289
    qq!WHERE $filter business_id = (SELECT id FROM business WHERE description = 'H?ndler') ! .
290
    qq!WHERE $filter business_id = (SELECT id FROM business WHERE description = ?') ! .
290 291
    qq!ORDER BY $order_by $order_dir!;
292
  push @filter_values, $::locale->{iconv_utf8}->convert('Händler');
291 293
  my $sth = $dbh->prepare($query);
292 294
  $sth->execute(@filter_values) ||
293 295
    $form->dberror($query . " (" . join(", ", @filter_values) . ")");
......
373 375
    my $base_path = substr($ENV{'SCRIPT_NAME'}, 1);
374 376
    $base_path =~ s|[^/]+$||;
375 377
    $base_path =~ s|/$||;
376
    # wo kommt der wert f?r dir her? es wird doch gar nichts ?bergeben? fix f?r strict my $dir jb 21.2.
378
    # wo kommt der wert für dir her? es wird doch gar nichts übergeben? fix für strict my $dir jb 21.2.
377 379
    if (opendir my $dir, $path) {
378 380
      foreach my $file (sort { lc $a cmp lc $b } readdir $dir) {
379 381
        next if (($file eq '.') || ($file eq '..'));
SL/DATEV.pm
26 26

  
27 27
package DATEV;
28 28

  
29
use List::Util qw(max);
29
use utf8;
30
use strict;
30 31

  
31 32
use SL::DBUtils;
32 33
use SL::DATEV::KNEFile;
......
34 35

  
35 36
use Data::Dumper;
36 37
use File::Path;
38
use List::Util qw(max);
37 39
use Time::HiRes qw(gettimeofday);
38 40

  
39
use strict;
40

  
41 41
sub _get_export_path {
42 42
  $main::lxdebug->enter_sub();
43 43

  
......
776 776
      my $taxkey         = 0;
777 777
      my $charttax       = 0;
778 778
      my ($haben, $soll);
779
      my $iconv          = $main::locale->{iconv_iso8859};
780
      my %umlaute = ($iconv->convert('?') => 'ae',
781
                     $iconv->convert('?') => 'oe',
782
                     $iconv->convert('?') => 'ue',
783
                     $iconv->convert('?') => 'Ae',
784
                     $iconv->convert('?') => 'Oe',
785
                     $iconv->convert('?') => 'Ue',
786
                     $iconv->convert('?') => 'sz');
779
      my $iconv          = $::locale->{iconv_utf8};
780
      my %umlaute = ($iconv->convert('ä') => 'ae',
781
                     $iconv->convert('ö') => 'oe',
782
                     $iconv->convert('ü') => 'ue',
783
                     $iconv->convert('Ä') => 'Ae',
784
                     $iconv->convert('Ö') => 'Oe',
785
                     $iconv->convert('Ü') => 'Ue',
786
                     $iconv->convert('ß') => 'sz');
787 787
      for (my $i = 0; $i < $trans_lines; $i++) {
788 788
        if ($trans_lines == 2) {
789 789
          if (abs($transaction->[$i]->{'amount'}) > abs($umsatz)) {
SL/DB/Helpers/Mappings.pm
1 1
package SL::DB::Helpers::Mappings;
2 2

  
3
use utf8;
3 4
use strict;
4 5

  
5 6
# these will not be managed as Rose::DB models, because they are not normalized,
......
181 182

  
182 183
=head1 AUTHOR
183 184

  
184
Sven Sch?ling <s.schoeling@linet-services.de>
185
Sven Schöling <s.schoeling@linet-services.de>
185 186

  
186 187
=cut
SL/DB/Order.pm
1 1
package SL::DB::Order;
2 2

  
3
use utf8;
3 4
use strict;
4 5

  
5 6
use SL::RecordLinks;
......
98 99

  
99 100
=head1 AUTHOR
100 101

  
101
  Sven Sch?ling <s.schoeling@linet-services.de>
102
Sven Schöling <s.schoeling@linet-services.de>
102 103

  
103 104
=cut
SL/Locale.pm
109 109
  $self->{iconv_english}    = SL::Iconv->new('ASCII',          $db_charset);
110 110
  $self->{iconv_iso8859}    = SL::Iconv->new('ISO-8859-15',    $db_charset);
111 111
  $self->{iconv_to_iso8859} = SL::Iconv->new($db_charset,      'ISO-8859-15');
112
  $self->{iconv_utf8}       = SL::Iconv->new('UTF-8',          $db_charset);
112 113

  
113 114
  $self->_read_special_chars_file($country);
114 115

  
SL/RecordLinks.pm
1 1
package RecordLinks;
2 2

  
3
use utf8;
4
use strict;
5

  
3 6
use SL::Common;
4 7
use SL::DBUtils;
5 8
use Data::Dumper;
6 9
use List::Util qw(reduce);
7 10

  
8
use strict;
9

  
10 11
sub create_links {
11 12
  $main::lxdebug->enter_sub();
12 13

  
......
243 244

  
244 245
Transitive RecordLinks mit get_links_via.
245 246

  
246
get_links_via erwartet den zus?tzlichen parameter via. via ist ein
247
hashref mit den jeweils optionalen Eintr?gen table und id, die sich
247
get_links_via erwartet den zusätzlichen parameter via. via ist ein
248
hashref mit den jeweils optionalen Einträgen table und id, die sich
248 249
genauso verhalten wie die from/to_table/id werte der get_links funktion.
249 250

  
250 251
Alternativ kann via auch ein Array dieser Hashes sein:
......
267 268
    ],
268 269
  )
269 270

  
270
Die Eintr?ge in einem via-Array werden exakt in dieser Reihenfolge
271
benutzt und sind nicht optional. Da obige Beispiel w?rde also die
272
Verkn?pfung:
271
Die Einträge in einem via-Array werden exakt in dieser Reihenfolge
272
benutzt und sind nicht optional. Da obige Beispiel würde also die
273
Verknüpfung:
273 274

  
274 275
  oe:11 -> ar:12 -> is:13 -> do:14
275 276

  
SL/USTVA.pm
29 29

  
30 30
use SL::DBUtils;
31 31

  
32
use utf8;
32 33
use strict;
33 34

  
34 35
my @tax_office_information = (
35
  { 'id' =>  8, 'name' => 'Baden-W?rttemberg',      'taxbird_nr' => '0',  'elster_format' => 'FF/BBB/UUUUP',  },
36
  { 'id' =>  8, 'name' => 'Baden-Württemberg',      'taxbird_nr' => '0',  'elster_format' => 'FF/BBB/UUUUP',  },
36 37
  { 'id' =>  9, 'name' => 'Bayern',                 'taxbird_nr' => '1',  'elster_format' => 'FFF/BBB/UUUUP', },
37 38
  { 'id' => 11, 'name' => 'Berlin',                 'taxbird_nr' => '2',  'elster_format' => 'FF/BBB/UUUUP',  },
38 39
  { 'id' => 12, 'name' => 'Brandenburg',            'taxbird_nr' => '3',  'elster_format' => 'FFF/BBB/UUUUP', },
......
47 48
  { 'id' => 14, 'name' => 'Sachsen',                'taxbird_nr' => '12', 'elster_format' => 'FFF/BBB/UUUUP', },
48 49
  { 'id' => 15, 'name' => 'Sachsen-Anhalt',         'taxbird_nr' => '13', 'elster_format' => 'FFF/BBB/UUUUP', },
49 50
  { 'id' =>  1, 'name' => 'Schleswig-Holstein',     'taxbird_nr' => '14', 'elster_format' => 'FF BBB UUUUP',  },
50
  { 'id' => 16, 'name' => 'Th?ringen',              'taxbird_nr' => '15', 'elster_format' => 'FFF/BBB/UUUUP', },
51
  { 'id' => 16, 'name' => 'Thüringen',              'taxbird_nr' => '15', 'elster_format' => 'FFF/BBB/UUUUP', },
51 52
  );
52 53

  
53 54
sub new {
......
69 70

  
70 71
  foreach (@tax_office_information) {
71 72
    my $entry      = \%{ $_ };
72
    $entry->{name} = $main::locale->{iconv_iso8859}->convert($entry->{name});
73
    $entry->{name} = $::locale->{iconv_utf8}->convert($entry->{name});
73 74
    push @{ $self->{tax_office_information} }, $entry;
74 75
  }
75 76
}
......
282 283

  
283 284
#  use SL::Form;
284 285

  
285
  # Referenz wird ?bergeben, hash of hash wird nicht
286
  # in neues  Hash kopiert, sondern direkt ?ber die Referenz ver?ndert
287
  # Prototyp f?r diese Konstruktion
286
  # Referenz wird übergeben, hash of hash wird nicht
287
  # in neues  Hash kopiert, sondern direkt über die Referenz verändert
288
  # Prototyp für diese Konstruktion
288 289

  
289 290
  my ($self, $land, $elsterFFFF, $elster_init) = @_;
290 291

  
......
302 303
                var elsterBLAuswahl = document.verzeichnis.elsterland_new;
303 304
                var elsterFAAuswahl = document.verzeichnis.elsterFFFF_new;
304 305

  
305
                elsterFAAuswahl.options.length = 0; // dropdown aufr?umen
306
                elsterFAAuswahl.options.length = 0; // dropdown aufräumen
306 307
                |;
307 308

  
308 309
  foreach my $elster_land (sort keys %$elster_init) {
......
427 428
  $main::lxdebug->enter_sub();
428 429

  
429 430
  # noch nicht fertig
430
  # soll mal eine Erinnerungsfunktion f?r USTVA Abgaben werden, die automatisch
431
  # den Termin der n?chsten USTVA anzeigt.
431
  # soll mal eine Erinnerungsfunktion für USTVA Abgaben werden, die automatisch
432
  # den Termin der nächsten USTVA anzeigt.
432 433
  #
433 434
  #
434 435
  my ($today, $FA_dauerfrist, $FA_voranmeld) = @_;
......
522 523

  
523 524
    #There is no table, read the table from sql/finanzamt.sql
524 525
    print qq|<p>Bitte warten, Tabelle $table wird einmalig in Datenbank:
525
    $myconfig->{dbname} als Benutzer: $myconfig->{dbuser} hinzugef?gt...</p>|;
526
    $myconfig->{dbname} als Benutzer: $myconfig->{dbuser} hinzugefügt...</p>|;
526 527
    process_query($form, $dbh, $filename) || $self->error(DBI->errstr);
527 528

  
528 529
    #execute second last call
......
741 742
  }
742 743

  
743 744

  
744
  # Fixme: Wird auch noch f?r Oesterreich gebraucht,
745
  # Fixme: Wird auch noch für Oesterreich gebraucht,
745 746
  # weil kein eigenes Ausgabeformular
746
  # sotte aber aus der allgem?inen Steuerberechnung verschwinden
747
  # sotte aber aus der allgeméinen Steuerberechnung verschwinden
747 748
  #
748 749
  # Berechnung der USTVA Formularfelder laut Bogen 207
749 750
  #
......
925 926

  
926 927
  #########################################
927 928
  # Ausgaben und Gl Buchungen sind gleich
928
  # f?r Ist- und Soll-Versteuerung
929
  # für Ist- und Soll-Versteuerung
929 930
  #########################################
930 931
  $query .= qq|
931 932
     UNION -- alle Ausgaben AP erfassen
bin/mozilla/am.pl
31 31
#
32 32
#======================================================================
33 33

  
34
use utf8;
35

  
34 36
use SL::Auth;
35 37
use SL::AM;
36 38
use SL::CA;
......
213 215

  
214 216
  my $select_eur = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
215 217
  my %eur = (
216
          1  => "Umsatzerl?se",
217
          2  => "sonstige Erl?se",
218
          1  => "Umsatzerlöse",
219
          2  => "sonstige Erlöse",
218 220
          3  => "Privatanteile",
219
          4  => "Zinsertr?ge",
220
          5  => "Ausserordentliche Ertr?ge",
221
          4  => "Zinserträge",
222
          5  => "Ausserordentliche Erträge",
221 223
          6  => "Vereinnahmte Umsatzst.",
222 224
          7  => "Umsatzsteuererstattungen",
223
          8  => "Wareneing?nge",
224
          9  => "L?hne und Geh?lter",
225
          8  => "Wareneingänge",
226
          9  => "Löhne und Gehälter",
225 227
          10 => "Gesetzl. sozialer Aufw.",
226 228
          11 => "Mieten",
227 229
          12 => "Gas, Strom, Wasser",
228 230
          13 => "Instandhaltung",
229
          14 => "Steuern, Versich., Beitr?ge",
231
          14 => "Steuern, Versich., Beiträge",
230 232
          15 => "Kfz-Steuern",
231 233
          16 => "Kfz-Versicherungen",
232 234
          17 => "Sonst. Fahrzeugkosten",
233 235
          18 => "Werbe- und Reisekosten",
234 236
          19 => "Instandhaltung u. Werkzeuge",
235
          20 => "Fachzeitschriften, B?cher",
236
          21 => "Miete f?r Einrichtungen",
237
          20 => "Fachzeitschriften, Bücher",
238
          21 => "Miete für Einrichtungen",
237 239
          22 => "Rechts- und Beratungskosten",
238
          23 => "B?robedarf, Porto, Telefon",
240
          23 => "Bürobedarf, Porto, Telefon",
239 241
          24 => "Sonstige Aufwendungen",
240 242
          25 => "Abschreibungen auf Anlagever.",
241 243
          26 => "Abschreibungen auf GWG",
......
245 247
          30 => "Ausserordentlicher Aufwand",
246 248
          31 => "Betriebliche Steuern");
247 249
  foreach my $item (sort({ $a <=> $b } keys(%eur))) {
248
    my $text = H(SL::Iconv::convert("ISO-8859-15", $main::dbcharset, $eur{$item}));
250
    my $text = H($::locale->{iconv_utf8}->convert($eur{$item}));
249 251
    if ($item == $form->{pos_eur}) {
250 252
      $select_eur .= qq|<option value=$item selected>|. sprintf("%.2d", $item) .qq|. $text</option>\n|;
251 253
    } else {
......
257 259
  my $select_bwa = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
258 260

  
259 261
  my %bwapos = (
260
             1  => 'Umsatzerl?se',
262
             1  => 'Umsatzerlöse',
261 263
             2  => 'Best.Verdg.FE/UE',
262 264
             3  => 'Aktiv.Eigenleistung',
263 265
             4  => 'Mat./Wareneinkauf',
264
             5  => 'So.betr.Erl?se',
266
             5  => 'So.betr.Erlöse',
265 267
             10 => 'Personalkosten',
266 268
             11 => 'Raumkosten',
267 269
             12 => 'Betriebl.Steuern',
268
             13 => 'Vers./Beitr?ge',
270
             13 => 'Vers./Beiträge',
269 271
             14 => 'Kfz.Kosten o.St.',
270 272
             15 => 'Werbe-Reisek.',
271 273
             16 => 'Kosten Warenabgabe',
272 274
             17 => 'Abschreibungen',
273 275
             18 => 'Rep./instandhlt.',
274
             19 => '?brige Steuern',
276
             19 => 'Übrige Steuern',
275 277
             20 => 'Sonst.Kosten',
276 278
             30 => 'Zinsauwand',
277 279
             31 => 'Sonst.neutr.Aufw.',
278
             32 => 'Zinsertr?ge',
280
             32 => 'Zinserträge',
279 281
             33 => 'Sonst.neutr.Ertrag',
280 282
             34 => 'Verr.kalk.Kosten',
281 283
             35 => 'Steuern Eink.u.Ertr.');
282 284
  foreach my $item (sort({ $a <=> $b } keys %bwapos)) {
283
    my $text = H(SL::Iconv::convert("ISO-8859-15", $main::dbcharset, $bwapos{$item}));
285
    my $text = H($::locale->{iconv_utf8}->convert($bwapos{$item}));
284 286
    if ($item == $form->{pos_bwa}) {
285 287
      $select_bwa .= qq|<option value="$item" selected>|. sprintf("%.2d", $item) .qq|. $text\n|;
286 288
    } else {
......
289 291

  
290 292
  }
291 293

  
292
# Wieder hinzugef?gt zu evaluationszwecken (us) 09.03.2007
294
# Wieder hinzugefügt zu evaluationszwecken (us) 09.03.2007
293 295
  my $select_bilanz = q|<option value=""> |. $locale->text('None') .q|</option>\n|;
294 296
  foreach my $item ((1, 2, 3, 4)) {
295 297
    if ($item == $form->{pos_bilanz}) {
bin/mozilla/gl.pl
31 31
#
32 32
#======================================================================
33 33

  
34
use utf8;
35
use strict;
36

  
34 37
use POSIX qw(strftime);
35 38
use List::Util qw(sum);
36 39

  
......
44 47
require "bin/mozilla/drafts.pl";
45 48
require "bin/mozilla/reportgenerator.pl";
46 49

  
47
use strict;
48

  
49 50
# this is for our long dates
50 51
# $locale->text('January')
51 52
# $locale->text('February')
......
817 818
  my %charts = ();
818 819
  my $taxchart_init;
819 820
  foreach my $item (@{ $form->{ALL_CHARTS} }) {
820
    if ($item->{charttype} eq 'H'){ #falls ?berschrift
821
      next;                         #?berspringen (Bug 1150)
821
    if ($item->{charttype} eq 'H'){ #falls überschrift
822
      next;                         #überspringen (Bug 1150)
822 823
    }
823 824
    my $key = $item->{accno} . "--" . $item->{tax_id};
824 825
    $taxchart_init = $item->{tax_id} unless (@chart_values);
......
1333 1334
      print qq|<input class=submit type=submit name=action value="| . $locale->text('Storno') . qq|">|;
1334 1335
    }
1335 1336

  
1336
    # L?schen und ?ndern von Buchungen nicht mehr m?glich (GoB) nur am selben Tag m?glich
1337
    # Löschen und Ändern von Buchungen nicht mehr möglich (GoB) nur am selben Tag möglich
1337 1338
    if (!$form->{locked} && $radieren) {
1338 1339
      print qq|
1339 1340
        <input class=submit type=submit name=action value="| . $locale->text('Post') . qq|" accesskey="b">
bin/mozilla/menuXML.pl
36 36
#  2007-10-14 - XMLified  - Holger Will  <holger@treebuilder.de>
37 37
#######################################################################
38 38

  
39
use utf8;
40

  
39 41
use SL::Menu;
40 42

  
41 43
use CGI::Carp qw(fatalsToBrowser);
......
62 64
    . qq|<?xml version="1.0" encoding="${charset}"?>
63 65
<?xml-stylesheet href="xslt/xulmenu.xsl" type="text/xsl"?>
64 66
<!DOCTYPE doc [
65
<!ENTITY szlig "| . $::locale->{iconv_iso8859}->convert('?') . qq|">
66
<!ENTITY auml "| . $::locale->{iconv_iso8859}->convert('?') . qq|">
67
<!ENTITY ouml "| . $::locale->{iconv_iso8859}->convert('?') . qq|">
68
<!ENTITY uuml "| . $::locale->{iconv_iso8859}->convert('?') . qq|">
67
<!ENTITY szlig "| . $::locale->{iconv_utf8}->convert('ß') . qq|">
68
<!ENTITY auml "|  . $::locale->{iconv_utf8}->convert('ä') . qq|">
69
<!ENTITY ouml "|  . $::locale->{iconv_utf8}->convert('ö') . qq|">
70
<!ENTITY uuml "|  . $::locale->{iconv_utf8}->convert('ü') . qq|">
69 71
]>
70 72

  
71 73
<doc>
bin/mozilla/menujs.pl
35 35
#  2004-12-14 - Holger Lindemann
36 36
#######################################################################
37 37

  
38
use utf8;
39
use strict;
40

  
38 41
use SL::Menu;
39 42
use CGI::Carp qw(fatalsToBrowser);
40 43

  
41
use strict;
42

  
43 44
1;
44 45

  
45 46
# end of main
......
415 416
    } else {
416 417
      if ($menu->{$item}{module}) {
417 418

  
418
        #Untermen?punkte
419
        #Untermenüpunkte
419 420
        my $target = $menu->{$item}{target};
420 421
        my $uri    = $menu->menuitem_js(\%myconfig, \%$form, $item, $level);
421 422

  
bin/mozilla/ustva.pl
23 23
# German Tax authority Module and later ELSTER Interface
24 24
#======================================================================
25 25

  
26
use utf8;
27

  
26 28
require "bin/mozilla/common.pl";
27 29

  
28 30
#use strict;
......
93 95
  $ustva->get_config($userspath, 'finanzamt.ini');
94 96

  
95 97
  # Hier Einlesen der user-config
96
  # steuernummer entfernt f?r prerelease
98
  # steuernummer entfernt für prerelease
97 99
  my @a = qw(
98 100
    signature      name          company       address        businessnumber
99 101
    tel            fax           email         co_chief       co_department
......
120 122

  
121 123

  
122 124
  # Anpassungen der Variablennamen auf pre 2.1.1 Namen
123
  # kl?ren, ob $form->{company_street|_address} gesetzt sind
125
  # klären, ob $form->{company_street|_address} gesetzt sind
124 126
  if ($form->{address} ne '') {
125 127
    my $temp = $form->{address};
126 128
    $temp =~ s/\n/<br \/>/;
......
302 304
    $sel    = '';
303 305
    my $dfv = '';
304 306

  
305
    # Offset f?r Dauerfristverl?ngerung
307
    # Offset für Dauerfristverlängerung
306 308
    $dfv = '100' if ($form->{FA_dauerfrist} eq '1');
307 309

  
308 310
  SWITCH: {
......
386 388
    my $yy = $form->{year} * 10000;
387 389
    $yymmdd = "$form->{year}$form->{month}$form->{day}" * 1;
388 390
    $sel    = '';
389
    my $dfv = '';    # Offset f?r Dauerfristverl?ngerung
391
    my $dfv = '';    # Offset für Dauerfristverlängerung
390 392
    $dfv = '100' if ($form->{FA_dauerfrist} eq '1');
391 393

  
392 394
  SWITCH: {
......
672 674
      };
673 675
    }
674 676

  
675
  # Kontrollvariable f?r die Templates
677
  # Kontrollvariable für die Templates
676 678
  $form->{'year2007'} = ($form->{year} >= 2007 ) ? "1":"0";
677 679

  
678 680

  
......
788 790
      $form->{endbold} = "}";
789 791
      $form->{br}      = '\\\\';
790 792

  
791
      # Zahlenformatierung f?r Latex USTVA Formulare
793
      # Zahlenformatierung für Latex USTVA Formulare
792 794

  
793 795
      foreach my $number (@category_euro) {
794 796
        $form->{$number} = $form->format_amount(\%myconfig, $form->{$number}, '0', '');
......
802 804
        $form->{$number} =~ s/${decimal_comma}/~~/g;
803 805
      }
804 806

  
805
    } elsif ( $form->{format} eq 'html') { # Formatierungen f?r HTML Ausgabe
807
    } elsif ( $form->{format} eq 'html') { # Formatierungen für HTML Ausgabe
806 808

  
807 809
      $form->{IN} = $form->{type} . '.html';
808 810
      $form->{padding} = "&nbsp;&nbsp;";
......
833 835
      $file .= sprintf("%02d", $form->{year} % 100);
834 836
      #6. to 18. char = Elstersteuernummer
835 837
      #Beispiel: Steuernummer in Bayern
836
      #111/222/33334 ergibt f?r UStVA Jan 2004: U01049111022233334
838
      #111/222/33334 ergibt für UStVA Jan 2004: U01049111022233334
837 839
      $file .= $form->{elsterFFFF};
838 840
      $file .= $form->{elstersteuernummer};
839 841
      #file suffix
......
843 845

  
844 846
      $form->{attachment_filename} = $file;
845 847

  
846
      # Zahlenformatierung f?r Winston
848
      # Zahlenformatierung für Winston
847 849

  
848 850
      my $temp_numberformat = $myconfig{numberformat};
849 851

  
......
1013 1015

  
1014 1016
    $form->{USTVA} = [];
1015 1017

  
1016
    if ( $form->{format} eq 'generic') { # Formatierungen f?r HTML Ausgabe
1018
    if ( $form->{format} eq 'generic') { # Formatierungen für HTML Ausgabe
1017 1019

  
1018 1020
      my $rec_ref = {};
1019 1021
      for my $kennziffer (@category_cent, @category_euro) {
......
1123 1125

  
1124 1126
  $ustva->get_coa($form, \%myconfig);
1125 1127

  
1126
  # h?? kann die weg?
1128
  # hä? kann die weg?
1127 1129
  my $steuernummer_new = '';
1128 1130

  
1129
  # Variablen f?r das Template zur Verf?gung stellen
1131
  # Variablen für das Template zur Verfügung stellen
1130 1132
  my $template_ref = {
1131 1133
     select_tax_office               => $select_tax_office,
1132 1134
     checked_accrual                 => $checked_accrual,
......
1164 1166
  $ustva->get_config($userspath, 'finanzamt.ini')
1165 1167
    if ($form->{saved} eq $locale->text('saved'));
1166 1168

  
1167
  # Auf ?bergabefehler checken
1169
  # Auf Übergabefehler checken
1168 1170
  USTVA::info(  $locale->text('Missing Tax Authoritys Preferences') . "\n"
1169 1171
              . $locale->text('USTVA-Hint: Tax Authoritys'))
1170 1172
    if (   $form->{elsterFFFF_new} eq 'Auswahl'
......
1173 1175
              . $locale->text('USTVA-Hint: Method'))
1174 1176
    if ($form->{method} eq '');
1175 1177

  
1176
  # Kl?ren, ob Variablen bereits bef?llt sind UND ob ver?derungen auf
1178
  # Klären, ob Variablen bereits befüllt sind UND ob veräderungen auf
1177 1179
  # der vorherigen Maske stattfanden: $change = 1(in der edit sub,
1178 1180
  # mittels get_config)
1179 1181

  
......
1186 1188

  
1187 1189
  if ($change eq '1') {
1188 1190

  
1189
    # Daten ?ndern
1191
    # Daten ändern
1190 1192
    $elsterland           = $form->{elsterland_new};
1191 1193
    $elsterFFFF           = $form->{elsterFFFF_new};
1192 1194
    $form->{elsterland}   = $elsterland;
......
1359 1361
    FA_steuerberater_street FA_steuerberater_city FA_steuerberater_tel
1360 1362
    FA_71 FA_dauerfrist);
1361 1363

  
1362
  # Hier kommt dann die Plausibilit?tspr?fung der ELSTERSteuernummer
1364
  # Hier kommt dann die Plausibilitätsprüfung der ELSTERSteuernummer
1363 1365
  if ($form->{elstersteuernummer} ne '000000000') {
1364 1366

  
1365 1367
    $form->{elster} = '1';
config/authentication.pl.default
1 1
#!/usr/bin/perl
2 2

  
3
# Das Passwort f?r den Zugang zum Administrationsfrontend im Klartext.
4
# Kann nur in dieser Datei ge?ndert werden, nicht im Administrationsfrontend
3
# Das Passwort für den Zugang zum Administrationsfrontend im Klartext.
4
# Kann nur in dieser Datei geändert werden, nicht im Administrationsfrontend
5 5
# selber.
6 6
$self->{admin_password} = 'admin';
7 7

  
......
9 9
# Entweder 'DB' oder 'LDAP'.
10 10
#
11 11
# Wenn LDAP-Authentifizierung benutzt wird, dann kann der Benutzer sein
12
# Passwort nicht ?ber Lx-Office ?ndern.
12
# Passwort nicht über Lx-Office ändern.
13 13
$self->{module} = 'DB';
14 14

  
15 15
# Verbindungsinformationen zur Datenbank mit den Benutzer- und
16
# Gruppeninformationen. Wird auch dann ben?tigt, wenn gegen einen
17
# LDAP-Server authentifiziert wird, weil dieser nur zur Passwort?berpr?fung
16
# Gruppeninformationen. Wird auch dann benötigt, wenn gegen einen
17
# LDAP-Server authentifiziert wird, weil dieser nur zur Passwortüberprüfung
18 18
# benutzt wird. Der Rest der Benutzerdaten ist in der Datenbank hinterlegt.
19 19
#
20
# Ist 'module' = 'DB' dann wird diese Datenbank auch f?r die
21
# Passwort?berpr?fung benutzt.
20
# Ist 'module' = 'DB' dann wird diese Datenbank auch für die
21
# Passwortüberprüfung benutzt.
22 22
$self->{DB_config} = {
23 23
  'host'     => 'localhost',
24 24
  'port'     => 5432,
......
27 27
  'password' => '',
28 28
};
29 29

  
30
# Wird nur ben?tigt, wenn 'module' = 'LDAP' ist. An diesem LDAP-Server
31
# werden die Benutzerpassw?rter durch einen LDAP-Bind ?berpr?ft.
30
# Wird nur benötigt, wenn 'module' = 'LDAP' ist. An diesem LDAP-Server
31
# werden die Benutzerpasswörter durch einen LDAP-Bind überprüft.
32 32
#
33
# Es m?ssen mindestens die Parameter host, attribute und base_dn
33
# Es müssen mindestens die Parameter host, attribute und base_dn
34 34
# angegeben werden.
35 35
#
36
# tls:       Verschl?sselung per TLS erzwingen
37
# attribute: Das LDAP-Attribut, das den Loginnamen enth?lt
36
# tls:       Verschlüsselung per TLS erzwingen
37
# attribute: Das LDAP-Attribut, das den Loginnamen enthält
38 38
# base_dn:   Basis-DN, ab der der LDAP-Baum durchsucht wird
39 39
# filter:    Ein optionaler LDAP-Filter. Die Zeichenkette '<%login%>' wird
40 40
#            innerhalb des Filters durch den Loginnamen ersetzt.
41 41
# bind_dn und bind_password:
42 42
#            Wenn zum Durchsuchen des LDAP-Baumes eine Anmeldung erforderlich
43
#            ist (z.B. beim ActiveDirectory), dann m?ssen diese beiden
43
#            ist (z.B. beim ActiveDirectory), dann müssen diese beiden
44 44
#            Parameter gesetzt sein.
45 45
$self->{LDAP_config} = {
46 46
  'host'          => 'localhost',
......
54 54
  'bind_password' => undef,
55 55
};
56 56

  
57
# Der Name des Cookies kann ge?ndert werden, sofern gew?nscht.
57
# Der Name des Cookies kann geändert werden, sofern gewünscht.
58 58
# $self->{cookie_name} = 'lx_office_erp_session_id';
59 59

  
60
# Die Zeitspanne, bis eine inaktive Session ung?ltig wird, kann
61
# hier ge?ndert werden. Der Standardwert ist acht Stunden.
60
# Die Zeitspanne, bis eine inaktive Session ungültig wird, kann
61
# hier geändert werden. Der Standardwert ist acht Stunden.
62 62
# Die Angabe ist in Minuten.
63 63
# $self->{session_timeout} = 8 * 60;
64 64

  
config/lx-erp.conf
20 20
# member file
21 21
$memberfile = "users/members";
22 22

  
23
# Wenn Einnahmen-?berschussrechnung, dann auf 1 setzen
23
# Wenn Einnahmen-Überschussrechnung, dann auf 1 setzen
24 24
# Wenn Bilanzierung (z.B. GmbH), dann auf 0 setzen
25 25
$eur = 1;
26 26

  
......
48 48
$webdav = 0;
49 49
$lizenzen = 1;
50 50
$vertreter = 0;
51
$excel_templates = 0; # Minimalunterst?tzung f?r Excel-Druckvorlagen
51
$excel_templates = 0; # Minimalunterstützung für Excel-Druckvorlagen
52 52

  
53
# Zeige Felder f?r Mindesthaltbarkeitsdatum
53
# Zeige Felder für Mindesthaltbarkeitsdatum
54 54
$show_best_before = 0;
55 55

  
56 56
## Support fuer OpenDocument-Vorlagen
......
77 77
$xvfb_bin = "/usr/bin/Xvfb";
78 78

  
79 79
# Das charset, in dem die Daten in der Datenbank abgelegt sind.
80
$dbcharset = 'UTF-8'; # F?r UNICODE UTF-8
80
$dbcharset = 'UTF-8'; # Für UNICODE UTF-8
81 81
# $dbcharset = "ISO-8859-15";
82 82

  
83 83

  
......
90 90
$latex_bin = 'pdflatex';
91 91

  
92 92
# Datenbankbackups werden mit dem externen Programm "pg_dump" erledigt.
93
# Wenn es nicht im aktuellen Pfad vorhanden ist, so muss hier der vollst?ndige
93
# Wenn es nicht im aktuellen Pfad vorhanden ist, so muss hier der vollständige
94 94
# Pfad eingetragen werden. Wenn die Variable auf "DISABLED" gesetzt wird,
95
# so wird der Men?punkt zum Backup von Datenbanken im Administrationsfrontend
95
# so wird der Menüpunkt zum Backup von Datenbanken im Administrationsfrontend
96 96
# nicht angeboten.
97
# Das gleiche gilt analog f?r das Wiederherstellen mittels "pg_restore".
97
# Das gleiche gilt analog für das Wiederherstellen mittels "pg_restore".
98 98
$pg_dump_exe    = "pg_dump";
99 99
$pg_restore_exe = "pg_restore";
100 100

  
101 101
# Rose::DB::Object Environment laden.
102
# Die RDBO Klassen bieten f?r Addon Schreiber sehr einfache Interfaces zu den
102
# Die RDBO Klassen bieten für Addon Schreiber sehr einfache Interfaces zu den
103 103
# bestehenden Klassen, haben aber den Nachteil, dass der Start des Programms
104
# etwa 2s mehr dauert. Damit f?llt die M?glichkeit Lx-Office ?ber CGI zu
104
# etwa 2s mehr dauert. Damit fällt die Möglichkeit Lx-Office über CGI zu
105 105
# betreiben weg.
106 106
$use_rdbo = 1;
107 107

  
......
112 112
# LXDebug::DEBUG2
113 113
# LXDebug::QUERY  - SQL Queries
114 114
# LXDebug::TRACE  - Tracing von Funktionsaufrufen
115
# LXDebug::BACKTRACE_ON_ERROR - Vollst?ndiger Aufrufpfad, wenn $form->error() aufgerufen wird
115
# LXDebug::BACKTRACE_ON_ERROR - Vollständiger Aufrufpfad, wenn $form->error() aufgerufen wird
116 116
# LXDebug::REQUEST_TIMER - Timing von Requests loggen
117 117
# LXDebug::WARN - warnings
118 118
# LXDebug::ALL    - alle Debugausgaben
......
123 123
#   $LXDebug::global_level = LXDebug::TRACE | LXDebug::QUERY;
124 124
$LXDebug::global_level = LXDebug->NONE;
125 125

  
126
# ?berwachung der Inhalte von $form aktiviert oder nicht? Wenn ja,
127
# dann k?nnen einzelne Variablen mit
126
# Überwachung der Inhalte von $form aktiviert oder nicht? Wenn ja,
127
# dann können einzelne Variablen mit
128 128
#   $form->{"Watchdog::<variablenname>"} = 1;
129
# ?berwacht werden. Bedeutet aber auch einen Geschwindigkeitsverlust,
129
# überwacht werden. Bedeutet aber auch einen Geschwindigkeitsverlust,
130 130
# weshalb sie normalerweise deaktiviert ist.
131 131
$LXDebug::watch_form = 0;
132 132

  
133 133
# Zum debuggen von Latexausgaben. Wenn diese Option auf 1 gesetzt wird, werden
134
# tempor?re Dateien, die bei der Erstellung von PDFs aus Latex erzeugt werden,
135
# nach Abschlu? der Erstellung oder im Fehlerfall nicht gel?scht, damit man sie
134
# temporäre Dateien, die bei der Erstellung von PDFs aus Latex erzeugt werden,
135
# nach Abschluß der Erstellung oder im Fehlerfall nicht gelöscht, damit man sie
136 136
# untersuchen kann.
137 137
$::keep_temp_files = 0;
138 138

  
config/lx-erp.conf.default
43 43
$lizenzen = 1;
44 44
$vertreter = 0;
45 45

  
46
# Zeige Felder f?r Mindesthaltbarkeitsdatum
46
# Zeige Felder für Mindesthaltbarkeitsdatum
47 47
$show_best_before = 0;
48 48

  
49 49
## Support fuer OpenDocument-Vorlagen
......
70 70
$xvfb_bin = "/usr/bin/Xvfb";
71 71

  
72 72
# Das charset, in dem die Daten in der Datenbank abgelegt sind.
73
$dbcharset = 'UTF-8'; # F?r UNICODE UTF-8
73
$dbcharset = 'UTF-8'; # Für UNICODE UTF-8
74 74
# $dbcharset = "ISO-8859-15";
75 75

  
76 76

  
......
83 83
$latex_bin = 'pdflatex';
84 84

  
85 85
# Datenbankbackups werden mit dem externen Programm "pg_dump" erledigt.
86
# Wenn es nicht im aktuellen Pfad vorhanden ist, so muss hier der vollst?ndige
86
# Wenn es nicht im aktuellen Pfad vorhanden ist, so muss hier der vollständige
87 87
# Pfad eingetragen werden. Wenn die Variable auf "DISABLED" gesetzt wird,
88
# so wird der Men?punkt zum Backup von Datenbanken im Administrationsfrontend
88
# so wird der Menüpunkt zum Backup von Datenbanken im Administrationsfrontend
89 89
# nicht angeboten.
90
# Das gleiche gilt analog f?r das Wiederherstellen mittels "pg_restore".
90
# Das gleiche gilt analog für das Wiederherstellen mittels "pg_restore".
91 91
$pg_dump_exe    = "pg_dump";
92 92
$pg_restore_exe = "pg_restore";
93 93

  
......
98 98
# LXDebug::DEBUG2
99 99
# LXDebug::QUERY  - SQL Queries
100 100
# LXDebug::TRACE  - Tracing von Funktionsaufrufen
101
# LXDebug::BACKTRACE_ON_ERROR - Vollst?ndiger Aufrufpfad, wenn $form->error() aufgerufen wird
101
# LXDebug::BACKTRACE_ON_ERROR - Vollständiger Aufrufpfad, wenn $form->error() aufgerufen wird
102 102
# LXDebug::REQUEST_TIMER - Timing von Requests loggen
103 103
# LXDebug::WARN - warnings
104 104
# LXDebug::ALL    - alle Debugausgaben
......
109 109
#   $LXDebug::global_level = LXDebug::TRACE | LXDebug::QUERY;
110 110
$LXDebug::global_level = LXDebug::NONE;
111 111

  
112
# ?berwachung der Inhalte von $form aktiviert oder nicht? Wenn ja,
113
# dann k?nnen einzelne Variablen mit
112
# Überwachung der Inhalte von $form aktiviert oder nicht? Wenn ja,
113
# dann können einzelne Variablen mit
114 114
#   $form->{"Watchdog::<variablenname>"} = 1;
115
# ?berwacht werden. Bedeutet aber auch einen Geschwindigkeitsverlust,
115
# überwacht werden. Bedeutet aber auch einen Geschwindigkeitsverlust,
116 116
# weshalb sie normalerweise deaktiviert ist.
117 117
$LXDebug::watch_form = 0;
118 118

  
119 119
# Zum debuggen von Latexausgaben. Wenn diese Option auf 1 gesetzt wird, werden
120
# tempor?re Dateien, die bei der Erstellung von PDFs aus Latex erzeugt werden,
121
# nach Abschlu? der Erstellung oder im Fehlerfall nicht gel?scht, damit man sie
120
# temporäre Dateien, die bei der Erstellung von PDFs aus Latex erzeugt werden,
121
# nach Abschluß der Erstellung oder im Fehlerfall nicht gelöscht, damit man sie
122 122
# untersuchen kann.
123 123
$::keep_temp_files = 0;
124 124

  
css/lx-office-erp.css
123 123
}
124 124

  
125 125
/*
126
    ?berschriftsbalken
126
    Überschriftsbalken
127 127
*/
128 128
.listtop {
129 129
    background-color: rgb(236,233,216);
doc/INSTALL.fcgi
5 5

  
6 6
ist sie deutlich leichter zu lesen.
7 7

  
8
=head1 FastCGI f?r Lx-Office
8
=head1 FastCGI für Lx-Office
9 9

  
10 10
=head2 Was ist FastCGI?
11 11

  
12 12
Direkt aus L<http://de.wikipedia.org/wiki/FastCGI> kopiert:
13 13

  
14
  FastCGI ist ein Standard f?r die Einbindung externer Software zur Generierung
14
  FastCGI ist ein Standard für die Einbindung externer Software zur Generierung
15 15
  dynamischer Webseiten in einem Webserver. FastCGI ist vergleichbar zum Common
16 16
  Gateway Interface (CGI), wurde jedoch entwickelt, um dessen
17 17
  Performance-Probleme zu umgehen.
......
20 20
=head2 Warum FastCGI?
21 21

  
22 22
Perl Programme (wie Lx-Office eines ist) werden nicht statisch kompiliert.
23
Stattdessen werden die Quelldateien bei jedem Start ?bersetzt, was bei kurzen
24
Laufzeiten einen Gro?teil der Laufzeit ausmacht. W?hrend SQL Ledger einen
25
Gro?teil der Funktionalit?t in einzelne Module kapselt, um immer nur einen
26
kleinen Teil laden zu m?ssen, ist die Funktionalit?t von Lx-Office soweit
23
Stattdessen werden die Quelldateien bei jedem Start übersetzt, was bei kurzen
24
Laufzeiten einen Großteil der Laufzeit ausmacht. Während SQL Ledger einen
25
Großteil der Funktionalität in einzelne Module kapselt, um immer nur einen
26
kleinen Teil laden zu müssen, ist die Funktionalität von Lx-Office soweit
27 27
gewachsen, dass immer mehr Module auf den Rest des Programms zugreifen.
28
Zus?tzlich benutzen wir umfangreiche Bibliotheken um Funktionalt?t nicht selber
29
entwickeln zu m?ssen, die zus?tzliche Ladezeit kosten. All dies f?hrt dazu dass
30
ein Lx-Office Aufruf der Kernmasken mittlerweile deutlich l?nger dauert als
31
fr?her, und dass davon 90% f?r das Laden der Module verwendet wird.
28
Zusätzlich benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
29
entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies führt dazu dass
30
ein Lx-Office Aufruf der Kernmasken mittlerweile deutlich länger dauert als
31
früher, und dass davon 90% für das Laden der Module verwendet wird.
32 32

  
33 33
Mit FastCGI werden nun die Module einmal geladen, und danach wird nur die
34
eigentliche Programmlogik ausgef?hrt.
34
eigentliche Programmlogik ausgeführt.
35 35

  
36 36
=head2 Kombinationen aus Webservern und Plugin.
37 37

  
......
41 41
 * Apache 2.2.11 (Ubuntu) und mod_fcgid:
42 42

  
43 43
Als Perl Backend wird das Modul FCGI.pm verwendet. Vorsicht: FCGI 0.69 und
44
h?her ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte
44
höher ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte
45 45
Eingaben von Lx-Office. Solange diese Probleme nicht behoben sind, muss auf die
46
Vorg?ngerversion FCGI 0.68 ausgewichen werden.
46
Vorgängerversion FCGI 0.68 ausgewichen werden.
47 47

  
48
Mit cpan l?sst sie sich wie folgt installieren:
48
Mit cpan lässt sie sich wie folgt installieren:
49 49

  
50 50
 force install M/MS/MSTROUT/FCGI-0.68.tar.gz
51 51

  
......
54 54
Bevor Sie versuchen eine Lx-Office Installation unter FCGI laufen zu lassen,
55 55
empfliehlt es sich die Installation ersteinmal unter CGI aufzusetzen. FCGI
56 56
macht es nicht einfach Fehler zu debuggen die beim ersten aufsetzen auftreten
57
k?nnen. Sollte die Installation schon funktionieren, lesen Sie weiter.
57
können. Sollte die Installation schon funktionieren, lesen Sie weiter.
58 58

  
59 59
Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann unter
60 60
Debian/Ubuntu z.B. mit folgendem Befehl geschehen:
......
65 65

  
66 66
  a2enmod fcgid
67 67

  
68
Die Konfiguration f?r die Verwendung von Lx-Office mit FastCGI erfolgt
68
Die Konfiguration für die Verwendung von Lx-Office mit FastCGI erfolgt
69 69
durch Anpassung der vorhandenen Alias- und Directory-Direktiven. Dabei
70 70
wird zwischen dem Installationspfad von Lx-Office im Dateisystem
71 71
("/path/to/lx-office-erp") und der URL unterschieden, unter der
......
89 89
    Deny from All
90 90
  </DirectoryMatch>
91 91

  
92
...und f?r mod_fcgid muss die erste Zeile ge?ndert werden in:
92
...und für mod_fcgid muss die erste Zeile geändert werden in:
93 93

  
94 94
  AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
95 95

  
96 96

  
97 97
Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle Zugriffe
98 98
auf die einzelnen Scripte werden auf diesen umgeleitet. Dadurch, dass
99
zur Laufzeit ?fter mal Scripte neu geladen werden, gibt es hier kleine
100
Performance-Einbu?en. Trotzdem ist diese Variante einer globalen
99
zur Laufzeit öfter mal Scripte neu geladen werden, gibt es hier kleine
100
Performance-Einbußen. Trotzdem ist diese Variante einer globalen
101 101
Benutzung von "AddHandler fastcgi-script .pl" vorzuziehen.
102 102

  
103 103

  
104
Es ist m?glich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
105
betreiben. Daf?r bleiben Directorydirektiven bleiben wie oben beschrieben, die
104
Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
105
betreiben. Dafür bleiben Directorydirektiven bleiben wie oben beschrieben, die
106 106
URLs werden aber umgeleitet:
107 107

  
108 108
  # Zugriff ohne FastCGI
......
118 118
Achtung:
119 119

  
120 120
Die AddHandler Direktive vom Apache ist entgegen der Dokumentation
121
anscheinend nicht lokal auf das Verzeichnis beschr?nkt sondern global im
121
anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im
122 122
vhost.
123 123

  
124 124
=head2 Entwicklungsaspekte
125 125

  
126
Wenn ?nderungen in der Konfiguration von Lx-Office gemacht werden, muss der
126
Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, muss der
127 127
Server neu gestartet werden.
128 128

  
129
Bei der Entwicklung f?r FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
130
dass das Programm in einer Endlosschleife l?uft, m?ssen folgende Aspekte
129
Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch
130
dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte
131 131
geachtet werden:
132 132

  
133 133
=head3 Programmende und Ausnahmen: C<warn>, C<die>, C<exit>, C<carp>, C<confess>
......
139 139
Gleiche, mit ein paar Extraoptionen. C<warn> und C<exit> hingegen werden nicht
140 140
abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht
141 141
schreiben (sofern in der Konfiguration nicht die Warnungen in das Lx-Office Log
142
umgeleitet wurden), und C<exit> wird die Ausf?hrung beenden.
142
umgeleitet wurden), und C<exit> wird die Ausführung beenden.
143 143

  
144 144
Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
145 145
sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
......
148 148
=head3 Globale Variablen
149 149

  
150 150
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen,
151
m?ssen alle globalen Variablen vor einem Request sauber initialisiert werden.
151
müssen alle globalen Variablen vor einem Request sauber initialisiert werden.
152 152
Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht
153
gel?scht werden pro Instanz, sondern persistent gehalten werden.
153
gelöscht werden pro Instanz, sondern persistent gehalten werden.
154 154

  
155 155
In C<SL::Dispatcher> gibt es einen sauber abgetrennten Block der alle
156
kanonischen globalen Variablen listet und erkl?rt. Bitte keine anderen
157
einf?hren ohne das sauber zu dokumentieren.
156
kanonischen globalen Variablen listet und erklärt. Bitte keine anderen
157
einführen ohne das sauber zu dokumentieren.
158 158

  
159 159
Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sichergeht,
160 160
dass man die richtige erwischt.
......
174 174

  
175 175
=head3 Encoding Awareness
176 176

  
177
UTF-8 kodierte Installationen sind sehr anf?llig gegen fehlerhfate Encodings
177
UTF-8 kodierte Installationen sind sehr anfällig gegen fehlerhfate Encodings
178 178
unter FCGI. latin9 Installationen behandeln falsch kodierte Zeichen eher
179 179
unwissend, und geben sie einfach weiter. UTF-8 verweigert bei fehlerhaften
180 180
Programmpfaden kurzerhand aus ausliefern. Es wird noch daran gearbeitet alles
doc/excel_templates.txt
5 5
1 Zusammenfassung
6 6
2 Bedienung
7 7
3 Exceltemplate Syntax
8
4 Einschr?nkungen
8
4 Einschränkungen
9 9

  
10 10

  
11 11

  
......
13 13
---------------
14 14

  
15 15
Dieses Dokument beschreibt den Mechanismus, mit dem Exceltemplates abgearbeitet
16
werden, und die Einschr?nkungen die damit einhergehen.
16
werden, und die Einschränkungen die damit einhergehen.
17 17

  
18 18

  
19 19

  
......
21 21
---------
22 22

  
23 23
Der Excel Mechanismus muss in der Konfigurationsdatei aktiviert werden. Die
24
Konfigurationsoption hei?t:
24
Konfigurationsoption heißt:
25 25

  
26 26
  $excel_templates = 1;
27 27

  
28 28
Eine Excelvorlage kann dann unter dem Namen einer beliebigen anderen Vorlage mit
29 29
der Endung .xls gespeichert werden. In den normalen Verkaufsmasken taucht nun
30
"Excel" als ausw?hlbares Format auf, und kann von da an bnutzt weren wie Latex
30
"Excel" als auswählbares Format auf, und kann von da an bnutzt weren wie Latex
31 31
oder OpenOffice Vorlagen.
32 32

  
33 33
Der Sonderfall der Angebote aus der Kundenmaske ist ebenfalls eine
......
42 42
Einfache Syntax:  <<varname>>
43 43

  
44 44
Wobei "<<" und ">>" die Delimiter sind. Da Excel auf festen Breiten besteht,
45
kann der Tag k?nstlich verl?ngert werden, indem weitere "<" oder ">" gegef?gt
45
kann der Tag künstlich verlängert werden, indem weitere "<" oder ">" gegefügt
46 46
werden. Der Tag muss nicht symmetrisch sein.
47 47

  
48 48
Beispiel: <<<<<varname>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
49 49

  
50
Um die Limitierung der festen Breite zu reduzieren, k?nnen weitere Variablen in
50
Um die Limitierung der festen Breite zu reduzieren, können weitere Variablen in
51 51
einem Block interpoliert werden. Whitespace wird dazwishen dann erhalten.
52 52

  
53 53
Beispiel: <<<<<varname1 varname2   varname3>>>>>>>>>>>>>>>>>>>>>>>>>>
54 54

  
55
Die Variablen werden interpoliert, und linksb?ndig mit Leerzeichen auf die
56
gew?nschte L?nge aufgef?llt. Ist der String zu lang, werden ?berz?hlige Zeichen
55
Die Variablen werden interpoliert, und linksbündig mit Leerzeichen auf die
56
gewünschte Länge aufgefüllt. Ist der String zu lang, werden überzählige Zeichen
57 57
abgeschnitten.
58 58

  
59
Es ist ausserdem m?glich Daten rechtsb?ndig darzustellen, wenn der Block mit
60
einem Leerzeichen anf?ngt.
59
Es ist ausserdem möglich Daten rechtsbündig darzustellen, wenn der Block mit
60
einem Leerzeichen anfängt.
61 61

  
62 62
Beispiel:  <<<<<<            varname>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
63 63

  
64
w?rde rechtsb?ndig triggern. Wenn bei rechtsb?ndiger Ausrichtung Text
64
würde rechtsbündig triggern. Wenn bei rechtsbündiger Ausrichtung Text
65 65
abgeschnitten werden muss, wird er vom linken Ende entfernt.
66 66

  
67 67

  
68 68

  
69
Einschr?nkungen
69
Einschränkungen
70 70
---------------
71 71

  
72
Das Excelformat bis 2002 ist ein bin?res Format, und kann nicht mit vertretbarem
73
Aufwand editiert werden. Der Templatemechanismus beschr?nkt sich daher darauf,
72
Das Excelformat bis 2002 ist ein binäres Format, und kann nicht mit vertretbarem
73
Aufwand editiert werden. Der Templatemechanismus beschränkt sich daher darauf,
74 74
Textstellen _exakt_ durch einen anderen Text zu ersetzen.
75 75

  
76 76
Aus dem gleichen Grund sind die Templatekonstrukte <% if %> und <% foreach %>
locale/de/Num2text
36 36
                    2 => 'zwei',
37 37
	            3 => 'drei',
38 38
		    4 => 'vier',
39
		    5 => 'f?nf',
39
		    5 => 'fünf',
40 40
		    6 => 'sechs',
41 41
		    7 => 'sieben',
42 42
		    8 => 'acht',
43 43
		    9 => 'neun',
44 44
		   10 => 'zehn',
45 45
		   11 => 'elf',
46
		   12 => 'zw?lf',
46
		   12 => 'zwölf',
47 47
		   13 => 'dreizehn',
48 48
		   14 => 'vierzehn',
49
		   15 => 'f?nfzehn',
49
		   15 => 'fünfzehn',
50 50
		   16 => 'sechzehn',
51 51
		   17 => 'siebzehn',
52 52
		   18 => 'achtzehn',
......
54 54
		   20 => 'zwanzig',
55 55
		   30 => 'dreissig',
56 56
		   40 => 'vierzig',
57
		   50 => 'f?nfzig',
57
		   50 => 'fünfzig',
58 58
		   60 => 'sechzig',
59 59
		   70 => 'siebzig',
60 60
		   80 => 'achtzig',
locale/de/all
1 1
#!/usr/bin/perl
2
# -*- coding: iso-8859-15; -*-
3
# vim: fenc=ISO-8859-15
2
# -*- coding: utf-8; -*-
3
# vim: fenc=UTF-8
4 4

  
5 5
# These are all the texts to build the translations files.
6 6
# The file has the form of 'english text'  => 'foreign text',
......
26 26
  '&lt;%total%&gt; -- Amount payable' => '&lt;%total%&gt; -- Noch zu bezahlender Betrag',
27 27
  '&lt;%total_wo_skonto%&gt; -- Amount payable less discount' => '&lt;%total_wo_skonto%&gt; -- Noch zu bezahlender Betrag abz&uuml;glich Skonto',
28 28
  '*/'                          => '*/',
29
  '---please select---'         => '---bitte ausw?hlen---',
29
  '---please select---'         => '---bitte auswählen---',
30 30
  '...after loggin in'          => '...nach dem Anmelden',
31 31
  '...done'                     => '...fertig',
32 32
  '...on the TODO list'         => '...auf der Aufgabenliste',
......
38 38
  'A Buchungsgruppe consists of a descriptive name and the account numbers for the income and expense accounts for those four tax zones as well as the inventory account number.' => 'Eine Buchungsgruppe besteht aus einem deskriptiven Namen, den Erl&ouml;s- und Aufwandskonten f&uuml;r diese vier Steuerzonen sowie aus einem Inventarkonto.',
39 39
  'A group named &quot;Full Access&quot; has been created.' => 'Eine Gruppe namens &quot;Vollzugriff&quot; wurde angelegt.',
40 40
  'A group with that name does already exist.' => 'Eine Gruppe mit diesem Namen gibt es bereits.',
41
  'A lot of the usability of Lx-Office has been enhanced with javascript. Although it is currently possible to use every aspect of Lx-Office without javascript, we strongly recommend it. In a future version this may change and javascript may be necessary to access advanced features.' => 'Die Bedienung von Lx-Office wurde an vielen Stellen mit Javascript verbessert. Obwohl es derzeit m?glich ist, jeden Aspekt von Lx-Office auch ohne Javascript zu benutzen, empfehlen wir es. In einer zuk?nftigen Version wird Javascript eventuell notwendig sein um weitergehende Features zu benutzen.',
41
  'A lot of the usability of Lx-Office has been enhanced with javascript. Although it is currently possible to use every aspect of Lx-Office without javascript, we strongly recommend it. In a future version this may change and javascript may be necessary to access advanced features.' => 'Die Bedienung von Lx-Office wurde an vielen Stellen mit Javascript verbessert. Obwohl es derzeit möglich ist, jeden Aspekt von Lx-Office auch ohne Javascript zu benutzen, empfehlen wir es. In einer zukünftigen Version wird Javascript eventuell notwendig sein um weitergehende Features zu benutzen.',
42 42
  'A temporary directory could not be created:' => 'Ein tempor&auml;res Verzeichnis konnte nicht erstellt werden:',
43
  'A temporary file could not be created. Please verify that the directory "#1" is writeable by the webserver.' => 'Eine tempor?re Datei konnte nicht angelegt werden. Bitte stellen Sie sicher, dass das Verzeichnis "#1" vom Webserver beschrieben werden darf.',
43
  'A temporary file could not be created. Please verify that the directory "#1" is writeable by the webserver.' => 'Eine temporäre Datei konnte nicht angelegt werden. Bitte stellen Sie sicher, dass das Verzeichnis "#1" vom Webserver beschrieben werden darf.',
44 44
  'A temporary file could not be created:' => 'Eine tempor&auml;re Datei konnte nicht erstellt werden:',
45 45
  'A unit with this name does already exist.' => 'Eine Einheit mit diesem Namen existiert bereits.',
46
  'A variable marked as \'editable\' can be changed in each quotation, order, invoice etc.' => 'Eine als \'editierbar\' markierte Variable kann in jedem Angebot, Auftrag, jeder Rechnung etc f?r jede Position ge?ndert werden.',
47
  'ADDED'                       => 'Hinzugef?gt',
46
  'A variable marked as \'editable\' can be changed in each quotation, order, invoice etc.' => 'Eine als \'editierbar\' markierte Variable kann in jedem Angebot, Auftrag, jeder Rechnung etc für jede Position geändert werden.',
47
  'ADDED'                       => 'Hinzugefügt',
48 48
  'AP'                          => 'Einkauf',
49 49
  'AP Aging'                    => 'Offene Verbindlichkeiten',
50 50
  'AP Transaction'              => 'Kreditorenbuchung',
......
52 52
  'AP Transaction Storno (one letter abbreviation)' => 'S',
53 53
  'AP Transaction with Storno (abbreviation)' => 'K(S)',
54 54
  'AP Transactions'             => 'Kreditorenbuchungen',
55
  'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => 'Kreditorenbuchungen mit Umsatzsteuer-Steuerschl?sseln und/oder Debitorenbuchungen mit Vorsteuer-Steuerschl?sseln',
55
  'AP transactions with sales taxkeys and/or AR transactions with input taxkeys' => 'Kreditorenbuchungen mit Umsatzsteuer-Steuerschlüsseln und/oder Debitorenbuchungen mit Vorsteuer-Steuerschlüsseln',
56 56
  'AR'                          => 'Verkauf',
57 57
  'AR Aging'                    => 'Offene Forderungen',
58 58
  'AR Transaction'              => 'Debitorenbuchung',
......
66 66
  'Account Category C'          => 'Kosten',
67 67
  'Account Category E'          => 'Aufwandskonto',
68 68
  'Account Category G'          => '?Gegenkonto?',
69
  'Account Category I'          => 'Erl?skonto',
69
  'Account Category I'          => 'Erlöskonto',
70 70
  'Account Category L'          => 'Passiva/Mittelherkunft',
71 71
  'Account Category Q'          => 'Passiva',
72 72
  'Account Description missing!' => 'Beschreibung fehlt!',
......
75 75
  'Account Link AP_paid'        => 'Verbindlichkeiten Zahlungsausgang',
76 76
  'Account Link AP_tax'         => 'Verbindlichkeiten Steuer',
77 77
  'Account Link AR'             => 'Verkauf',
78
  'Account Link AR_amount'      => 'Forderungen Erl?skonto',
78
  'Account Link AR_amount'      => 'Forderungen Erlöskonto',
79 79
  'Account Link AR_paid'        => 'Forderungen Zahlungseingang',
80 80
  'Account Link AR_tax'         => 'Forderungen Steuer',
81 81
  'Account Link CT_tax'         => 'Kunde/Lieferant Steuer',
82 82
  'Account Link IC'             => 'Inventar',
83 83
  'Account Link IC_cogs'        => 'Warenliste Aufwandskonto',
84 84
  'Account Link IC_expense'     => 'Dienstleistungen Aufwandskonto',
85
  'Account Link IC_income'      => 'Dienstleistungen Erl?skonto',
86
  'Account Link IC_sale'        => 'Warenliste Erl?skonto',
85
  'Account Link IC_income'      => 'Dienstleistungen Erlöskonto',
86
  'Account Link IC_sale'        => 'Warenliste Erlöskonto',
87 87
  'Account Link IC_taxpart'     => 'Warenliste Steuer',
88 88
  'Account Link IC_taxservice'  => 'Dienstleistungen Steuer',
89 89
  'Account Number'              => 'Kontonummer',
......
92 92
  'Account Nummer'              => 'Kontonummer',
93 93
  'Account Type'                => 'Kontoart',
94 94
  'Account Type missing!'       => 'Kontoart fehlt!',
95
  'Account deleted!'            => 'Konto gel?scht!',
95
  'Account deleted!'            => 'Konto gelöscht!',
96 96
  'Account for fees'            => 'Konto f&uuml;r Geb&uuml;hren',
97 97
  'Account for interest'        => 'Konto f&uuml;r Zinsen',
98 98
  'Account number'              => 'Kontonummer',
......
124 124
  'Add Follow-Up for #1'        => 'Wiedervorlage f&uuml;r #1 erstellen',
125 125
  'Add General Ledger Transaction' => 'Dialogbuchen',
126 126
  'Add Group'                   => 'Warengruppe erfassen',
127
  'Add Language'                => 'Sprache hinzuf?gen',
127
  'Add Language'                => 'Sprache hinzufügen',
128 128
  'Add Lead'                    => 'Kundenquelle erfassen',
129 129
  'Add License'                 => 'Lizenz erfassen',
130 130
  'Add Part'                    => 'Ware erfassen',
131
  'Add Payment Terms'           => 'Zahlungskonditionen hinzuf?gen',
131
  'Add Payment Terms'           => 'Zahlungskonditionen hinzufügen',
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff