From 752ed76d717d305b12e32fd2a68b1a253f63008d Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 29 Nov 2009 23:18:07 +0000 Subject: [PATCH] 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 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; } -- 2.11.0