Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ef5b4b39

Von Jan Büren vor mehr als 7 Jahren hinzugefügt

  • ID ef5b4b39f9ddcf2da56dc0e781f1c0c57c7e9744
  • Vorgänger 2be3ec7c
  • Nachfolger 2c8ca49c

DATEV Format 2018 Backend, Musterdateien und Tests

Technischer Einstieg: perldoc SL::DATEV::CSV

Unterschiede anzeigen:

SL/DATEV.pm
32 32

  
33 33
use SL::DBUtils;
34 34
use SL::DATEV::KNEFile;
35
use SL::DATEV::CSV;
35 36
use SL::DB;
36 37
use SL::HTML::Util ();
37 38
use SL::Locale::String qw(t8);
39
use SL::Iconv qw(convert);
38 40

  
39 41
use Data::Dumper;
40 42
use DateTime;
......
345 347
}
346 348

  
347 349
sub csv_export {
348
  die 'not yet implemented';
350
  my ($self) = @_;
351
  my $result;
352

  
353
  die 'no exporttype set!' unless $self->has_exporttype;
354

  
355
  if ($self->exporttype == DATEV_ET_BUCHUNGEN) {
356
    _csv_buchungsexport_to_file($self, data => $self->csv_buchungsexport);
357

  
358
  } elsif ($self->exporttype == DATEV_ET_STAMM) {
359
    die 'will never be implemented';
360
    # 'Background: Export should only contain non
361
    #  DATEV-Charts and DATEV import will only
362
    #  import new Charts.'
363
  } elsif ($self->exporttype == DATEV_ET_CSV) {
364
    $result = $self->csv_export_for_tax_accountant;
365
  } else {
366
    die 'unrecognized exporttype';
367
  }
368

  
369
return $result;
349 370
}
350 371

  
351 372
sub obe_export {
......
800 821

  
801 822
  my ($day, $month, $year) = split(/\./, $date);
802 823

  
803
  if ($day =~ /^0/) {
804
    $day = substr($day, 1, 1);
805
  }
806 824
  if (length($month) < 2) {
807 825
    $month = "0" . $month;
808 826
  }
......
949 967
        $datev_data{belegfeld2} = $transaction->[$haben]->{'duedate'};
950 968
      }
951 969
    }
952

  
970
    $datev_data{soll_haben_kennzeichen} = (0 < $umsatz) ? 'H' : 'S';
953 971
    $datev_data{umsatz} = abs($umsatz); # sales invoices without tax have a different sign???
954 972

  
955 973
    # Dies ist die einzige Stelle die datevautomatik auswertet. Was soll gesagt werden?
......
1325 1343
  return { download_token => $self->download_token, filenames => \@filenames };
1326 1344
}
1327 1345

  
1346
sub csv_buchungsexport {
1347
  my $self = shift;
1348
  my %params = @_;
1349

  
1350
  $self->generate_datev_data(from_to => $self->fromto);
1351
  return if $self->errors;
1352

  
1353
  my @datev_lines = @{ $self->generate_datev_lines };
1354

  
1355
  my @csv_columns = SL::DATEV::CSV->kivitendo_to_datev();
1356
  my @csv_headers = SL::DATEV::CSV->generate_csv_header(
1357
                      from                     => $self->from->ymd(''),
1358
                      to                       => $self->to->ymd(''),
1359
                      first_day_of_fiscal_year => $self->to->year . '0101',
1360
                      locked                   => 0
1361
                    );
1362

  
1363
  my @array_of_datev;
1364

  
1365
  # 2 Headers
1366
  push @array_of_datev, \@csv_headers;
1367
  push @array_of_datev, [ map { $_->{csv_header_name} } @csv_columns ];
1368

  
1369
  foreach my $row ( @datev_lines ) {
1370
    my @current_datev_row;
1371

  
1372
    # format transformation
1373
    foreach (qw(belegfeld1 kost1 kost2)) {
1374
      $row->{$_} = SL::Iconv::convert("UTF-8", "CP1252", $row->{$_}) if $row->{$_};
1375
    }
1376
    # shorten strings
1377
    if ($row->{belegfeld1}) {
1378
      $row->{buchungsbes} = $row->{belegfeld1} if $row->{belegfeld1};
1379
      $row->{belegfeld1}  = substr($row->{belegfeld1}, 0, 12);
1380
      $row->{buchungsbes} = substr($row->{buchungsbes}, 0, 60);
1381
    }
1382

  
1383
    $row->{datum}       = datetofour($row->{datum}, 0);
1384
    $row->{kost1}       = substr($row->{kost1}, 0, 8) if $row->{kost1};
1385
    $row->{kost2}       = substr($row->{kost2}, 0, 8) if $row->{kost2};
1386

  
1387
    # , as decimal point and trim for UstID
1388
    $row->{umsatz}      =~ s/\./,/;
1389
    $row->{ustid}       =~ s/\s//g if $row->{ustid}; # trim whitespace
1390

  
1391
    foreach my $column (@csv_columns) {
1392
      if (exists $column->{max_length} && $column->{kivi_datev_name} ne 'not yet implemented') {
1393
        # check max length
1394
        die "Incorrect lenght of field" if length($row->{ $column->{kivi_datev_name} }) > $column->{max_length};
1395
      }
1396
      if (exists $column->{valid_check} && $column->{kivi_datev_name} ne 'not yet implemented') {
1397
        # more checks
1398
        die "Not a valid value: '$row->{ $column->{kivi_datev_name} }'" .
1399
            " for '$column->{kivi_datev_name}' with amount '$row->{umsatz}'"
1400
              unless ($column->{valid_check}->($row->{ $column->{kivi_datev_name} }));
1401
      }
1402
      push @current_datev_row, $row->{ $column->{kivi_datev_name} };
1403
    }
1404
    push @array_of_datev, \@current_datev_row;
1405
  }
1406
  return \@array_of_datev;
1407
}
1408

  
1409
sub _csv_buchungsexport_to_file {
1410
  my $self   = shift;
1411
  my %params = @_;
1412

  
1413
  # we can definitely deny shorter data structures
1414
  croak ("Need at least 2 rows for header info") unless scalar @{ $params{data} } > 1;
1415

  
1416
  my $filename = "EXTF_DATEV_kivitendo" . $self->from->ymd() . '-' . $self->to->ymd() . ".csv";
1417
  my @data = \$params{data};
1418

  
1419
  # EXTF_Buchungsstapel.csv: ISO-8859 text, with very long lines, with CRLF line terminators
1420
  my $csv = Text::CSV_XS->new({
1421
              binary       => 1,
1422
              sep_char     => ";",
1423
              always_quote => 1,
1424
              eol          => "\r\n",
1425
            }) or die "Cannot use CSV: ".Text::CSV_XS->error_diag();
1426

  
1427
  if ($csv->version >= 1.18) {
1428
    # get rid of stupid datev warnings in "Validity program"
1429
    $csv->quote_empty(1);
1430
  }
1431

  
1432
  my $csv_file = IO::File->new($self->export_path . '/' . $filename, '>:encoding(iso-8859-1)') or die "Can't open: $!";
1433
  $csv->print($csv_file, $_) for @{ $params{data} };
1434
  $csv_file->close;
1435

  
1436
  return { download_token => $self->download_token, filenames => $params{filename} };
1437
}
1328 1438
sub DESTROY {
1329 1439
  clean_temporary_directories();
1330 1440
}
......
1522 1632
  #                  ]
1523 1633
  # };
1524 1634

  
1635

  
1636
=item csv_buchungsexport
1637

  
1638
Generates the CSV-Format data for the CSV DATEV export and returns
1639
an 2-dimensional array as an array_ref.
1640

  
1641
Requires $self->fromto for a valid DATEV header.
1642

  
1643
Furthermore we assume that the first day of the fiscal year is
1644
the first of January and we cannot guarantee that our data in kivitendo
1645
is locked, that means a booking cannot be modified after a defined (vat tax)
1646
period.
1647
Some validity checks (max_length and regex) will be done if the
1648
data structure contains them and the field is defined.
1649

  
1650
To add or alter the structure of the data take a look at SL::DATEV::CSV.pm
1651

  
1652
=item _csv_buchungsexport_to_file
1653

  
1654
Generates one downloadable csv file wrapped in a zip archive.
1655
Basically this method is just a thin wrapper for TEXT::CSV_XS.pm
1656

  
1657
Generates a CSV-file with the same encodings as defined in DATEV Format CSV 2015:
1658
 $ file
1659
 $ EXTF_Buchungsstapel.csv: ISO-8859 text, with very long lines, with CRLF line terminators
