Merge branch 'master' of git.freeside.biz:/home/git/freeside
authorIvan Kohler <ivan@freeside.biz>
Fri, 20 Apr 2012 21:25:30 +0000 (14:25 -0700)
committerIvan Kohler <ivan@freeside.biz>
Fri, 20 Apr 2012 21:25:30 +0000 (14:25 -0700)
FS/FS/part_event/Action/cust_bill_fee_greater_percent_or_flat.pm [new file with mode: 0644]
httemplate/elements/coord-links.html

diff --git a/FS/FS/part_event/Action/cust_bill_fee_greater_percent_or_flat.pm b/FS/FS/part_event/Action/cust_bill_fee_greater_percent_or_flat.pm
new file mode 100644 (file)
index 0000000..558f5cd
--- /dev/null
@@ -0,0 +1,41 @@
+package FS::part_event::Action::cust_bill_fee_greater_percent_or_flat;
+
+use strict;
+use base qw( FS::part_event::Action::fee );
+use Tie::IxHash;
+
+sub description { 'Late fee (greater of percentage of invoice or flat fee)'; }
+
+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( 'flat_fee'  => { label=>'Flat Fee', type=>'money', } );
+  $t->Unshift( 'percent'   => { label=>'Percent', size=>2, } );
+
+  %option_fields;
+}
+
+sub _calc_fee {
+  my( $self, $cust_bill ) = @_;
+  my $percent  = sprintf('%.2f', $cust_bill->owed * $self->option('percent') / 100 );
+  my $flat_fee = $self->option('flat_fee');
+
+  my $num = $flat_fee - $percent;
+  if ($num == 0) {
+    return($percent);
+  }
+  elsif ($num > 0) {
+    return($flat_fee);
+  }
+  else {
+    return($percent);
+  }
+}
+
+1;
index 3fd3ff6..81af812 100644 (file)
@@ -12,7 +12,7 @@
 % if ( $origin ) {
   <& /elements/popup_link.html,
       'action'      => $p. "view/directions.html?origin=$origin;". $query,
-      'label'       => mt('dir'),
+      'label'       => mt('directions'),
       'actionlabel' => $name,
       'width'       => 763,
       'height'      => 575,