+ 'billpkgnum', 'serial', '', '', '', '',
+ 'invnum', 'int', '', '', '', '',
+ 'pkgnum', 'int', '', '', '', '',
+ 'pkgpart_override', 'int', 'NULL', '', '', '',
+ 'setup', @money_type, '', '',
+ 'unitsetup', @money_typen, '', '',
+ 'setup_billed_currency', 'char', 'NULL', 3, '', '',
+ 'setup_billed_amount', @money_typen, '', '',
+ 'recur', @money_type, '', '',
+ 'unitrecur', @money_typen, '', '',
+ 'recur_billed_currency', 'char', 'NULL', 3, '', '',
+ 'recur_billed_amount', @money_typen, '', '',
+ 'sdate', @date_type, '', '',
+ 'edate', @date_type, '', '',
+ 'itemdesc', 'varchar', 'NULL', $char_d, '', '',
+ 'itemcomment', 'varchar', 'NULL', $char_d, '', '',
+ 'section', 'varchar', 'NULL', $char_d, '', '',
+ 'freq', 'varchar', 'NULL', $char_d, '', '',
+ 'quantity', 'int', 'NULL', '', '', '',
+ 'hidden', 'char', 'NULL', 1, '', '',
+ ],
+ 'primary_key' => 'billpkgnum',
+ 'unique' => [],
+ 'index' => [ ['invnum'], [ 'pkgnum' ], [ 'itemdesc' ], ],
+ 'foreign_keys' => [
+ { columns => [ 'invnum' ],
+ table => 'cust_bill',
+ },
+ #pkgnum 0 and -1 are used for special things
+ #{ columns => [ 'pkgnum' ],
+ # table => 'cust_pkg',
+ #},
+ { columns => [ 'pkgpart_override' ],
+ table => 'part_pkg',
+ references => [ 'pkgpart' ],
+ },
+ ],
+ },
+
+ 'cust_bill_pkg_detail' => {
+ 'columns' => [
+ 'detailnum', 'serial', '', '', '', '',
+ 'billpkgnum', 'int', 'NULL', '', '', '', # should not be nullable
+ 'pkgnum', 'int', 'NULL', '', '', '', # deprecated
+ 'invnum', 'int', 'NULL', '', '', '', # deprecated
+ 'amount', 'decimal', 'NULL', '10,4', '', '',
+ 'format', 'char', 'NULL', 1, '', '',
+ 'classnum', 'int', 'NULL', '', '', '',
+ 'duration', 'int', 'NULL', '', 0, '',
+ 'phonenum', 'varchar', 'NULL', 25, '', '',
+ 'accountcode', 'varchar', 'NULL', 20, '', '',
+ 'startdate', @date_type, '', '',
+ 'regionname', 'varchar', 'NULL', $char_d, '', '',
+ 'detail', 'varchar', '', 255, '', '',
+ ],
+ 'primary_key' => 'detailnum',
+ 'unique' => [],
+ 'index' => [ [ 'billpkgnum' ], [ 'classnum' ],
+ [ 'pkgnum', 'invnum' ],
+ ],
+ 'foreign_keys' => [
+ { columns => [ 'billpkgnum' ],
+ table => 'cust_bill_pkg',
+ },
+ { columns => [ 'pkgnum' ],
+ table => 'cust_pkg',
+ },
+ { columns => [ 'invnum' ],
+ table => 'cust_bill',
+ },
+ { columns => [ 'classnum' ],
+ table => 'usage_class',
+ },
+ ],
+ },
+
+ 'cust_bill_pkg_display' => {
+ 'columns' => [
+ 'billpkgdisplaynum', 'serial', '', '', '', '',
+ 'billpkgnum', 'int', '', '', '', '',
+ 'section', 'varchar', 'NULL', $char_d, '', '',
+ #'unitsetup', @money_typen, '', '', #override the linked real one?
+ #'unitrecur', @money_typen, '', '', #this too?
+ 'post_total', 'char', 'NULL', 1, '', '',
+ 'type', 'char', 'NULL', 1, '', '',
+ 'summary', 'char', 'NULL', 1, '', '',
+ ],
+ 'primary_key' => 'billpkgdisplaynum',
+ 'unique' => [],
+ 'index' => [ ['billpkgnum'], ],
+ 'foreign_keys' => [
+ { columns => [ 'billpkgnum' ],
+ table => 'cust_bill_pkg',
+ },
+ ],
+ },
+
+ 'cust_bill_pkg_tax_location' => {
+ 'columns' => [
+ 'billpkgtaxlocationnum', 'serial', '', '', '', '',
+ 'billpkgnum', 'int', '', '', '', '',
+ 'taxnum', 'int', '', '', '', '',
+ 'taxtype', 'varchar', '', $char_d, '', '',
+ 'pkgnum', 'int', '', '', '', '', #redundant
+ 'locationnum', 'int', '', '', '', '', #redundant
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'taxable_billpkgnum', 'int', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'billpkgtaxlocationnum',
+ 'unique' => [],
+ 'index' => [ [ 'billpkgnum' ],
+ [ 'taxnum' ],
+ [ 'pkgnum' ],
+ [ 'locationnum' ],
+ [ 'taxable_billpkgnum' ],
+ ],
+ 'foreign_keys' => [
+ { columns => [ 'billpkgnum' ],
+ table => 'cust_bill_pkg',
+ },
+ { columns => [ 'pkgnum' ],
+ table => 'cust_pkg',
+ },
+ { columns => [ 'locationnum' ],
+ table => 'cust_location',
+ },
+ { columns => [ 'taxable_billpkgnum' ],
+ table => 'cust_bill_pkg',
+ references => [ 'billpkgnum' ],
+ },
+ ],
+ },
+
+ 'cust_bill_pkg_tax_rate_location' => {
+ 'columns' => [
+ 'billpkgtaxratelocationnum', 'serial', '', '', '', '',
+ 'billpkgnum', 'int', '', '', '', '',
+ 'taxnum', 'int', '', '', '', '',
+ 'taxtype', 'varchar', '', $char_d, '', '',
+ 'locationtaxid', 'varchar', 'NULL', $char_d, '', '',
+ 'taxratelocationnum', 'int', '', '', '', '',
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'taxable_billpkgnum', 'int', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'billpkgtaxratelocationnum',
+ 'unique' => [],
+ 'index' => [ ['billpkgnum'], ['taxnum'], ['taxratelocationnum'],
+ ['taxable_billpkgnum'],
+ ],
+ 'foreign_keys' => [
+ { columns => [ 'billpkgnum' ],
+ table => 'cust_bill_pkg',
+ },
+ { columns => [ 'taxratelocationnum' ],
+ table => 'tax_rate_location',
+ },
+ { columns => [ 'taxable_billpkgnum' ],
+ table => 'cust_bill_pkg',
+ references => [ 'billpkgnum' ],
+ },
+ ],
+ },
+
+ 'cust_bill_pkg_void' => {
+ 'columns' => [
+ 'billpkgnum', 'int', '', '', '', '',