add part_referral external ID for API signups, #39776
[freeside.git] / FS / FS / Schema.pm
index 40c61bb..2acbe3d 100644 (file)
@@ -189,15 +189,14 @@ sub dbdef_dist {
 
   my $tables_hashref_torrus = tables_hashref_torrus();
 
-  #create history tables (false laziness w/create-history-tables)
+  #create history tables
   foreach my $table (
-    grep {    ! /^clientapi_session/
+    grep {    ! /^(clientapi|access_user)_session/
            && ! /^h_/
            && ! /^log(_context)?$/
-           && ! /^legacy_cust_history$/
+           && ! /^(legacy_cust_history|cacti_page|access_user_log)$/
            && ( ! /^queue(_arg|_depend|_stat)?$/ || ! $opt->{'queue-no_history'} )
            && ! $tables_hashref_torrus->{$_}
-           && ! /^cacti_page$/
          }
       $dbdef->tables
   ) {
@@ -772,12 +771,13 @@ sub tables_hashref {
         '_date',     @date_type, '', '', 
         'status', 'varchar', '', $char_d, '', '', 
         'statustext', 'text', 'NULL', '', '', '', 
+        'no_action',  'char', 'NULL',  1, '', '',
       ],
       'primary_key' => 'eventnum',
       #no... there are retries now #'unique' => [ [ 'eventpart', 'invnum' ] ],
       'unique' => [],
       'index' => [ ['eventpart'], ['tablenum'], ['status'],
-                   ['statustext'], ['_date'],
+                   ['statustext'], ['_date'], ['no_action'],
                  ],
     },
 
@@ -1178,6 +1178,7 @@ sub tables_hashref {
         'ship_mobile',   'varchar', 'NULL', 12, '', '', 
         'payby',    'char', '',     4, '', '', 
         'payinfo',  'varchar', 'NULL', 512, '', '', 
+        'paycardtype', 'varchar', 'NULL',   $char_d, '', '',
         'paycvv',   'varchar', 'NULL', 512, '', '', 
         'paymask', 'varchar', 'NULL', $char_d, '', '', 
         #'paydate',  @date_type, '', '', 
@@ -1356,6 +1357,8 @@ sub tables_hashref {
         '_date',        @date_type,             '', '', 
         'disabled',         'char', 'NULL',  1, '', '', 
         'usernum',           'int', 'NULL', '', '', '',
+        'close_date',   @date_type,             '', '', 
+        'confidence',        'int', 'NULL', '', '', '',
         #'total',      @money_type,       '', '', 
         #'quotation_term', 'varchar', 'NULL', $char_d, '', '',
       ],
@@ -1383,6 +1386,25 @@ sub tables_hashref {
       'index' => [ ['pkgpart'], ],
     },
 
+    'quotation_pkg_detail' => {
+      'columns' => [
+        'detailnum', 'serial', '', '', '', '', 
+        'quotationpkgnum', 'int', '', '', '', '',
+        'format',  'char', 'NULL', 1, '', '',       # not used for anything
+        'detail',  'varchar', '', 255, '', '',
+        'copy_on_order',        'char', 'NULL',  1, '', '', # 'Y' to copy when ordering
+      ],
+      'primary_key'  => 'detailnum',
+      'unique'       => [],
+      'index'        => [ [ 'quotationpkgnum' ] ],
+      'foreign_keys' => [
+                          { columns    => [ 'quotationpkgnum' ],
+                            table      => 'quotation_pkg',
+                            references => [ 'quotationpkgnum' ],
+                          },
+                        ],
+    },
+
     'quotation_pkg_discount' => {
       'columns' => [
         'quotationpkgdiscountnum', 'serial', '', '', '', '',
@@ -1593,6 +1615,7 @@ sub tables_hashref {
         'taxname',  'varchar',  'NULL',    $char_d, '', '', 
         'setuptax',  'char', 'NULL', 1, '', '', # Y = setup tax exempt
         'recurtax',  'char', 'NULL', 1, '', '', # Y = recur tax exempt
+        'source',   'varchar', 'NULL', $char_d, '', '',
       ],
       'primary_key' => 'taxnum',
       'unique' => [],
@@ -1690,7 +1713,7 @@ sub tables_hashref {
     'cust_pay_pending' => {
       'columns' => [
         'paypendingnum','serial',      '',  '', '', '',
-        'custnum',      'int',         '',  '', '', '', 
+        'custnum',      'int',     'NULL',  '', '', '', 
         'paid',         @money_type,            '', '', 
         '_date',        @date_type,             '', '', 
         'payby',        'char',        '',   4, '', '', #CARD/BILL/COMP, should
@@ -1733,12 +1756,14 @@ sub tables_hashref {
                                                  # index into payby table
                                                  # eventually
         'payinfo',  'varchar',   'NULL', 512, '', '', #see cust_main above
+        'paycardtype',    'varchar', 'NULL',   $char_d, '', '',
         'paymask', 'varchar', 'NULL', $char_d, '', '', 
         'paydate',  'varchar', 'NULL', 10, '', '', 
         'paybatch', 'varchar',   'NULL', $char_d, '', '', #for auditing purposes.
         'payunique', 'varchar', 'NULL', $char_d, '', '', #separate paybatch "unique" functions from current usage
         'closed',    'char', 'NULL', 1, '', '', 
         'pkgnum', 'int', 'NULL', '', '', '', #desired pkgnum for pkg-balances
+        'no_auto_apply',  'char', 'NULL',       1, '', '', 
         # cash/check deposit info fields
         'bank',       'varchar', 'NULL', $char_d, '', '',
         'depositor',  'varchar', 'NULL', $char_d, '', '',
@@ -1751,7 +1776,7 @@ sub tables_hashref {
         'gatewaynum',     'int', 'NULL', '', '', '', # payment_gateway FK
         'processor',  'varchar', 'NULL', $char_d, '', '', # module name
         'auth',       'varchar','NULL',16, '', '', # CC auth number
-        'order_number','varchar','NULL',$char_d, '', '', # transaction number
+        'order_number','varchar','NULL',256, '', '', # transaction number
       ],
       'primary_key' => 'paynum',
       #i guess not now, with cust_pay_pending, if we actually make it here, we _do_ want to record it# 'unique' => [ [ 'payunique' ] ],
@@ -1770,7 +1795,8 @@ sub tables_hashref {
                                                   # index into payby table
                                                   # eventually
         'payinfo',   'varchar',   'NULL', 512, '', '', #see cust_main above
-       'paymask', 'varchar', 'NULL', $char_d, '', '', 
+        'paycardtype',    'varchar', 'NULL',   $char_d, '', '',
+        'paymask', 'varchar', 'NULL', $char_d, '', '', 
         #'paydate' ?
         'paybatch',  'varchar',   'NULL', $char_d, '', '', #for auditing purposes.
         'closed',    'char', 'NULL', 1, '', '', 
@@ -1786,7 +1812,7 @@ sub tables_hashref {
         'gatewaynum',     'int', 'NULL', '', '', '', # payment_gateway FK
         'processor',  'varchar', 'NULL', $char_d, '', '', # module name
         'auth',       'varchar','NULL',16, '', '', # CC auth number
-        'order_number', 'varchar','NULL',$char_d, '', '', # transaction number
+        'order_number', 'varchar','NULL',256, '', '', # transaction number
 
         #void fields
         'void_date', @date_type, '', '', 
@@ -2115,14 +2141,17 @@ sub tables_hashref {
         'refund',       @money_type, '', '', 
         'otaker',       'varchar',   'NULL',   32, '', '', 
         'usernum',   'int', 'NULL', '', '', '',
-        'reason',       'varchar',   '',   $char_d, '', '', 
+        'reason',       'varchar',   'NULL',   $char_d, '', '', 
+        'reasonnum',   'int', 'NULL', '', '', '',
         'payby',        'char',   '',     4, '', '', # CARD/BILL/COMP, should
                                                      # be index into payby
                                                      # table eventually
         'payinfo',      'varchar',   'NULL', 512, '', '', #see cust_main above
-       'paymask', 'varchar', 'NULL', $char_d, '', '', 
+        'paycardtype',  'varchar', 'NULL',   $char_d, '', '',
+        'paymask', 'varchar', 'NULL', $char_d, '', '', 
         'paybatch',     'varchar',   'NULL', $char_d, '', '', 
         'closed',    'char', 'NULL', 1, '', '', 
+        'source_paynum', 'int', 'NULL', '', '', '', # link to cust_payby, to prevent unapply of gateway-generated refunds
         # credit card/EFT fields (formerly in paybatch)
         'gatewaynum',     'int', 'NULL', '', '', '', # payment_gateway FK
         'processor',  'varchar', 'NULL', $char_d, '', '', # module name
@@ -2404,6 +2433,7 @@ sub tables_hashref {
         'quantity',   'int',    '',   '', '', '', 
         'primary_svc','char', 'NULL',  1, '', '', 
         'hidden',     'char', 'NULL',  1, '', '',
+        'provision_hold', 'char', 'NULL', 1, '', '',
       ],
       'primary_key' => 'pkgsvcnum',
       'unique' => [ ['pkgpart', 'svcpart'] ],
@@ -2415,11 +2445,12 @@ sub tables_hashref {
         'refnum',   'serial',     '',        '', '', '', 
         'referral', 'varchar',    '',   $char_d, '', '', 
         'disabled', 'char',   'NULL',         1, '', '', 
-        'agentnum', 'int',    'NULL',        '', '', '', 
+        'agentnum', 'int',    'NULL',        '', '', '',
+        'title',   'varchar', 'NULL',   $char_d, '', '', 
       ],
-      'primary_key' => 'refnum',
-      'unique' => [],
-      'index' => [ ['disabled'], ['agentnum'], ],
+      'primary_key'  => 'refnum',
+      'unique'       => [ ['agentnum', 'title'] ],
+      'index'        => [ ['disabled'], ['agentnum'], ],
     },
 
     'part_svc' => {
@@ -2465,6 +2496,23 @@ sub tables_hashref {
       'index' => [ ['disabled'] ],
     },
 
+    'part_svc_msgcat' => {
+      'columns' => [
+        'svcpartmsgnum',  'serial',     '',        '', '', '',
+        'svcpart',           'int',     '',        '', '', '',
+        'locale',        'varchar',     '',        16, '', '',
+        'svc',           'varchar',     '',   $char_d, '', '',
+      ],
+      'primary_key'  => 'svcpartmsgnum',
+      'unique'       => [ [ 'svcpart', 'locale' ] ],
+      'index'        => [],
+      'foreign_keys' => [
+                          { columns    => [ 'svcpart' ],
+                            table      => 'part_svc',
+                          },
+                        ],
+    },
+
     #(this should be renamed to part_pop)
     'svc_acct_pop' => {
       'columns' => [
@@ -2960,6 +3008,7 @@ sub tables_hashref {
         'custnum',        'int', 'NULL',      '', '', '',
         'secure',        'char', 'NULL',       1, '', '',
         'priority',       'int', 'NULL',      '', '', '',
+        'usernum',        'int', 'NULL',      '', '', '',
       ],
       'primary_key' => 'jobnum',
       'unique'      => [],
@@ -3018,6 +3067,26 @@ sub tables_hashref {
       'index'       => [ [ 'exportnum' ], [ 'svcpart' ] ],
     },
 
+    'export_cust_svc' => {
+      'columns' => [
+        'exportcustsvcnum', 'serial', '', '', '', '', 
+        'exportnum', 'int', '', '', '', '', 
+        'svcnum', 'int', '', '', '', '', 
+        'remoteid', 'varchar', '', 512, '', '', 
+      ],
+      'primary_key'  => 'exportcustsvcnum',
+      'unique'       => [ [ 'exportnum', 'svcnum' ] ],
+      'index'        => [ [ 'exportnum', 'svcnum' ] ],
+      'foreign_keys' => [
+                          { columns    => [ 'exportnum' ],
+                            table      => 'part_export',
+                          },
+                          { columns    => [ 'svcnum' ],
+                            table      => 'cust_svc',
+                          },
+                        ],
+    },
+
     'export_device' => {
       'columns' => [
         'exportdevicenum' => 'serial', '', '', '', '', 
@@ -3037,6 +3106,8 @@ sub tables_hashref {
         'exporttype', 'varchar',     '', $char_d, '', '', 
         'nodomain',      'char', 'NULL',       1, '', '', 
         'default_machine','int', 'NULL',      '', '', '',
+        'no_suspend',    'char', 'NULL',       1, '', '',
+        # could also have 'no_insert', 'no_replace', etc.
       ],
       'primary_key' => 'exportnum',
       'unique'      => [],
@@ -3285,12 +3356,19 @@ sub tables_hashref {
         'freq_mhz',         'int', 'NULL',      '', '', '',
         'direction',        'int', 'NULL',      '', '', '',
         'width',            'int', 'NULL',      '', '', '',
-        #downtilt etc? rfpath has profile files for devices/antennas you upload?
         'sector_range', 'decimal', 'NULL',      '', '', '',  #?
-      ],
-      'primary_key' => 'sectornum',
-      'unique'      => [ [ 'towernum', 'sectorname' ], [ 'ip_addr' ], ],
-      'index'       => [ [ 'towernum' ] ],
+        'downtilt',     'decimal', 'NULL',      '', '', '',
+        'v_width',          'int', 'NULL',      '', '', '',
+        'margin',       'decimal', 'NULL',     '', '', '',
+        'image',           'blob', 'NULL',     '', '', '',
+        'west',         'decimal', 'NULL', '10,7', '', '',
+        'east',         'decimal', 'NULL', '10,7', '', '',
+        'south',        'decimal', 'NULL', '10,7', '', '',
+        'north',        'decimal', 'NULL', '10,7', '', '',
+     ],
+      'primary_key'  => 'sectornum',
+      'unique'       => [ [ 'towernum', 'sectorname' ], [ 'ip_addr' ], ],
+      'index'        => [ [ 'towernum' ] ],
     },
 
     'part_virtual_field' => {
@@ -3795,6 +3873,11 @@ sub tables_hashref {
         'rated_ratedetailnum',        'int', 'NULL',      '', '', '',
         'rated_classnum',             'int', 'NULL',      '', '', '', 
         'rated_ratename',         'varchar', 'NULL', $char_d, '', '', 
+        'rated_cost',            'decimal', 'NULL',  '10,4', '', '',
+
+        # real endpoints of the call
+        'src_lrn',             'varchar', 'NULL',     '15', '', '',
+        'dst_lrn',             'varchar', 'NULL',     '15', '', '',
 
         'carrierid',               'bigint', 'NULL',      '', '', '',
 
@@ -3819,6 +3902,9 @@ sub tables_hashref {
         #new
         'cdrbatchnum',      'int',    'NULL',      '', '', '',
 
+        # FK to cust_bill_pkg_detail; having a value here absolutely means
+        # that the CDR appears on an invoice
+        'detailnum',     'bigint',    'NULL',      '', '', '',
       ],
       'primary_key' => 'acctid',
       'unique' => [],
@@ -3852,6 +3938,7 @@ sub tables_hashref {
         'rated_price',  'decimal', 'NULL',  '10,4', '', '',
         'rated_seconds',    'int', 'NULL',      '', '', '',
         'rated_minutes', 'double precision', 'NULL',   '', '', '',
+        'rated_granularity','int', 'NULL',      '', '', '',
         'status',       'varchar', 'NULL',      32, '', '',
         'svcnum',           'int', 'NULL',      '', '', '',
       ],
@@ -3943,6 +4030,19 @@ sub tables_hashref {
       'index'  => [],
     },
 
+    'access_user_session' => {
+      'columns' => [
+        'sessionnum',   'serial',  '',      '', '', '', 
+        'sessionkey',  'varchar',  '', $char_d, '', '',
+        'usernum',         'int',  '',      '', '', '',
+        'start_date', @date_type,               '', '',
+        'last_date',  @date_type,               '', '',
+      ],
+      'primary_key' => 'sessionnum',
+      'unique' => [ [ 'sessionkey' ] ],
+      'index'  => [],
+    },
+
     'access_user' => {
       'columns' => [
         'usernum',            'serial',      '',      '', '', '',
@@ -4028,6 +4128,26 @@ sub tables_hashref {
       'index'        => [ ['usernum'], ['path'], ['_date'] ],
     },
 
+    'access_user_page_pref' => {
+      'columns'     => [
+        'prefnum'     =>  'serial',     '',      '', '', '',
+        'usernum'     =>     'int',     '',      '', '', '',
+        'path'        =>    'text',     '',      '', '', '',
+        'tablenum'    =>     'int', 'NULL',      '', '', '',
+        '_date'       =>    @date_type,              '', '',
+        'prefname'    =>    'varchar',  '', $char_d, '', '',
+        'prefvalue'   =>    'text',     '',      '', '', '',
+      ],
+      'primary_key' => 'prefnum',
+      'unique'      => [ [ 'usernum', 'path', 'tablenum', 'prefname' ] ],
+      'index'       => [],
+      'foreign_keys' => [
+                          { columns   => [ 'usernum' ],
+                            table     => 'access_user'
+                          },
+                        ],
+    },
+
     'sched_item' => {
       'columns' => [
         'itemnum',   'serial',      '', '', '', '', 
@@ -4068,6 +4188,7 @@ sub tables_hashref {
         'pbxsvc',                         'int', 'NULL',      '', '', '',
         'domsvc',                         'int', 'NULL',      '', '', '', 
         'locationnum',                    'int', 'NULL',      '', '', '',
+        'forward_svcnum',                 'int', 'NULL',      '', '', '',
         'forwarddst',                 'varchar', 'NULL',      15, '', '', 
         'email',                      'varchar', 'NULL',     255, '', '', 
         'lnp_status',                 'varchar', 'NULL', $char_d, '', '',
@@ -4110,6 +4231,7 @@ sub tables_hashref {
         'devicepart', 'serial',  '',      '', '', '',
         'devicename', 'varchar', '', $char_d, '', '',
         'inventory_classnum', 'int', 'NULL', '', '', '',
+        'title',      'varchar', 'NULL', $char_d, '', '',
       ],
       'primary_key' => 'devicepart',
       'unique' => [ [ 'devicename' ] ], #?
@@ -4671,6 +4793,147 @@ sub tables_hashref {
       'unique'      => [],
       'index'       => [ [ 'providernum' ], [ 'typenum' ] ],
     },
+
+    'svc_fiber' => {
+      'columns' => [
+        'svcnum',         'int',     '',      '', '', '',
+        'oltnum',         'int', 'NULL',      '', '', '',
+        'shelf',          'int', 'NULL',      '', '', '',
+        'card',           'int', 'NULL',      '', '', '',
+        'olt_port',       'int', 'NULL',      '', '', '',
+        'ont_id',         'int', 'NULL',      '', '', '',
+        'ont_typenum',    'int', 'NULL',      '', '', '',
+        'ont_serial', 'varchar', 'NULL', $char_d, '', '',
+        'ont_port',   'varchar', 'NULL',      16, '', '',
+        'circuit_id', 'varchar', 'NULL', $char_d, '', '',
+        'vlan',           'int', 'NULL',      '', '', '',
+        'signal',     'decimal', 'NULL',  '10,2', '', '',
+        'speed_up',       'int', 'NULL',      '', '', '',
+        'speed_down',     'int', 'NULL',      '', '', '',
+        'ont_install','varchar', 'NULL', $char_d, '', '',
+      ],
+      'primary_key' => 'svcnum',
+      'unique'      => [ ],
+      'index'       => [ [ 'ont_serial' ] ],
+    },
+
+    'fiber_olt' => {
+      'columns' => [
+        'oltnum',   'serial', '',       '', '', '',
+        'oltname', 'varchar', '',  $char_d, '', '',
+        'sitenum',     'int', 'NULL',   '', '', '',
+        'serial',  'varchar', '',  $char_d, '', '',
+        'disabled',   'char', 'NULL',    1, '', '',
+      ],
+      'primary_key' => 'oltnum',
+      'unique' => [ ],
+      'index'  => [ ],
+      'foreign_keys' => [
+                          { columns => [ 'sitenum' ],
+                            table   => 'olt_site',
+                          },
+                        ],
+    },
+
+    'olt_site' => {
+      'columns' => [
+        'sitenum',  'serial', '',      '', '', '',
+        'market',  'varchar', '', $char_d, '', '',
+        'site',    'varchar', '', $char_d, '', '',
+      ],
+      'primary_key' => 'sitenum',
+      'unique' => [ [ 'market', 'site' ] ],
+      'index' => [ ],
+    },
+
+
+
+
+
+    'vend_main' => {
+      'columns' => [
+        'vendnum',   'serial',     '',      '', '', '',
+        'vendname', 'varchar',     '', $char_d, '', '',
+        'classnum',     'int',     '',      '', '', '',
+        'disabled',    'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key'  => 'vendnum',
+      'unique'       => [ ['vendname', 'disabled'] ],
+      'index'        => [],
+      'foreign_keys' => [
+                          { columns    => [ 'classnum' ],
+                            table      => 'vend_class',
+                          },
+                        ],
+    },
+
+    'vend_class' => {
+      'columns' => [
+        'classnum',     'serial',     '',      '', '', '', 
+        'classname',   'varchar',     '', $char_d, '', '', 
+        'disabled',       'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key' => 'classnum',
+      'unique'      => [],
+      'index'       => [ ['disabled'] ],
+    },
+
+    'vend_bill' => {
+      'columns' => [
+        'vendbillnum',    'serial',     '',      '', '', '', 
+        'vendnum',           'int',     '',      '', '', '', 
+        #'_date',        @date_type,                  '', '', 
+        '_date',     'int', '', '',                   '', '', 
+        'charged',     @money_type,                  '', '', 
+      ],
+      'primary_key'  => 'vendbillnum',
+      'unique'       => [],
+      'index'        => [ ['vendnum'], ['_date'], ],
+      'foreign_keys' => [
+                          { columns    => [ 'vendnum' ],
+                            table      => 'vend_main',
+                          },
+                        ],
+    },
+
+    'vend_pay' => {
+      'columns' => [
+        'vendpaynum',   'serial',    '',       '', '', '',
+        'vendnum',         'int',    '',       '', '', '', 
+        #'_date',     @date_type,                   '', '', 
+        '_date',     'int', '', '',                   '', '', 
+        'paid',      @money_type,                  '', '', 
+      ],
+      'primary_key'  => 'vendpaynum',
+      'unique'       => [],
+      'index'        => [ [ 'vendnum' ], [ '_date' ], ],
+      'foreign_keys' => [
+                          { columns    => [ 'vendnum' ],
+                            table      => 'vend_main',
+                          },
+                        ],
+    },
+
+    'vend_bill_pay' => {
+      'columns' => [
+        'vendbillpaynum', 'serial',     '',   '', '', '', 
+        'vendbillnum',       'int',     '',   '', '', '', 
+        'vendpaynum',        'int',     '',   '', '', '', 
+        'amount',  @money_type, '', '', 
+        #? '_date',   @date_type, '', '', 
+      ],
+      'primary_key'  => 'vendbillpaynum',
+      'unique'       => [],
+      'index'        => [ [ 'vendbillnum' ], [ 'vendpaynum' ] ],
+      'foreign_keys' => [
+                          { columns    => [ 'vendbillnum' ],
+                            table      => 'vend_bill',
+                          },
+                          { columns    => [ 'vendpaynum' ],
+                            table      => 'vend_pay',
+                          },
+                        ],
+    },
     %{ tables_hashref_torrus() },
 
     # tables of ours for doing torrus virtual port combining
@@ -4779,6 +5042,7 @@ sub tables_hashref {
         'zonenum',        'serial',  '',     '',      '', '',
         'description',    'char',    'NULL', $char_d, '', '',
         'agentnum',       'int',     '',     '',      '', '',
+        'censusyear',     'char',    'NULL', 4,      '', '',
         'dbaname',        'char',    'NULL', $char_d, '', '',
         'zonetype',       'char',    '',     1,       '', '',
         'technology',     'int',     '',     '',      '', '',
@@ -4804,7 +5068,7 @@ sub tables_hashref {
         'blocknum',       'serial',  '',     '',      '', '',
         'zonenum',        'int',     '',     '',      '', '',
         'censusblock',    'char',    '',     15,      '', '',
-        'censusyear',     'char',    '',      4,      '', '',
+        'censusyear',     'char','NULL',      4,      '', '',
       ],
       'primary_key' => 'blocknum',
       'unique' => [],
@@ -4831,12 +5095,155 @@ sub tables_hashref {
         'graphnum',       'int',      'NULL', '', '', '', 
         'imported',       @date_type,             '', '',
         'content',        'text',     'NULL', '', '', '',
+        'thumbnail',      'text',     'NULL', '', '', '',
       ],
       'primary_key' => 'cacti_pagenum',
       'unique'  => [ ],
       'index'   => [ ['svcnum'], ['imported'] ],
     },
 
+    'report_batch' => {
+      'columns' => [
+        'reportbatchnum', 'serial',      '',  '', '', '',
+        'reportname',     'varchar',     '', 255, '', '',
+        'agentnum',           'int', 'NULL',  '', '', '',
+        'send_date',     @date_type,              '', '',
+        'sdate',         @date_type,              '', '',
+        'edate',         @date_type,              '', '',
+        'usernum',            'int', 'NULL',  '', '', '',
+        'msgnum',             'int', 'NULL',  '', '', '',
+        # add report params here as necessary
+      ],
+      'primary_key' => 'reportbatchnum',
+      'unique' => [],
+      'index'  => [],
+      'foreign_keys' => [
+                          { columns    => [ 'agentnum' ],
+                            table      => 'agent',
+                            references => [ 'agentnum' ],
+                          },
+                          { columns    => [ 'usernum' ],
+                            table      => 'access_user',
+                            references => [ 'usernum' ],
+                          },
+                          { columns    => [ 'msgnum' ],
+                            table      => 'msg_template',
+                            references => [ 'msgnum' ],
+                          },
+                        ],
+    },
+
+    'password_history' => {
+      'columns' => [
+        'passwordnum',        'serial',  '',          '', '', '',
+        '_password',          'varchar', 'NULL', $char_d, '', '',
+        'encryption_method',  'varchar', 'NULL', $char_d, '', '',
+        'created',   @date_type,   '', '',
+        # each table that needs password history gets a column here, and
+        # an entry in foreign_keys.
+        'svc_acct__svcnum',     'int', 'NULL', '', '', '',
+        'svc_dsl__svcnum',      'int', 'NULL', '', '', '',
+        'svc_alarm__svcnum',    'int', 'NULL', '', '', '',
+        'agent__agentnum',      'int', 'NULL', '', '', '',
+        'contact__contactnum',  'int', 'NULL', '', '', '',
+        'access_user__usernum', 'int', 'NULL', '', '', '',
+      ],
+      'primary_key' => 'passwordnum',
+      'unique' => [],
+      'index'  => [],
+      'foreign_keys' => [
+                          { columns     => [ 'svc_acct__svcnum' ],
+                            table       => 'svc_acct',
+                            references  => [ 'svcnum' ],
+                          },
+                          { columns     => [ 'svc_dsl__svcnum' ],
+                            table       => 'svc_dsl',
+                            references  => [ 'svcnum' ],
+                          },
+                          { columns     => [ 'svc_alarm__svcnum' ],
+                            table       => 'svc_alarm',
+                            references  => [ 'svcnum' ],
+                          },
+                          { columns    => [ 'agent__agentnum' ],
+                            table      => 'agent',
+                            references => [ 'agentnum' ],
+                          },
+                          { columns    => [ 'contact__contactnum' ],
+                            table      => 'contact',
+                            references => [ 'contactnum' ],
+                          },
+                          { columns    => [ 'access_user__usernum' ],
+                            table      => 'access_user',
+                            references => [ 'usernum' ],
+                          },
+                        ],
+    },
+
+    'webservice_log' => {
+      'columns' => [
+        'webservicelognum',    'serial',      '',      '', '', '', #big? hubrus
+        'svcnum',                 'int',  'NULL',      '', '', '', #just in case
+        'custnum',                'int',      '',      '', '', '',
+        'method',             'varchar',      '', $char_d, '', '',
+        'quantity',               'int',      '',      '', '', '', #i.e. pages
+        '_date',             @date_type,                   '', '',
+        'status',             'varchar',  'NULL', $char_d, '', '', 
+        'rated_price',        'decimal',  'NULL',  '10,2', '', '',
+      ],
+      'primary_key'  => 'webservicelognum',
+      'unique'       => [],
+      'index'        => [ ['custnum'], ['status'] ],
+      'foreign_keys' => [
+                          { columns => [ 'custnum' ],
+                            table   => 'cust_main',
+                          },
+                          #no FK on svcnum... we don't want to purge these on
+                          # service deletion
+                        ],
+    },
+
+    'rt_field_charge' => {
+      'columns' => [
+        'rtfieldchargenum',    'serial',      '',      '', '', '',
+        'pkgnum',                 'int',      '',      '', '', '', 
+        'ticketid',               'int',      '',      '', '', '', 
+        'rate',             @money_type,                   '', '', 
+        'units',              'decimal',      '',  '10,4', '', '',
+        'charge',           @money_type,                   '', '', 
+        '_date',             @date_type,                   '', '',
+      ],
+      'primary_key'  => 'rtfieldchargenum',
+      'unique'       => [],
+      'index'        => [ ['pkgnum', 'ticketid'] ],
+      'foreign_keys' => [
+                          { columns    => [ 'pkgnum' ],
+                            table      => 'cust_pkg',
+                          },
+                        ],
+    },
+
+    'saved_search' => {
+      'columns' => [
+        'searchnum',    'serial',  '',          '', '', '',
+        'usernum',      'int',     'NULL',      '', '', '',
+        'searchname',   'varchar', '',     $char_d, '', '',
+        'path',         'varchar', '',     $char_d, '', '',
+        'params',       'text',    'NULL',      '', '', '',
+        'disabled',     'char',    'NULL',       1, '', '',
+        'freq',         'varchar', 'NULL',      16, '', '',
+        'last_sent',    'int',     'NULL',      '', '', '',
+        'format',       'varchar', 'NULL',      32, '', '',
+      ],
+      'primary_key'   => 'searchnum',
+      'unique'        => [],
+      'index'         => [],
+      'foreign_keys'  => [
+                           { columns => [ 'usernum' ],
+                             table   => 'access_user',
+                           },
+                         ],
+    },
+
     # name type nullability length default local
 
     #'new_table' => {