1660

  
1661
Usage: _csv_buchungsexport_to_file($self, data => $self->csv_buchungsexport);
1662

  
1663

  
1525 1664
=back
1526 1665

  
1527 1666
=head1 ATTRIBUTES
......
1650 1789
=head1 SEE ALSO
1651 1790

  
1652 1791
L<SL::DATEV::KNEFile>
1792
L<SL::DATEV::CSV>
1653 1793

  
1654 1794
=head1 AUTHORS
1655 1795

  
SL/DATEV/CSV.pm
1
package SL::DATEV::CSV;
2

  
3
use strict;
4

  
5
use SL::Locale::String qw(t8);
6
use SL::DB::Datev;
7

  
8
use Carp;
9
use DateTime;
10

  
11

  
12
my @kivitendo_to_datev = (
13
                            {
14
                              kivi_datev_name => 'umsatz',
15
                              csv_header_name => t8('Transaction Value'),
16
                              max_length      => 13,
17
                              type            => 'Value',
18
                              valid_check     => sub { return (shift =~ m/^\d{1,10}(\,\d{1,2})?$/) },
19
                            },
20
                            {
21
                              kivi_datev_name => 'soll_haben_kennzeichen',
22
                              csv_header_name => t8('Debit/Credit Label'),
23
                              max_length      => 1,
24
                              type            => 'Text',
25
                              valid_check     => sub { return (shift =~ m/^(S|H)$/) },
26
                            },
27
                            {
28
                              kivi_datev_name => 'waehrung',
29
                              csv_header_name => t8('Transaction Value Currency Code'),
30
                              max_length      => 3,
31
                              type            => 'Text',
32
                              valid_check     => sub { return (shift =~ m/^[A-Z]{3}$/) },
33
                            },
34
                            {
35
                              kivi_datev_name => 'wechselkurs',
36
                              csv_header_name => t8('Exchange Rate'),
37
                              max_length      => 11,
38
                              type            => 'Number',
39
                              valid_check     => sub { return (shift =~ m/^[0-9]*\.?[0-9]*$/) },
40
                            },
41
                            {
42
                              kivi_datev_name => 'not yet implemented',
43
                              csv_header_name => t8('Base Transaction Value'),
44
                            },
45
                            {
46
                              kivi_datev_name => 'not yet implemented',
47
                              csv_header_name => t8('Base Transaction Value Currency Code'),
48
                            },
49
                            {
50
                              kivi_datev_name => 'konto',
51
                              csv_header_name => t8('Account'),
52
                              max_length      => 9, # May contain a maximum of 8 or 9 digits -> perldoc
53
                              type            => 'Account',
54
                              valid_check     => sub { return (shift =~ m/^[0-9]{4,9}$/) },
55
                            },
56
                            {
57
                              kivi_datev_name => 'gegenkonto',
58
                              csv_header_name => t8('Contra Account'),
59
                              max_length      => 9, # May contain a maximum of 8 or 9 digits -> perldoc
60
                              type            => 'Account',
61
                              valid_check     => sub { return (shift =~ m/^[0-9]{4,9}$/) },
62
                            },
63
                            {
64
                              kivi_datev_name => 'buchungsschluessel',
65
                              csv_header_name => t8('Posting Key'),
66
                              max_length      => 2,
67
                              type            => 'Text',
68
                              valid_check     => sub { return (shift =~ m/^[0-9]{0,2}$/) },
69
                            },
70
                            {
71
                              kivi_datev_name => 'datum',
72
                              csv_header_name => t8('Invoice Date'),
73
                              max_length      => 4,
74
                              type            => 'Date',
75
                              valid_check     => sub { return (shift =~ m/^[0-9]{4}$/) },
76
                            },
77
                            {
78
                              kivi_datev_name => 'belegfeld1',
79
                              csv_header_name => t8('Invoice Field 1'),
80
                              max_length      => 12,
81
                              type            => 'Text',
82
                              valid_check     => sub { my $text = shift; check_encoding($text); },
83
                            },
84
                            {
85
                              kivi_datev_name => 'not yet implemented',
86
                              csv_header_name => t8('Invoice Field 2'),
87
                             max_length      => 12,
88
                              type            => 'Text',
89
                              valid_check     => sub { return (shift =~ m/[ -~]{1,12}/) },
90
                            },
91
                            {
92
                              kivi_datev_name => 'not yet implemented',
93
                              csv_header_name => t8('Discount'),
94
                              type            => 'Value',
95
                            },
96
                            {
97
                              kivi_datev_name => 'buchungsbes',
98
                              csv_header_name => t8('Posting Text'),
99
                              max_length      => 60,
100
                              type            => 'Text',
101
                              valid_check     => sub { my $text = shift; return 1 unless $text; check_encoding($text);  },
102
                            },  # pos 14
103
                            {
104
                              kivi_datev_name => 'not yet implemented',
105
                            },
106
                            {
107
                              kivi_datev_name => 'not yet implemented',
108
                            },
109
                            {
110
                              kivi_datev_name => 'not yet implemented',
111
                            },
112
                            {
113
                              kivi_datev_name => 'not yet implemented',
114
                            },
115
                            {
116
                              kivi_datev_name => 'not yet implemented',
117
                            },
118
                            {
119
                              kivi_datev_name => 'not yet implemented',
120
                              csv_header_name => t8('Link to invoice'),
121
                              max_length      => 210, # DMS Application shortcut and GUID
122
                                                      # Example: "BEDI"
123
                                                      # "8DB85C02-4CC3-FF3E-06D7-7F87EEECCF3A".
124
                            }, # pos 20
125
                            {
126
                              kivi_datev_name => 'not yet implemented',
127
                            },
128
                            {
129
                              kivi_datev_name => 'not yet implemented',
130
                            },
131
                            {
132
                              kivi_datev_name => 'not yet implemented',
133
                            },
134
                            {
135
                              kivi_datev_name => 'not yet implemented',
136
                            },
137
                            {
138
                              kivi_datev_name => 'not yet implemented',
139
                            },
140
                            {
141
                              kivi_datev_name => 'not yet implemented',
142
                            },
143
                            {
144
                              kivi_datev_name => 'not yet implemented',
145
                            },
146
                            {
147
                              kivi_datev_name => 'not yet implemented',
148
                            },
149
                            {
150
                              kivi_datev_name => 'not yet implemented',
151
                            },
152
                            {
153
                              kivi_datev_name => 'not yet implemented',
154
                            },
155
                            {
156
                              kivi_datev_name => 'not yet implemented',
157
                            },
158
                            {
159
                              kivi_datev_name => 'not yet implemented',
160
                            },
161
                            {
162
                              kivi_datev_name => 'not yet implemented',
163
                            },
164
                            {
165
                              kivi_datev_name => 'not yet implemented',
166
                            },
167
                            {
168
                              kivi_datev_name => 'not yet implemented',
169
                            },
170
                            {
171
                              kivi_datev_name => 'not yet implemented',
172
                            },
173
                            {
174
                              kivi_datev_name => 'kost1',
175
                              csv_header_name => t8('Cost Center'),
176
                              max_length      => 8,
177
                              type            => 'Text',
178
                              valid_check     => sub { my $text = shift; return 1 unless $text; check_encoding($text);  },
179
                            }, # pos 37
180
                            {
181
                              kivi_datev_name => 'kost2',
182
                              csv_header_name => t8('Cost Center'),
183
                              max_length      => 8,
184
                              type            => 'Text',
185
                              valid_check     => sub { my $text = shift; return 1 unless $text; check_encoding($text);  },
186
                            }, # pos 38
187
                            {
188
                              kivi_datev_name => 'not yet implemented',
189
                              csv_header_name => t8('KOST Quantity'),
190
                              max_length      => 9,
191
                              type            => 'Number',
192
                              valid_check     => sub { return (shift =~ m/^[0-9]{0,9}$/) },
193
                            }, # pos 39
194
                            {
195
                              kivi_datev_name => 'ustid',
196
                              csv_header_name => t8('EU Member State and VAT ID Number'),
197
                              max_length      => 15,
198
                              type            => 'Text',
199
                              valid_check     => sub {
200
                                                       my $ustid = shift;
201
                                                       return 1 unless defined($ustid);
202
                                                       return ($ustid =~ m/^CH|^[A-Z]{2}\w{5,13}$/);
203
                                                     },
204
                            }, # pos 40
205
  );
206

  
207
sub check_encoding {
208
  use Encode qw( decode );
209
  # counter test: arabic doesnt work: ݐ
210
  my $test = shift;
211
  return undef unless $test;
212
  if (eval {
213
    decode('Windows-1252', $test, Encode::FB_CROAK|Encode::LEAVE_SRC);
214
    1
215
  }) {
216
    return 1;
217
  }
218
}
219

  
220
sub kivitendo_to_datev {
221
  my $self = shift;
222

  
223
  my $entries = scalar (@kivitendo_to_datev);
224
  push @kivitendo_to_datev, { kivi_datev_name => 'not yet implemented' } for 1 .. (116 - $entries);
225
  return @kivitendo_to_datev;
226
}
227

  
228
sub generate_csv_header {
229
  my ($self, %params)   = @_;
230

  
231
  # we need from and to in YYYYDDMM
232
  croak "Wrong format for from" unless $params{from} =~ m/^[0-9]{8}$/;
233
  croak "Wrong format for to"   unless $params{to} =~ m/^[0-9]{8}$/;
234

  
235
  # who knows if we want locking and when our fiscal year starts
236
  croak "Wrong state of locking"      unless $params{locked} =~ m/(0|1)/;
237
  croak "No startdate of fiscal year" unless $params{first_day_of_fiscal_year} =~ m/^[0-9]{8}$/;
238

  
239

  
240
  # we can safely set these defaults
241
  my $today              = DateTime->now(time_zone => "local");
242
  my $created_on         = $today->ymd('') . $today->hms('') . '000';
243
  my $length_of_accounts = length(SL::DB::Manager::Chart->get_first(where => [charttype => 'A'])->accno) // 4;
244
  my $default_curr       = SL::DB::Default->get_default_currency;
245

  
246
  # datev metadata and the string lenght limits
247
  my %meta_datev;
248
  my %meta_datev_to_valid_length = (
249
    beraternr   =>  7,
250
    beratername => 25,
251
    mandantennr =>  5,
252
  );
253

  
254
  my $datev = SL::DB::Manager::Datev->get_first();
255

  
256
  while (my ($k, $v) = each %meta_datev_to_valid_length) {
257
    $meta_datev{$k} = substr $datev->{$k}, 0, $v;
258
  }
259

  
260
  my @header = (
261
    "EXTF", "300", 21, "Buchungsstapel", 7, $created_on, "", "ki",
262
    "kivitendo-datev", "", $meta_datev{beraternr}, $meta_datev{mandantennr},
263
    $params{first_day_of_fiscal_year}, $length_of_accounts,
264
    $params{from}, $params{to}, "", "", 1, "", $params{locked},
265
    $default_curr, "", "", "",""
266
  );
267

  
268
  return @header;
269
}
270
1;
271

  
272
__END__
273

  
274
=encoding utf-8
275

  
276
=head1 NAME
277

  
278
SL::DATEV::CSV - kivitendo DATEV CSV Specification
279

  
280
=head1 SYNOPSIS
281

  
282
The parsing of the DATEV CSV is index based, therefore the correct
283
column must be present at the corresponding index, i.e.:
284
 Index 2
285
 Field Name   : Debit/Credit Label
286
 Valid Values : 'S' or 'H'
287
 Length:      : 1
288

  
289
The columns in C<@kivi_datev> are in the correct order and the
290
specific attributes are defined as a key value hash list for each entry.
291

  
292
The key names are the english translation according to the DATEV specs
293
(Leitfaden DATEV englisch).
294

  
295
The two attributes C<max_length> and C<type> are also set as specified
296
by the DATEV specs.
297

  
298
To link the structure to kivitendo data, each entry has the attribute C<kivi_datev_name>
299
which is by convention the key name as generated by DATEV->generate_datev_data.
300
A value of C<'not yet implemented'> indicates that this field has no
301
corresponding kivitendo data and will be given an empty value by DATEV->csv_buchungsexport.
302

  
303

  
304
=head1 SPECIFICATION
305

  
306
This is an excerpt of the DATEV Format 2015 Specification for CSV-Header
307
and CSV-Data lines.
308

  
309
=head2 FILENAME
310

  
311
The filename is subject to the following restrictions:
312
1. The filename must begin with the prefix DTVF_ or EXTF_.
313
2. The filename must end with .csv.
314

  
315
When exporting from or importing into DATEV applications, the filename is
316
marked with the prefix "DTVF_" (DATEV Format).
317
The prefix "DTVF_" is reserved for DATEV applications.
318
If you are using a third-party application to create a file in the DATEV format
319
that you want to import using batch processing, use the prefix "EXTF_"
320
(External Format).
321

  
322
=head2 File Structure
323

  
324
The file structure of the text file exported/imported is defined as follows
325

  
326
Line 1: Header (serves to assist in the interpretation of the following data)
327

  
328
Line 2: Headline (headline of the user data)
329

  
330
Line 3 – n: Records (user data)
331

  
332
For an valid example file take a look at doc/DATEV-2015/EXTF_Buchungsstapel.csv
333

  
334

  
335
=head2 Detailed Description
336

  
337
Line 1 must contain 11 fields.
338

  
339
Line 2 must contain 26 fields.
340

  
341
Line 3 - n:  must contain 116 fields, a smaller subset is mandatory.
342

  
343
=head1 FUNCTIONS
344

  
345
=over 4
346

  
347
=item check_encoding
348

  
349
Helper function, returns true if a string is not empty and cp1252 encoded
350

  
351
=item generate_csv_header(from => 'YYYYDDMM', to => 'YYYYDDMM', locked => 0,
352
                          first_day_of_fiscal_year => 'YYYYDDMM')
