From 2c2447e3b398aa0a9888f9f8312960f1a001ec9b Mon Sep 17 00:00:00 2001 From: "G. Richardson" Date: Wed, 11 Apr 2018 11:04:05 +0200 Subject: [PATCH] Refactoring payment.t MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 | 152 +++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 91 deletions(-) diff --git a/t/db_helper/payment.t b/t/db_helper/payment.t index 1045d577a..508bfc9b8 100644 --- a/t/db_helper/payment.t +++ b/t/db_helper/payment.t @@ -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)"); -- 2.20.1