diff options
-rw-r--r-- | FS/FS/Conf.pm | 7 | ||||
-rw-r--r-- | FS/FS/cust_pkg.pm | 12 |
2 files changed, 18 insertions, 1 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index d186d04c2..3aaa66739 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1911,6 +1911,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'cust_pkg-change_pkgpart-bill_now', + 'section' => '', + 'description' => "When changing packages, bill the new package immediately. Useful for prepaid situations with RADIUS where an Expiration attribute base don the package must be present at all times.", + 'type' => 'checkbox', + }, + + { 'key' => 'disable_autoreverse', 'section' => 'BIND', 'description' => 'Disable automatic synchronization of reverse-ARPA entries.', diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index fbd6a13d3..8bbf3765d 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -1207,11 +1207,21 @@ sub change { #Good to go, cancel old package. $error = $self->cancel( quiet=>1 ); if ($error) { - $dbh->rollback; + $dbh->rollback if $oldAutoCommit; return $error; } + if ( $conf->exists('cust_pkg-change_pkgpart-bill_now') ) { + #$self->cust_main + my $error = $cust_pkg->cust_main->bill( 'pkg_list' => [ $cust_pkg ] ); + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + $dbh->commit or die $dbh->errstr if $oldAutoCommit; + $cust_pkg; } |