353

  
354
Mostly all other header information are constants or metadata loaded
355
from SL::DB::Datev.pm.
356

  
357
Returns the first two entries for the header (see above: File Structure)
358
as an array.
359

  
360
All params are mandatory:
361
C<params{from}>,  C<params{to}>
362
and C<params{first_day_of_fiscal_year}> have to be in YYYYDDMM date string
363
format.
364
Furthermore C<params{locked}> needs to be a boolean in number format (0|1).
365

  
366

  
367
=item kivitendo_to_datev
368

  
369
Returns the data structure C<@datev_data> as an array
370

  
371
=back
doc/DATEV-2015/EXTF_Anlag-Buchungen.csv
1
"EXTF";510;63;"Anlagenbuchf?hrung - Buchungssatzvorlagen";1;20150729103107277;;"RE";"Admin";"";29098;55003;20150101;4;;;"";"";;;;"";;"";;;"";;;"";""
2
Bereich;Kontonummer;Buchungssatztyp;KontonummerSoll;KontonummerHaben;Buchungstext
3
30;400;"N";4830;400;"Normalabschreibung"
doc/DATEV-2015/EXTF_Anlag-Filialen.csv
1
"EXTF";510;62;"Anlagenbuchf?hrung - Filialen";1;20150729103107277;;"RE";"Admin";"";29098;55003;20150101;4;;;"";"";;;;"";;"";;;"";;;"";""
2
Filialnummer;Filialbezeichnung
3
1;"Hauptbetrieb"
doc/DATEV-2015/EXTF_Buchungsstapel.csv
1
"EXTF";510;21;"Buchungsstapel";7;20150729093158705;;"SV";"Admin";"";55003;63021;20160101;4;20160101;20160331;"Kasse";"";1;0;0;"EUR";;"KP";;"";;;"";"";
2
Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;WKZ Umsatz;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;Konto;Gegenkonto (ohne BU-Schl?ssel);BU-Schl?ssel;Belegdatum;Belegfeld 1;Belegfeld 2;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Gesch?ftspartnerbank;Sachverhalt;Zinssperre;Beleglink;Beleginfo - Art 1;Beleginfo - Inhalt 1;Beleginfo - Art 2;Beleginfo - Inhalt 2;Beleginfo - Art 3;Beleginfo - Inhalt 3;Beleginfo - Art 4;Beleginfo - Inhalt 4;Beleginfo - Art 5;Beleginfo - Inhalt 5;Beleginfo - Art 6;Beleginfo - Inhalt 6;Beleginfo - Art 7;Beleginfo - Inhalt 7;Beleginfo - Art 8;Beleginfo - Inhalt 8;KOST1 - Kostenstelle;KOST2 - Kostenstelle;Kost-Menge;EU-Land u. UStID;EU-Steuersatz;Abw. Versteuerungsart;Sachverhalt L+L;Funktionserg?nzung L+L;BU 49 Hauptfunktionstyp;BU 49 Hauptfunktionsnummer;BU 49 Funktionserg?nzung;Zusatzinformation - Art 1;Zusatzinformation- Inhalt 1;Zusatzinformation - Art 2;Zusatzinformation- Inhalt 2;Zusatzinformation - Art 3;Zusatzinformation- Inhalt 3;Zusatzinformation - Art 4;Zusatzinformation- Inhalt 4;Zusatzinformation - Art 5;Zusatzinformation- Inhalt 5;Zusatzinformation - Art 6;Zusatzinformation- Inhalt 6;Zusatzinformation - Art 7;Zusatzinformation- Inhalt 7;Zusatzinformation - Art 8;Zusatzinformation- Inhalt 8;Zusatzinformation - Art 9;Zusatzinformation- Inhalt 9;Zusatzinformation - Art 10;Zusatzinformation- Inhalt 10;Zusatzinformation - Art 11;Zusatzinformation- Inhalt 11;Zusatzinformation - Art 12;Zusatzinformation- Inhalt 12;Zusatzinformation - Art 13;Zusatzinformation- Inhalt 13;Zusatzinformation - Art 14;Zusatzinformation- Inhalt 14;Zusatzinformation - Art 15;Zusatzinformation- Inhalt 15;Zusatzinformation - Art 16;Zusatzinformation- Inhalt 16;Zusatzinformation - Art 17;Zusatzinformation- Inhalt 17;Zusatzinformation - Art 18;Zusatzinformation- Inhalt 18;Zusatzinformation - Art 19;Zusatzinformation- Inhalt 19;Zusatzinformation - Art 20;Zusatzinformation- Inhalt 20;St?ck;Gewicht;Zahlweise;Forderungsart;Veranlagungsjahr;Zugeordnete F?lligkeit;Skontotyp;Auftragsnummer;Buchungstyp;Ust-Schl?ssel (Anzahlungen);EU-Land (Anzahlungen);Sachverhalt L+L (Anzahlungen);EU-Steuersatz (Anzahlungen);Erl?skonto (Anzahlungen);Herkunft-Kz;Leerfeld;KOST-Datum;Mandatsreferenz;Skontosperre;Gesellschaftername;Beteiligtennummer;Identifikationsnummer;Zeichnernummer;Postensperre bis;Bezeichnung SoBil-Sachverhalt;Kennzeichen SoBil-Buchung;Festschreibung;Leistungsdatum;Datum Zuord.Steuerperiode
3
100,18;"S";"";;;"";48400;8401;"";3101;"";"";;"Test Anzahlung";;"";1;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"50";"";;"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";2012;;1;"Projekt 4711";"AG";3;"";;;8070;"WK";"";;"";;"";;"";"";;"";;1;;
4
10,00;"S";"";;;"";48220;8400;"";3103;"";"";;"Normalabschr. immater. VermG";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"90";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;10022016;
5
64083;"S";"";;;"";4400;85;"";3101;"";"";;"Normalabschreibung Geb?ude";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"50";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;
6
3584,56;"S";"";;;"";4831;100;"";3101;"";"";;"Normalabschreibung Geb?ude";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"50";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;0;;
7
3745,56;"S";"";;;"";4830;210;"";3101;"";"";;"Normalabschreibung Sachanlagen";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"50";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
8
531,16;"S";"";;;"";4832;320;"";3101;"";"";;"Normalabschreibung Kfz";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"WK";"";;"";;"";;"";"";;"";;1;;
9
4979,65;"H";"";;;"";8400;30200;"";0902;"201202010";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"202";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
10
11687,62;"H";"";;;"";8120;40000;"";0902;"201202011";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
11
13968,83;"H";"";;;"";8125;40100;"";1602;"201202023";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"889";5;"DE133546770";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
12
11807,63;"H";"";;;"";8125;40100;"";1702;"201202024";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"299";"";;"DE133546770";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
13
4120,51;"H";"";;;"";8405;30100;"";1702;"201202025";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"201";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
14
16585,28;"H";"";;;"";8405;10200;"";1702;"201202026";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"202";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
15
15301,67;"H";"";;;"";8400;10300;"";2002;"201202027";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"201";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
16
7404,94;"H";"";;;"";8400;60391;"";2102;"201202028";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"199";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
17
66976,12;"H";"";;;"";8407;10400;"";2202;"201202029";"";;"";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"201";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
18
118,55;"H";"";;;"";1000;1369;"";0202;"4";"";;"Test-Shop";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"Beleg fehlt";"Post";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
19
26,87;"H";"";;;"";1000;4930;"9";0102;"";"";;"Schreibwaren";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"90";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
20
460,00;"S";"";;;"";1000;1360;"";0702;"";"";;"Kasseneinlage";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
21
124,00;"H";"CHF";1,240402;100,00;"EUR";21100;8050;"";2702;"";"";;"Umsatz Schweiz";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
22
70,96;"H";"";;;"";1100;4530;"9";2702;"";"";;"Diesel";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
23
17107,00;"S";"";;;"";31100;8125;"";2702;"201202007";"";;"Ausland EU";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"520";"45";30;"ATU36251489";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";0;"";;;0;"WK";"";;"";;"";;"";"";;"";;0;;
24
5856,00;"H";"";;;"";1100;980;"";2802;"";"";;"Geb?udeversicherung 03/12-02/13";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
25
70,27;"H";"";;;"";1100;4530;"9";2802;"";"";;"Benzin";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
26
1763,58;"H";"";;;"";1100;4580;"9";2802;"";"";;"Leasing Van";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"20";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
27
1190,00;"H";"";;;"";8050;10100;"3";1403;"AR1234";"";;"Aufteilung AR ohne Automatikkonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
28
700,00;"S";"";;;"";8050;8060;"";1403;"AR1234";"";;"Aufteilung auf Erl?skonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
29
300,00;"S";"";;;"";8050;8070;"";1403;"AR1234";"";;"Aufteilung auf Erl?skonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
30
1190,00;"H";"";;;"";8400;10100;"";1403;"AR2345";"";;"Aufteilung AR mit Automatikkonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
31
600,00;"S";"";;;"";8400;8401;"40";1403;"AR2345";"";;"Auftreilung auf Erl?skonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
32
400,00;"S";"";;;"";8400;8405;"40";1403;"AR2345";"";;"Auftreilung auf Erl?skonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
33
2500,00;"S";"";;;"";10100;8400;"";0103;"AR-78/13";"160316";;"Holzlieferung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
34
2500,00;"S";"";;;"";1200;10100;"";0103;"AR-78/13";"";;"Bezahlung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
35
119,00;"S";"";;;"";10100;8400;"";0103;"AR-456/13";"";;"Rechnung mit Skontogew?hrung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
36
116,62;"S";"";;;"";1200;10100;"";0103;"AR-456/13";"";2,38;"Zahlung mit 2% Skonto";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
37
35,00;"S";"";;;"";10001;8400;"";0103;"AR-2013";"";;"falscher Debitor";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
38
35,00;"H";"";;;"";10001;8400;"20";0103;"AR-2013";"";;"Berichtigung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
39
35,00;"S";"";;;"";10100;8400;"";0103;"AR-2013";"";;"richtiger Debitor";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
40
488,00;"H";"";;;"";980;4360;"";0101;"";"";;"Geb?udeversicherung";;"";;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"10";"";;"";;"";;;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;;"";;;;"";"";;"";;;;"WK";"";;"";;"";;"";"";;"";;1;;
doc/DATEV-2015/EXTF_Buchungstextkonstanten.csv
1
"EXTF";510;67;"Buchungstextkonstanten";1;20150729093349782;;"RE";"Admin";"";29098;55003;20150101;4;;;"";"";;;;"";;"";;;"";;;"";""
2
Nummer;Buchungstext
3
10;"Postwertzeichen"
4
11;"B?robedarf"
5
20;"Benzin"
6
21;"Diesel"
7
22;"Kundendienst"
8
90;"Kasseneinlage"
9
91;"f?r Kasse"
doc/DATEV-2015/EXTF_Div-Adressen.csv
1
"EXTF";510;48;"Diverse Adressen";2;20150729103107277;;"RE";"Admin";"";55003;63021;20150101;4;;;"";"";;;;"";;"";;"";;;"";"";
2
Adressnummer;Konto;Anrede;Name (Adressattyp Unternehmen);Unternehmensgegenstand;Kurzbezeichnung;Name (Adressattyp nat?rl. Person);Vorname (Adressattyp nat?rl. Person);Name (Adressattyp keine Angabe);Adressattyp;Titel/Akad. Grad;Adelstitel;Namensvorsatz;Abweichende Anrede;Adressart;Stra?e;Postfach;Postleitzahl;Ort;Land;Versandzusatz;Adresszusatz;Abw. Zustellbezeichnung 1;Abw. Zustellbezeichnung 2;Kennz. Korrespondenzadresse;Adresse G?ltig von;Adresse G?ltig bis;Abweichende Anrede (Rechnungsadresse);Adressart (Rechnungsadresse);Stra?e (Rechnungsadresse);Postfach (Rechnungsadresse);Postleitzahl (Rechnungsadresse);Ort (Rechnungsadresse);Land (Rechnungsadresse);Versandzusatz (Rechnungsadresse);Adresszusatz (Rechnungsadresse);Abw. Zustellbezeichnung 1 (Rechnungsadresse);Abw. Zustellbezeichnung 2 (Rechnungsadresse);Adresse G?ltig von (Rechnungsadresse);Adresse G?ltig bis (Rechnungsadresse);Telefon;Bemerkung (Telefon);Telefon GL;Bemerkung (Telefon GL);E-Mail;Bemerkung (E-Mail);Internet;Bemerkung (Internet);Fax;Bemerkung (Fax);Sonstige;Bemerkung (Sonstige);Bankleitzahl 1;Bankbezeichnung 1;Bank-Kontonummer 1;L?nderkennzeichen 1;IBAN-Nr. 1;Leerfeld;SWIFT-Code 1;Abw. Kontoinhaber 1;Kennz. Hauptbankverb. 1;Bankverb 1 G?ltig von;Bankverb 1 G?ltig bis;Bankleitzahl 2;Bankbezeichnung 2;Bank-Kontonummer 2;L?nderkennzeichen 2;IBAN-Nr. 2;Leerfeld;SWIFT-Code 2;Abw. Kontoinhaber 2;Kennz. Hauptbankverb. 2;Bankverb 2 G?ltig von;Bankverb 2 G?ltig bis;Bankleitzahl 3;Bankbezeichnung 3;Bank-Kontonummer 3;L?nderkennzeichen 3;IBAN-Nr. 3;Leerfeld;SWIFT-Code 3;Abw. Kontoinhaber 3;Kennz. Hauptbankverb. 3;Bankverb 3 G?ltig von;Bankverb 3 G?ltig bis;Bankleitzahl 4;Bankbezeichnung 4;Bank-Kontonummer 4;L?nderkennzeichen 4;IBAN-Nr. 4;Leerfeld;SWIFT-Code 4;Abw. Kontoinhaber 4;Kennz. Hauptbankverb. 4;Bankverb 4 G?ltig von;Bankverb 4 G?ltig bis;Bankleitzahl 5;Bankbezeichnung 5;Bank-Kontonummer 5;L?nderkennzeichen 5;IBAN-Nr. 5;Leerfeld;SWIFT-Code 5;Abw. Kontoinhaber 5;Kennz. Hauptbankverb. 5;Bankverb 5 G?ltig von;Bankverb 5 G?ltig bis;Bankleitzahl 6;Bankbezeichnung 6;Bank-Kontonummer 6;L?nderkennzeichen 6;IBAN-Nr. 6;Leerfeld;SWIFT-Code 6;Abw. Kontoinhaber 6;Kennz. Hauptbankverb. 6;Bankverb 6 G?ltig von;Bankverb 6 G?ltig bis;Bankleitzahl 7;Bankbezeichnung 7;Bank-Kontonummer 7;L?nderkennzeichen 7;IBAN-Nr. 7;Leerfeld;SWIFT-Code 7;Abw. Kontoinhaber 7;Kennz. Hauptbankverb. 7;Bankverb 7 G?ltig von;Bankverb 7 G?ltig bis;Bankleitzahl 8;Bankbezeichnung 8;Bank-Kontonummer 8;L?nderkennzeichen 8;IBAN-Nr. 8;Leerfeld;SWIFT-Code 8;Abw. Kontoinhaber 8;Kennz. Hauptbankverb. 8;Bankverb 8 G?ltig von;Bankverb 8 G?ltig bis;Bankleitzahl 9;Bankbezeichnung 9;Bank-Kontonummer 9;L?nderkennzeichen 9;IBAN-Nr. 9;Leerfeld;SWIFT-Code 9;Abw. Kontoinhaber 9;Kennz. Hauptbankverb. 9;Bankverb 9 G?ltig von;Bankverb 9 G?ltig bis;Bankleitzahl 10;Bankbezeichnung 10;Bank-Kontonummer 10;L?nderkennzeichen 10;IBAN-Nr. 10;Leerfeld;SWIFT-Code 10;Abw. Kontoinhaber 10;Kennz. Hauptbankverb. 10;Bankverb 10 G?ltig von;Bankverb 10 G?ltig bis;Kundennummer;Ansprechpartner;Vertreter;Sachbearbeiter;Briefanrede;Gru?formel;Sprache;Ausgabeziel;Indiv. Feld 1;Indiv. Feld 2;Indiv. Feld 3;Indiv. Feld 4;Indiv. Feld 5;Indiv. Feld 6;Indiv. Feld 7;Indiv. Feld 8;Indiv. Feld 9;Indiv. Feld 10;Mandatsreferenz 1;Mandatsreferenz 2;Mandatsreferenz 3;Mandatsreferenz 4;Mandatsreferenz 5;Mandatsreferenz 6;Mandatsreferenz 7;Mandatsreferenz 8;Mandatsreferenz 9;Mandatsreferenz 10;Nummer Fremdsystem
3
"DIV500";30000;"Firma";"Testm?bel GmbH";"";"Testm?bel GmbH";"";"";"";"2";"";"";"";"";"STR";"Feldweg 28";"";"90409";"N?rnberg";"DE";"";"";"";"";1;;;"";"";"";"";"";"";"";"";"";"";"";;;"+49 911 12345678";"";"+49 911 12345678";"";"test@testm?bel.de";"";"www.testm?bel.de";"";"+49 911 987654321";"";"";"";"76069512";"Raiffbk Knoblauchsland";"1122334455";"DE";"";"0";"GENODEF1N08";"Herr Muster";"1";01012013;31122013;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"KDN 75";"Herr M?llermuster";"Frau Mustermann";"Herr Testmann";"";"Mit freundlichen Gr??en";1;3;"kein Muster";"Beispiel";"Testeingabe";"";"";"";"";"";"";"Muster vorhanden";"";"";"";"";"";"";"";"";"";"";""
4
"DIV600";30000;"Herrn";"";"";"Mustermann";"Mustermann";"";"";"1";"Dr.";"Baron";"zu";"";"STR";"Musterweg 5";"";"90000";"N?rnberg";"DE";"Nicht nachsenden";"";"";"";1;;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""
5
"DIV700";30000;"Frau";"";"";"Testmann, Elke";"Testmann";"Elke";"";"1";"";"Landgr?fin";"vom und zu";"";"STR";"Wiesenweg 125";"";"90600";"F?rth";"DE";"Bei Umzug bitte mit neuer Anschrift zur?ck";"";"";"";1;;;"";"";"";"";"";"";"";"";"";"";"";;;"+49 911 505050";"immer erreichbar";"+49 911 505050";"immer erreichbar";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"76000000";"BBk N?rnberg";"998877";"DE";"DE83760000000000998877";"1";"MARKDEF1760";"Frau Beispiel";"1";01012013;12122013;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"Mit den besten Empfehlungen";4;1;"nur zum Test";"nur als Beispiel";"";"nur als Beispiel";"";"nur als Beispiel";"nur zum Test";"nur zum Test";"";"nur als Beispiel";"";"";"";"";"";"";"";"";"";"";""
doc/DATEV-2015/EXTF_Sachkontobeschriftungen.csv
1
"EXTF";510;20;"Kontenbeschriftungen";2;;;"RE";"Admin";"";55003;63021;20150101;4;;;"";"";;;;"";;"";;"";;;"";"";
2
Konto;Kontobeschriftung;SprachId
3
27;"EDV-Software";"de-DE"
4
35;"Gesch?fts- oder Firmenwert";"de-DE"
5
40;"Verschmorungsmehrwertt";"de-DE"
6
44;"EDV-Software";"de-DE"
7
65;"Grundst?ck Schleifmusterm?hle 25";"de-DE"
8
85;"Grundst?ckswert bebauter Grundst?cke";"de-DE"
9
100;"Fabrikbauten";"de-DE"
10
210;"Maschinen";"de-DE"
11
320;"PKW";"de-DE"
12
350;"LKW";"de-DE"
13
400;"Betriebsausstattung";"de-DE"
14
420;"B?roeinrichtung";"de-DE"
15
440;"Werkzeuge";"de-DE"
16
480;"Geringwertige Wirtschaftsg?ter";"de-DE"
17
485;"Wirtschaftsg?ter Sammelposten";"de-DE"
18
525;"Wertpapiere des Anlageverm?gens";"de-DE"
19
690;"Darlehen 1 Deutsche Bank";"de-DE"
20
691;"Darlehen 2 Deutsche Bank";"de-DE"
21
692;"Darlehen Postbank";"de-DE"
22
693;"Darlehen Deutsche Bank";"de-DE"
23
694;"Darlehen Deutsche Bank";"de-DE"
24
695;"Ratenkredit Pritschenwagen";"de-DE"
25
696;"Darlehen Schleifmusterm?hle 25";"de-DE"
26
860;"Gewinnvortrag vor Verwendung";"de-DE"
27
980;"Aktive Rechnungsabgrenzung";"de-DE"
28
986;"Damnum/Disagio";"de-DE"
29
992;"Abgrenzung unterj?hrige AfA f?r BWA";"de-DE"
30
1000;"Kasse";"de-DE"
31
1010;"Kasse Werkstatt";"de-DE"
32
1100;"Postbank N?rnberg";"de-DE"
33
1111;"Fremdw?hrung1";"de-DE"
34
1200;"Deutsche Bank";"de-DE"
35
1201;"HypoVereinsbank N?rnberg";"de-DE"
36
1202;"Deutsche Bank";"de-DE"
37
1203;"USD-Bank";"de-DE"
38
1210;"Dresdner Bank";"de-DE"
39
1220;"SchmidtBank";"de-DE"
40
1230;"Sparkasse";"de-DE"
41
1250;"Deutsche Bank";"de-DE"
42
1260;"Stadtspk. N?rnberg";"de-DE"
43
1270;"Commerzbank Nbg.";"de-DE"
44
1290;"Finanzmittelanlagen kurzfr. Disposition";"de-DE"
45
1361;"Geldtransit";"de-DE"
46
1369;"Unklare Posten";"de-DE"
47
1400;"Forderungen aus Lieferungen u.Leistung";"de-DE"
48
1447;"Forderg. aus stfr., n. steuerbaren L+L";"de-DE"
49
1500;"Sonstige Verm?gensgegenst?nde";"de-DE"
50
1540;"Steuer?berzahlungen";"de-DE"
51
1549;"K?rperschaftsteuerr?ckforderung";"de-DE"
52
1571;"Abziehbare Vorsteuer 7%";"de-DE"
53
1574;"Abziehbare Vorsteuer aus EU-Erwerb 19%";"de-DE"
54
1576;"Abziehbare Vorsteuer 19%";"de-DE"
55
1577;"Abziehbare Vorsteuer ? 13b UStG 19%";"de-DE"
56
1593;"Verrechnung erhaltene Anzahlungen";"de-DE"
57
1600;"Verbindl. aus Lieferungen u. Leistungen";"de-DE"
58
1700;"Sonstige Verbindlichkeiten";"de-DE"
59
1710;"Erhaltene Anzahlungen";"de-DE"
60
1718;"Erhaltene Anzahlungen 19% USt";"de-DE"
61
1736;"Verbindl. Steuern und Abgaben";"de-DE"
62
1741;"Verbindlichk. Lohn- und Kirchensteuer";"de-DE"
63
1774;"Umsatzsteuer aus EU-Erwerb 19%";"de-DE"
64
1776;"Umsatzsteuer 19%";"de-DE"
65
1780;"Umsatzsteuervorauszahlungen";"de-DE"
66
1781;"Umsatzsteuervorauszahlungen 1/11";"de-DE"
67
1787;"Umsatzsteuer nach ? 13b UStG 19%";"de-DE"
68
2110;"Zinsaufwendungen f.kfr.Verbindlichkeit.";"de-DE"
69
2120;"Zinsaufwendungen f.lfr.Verbindlichkeit.";"de-DE"
70
2126;"Zinsen zur Finanzierung Anlageverm?gen";"de-DE"
71
2200;"K?rperschaftsteuer";"de-DE"
72
2208;"Solidarit?tszuschlag";"de-DE"
73
2315;"Abg?nge Sachanlagen Restbuchwert";"de-DE"
74
2375;"Grundsteuer";"de-DE"
75
2381;"Spenden kulturelle Zwecke";"de-DE"
76
2382;"Spenden mildt?tige Zwecke";"de-DE"
77
2650;"Sonstige Zinsen und ?hnliche Ertr?ge";"de-DE"
78
2670;"Diskontertr?ge";"de-DE"
79
2701;"Sonstige Ertr?ge Mahngeb?hren";"de-DE"
80
2702;"Sonstige Ertr?ge Zinsen";"de-DE"
81
2860;"Gewinnvortrag nach Verwendung";"de-DE"
82
3100;"Fremdleistungen";"de-DE"
83
3123;"Sonst. Leistung EU 19% Vorst., 19% USt";"de-DE"
84
3300;"Wareneingang 7% Vorsteuer";"de-DE"
85
3400;"Wareneingang Furnier";"de-DE"
86
3401;"Wareneingang Spanplatten";"de-DE"
87
3402;"Wareneingang Farben und Lacke";"de-DE"
88
3405;"Wareneingang beschichtete Platten";"de-DE"
89
3406;"Wareneingang Modellbau";"de-DE"
90
3407;"Wareneingang Messebau";"de-DE"
91
3409;"Sonstiger Wareneingang";"de-DE"
92
3425;"EU-Erwerb 19% Vorsteuer und 19% USt";"de-DE"
93
3736;"Erhaltene Skonti 19% Vorsteuer";"de-DE"
94
3748;"Erhalt. Skonti EU-Erwerb 19% Vorst/USt";"de-DE"
95
3961;"Bestandsver?nd. Furniere";"de-DE"
96
3962;"Bestandsver?nd. Spanplatten";"de-DE"
97
3963;"Bestandsver?nd. Farben und Lacke";"de-DE"
98
3964;"Bestandsver?nd. beschichtete Platten";"de-DE"
99
3965;"Bestandsver?nd. Sonstige RHB-Stoffe";"de-DE"
100
3971;"Bestand Furniere";"de-DE"
101
3972;"Bestand Spanplatten";"de-DE"
102
3973;"Bestand Farben und Lacke";"de-DE"
103
3974;"Bestand beschichtete Platten";"de-DE"
104
3975;"Sonstiger Bestand";"de-DE"
105
4110;"L?hne";"de-DE"
106
4120;"Geh?lter";"de-DE"
107
4127;"Gesch?ftsf?hrergeh?lter";"de-DE"
108
4130;"Gesetzliche Sozialaufwendungen";"de-DE"
109
4138;"Beitr?ge zur Berufsgenossenschaft";"de-DE"
110
4145;"Freiwillige soziale Aufwendung. LSt-pfl.";"de-DE"
111
4149;"Pauschale Steuer f?r Zusch?sse";"de-DE"
112
4175;"Fahrtkostenerstatt. Whg./Arbeitsst?tte";"de-DE"
113
4190;"Aushilfsl?hne";"de-DE"
114
4199;"Pauschale Steuer f?r Aushilfen";"de-DE"
115
4200;"Raumkosten";"de-DE"
116
4210;"Miete, unbewegliche Wirtschaftsg?ter";"de-DE"
117
4240;"Gas, Strom, Wasser";"de-DE"
118
4250;"Reinigung";"de-DE"
119
4260;"Instandhaltung betrieblicher R?ume";"de-DE"
120
4270;"Abgaben betrieblich genutzt. Grundbesitz";"de-DE"
121
4280;"Sonstige Raumkosten";"de-DE"
122
4320;"Gewerbesteuer";"de-DE"
123
4360;"Versicherungen";"de-DE"
124
4366;"Versicherung f?r Geb?ude";"de-DE"
125
4510;"Kfz-Steuern";"de-DE"
126
4520;"Kfz-Versicherungen";"de-DE"
127
4530;"Laufende Kfz-Betriebskosten";"de-DE"
128
4540;"Kfz-Reparaturen";"de-DE"
129
4580;"Sonstige Kfz-Kosten";"de-DE"
130
4600;"Werbekosten";"de-DE"
131
4630;"Geschenke abzugsf?hig";"de-DE"
132
4640;"Repr?sentationskosten";"de-DE"
133
4651;"abzugsf?hige Bewirtungskosten";"de-DE"
134
4654;"Nicht abzugsf?hige Bewirtungskosten";"de-DE"
135
4663;"Reisekosten Arbeitnehmer, Fahrtkosten";"de-DE"
136
4664;"Reisekosten AN Verpfleg.mehraufwand";"de-DE"
137
4666;"Reisekosten AN ?bernachtungsaufwand";"de-DE"
138
4710;"Verpackungsmaterial";"de-DE"
139
4730;"Ausgangsfrachten";"de-DE"
140
4750;"Transportversicherungen";"de-DE"
141
4800;"Reparatur/Instandh. Anlagen u. Maschinen";"de-DE"
142
4810;"Mietleasing bewegliche Wirtschaftsg?ter";"de-DE"
143
4822;"Abschreibung immaterielle VermG";"de-DE"
144
4830;"Abschreibungen auf Sachanlagen";"de-DE"
145
4831;"Abschreibungen auf Geb?ude";"de-DE"
146
4832;"Abschreibungen auf Kfz";"de-DE"
147
4862;"Abschreibungen auf WG Sammelposten";"de-DE"
148
4901;"Getr?nke f?r Getr?nkeautomat";"de-DE"
149
4910;"Porto";"de-DE"
150
4920;"Telefon";"de-DE"
151
4921;"Mobilfunk";"de-DE"
152
4930;"B?robedarf";"de-DE"
153
4940;"Zeitschriften, B?cher";"de-DE"
154
4945;"Fortbildungskosten";"de-DE"
155
4950;"Rechts- und Beratungskosten";"de-DE"
156
4955;"Buchf?hrungskosten";"de-DE"
157
4969;"Aufwand Abraum-/Abfallbeseitigung";"de-DE"
158
4970;"Nebenkosten des Geldverkehrs";"de-DE"
159
4980;"Betriebsbedarf";"de-DE"
160
4993;"Kalkulatorische Abschreibungen";"de-DE"
161
8000;"indiv., Erl?se";"de-DE"
162
8120;"Steuerfr. Erl?se Furniere Drittland";"de-DE"
163
8125;"Steuerfr. EG-Erl?se Furniere";"de-DE"
164
8336;"Nicht steuerbare s. Leistung ? 18b UStG";"de-DE"
165
8400;"Erl?se Furniere";"de-DE"
166
8401;"Erl?se Kleinm?bel";"de-DE"
167
8405;"Erl?se beschichtete Platten";"de-DE"
168
8406;"Erl?se Modellbau";"de-DE"
169
8407;"Erl?se Messebau";"de-DE"
170
8611;"Verrechn. sonstige Sachbez?ge 19% USt";"de-DE"
171
8730;"Gew?hrte Skonti";"de-DE"
172
8736;"Gew?hrte Skonti 19% USt";"de-DE"
173
8741;"Gew?hrte Skonti Leistungen ?13b UStG";"de-DE"
174
8743;"Gew?hrte Skonti stfr. EU-Lieferung";"de-DE"
175
8820;"Erl?se Sachanlageverk?ufe 19% USt";"de-DE"
176
9000;"Saldenvortr?ge Sachkonten";"de-DE"
177
9008;"Saldenvortr?ge Debitoren";"de-DE"
178
9009;"Saldenvortr?ge Kreditoren";"de-DE"
doc/DATEV-2015/EXTF_Stammdaten-Deb-Kred.csv
1
"EXTF";510;16;"Debitoren/Kreditoren";4;20150729093352970;;"RE";"Admin";"";55003;63021;20150101;4;;;"";"";;;;"";;"";;"";;;"";"";
2
Konto;Name (Adressattyp Unternehmen);Unternehmensgegenstand;Name (Adressattyp nat?rl. Person);Vorname (Adressattyp nat?rl. Person);Name (Adressattyp keine Angabe);Adressattyp;Kurzbezeichnung;EU-Land;EU-UStID;Anrede;Titel/Akad. Grad;Adelstitel;Namensvorsatz;Adressart;Stra?e;Postfach;Postleitzahl;Ort;Land;Versandzusatz;Adresszusatz;Abweichende Anrede;Abw. Zustellbezeichnung 1;Abw. Zustellbezeichnung 2;Kennz. Korrespondenzadresse;Adresse G?ltig von;Adresse G?ltig bis;Telefon;Bemerkung (Telefon);Telefon GL;Bemerkung (Telefon GL);E-Mail;Bemerkung (E-Mail);Internet;Bemerkung (Internet);Fax;Bemerkung (Fax);Sonstige;Bemerkung (Sonstige);Bankleitzahl 1;Bankbezeichnung 1;Bank-Kontonummer 1;L?nderkennzeichen 1;IBAN-Nr. 1;IBAN1 korrekt;SWIFT-Code 1;Abw. Kontoinhaber 1;Kennz. Hauptbankverb. 1;Bankverb 1 G?ltig von;Bankverb 1 G?ltig bis;Bankleitzahl 2;Bankbezeichnung 2;Bank-Kontonummer 2;L?nderkennzeichen 2;IBAN-Nr. 2;IBAN2 korrekt;SWIFT-Code 2;Abw. Kontoinhaber 2;Kennz. Hauptbankverb. 2;Bankverb 2 G?ltig von;Bankverb 2 G?ltig bis;Bankleitzahl 3;Bankbezeichnung 3;Bank-Kontonummer 3;L?nderkennzeichen 3;IBAN-Nr. 3;IBAN3 korrekt;SWIFT-Code 3;Abw. Kontoinhaber 3;Kennz. Hauptbankverb. 3;Bankverb 3 G?ltig von;Bankverb 3 G?ltig bis;Bankleitzahl 4;Bankbezeichnung 4;Bank-Kontonummer 4;L?nderkennzeichen 4;IBAN-Nr. 4;IBAN4 korrekt;SWIFT-Code 4;Abw. Kontoinhaber 4;Kennz. Hauptbankverb. 4;Bankverb 4 G?ltig von;Bankverb 4 G?ltig bis;Bankleitzahl 5;Bankbezeichnung 5;Bank-Kontonummer 5;L?nderkennzeichen 5;IBAN-Nr. 5;IBAN5 korrekt;SWIFT-Code 5;Abw. Kontoinhaber 5;Kennz. Hauptbankverb. 5;Bankverb 5 G?ltig von;Bankverb 5 G?ltig bis;Leerfeld;Briefanrede;Gru?formel;Kundennummer;Steuernummer;Sprache;Ansprechpartner;Vertreter;Sachbearbeiter;Diverse-Konto;Ausgabeziel;W?hrungssteuerung;Kreditlimit (Debitor);Zahlungsbedingung;F?lligkeit in Tagen (Debitor);Skonto in Prozent (Debitor);Kreditoren-Ziel 1 Tg.;Kreditoren-Skonto 1 %;Kreditoren-Ziel 2 Tg.;Kreditoren-Skonto 2 %;Kreditoren-Ziel 3 Brutto Tg.;Kreditoren-Ziel 4 Tg.;Kreditoren-Skonto 4 %;Kreditoren-Ziel 5 Tg.;Kreditoren-Skonto 5 %;Mahnung;Kontoauszug;Mahntext 1;Mahntext 2;Mahntext 3;Kontoauszugstext;Mahnlimit Betrag;Mahnlimit %;Zinsberechnung;Mahnzinssatz 1;Mahnzinssatz 2;Mahnzinssatz 3;Lastschrift;Verfahren;Mandantenbank;Zahlungstr?ger;Indiv. Feld 1;Indiv. Feld 2;Indiv. Feld 3;Indiv. Feld 4;Indiv. Feld 5;Indiv. Feld 6;Indiv. Feld 7;Indiv. Feld 8;Indiv. Feld 9;Indiv. Feld 10;Indiv. Feld 11;Indiv. Feld 12;Indiv. Feld 13;Indiv. Feld 14;Indiv. Feld 15;Abweichende Anrede (Rechnungsadresse);Adressart (Rechnungsadresse);Stra?e (Rechnungsadresse);Postfach (Rechnungsadresse);Postleitzahl (Rechnungsadresse);Ort (Rechnungsadresse);Land (Rechnungsadresse);Versandzusatz (Rechnungsadresse);Adresszusatz (Rechnungsadresse);Abw. Zustellbezeichnung 1 (Rechnungsadresse);Abw. Zustellbezeichnung 2 (Rechnungsadresse);Adresse G?ltig von (Rechnungsadresse);Adresse G?ltig bis (Rechnungsadresse);Bankleitzahl 6;Bankbezeichnung 6;Bank-Kontonummer 6;L?nderkennzeichen 6;IBAN-Nr. 6;IBAN6 korrekt;SWIFT-Code 6;Abw. Kontoinhaber 6;Kennz. Hauptbankverb. 6;Bankverb 6 G?ltig von;Bankverb 6 G?ltig bis;Bankleitzahl 7;Bankbezeichnung 7;Bank-Kontonummer 7;L?nderkennzeichen 7;IBAN-Nr. 7;IBAN7 korrekt;SWIFT-Code 7;Abw. Kontoinhaber 7;Kennz. Hauptbankverb. 7;Bankverb 7 G?ltig von;Bankverb 7 G?ltig bis;Bankleitzahl 8;Bankbezeichnung 8;Bank-Kontonummer 8;L?nderkennzeichen 8;IBAN-Nr. 8;IBAN8 korrekt;SWIFT-Code 8;Abw. Kontoinhaber 8;Kennz. Hauptbankverb. 8;Bankverb 8 G?ltig von;Bankverb 8 G?ltig bis;Bankleitzahl 9;Bankbezeichnung 9;Bank-Kontonummer 9;L?nderkennzeichen 9;IBAN-Nr. 9;IBAN9 korrekt;SWIFT-Code 9;Abw. Kontoinhaber 9;Kennz. Hauptbankverb. 9;Bankverb 9 G?ltig von;Bankverb 9 G?ltig bis;Bankleitzahl 10;Bankbezeichnung 10;Bank-Kontonummer 10;L?nderkennzeichen 10;IBAN-Nr. 10;IBAN10 korrekt;SWIFT-Code 10;Abw. Kontoinhaber 10;Kennz. Hauptbankverb. 10;Bankverb 10 G?ltig von;Bankverb 10 G?ltig bis;Nummer Fremdsystem;Insolvent;Mandatsreferenz 1;Mandatsreferenz 2;Mandatsreferenz 3;Mandatsreferenz 4;Mandatsreferenz 5;Mandatsreferenz 6;Mandatsreferenz 7;Mandatsreferenz 8;Mandatsreferenz 9;Mandatsreferenz 10;Verkn?pftes OPOS-Konto;Mahnsperre bis;Lastschriftsperre bis;Zahlungssperre bis;Geb?hrenberechnung;Mahngeb?hr 1;Mahngeb?hr 2;Mahngeb?hr 3;Pauschalenberechnung;Verzugspauschale 1;Verzugspauschale 2;Verzugspauschale 3
3
10000;"M?bel Testgruber";"Schreinerei";"";"";"";"2";"M?bel Testgrube";"DE";"133546770";"Firma";"";"";"";"STR";"Nelkenteststra?e 125";"";"90482";"N?rnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"1";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"2";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;20,25;1;10,50;11,11;12,12;"7";"1";1;"9";"ind. Feld";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"50050000";"Testbank";"454545";"GB";"GB4545454545";"";"GENODEF1S12";"Herr Muster";"0";01012012;01012013;"76060618";"VR-Bank";"121212";"DE";"DE706060660125";"";"GE0987";"Herr Testmeier";"0";01012012;01012014;"";0;"1234-AB-56787";"";"";"";"";"";"";"";"";"778259637";75000;03122015;02122015;01122015;1;5,1;5,2;5,3;;0,9;0,2;0,5
4
20000;"Einrichtungshaus Muster";"M?belhaus";"";"";"";"2";"Muster";"";"";"Firma";"";"";"";"STR";"Feldgasse 15";"";"90409";"N?rnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"1";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"2";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;;;;;;"";"";0;"";"";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"50050000";"Testbank";"454545";"GB";"GB4545454545";"";"GENODEF1S12";"Herr Muster";"0";01012012;01012013;"76060618";"VR-Bank";"121212";"DE";"DE706060660125";"";"GE0987";"Herr Testmeier";"0";01012012;01012014;"";0;"";"";"";"";"";"";"";"";"";"";75000;03122015;02122015;01122015;1;5,1;5,2;5,3;;0,9;0,2;0,5
5
30000;"";"";"Mustermeier";"Hans";"";"1";"";"";"";"Herr";"";"";"";"STR";"Musterweg 14b";"";"90489";"N?rnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"1";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"2";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;;;;;;"";"";0;"";"";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"50050000";"Testbank";"454545";"GB";"GB4545454545";"";"GENODEF1S12";"Herr Muster";"0";01012012;01012013;"76060618";"VR-Bank";"121212";"DE";"DE706060660125";"";"GE0987";"Herr Testmeier";"0";01012012;01012014;"";0;"";"";"";"";"";"";"";"";"";"";75000;03122015;02122015;01122015;1;5,1;5,2;5,3;;0,9;0,2;0,5
6
40000;"";"";"Testhuber";"Susanne";"";"1";"";"";"";"Frau";"";"";"";"STR";"Beispielstr. 56";"";"90512";"N?rnberg";"";"";"";"Firma";"";"";1;01012012;;"";"";"";"";"";"";"";"";"";"";"";"";"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"1";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"50090500";"Sparda-Bank Hessen";"2345678";"DE";"DE49100102220002222222";"";"GENODEF1S12";"Herr Testm?ller";"0";01012012;01012013;"";"Sehr geehrte Frau";"Hallo";"KDN 12345";"DE776655";"2";"Frau Huber";"Herr Schmid";"Frau Tester";;;"";0;0;0;0,00;0;0,00;0;0,00;0;0;0,00;0;0,00;7;;;;;;23,30;;;;;;"";"";0;"";"";"";"";"";"";"";"";"";"";"";"";"individuelle Beschriftung";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"";"";"";"";"";"";"";"";"";;;"50050000";"Testbank";"454545";"GB";"GB4545454545";"";"GENODEF1S12";"Herr Muster";"0";01012012;01012013;"76060618";"VR-Bank";"121212";"DE";"DE706060660125";"";"GE0987";"Herr Testmeier";"0";01012012;01012014;"";0;"";"";"";"";"";"";"";"";"";"";75000;03122015;02122015;01122015;1;5,1;5,2;5,3;;0,9;0,2;0,5
doc/DATEV-2015/EXTF_Textschluessel.csv
1
"EXTF";510;44;"Textschl?ssel";2;20150729103107277;;"RE";"Admin";"";29098;55003;20150101;7;;;"";"";;;;"";;"";;;"";;;"";""
2
TS-Nr.;Beschriftung;Ref.-TS;Konto Soll;Konto Haben;Sprach-ID
3
30;"Weizen";30;5005000;4000000;"de-DE"
4
31;"Winterweizen";30;5005000;4000000;"de-DE"
5
32;"Dinkel";30;5005000;4000000;"de-DE"
6
33;"Sommerweizen";33;5005000;4000000;"de-DE"
7
34;"corn";30;5005000;4000000;"en-GB"
8
35;"oat";35;5005000;4000000;"en-GB"
9
38;"Energiegetreide";38;5005000;4100000;"de-DE"
10
39;"durum wheat";39;5005000;4000000;"en-GB"
doc/DATEV-2015/EXTF_Wiederkehrende-Buchungen.csv
1
"EXTF";510;65;"Wiederkehrende Buchungen";2;20150729093200673;;"RE";"Admin";"";55003;63021;20150101;4;;;"";"";;;;"";;"";;"";;;"";"";
2
B1;WKZ (Umsatz);Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;BU-Schl?ssel;Gegenkonto (ohne BU-Schl?ssel);Belegfeld1;Belegfeld2;Beginndatum;Kontonummer;St?ck;Gewicht;KOST1-Kostenstelle;KOST2-Kostenstelle;KOST-Menge;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Gesch?ftspartnerbank;Sachverhalt;Zinssperre;Beleglink;EU-Land u. UStId;EU-Steuersatz;Abw. Versteuerungsart;Sachverhalt L+L;BU 49 Hauptfunktionstyp;BU 49 Hauptfunktionsnummer;BU 49 Funktionserg?nzung;Zusatzinformation - Art 1;Zusatzinformation- Inhalt 1;Zusatzinformation - Art 2;Zusatzinformation- Inhalt 2;Zusatzinformation - Art 3;Zusatzinformation- Inhalt 3;Zusatzinformation - Art 4;Zusatzinformation- Inhalt 4;Zusatzinformation - Art 5;Zusatzinformation- Inhalt 5;Zusatzinformation - Art 6;Zusatzinformation- Inhalt 6;Zusatzinformation - Art 7;Zusatzinformation- Inhalt 7;Zusatzinformation - Art 8;Zusatzinformation- Inhalt 8;Zusatzinformation - Art 9;Zusatzinformation- Inhalt 9;Zusatzinformation - Art 10;Zusatzinformation- Inhalt 10;Zusatzinformation - Art 11;Zusatzinformation- Inhalt 11;Zusatzinformation - Art 12;Zusatzinformation- Inhalt 12;Zusatzinformation - Art 13;Zusatzinformation- Inhalt 13;Zusatzinformation - Art 14;Zusatzinformation- Inhalt 14;Zusatzinformation - Art 15;Zusatzinformation- Inhalt 15;Zusatzinformation - Art 16;Zusatzinformation- Inhalt 16;Zusatzinformation - Art 17;Zusatzinformation- Inhalt 17;Zusatzinformation - Art 18;Zusatzinformation- Inhalt 18;Zusatzinformation - Art 19;Zusatzinformation- Inhalt 19;Zusatzinformation - Art 20;Zusatzinformation- Inhalt 20;Zahlweise;Forderungsart;Veranlagungsjahr;Zugeordnete F?lligkeit;Zuletzt per;N?chste F?lligkeit;Enddatum;Zeitintervallart;Zeitabstand;Wochentag;Monat;Ordnungszahl Tag im Monat;Ordnungszahl Wochentag;EndeTyp;Gesellschaftername;Beteiligtennummer;Identifikationsnummer;Zeichnernummer;SEPA-Mandatsreferenz;Postensperre bis;KOST-Datum;Bezeichnung SoBil-Sachverhalt;Kennzeichen SoBil-Buchung
3
2;"";488,00;"H";;;"";"";4360;"";"";01032013;980;;;"10";"";;;"Geb?udeversicherung";;"";;;;"";"";;"";;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;;01032013;01042013;01022014;"MON";1;;;1;;2;"";;"";"";"1259887";;;"";
4
2;"";333,52;"H";;;"";"";4360;"";"";31082012;980;;;"10";"";;;"Brandversicherung";;"";;;;"";"";;"";;;;;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";;"";;;01032013;01042013;01082013;"MON";1;;;1;;2;"Mustermann";4711;"130263d";"";"77789-AB-789";25032016;23122015;"Sonderbilanz";2
doc/DATEV-2015/EXTF_Zahlungsbedingungen.csv
1
"EXTF";510;46;"Zahlungsbedingungen";2;20150729093357008;;"RE";"Admin";"";55003;63021;20150101;4;;;"";"";;;;"";;"";;"";;;"";"";
2
Nummer;Bezeichnung;F?lligkeitstyp;Skonto 1%;Skonto 1 Tage;Skonto 2 %;Skonto 2 Tage;F?llig Tage;Rechnung bis / Zeitraum 1;Skonto1 Datum / Zeitraum 1;Skonto 1 Monat / Zeitraum 1;Skonto 2 Datum / Zeitraum 1;Skonto 2 Monat / Zeitraum 1;F?llig Datum / Zeitraum 1;F?llig Monat / Zeitraum 1;Rechnung bis / Zeitraum 2;Skonto1 Datum / Zeitraum 2;Skonto 1 Monat / Zeitraum 2;Skonto 2 Datum / Zeitraum 2;Skonto 2 Monat / Zeitraum 2;F?llig Datum / Zeitraum 2;F?llig Monat / Zeitraum 2;Rechnung bis / Zeitraum 3;Skonto1 Datum / Zeitraum 3;Skonto1 Monat / Zeitraum 3;Skonto 2 Datum / Zeitraum 3;Skonto 2 Monat / Zeitraum 3;F?llig Datum / Zeitraum 3;F?llig Monat / Zeitraum 3;Leerfeld;Verwendung
3
10;"14 Tage 2% oder 30 Tage Netto";1;200;14;;;30;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";
4
11;"14 Tage 3% oder 30 Tage Netto";1;300;14;200;10;30;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";
5
12;"30 Tage Netto";1;300;10;;;30;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";
6
13;"14 Tage 3% oder 60 Tage Netto";1;300;14;;;60;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";
7
14;"10 Tage 2% oder 30 Tage Netto";1;200;10;;;30;10;20;0;;0;31;0;20;31;0;;0;10;0;31;10;0;;0;20;0;"";
8
15;"10 Tage 3% oder 30 Tage Netto";1;300;10;;;30;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";
9
16;"sofort ohne Abzug";1;;;;;;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";
10
17;"Vorkasse";1;;;;;;;;0;;0;;0;;;0;;0;;0;;;0;;0;;0;"";
t/datev/datev_format_2018.t
1
use strict;
2
use Test::More;
3
use Test::Deep qw(cmp_bag);
4

  
5
use lib 't';
6

  
7
use_ok 'Support::TestSetup';
8
use SL::DATEV qw(:CONSTANTS);
9
use SL::Dev::ALL qw(:ALL);
10
use List::Util qw(sum);
11
use SL::DB::Buchungsgruppe;
12
use SL::DB::Chart;
13
use DateTime;
14
use Data::Dumper;
15
use utf8;
16

  
17
Support::TestSetup::login();
18

  
19
my $dbh = SL::DB->client->dbh;
20

  
21
clear_up();
22
my $buchungsgruppe7 = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 7%') || die "No accounting group for 7\%";
23
my $date            = DateTime->new(year => 2017, month =>  7, day => 19);
24
my $department      = create_department(description => 'Kästchenweiße heiße Preise');
25
my $project         = create_project(projectnumber => 2017, description => '299');
26

  
27
my $part1 = new_part(partnumber => '19', description => 'Part 19%')->save;
28
my $part2 = new_part(
29
  partnumber         => '7',
30
  description        => 'Part 7%',
31
  buchungsgruppen_id => $buchungsgruppe7->id,
32
)->save;
33

  
34
my $invoice = create_sales_invoice(
35
  invnumber    => "ݗݘݰݶ",
36
  itime        => $date,
37
  gldate       => $date,
38
  taxincluded  => 0,
39
  transdate    => $date,
40
  invoiceitems => [ create_invoice_item(part => $part1, qty =>  3, sellprice => 550),
41
                    create_invoice_item(part => $part2, qty => 10, sellprice => 50),
42
                  ],
43
  department_id    => $department->id,
44
  globalproject_id => $project->id,
45
);
46

  
47
# lets make a boom
48
# generate_datev_* doesnt care about encoding but
49
# csv_buchungsexport does! all arabic will be deleted
50
# and no string will be left as invnumber
51

  
52
my $datev1 = SL::DATEV->new(
53
  dbh        => $dbh,
54
  trans_id   => $invoice->id,
55
);
56

  
57
my $startdate = DateTime->new(year => 2017, month =>  1, day =>  1);
58
my $enddate   = DateTime->new(year => 2017, month =>  12, day => 31);
59
my $today     = DateTime->new(year => 2017, month =>  3, day => 17);
60

  
61

  
62
$datev1->from($startdate);
63
$datev1->to($enddate);
64

  
65
$datev1->generate_datev_data;
66
$datev1->generate_datev_lines;
67

  
68
# check conversion to csv
69
$datev1->from($startdate);
70
$datev1->to($enddate);
71
eval {
72
  $datev1->csv_buchungsexport();
73
  1;  };
