projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add option to set (r)ndc command
[freeside.git]
/
FS
/
FS
/
cust_pkg.pm
diff --git
a/FS/FS/cust_pkg.pm
b/FS/FS/cust_pkg.pm
index
d9a6385
..
ccd73ac
100644
(file)
--- a/
FS/FS/cust_pkg.pm
+++ b/
FS/FS/cust_pkg.pm
@@
-1,7
+1,7
@@
package FS::cust_pkg;
use strict;
package FS::cust_pkg;
use strict;
-use vars qw(@ISA $disable_agentcheck);
+use vars qw(@ISA $disable_agentcheck
@SVCDB_CANCEL_SEQ $DEBUG
);
use FS::UID qw( getotaker dbh );
use FS::Record qw( qsearch qsearchs );
use FS::Misc qw( send_email );
use FS::UID qw( getotaker dbh );
use FS::Record qw( qsearch qsearchs );
use FS::Misc qw( send_email );
@@
-25,8
+25,18
@@
use FS::Conf;
@ISA = qw( FS::Record );
@ISA = qw( FS::Record );
+$DEBUG = 0;
+
$disable_agentcheck = 0;
$disable_agentcheck = 0;
+# The order in which to unprovision services.
+@SVCDB_CANCEL_SEQ = qw( svc_external
+ svc_www
+ svc_forward
+ svc_acct
+ svc_domain
+ svc_broadband );
+
sub _cache {
my $self = shift;
my ( $hashref, $cache ) = @_;
sub _cache {
my $self = shift;
my ( $hashref, $cache ) = @_;
@@
-148,7
+158,7
@@
sub insert {
return $error if $error;
my $cust_main = $self->cust_main;
return $error if $error;
my $cust_main = $self->cust_main;
- return "Unknown cust
omer
". $self->custnum unless $cust_main;
+ return "Unknown cust
num:
". $self->custnum unless $cust_main;
unless ( $disable_agentcheck ) {
my $agent = qsearchs( 'agent', { 'agentnum' => $cust_main->agentnum } );
unless ( $disable_agentcheck ) {
my $agent = qsearchs( 'agent', { 'agentnum' => $cust_main->agentnum } );
@@
-282,16
+292,22
@@
sub cancel {
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
+ my %svc;
foreach my $cust_svc (
foreach my $cust_svc (
- qsearch( 'cust_svc', { 'pkgnum' => $self->pkgnum } )
+
qsearch( 'cust_svc', { 'pkgnum' => $self->pkgnum } )
) {
) {
- my $error = $cust_svc->cancel;
+ push @{ $svc{$cust_svc->part_svc->svcdb} }, $cust_svc;
+ }
- if ( $error ) {
- $dbh->rollback if $oldAutoCommit;
- return "Error cancelling cust_svc: $error";
- }
+ foreach my $svcdb (@SVCDB_CANCEL_SEQ) {
+ foreach my $cust_svc (@{ $svc{$svcdb} }) {
+ my $error = $cust_svc->cancel;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "Error cancelling cust_svc: $error";
+ }
+ }
}
unless ( $self->getfield('cancel') ) {
}
unless ( $self->getfield('cancel') ) {
@@
-614,7
+630,7
@@
sub attribute_since_sqlradacct {
Transfers as many services as possible from this package to another package.
The destination package must already exist. Services are moved only if
Transfers as many services as possible from this package to another package.
The destination package must already exist. Services are moved only if
-the destination allows services with the correct I<svc
num
> (not svcdb).
+the destination allows services with the correct I<svc
part
> (not svcdb).
Any services that can't be moved remain in the original package.
Returns an error, if there is one; otherwise, returns the number of services
Any services that can't be moved remain in the original package.
Returns an error, if there is one; otherwise, returns the number of services
@@
-667,6
+683,9
@@
sub transfer {
=item reexport
=item reexport
+This method is deprecated. See the I<depend_jobnum> option to the insert and
+order_pkgs methods in FS::cust_main for a better way to defer provisioning.
+
=cut
sub reexport {
=cut
sub reexport {
@@
-726,13
+745,16
@@
newly-created cust_pkg objects.
=cut
sub order {
=cut
sub order {
-
- # Rewritten to make use of the transfer() method, and in general
- # to not suck so badly.
-
my ($custnum, $pkgparts, $remove_pkgnum, $return_cust_pkg) = @_;
# Transactionize this whole mess
my ($custnum, $pkgparts, $remove_pkgnum, $return_cust_pkg) = @_;
# Transactionize this whole mess
+ local $SIG{HUP} = 'IGNORE';
+ local $SIG{INT} = 'IGNORE';
+ local $SIG{QUIT} = 'IGNORE';
+ local $SIG{TERM} = 'IGNORE';
+ local $SIG{TSTP} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE';
+
my $oldAutoCommit = $FS::UID::AutoCommit;
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
my $oldAutoCommit = $FS::UID::AutoCommit;
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;