Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / t / helper / attr.t
1 use Test::More tests => 44;
2
3 use lib 't';
4
5 use DateTime;
6
7 use_ok 'Support::TestSetup';
8 use_ok 'SL::DB::Part';
9 use_ok 'SL::DB::Order';
10 use_ok 'SL::DB::Invoice';
11
12 Support::TestSetup::login();
13
14 {
15 $::myconfig{numberformat} = '1.000,00';
16 $::myconfig{dateformat} = 'dd.mm.yyyy';
17 }
18
19 my $p = new_ok 'SL::DB::Part';
20 is($p->sellprice_as_number('2,30'), '2,30');
21 is($p->sellprice, 2.30);
22 is($p->sellprice_as_number, '2,30');
23 is($p->sellprice_as_number('2,3442'), '2,3442');
24 is($p->sellprice, 2.3442);
25 is($p->sellprice_as_number, '2,3442');
26 is($p->listprice_as_null_number('2,30'), '2,30');
27 is($p->listprice, 2.30);
28 is($p->listprice_as_null_number, '2,30');
29 is($p->listprice_as_null_number('2,3442'), '2,3442');
30 is($p->listprice, 2.3442);
31 is($p->listprice_as_null_number, '2,3442');
32 is($p->listprice_as_null_number(''), '');
33 is($p->listprice, undef);
34 is($p->listprice_as_null_number, '');
35 is($p->listprice_as_null_number('0'), '0,00');
36 is($p->listprice, 0);
37 is($p->listprice_as_null_number, '0,00');
38
39 my $o = new_ok 'SL::DB::Order';
40 is($o->reqdate_as_date('11.12.2007'), '11.12.2007');
41 is($o->reqdate->year, 2007);
42 is($o->reqdate->month, 12);
43 is($o->reqdate->day, 11);
44 is($o->reqdate_as_date, '11.12.2007');
45 $o->reqdate(DateTime->new(year => 2010, month => 4, day => 12));
46 is($o->reqdate_as_date, '12.04.2010');
47
48 is($o->marge_percent_as_percent('40'), '40,00');
49 is($o->marge_percent, 0.40);
50 is($o->marge_percent_as_percent, '40,00');
51 is($o->marge_percent_as_percent('22,4'), '22,40');
52 is($o->marge_percent, 0.224);
53 is($o->marge_percent_as_percent, '22,40');
54 is($o->marge_percent(0.231), 0.231);
55 is($o->marge_percent_as_percent, '23,10');
56
57 # overloaded attr: invoice taxamount
58 my $i = new_ok 'SL::DB::Invoice';
59
60 is($i->taxamount_as_number, '0,00');
61 $i->amount(12);
62 $i->netamount(10.34);
63 is($i->taxamount_as_number, '1,66');
64
65 $o->closed(1);
66 is $o->closed_as_bool_yn, 'Ja', 'bool 1';
67 $o->closed(0);
68 is $o->closed_as_bool_yn, 'Nein', 'bool 2';
69
70 # undef test: this only works for columns without default, rose will set
71 # defaults according to the database
72 $i->taxincluded(undef);
73 is $i->taxincluded_as_bool_yn, '', 'bool 3';