From 5ea4ab534ffc97be4f7bd3cb6371ab930a30cbdc Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 29 Nov 2009 23:18:09 +0000 Subject: add cust_pkg-change_pkgpart-bill_now option to bill the new package immediately on package changes. Useful for prepaid situations with RADIUS where an Expiration attribute base don the package must be present at all times. RT#6692 --- FS/FS/Conf.pm | 7 +++++++ FS/FS/cust_pkg.pm | 12 +++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 96a7a664e..f3c1cb92f 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1892,6 +1892,13 @@ worry that config_items is freeside-specific and icky. 'type' => 'checkbox', }, + { + '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', diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index e195ed87d..58cca6d53 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; } -- cgit v1.2.1