File Coverage

blib/lib/Business/RO/TaxDeduction/Amount.pm
Criterion Covered Total %
statement 14 14 100.0
branch n/a
condition n/a
subroutine 5 5 100.0
pod n/a
total 19 19 100.0


line stmt bran cond sub pod time code
1             package Business::RO::TaxDeduction::Amount;
2             $Business::RO::TaxDeduction::Amount::VERSION = '0.012';
3             # ABSTRACT: Personal deduction amount by year and number of persons
4              
5 3     3   91884 use 5.010001;
  3         16  
6 3     3   521 use utf8;
  3         15  
  3         17  
7 3     3   467 use Moo;
  3         8797  
  3         16  
8 3     3   2092 use MooX::HandlesVia;
  3         7266  
  3         20  
9 3         21 use Business::RO::TaxDeduction::Types qw(
10             Int
11             HashRef
12 3     3   658 );
  3         9  
13             with qw(Business::RO::TaxDeduction::Role::Utils);
14              
15             has '_deduction_map_2005' => (
16             is => 'ro',
17             isa => HashRef,
18             lazy => 1,
19             default => sub {
20             return {
21             0 => 250,
22             1 => 350,
23             2 => 450,
24             3 => 550,
25             4 => 650,
26             };
27             },
28             );
29              
30             has '_deduction_map_2016' => (
31             is => 'ro',
32             isa => HashRef,
33             lazy => 1,
34             default => sub {
35             return {
36             0 => 300,
37             1 => 400,
38             2 => 500,
39             3 => 600,
40             4 => 800,
41             };
42             },
43             );
44              
45             has '_deduction_map_2018' => (
46             is => 'ro',
47             isa => HashRef,
48             lazy => 1,
49             default => sub {
50             return {
51             0 => 510,
52             1 => 670,
53             2 => 830,
54             3 => 990,
55             4 => 1310,
56             };
57             },
58             );
59              
60             has '_deduction_map' => (
61             is => 'ro',
62             handles_via => 'Hash',
63             lazy => 1,
64             default => sub {
65             my $self = shift;
66             my $year = $self->base_year;
67             my $meth = "_deduction_map_$year";
68             return $self->$meth;
69             },
70             handles => {
71             _get_deduction_for => 'get',
72             }
73             );
74              
75             has amount => (
76             is => 'ro',
77             isa => Int,
78             lazy => 1,
79             default => sub {
80             my $self = shift;
81             return $self->_get_deduction_for( $self->persons );
82             },
83             );
84              
85             1;
86              
87             __END__