diff options
Diffstat (limited to 'FS/FS/part_event/Action/cust_bill_fee_percent.pm')
-rw-r--r-- | FS/FS/part_event/Action/cust_bill_fee_percent.pm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/FS/FS/part_event/Action/cust_bill_fee_percent.pm b/FS/FS/part_event/Action/cust_bill_fee_percent.pm new file mode 100644 index 0000000..48daf15 --- /dev/null +++ b/FS/FS/part_event/Action/cust_bill_fee_percent.pm @@ -0,0 +1,28 @@ +package FS::part_event::Action::cust_bill_fee_percent; + +use strict; +use base qw( FS::part_event::Action::fee ); +use Tie::IxHash; + +sub description { 'Late fee (percentage of invoice)'; } + +sub eventtable_hashref { + { 'cust_bill' => 1 }; +} + +sub option_fields { + my $class = shift; + + my $t = tie my %option_fields, 'Tie::IxHash', $class->SUPER::option_fields(); + $t->Shift; #assumes charge is first + $t->Unshift( 'percent' => { label=>'Percent', size=>2, } ); + + %option_fields; +} + +sub _calc_fee { + my( $self, $cust_bill ) = @_; + sprintf('%.2f', $cust_bill->owed * $self->option('percent') / 100 ); +} + +1; |