fix mysql upgrade for lat/lon stuff, RT#15539
[freeside.git] / FS / FS / Schema.pm
index 9733e85..321065f 100644 (file)
@@ -3,9 +3,9 @@ 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.33;
+use DBIx::DBSchema 0.40; #0.40 for mysql upgrade fixes
 use DBIx::DBSchema::Table;
-use DBIx::DBSchema::Column 0.06;
+use DBIx::DBSchema::Column;
 use DBIx::DBSchema::Index;
 
 @ISA = qw(Exporter);
@@ -532,6 +532,7 @@ sub tables_hashref {
         'closed',      'char', 'NULL',  1, '', '', #not yet used much
         'statementnum', 'int', 'NULL', '', '', '', #invoice aggregate statements
         'agent_invid',  'int', 'NULL', '', '', '', #(varchar?) importing legacy
+        'promised_date', @date_type,       '', '',
       ],
       'primary_key' => 'invnum',
       'unique' => [ [ 'custnum', 'agent_invid' ] ], #agentnum?  huh
@@ -549,10 +550,11 @@ sub tables_hashref {
         'charged',    @money_type,                  '', '', 
         'content_pdf',     'blob', 'NULL',      '', '', '',
         'content_html',    'text', 'NULL',      '', '', '',
+        'locale',       'varchar', 'NULL',      16, '', '', 
       ],
       'primary_key' => 'legacyinvnum',
       'unique' => [],
