From 31a9c95e5b7125ef666248699fff31f1f8211364 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 7 Jun 2010 02:39:35 +0000 Subject: domain rules based on templates (rules from other domains), RT#7514 --- FS/FS/cgp_rule.pm | 63 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 10 deletions(-) (limited to 'FS/FS/cgp_rule.pm') diff --git a/FS/FS/cgp_rule.pm b/FS/FS/cgp_rule.pm index ad5ab1e..e9c5090 100644 --- a/FS/FS/cgp_rule.pm +++ b/FS/FS/cgp_rule.pm @@ -100,11 +100,12 @@ sub insert { return $error; } - $error = $self->svc_export; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; - } + #conditions and actions not in yet + #$error = $self->svc_export; + #if ( $error ) { + # $dbh->rollback if $oldAutoCommit; + # return $error; + #} $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; @@ -188,11 +189,12 @@ sub replace { return $error; } - $error = $new->svc_export; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; - } + #conditions and actions not in yet + #$error = $new->svc_export; + #if ( $error ) { + # $dbh->rollback if $oldAutoCommit; + # return $error; + #} $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; @@ -246,6 +248,47 @@ sub check { $self->SUPER::check; } +=item clone NEW_SVCNUM + +Clones this rule into an identical rule for the specified new service. + +If there is an error, returns the error, otherwise returns false. + +=cut + +#should return the newly inserted rule instead? used in misc/clone-cgp_rule.html + +#i should probably be transactionalized so i'm all-or-nothing +sub clone { + my( $self, $svcnum ) = @_; + + my $new = $self->new( { $self->hash } ); + $new->rulenum(''); + $new->svcnum( $svcnum ); + my $error = $new->insert; + return $error if $error; + + my @dup = $self->cgp_rule_condition; + push @dup, $self->cgp_rule_action; + + foreach my $dup (@dup) { + my $new_dup = $dup->new( { $dup->hash } ); + my $pk = $new_dup->primary_key; + $new_dup->$pk(''); + $new_dup->rulenum( $new->rulenum ); + + $error = $new_dup->insert; + return $error if $error; + + } + + $error = $new->svc_export; + return $error if $error; + + ''; + +} + =item cust_svc =cut -- cgit v1.1