summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2015-05-15 12:22:44 -0700
committerIvan Kohler <ivan@freeside.biz>2015-05-15 12:22:44 -0700
commit39fbd35d58ba6bedd6c8af1f4b0c25a166acf3c3 (patch)
tree7d5502f0a3f2245503f2e216111c0f24e043a47b
parent7898193bb13ad215d1cc95983dbd092fbd2ba799 (diff)
add self-service provision_pbx, RT#34939
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm18
-rw-r--r--FS/FS/ClientAPI_XMLRPC.pm1
-rw-r--r--fs_selfservice/FS-SelfService/SelfService.pm33
3 files changed, 52 insertions, 0 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index c89b7bb3f..a6f8d371d 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -2732,6 +2732,21 @@ sub provision_phone {
{ 'bulkdid' => [ @bulkdid ], 'svc' => $error->{'svc'} }
}
+sub provision_pbx {
+ my $p = shift;
+ warn "provision_pbx called\n"
+ if $DEBUG;
+
+ warn "provision_pbx calling _provision\n"
+ if $DEBUG;
+ _provision( 'FS::svc_pbx',
+ [qw(id title max_extensions max_simultaneous ip_addr)],
+ [qw(id title max_extensions max_simultaneous ip_addr)],
+ $p,
+ @_
+ );
+}
+
sub provision_acct {
my $p = shift;
warn "provision_acct called\n"
@@ -2797,6 +2812,9 @@ sub _provision {
my $part_svc = qsearchs('part_svc', { 'svcpart' => $p->{'svcpart'} } )
or return { 'error' => "unknown svcpart $p->{'svcpart'}" };
+ return { error=> 'svcpart '. $p->{'svcpart'}. " is not a $class definition" }
+ if $class ne 'FS::'. $part_svc->svcdb;
+
warn "creating $class record\n"
if $DEBUG;
my $svc_x = $class->new( {
diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm
index 757f76490..04aee290b 100644
--- a/FS/FS/ClientAPI_XMLRPC.pm
+++ b/FS/FS/ClientAPI_XMLRPC.pm
@@ -156,6 +156,7 @@ sub ss2clientapi {
'part_svc_info' => 'MyAccount/part_svc_info',
'provision_acct' => 'MyAccount/provision_acct',
'provision_phone' => 'MyAccount/provision_phone',
+ 'provision_pbx' => 'MyAccount/provision_pbx',
'provision_external' => 'MyAccount/provision_external',
'unprovision_svc' => 'MyAccount/unprovision_svc',
'myaccount_passwd' => 'MyAccount/myaccount_passwd',
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm
index 939596ecb..acf655b8c 100644
--- a/fs_selfservice/FS-SelfService/SelfService.pm
+++ b/fs_selfservice/FS-SelfService/SelfService.pm
@@ -81,6 +81,7 @@ $socket .= '.'.$tag if defined $tag && length($tag);
'part_svc_info' => 'MyAccount/part_svc_info',
'provision_acct' => 'MyAccount/provision_acct',
'provision_phone' => 'MyAccount/provision_phone',
+ 'provision_pbx' => 'MyAccount/provision_pbx',
'provision_external' => 'MyAccount/provision_external',
'unprovision_svc' => 'MyAccount/unprovision_svc',
'myaccount_passwd' => 'MyAccount/myaccount_passwd',
@@ -1283,6 +1284,38 @@ E911 Address (optional)
=back
+=item provision_pbx
+
+Provisions a customer PBX (svc_pbx).
+
+Takes a hash references as parameter with the following keys:
+
+=over 4
+
+=item session_id
+
+Session identifier
+
+=item pkgnum
+
+pkgnum of package into which this service is provisioned
+
+=item svcpart
+
+svcpart or service definition to provision
+
+=item id
+
+=item title
+
+=item max_extensions
+
+=item max_simultaneous
+
+=item ip_addr
+
+=back
+
=item provision_external
Provisions an external service (svc_external).