summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2009-11-29 23:18:07 +0000
committerivan <ivan>2009-11-29 23:18:07 +0000
commit752ed76d717d305b12e32fd2a68b1a253f63008d (patch)
tree909f2e3ae5dad184b9af237f3175cfc1ea738bd8
parentfd11a150a5cf7b060dfb647fcab9a1565ebed541 (diff)
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
-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;
}