},
'seconds' => { 'name' => 'Time limit for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
},
'upbytes' => { 'name' => 'Upload limit for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
'format' => \&FS::UI::bytecount::display_bytecount,
'parse' => \&FS::UI::bytecount::parse_bytecount,
},
'downbytes' => { 'name' => 'Download limit for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
'format' => \&FS::UI::bytecount::display_bytecount,
'parse' => \&FS::UI::bytecount::parse_bytecount,
},
'totalbytes' => { 'name' => 'Transfer limit for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
'format' => \&FS::UI::bytecount::display_bytecount,
'parse' => \&FS::UI::bytecount::parse_bytecount,
},
'recharge_amount' => { 'name' => 'Cost of recharge for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*(\.\d{2})?$/ },
},
'recharge_seconds' => { 'name' => 'Recharge time for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
},
'recharge_upbytes' => { 'name' => 'Recharge upload for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
'format' => \&FS::UI::bytecount::display_bytecount,
'parse' => \&FS::UI::bytecount::parse_bytecount,
},
'recharge_downbytes' => { 'name' => 'Recharge download for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
'format' => \&FS::UI::bytecount::display_bytecount,
'parse' => \&FS::UI::bytecount::parse_bytecount,
},
'recharge_totalbytes' => { 'name' => 'Recharge transfer for this package',
'default' => '',
+ 'check' => sub { shift =~ /^\d*$/ },
'format' => \&FS::UI::bytecount::display_bytecount,
'parse' => \&FS::UI::bytecount::parse_bytecount,
},
+ 'usage_rollover' => { 'name' => 'Allow usage from previous period to roll '.
+ ' over into current period',
+ 'type' => 'checkbox',
+ },
+ 'recharge_reset' => { 'name' => 'Reset usage to these values on manual '.
+ 'package recharge',
+ 'type' => 'checkbox',
+ },
},
'fieldorder' => [ 'setup_fee', 'recur_fee', 'unused_credit',
'seconds', 'upbytes', 'downbytes', 'totalbytes',
'recharge_amount', 'recharge_seconds', 'recharge_upbytes',
'recharge_downbytes', 'recharge_totalbytes',
- 'externalid' ],
+ 'usage_rollover', 'recharge_reset', 'externalid' ],
'weight' => 10,
);
my %values = map { $_, $self->option($_) }
grep { $self->option($_, 'hush') }
qw(seconds upbytes downbytes totalbytes);
- $cust_pkg->set_usage(\%values);
+ if ($self->option('usage_rollover', 1)) {
+ $cust_pkg->recharge(\%values);
+ }else{
+ $cust_pkg->set_usage(\%values);
+ }
}
1;