74
like($@, qr/^Not a valid value: '' for 'belegfeld1' with .*/, "wrong encoding");
75

  
76
# redefine invnumber, but still broken
77
$invoice->invnumber('ݗݘݰݶmuh');
78
$invoice->save();
79
$datev1->generate_datev_data;
80
$datev1->generate_datev_lines;
81
eval {
82
  $datev1->csv_buchungsexport();
83
  1;  };
84
like($@, qr/^Not a valid value: '' for 'belegfeld1' with amount/, "mixed encoding");
85

  
86

  
87
# create one haben buchung with GLTransaction today
88

  
89
my $expense_chart = SL::DB::Manager::Chart->find_by(accno => '4660'); # Reisekosten
90
my $cash_chart    = SL::DB::Manager::Chart->find_by(accno => '1000'); # Kasse
91
my $tax_chart     = SL::DB::Manager::Chart->find_by(accno => '1576'); # Vorsteuer
92
my $tax_9         = SL::DB::Manager::Tax->find_by(taxkey => 9, rate => 0.19) || die "No tax";
93

  
94
my @acc_trans;
95
push(@acc_trans, SL::DB::AccTransaction->new(
96
                                      chart_id   => $expense_chart->id,
97
                                      chart_link => $expense_chart->link,
98
                                      amount     => -84.03,
99
                                      transdate  => $today,
100
                                      source     => '',
101
                                      taxkey     => 9,
102
                                      tax_id     => $tax_9->id,
103
                                      project_id => $project->id,
104
));
105
push(@acc_trans, SL::DB::AccTransaction->new(
106
                                      chart_id   => $tax_chart->id,
107
                                      chart_link => $tax_chart->link,
108
                                      amount     => -15.97,
109
                                      transdate  => $today,
110
                                      source     => '',
111
                                      taxkey     => 9,
112
                                      tax_id     => $tax_9->id,
113
                                      project_id => $project->id,
114
));
115
push(@acc_trans, SL::DB::AccTransaction->new(
116
                                      chart_id   => $cash_chart->id,
117
                                      chart_link => $cash_chart->link,
118
                                      amount     => 100,
119
                                      transdate  => $today,
120
                                      source     => '',
121
                                      taxkey     => 0,
122
                                      tax_id     => 0,
123
));
124

  
125
my $gl_transaction = SL::DB::GLTransaction->new(
126
  reference      => "Reisekosten März 2018",
127
  description    => "Reisekonsten März 2018 / Ma Schmidt",
128
  transdate      => $today,
129
  gldate         => $today,
130
  employee_id    => SL::DB::Manager::Employee->current->id,
131
  taxincluded    => 1,
132
  type           => undef,
133
  ob_transaction => 0,
134
  cb_transaction => 0,
135
  storno         => 0,
136
  storno_id      => undef,
137
  transactions   => \@acc_trans,
138
)->save;
139
my $datev2 = SL::DATEV->new(
140
  dbh        => $dbh,
141
  trans_id   => $gl_transaction->id,
142
);
143

  
144
$datev2->from($startdate);
145
$datev2->to($enddate);
146
$datev2->generate_datev_data;
147
$datev2->generate_datev_lines;
148

  
149
my @data_csv = splice @{ $datev2->csv_buchungsexport() }, 2, 5;
150
@data_csv    = sort { $a->[0] <=> $b->[0] } @data_csv;
151

  
152

  
153
my $cp1252_posting_text   = SL::Iconv::convert("UTF-8", "CP1252", 'Reisekosten März 2018');
154
cmp_bag($data_csv[0], [ 100, 'H', 'EUR', undef, undef, undef, '4660', '1000', 9, '1703', 'Reisekosten ',
155
                     undef, undef, $cp1252_posting_text, undef, undef, undef, undef, undef, undef, undef, undef,
156
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
157
                     undef, undef, '', undef, undef, undef, undef, undef, undef, undef, undef,
158
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
159
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
160
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
161
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
162
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
163
                     undef, undef, undef, undef, undef ]
164
       );
