Revision b49dd24d
Von Jan Büren vor fast 3 Jahren hinzugefügt
t/db_helper/payment.t | ||
---|---|---|
53 | 53 |
test_default_invoice_one_item_19_without_skonto_overpaid(); |
54 | 54 |
test_credit_note_two_items_19_7_tax_tax_not_included(); |
55 | 55 |
|
56 |
# test cases: difference_as_skonto
|
|
57 |
test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto();
|
|
58 |
test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto_1cent();
|
|
59 |
test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto_2cent();
|
|
60 |
test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto();
|
|
61 |
test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto_1cent();
|
|
62 |
test_default_ap_transaction_two_charts_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto();
|
|
56 |
# test cases: free_skonto
|
|
57 |
test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_free_skonto();
|
|
58 |
test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_free_skonto_1cent();
|
|
59 |
test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_free_skonto_2cent();
|
|
60 |
test_default_invoice_one_item_19_multiple_payment_final_free_skonto();
|
|
61 |
test_default_invoice_one_item_19_multiple_payment_final_free_skonto_1cent();
|
|
62 |
test_default_ap_transaction_two_charts_19_7_tax_without_skonto_multiple_payments_final_free_skonto();
|
|
63 | 63 |
|
64 | 64 |
# test cases: with_skonto_pt |
65 | 65 |
test_default_invoice_two_items_19_7_tax_with_skonto_50_50(); |
... | ... | |
289 | 289 |
my $paid_amount; |
290 | 290 |
foreach my $transaction ( @{ $invoice->transactions } ) { |
291 | 291 |
if ( $transaction->chart_link =~ /(AR_paid|AP_paid)/ ) { |
292 |
$paid_amount += $transaction->amount ;
|
|
292 |
$paid_amount += $transaction->amount; |
|
293 | 293 |
$number_of_payments++; |
294 | 294 |
} |
295 | 295 |
}; |
... | ... | |
553 | 553 |
} |
554 | 554 |
|
555 | 555 |
# test 6 |
556 |
sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto {
|
|
556 |
sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_free_skonto {
|
|
557 | 557 |
my $title = 'default invoice, two items, 19/7% tax not included'; |
558 | 558 |
|
559 | 559 |
my $item1 = create_invoice_item(part => $parts[0], qty => 2.5); |
... | ... | |
575 | 575 |
chart_id => $bank_account->chart_id, |
576 | 576 |
transdate => $transdate1, |
577 | 577 |
); |
578 |
$invoice->pay_invoice( amount => $invoice->open_amount, |
|
579 |
payment_type => 'difference_as_skonto', |
|
580 |
chart_id => $bank_account->chart_id, |
|
581 |
transdate => $transdate1, |
|
582 |
bt_id => $bt->id, |
|
578 |
# free_skonto does: |
|
579 |
# my $open_amount = $payment_type eq 'with_skonto_pt' ? $invoice->amount_less_skonto : $invoice->open_amount; |
|
580 |
# $open_amount = abs($open_amount); |
|
581 |
# $open_amount -= $free_skonto_amount if ($payment_type eq 'free_skonto'); |
|
582 |
|
|
583 |
$invoice->pay_invoice( skonto_amount => $invoice->open_amount, |
|
584 |
amount => 0, |
|
585 |
payment_type => 'free_skonto', |
|
586 |
chart_id => $bank_account->chart_id, |
|
587 |
transdate => $transdate1, |
|
588 |
bt_id => $bt->id, |
|
583 | 589 |
); |
584 | 590 |
|
585 | 591 |
my ($number_of_payments, $paid_amount) = number_of_payments($invoice); |
586 | 592 |
my $total = total_amount($invoice); |
587 |
|
|
588 | 593 |
is($invoice->netamount, 5.85 + 11.66, "${title}: netamount"); |
589 | 594 |
is($invoice->amount, 6.96 + 12.48, "${title}: amount"); |
590 | 595 |
is($paid_amount, -19.44, "${title}: paid amount"); |
... | ... | |
594 | 599 |
|
595 | 600 |
} |
596 | 601 |
|
597 |
sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto_1cent {
|
|
602 |
sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_free_skonto_1cent {
|
|
598 | 603 |
my $title = 'default invoice, two items, 19/7% tax not included'; |
599 | 604 |
|
600 | 605 |
# if there is only one cent left there can only be one skonto booking, the |
601 | 606 |
# error handling should choose the highest amount, which is the 7% account |
602 | 607 |
# (11.66) rather than the 19% account (5.85). The actual tax amount is |
603 | 608 |
# higher for the 19% case, though (1.11 compared to 0.82) |
609 |
# |
|
610 |
# -> wrong: sub name. two cents are still left. one cent for each tax case. no tax correction |
|
604 | 611 |
|
605 | 612 |
my $item1 = create_invoice_item(part => $parts[0], qty => 2.5); |
606 | 613 |
my $item2 = create_invoice_item(part => $parts[1], qty => 1.2); |
... | ... | |
616 | 623 |
chart_id => $bank_account->chart_id, |
617 | 624 |
transdate => $transdate1, |
618 | 625 |
); |
619 |
$invoice->pay_invoice( amount => $invoice->open_amount, |
|
620 |
payment_type => 'difference_as_skonto', |
|
626 |
$invoice->pay_invoice( skonto_amount => $invoice->open_amount, |
|
627 |
amount => 0, |
|
628 |
payment_type => 'free_skonto', |
|
621 | 629 |
chart_id => $bank_account->chart_id, |
622 | 630 |
transdate => $transdate1, |
623 | 631 |
bt_id => $bt->id, |
624 | 632 |
); |
625 |
|
|
626 | 633 |
my ($number_of_payments, $paid_amount) = number_of_payments($invoice); |
627 | 634 |
my $total = total_amount($invoice); |
628 | 635 |
|
... | ... | |
630 | 637 |
is($invoice->amount, 6.96 + 12.48, "${title}: amount"); |
631 | 638 |
is($paid_amount, -19.44, "${title}: paid amount"); |
632 | 639 |
is($invoice->paid, 19.44, "${title}: paid"); |
633 |
is($number_of_payments, 3, "${title}: 2 AR_paid bookings");
|
|
640 |
is($number_of_payments, 3, "${title}: 3 AR_paid bookings");
|
|
634 | 641 |
is($total, 0, "${title}: even balance"); |
635 |
|
|
636 | 642 |
} |
637 | 643 |
|
638 |
sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto_2cent {
|
|
644 |
sub test_default_invoice_two_items_19_7_tax_without_skonto_multiple_payments_final_free_skonto_2cent {
|
|
639 | 645 |
my $title = 'default invoice, two items, 19/7% tax not included'; |
640 | 646 |
|
641 | 647 |
# if there are two cents left there will be two skonto bookings, 1 cent each |
... | ... | |
653 | 659 |
chart_id => $bank_account->chart_id, |
654 | 660 |
transdate => $transdate1, |
655 | 661 |
); |
656 |
$invoice->pay_invoice( amount => $invoice->open_amount, |
|
657 |
payment_type => 'difference_as_skonto', |
|
662 |
$invoice->pay_invoice( skonto_amount => $invoice->open_amount, |
|
663 |
amount => 0, |
|
664 |
payment_type => 'free_skonto', |
|
658 | 665 |
chart_id => $bank_account->chart_id, |
659 | 666 |
transdate => $transdate1, |
660 | 667 |
bt_id => $bt->id, |
... | ... | |
672 | 679 |
|
673 | 680 |
} |
674 | 681 |
|
675 |
sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto {
|
|
682 |
sub test_default_invoice_one_item_19_multiple_payment_final_free_skonto {
|
|
676 | 683 |
my $title = 'default invoice, one item, 19% tax, without_skonto'; |
677 | 684 |
|
678 | 685 |
my $item = create_invoice_item(part => $parts[0], qty => 2.5); |
... | ... | |
697 | 704 |
$params{payment_type} = 'without_skonto'; |
698 | 705 |
$invoice->pay_invoice( %params ); |
699 | 706 |
|
700 |
$params{amount} = $invoice->open_amount; # set amount, otherwise previous 3.81 is used |
|
701 |
$params{payment_type} = 'difference_as_skonto'; |
|
707 |
$params{skonto_amount} = $invoice->open_amount; # set amount, otherwise previous 3.81 is used |
|
708 |
$params{amount} = 0, |
|
709 |
$params{payment_type} = 'free_skonto'; |
|
702 | 710 |
$invoice->pay_invoice( %params ); |
703 | 711 |
|
704 | 712 |
my ($number_of_payments, $paid_amount) = number_of_payments($invoice); |
... | ... | |
713 | 721 |
|
714 | 722 |
} |
715 | 723 |
|
716 |
sub test_default_invoice_one_item_19_multiple_payment_final_difference_as_skonto_1cent {
|
|
724 |
sub test_default_invoice_one_item_19_multiple_payment_final_free_skonto_1cent {
|
|
717 | 725 |
my $title = 'default invoice, one item, 19% tax, without_skonto'; |
718 | 726 |
|
719 | 727 |
my $item = create_invoice_item(part => $parts[0], qty => 2.5); |
... | ... | |
734 | 742 |
$params{payment_type} = 'without_skonto'; |
735 | 743 |
$invoice->pay_invoice( %params ); |
736 | 744 |
|
737 |
$params{amount} = $invoice->open_amount; # set amount, otherwise previous value 6.95 is used |
|
738 |
$params{payment_type} = 'difference_as_skonto'; |
|
745 |
$params{skonto_amount} = $invoice->open_amount; |
|
746 |
$params{amount} = 0, |
|
747 |
$params{payment_type} = 'free_skonto'; |
|
739 | 748 |
$invoice->pay_invoice( %params ); |
740 | 749 |
|
741 | 750 |
my ($number_of_payments, $paid_amount) = number_of_payments($invoice); |
... | ... | |
783 | 792 |
transdate => $transdate1, |
784 | 793 |
bt_id => $bt->id, |
785 | 794 |
); |
786 |
|
|
787 |
# $params{amount} = '226'; # pass full amount |
|
795 |
# BankTransaction-Controller __always__ calcs amount: |
|
796 |
# my $open_amount = $payment_type eq 'with_skonto_pt' ? $invoice->amount_less_skonto : $invoice->open_amount; |
|
797 |
$ap_transaction->payment_terms($ap_transaction->vendor->payment); |
|
798 |
$params{amount} = $ap_transaction->amount_less_skonto; # pass calculated skonto amount |
|
788 | 799 |
$params{payment_type} = 'with_skonto_pt'; |
789 | 800 |
|
790 |
$ap_transaction->payment_terms($ap_transaction->vendor->payment); |
|
791 | 801 |
$ap_transaction->pay_invoice( %params ); |
792 | 802 |
|
793 | 803 |
my ($number_of_payments, $paid_amount) = number_of_payments($ap_transaction); |
... | ... | |
819 | 829 |
}; |
820 | 830 |
|
821 | 831 |
|
822 |
sub test_default_ap_transaction_two_charts_19_7_tax_without_skonto_multiple_payments_final_difference_as_skonto {
|
|
823 |
my $title = 'default ap_transaction, two charts, 19/7% tax multiple payments with final difference as skonto';
|
|
832 |
sub test_default_ap_transaction_two_charts_19_7_tax_without_skonto_multiple_payments_final_free_skonto {
|
|
833 |
my $title = 'default ap_transaction, two charts, 19/7% tax multiple payments with final free skonto';
|
|
824 | 834 |
|
825 | 835 |
my $ap_transaction = new_ap_transaction(); |
826 | 836 |
|
... | ... | |
838 | 848 |
transdate => $transdate1, |
839 | 849 |
); |
840 | 850 |
$ap_transaction->pay_invoice( |
841 |
payment_type => 'difference_as_skonto', |
|
851 |
payment_type => 'free_skonto', |
|
852 |
skonto_amount => $ap_transaction->open_amount, |
|
853 |
amount => 0, |
|
842 | 854 |
chart_id => $bank_account->chart_id, |
843 | 855 |
transdate => $transdate1, |
844 | 856 |
bt_id => $bt->id, |
... | ... | |
848 | 860 |
my $total = total_amount($ap_transaction); |
849 | 861 |
|
850 | 862 |
is($paid_amount, 226, "${title}: paid amount"); |
851 |
is($number_of_payments, 4, "${title}: 1 AP_paid bookings");
|
|
863 |
is($number_of_payments, 4, "${title}: 4 AP_paid bookings");
|
|
852 | 864 |
is($total, 0, "${title}: even balance"); |
853 | 865 |
|
854 | 866 |
} |
Auch abrufbar als: Unified diff
Testfälle für Payment umgestellt difference_as_skonto => free_skonto
Anwendungsfall difference_as_skonto ist nichts anderes als
free_skonto mit dem Skonto-Betrag entsprechend dem vollen
Rechnungsbetrag. Der Fall difference_as_skonto ist ansonsten toter Code
in der kivi und wurde nur von diesem Testfall noch am Leben erhalten