diff options
Diffstat (limited to 'FS/FS/part_pkg/prepaid.pm')
-rw-r--r-- | FS/FS/part_pkg/prepaid.pm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/FS/FS/part_pkg/prepaid.pm b/FS/FS/part_pkg/prepaid.pm new file mode 100644 index 0000000..cff165a --- /dev/null +++ b/FS/FS/part_pkg/prepaid.pm @@ -0,0 +1,54 @@ +package FS::part_pkg::prepaid; + +use strict; +use vars qw(@ISA %info %recur_action); +use Tie::IxHash; +use FS::part_pkg::flat; + +@ISA = qw(FS::part_pkg::flat); + +tie %recur_action, 'Tie::IxHash', + 'suspend' => 'suspend', + 'cancel' => 'cancel', +; + +tie my %overlimit_action, 'Tie::IxHash', + 'overlimit' => 'Default overlimit processing', + 'cancel' => 'Cancel', +; + +%info = ( + 'name' => 'Prepaid, flat rate', + #'name' => 'Prepaid (no automatic recurring)', #maybe use it here too + 'shortname' => 'Prepaid, no automatic cycle', + 'fields' => { + 'setup_fee' => { 'name' => 'One-time setup fee for this package', + 'default' => 0, + }, + 'recur_fee' => { 'name' => 'Initial and recharge fee for this package', + 'default' => 0, + }, + 'recur_action' => { 'name' => 'Action to take upon reaching end of prepaid preiod', + 'type' => 'select', + 'select_options' => \%recur_action, + }, + %FS::part_pkg::flat::usage_fields, + 'overlimit_action' => { 'name' => 'Action to take upon reaching a usage limit.', + 'type' => 'select', + 'select_options' => \%overlimit_action, + }, + #XXX if you set overlimit_action to 'cancel', should also have the ability + # to select a reason + }, + 'fieldorder' => [ qw( setup_fee recur_fee recur_action ), + @FS::part_pkg::flat::usage_fieldorder, 'overlimit_action', + ], + 'weight' => 25, +); + +sub is_prepaid { + 1; +} + +1; + |