batch refactor continued
[freeside.git] / FS / FS / Schema.pm
index 3ca599b..9f9770c 100644 (file)
@@ -16,13 +16,6 @@ use FS::UID qw(datasrc);
 $DEBUG = 0;
 $me = '[FS::Schema]';
 
-#ask FS::UID to run this stuff for us later
-FS::UID->install_callback( sub {
-  #$conf = new FS::Conf; 
-  &reload_dbdef("/usr/local/etc/freeside/dbdef.". datasrc)
-    unless $setup_hack; #$setup_hack needed now?
-} );
-
 =head1 NAME
 
 FS::Schema - Freeside database schema
@@ -58,7 +51,7 @@ sub reload_dbdef {
   unless ( exists $dbdef_cache{$file} ) {
     warn "[debug]$me loading dbdef for $file\n" if $DEBUG;
     $dbdef_cache{$file} = DBIx::DBSchema->load( $file )
-                            or die "can't load database schema from $file";
+      or die "can't load database schema from $file: $DBIx::DBSchema::errstr\n";
   } else {
     warn "[debug]$me re-using cached dbdef for $file\n" if $DEBUG;
   }
@@ -244,6 +237,8 @@ sub tables_hashref {
 
   my $username_len = 32; #usernamemax config file
 
+    # name type nullability length default local
+
   return {
 
     'agent' => {
@@ -387,10 +382,24 @@ sub tables_hashref {
       'index' => [ ['crednum'], ['invnum'] ],
     },
 
+    'cust_credit_bill_pkg' => {
+      'columns' => [
+        'creditbillpkgnum', 'serial', '',      '', '', '',
+        'creditbillnum',       'int', '',      '', '', '',
+        'billpkgnum',          'int', '',      '', '', '',
+        'amount',            @money_type,          '', '',
+        'setuprecur',      'varchar', '', $char_d, '', '',
+      ],
+      'primary_key' => 'creditbillpkgnum',
+      'unique'      => [],
+      'index'       => [ [ 'creditbillnum' ], [ 'billpkgnum' ], ],
+    },
+
     'cust_main' => {
       'columns' => [
         'custnum',  'serial',  '',     '', '', '', 
         'agentnum', 'int',  '',     '', '', '', 
+        'agent_custid', 'varchar', 'NULL', $char_d, '', '',
 #        'titlenum', 'int',  'NULL',   '', '', '', 
         'last',     'varchar', '',     $char_d, '', '', 
 #        'middle',   'varchar', 'NULL', $char_d, '', '', 
@@ -437,13 +446,17 @@ sub tables_hashref {
         'refnum',   'int',  '',     '', '', '', 
         'referral_custnum', 'int',  'NULL', '', '', '', 
         'comments', 'text', 'NULL', '', '', '', 
+        'spool_cdr','char', 'NULL', 1, '', '', 
       ],
       'primary_key' => 'custnum',
-      'unique' => [],
+      'unique' => [ [ 'agentnum', 'agent_custid' ] ],
       #'index' => [ ['last'], ['company'] ],
       'index' => [ ['last'], [ 'company' ], [ 'referral_custnum' ],
                    [ 'daytime' ], [ 'night' ], [ 'fax' ], [ 'refnum' ],
-                   [ 'county' ], [ 'state' ], [ 'country' ]
+                   [ 'county' ], [ 'state' ], [ 'country' ], [ 'zip' ],
+                   [ 'ship_last' ], [ 'ship_company' ],
+                   [ 'payby' ], [ 'paydate' ],
+
                  ],
     },
 
@@ -532,10 +545,49 @@ sub tables_hashref {
       'index' => [ [ 'paynum' ], [ 'invnum' ] ],
     },
 
+    'cust_bill_pay_batch' => {
+      'columns' => [
+        'billpaynum', 'serial',     '',   '', '', '', 
+        'invnum',  'int',     '',   '', '', '', 
+        'paybatchnum',  'int',     '',   '', '', '', 
+        'amount',  @money_type, '', '', 
+        '_date',   @date_type, '', '', 
+      ],
+      'primary_key' => 'billpaynum',
+      'unique' => [],
+      'index' => [ [ 'paybatchnum' ], [ 'invnum' ] ],
+    },
+
+    'cust_bill_pay_pkg' => {
+      'columns' => [
+        'billpaypkgnum', 'serial', '', '', '', '',
+        'billpaynum',       'int', '', '', '', '',
+        'billpkgnum',       'int', '', '', '', '',
+        'amount',         @money_type,     '', '',
+        'setuprecur',      'varchar', '', $char_d, '', '',
+      ],
+      'primary_key' => 'billpaypkgnum',
+      'unique'      => [],
+      'index'       => [ [ 'billpaynum' ], [ 'billpkgnum' ], ],
+    },
+
+    'pay_batch' => { #batches of payments to an external processor
+      'columns' => [
+        'batchnum',   'serial',    '',   '', '', '', 
+        'status',     'char', 'NULL',     1, '', '', 
+        'download',   @date_type, '', '', 
+        'upload',     @date_type, '', '', 
+      ],
+      'primary_key' => 'batchnum',
+      'unique' => [],
+      'index' => [],
+    },
+
     'cust_pay_batch' => { #what's this used for again?  list of customers
                           #in current CARD batch? (necessarily CARD?)
       'columns' => [
         'paybatchnum',   'serial',    '',   '', '', '', 
+        'batchnum',   'int',    '',   '', '', '', 
         'invnum',   'int',    '',   '', '', '', 
         'custnum',   'int',    '',   '', '', '', 
         'last',     'varchar', '',     $char_d, '', '', 
@@ -547,15 +599,17 @@ sub tables_hashref {
         'zip',      'varchar', 'NULL', 10, '', '', 
         'country',  'char', '',     2, '', '', 
         #        'trancode', 'int', '', '', '', ''
-        'cardnum',  'varchar', '',     16, '', '', 
+        'payby',    'char',   '',     4, '', '', # CARD/BILL/COMP, should be
+        'payinfo',  'varchar', '',     512, '', '', 
         #'exp',      @date_type, '', ''
-        'exp',      'varchar', '',     11, '', '', 
+        'exp',      'varchar', 'NULL',     11, '', '', 
         'payname',  'varchar', 'NULL', $char_d, '', '', 
         'amount',   @money_type, '', '', 
+        'status',   'varchar', 'NULL',     $char_d, '', '', 
       ],
       'primary_key' => 'paybatchnum',
       'unique' => [],
-      'index' => [ ['invnum'], ['custnum'] ],
+      'index' => [ ['batchnum'], ['invnum'], ['custnum'] ],
     },
 
     'cust_pkg' => {
@@ -670,9 +724,10 @@ sub tables_hashref {
 
     'part_referral' => {
       'columns' => [
-        'refnum',   'serial',    '',   '', '', '', 
-        'referral', 'varchar',   '',   $char_d, '', '', 
-        'disabled',     'char', 'NULL', 1, '', '', 
+        'refnum',   'serial',     '',        '', '', '', 
+        'referral', 'varchar',    '',   $char_d, '', '', 
+        'disabled', 'char',   'NULL',         1, '', '', 
+        'agentnum', 'int',    'NULL',        '', '', '', 
       ],
       'primary_key' => 'refnum',
       'unique' => [],
@@ -1146,7 +1201,8 @@ sub tables_hashref {
         'orig_regionnum',  'int', 'NULL', '', '', '', 
         'dest_regionnum',  'int',     '', '', '', '', 
         'min_included',    'int',     '', '', '', '', 
-        'min_charge',      @money_type, '', '', 
+        #'min_charge',      @money_type, '', '', 
+        'min_charge',      'decimal', '', '10,5', '', '', 
         'sec_granularity', 'int',     '', '', '', '', 
         #time period (link to table of periods)?
       ],
@@ -1352,6 +1408,10 @@ sub tables_hashref {
         'upstream_price',      'decimal', 'NULL',  '10,2', '', '', 
         'upstream_rateplanid',     'int', 'NULL',      '', '', '', #?
 
+        # how it was rated internally...
+        'ratedetailnum',           'int', 'NULL',      '', '', '',
+        'rated_price',         'decimal', 'NULL',  '10,2', '', '',
+
         'distance',            'decimal', 'NULL',      '', '', '',
         'islocal',                 'int', 'NULL',      '', '', '', # '',  '', 0, '' instead?
 
@@ -1373,7 +1433,7 @@ sub tables_hashref {
         # a svcnum... right..?
         'svcnum',             'int',   'NULL',     '',   '', '', 
 
-        #NULL, done, skipped, pushed_downstream (or something)
+        #NULL, done (or something)
         'freesidestatus', 'varchar',   'NULL',     32,   '', '', 
 
       ],
@@ -1412,9 +1472,133 @@ sub tables_hashref {
       'index'       => [],
     },
 
+    #map upstream rateid to ours...
+    'cdr_upstream_rate' => {
+      'columns' => [
+        'upstreamratenum', 'serial',  '', '', '', '',
+        'upstream_rateid', 'varchar', '', $char_d, '', '', 
+        'ratedetailnum',   'int', 'NULL', '', '', '',
+      ],
+      'primary_key' => 'upstreamratenum', #XXX need a primary key
+      'unique' => [ [ 'upstream_rateid' ] ], #unless we add another field, yeah
+      'index'  => [],
+    },
+
+    'inventory_item' => {
+      'columns' => [
+        'itemnum',  'serial',      '',      '', '', '',
+        'classnum', 'int',         '',      '', '', '',
+        'item',     'varchar',     '', $char_d, '', '',
+        'svcnum',   'int',     'NULL',      '', '', '',
+      ],
+      'primary_key' => 'itemnum',
+      'unique' => [ [ 'classnum', 'item' ] ],
+      'index'  => [ [ 'classnum' ], [ 'svcnum' ] ],
+    },
+
+    'inventory_class' => {
+      'columns' => [
+        'classnum',  'serial',       '',      '', '', '',
+        'classname', 'varchar',      '', $char_d, '', '',
+      ],
+      'primary_key' => 'classnum',
+      'unique' => [],
+      'index'  => [],
+    },
+
+    'access_user' => {
+      'columns' => [
+        'usernum',   'serial',  '',      '', '', '',
+        'username',  'varchar', '', $char_d, '', '',
+        '_password', 'varchar', '', $char_d, '', '',
+        'last',      'varchar', '', $char_d, '', '', 
+        'first',     'varchar', '', $char_d, '', '', 
+        'disabled',     'char', 'NULL',   1, '', '', 
+      ],
+      'primary_key' => 'usernum',
+      'unique' => [ [ 'username' ] ],
+      'index'  => [],
+    },
+
+    'access_user_pref' => {
+      'columns' => [
+        'prefnum',    'serial',       '', '', '', '',
+        'usernum',     'int',       '', '', '', '',
+        'prefname', 'varchar', '', $char_d, '', '', 
+        'prefvalue', 'text', 'NULL', '', '', '', 
+      ],
+      'primary_key' => 'prefnum',
+      'unique' => [],
+      'index'  => [ [ 'usernum' ] ],
+    },
+
+    'access_group' => {
+      'columns' => [
+        'groupnum',   'serial', '',      '', '', '',
+        'groupname', 'varchar', '', $char_d, '', '',
+      ],
+      'primary_key' => 'groupnum',
+      'unique' => [ [ 'groupname' ] ],
+      'index'  => [],
+    },
+
+    'access_usergroup' => {
+      'columns' => [
+        'usergroupnum', 'serial', '', '', '', '',
+        'usernum',         'int', '', '', '', '',
+        'groupnum',        'int', '', '', '', '',
+      ],
+      'primary_key' => 'usergroupnum',
+      'unique' => [ [ 'usernum', 'groupnum' ] ],
+      'index'  => [ [ 'usernum' ] ],
+    },
+
+    'access_groupagent' => {
+      'columns' => [
+        'groupagentnum', 'serial', '', '', '', '',
+        'groupnum',         'int', '', '', '', '',
+        'agentnum',         'int', '', '', '', '',
+      ],
+      'primary_key' => 'groupagentnum',
+      'unique' => [ [ 'groupnum', 'agentnum' ] ],
+      'index'  => [ [ 'groupnum' ] ],
+    },
+
+    'access_right' => {
+      'columns' => [
+        'rightnum',   'serial', '',      '', '', '',
+        'righttype', 'varchar', '', $char_d, '', '',
+        'rightobjnum',   'int', '',      '', '', '',
+        'rightname', 'varchar', '',      '', '', '',
+      ],
+      'primary_key' => 'rightnum',
+      'unique' => [ [ 'righttype', 'rightobjnum', 'rightname' ] ],
+      'index'  => [],
+    },
+
+    'svc_phone' => {
+      'columns' => [
+        'svcnum',      'int',         '',      '', '', '', 
+        'countrycode', 'varchar',     '',       3, '', '', 
+        'phonenum',    'varchar',     '',      15, '', '',  #12 ?
+        'pin',         'varchar', 'NULL', $char_d, '', '',
+      ],
+      'primary_key' => 'svcnum',
+      'unique' => [],
+      'index'  => [ [ 'countrycode', 'phonenum' ] ],
+    },
 
   };
 
+    #'new_table' => {
+    #  'columns' => [
+    #    'num', 'serial',       '', '', '', '',
+    #  ],
+    #  'primary_key' => 'num',
+    #  'unique' => [],
+    #  'index'  => [],
+    #},
+
 }
 
 =back