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',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', "K\x{e4}stchen",
+ '299', '','DE12345678', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '',
+ ];
+cmp_deeply $sorted[1], [ '535', 'S', 'EUR', '', '', '',
+ '1400', '8300', '', '1907','meine muh',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', '', '',
+ '', '', '', '', '', '', '', "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',
'', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '' ]
);
+# 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();