1 |
|
use Test::More tests => 88;
|
|
1 |
use Test::More tests => 100;
|
2 |
2 |
|
3 |
3 |
use strict;
|
4 |
4 |
|
... | ... | |
66 |
66 |
reset_state(); # initialise customers/vendors/bank/currency/...
|
67 |
67 |
|
68 |
68 |
test1();
|
|
69 |
|
69 |
70 |
test_overpayment_with_partialpayment();
|
70 |
71 |
test_overpayment();
|
71 |
72 |
test_skonto_exact();
|
72 |
73 |
test_two_invoices();
|
73 |
74 |
test_partial_payment();
|
74 |
75 |
test_credit_note();
|
75 |
|
test_neg_ap_transaction();
|
76 |
76 |
test_ap_transaction();
|
|
77 |
test_neg_ap_transaction();
|
77 |
78 |
test_ap_payment_transaction();
|
|
79 |
test_ap_payment_part_transaction();
|
|
80 |
|
78 |
81 |
# remove all created data at end of test
|
79 |
82 |
clear_up();
|
80 |
83 |
|
... | ... | |
118 |
121 |
bank => 'Geizkasse',
|
119 |
122 |
bank_code => 'G1235',
|
120 |
123 |
depositor => 'Test Customer',
|
|
124 |
customernumber => 'CUST1704',
|
121 |
125 |
)->save;
|
122 |
126 |
|
123 |
127 |
$payment_terms = SL::Dev::Payment::create_payment_terms;
|
... | ... | |
131 |
135 |
bank => 'Geizkasse',
|
132 |
136 |
bank_code => 'G1235',
|
133 |
137 |
depositor => 'Test Vendor',
|
|
138 |
vendornumber => 'VEND1704',
|
134 |
139 |
)->save;
|
135 |
140 |
|
136 |
141 |
$ar_chart = SL::DB::Manager::Chart->find_by( accno => '1400' ); # Forderungen
|
... | ... | |
181 |
186 |
|
182 |
187 |
sub test_ap_transaction {
|
183 |
188 |
my (%params) = @_;
|
|
189 |
my $testname = 'test_ap_transaction';
|
|
190 |
|
184 |
191 |
my $netamount = 100;
|
185 |
192 |
my $amount = $::form->round_amount($netamount * 1.19,2);
|
186 |
193 |
my $invoice = SL::DB::PurchaseInvoice->new(
|
187 |
194 |
invoice => 0,
|
188 |
|
invnumber => $params{invnumber} || 'test_ap_transaction',
|
|
195 |
invnumber => $params{invnumber} || $testname,
|
189 |
196 |
amount => $amount,
|
190 |
197 |
netamount => $netamount,
|
191 |
198 |
transdate => $transdate1,
|
... | ... | |
205 |
212 |
$invoice->create_ap_row(chart => $ap_chart);
|
206 |
213 |
$invoice->save;
|
207 |
214 |
|
208 |
|
is($invoice->currency_id , $currency_id , 'currency_id has been saved');
|
209 |
|
is($invoice->netamount , 100 , 'ap amount has been converted');
|
210 |
|
is($invoice->amount , 119 , 'ap amount has been converted');
|
211 |
|
is($invoice->taxincluded , 0 , 'ap transaction doesn\'t have taxincluded');
|
|
215 |
is($invoice->currency_id , $currency_id , "$testname: currency_id has been saved");
|
|
216 |
is($invoice->netamount , 100 , "$testname: ap amount has been converted");
|
|
217 |
is($invoice->amount , 119 , "$testname: ap amount has been converted");
|
|
218 |
is($invoice->taxincluded , 0 , "$testname: ap transaction doesn\'t have taxincluded");
|
212 |
219 |
|
213 |
220 |
is(SL::DB::Manager::AccTransaction->find_by(chart_id => $ap_amount_chart->id , trans_id => $invoice->id)->amount , '-100.00000' , $ap_amount_chart->accno . ': has been converted for currency');
|
214 |
221 |
is(SL::DB::Manager::AccTransaction->find_by(chart_id => $ap_chart->id , trans_id => $invoice->id)->amount , '119.00000' , $ap_chart->accno . ': has been converted for currency');
|
... | ... | |
490 |
497 |
|
491 |
498 |
sub test_ap_payment_transaction {
|
492 |
499 |
my (%params) = @_;
|
493 |
|
my $testname = 'test_ap_two_transaction';
|
|
500 |
my $testname = 'test_ap_payment_transaction';
|
494 |
501 |
my $netamount = 115;
|
495 |
502 |
my $amount = $::form->round_amount($netamount * 1.19,2);
|
496 |
503 |
my $invoice = SL::DB::PurchaseInvoice->new(
|
497 |
504 |
invoice => 0,
|
498 |
|
invnumber => $params{invnumber} || 'test_ap_two_transaction',
|
|
505 |
invnumber => $params{invnumber} || $testname,
|
499 |
506 |
amount => $amount,
|
500 |
507 |
netamount => $netamount,
|
501 |
508 |
transdate => $transdate1,
|
... | ... | |
504 |
511 |
taxzone_id => $vendor->taxzone_id,
|
505 |
512 |
currency_id => $currency_id,
|
506 |
513 |
transactions => [],
|
507 |
|
notes => 'test_ap_transaction',
|
|
514 |
notes => $testname,
|
508 |
515 |
);
|
509 |
516 |
$invoice->add_ap_amount_row(
|
510 |
517 |
amount => $invoice->netamount,
|
... | ... | |
540 |
547 |
|
541 |
548 |
return $invoice;
|
542 |
549 |
};
|
|
550 |
|
|
551 |
sub test_ap_payment_part_transaction {
|
|
552 |
my (%params) = @_;
|
|
553 |
my $testname = 'test_ap_payment_p_transaction';
|
|
554 |
my $netamount = 115;
|
|
555 |
my $amount = $::form->round_amount($netamount * 1.19,2);
|
|
556 |
my $invoice = SL::DB::PurchaseInvoice->new(
|
|
557 |
invoice => 0,
|
|
558 |
invnumber => $params{invnumber} || $testname,
|
|
559 |
amount => $amount,
|
|
560 |
netamount => $netamount,
|
|
561 |
transdate => $transdate1,
|
|
562 |
taxincluded => 0,
|
|
563 |
vendor_id => $vendor->id,
|
|
564 |
taxzone_id => $vendor->taxzone_id,
|
|
565 |
currency_id => $currency_id,
|
|
566 |
transactions => [],
|
|
567 |
notes => $testname,
|
|
568 |
);
|
|
569 |
$invoice->add_ap_amount_row(
|
|
570 |
amount => $invoice->netamount,
|
|
571 |
chart => $ap_amount_chart,
|
|
572 |
tax_id => $tax_9->id,
|
|
573 |
);
|
|
574 |
|
|
575 |
$invoice->create_ap_row(chart => $ap_chart);
|
|
576 |
$invoice->save;
|
|
577 |
|
|
578 |
is($invoice->netamount, 115 , "$testname: netamount ok");
|
|
579 |
is($invoice->amount , 136.85, "$testname: amount ok");
|
|
580 |
|
|
581 |
my $bt = SL::Dev::Payment::create_bank_transaction(record => $invoice,
|
|
582 |
amount => $invoice->amount-100,
|
|
583 |
bank_chart_id => $bank->id,
|
|
584 |
transdate => DateTime->today->add(days => 10),
|
|
585 |
);
|
|
586 |
$::form->{invoice_ids} = {
|
|
587 |
$bt->id => [ $invoice->id ]
|
|
588 |
};
|
|
589 |
|
|
590 |
save_btcontroller_to_string();
|
|
591 |
|
|
592 |
$invoice->load;
|
|
593 |
$bt->load;
|
|
594 |
|
|
595 |
is($invoice->amount , '136.85000', "$testname: amount ok");
|
|
596 |
is($invoice->netamount, '115.00000', "$testname: netamount ok");
|
|
597 |
is($bt->amount, '-36.85000', "$testname: bt amount ok");
|
|
598 |
is($invoice->paid , '36.85000', "$testname: paid ok");
|
|
599 |
is($bt->invoice_amount, '-36.85000', "$testname: bt invoice amount for ap was assigned");
|
|
600 |
|
|
601 |
my $bt2 = SL::Dev::Payment::create_bank_transaction(record => $invoice,
|
|
602 |
amount => 100,
|
|
603 |
bank_chart_id => $bank->id,
|
|
604 |
transdate => DateTime->today->add(days => 10),
|
|
605 |
);
|
|
606 |
$::form->{invoice_ids} = {
|
|
607 |
$bt2->id => [ $invoice->id ]
|
|
608 |
};
|
|
609 |
|
|
610 |
save_btcontroller_to_string();
|
|
611 |
$invoice->load;
|
|
612 |
$bt2->load;
|
|
613 |
|
|
614 |
is($invoice->amount , '136.85000', "$testname: amount ok");
|
|
615 |
is($invoice->netamount, '115.00000', "$testname: netamount ok");
|
|
616 |
is($bt2->amount, '-100.00000',"$testname: bt amount ok");
|
|
617 |
is($invoice->paid , '136.85000', "$testname: paid ok");
|
|
618 |
is($bt2->invoice_amount,'-100.00000', "$testname: bt invoice amount for ap was assigned");
|
|
619 |
|
|
620 |
return $invoice;
|
|
621 |
};
|
|
622 |
|
543 |
623 |
1;
|
BankTransaction: "Kontoauszug verbuchen" überarbeitet für ap_transaction und credit_note
sowie Test erweitert