Refactoring payment.t
authorG. Richardson <grichardson@kivitec.de>
Wed, 11 Apr 2018 09:04:05 +0000 (11:04 +0200)
committerG. Richardson <grichardson@kivitec.de>
Tue, 8 May 2018 11:28:01 +0000 (13:28 +0200)
reset_state in init_state umbenannt und params entfernt. Die Daten werden nur
einmal aufbereitet.

Überall title an Anfang der Funktion verschoben, bzw. neu angelegt.

ALWAYS_RESET entfernt. Es werden nun während des Tests nie Rechnungen gelöscht.
Immer alle Daten der Einzeltests zu löschen und alles neu zu initialisieren
würde den Test auch recht langsam, und war eh nicht sauber implementiert.

t/db_helper/payment.t

index 1045d57..508bfc9 100644 (file)
@@ -1,4 +1,5 @@
-use Test::More;
+use strict;
+use Test::More tests => 197;
 
 use strict;
 
@@ -32,14 +33,12 @@ my ($customer, $vendor, $currency_id, @parts, $buchungsgruppe, $buchungsgruppe7,
 my ($transdate1, $transdate2, $transdate3, $transdate4, $currency, $exchangerate, $exchangerate2, $exchangerate3, $exchangerate4);
 my ($ar_chart,$bank,$ar_amount_chart, $ap_chart, $ap_amount_chart, $fxloss_chart, $fxgain_chart);
 
-my $ALWAYS_RESET = 1;
-
-my $reset_state_counter = 0;
-
 my $purchase_invoice_counter = 0; # used for generating purchase invnumber
 
 Support::TestSetup::login();
 
+init_state();
+
 # test cases: without_skonto
 test_default_invoice_one_item_19_without_skonto();
 test_default_invoice_two_items_19_7_tax_with_skonto();
@@ -80,12 +79,15 @@ test_ar_currency_tax_not_included_and_payment_2_credit_note();  # exchangerate 0
 test_ap_currency_tax_not_included_and_payment_2();             # two exchangerates, with fx_gain_loss
 test_ap_currency_tax_not_included_and_payment_2_credit_note(); # two exchangerates, with fx_gain_loss
 
-{ local $TODO = "currently this test fails because the code writing the invoice is buggy, the calculation of skonto is correct";
-  my ($acc_trans_sum)  = selectfirst_array_query($::form, $currency->db->dbh, 'SELECT SUM(amount) FROM acc_trans'); is($acc_trans_sum, '0.00000', "sum of all acc_trans is 0");
+is(SL::DB::Manager::Invoice->get_all_count(), 21,  "number of invoices at end of tests ok");
+TODO: {
+  local $TODO = "currently this test fails because the code writing the invoice is buggy, the calculation of skonto is correct";
+  my ($acc_trans_sum)  = selectfirst_array_query($::form, $currency->db->dbh, 'SELECT SUM(amount) FROM acc_trans');
+  is($acc_trans_sum, '0.00000', "sum of all acc_trans at end of all tests is 0");
 }
 
 # remove all created data at end of test
-clear_up();
+clear_up();
 
 done_testing();
 
@@ -103,13 +105,9 @@ sub clear_up {
   SL::DB::Manager::Currency->delete_all(where => [ name => 'CUR' ]);
 };
 
-sub reset_state {
+sub init_state {
   my %params = @_;
 
-  return if $reset_state_counter;
-
-  $params{$_} ||= {} for qw(buchungsgruppe unit customer part tax vendor);
-
   clear_up();
 
   $transdate1 = DateTime->today;
@@ -117,15 +115,15 @@ sub reset_state {
   $transdate3 = DateTime->today->add(days => 2);
   $transdate4 = DateTime->today->add(days => 3);
 
-  $buchungsgruppe  = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 19%', %{ $params{buchungsgruppe} }) || croak "No accounting group";
-  $buchungsgruppe7 = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 7%')                                || croak "No accounting group for 7\%";
-  $unit            = SL::DB::Manager::Unit->find_by(name => 'kg', %{ $params{unit} })                                      || croak "No unit";
-  $employee        = SL::DB::Manager::Employee->current                                                                    || croak "No employee";
-  $tax             = SL::DB::Manager::Tax->find_by(taxkey => 3, rate => 0.19, %{ $params{tax} })                           || croak "No tax";
-  $tax7            = SL::DB::Manager::Tax->find_by(taxkey => 2, rate => 0.07)                                              || croak "No tax for 7\%";
-  $taxzone         = SL::DB::Manager::TaxZone->find_by( description => 'Inland')                                           || croak "No taxzone";
-  $tax_9           = SL::DB::Manager::Tax->find_by(taxkey => 9, rate => 0.19, %{ $params{tax} })                           || croak "No tax";
-  # $tax7            = SL::DB::Manager::Tax->find_by(taxkey => 2, rate => 0.07)                                              || croak "No tax for 7\%";
+  $buchungsgruppe  = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 19%') || croak "No accounting group";
+  $buchungsgruppe7 = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 7%')  || croak "No accounting group for 7\%";
+  $unit            = SL::DB::Manager::Unit->find_by(name => 'kg')                            || croak "No unit";
+  $employee        = SL::DB::Manager::Employee->current                                      || croak "No employee";
+  $tax             = SL::DB::Manager::Tax->find_by(taxkey => 3, rate => 0.19)                || croak "No tax";
+  $tax7            = SL::DB::Manager::Tax->find_by(taxkey => 2, rate => 0.07)                || croak "No tax for 7\%";
+  $taxzone         = SL::DB::Manager::TaxZone->find_by( description => 'Inland')             || croak "No taxzone";
+  $tax_9           = SL::DB::Manager::Tax->find_by(taxkey => 9, rate => 0.19)                || croak "No tax";
+  # $tax7            = SL::DB::Manager::Tax->find_by(taxkey => 2, rate => 0.07)                || croak "No tax for 7\%";
 
   $currency_id     = $::instance_conf->get_currency_id;
 
@@ -238,8 +236,6 @@ sub reset_state {
   $bank            = SL::DB::Manager::Chart->find_by( accno => '1200' ); # Bank
   $ar_amount_chart = SL::DB::Manager::Chart->find_by( accno => '8400' ); # Erlöse
   $ap_amount_chart = SL::DB::Manager::Chart->find_by( accno => '3400' ); # Wareneingang 19%
-
-  $reset_state_counter++;
 }
 
 sub new_purchase_invoice {
@@ -352,8 +348,7 @@ sub total_amount {
 
 # test 1
 sub test_default_invoice_one_item_19_without_skonto() {
-  reset_state() if $ALWAYS_RESET;
-
+  my $title = 'default invoice, one item, 19% tax, without_skonto';
   my $item    = create_invoice_item(part => $parts[0], qty => 2.5);
   my $invoice = create_sales_invoice(
     taxincluded  => 0,
@@ -376,8 +371,6 @@ sub test_default_invoice_one_item_19_without_skonto() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, one item, 19% tax, without_skonto';
-
   is($invoice->netamount,   5.85,      "${title}: netamount");
   is($invoice->amount,      6.96,      "${title}: amount");
   is($paid_amount,         -6.96,      "${title}: paid amount");
@@ -388,7 +381,7 @@ sub test_default_invoice_one_item_19_without_skonto() {
 }
 
 sub test_default_invoice_one_item_19_without_skonto_overpaid() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, one item, 19% tax, without_skonto';
 
   my $item    = create_invoice_item(part => $parts[0], qty => 2.5);
   my $invoice = create_sales_invoice(
@@ -415,8 +408,6 @@ sub test_default_invoice_one_item_19_without_skonto_overpaid() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, one item, 19% tax, without_skonto';
-
   is($invoice->netamount,   5.85,      "${title}: netamount");
   is($invoice->amount,      6.96,      "${title}: amount");
   is($paid_amount,         -6.96,      "${title}: paid amount");
@@ -429,7 +420,7 @@ sub test_default_invoice_one_item_19_without_skonto_overpaid() {
 
 # test 2
 sub test_default_invoice_two_items_19_7_tax_with_skonto() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax with_skonto_pt';
 
   my $item1   = create_invoice_item(part => $parts[0], qty => 2.5);
   my $item2   = create_invoice_item(part => $parts[1], qty => 1.2);
@@ -452,8 +443,6 @@ sub test_default_invoice_two_items_19_7_tax_with_skonto() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax with_skonto_pt';
-
   is($invoice->netamount,  5.85 + 11.66,   "${title}: netamount");
   is($invoice->amount,     6.96 + 12.48,   "${title}: amount");
   is($paid_amount,               -19.44,   "${title}: paid amount");
@@ -463,7 +452,7 @@ sub test_default_invoice_two_items_19_7_tax_with_skonto() {
 }
 
 sub test_default_invoice_two_items_19_7_tax_with_skonto_tax_included() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax with_skonto_pt';
 
   my $item1   = create_invoice_item(part => $parts[0], qty => 2.5);
   my $item2   = create_invoice_item(part => $parts[1], qty => 1.2);
@@ -486,21 +475,21 @@ sub test_default_invoice_two_items_19_7_tax_with_skonto_tax_included() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax with_skonto_pt';
-
   is($invoice->netamount,         15.82,   "${title}: netamount");
   is($invoice->amount,            17.51,   "${title}: amount");
   is($paid_amount,               -17.51,   "${title}: paid amount");
   is($invoice->paid,              17.51,   "${title}: paid");
   is($number_of_payments,             3,   "${title}: 3 AR_paid bookings");
-  { local $TODO = "currently this test fails because the code writing the invoice is buggy, the calculation of skonto is correct";
+
+TODO: {
+  local $TODO = "currently this test fails because the code writing the invoice is buggy, the calculation of skonto is correct";
   is($total,                          0,   "${title}: even balance");
   }
 }
 
 # test 3 : two items, without skonto
 sub test_default_invoice_two_items_19_7_without_skonto() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax without skonto';
 
   my $item1   = create_invoice_item(part => $parts[0], qty => 2.5);
   my $item2   = create_invoice_item(part => $parts[1], qty => 1.2);
@@ -523,8 +512,6 @@ sub test_default_invoice_two_items_19_7_without_skonto() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax without skonto';
-
   is($invoice->netamount,     5.85 + 11.66,     "${title}: netamount");
   is($invoice->amount,        6.96 + 12.48,     "${title}: amount");
   is($paid_amount,                  -19.44,     "${title}: paid amount");
@@ -535,7 +522,7 @@ sub test_default_invoice_two_items_19_7_without_skonto() {
 
 # test 4
 sub test_default_invoice_two_items_19_7_without_skonto_incomplete_payment() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax without skonto incomplete payment';
 
   my $item1   = create_invoice_item(part => $parts[0], qty => 2.5);
   my $item2   = create_invoice_item(part => $parts[1], qty => 1.2);
@@ -554,8 +541,6 @@ sub test_default_invoice_two_items_19_7_without_skonto_incomplete_payment() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax without skonto incomplete payment';
-
   is($invoice->netamount,        5.85 + 11.66,     "${title}: netamount");
   is($invoice->amount,           6.96 + 12.48,     "${title}: amount");
   is($paid_amount,              -9.44,             "${title}: paid amount");
@@ -566,7 +551,7 @@ sub test_default_invoice_two_items_19_7_without_skonto_incomplete_payment() {
 
 # test 5
 sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax not included';
 
   my $item1   = create_invoice_item(part => $parts[0], qty => 2.5);
   my $item2   = create_invoice_item(part => $parts[1], qty => 1.2);
@@ -589,8 +574,6 @@ sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax not included';
-
   is($invoice->netamount,        5.85 + 11.66,     "${title}: netamount");
   is($invoice->amount,           6.96 + 12.48,     "${title}: amount");
   is($paid_amount,                     -19.44,     "${title}: paid amount");
@@ -602,7 +585,7 @@ sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments() {
 
 # test 6
 sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax not included';
 
   my $item1   = create_invoice_item(part => $parts[0], qty => 2.5);
   my $item2   = create_invoice_item(part => $parts[1], qty => 1.2);
@@ -631,8 +614,6 @@ sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_fin
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax not included';
-
   is($invoice->netamount,        5.85 + 11.66,     "${title}: netamount");
   is($invoice->amount,           6.96 + 12.48,     "${title}: amount");
   is($paid_amount,                     -19.44,     "${title}: paid amount");
@@ -643,7 +624,7 @@ sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_fin
 }
 
 sub  test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto_1cent() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax not included';
 
   # if there is only one cent left there can only be one skonto booking, the
   # error handling should choose the highest amount, which is the 7% account
@@ -672,8 +653,6 @@ sub  test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_fi
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax not included';
-
   is($invoice->netamount,        5.85 + 11.66,     "${title}: netamount");
   is($invoice->amount,           6.96 + 12.48,     "${title}: amount");
   is($paid_amount,                     -19.44,     "${title}: paid amount");
@@ -684,7 +663,7 @@ sub  test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_fi
 }
 
 sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto_2cent() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax not included';
 
   # if there are two cents left there will be two skonto bookings, 1 cent each
   my $item1   = create_invoice_item(part => $parts[0], qty => 2.5);
@@ -709,8 +688,6 @@ sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_fin
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax not included';
-
   is($invoice->netamount,        5.85 + 11.66,     "${title}: netamount");
   is($invoice->amount,           6.96 + 12.48,     "${title}: amount");
   is($paid_amount,                     -19.44,     "${title}: paid amount");
@@ -721,7 +698,7 @@ sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_fin
 }
 
 sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, one item, 19% tax, without_skonto';
 
   my $item    = create_invoice_item(part => $parts[0], qty => 2.5);
   my $invoice = create_sales_invoice(
@@ -750,8 +727,6 @@ sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, one item, 19% tax, without_skonto';
-
   is($invoice->netamount,       5.85,     "${title}: netamount");
   is($invoice->amount,          6.96,     "${title}: amount");
   is($paid_amount,             -6.96,     "${title}: paid amount");
@@ -762,7 +737,7 @@ sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto
 }
 
 sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto_1cent() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, one item, 19% tax, without_skonto';
 
   my $item    = create_invoice_item(part => $parts[0], qty => 2.5);
   my $invoice = create_sales_invoice(
@@ -787,8 +762,6 @@ sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, one item, 19% tax, without_skonto';
-
   is($invoice->netamount,       5.85,     "${title}: netamount");
   is($invoice->amount,          6.96,     "${title}: amount");
   is($paid_amount,             -6.96,     "${title}: paid amount");
@@ -800,7 +773,7 @@ sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto
 
 # test 3 : two items, without skonto
 sub test_default_purchase_invoice_two_charts_19_7_without_skonto() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax without skonto';
 
   my $purchase_invoice = new_purchase_invoice();
 
@@ -816,8 +789,6 @@ sub test_default_purchase_invoice_two_charts_19_7_without_skonto() {
   my ($number_of_payments, $paid_amount) = number_of_payments($purchase_invoice);
   my $total = total_amount($purchase_invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax without skonto';
-
   is($paid_amount,         226,     "${title}: paid amount");
   is($number_of_payments,    1,     "${title}: 1 AP_paid bookings");
   is($total,                 0,     "${title}: even balance");
@@ -825,7 +796,7 @@ sub test_default_purchase_invoice_two_charts_19_7_without_skonto() {
 }
 
 sub test_default_purchase_invoice_two_charts_19_7_with_skonto() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax without skonto';
 
   my $purchase_invoice = new_purchase_invoice();
 
@@ -841,8 +812,6 @@ sub test_default_purchase_invoice_two_charts_19_7_with_skonto() {
   my ($number_of_payments, $paid_amount) = number_of_payments($purchase_invoice);
   my $total = total_amount($purchase_invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax without skonto';
-
   is($paid_amount,         226,     "${title}: paid amount");
   is($number_of_payments,    3,     "${title}: 1 AP_paid bookings");
   is($total,                 0,     "${title}: even balance");
@@ -850,8 +819,9 @@ sub test_default_purchase_invoice_two_charts_19_7_with_skonto() {
 }
 
 sub test_default_purchase_invoice_two_charts_19_7_tax_partial_unrounded_payment_without_skonto() {
+  my $title = 'default purchase_invoice, two charts, 19/7% tax multiple payments with final difference as skonto';
+
   # check whether unrounded amounts passed via $params{amount} are rounded for without_skonto case
-  reset_state() if $ALWAYS_RESET;
   my $purchase_invoice = new_purchase_invoice();
   $purchase_invoice->pay_invoice(
                           amount       => ( $purchase_invoice->amount / 3 * 2),
@@ -862,8 +832,6 @@ sub test_default_purchase_invoice_two_charts_19_7_tax_partial_unrounded_payment_
   my ($number_of_payments, $paid_amount) = number_of_payments($purchase_invoice);
   my $total = total_amount($purchase_invoice);
 
-  my $title = 'default purchase_invoice, two charts, 19/7% tax multiple payments with final difference as skonto';
-
   is($paid_amount,         150.67,   "${title}: paid amount");
   is($number_of_payments,       1,   "${title}: 1 AP_paid bookings");
   is($total,                    0,   "${title}: even balance");
@@ -871,7 +839,7 @@ sub test_default_purchase_invoice_two_charts_19_7_tax_partial_unrounded_payment_
 
 
 sub test_default_purchase_invoice_two_charts_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default purchase_invoice, two charts, 19/7% tax multiple payments with final difference as skonto';
 
   my $purchase_invoice = new_purchase_invoice();
 
@@ -897,8 +865,6 @@ sub test_default_purchase_invoice_two_charts_19_7_tax_without_skonto_multiple_pa
   my ($number_of_payments, $paid_amount) = number_of_payments($purchase_invoice);
   my $total = total_amount($purchase_invoice);
 
-  my $title = 'default purchase_invoice, two charts, 19/7% tax multiple payments with final difference as skonto';
-
   is($paid_amount,         226, "${title}: paid amount");
   is($number_of_payments,    4, "${title}: 1 AP_paid bookings");
   is($total,                 0, "${title}: even balance");
@@ -907,7 +873,7 @@ sub test_default_purchase_invoice_two_charts_19_7_tax_without_skonto_multiple_pa
 
 # test
 sub test_default_invoice_two_items_19_7_tax_with_skonto_50_50() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, two items, 19/7% tax with_skonto_pt 50/50';
 
   my $item1   = create_invoice_item(part => $parts[2], qty => 1);
   my $item2   = create_invoice_item(part => $parts[3], qty => 1);
@@ -930,8 +896,6 @@ sub test_default_invoice_two_items_19_7_tax_with_skonto_50_50() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, two items, 19/7% tax with_skonto_pt 50/50';
-
   is($invoice->netamount,        100,     "${title}: netamount");
   is($invoice->amount,           113,     "${title}: amount");
   is($paid_amount,              -113,     "${title}: paid amount");
@@ -942,7 +906,7 @@ sub test_default_invoice_two_items_19_7_tax_with_skonto_50_50() {
 
 # test
 sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, four items, 19/7% tax with_skonto_pt 4x25';
 
   my $item1   = create_invoice_item(part => $parts[2], qty => 0.5);
   my $item2   = create_invoice_item(part => $parts[3], qty => 0.5);
@@ -967,8 +931,6 @@ sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, four items, 19/7% tax with_skonto_pt 4x25';
-
   is($invoice->netamount , 100  , "${title}: netamount");
   is($invoice->amount    , 113  , "${title}: amount");
   is($paid_amount        , -113 , "${title}: paid amount");
@@ -978,7 +940,7 @@ sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25() {
 }
 
 sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25_tax_included() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, four items, 19/7% tax with_skonto_pt 4x25';
 
   my $item1   = create_invoice_item(part => $parts[2], qty => 0.5);
   my $item2   = create_invoice_item(part => $parts[3], qty => 0.5);
@@ -1003,20 +965,19 @@ sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25_tax_included() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, four items, 19/7% tax with_skonto_pt 4x25';
-
   is($invoice->netamount,   88.75,    "${title}: netamount");
   is($invoice->amount,        100,    "${title}: amount");
   is($paid_amount,           -100,    "${title}: paid amount");
   is($invoice->paid,          100,    "${title}: paid");
   is($number_of_payments,       3,    "${title}: 3 AR_paid bookings");
-  { local $TODO = "currently this test fails because the code writing the invoice is buggy, the calculation of skonto is correct";
+TODO: {
+  local $TODO = "currently this test fails because the code writing the invoice is buggy, the calculation of skonto is correct";
   is($total,                    0,    "${title}: even balance");
   }
 }
 
 sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25_multiple() {
-  reset_state() if $ALWAYS_RESET;
+  my $title = 'default invoice, four items, 19/7% tax with_skonto_pt 4x25';
 
   my $item1   = create_invoice_item(part => $parts[2], qty => 0.5);
   my $item2   = create_invoice_item(part => $parts[3], qty => 0.5);
@@ -1041,8 +1002,6 @@ sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25_multiple() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'default invoice, four items, 19/7% tax with_skonto_pt 4x25';
-
   is($invoice->netamount,  100,     "${title}: netamount");
   is($invoice->amount,     113,     "${title}: amount");
   is($paid_amount,        -113,     "${title}: paid amount");
@@ -1052,6 +1011,8 @@ sub test_default_invoice_four_items_19_7_tax_with_skonto_4x_25_multiple() {
 }
 
 sub test_ar_currency_tax_not_included_and_payment {
+  my $title = 'test_ar_currency_tax_not_included_and_payment_2';
+
   my $netamount = $::form->round_amount(75 * $exchangerate->sell,2); #  75 in CUR, 100.00 in EUR
   my $amount    = $::form->round_amount($netamount * 1.19,2);        # 100 in CUR, 119.00 in EUR
   my $invoice   = SL::DB::Invoice->new(
@@ -1102,6 +1063,8 @@ sub test_ar_currency_tax_not_included_and_payment {
 };
 
 sub test_ar_currency_tax_included {
+  my $title = 'test_ar_currency_tax_included';
+
   # we want the acc_trans amount to be 100
   my $amount    = $::form->round_amount(75 * $exchangerate->sell * 1.19);
   my $netamount = $::form->round_amount($amount / 1.19,2);
@@ -1141,6 +1104,8 @@ sub test_ar_currency_tax_included {
 };
 
 sub test_ap_currency_tax_not_included_and_payment {
+  my $title = 'test_ap_currency_tax_not_included_and_payment';
+
   my $netamount = $::form->round_amount(75 * $exchangerate->buy,2); #  75 in CUR, 100.00 in EUR
   my $amount    = $::form->round_amount($netamount * 1.19,2);        # 100 in CUR, 119.00 in EUR
   my $invoice   = SL::DB::PurchaseInvoice->new(
@@ -1187,6 +1152,8 @@ sub test_ap_currency_tax_not_included_and_payment {
 };
 
 sub test_ap_currency_tax_included {
+  my $title = 'test_ap_currency_tax_included';
+
   # we want the acc_trans amount to be 100
   my $amount    = $::form->round_amount(75 * $exchangerate->buy * 1.19);
   my $netamount = $::form->round_amount($amount / 1.19,2);
@@ -1228,6 +1195,7 @@ sub test_ap_currency_tax_included {
 
 sub test_ar_currency_tax_not_included_and_payment_2 {
   my $title = 'test_ar_currency_tax_not_included_and_payment_2';
+
   my $netamount = $::form->round_amount(125 * $exchangerate2->sell,2); # 125.00 in CUR, 100.00 in EUR
   my $amount    = $::form->round_amount($netamount * 1.19,2);          # 148.75 in CUR, 119.00 in EUR
   my $invoice   = SL::DB::Invoice->new(
@@ -1287,6 +1255,8 @@ sub test_ar_currency_tax_not_included_and_payment_2 {
 };
 
 sub test_ar_currency_tax_not_included_and_payment_2_credit_note {
+  my $title = 'test_ar_currency_tax_not_included_and_payment_2_credit_note';
+
   my $netamount = $::form->round_amount(-125 * $exchangerate2->sell,2); # 125.00 in CUR, 100.00 in EUR
   my $amount    = $::form->round_amount($netamount * 1.19,2);          # 148.75 in CUR, 119.00 in EUR
   my $invoice   = SL::DB::Invoice->new(
@@ -1338,6 +1308,7 @@ sub test_ar_currency_tax_not_included_and_payment_2_credit_note {
 
 sub test_ap_currency_tax_not_included_and_payment_2 {
   my $title = 'test_ap_currency_tax_not_included_and_payment_2';
+
   my $netamount = $::form->round_amount(125 * $exchangerate2->sell,2); # 125.00 in CUR, 100.00 in EUR
   my $amount    = $::form->round_amount($netamount * 1.19,2);          # 148.75 in CUR, 119.00 in EUR
   my $invoice   = SL::DB::PurchaseInvoice->new(
@@ -1402,6 +1373,7 @@ sub test_ap_currency_tax_not_included_and_payment_2 {
 
 sub test_ap_currency_tax_not_included_and_payment_2_credit_note {
   my $title = 'test_ap_currency_tax_not_included_and_payment_2_credit_note';
+
   my $netamount = $::form->round_amount(-125 * $exchangerate2->sell,2); # 125.00 in CUR, 100.00 in EUR
   my $amount    = $::form->round_amount($netamount * 1.19,2);          # 148.75 in CUR, 119.00 in EUR
   my $invoice   = SL::DB::PurchaseInvoice->new(
@@ -1462,8 +1434,8 @@ sub test_ap_currency_tax_not_included_and_payment_2_credit_note {
   is(total_amount($invoice), 0,   "$title: even balance");
 };
 
-sub test_credit_note_two_items_19_7_tax_tax_not_included() {
-  reset_state() if $ALWAYS_RESET;
+sub test_credit_note_two_items_19_7_tax_tax_not_included {
+  my $title = 'test_credit_note_two_items_19_7_tax_tax_not_included';
 
   my $item1   = create_invoice_item(part => $parts[0], qty => 5);
   my $item2   = create_invoice_item(part => $parts[1], qty => 3);
@@ -1485,8 +1457,6 @@ sub test_credit_note_two_items_19_7_tax_tax_not_included() {
   my ($number_of_payments, $paid_amount) = number_of_payments($invoice);
   my $total = total_amount($invoice);
 
-  my $title = 'credit_note, two items, 19/7%, tax not included';
-
   is($invoice->netamount,        -40.84,   "${title}: netamount");
   is($invoice->amount,           -45.10,   "${title}: amount");
   is($paid_amount,                45.10,   "${title}: paid amount according to acc_trans is positive (Haben)");