and enable overlimit_action, RT#4995
[freeside.git] / FS / FS / part_pkg / prepaid.pm
1 package FS::part_pkg::prepaid;
2
3 use strict;
4 use vars qw(@ISA %info %recur_action);
5 use Tie::IxHash;
6 use FS::part_pkg::flat;
7
8 @ISA = qw(FS::part_pkg::flat);
9
10 tie %recur_action, 'Tie::IxHash',
11   'suspend' => 'suspend',
12   'cancel'  => 'cancel',
13 ;
14
15 tie my %overlimit_action, 'Tie::IxHash',
16   'overlimit' => 'Default overlimit processing',
17   'cancel'    => 'Cancel',
18 ;
19
20 %info = (
21   'name' => 'Prepaid, flat rate',
22   'fields' => {
23     'setup_fee'   =>  { 'name' => 'One-time setup fee for this package',
24                         'default' => 0,
25                       },
26     'recur_fee'   =>  { 'name' => 'Initial and recharge fee for this package',
27                         'default' => 0,
28                       },
29     'recur_action' => { 'name' => 'Action to take upon reaching end of prepaid preiod',
30                         'type' => 'select',
31                         'select_options' => \%recur_action,
32                       },
33     %FS::part_pkg::flat::usage_fields,
34     'overlimit_action' => { 'name' => 'Action to take upon reaching a usage limit.',
35                             'type' => 'select',
36                             'select_options' => \%overlimit_action,
37                       },
38     #XXX if you set overlimit_action to 'cancel', should also have the ability
39     # to select a reason
40   },
41   'fieldorder' => [ qw( setup_fee recur_fee recur_action ),
42                     @FS::part_pkg::flat::usage_fieldorder, 'overlimit_action',
43                   ],
44   'weight' => 25,
45 );
46
47 sub is_prepaid {
48   1;
49 }
50
51 1;
52