commissions on package margin, RT#24086
authorIvan Kohler <ivan@freeside.biz>
Tue, 6 May 2014 13:38:43 +0000 (06:38 -0700)
committerIvan Kohler <ivan@freeside.biz>
Tue, 6 May 2014 13:38:43 +0000 (06:38 -0700)
FS/FS/part_event/Action/Mixin/credit_pkg.pm
FS/FS/part_pkg.pm

index a3c1d6e..e586f85 100644 (file)
@@ -21,8 +21,8 @@ sub option_fields {
       'type'    => 'select',
       #add additional ways to specify in the package def
       'options' => [qw(
-        base_recur_permonth cust_bill_pkg_recur recur_cost_permonth
-        unit_setup setup_cost
+        base_recur_permonth cust_bill_pkg_recur recur_cost_permonth recur_margin_permonth
+        unit_setup setup_cost setup_margin
       )],
       'labels'  => {
         'base_recur_permonth' => 'Base monthly fee',
@@ -31,6 +31,8 @@ sub option_fields {
         'recur_cost_permonth' => 'Monthly cost',
         'unit_setup'          => 'Setup fee',
         'setup_cost'          => 'Setup cost',
+        'setup_margin'        => 'Setup margin (fee minus cost)',
+        'recur_margin_permonth' => 'Monthly margin (fee minus cost)',
       },
     },
   );
index 07f59aa..deba655 100644 (file)
@@ -1610,6 +1610,28 @@ sub unit_setup {
   $self->option('setup_fee') || 0;
 }
 
+=item setup_margin
+
+unit_setup minus setup_cost
+
+=cut
+
+sub setup_margin {
+  my $self = shift;
+  $self->unit_setup(@_) - $self->setup_cost;
+}
+
+=item recur_margin_permonth
+
+base_recur_permonth minus recur_cost_permonth
+
+=cut
+
+sub recur_margin_permonth {
+  my $self = shift;
+  $self->base_recur_permonth(@_) - $self->recur_cost_permonth(@_);
+}
+
 =item format OPTION DATA
 
 Returns data formatted according to the function 'format' described