DATEV-Export nach Erfassungsdatum filtern
[kivitendo-erp.git] / t / datev / invoices.t
index 5a33d5f..45c68ca 100644 (file)
@@ -16,10 +16,13 @@ Support::TestSetup::login();
 
 clear_up();
 
+my $dbh = SL::DB->client->dbh;
+
 my $buchungsgruppe7 = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 7%') || die "No accounting group for 7\%";
 my $bank            = SL::DB::Manager::Chart->find_by(description => 'Bank')                 || die 'Can\'t find chart "Bank"';
 my $date            = DateTime->new(year => 2017, month =>  1, day => 1);
 my $payment_date    = DateTime->new(year => 2017, month =>  1, day => 5);
+my $gldate          = DateTime->new(year => 2017, month =>  2, day => 9); # simulate bookings for Jan being made in Feb
 
 my $part1 = SL::Dev::Part::create_part(partnumber => '19', description => 'Part 19%')->save;
 my $part2 = SL::Dev::Part::create_part(
@@ -30,6 +33,9 @@ my $part2 = SL::Dev::Part::create_part(
 
 my $invoice = SL::Dev::Record::create_sales_invoice(
   invnumber    => "1 sales invoice",
+  itime        => $gldate,
+  gldate       => $gldate,
+  intnotes     => 'booked in February',
   taxincluded  => 0,
   transdate    => $date,
   invoiceitems => [ SL::Dev::Record::create_invoice_item(part => $part1, qty =>  3, sellprice => 70),
@@ -78,8 +84,12 @@ cmp_bag $datev1->generate_datev_lines, [
                                          },
                                        ], "trans_id datev check ok";
 
+my $march_9 = DateTime->new(year => 2017, month =>  3, day => 9);
 my $invoice2 = SL::Dev::Record::create_sales_invoice(
   invnumber    => "2 sales invoice",
+  itime        => $march_9,
+  gldate       => $march_9,
+  intnotes     => 'booked in March',
   taxincluded  => 0,
   transdate    => $date,
   invoiceitems => [ SL::Dev::Record::create_invoice_item(part => $part1, qty =>  6, sellprice => 70),
@@ -89,6 +99,9 @@ my $invoice2 = SL::Dev::Record::create_sales_invoice(
 
 my $credit_note = SL::Dev::Record::create_credit_note(
   invnumber    => 'Gutschrift 34',
+  itime        => $gldate,
+  gldate       => $gldate,
+  intnotes     => 'booked in February',
   taxincluded  => 0,
   transdate    => $date,
   invoiceitems => [ SL::Dev::Record::create_invoice_item(part => $part1, qty =>  3, sellprice => 70),
@@ -96,18 +109,37 @@ my $credit_note = SL::Dev::Record::create_credit_note(
                   ]
 );
 
-my $startdate = DateTime->new(year => 2017, month =>  1, day => 1);
+my $startdate = DateTime->new(year => 2017, month =>  1, day =>  1);
 my $enddate   = DateTime->new(year => 2017, month => 12, day => 31);
 
 my $datev = SL::DATEV->new(
-  dbh        => $credit_note->db->dbh,
+  dbh        => $dbh,
+  from       => $startdate,
+  to         => $enddate,
+);
+$datev->generate_datev_data(from_to => $datev->fromto);
+my $datev_lines = $datev->generate_datev_lines;
+my $umsatzsumme = sum map { $_->{umsatz} } @{ $datev_lines };
+cmp_ok($::form->round_amount($umsatzsumme,2), '==', 3924.5, "Sum of all bookings ok");
+
+note('testing gldatefrom');
+my $datev = SL::DATEV->new(
+  dbh        => $dbh,
   from       => $startdate,
-  to         => $enddate
+  to         => DateTime->new(year => 2017, month => 01, day => 31),
 );
+
+$::form               = Support::TestSetup->create_new_form;
+$::form->{gldatefrom} = DateTime->new(year => 2017, month => 3, day => 1)->to_kivitendo;
+
 $datev->generate_datev_data(from_to => $datev->fromto);
 my $datev_lines = $datev->generate_datev_lines;
 my $umsatzsumme = sum map { $_->{umsatz} } @{ $datev_lines };
-is($umsatzsumme, 3924.50, "umsatzsumme ok");
+cmp_ok($umsatzsumme, '==', 1569.8, "Sum of bookings made after March 1st (only invoice2) ok");
+
+$::form->{gldatefrom} = DateTime->new(year => 2017, month => 5, day => 1)->to_kivitendo;
+$datev->generate_datev_data(from_to => $datev->fromto);
+cmp_bag $datev->generate_datev_lines, [], "no bookings for January made after May 1st: ok";
 
 done_testing();
 clear_up();
@@ -120,6 +152,4 @@ sub clear_up {
   SL::DB::Manager::Part->delete_all(          all => 1);
 };
 
-
 1;
-