summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/cust_pkg.pm12
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;
}