add usage classes to rate details
[freeside.git] / FS / FS / Schema.pm
index 9548aa7..530f632 100644 (file)
@@ -192,6 +192,14 @@ sub dbdef_dist {
                         }
                         keys %indices;
 
+    $h_indices{"h_${table}_srckey"} = DBIx::DBSchema::Index->new({
+                                        'name'    => "h_${table}_srckey",
+                                        'unique'  => 0,
+                                        'columns' => [ 'history_action', #right?
+                                                       $tableobj->primary_key,
+                                                     ],
+                                      });
+
     my $h_tableobj = DBIx::DBSchema::Table->new( {
       'name'          => "h_$table",
       'primary_key'   => 'historynum',
@@ -303,6 +311,7 @@ sub tables_hashref {
   my @date_type  = ( 'int', 'NULL', ''     );
   my @perl_type = ( 'text', 'NULL', ''  ); 
   my @money_type = ( 'decimal',   '', '10,2' );
+  my @money_typen = ( 'decimal',   'NULL', '10,2' );
 
   my $username_len = 32; #usernamemax config file
 
@@ -480,12 +489,19 @@ sub tables_hashref {
       'columns' => [
         'billpkgnum', 'serial', '', '', '', '', 
         'pkgnum',  'int', '', '', '', '', 
+        'pkgpart_override',  'int', 'NULL', '', '', '', 
         'invnum',  'int', '', '', '', '', 
         'setup',   @money_type, '', '', 
         'recur',   @money_type, '', '', 
         'sdate',   @date_type, '', '', 
         'edate',   @date_type, '', '', 
         'itemdesc', 'varchar', 'NULL', $char_d, '', '', 
+        'section',  'varchar', 'NULL', $char_d, '', '', 
+        'quantity',  'int', 'NULL', '', '', '',
+        'unitsetup', @money_typen, '', '', 
+        'unitrecur', @money_typen, '', '', 
+        'duplicate',  'char', 'NULL', 1, '', '',  # does this need to be in db?
+        'post_total', 'char', 'NULL', 1, '', '',
       ],
       'primary_key' => 'billpkgnum',
       'unique' => [],
@@ -495,13 +511,15 @@ sub tables_hashref {
     'cust_bill_pkg_detail' => {
       'columns' => [
         'detailnum', 'serial', '', '', '', '', 
-        'pkgnum',  'int', '', '', '', '', 
-        'invnum',  'int', '', '', '', '', 
+        'billpkgnum', 'int', 'NULL', '', '', '',        # should not be nullable
+        'pkgnum',  'int', 'NULL', '', '', '',           # deprecated
+        'invnum',  'int', 'NULL', '', '', '',           # deprecated
+        'format',  'char', 'NULL', 1, '', '',
         'detail',  'varchar', '', $char_d, '', '', 
       ],
       'primary_key' => 'detailnum',
       'unique' => [],
-      'index' => [ [ 'pkgnum', 'invnum' ] ],
+      'index' => [ [ 'billpkgnum' ], [ 'pkgnum', 'invnum' ] ],
     },
 
     'cust_credit' => {
@@ -553,6 +571,7 @@ sub tables_hashref {
         'custnum',  'serial',  '',     '', '', '', 
         'agentnum', 'int',  '',     '', '', '', 
         'agent_custid', 'varchar', 'NULL', $char_d, '', '',
+        'custbatch', 'varchar', 'NULL', $char_d, '', '',
 #        'titlenum', 'int',  'NULL',   '', '', '', 
         'last',     'varchar', '',     $char_d, '', '', 
 #        'middle',   'varchar', 'NULL', $char_d, '', '', 
@@ -606,6 +625,7 @@ sub tables_hashref {
         'referral_custnum', 'int',  'NULL', '', '', '', 
         'comments', 'text', 'NULL', '', '', '', 
         'spool_cdr','char', 'NULL', 1, '', '', 
+        'squelch_cdr','char', 'NULL', 1, '', '', 
         'invoice_terms', 'varchar', 'NULL', $char_d, '', '',
       ],
       'primary_key' => 'custnum',
@@ -617,6 +637,7 @@ sub tables_hashref {
                    [ 'ship_last' ], [ 'ship_company' ],
                    [ 'ship_daytime' ], [ 'ship_night' ], [ 'ship_fax' ],
                    [ 'payby' ], [ 'paydate' ],
+                   [ 'agentnum' ], [ 'custbatch' ],
                  ],
     },
 
@@ -665,6 +686,69 @@ sub tables_hashref {
       'index' => [ [ 'county' ], [ 'state' ], [ 'country' ] ],
     },
 
+    'tax_rate'    => {
+      'columns' => [
+        'taxnum',       'serial',     '',      '', '', '', 
+        'geocode',     'varchar', 'NULL', $char_d, '', '',#cch provides 10 char
+        'data_vendor', 'varchar', 'NULL', $char_d, '', '',#auto update source
+        'location',    'varchar', 'NULL', $char_d, '', '',#provided by tax authority
+        'taxclassnum', 'int',      '',      '', '', '', 
+        'effective_date', @date_type, '', '', 
+        'tax',        'real',  '',    '', '', '',        # tax %
+        'excessrate', 'real',  'NULL','', '', '',        # second tax %
+        'taxbase',    @money_typen, '', '',              # amount at first tax rate
+        'taxmax',     @money_typen, '', '',              # maximum about at both rates
+        'usetax',        'real',  'NULL',    '', '', '', # tax % when non-local
+        'useexcessrate', 'real',  'NULL',    '', '', '', # second tax % when non-local
+        'unittype',    'int',  'NULL', '', '', '',      # for fee
+        'fee',         'real', 'NULL', '', '', '',      # amount tax per unit
+        'excessfee',   'real', 'NULL', '', '', '',      # second amount tax per unit
+        'feebase',     'real', 'NULL', '', '', '',      # units taxed at first rate
+        'feemax',      'real', 'NULL', '', '', '',      # maximum number of unit taxed
+        'maxtype',     'int',  'NULL', '', '', '',      # indicator of how thresholds accumulate
+        'taxname', 'varchar',  'NULL', $char_d, '', '', # may appear on invoice
+        'taxauth',     'int',  'NULL', '', '', '',      # tax authority
+        'basetype',    'int',  'NULL', '', '', '', # indicator of basis for tax
+        'passtype',    'int',  'NULL', '', '', '', # indicator declaring how item should be shown
+        'passflag',    'char', 'NULL', 1, '', '',  # Y = required to list as line item, N = Prohibited
+        'setuptax',    'char', 'NULL', 1, '', '',  # Y = setup tax exempt
+        'recurtax',    'char', 'NULL', 1, '', '',  # Y = recur tax exempt
+        'manual',      'char', 'NULL', 1, '', '',  # Y = manually edited
+        'disabled',    'char', 'NULL', 1, '', '',  # Y = tax disabled
+      ],
+      'primary_key' => 'taxnum',
+      'unique' => [],
+      'index' => [ ['taxclassnum'], ['data_vendor', 'geocode'] ],
+    },
+
+    'cust_tax_location' => { 
+      'columns' => [
+        'custlocationnum', 'serial',  '',     '', '', '', 
+        'data_vendor',     'varchar', 'NULL', $char_d, '', '', # update source
+        'zip',             'char',    '',     5,  '', '', 
+        'state',           'char',    '',     2,  '', '', 
+        'plus4hi',         'char',    '',     4,  '', '', 
+        'plus4lo',         'char',    '',     4,  '', '', 
+        'default_location','char',    'NULL', 1,  '', '', # Y = default for zip
+        'geocode',         'varchar', '',    20,  '', '', 
+      ],
+      'primary_key' => 'custlocationnum',
+      'unique' => [],
+      'index' => [ [ 'zip', 'plus4lo', 'plus4hi' ] ],
+    },
+
+    'tax_class' => { 
+      'columns' => [
+        'taxclassnum',  'serial',  '',            '', '', '',
+        'data_vendor',  'varchar', 'NULL',   $char_d, '', '',
+        'taxclass',     'varchar', '',       $char_d, '', '',          
+        'description',  'varchar', '',     2*$char_d, '', '',          
+      ],
+      'primary_key' => 'taxclassnum',
+      'unique' => [ [ 'data_vendor', 'taxclass' ] ],
+      'index' => [],
+    },
+
     'cust_pay_pending' => {
       'columns' => [
         'paypendingnum','serial',      '',  '', '', '',
@@ -835,6 +919,7 @@ sub tables_hashref {
         'change_pkgnum',  'int', 'NULL', '', '', '',
         'change_pkgpart', 'int', 'NULL', '', '', '',
         'manual_flag',    'char', 'NULL', 1, '', '', 
+        'quantity',       'int', 'NULL', '', '', '',
       ],
       'primary_key' => 'pkgnum',
       'unique' => [],
@@ -862,6 +947,7 @@ sub tables_hashref {
         'num',      'serial',    '',   '', '', '', 
         'pkgnum',   'int',    '',   '', '', '', 
         'reasonnum','int',    '',   '', '', '', 
+        'action',   'char', 'NULL', 1, '', '',     #should not be nullable
         'otaker',   'varchar', '', 32, '', '', 
         'date',     @date_type, '', '', 
       ],
@@ -917,6 +1003,18 @@ sub tables_hashref {
       'index' => [ ['svcnum'], ['pkgnum'], ['svcpart'] ],
     },
 
+    'cust_svc_option' => {
+      'columns' => [
+        'optionnum',   'serial', '', '', '', '', 
+        'svcnum',      'int', '', '', '', '', 
+        'optionname',  'varchar', '', $char_d, '', '', 
+        'optionvalue', 'text', 'NULL', '', '', '', 
+      ],
+      'primary_key' => 'optionnum',
+      'unique'      => [],
+      'index'       => [ [ 'svcnum' ], [ 'optionname' ] ],
+    },
+
     'part_pkg' => {
       'columns' => [
         'pkgpart',       'serial',    '',   '', '', '', 
@@ -933,6 +1031,7 @@ sub tables_hashref {
         'disabled',      'char', 'NULL', 1, '', '', 
         'taxclass',      'varchar', 'NULL', $char_d, '', '', 
         'classnum',      'int',     'NULL', '', '', '', 
+        'taxproductnum', 'int',     'NULL', '', '', '', 
         'pay_weight',    'real',    'NULL', '', '', '',
         'credit_weight', 'real',    'NULL', '', '', '',
         'agentnum',      'int',     'NULL', '', '', '', 
@@ -943,6 +1042,18 @@ sub tables_hashref {
       'index' => [ [ 'promo_code' ], [ 'disabled' ], [ 'agentnum' ], ],
     },
 
+    'part_pkg_link' => {
+      'columns' => [
+        'pkglinknum',  'serial',  '',      '', '', '',
+        'src_pkgpart', 'int',     '',      '', '', '',
+        'dst_pkgpart', 'int',     '',      '', '', '', 
+        'link_type',   'varchar', '', $char_d, '', '',
+      ],
+      'primary_key' => 'pkglinknum',
+      'unique' => [ [ 'src_pkgpart', 'dst_pkgpart', 'link_type' ] ],
+      'index'  => [ [ 'src_pkgpart' ] ],
+    },
+
     'part_pkg_taxclass' => {
       'columns' => [
         'taxclassnum',  'serial', '',       '', '', '',
@@ -953,6 +1064,51 @@ sub tables_hashref {
       'index'       => [],
     },
 
+    'part_pkg_taxproduct' => {
+      'columns' => [
+        'taxproductnum', 'serial',      '',        '', '', '',
+        'data_vendor',   'varchar', 'NULL',   $char_d, '', '', 
+        'taxproduct',    'varchar',     '',   $char_d, '', '', 
+        'description',   'varchar',     '', 2*$char_d, '', '', 
+      ],
+      'primary_key' => 'taxproductnum',
+      'unique'      => [ [ 'data_vendor', 'taxproduct' ] ],
+      'index'       => [],
+    },
+
+    'part_pkg_taxrate' => { 
+      'columns' => [
+        'pkgtaxratenum', 'serial',  '',     '',      '', '',
+        'data_vendor',   'varchar', 'NULL', $char_d, '', '', # update source
+        'geocode',       'varchar', 'NULL', $char_d, '', '', # cch provides 10
+        'taxproductnum', 'int',  '',     '',       '', '',          
+        'city',             'varchar', 'NULL', $char_d, '', '', # tax_location?
+        'county',           'varchar', 'NULL', $char_d, '', '', 
+        'state',            'varchar', 'NULL', $char_d, '', '', 
+        'local',            'varchar', 'NULL', $char_d, '', '', 
+        'country',          'char',    'NULL', 2,       '', '',
+        'taxclassnumtaxed', 'int',     'NULL', '',      '', '', 
+        'taxcattaxed',      'varchar', 'NULL', $char_d, '', '', 
+        'taxclassnum',      'int',     'NULL', '',      '', '', 
+        'effdate',          @date_type, '', '', 
+        'taxable',          'char',    'NULL', 1,       '', '', 
+      ],
+      'primary_key' => 'pkgtaxratenum',
+      'unique' => [],
+      'index' => [ [ 'data_vendor', 'geocode', 'taxproductnum' ] ],
+    },
+
+    'part_pkg_taxoverride' => { 
+      'columns' => [
+        'taxoverridenum', 'serial', '', '', '', '',
+        'pkgpart',        'serial', '', '', '', '',
+        'taxclassnum',    'serial', '', '', '', '',
+      ],
+      'primary_key' => 'taxoverridenum',
+      'unique' => [],
+      'index' => [ [ 'pkgpart' ], [ 'taxclassnum' ] ],
+    },
+
 #    'part_title' => {
 #      'columns' => [
 #        'titlenum',   'int',    '',   '',
@@ -1366,6 +1522,7 @@ sub tables_hashref {
         'routernum', 'serial', '', '', '', '', 
         'routername', 'varchar', '', $char_d, '', '', 
         'svcnum', 'int', 'NULL', '', '', '', 
+        'agentnum',   'int', 'NULL', '', '', '', 
       ],
       'primary_key' => 'routernum',
       'unique'      => [],
@@ -1389,6 +1546,7 @@ sub tables_hashref {
        'routernum', 'int', '', '', '', '', 
         'ip_gateway', 'varchar', '', 15, '', '', 
         'ip_netmask', 'int', '', '', '', '', 
+        'agentnum',   'int', 'NULL', '', '', '', 
       ],
       'primary_key' => 'blocknum',
       'unique'      => [ [ 'blocknum', 'routernum' ] ],
@@ -1513,6 +1671,7 @@ sub tables_hashref {
         'min_charge',      'decimal', '', '10,5', '', '', 
         'sec_granularity', 'int',     '', '', '', '', 
         #time period (link to table of periods)?
+        'classnum',        'int',     'NULL', '', '', '', 
       ],
       'primary_key' => 'ratedetailnum',
       'unique'      => [ [ 'ratenum', 'orig_regionnum', 'dest_regionnum' ] ],
@@ -1542,6 +1701,17 @@ sub tables_hashref {
       'index'       => [ [ 'countrycode' ], [ 'regionnum' ] ],
     },
 
+    'usage_class' => {
+      'columns' => [
+        'classnum',    'serial',   '',      '', '', '', 
+        'classname',   'varchar',  '', $char_d, '', '', 
+        'disabled',    'char', 'NULL',       1, '', '', 
+      ],
+      'primary_key' => 'classnum',
+      'unique' => [],
+      'index' => [ ['disabled'] ],
+    },
+
     'reg_code' => {
       'columns' => [
         'codenum',   'serial',    '', '', '', '', 
@@ -1641,11 +1811,23 @@ sub tables_hashref {
       'index'       => [],
     },
 
+    'pkg_category' => {
+      'columns' => [
+        'categorynum',   'serial',  '', '', '', '', 
+        'categoryname',  'varchar', '', $char_d, '', '', 
+        'disabled',      'char', 'NULL',   1, '', '', 
+      ],
+      'primary_key' => 'categorynum',
+      'unique' => [],
+      'index' => [ ['disabled'] ],
+    },
+
     'pkg_class' => {
       'columns' => [
-        'classnum',   'serial',  '', '', '', '', 
-        'classname',  'varchar', '', $char_d, '', '', 
-        'disabled',     'char', 'NULL',   1, '', '', 
+        'classnum',    'serial',   '',      '', '', '', 
+        'classname',   'varchar',  '', $char_d, '', '', 
+        'categorynum', 'int',  'NULL',      '', '', '', 
+        'disabled',    'char', 'NULL',       1, '', '', 
       ],
       'primary_key' => 'classnum',
       'unique' => [],
@@ -1878,16 +2060,32 @@ sub tables_hashref {
 
     'svc_phone' => {
       'columns' => [
-        'svcnum',      'int',         '',      '', '', '', 
-        'countrycode', 'varchar',     '',       3, '', '', 
-        'phonenum',    'varchar',     '',      15, '', '',  #12 ?
-        'pin',         'varchar', 'NULL', $char_d, '', '',
+        'svcnum',       'int',         '',      '', '', '', 
+        'countrycode',  'varchar',     '',       3, '', '', 
+        'phonenum',     'varchar',     '',      15, '', '',  #12 ?
+        'pin',          'varchar', 'NULL', $char_d, '', '',
+        'sip_password', 'varchar', 'NULL', $char_d, '', '',
+        'phone_name',   'varchar', 'NULL', $char_d, '', '',
       ],
       'primary_key' => 'svcnum',
       'unique' => [],
       'index'  => [ [ 'countrycode', 'phonenum' ] ],
     },
 
+    'phone_avail' => {
+      'columns' => [
+        'availnum',    'int',      '', '', '', '', 
+        'exportnum',   'int',      '', '', '', '', 
+        'countrycode', 'varchar',  '',  3, '', '', 
+        'state',       'char', 'NULL',  2, '', '', 
+        'npa',         'char',     '',  3, '', '', 
+        'nxx',         'char', 'NULL',  3, '', '', 
+      ],
+      'primary_key' => 'availnum',
+      'unique' => [],
+      'index'  => [ [ 'exportnum', 'countrycode', 'state' ] ],
+    },
+
     'reason_type' => {
       'columns' => [
         'typenum',   'serial',  '', '', '', '',