summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-05-06 06:38:43 -0700
committerIvan Kohler <ivan@freeside.biz>2014-05-06 06:38:43 -0700
commit719acce16404ce63773159842f75cce230f34486 (patch)
treede7c60fd5a4ba749509d2a5bb9e2387f171b9f0f
parent71b86f3f89e8fdeb7142fa82cdbe3e3afce7a903 (diff)
commissions on package margin, RT#24086
-rw-r--r--FS/FS/part_event/Action/Mixin/credit_pkg.pm6
-rw-r--r--FS/FS/part_pkg.pm22
2 files changed, 26 insertions, 2 deletions
diff --git a/FS/FS/part_event/Action/Mixin/credit_pkg.pm b/FS/FS/part_event/Action/Mixin/credit_pkg.pm
index a3c1d6e..e586f85 100644
--- a/FS/FS/part_event/Action/Mixin/credit_pkg.pm
+++ b/FS/FS/part_event/Action/Mixin/credit_pkg.pm
@@ -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)',
},
},
);
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index 07f59aa..deba655 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -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