my $date = DateTime->new(year => 2017, month => 7, day => 19);
my $department = create_department(description => 'Kästchenweiße heiße Preise');
my $project = create_project(projectnumber => 2017, description => '299');
-
+my $customer = new_customer(name => 'Test customer', ustid => 'DE12345678')->save();
my $part1 = new_part(partnumber => '19', description => 'Part 19%')->save;
my $part2 = new_part(
partnumber => '7',
],
department_id => $department->id,
globalproject_id => $project->id,
+ customer_id => $customer->id,
);
# lets make a boom
# check conversion to csv
$datev1->from($startdate);
$datev1->to($enddate);
-my ($datev_ref, $warnings_ref, $die_message);
+my ($datev_csv, $die_message);
eval {
- ($datev_ref, $warnings_ref) = SL::DATEV::CSV->new(datev_lines => $datev1->generate_datev_lines,
- from => $startdate,
- to => $enddate,
- locked => $datev1->locked,
- );
+ $datev_csv = SL::DATEV::CSV->new(datev_lines => $datev1->generate_datev_lines,
+ from => $startdate,
+ to => $enddate,
+ locked => $datev1->locked,
+ );
+ my $lines_aref = $datev_csv->lines; # dies only if we assign (do stuff with the data)
1;
} or do {
$die_message = $@;
};
-
ok($die_message =~ m/Falscher Feldwert 'ݗݘݰݶ' für Feld 'belegfeld1' bei der Transaktion mit dem Umsatz von/, 'wrong_encoding');
$datev3->to($enddate);
$datev3->generate_datev_data;
$datev3->generate_datev_lines;
-my ($datev_ref2, $warnings_ref2, $die_message2);
+my ($datev_csv2, $die_message2);
eval {
- ($datev_ref2, $warnings_ref2) = SL::DATEV::CSV->new(datev_lines => $datev3->generate_datev_lines,
- from => $startdate,
- to => $enddate,
- locked => $datev3->locked,
- );
+ $datev_csv2 = SL::DATEV::CSV->new(datev_lines => $datev3->generate_datev_lines,
+ from => $startdate,
+ to => $enddate,
+ locked => $datev3->locked,
+ );
+my $lines_aref = $datev_csv2->lines; # dies only if we assign (do stuff with the data)
+
1;
} or do {
$die_message2 = $@;
# redefine invnumber, we have mixed encodings, should still fail
ok($die_message2 =~ m/Falscher Feldwert 'ݗݘݰݶmuh' für Feld 'belegfeld1' bei der Transaktion mit dem Umsatz von/, 'mixed_wrong_encoding');
+# check with good number
+$invoice->invnumber('meine muh');
+$invoice->save();
+
+my $datev4 = SL::DATEV->new(
+ dbh => $dbh,
+ trans_id => $invoice->id,
+);
+
+$datev4->from($startdate);
+$datev4->to($enddate);
+$datev4->generate_datev_data;
+$datev4->generate_datev_lines;
+my ($datev_csv4, $die_message3, $lines_aref);
+eval {
+ $datev_csv4 = SL::DATEV::CSV->new(datev_lines => $datev4->generate_datev_lines,
+ from => $startdate,
+ to => $enddate,
+ locked => $datev4->locked,
+ );
+ $lines_aref = $datev_csv4->lines; # dies only if we assign (do stuff with the data)
+
+ 1;
+} or do {
+ $die_message3 = $@;
+};
+ok(!($die_message3), 'no die message');
+ok(scalar @{ $datev_csv4->warnings } == 0, 'no warnings');
+
+my @sorted = sort { $a->[0] cmp $b->[0] } @{ $lines_aref };
+cmp_deeply $sorted[0], [ '1963,5', 'S', 'EUR', '', '', '',
+ '1400', '8400', '', '1907', 'meine muh',
+ '', '', 'Test customer', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', "K\x{e4}stchen",
+ '299', '','DE12345678', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '',
+ ];
+cmp_deeply $sorted[1], [ '535', 'S', 'EUR', '', '', '',
+ '1400', '8300', '', '1907','meine muh',
+ '', '', 'Test customer', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', "K\x{e4}stchen",
+ '299', '','DE12345678', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '',
+ ];
# create one haben buchung with GLTransaction today
my $expense_chart = SL::DB::Manager::Chart->find_by(accno => '4660'); # Reisekosten
$datev2->generate_datev_data;
$datev2->generate_datev_lines;
-my ($datev_ref3, $warnings_ref3) = SL::DATEV::CSV->new(datev_lines => $datev2->generate_datev_lines,
- from => $startdate,
- to => $enddate,
- locked => $datev2->locked,
- );
+my $datev_csv3 = SL::DATEV::CSV->new(datev_lines => $datev2->generate_datev_lines,
+ from => $startdate,
+ to => $enddate,
+ locked => $datev2->locked,
+ );
-my @data_csv = splice @{ $datev_ref3 }, 2, 5;
-@data_csv = sort { $a->[0] cmp $b->[0] } @data_csv;
-cmp_deeply($data_csv[0], [ 100, 'H', 'EUR', '', '', '', '4660', '1000', 9, '1703', 'Reise März 2',
- '', '', '', '', '', '', '', '', '', '', '',
+my @data_csv = sort { $a->[0] cmp $b->[0] } @{ $datev_csv3->lines };
+cmp_deeply($data_csv[0], [ '100', 'S', 'EUR', '', '', '', '4660', '1000', 9, '1703', 'Reise März 2',
+ '', '', 'Reisekonsten März 2018 / Ma Schmidt', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '' ]
);
+# TODO warnings are not yet tested
+# currently most of the valid_checks are senseless because of
+# the strict input_checks before. Maybe something like encoding mismatch of invnumber,
+# can be altered to just a warning (not a mandantory field!)
+
done_testing();
clear_up();