summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-05-06 06:38:45 -0700
committerIvan Kohler <ivan@freeside.biz>2014-05-06 06:38:45 -0700
commit46ea5d28eeb304f0fbdcf78143a5a425de56f653 (patch)
tree319db35e5981b0fc536b45b3cbba2cd7174ce19f
parentf9587ba36d31c9992005a359c74c88d703877194 (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 a3c1d6efb..e586f8532 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 198c362a8..f446aa953 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -1539,6 +1539,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