summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2015-05-15 12:22:44 -0700
committerJeremy Davis <jeremyd@freeside.biz>2015-05-26 12:00:00 -0400
commit0ac12ee68b4ca2bffbc994d63d8f7862aeb8c74f (patch)
tree7237d3517f0fc32a190838450c222428c0e2ca9e
parentade4bd03b8525a4711077f94a120712f167d8323 (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 4096344bb..1e922b5c4 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -2699,6 +2699,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"
@@ -2764,6 +2779,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 7d97f3a9a..74d685479 100644
--- a/FS/FS/ClientAPI_XMLRPC.pm
+++ b/FS/FS/ClientAPI_XMLRPC.pm
@@ -155,6 +155,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 7cc7c0325..03a3f04c4 100644
--- a/fs_selfservice/FS-SelfService/SelfService.pm
+++ b/fs_selfservice/FS-SelfService/SelfService.pm
@@ -80,6 +80,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',
@@ -1259,6 +1260,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).