-      'index'  => [ ['legacyid', 'custnum'], ],
+      'index'  => [ ['legacyid', 'custnum', 'locale' ], ],
     },
 
     'cust_statement' => {
@@ -853,6 +855,9 @@ sub tables_hashref {
         'state',    'varchar', 'NULL', $char_d, '', '', 
         'zip',      'varchar', 'NULL', 10, '', '', 
         'country',  'char', '',     2, '', '', 
+        'latitude', 'decimal', 'NULL', '10,7', '', '', 
+        'longitude','decimal', 'NULL', '10,7', '', '', 
+        'coord_auto',  'char', 'NULL',  1, '', '',
         'daytime',  'varchar', 'NULL', 20, '', '', 
         'night',    'varchar', 'NULL', 20, '', '', 
         'fax',      'varchar', 'NULL', 12, '', '', 
@@ -868,6 +873,9 @@ sub tables_hashref {
         'ship_state',    'varchar', 'NULL', $char_d, '', '', 
         'ship_zip',      'varchar', 'NULL', 10, '', '', 
         'ship_country',  'char', 'NULL', 2, '', '', 
+        'ship_latitude', 'decimal', 'NULL', '10,7', '', '', 
+        'ship_longitude','decimal', 'NULL', '10,7', '', '', 
+        'ship_coord_auto',  'char', 'NULL',  1, '', '',
         'ship_daytime',  'varchar', 'NULL', 20, '', '', 
         'ship_night',    'varchar', 'NULL', 20, '', '', 
         'ship_fax',      'varchar', 'NULL', 12, '', '', 
@@ -895,7 +903,7 @@ sub tables_hashref {
         'comments', 'text', 'NULL', '', '', '', 
         'spool_cdr','char', 'NULL', 1, '', '', 
         'squelch_cdr','char', 'NULL', 1, '', '', 
-        'cdr_termination_percentage', 'decimal', 'NULL', '', '', '',
+        'cdr_termination_percentage', 'decimal', 'NULL', '7,4', '', '',
         'invoice_terms', 'varchar', 'NULL', $char_d, '', '',
         'credit_limit', @money_typen, '', '',
         'archived', 'char', 'NULL', 1, '', '',
@@ -1040,6 +1048,9 @@ sub tables_hashref {
         'county',          'varchar', 'NULL', $char_d, '', '', 
         'state',           'varchar', 'NULL', $char_d, '', '', 
         'zip',             'varchar', 'NULL',      10, '', '', 
+        'latitude',        'decimal', 'NULL',  '10,7', '', '', 
+        'longitude',       'decimal', 'NULL',  '10,7', '', '', 
+        'coord_auto',         'char', 'NULL',       1, '', '',
         'country',            'char',     '',       2, '', '', 
         'geocode',         'varchar', 'NULL',      20, '', '',
         'location_type',   'varchar', 'NULL',      20, '', '',
@@ -1533,14 +1544,14 @@ sub tables_hashref {
 
     'cust_pkg_discount' => {
       'columns' => [
-        'pkgdiscountnum', 'serial', '',     '', '', '',
-        'pkgnum',            'int', '',     '', '', '', 
-        'discountnum',       'int', '',     '', '', '',
-        'months_used',   'decimal', 'NULL', '', '', '',
-        'end_date',     @date_type,             '', '',
-        'otaker',        'varchar', 'NULL', 32, '', '', 
-        'usernum',           'int', 'NULL', '', '', '',
-        'disabled',         'char', 'NULL',  1, '', '', 
+        'pkgdiscountnum', 'serial', '',        '', '', '',
+        'pkgnum',            'int', '',        '', '', '', 
+        'discountnum',       'int', '',        '', '', '',
+        'months_used',   'decimal', 'NULL', '7,4', '', '',
+        'end_date',     @date_type,                '', '',
+        'otaker',        'varchar', 'NULL',    32, '', '', 
+        'usernum',           'int', 'NULL',    '', '', '',
+        'disabled',         'char', 'NULL',     1, '', '', 
       ],
       'primary_key' => 'pkgdiscountnum',
       'unique' => [],
@@ -1549,11 +1560,11 @@ sub tables_hashref {
 
     'cust_bill_pkg_discount' => {
       'columns' => [
-        'billpkgdiscountnum', 'serial',     '', '', '', '',
-        'billpkgnum',            'int',     '', '', '', '', 
-        'pkgdiscountnum',        'int',     '', '', '', '', 
-        'amount',          @money_type,             '', '', 
-        'months',            'decimal', 'NULL', '', '', '',
+        'billpkgdiscountnum', 'serial',        '', '', '', '',
+        'billpkgnum',            'int',        '', '', '', '', 
+        'pkgdiscountnum',        'int',        '', '', '', '', 
+        'amount',          @money_type,                '', '', 
+        'months',            'decimal', 'NULL', '7,4', '', '',
       ],
       'primary_key' => 'billpkgdiscountnum',
       'unique' => [],
@@ -1566,8 +1577,8 @@ sub tables_hashref {
         #'agentnum',       'int', 'NULL',      '', '', '', 
         'name',       'varchar', 'NULL', $char_d, '', '',
         'amount',   @money_type,                  '', '', 
-        'percent',    'decimal',     '',      '', '', '',
-        'months',     'decimal', 'NULL',      '', '', '',
+        'percent',    'decimal',     '',   '7,4', '', '',
+        'months',     'decimal', 'NULL',   '7,4', '', '',
         'disabled',      'char', 'NULL',       1, '', '', 
         'setup',      'char', 'NULL',       1, '', '', 
       ],
@@ -2011,31 +2022,32 @@ sub tables_hashref {
     
     'svc_dsl' => {
       'columns' => [
-        'svcnum',           'int',    '',        '', '', '',
-       'pushed',     'int', 'NULL',       '', '', '',
-       'desired_due_date',     'int', 'NULL',       '', '', '',
-       'due_date',     'int', 'NULL',       '', '', '',
-        'vendor_order_id',              'varchar', 'NULL', $char_d,  '', '',
-        'vendor_qual_id',              'varchar', 'NULL', $char_d,  '', '',
-        'vendor_order_type',   'varchar', 'NULL', $char_d,  '', '',
+        'svcnum',                    'int',    '',        '', '', '',
+        'pushed',                    'int', 'NULL',       '', '', '',
+        'desired_due_date',          'int', 'NULL',       '', '', '',
+        'due_date',                  'int', 'NULL',       '', '', '',
+        'vendor_order_id',       'varchar', 'NULL', $char_d,  '', '',
+        'vendor_qual_id',        'varchar', 'NULL', $char_d,  '', '',
+        'vendor_order_type',     'varchar', 'NULL', $char_d,  '', '',
         'vendor_order_status',   'varchar', 'NULL', $char_d,  '', '',
-        'first',              'varchar', 'NULL', $char_d,  '', '',
-        'last',              'varchar', 'NULL', $char_d,  '', '',
-        'company',              'varchar', 'NULL', $char_d,  '', '',
-       'phonenum',     'varchar', 'NULL',       24, '', '',
-        'loop_type',   'char', 'NULL',       1,  '', '', 
-        'local_voice_provider', 'varchar', 'NULL', $char_d,  '', '',
-        'circuitnum',              'varchar', 'NULL', $char_d,  '', '',
-        'rate_band',              'varchar', 'NULL', $char_d,  '', '',
-       'vpi',     'int', 'NULL',       '', '', '',
-       'vci',     'int', 'NULL',       '', '', '',
-        'isp_chg',   'char', 'NULL',       1,  '', '', 
-        'isp_prev',              'varchar', 'NULL', $char_d,  '', '',
-        'username',              'varchar', 'NULL', $char_d,  '', '',
-        'password',              'varchar', 'NULL', $char_d,  '', '',
-        'staticips',             'text', 'NULL', '',  '', '',
-        'monitored',           'char', 'NULL',       1,  '', '', 
-       'last_pull',     'int', 'NULL',       '', '', '',
+        'first',                 'varchar', 'NULL', $char_d,  '', '',
+        'last',                  'varchar', 'NULL', $char_d,  '', '',
+        'company',               'varchar', 'NULL', $char_d,  '', '',
+        'phonenum',              'varchar', 'NULL',      24, '', '',
+        'gateway_access_number', 'varchar', 'NULL',      24, '', '',
+        'loop_type',                'char', 'NULL',       1, '', '', 
+        'local_voice_provider',  'varchar', 'NULL', $char_d, '', '',
+        'circuitnum',            'varchar', 'NULL', $char_d, '', '',
+        'rate_band',             'varchar', 'NULL', $char_d, '', '',
+        'vpi',                       'int', 'NULL',      '', '', '',
+        'vci',                       'int', 'NULL',      '', '', '',
+        'isp_chg',                  'char', 'NULL',       1, '', '', 
+        'isp_prev',              'varchar', 'NULL', $char_d, '', '',
+        'username',              'varchar', 'NULL', $char_d, '', '',
+        'password',              'varchar', 'NULL', $char_d, '', '',
+        'staticips',                'text', 'NULL',      '', '', '',
+        'monitored',                'char', 'NULL',       1, '', '', 
+        'last_pull',                 'int', 'NULL',      '', '', '',
       ],
       'primary_key' => 'svcnum',
       'unique' => [ ],
@@ -2392,12 +2404,27 @@ sub tables_hashref {
         'groupnum', 'serial', '', '', '', '', 
         'groupname',    'varchar', '', $char_d, '', '', 
         'description',  'varchar', 'NULL', $char_d, '', '', 
+        'priority', 'int', '', '', '1', '',
       ],
       'primary_key' => 'groupnum',
       'unique'      => [ ['groupname'] ],
       'index'       => [],
     },
 
+    'radius_attr' => {
+      'columns' => [
+        'attrnum',   'serial', '', '', '', '',
+        'groupnum',     'int', '', '', '', '',
+        'attrname', 'varchar', '', $char_d, '', '',
+        'value',    'varchar', '', $char_d, '', '',
+        'attrtype',    'char', '', 1, '', '',
+        'op',          'char', '', 2, '', '',
+      ],
+      'primary_key' => 'attrnum',
+      'unique'      => [ ['groupnum','attrname'] ], #?
+      'index'       => [],
+    },
+
     'msgcat' => {
       'columns' => [
         'msgnum', 'serial', '', '', '', '', 
@@ -2483,26 +2510,51 @@ sub tables_hashref {
 
     'svc_broadband' => {
       'columns' => [
-        'svcnum', 'int', '', '', '', '', 
-        'description', 'varchar', 'NULL', $char_d, '', '', 
-        'blocknum', 'int', 'NULL', '', '', '', 
-        'speed_up', 'int', '', '', '', '', 
-        'speed_down', 'int', '', '', '', '', 
-        'ip_addr', 'varchar', 'NULL', 15, '', '', 
-        'mac_addr', 'varchar', 'NULL', 12, '', '', 
-        'authkey',  'varchar', 'NULL', 32, '', '', 
-        'latitude', 'decimal', 'NULL', '', '', '', 
-        'longitude', 'decimal', 'NULL', '', '', '', 
-        'altitude', 'decimal', 'NULL', '', '', '', 
-        'vlan_profile', 'varchar', 'NULL', $char_d, '', '', 
+        'svcnum',                  'int',     '',      '', '', '', 
+        'description',         'varchar', 'NULL', $char_d, '', '', 
+        'blocknum',                'int', 'NULL',      '', '', '', 
+        'sectornum',               'int', 'NULL',      '', '', '',
+        'speed_up',                'int', 'NULL',      '', '', '', 
+        'speed_down',              'int', 'NULL',      '', '', '', 
+        'ip_addr',             'varchar', 'NULL',      15, '', '', 
+        'mac_addr',            'varchar', 'NULL',      12, '', '', 
+        'authkey',             'varchar', 'NULL',      32, '', '', 
+        'latitude',            'decimal', 'NULL',  '10,7', '', '', 
+        'longitude',           'decimal', 'NULL',  '10,7', '', '', 
+        'altitude',            'decimal', 'NULL',      '', '', '', 
+        'vlan_profile',        'varchar', 'NULL', $char_d, '', '', 
         'performance_profile', 'varchar', 'NULL', $char_d, '', '',
-        'plan_id', 'varchar', 'NULL', $char_d, '', '',
+        'plan_id',             'varchar', 'NULL', $char_d, '', '',
       ],
       'primary_key' => 'svcnum',
       'unique'      => [ [ 'mac_addr' ] ],
       'index'       => [],
     },
 
+    'tower' => {
+      'columns' => [
+        'towernum',   'serial',     '',      '', '', '',
+        #'agentnum',      'int', 'NULL',      '', '', '',
+        'towername', 'varchar',     '', $char_d, '', '',
+        'disabled',     'char', 'NULL',       1, '', '',
+      ],
+      'primary_key' => 'towernum',
+      'unique'      => [ [ 'towername' ] ], # , 'agentnum' ] ],
+      'index'       => [],
+    },
+
+    'tower_sector' => {
+      'columns' => [
+        'sectornum',   'serial',     '',      '', '', '',
+        'towernum',       'int',     '',      '', '', '',
+        'sectorname', 'varchar',     '', $char_d, '', '',
+        'ip_addr',    'varchar', 'NULL',      15, '', '',
+      ],
+      'primary_key' => 'sectornum',
+      'unique'      => [ [ 'towernum', 'sectorname' ], [ 'ip_addr' ], ],
+      'index'       => [ [ 'towernum' ] ],
+    },
+
     'part_virtual_field' => {
       'columns' => [
         'vfieldpart', 'serial', '', '', '', '', 
@@ -2619,19 +2671,19 @@ sub tables_hashref {
 
     'rate_detail' => {
       'columns' => [
-        'ratedetailnum',   'serial',  '',     '', '', '', 
-        'ratenum',         'int',     '',     '', '', '', 
-        'orig_regionnum',  'int', 'NULL',     '', '', '', 
-        'dest_regionnum',  'int',     '',     '', '', '', 
-        'min_included',    'int',     '',     '', '', '', 
-        'conn_charge',     'decimal', '', '10,4', '0', '',
-        'conn_sec',        'int',     '',     '', '0', '',
-        'min_charge',      'decimal', '', '10,5', '', '', #@money_type, '', '', 
-        'sec_granularity', 'int',     '',     '', '', '', 
-        'ratetimenum',     'int', 'NULL',     '', '', '',
-        'classnum',        'int', 'NULL',     '', '', '', 
-        'cdrtypenum',      'int', 'NULL',     '', '', '',
-        'region_group', 'char', 'NULL',       1, '', '', 
+        'ratedetailnum',   'serial',  '',     '',      '', '', 
+        'ratenum',         'int',     '',     '',      '', '', 
+        'orig_regionnum',  'int', 'NULL',     '',      '', '', 
+        'dest_regionnum',  'int',     '',     '',      '', '', 
+        'min_included',    'int',     '',     '',      '', '', 
+        'conn_charge',     'decimal', '', '10,4', '0.0000', '',
+        'conn_sec',        'int',     '',     '',      '0', '',
+        'min_charge',      'decimal', '', '10,5',       '', '',
+        'sec_granularity', 'int',     '',     '',       '', '', 
+        'ratetimenum',     'int', 'NULL',     '',       '', '',
+        'classnum',        'int', 'NULL',     '',       '', '', 
+        'cdrtypenum',      'int', 'NULL',     '',       '', '',
+        'region_group', 'char', 'NULL',        1,       '', '', 
       ],
       'primary_key' => 'ratedetailnum',
       'unique'      => [ [ 'ratenum', 'orig_regionnum', 'dest_regionnum' ] ],
@@ -2686,6 +2738,30 @@ sub tables_hashref {
       'index'       => [],
     },
 
+    #not really part of the above rate_ stuff (used with flat rate rather than
+    # rated billing), but could be eventually, and its a rate
+    'rate_tier' => {
+      'columns' => [
+        'tiernum',   'serial', '',      '', '', '',
+        'tiername', 'varchar', '', $char_d, '', '',
+      ],
+      'primary_key' => 'tiernum',
+      'unique'      => [ [ 'tiername'], ],
+      'index'       => [],
+    },
+
+    'rate_tier_detail' => {
+      'columns' => [
+        'tierdetailnum', 'serial', '',     '', '', '',
+        'tiernum',          'int', '',     '', '', '',
+        'min_quan',         'int', '',     '', '', '',
+        'min_charge',   'decimal', '', '10,4', '', '',
+      ],
+      'primary_key' => 'tierdetailnum',
+      'unique'      => [],
+      'index'       => [ ['tiernum'], ],
+    },
+
     'usage_class' => {
       'columns' => [
         'classnum',    'serial',      '',      '', '', '', 
@@ -2873,24 +2949,17 @@ sub tables_hashref {
         'max_callers', 'int',  'NULL',      '',    '', '',
 
         ###
-        # fields for unitel/RSLCOM/convergent that don't map well to asterisk
-        # defaults
-        # though these are now used elsewhere:
+        # old fields for unitel/RSLCOM/convergent that don't map to asterisk
+        # ones we adoped moved to "own fields" section below
         # charged_party, upstream_price, rated_price, carrierid, cdrtypenum
         ###
 
-        #cdr_type: Usage = 1, S&E = 7, OC&C = 8
-        'cdrtypenum',              'int', 'NULL',      '', '', '',
-
-        'charged_party',       'varchar', 'NULL', $char_d, '', '',
-
         'upstream_currency',      'char', 'NULL',       3, '', '',
         'upstream_price',      'decimal', 'NULL',  '10,4', '', '', 
         'upstream_rateplanid',     'int', 'NULL',      '', '', '', #?
 
         # how it was rated internally...
         'ratedetailnum',           'int', 'NULL',      '', '', '',
-        'rated_price',         'decimal', 'NULL',  '10,4', '', '',
 
         'distance',            'decimal', 'NULL',      '', '', '',
         'islocal',                 'int', 'NULL',      '', '', '', # '',  '', 0, '' instead?
@@ -2901,16 +2970,24 @@ sub tables_hashref {
         'description',         'varchar', 'NULL', $char_d, '', '',
         'quantity',                'int', 'NULL',      '', '', '', 
 
-        #cdr_carrier: Telstra =1, Optus = 2, RSL COM = 3
-        'carrierid',               'int', 'NULL',      '', '', '',
-
         'upstream_rateid',         'int', 'NULL',      '', '', '',
         
         ###
         #and now for our own fields
         ###
 
-        # a svcnum... right..?
+        'cdrtypenum',              'int', 'NULL',      '', '', '',
+
+        'charged_party',       'varchar', 'NULL', $char_d, '', '',
+
+        # how it was rated internally...
+        'rated_price',         'decimal', 'NULL',  '10,4', '', '',
+        'rated_seconds',           'int', 'NULL',      '', '', '',
+        'rated_minutes', 'double precision', 'NULL',   '', '', '',
+
+        'carrierid',               'int', 'NULL',      '', '', '',
+
+        # service it was matched to
         'svcnum',             'int',   'NULL',     '',   '', '', 
 
         #NULL, done (or something)
@@ -2961,6 +3038,8 @@ sub tables_hashref {
         'acctid',        'bigint',     '',      '', '', '', 
         'termpart',         'int',     '',      '', '', '',#future use see below
         'rated_price',  'decimal', 'NULL',  '10,4', '', '',
+        'rated_seconds',    'int', 'NULL',      '', '', '',
+        'rated_minutes', 'double precision', 'NULL',   '', '', '',
         'status',       'varchar', 'NULL',      32, '', '',
         'svcnum',           'int', 'NULL',      '', '', '',
       ],