svc_pbx devices, for RT#24968
[freeside.git] / FS / FS / Schema.pm
index ebf4f37..0447892 100644 (file)
@@ -3,7 +3,7 @@ package FS::Schema;
 use vars qw(@ISA @EXPORT_OK $DEBUG $setup_hack %dbdef_cache);
 use subs qw(reload_dbdef);
 use Exporter;
-use DBIx::DBSchema 0.43; #0.43 for foreign keys
+use DBIx::DBSchema 0.44; #for foreign keys with MATCH / ON DELETE/UPDATE
 use DBIx::DBSchema::Table;
 use DBIx::DBSchema::Column;
 use DBIx::DBSchema::Index;
@@ -988,7 +988,7 @@ sub tables_hashref {
         'format',  'char', 'NULL', 1, '', '',
         'classnum', 'int', 'NULL', '', '', '',
         'duration', 'int', 'NULL', '',  0, '',
-        'phonenum', 'varchar', 'NULL', 25, '', '',
+        'phonenum', 'varchar', 'NULL', 255, '', '', # has to hold a service label
         'accountcode', 'varchar',  'NULL',      20, '', '',
         'startdate',  @date_type, '', '', 
         'regionname', 'varchar', 'NULL', $char_d, '', '',
@@ -1003,12 +1003,12 @@ sub tables_hashref {
                           { columns    => [ 'billpkgnum' ],
                             table      => 'cust_bill_pkg',
                           },
-                          { columns    => [ 'pkgnum' ],
-                            table      => 'cust_pkg',
-                          },
-                          { columns    => [ 'invnum' ],
-                            table      => 'cust_bill',
-                          },
+                          #{ columns    => [ 'pkgnum' ],
+                          #  table      => 'cust_pkg',
+                          #},
+                          #{ columns    => [ 'invnum' ],
+                          #  table      => 'cust_bill',
+                          #},
                           { columns    => [ 'classnum' ],
                             table      => 'usage_class',
                           },
@@ -1163,7 +1163,7 @@ sub tables_hashref {
         'format',  'char', 'NULL', 1, '', '',
         'classnum', 'int', 'NULL', '', '', '',
         'duration', 'int', 'NULL', '',  0, '',
-        'phonenum', 'varchar', 'NULL', 25, '', '',
+        'phonenum', 'varchar', 'NULL', 255, '', '',
         'accountcode', 'varchar',  'NULL',      20, '', '',
         'startdate',  @date_type, '', '', 
         'regionname', 'varchar', 'NULL', $char_d, '', '',
@@ -1176,12 +1176,12 @@ sub tables_hashref {
                           { columns    => [ 'billpkgnum' ],
                             table      => 'cust_bill_pkg_void',
                           },
-                          { columns    => [ 'pkgnum' ],
-                            table      => 'cust_pkg',
-                          },
-                          { columns    => [ 'invnum' ],
-                            table      => 'cust_bill',
-                          },
+                          #{ columns    => [ 'pkgnum' ],
+                          #  table      => 'cust_pkg',
+                          #},
+                          #{ columns    => [ 'invnum' ],
+                          #  table      => 'cust_bill',
+                          #},
                           { columns    => [ 'classnum' ],
                             table      => 'usage_class',
                           },
@@ -1285,11 +1285,12 @@ sub tables_hashref {
         'commission_agentnum', 'int', 'NULL', '', '', '', #
         'commission_salesnum', 'int', 'NULL', '', '', '', #
         'commission_pkgnum',   'int', 'NULL', '', '', '', #
+        'credbatch',    'varchar', 'NULL', $char_d, '', '',
       ],
       'primary_key'  => 'crednum',
       'unique'       => [],
       'index'        => [ ['custnum'], ['_date'], ['usernum'], ['eventnum'],
-                          ['commission_salesnum'],
+                          ['commission_salesnum'], ['credbatch'],
                         ],
       'foreign_keys' => [
                           { columns    => [ 'custnum' ],
@@ -1672,7 +1673,10 @@ sub tables_hashref {
         'first',     'varchar',     '', $char_d, '', '', 
         'title',     'varchar', 'NULL', $char_d, '', '', #eg Head Bottle Washer
         'comment',   'varchar', 'NULL',     255, '', '', 
-        'disabled',     'char', 'NULL',       1, '', '', 
+        'selfservice_access',    'char', 'NULL',       1, '', '',
+        '_password',          'varchar', 'NULL', $char_d, '', '',
+        '_password_encoding', 'varchar', 'NULL', $char_d, '', '',
+        'disabled',              'char', 'NULL',       1, '', '', 
       ],
       'primary_key'  => 'contactnum',
       'unique'       => [],
@@ -1736,7 +1740,8 @@ sub tables_hashref {
         'emailaddress',   'varchar', '', $char_d, '', '',
       ],
       'primary_key'  => 'contactemailnum',
-      'unique'       => [ [ 'contactnum', 'emailaddress' ], ],
+      #'unique'       => [ [ 'contactnum', 'emailaddress' ], ],
+      'unique'       => [ [ 'emailaddress' ], ],
       'index'        => [],
       'foreign_keys' => [
                           { columns    => [ 'contactnum' ],
@@ -2924,11 +2929,11 @@ sub tables_hashref {
                         ],
     },
 
-   'part_pkg' => {
+    'part_pkg' => {
       'columns' => [
         'pkgpart',       'serial',    '',   '', '', '', 
         'pkg',           'varchar',   '',   $char_d, '', '', 
-        'comment',       'varchar',   '', 2*$char_d, '', '', 
+        'comment',       'varchar', 'NULL', 2*$char_d, '', '', 
         'promo_code',    'varchar', 'NULL', $char_d, '', '', 
         'freq',          'varchar',   '',   $char_d, '', '', #billing frequency
         'setuptax',      'char', 'NULL', 1, '', '', 
@@ -3032,6 +3037,46 @@ sub tables_hashref {
       'index'       => [],
     },
 
+    'part_pkg_usageprice' => {
+      'columns' => [
+        'usagepricepart', 'serial',      '',      '', '', '',
+        'pkgpart',           'int',      '',      '', '', '',
+        'price',          @money_type,                '', '', 
+        'currency',         'char',  'NULL',       3, '', '',
+        'action',        'varchar',      '', $char_d, '', '',
+        'target',        'varchar',      '', $char_d, '', '',
+        'amount',        'varchar',      '', $char_d, '', '',
+      ],
+      'primary_key'  => 'usagepricepart',
+      'unique'       => [ [ 'pkgpart', 'currency', 'target' ] ],
+      'index'        => [ [ 'pkgpart' ] ],
+      'foreign_keys' => [
+                          { columns    => [ 'pkgpart' ],
+                            table      => 'part_pkg',
+                          },
+                        ],
+    },
+
+    'cust_pkg_usageprice' => {
+      'columns' => [
+        'usagepricenum', 'serial',      '',      '', '', '',
+        'pkgnum',           'int',      '',      '', '', '',
+        'usagepricepart',   'int',      '',      '', '', '',
+        'quantity',         'int',      '',      '', '', '',
+      ],
+      'primary_key'  => 'usagepricenum',
+      'unique'       => [ [ 'pkgnum', 'usagepricepart' ] ],
+      'index'        => [ [ 'pkgnum' ] ],
+      'foreign_keys' => [
+                          { columns    => [ 'pkgnum' ],
+                            table      => 'cust_pkg',
+                          },
+                          { columns    => [ 'usagepricepart' ],
+                            table      => 'part_pkg_usageprice',
+                          },
+                        ],
+    },
+
     'part_pkg_link' => {
       'columns' => [
         'pkglinknum',  'serial',   '',      '', '', '',
@@ -3656,8 +3701,8 @@ sub tables_hashref {
         'classname', 'varchar', '', $char_d, '', '',
       ],
       'primary_key' => 'classnum',
-      'unique' => [ ],
-      'index'  => [ ],
+      'unique' => [],
+      'index'  => [],
     },
 
     'hardware_type' => {
@@ -3684,8 +3729,8 @@ sub tables_hashref {
         'disabled',    'char', 'NULL',   1, '', '', 
       ],
       'primary_key' => 'statusnum',
-      'unique' => [ ],
-      'index'  => [ ],
+      'unique' => [],
+      'index'  => [],
     },
 
     'domain_record' => {
@@ -3890,7 +3935,8 @@ sub tables_hashref {
       'index'        => [],
       'foreign_keys' => [
                           { columns    => [ 'svcnum' ],
-                            table      => 'svc_broadband',
+                            table      => 'svc_broadband',#no? could be _acct?
+                                                          #remove or cust_svc?
                           },
                         ],
     },
@@ -3954,6 +4000,7 @@ sub tables_hashref {
       'foreign_keys' => [
                           { columns    => [ 'jobnum' ],
                             table      => 'queue',
+                            on_delete  => 'CASCADE',
                           },
                         ],
     },
@@ -3974,6 +4021,7 @@ sub tables_hashref {
                           { columns    => [ 'depend_jobnum' ],
                             table      => 'queue',
                             references => [ 'jobnum' ],
+                            on_delete  => 'CASCADE',
                           },
                         ],
     },
@@ -4276,6 +4324,18 @@ sub tables_hashref {
                         ],
     },
 
+    'addr_range' => {
+      'columns' => [
+        'rangenum', 'serial', '', '', '', '',
+        'start',    'varchar', '', 15, '', '',
+        'length',   'int', '', '', '', '',
+        'status',   'varchar', 'NULL', 32, '', '',
+      ],
+      'primary_key' => 'rangenum',
+      'unique'      => [],
+      'index'       => [],
+    },
+
     'svc_broadband' => {
       'columns' => [
         'svcnum',                  'int',     '',        '', '', '', 
@@ -5597,6 +5657,64 @@ sub tables_hashref {
                         ],
     },
 
+    'pbx_extension' => {
+      'columns' => [
+        'extensionnum',  'serial',     '',      '', '', '',
+        'svcnum',           'int',     '',      '', '', '',
+        'extension',    'varchar',     '', $char_d, '', '',
+        'pin',          'varchar', 'NULL', $char_d, '', '',
+        'sip_password', 'varchar', 'NULL', $char_d, '', '',
+        'phone_name',   'varchar', 'NULL', $char_d, '', '',
+      ],
+      'primary_key'  => 'extensionnum',
+      'unique'       => [ [ 'svcnum', 'extension' ] ],
+      'index'        => [ [ 'svcnum' ] ],
+      'foreign_keys' => [
+                          { columns    => [ 'svcnum' ],
+                            table      => 'svc_pbx',
+                          },
+                        ],
+    },
+
+    'pbx_device' => {
+      'columns' => [
+        'devicenum', 'serial',     '', '', '', '',
+        'devicepart',   'int',     '', '', '', '',
+        'svcnum',       'int',     '', '', '', '', 
+        'mac_addr', 'varchar', 'NULL', 12, '', '', 
+      ],
+      'primary_key'  => 'devicenum',
+      'unique'       => [ [ 'mac_addr' ], ],
+      'index'        => [ [ 'devicepart' ], [ 'svcnum' ], ],
+      'foreign_keys' => [
+                          { columns    => [ 'devicepart' ],
+                            table      => 'part_device',
+                          },
+                          { columns    => [ 'svcnum' ],
+                            table      => 'svc_pbx',
+                          },
+                        ],
+    },
+
+    'extension_device' => {
+      'columns' => [
+        'extensiondevicenum', 'serial', '', '', '', '',
+        'extensionnum',          'int', '', '', '', '',
+        'devicenum',             'int', '', '', '', '',
+      ],
+      'primary_key'  => 'extensiondevicenum',
+      'unique'       => [ [ 'extensionnum', 'devicenum' ] ],
+      'index'        => [],#both?  which way do we need to query?
+      'foreign_keys' => [
+                          { columns  => [ 'extensionnum' ],
+                            table    => 'pbx_extension',
+                          },
+                          { columns  => [ 'devicenum' ],
+                            table    => 'pbx_device',
+                          },
+                        ],
+    },
+
     'svc_mailinglist' => { #svc_group?
       'columns' => [
         'svcnum',            'int',     '',            '', '', '', 
@@ -5910,21 +6028,82 @@ sub tables_hashref {
     'svc_alarm' => {
       'columns' => [
         'svcnum',          'int',      '',      '', '', '', 
-        'alarm_system', 'varchar',     '', $char_d, '', '', # dropdowns?
-        'alarm_type',   'varchar',     '', $char_d, '', '', #
+        'alarmsystemnum',  'int',      '',      '', '', '',
+        'alarmtypenum',    'int',      '',      '', '', '',
+        'alarmstationnum', 'int',      '',      '', '', '',
         'acctnum',      'varchar',     '', $char_d, '', '',
         '_password',    'varchar',     '', $char_d, '', '',
         'location',     'varchar', 'NULL', $char_d, '', '',
-        #cs
-        #rep
+        #installer (rep)
       ],
       'primary_key'  => 'svcnum',
-      'unique'       => [], #system/type/acctnum??
+      'unique'       => [],
       'index'        => [],
       'foreign_keys' => [
                           { columns    => [ 'svcnum' ],
                             table      => 'cust_svc',
                           },
+                          { columns    => [ 'alarmsystemnum' ],
+                            table      => 'alarm_system',
+                          },
+                          { columns    => [ 'alarmtypenum' ],
+                            table      => 'alarm_type',
+                          },
+                          { columns    => [ 'alarmstationnum' ],
+                            table      => 'alarm_station',
+                          },
+                        ],
+    },
+
+    'alarm_system' => { #vendors
+      'columns' => [
+        'alarmsystemnum',  'serial',     '',      '', '', '',
+        'agentnum',           'int', 'NULL',      '', '', '',
+        'systemname',     'varchar',     '', $char_d, '', '',
+        'disabled',          'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key' => 'alarmsystemnum',
+      'unique'      => [ ['agentnum', 'systemname'] ],
+      'index'       => [ ['agentnum'], ['disabled'] ],
+      'foreign_keys' => [
+                          { columns    => [ 'agentnum' ],
+                            table      => 'agent',
+                          },
+                        ],
+    },
+
+    'alarm_type' => { #inputs and outputs
+      'columns' => [
+        'alarmtypenum', 'serial',     '',      '', '', '',
+        'agentnum',        'int', 'NULL',      '', '', '',
+        'inputs',          'int',     '', '', '', '',
+        'outputs',         'int',     '', '', '', '',
+        'disabled',       'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key' => 'alarmtypenum',
+      'unique'      => [ ['agentnum', 'inputs', 'outputs'] ],
+      'index'       => [ ['agentnum'], ['disabled'] ],
+      'foreign_keys' => [
+                          { columns    => [ 'agentnum' ],
+                            table      => 'agent',
+                          },
+                        ],
+    },
+
+    'alarm_station' => { #central station (where the alarm reports to)
+      'columns' => [
+        'alarmstationnum', 'serial',     '',      '', '', '',
+        'agentnum',           'int', 'NULL',      '', '', '',
+        'stationname',    'varchar',     '', $char_d, '', '',
+        'disabled',          'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key' => 'alarmstationnum',
+      'unique'      => [ ['agentnum', 'stationname'], ],
+      'index'       => [ ['agentnum'], ['disabled'] ],
+      'foreign_keys' => [
+                          { columns    => [ 'agentnum' ],
+                            table      => 'agent',
+                          },
                         ],
     },
 
@@ -5975,6 +6154,78 @@ sub tables_hashref {
       'index'  => [],
     },
 
+    'svc_conferencing' => {
+      'columns' => [
+        'svcnum',            'int',     '',      '', '', '',
+        'conf_id',           'int', 'NULL',      '', '', '', #"system assigned"
+        'conf_name',     'varchar',     '', $char_d, '', '',
+        'conf_password', 'varchar',     '', $char_d, '', '',
+        'access_code',   'varchar',     '',      16, '', '',
+        'duration',          'int',     '',      '', '', '',
+        'participants',      'int',     '',      '', '', '',
+        'conftypenum',       'int',     '',      '', '', '',
+        'confqualitynum',    'int',     '',      '', '', '',
+        'opt_recording',    'char', 'NULL',       1, '', '',
+        'opt_sip',          'char', 'NULL',       1, '', '',
+        'opt_phone',        'char', 'NULL',       1, '', '',
+      ],
+      'primary_key' => 'svcnum',
+      'unique' => [],
+      'index'  => [],
+      'foreign_keys' => [
+                          { columns => [ 'svcnum' ],
+                            table   => 'cust_svc',
+                          },
+                          { columns => [ 'conftypenum' ],
+                            table   => 'conferencing_type',
+                          },
+                          { columns => [ 'confqualitynum' ],
+                            table   => 'conferencing_quality',
+                          },
+                        ],
+    },
+
+    'conferencing_type' => {
+      'columns' => [
+        'conftypenum',  'int',     '',      '', '', '',
+        'typeid'      , 'int',     '',      '', '', '',
+        'typename', 'varchar',     '', $char_d, '', '',
+        'disabled',    'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key' => 'conftypenum',
+      'unique'      => [ [ 'typeid', 'disabled' ], [ 'typename', 'disabled' ] ],
+      'index'       => [],
+    },
+
+    'conferencing_quality' => {
+      'columns' => [
+        'confqualitynum',  'int',     '',      '', '', '',
+        'qualityid'      , 'int',     '',      '', '', '',
+        'qualityname', 'varchar',     '', $char_d, '', '',
+        'disabled',       'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key' => 'confqualitynum',
+      'unique'      => [ [ 'qualityid', 'disabled' ], [ 'qualityname', 'disabled' ] ],
+      'index'       => [],
+    },
+
+    'svc_video' => {
+      'columns' => [
+        'svcnum',            'int', '', '', '', '',
+        'smartcard_num', 'varchar', '', 16, '', '',
+        'mac_addr',      'varchar', '', 12, '', '', 
+        'duration',          'int', '', '', '', '',
+      ],
+      'primary_key' => 'svcnum',
+      'unique' => [], # [ 'smartcard_num' ], [ 'mac_addr' ], ],
+      'index'  => [],
+      'foreign_keys' => [
+                          { columns => [ 'svcnum' ],
+                            table   => 'cust_svc',
+                          },
+                        ],
+    },
+
     'vend_main' => {
       'columns' => [
         'vendnum',   'serial',     '',      '', '', '',