summaryrefslogtreecommitdiff
path: root/FS/FS/part_event/Action/cust_bill_fee_percent.pm
diff options
context:
space:
mode:
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.pm28
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;