165

  
166
done_testing();
167
clear_up();
168

  
169

  
170
sub clear_up {
171
  SL::DB::Manager::AccTransaction->delete_all( all => 1);
172
  SL::DB::Manager::InvoiceItem->delete_all(    all => 1);
173
  SL::DB::Manager::Invoice->delete_all(        all => 1);
174
  SL::DB::Manager::Customer->delete_all(       all => 1);
175
  SL::DB::Manager::Part->delete_all(           all => 1);
176
  SL::DB::Manager::Project->delete_all(        all => 1);
177
  SL::DB::Manager::Department->delete_all(     all => 1);
178
  SL::DATEV->clean_temporary_directories;
179
};
180

  
181
1;
t/datev/invoices.t
34 34
)->save;
35 35

  
36 36
my $invoice = create_sales_invoice(
37
  invnumber    => "1 sales invoice",
37
  invnumber    => "Þ sales ¥& invöice",
38 38
  itime        => $gldate,
39 39
  gldate       => $gldate,
40 40
  intnotes     => 'booked in February',
......
59 59
$datev1->generate_datev_data;
60 60
cmp_bag $datev1->generate_datev_lines, [
61 61
                                         {
62
                                           'belegfeld1'   => '1 sales invoice',
62
                                           'belegfeld1'   => "\x{de} sales \x{a5}& inv\x{f6}ice",
63 63
                                           'buchungstext' => 'Testcustomer',
64 64
                                           'datum'        => '01.01.2017',
65 65
                                           'gegenkonto'   => '8400',
......
67 67
                                           'kost1'        => 'Kostenstelle DATEV-Schnittstelle 2018',
68 68
                                           'kost2'        => 'Crowd-Funding September 2017',
69 69
                                           'umsatz'       => '249.9',
70
                                           'waehrung'     => 'EUR'
70
                                           'waehrung'     => 'EUR',
71
                                           'soll_haben_kennzeichen' => 'S',
71 72
                                         },
72 73
                                         {
73
                                           'belegfeld1'   => '1 sales invoice',
74
                                           'belegfeld1'   => "\x{de} sales \x{a5}& inv\x{f6}ice",
74 75
                                           'buchungstext' => 'Testcustomer',
75 76
                                           'datum'        => '01.01.2017',
76 77
                                           'gegenkonto'   => '8300',
......
78 79
                                           'kost1'        => 'Kostenstelle DATEV-Schnittstelle 2018',
79 80
                                           'kost2'        => 'Crowd-Funding September 2017',
80 81
                                           'umsatz'       => 535,
81
                                           'waehrung'     => 'EUR'
82
                                           'waehrung'     => 'EUR',
83
                                           'soll_haben_kennzeichen' => 'S',
82 84
                                         },
83 85
                                         {
84
                                           'belegfeld1'   => '1 sales invoice',
86
                                           'belegfeld1'   => "\x{de} sales \x{a5}& inv\x{f6}ice",
85 87
                                           'buchungstext' => 'Testcustomer',
86 88
                                           'datum'        => '05.01.2017',
87 89
                                           'gegenkonto'   => '1400',
......
89 91
                                           'kost1'        => 'Kostenstelle DATEV-Schnittstelle 2018',
90 92
                                           'kost2'        => 'Crowd-Funding September 2017',
91 93
                                           'umsatz'       => '784.9',
92
                                           'waehrung'     => 'EUR'
94
                                           'waehrung'     => 'EUR',
95
                                           'soll_haben_kennzeichen' => 'S',
93 96
                                         },
94 97
                                       ], "trans_id datev check ok";
95 98

  
99
my $startdate = DateTime->new(year => 2017, month =>  1, day =>  1);
100
my $enddate   = DateTime->new(year => 2017, month => 12, day => 31);
101

  
102
# check conversion to csv
103
$datev1->from($startdate);
104
$datev1->to($enddate);
105

  
106
# splice away the header, because sort won't do
107
# we need sort, because pay_invoice is not acc_trans_id order safe
108
my @data_csv = splice @{ $datev1->csv_buchungsexport() }, 2, 5;
109
@data_csv    = sort { $a->[0] <=> $b->[0] } @data_csv;
110

  
111
my $cp1252_belegfeld1   = SL::Iconv::convert("UTF-8", "CP1252", 'Þ sales ¥& i');
112
my $cp1252_buchungstext = SL::Iconv::convert("UTF-8", "CP1252", 'Þ sales ¥& invöice');
113

  
114
cmp_bag($data_csv[1], [ 535, 'S', 'EUR', undef, undef, undef, '1400', '8300', undef, '0101', $cp1252_belegfeld1,
115
                     undef, undef, $cp1252_buchungstext, undef, undef, undef, undef, undef, undef, undef, undef,
116
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
117
                     undef, 'Crowd-Fu', 'Kostenst', undef, undef, undef, undef, undef, undef, undef, undef,
118
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
119
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
120
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
121
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
122
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
123
                     undef, undef, undef, undef, undef ]
124
       );
125

  
126
cmp_bag($data_csv[0], [ '249,9', 'S', 'EUR', undef, undef, undef, '1400', '8400', undef, '0101', $cp1252_belegfeld1,
127
                     undef, undef, $cp1252_buchungstext, undef, undef, undef, undef, undef, undef, undef, undef,
128
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
129
                     undef, 'Crowd-Fu', 'Kostenst', undef, undef, undef, undef, undef, undef, undef, undef,
130
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
131
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
132
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
133
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
134
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
135
                     undef, undef, undef, undef, undef ]
136
       );
137
cmp_bag($data_csv[2], [ '784,9', 'S', 'EUR', undef, undef, undef, '1200', '1400', undef, '0501', $cp1252_belegfeld1,
138
                     undef, undef, $cp1252_buchungstext, undef, undef, undef, undef, undef, undef, undef, undef,
139
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
140
                     undef, 'Crowd-Fu', 'Kostenst', undef, undef, undef, undef, undef, undef, undef, undef,
141
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
142
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
143
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
144
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
145
                     undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef, undef,
146
                     undef, undef, undef, undef, undef ]
147
        );
96 148
my $march_9 = DateTime->new(year => 2017, month =>  3, day => 9);
97 149
my $invoice2 = create_sales_invoice(
98 150
  invnumber    => "2 sales invoice",
......
118 170
                  ]
119 171
);
120 172

  
121
my $startdate = DateTime->new(year => 2017, month =>  1, day =>  1);
122
my $enddate   = DateTime->new(year => 2017, month => 12, day => 31);
123

  
124 173
my $datev = SL::DATEV->new(
125 174
  dbh        => $dbh,
126 175
  from       => $startdate,
......
161 210
  SL::DB::Manager::Part->delete_all(          all => 1);
162 211
  SL::DB::Manager::Project->delete_all(       all => 1);
163 212
  SL::DB::Manager::Department->delete_all(    all => 1);
213
  SL::DATEV->clean_temporary_directories;
164 214
};
165 215

  
166 216
1;

Auch abrufbar als: Unified diff