add self-service provision_pbx, RT#34939
authorIvan Kohler <ivan@freeside.biz>
Fri, 15 May 2015 19:22:44 +0000 (12:22 -0700)
committerIvan Kohler <ivan@freeside.biz>
Fri, 15 May 2015 19:22:44 +0000 (12:22 -0700)
FS/FS/ClientAPI/MyAccount.pm
FS/FS/ClientAPI_XMLRPC.pm
fs_selfservice/FS-SelfService/SelfService.pm

index c89b7bb..a6f8d37 100644 (file)
@@ -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( {
index 757f764..04aee29 100644 (file)
@@ -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',
index 939596e..acf655b 100644 (file)
@@ -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).