summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Schema.pm352
-rw-r--r--FS/FS/svc_phone.pm32
-rw-r--r--httemplate/browse/cdr_carrier.html22
-rw-r--r--httemplate/edit/cdr_carrier.html19
-rw-r--r--httemplate/edit/process/cdr_carrier.html10
-rw-r--r--httemplate/edit/svc_phone.cgi19
-rw-r--r--httemplate/elements/menu.html1
-rw-r--r--httemplate/elements/select-cdr_carrier.html19
-rw-r--r--httemplate/elements/tr-select-cdr_carrier.html27
-rw-r--r--httemplate/view/svc_phone.cgi27
10 files changed, 353 insertions, 175 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 5f1611cf7..71d84cc68 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -554,10 +554,11 @@ sub tables_hashref {
'cust_bill' => {
'columns' => [
#regular fields
- 'invnum', 'serial', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- '_date', @date_type, '', '',
- 'charged', @money_type, '', '',
+ 'invnum', 'serial', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ '_date', @date_type, '', '',
+ 'charged', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
'invoice_terms', 'varchar', 'NULL', $char_d, '', '',
#customer balance info at invoice generation time
@@ -581,10 +582,11 @@ sub tables_hashref {
'cust_bill_void' => {
'columns' => [
#regular fields
- 'invnum', 'int', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- '_date', @date_type, '', '',
- 'charged', @money_type, '', '',
+ 'invnum', 'int', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ '_date', @date_type, '', '',
+ 'charged', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
'invoice_terms', 'varchar', 'NULL', $char_d, '', '',
#customer balance info at invoice generation time
@@ -616,6 +618,7 @@ sub tables_hashref {
'custnum', 'int', '', '', '', '',
'_date', @date_type, '', '',
'charged', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
'content_pdf', 'blob', 'NULL', '', '', '',
'content_html', 'text', 'NULL', '', '', '',
'locale', 'varchar', 'NULL', 16, '', '',
@@ -760,6 +763,8 @@ sub tables_hashref {
'pkgpart_override', 'int', 'NULL', '', '', '',
'setup', @money_type, '', '',
'recur', @money_type, '', '',
+ #XXX a currency for a line item? or just one for the entire invoice
+ #'currency', 'char', 'NULL', 3, '', '',
'sdate', @date_type, '', '',
'edate', @date_type, '', '',
'itemdesc', 'varchar', 'NULL', $char_d, '', '',
@@ -815,14 +820,16 @@ sub tables_hashref {
'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, '', '',
- 'taxable_billpkgnum', 'int', 'NULL', '', '', '',
+ 'billpkgtaxlocationnum', 'serial', '', '', '', '',
+ 'billpkgnum', 'int', '', '', '', '',
+ 'taxnum', 'int', '', '', '', '',
+ 'taxtype', 'varchar', '', $char_d, '', '',
+ 'pkgnum', 'int', '', '', '', '', #redundant
+ 'locationnum', 'int', '', '', '', '', #redundant
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'amount', @money_type, '', '',
+ 'taxable_billpkgnum', 'int', 'NULL', '', '', '',
],
'primary_key' => 'billpkgtaxlocationnum',
'unique' => [],
@@ -836,14 +843,15 @@ sub tables_hashref {
'cust_bill_pkg_tax_rate_location' => {
'columns' => [
- 'billpkgtaxratelocationnum', 'serial', '', '', '', '',
- 'billpkgnum', 'int', '', '', '', '',
- 'taxnum', 'int', '', '', '', '',
+ 'billpkgtaxratelocationnum', 'serial', '', '', '', '',
+ 'billpkgnum', 'int', '', '', '', '',
+ 'taxnum', 'int', '', '', '', '',
'taxtype', 'varchar', '', $char_d, '', '',
'locationtaxid', 'varchar', 'NULL', $char_d, '', '',
- 'taxratelocationnum', 'int', '', '', '', '',
- 'amount', @money_type, '', '',
- 'taxable_billpkgnum', 'int', 'NULL', '', '', '',
+ 'taxratelocationnum', 'int', '', '', '', '',
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'taxable_billpkgnum', 'int', 'NULL', '', '', '',
],
'primary_key' => 'billpkgtaxratelocationnum',
'unique' => [],
@@ -859,6 +867,8 @@ sub tables_hashref {
'pkgpart_override', 'int', 'NULL', '', '', '',
'setup', @money_type, '', '',
'recur', @money_type, '', '',
+ #XXX a currency for a line item? or just one for the entire invoice
+ #'currency', 'char', 'NULL', 3, '', '',
'sdate', @date_type, '', '',
'edate', @date_type, '', '',
'itemdesc', 'varchar', 'NULL', $char_d, '', '',
@@ -918,13 +928,14 @@ sub tables_hashref {
'cust_bill_pkg_tax_location_void' => {
'columns' => [
- 'billpkgtaxlocationnum', 'int', '', '', '', '',
- 'billpkgnum', 'int', '', '', '', '',
- 'taxnum', 'int', '', '', '', '',
- 'taxtype', 'varchar', '', $char_d, '', '',
- 'pkgnum', 'int', '', '', '', '',
- 'locationnum', 'int', '', '', '', '', #redundant?
- 'amount', @money_type, '', '',
+ 'billpkgtaxlocationnum', 'int', '', '', '', '',
+ 'billpkgnum', 'int', '', '', '', '',
+ 'taxnum', 'int', '', '', '', '',
+ 'taxtype', 'varchar', '', $char_d, '', '',
+ 'pkgnum', 'int', '', '', '', '',
+ 'locationnum', 'int', '', '', '', '', #redundant?
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
],
'primary_key' => 'billpkgtaxlocationnum',
'unique' => [],
@@ -933,13 +944,14 @@ sub tables_hashref {
'cust_bill_pkg_tax_rate_location_void' => {
'columns' => [
- 'billpkgtaxratelocationnum', 'int', '', '', '', '',
- 'billpkgnum', 'int', '', '', '', '',
- 'taxnum', 'int', '', '', '', '',
- 'taxtype', 'varchar', '', $char_d, '', '',
- 'locationtaxid', 'varchar', 'NULL', $char_d, '', '',
- 'taxratelocationnum', 'int', '', '', '', '',
- 'amount', @money_type, '', '',
+ 'billpkgtaxratelocationnum', 'int', '', '', '', '',
+ 'billpkgnum', 'int', '', '', '', '',
+ 'taxnum', 'int', '', '', '', '',
+ 'taxtype', 'varchar', '', $char_d, '', '',
+ 'locationtaxid', 'varchar', 'NULL', $char_d, '', '',
+ 'taxratelocationnum', 'int', '', '', '', '',
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
],
'primary_key' => 'billpkgtaxratelocationnum',
'unique' => [],
@@ -948,18 +960,19 @@ sub tables_hashref {
'cust_credit' => {
'columns' => [
- 'crednum', 'serial', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- '_date', @date_type, '', '',
- 'amount', @money_type, '', '',
- 'otaker', 'varchar', 'NULL', 32, '', '',
- 'usernum', 'int', 'NULL', '', '', '',
- 'reason', 'text', 'NULL', '', '', '',
- 'reasonnum', 'int', 'NULL', '', '', '',
- 'addlinfo', 'text', 'NULL', '', '', '',
- 'closed', 'char', 'NULL', 1, '', '',
- 'pkgnum', 'int', 'NULL', '', '', '', #desired pkgnum for pkg-balances
- 'eventnum', 'int', 'NULL', '', '', '', #triggering event for commission
+ 'crednum', 'serial', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ '_date', @date_type, '', '',
+ 'amount',@money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'otaker', 'varchar', 'NULL', 32, '', '',
+ 'usernum', 'int', 'NULL', '', '', '',
+ 'reason', 'text', 'NULL', '', '', '',
+ 'reasonnum', 'int', 'NULL', '', '', '',
+ 'addlinfo', 'text', 'NULL', '', '', '',
+ 'closed', 'char', 'NULL', 1, '', '',
+ 'pkgnum', 'int', 'NULL', '', '','',#desired pkgnum for pkg-balances
+ 'eventnum', 'int', 'NULL', '', '','',#triggering event for commission
#'commission_agentnum', 'int', 'NULL', '', '', '', #
],
'primary_key' => 'crednum',
@@ -1085,6 +1098,7 @@ sub tables_hashref {
'cdr_termination_percentage', 'decimal', 'NULL', '7,4', '', '',
'invoice_terms', 'varchar', 'NULL', $char_d, '', '',
'credit_limit', @money_typen, '', '',
+ 'credit_limit_currency', 'char', 'NULL', 3, '', '',
'archived', 'char', 'NULL', 1, '', '',
'email_csv_cdr', 'char', 'NULL', 1, '', '',
'accountcode_cdr', 'char', 'NULL', 1, '', '',
@@ -1404,8 +1418,9 @@ sub tables_hashref {
'adjustmentnum', 'serial', '', '', '', '',
'custnum', 'int', '', '', '', '',
'taxname', 'varchar', '', $char_d, '', '',
- 'amount', @money_type, '', '',
- 'comment', 'varchar', 'NULL', $char_d, '', '',
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'comment', 'varchar', 'NULL', $char_d, '', '',
'billpkgnum', 'int', 'NULL', '', '', '',
#more? no cust_bill_pkg_tax_location?
],
@@ -1418,18 +1433,19 @@ sub tables_hashref {
#off the cust_main_county for validation and to
#provide a tax rate.
'columns' => [
- 'taxnum', 'serial', '', '', '', '',
- 'district', 'varchar', 'NULL', 20, '', '',
- 'city', 'varchar', 'NULL', $char_d, '', '',
- 'county', 'varchar', 'NULL', $char_d, '', '',
- 'state', 'varchar', 'NULL', $char_d, '', '',
- 'country', 'char', '', 2, '', '',
- 'taxclass', 'varchar', 'NULL', $char_d, '', '',
- 'exempt_amount', @money_type, '', '',
- 'tax', 'real', '', '', '', '', #tax %
- 'taxname', 'varchar', 'NULL', $char_d, '', '',
- 'setuptax', 'char', 'NULL', 1, '', '', # Y = setup tax exempt
- 'recurtax', 'char', 'NULL', 1, '', '', # Y = recur tax exempt
+ 'taxnum', 'serial', '', '', '', '',
+ 'district', 'varchar', 'NULL', 20, '', '',
+ 'city', 'varchar', 'NULL', $char_d, '', '',
+ 'county', 'varchar', 'NULL', $char_d, '', '',
+ 'state', 'varchar', 'NULL', $char_d, '', '',
+ 'country', 'char', '', 2, '', '',
+ 'taxclass', 'varchar', 'NULL', $char_d, '', '',
+ 'exempt_amount', @money_type, '', '',
+ 'exempt_amount_currency', 'char', 'NULL', 3, '', '',
+ 'tax', 'real', '', '', '', '', #tax %
+ 'taxname', 'varchar', 'NULL', $char_d, '', '',
+ 'setuptax', 'char', 'NULL', 1, '', '', # Y = setup tax exempt
+ 'recurtax', 'char', 'NULL', 1, '', '', # Y = recur tax exempt
],
'primary_key' => 'taxnum',
'unique' => [],
@@ -1526,19 +1542,17 @@ sub tables_hashref {
'cust_pay_pending' => {
'columns' => [
- 'paypendingnum','serial', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- 'paid', @money_type, '', '',
- '_date', @date_type, '', '',
- '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, '', '',
- 'paydate', 'varchar', 'NULL', 10, '', '',
+ 'paypendingnum', 'serial', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ 'paid', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ '_date', @date_type, '', '',
+ 'payby', 'char', '', 4, '', '',
+ 'payinfo', 'varchar', 'NULL', 512, '', '',
+ 'paymask', 'varchar', 'NULL', $char_d, '', '',
+ 'paydate', 'varchar', 'NULL', 10, '', '',
'recurring_billing', 'varchar', 'NULL', $char_d, '', '',
- #'paybatch', 'varchar', 'NULL', $char_d, '', '', #for auditing purposes.
- 'payunique', 'varchar', 'NULL', $char_d, '', '', #separate paybatch "unique" functions from current usage
+ 'payunique', 'varchar', 'NULL', $char_d, '', '', #separate paybatch "unique" functions from current usage
'pkgnum', 'int', 'NULL', '', '', '', #desired pkgnum for pkg-balances
'status', 'varchar', '', $char_d, '', '',
@@ -1556,35 +1570,35 @@ sub tables_hashref {
'cust_pay' => {
'columns' => [
- 'paynum', 'serial', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- '_date', @date_type, '', '',
- 'paid', @money_type, '', '',
- 'otaker', 'varchar', 'NULL', 32, '', '',
- 'usernum', '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, '', '',
- '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, '', '',
+ 'paynum', 'serial', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ '_date', @date_type, '', '',
+ 'paid', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'otaker', 'varchar', 'NULL', 32, '', '',
+ 'usernum', 'int', 'NULL', '', '', '',
+ 'payby', 'char', '', 4, '', '',
+ 'payinfo', 'varchar', 'NULL', 512, '', '',
+ '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
+
# cash/check deposit info fields
- 'bank', 'varchar', 'NULL', $char_d, '', '',
- 'depositor', 'varchar', 'NULL', $char_d, '', '',
- 'account', 'varchar', 'NULL', 20, '', '',
- 'teller', 'varchar', 'NULL', 20, '', '',
+ 'bank', 'varchar', 'NULL', $char_d, '', '',
+ 'depositor', 'varchar', 'NULL', $char_d, '', '',
+ 'account', 'varchar', 'NULL', 20, '', '',
+ 'teller', 'varchar', 'NULL', 20, '', '',
- 'batchnum', 'int', 'NULL', '', '', '', #pay_batch foreign key
+ 'batchnum', 'int', 'NULL', '', '', '',#pay_batch foreign key
# credit card/EFT fields (formerly in paybatch)
- '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
+ '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
],
'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' ] ],
@@ -1593,38 +1607,38 @@ sub tables_hashref {
'cust_pay_void' => {
'columns' => [
- 'paynum', 'int', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- '_date', @date_type, '', '',
- 'paid', @money_type, '', '',
- 'otaker', 'varchar', 'NULL', 32, '', '',
- 'usernum', '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, '', '',
+ 'paynum', 'int', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ '_date', @date_type, '', '',
+ 'paid', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'otaker', 'varchar', 'NULL', 32, '', '',
+ 'usernum', 'int', 'NULL', '', '', '',
+ 'payby', 'char', '', 4, '', '',
+ 'payinfo', 'varchar', 'NULL', 512, '', '',
+ 'paymask', 'varchar', 'NULL', $char_d, '', '',
#'paydate' ?
- 'paybatch', 'varchar', 'NULL', $char_d, '', '', #for auditing purposes.
- 'closed', 'char', 'NULL', 1, '', '',
- 'pkgnum', 'int', 'NULL', '', '', '', #desired pkgnum for pkg-balances
+ 'paybatch', 'varchar', 'NULL', $char_d, '', '', #for auditing purposes.
+ 'closed', 'char', 'NULL', 1, '', '',
+ 'pkgnum', 'int', 'NULL', '', '', '', #desired pkgnum for pkg-balances
+
# cash/check deposit info fields
'bank', 'varchar', 'NULL', $char_d, '', '',
'depositor', 'varchar', 'NULL', $char_d, '', '',
- 'account', 'varchar', 'NULL', 20, '', '',
- 'teller', 'varchar', 'NULL', 20, '', '',
- 'batchnum', 'int', 'NULL', '', '', '', #pay_batch foreign key
+ 'account', 'varchar', 'NULL', 20, '', '',
+ 'teller', 'varchar', 'NULL', 20, '', '',
+ 'batchnum', 'int', 'NULL', '', '', '', #pay_batch foreign key
# credit card/EFT fields (formerly in paybatch)
- '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
+ '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
#void fields
- 'void_date', @date_type, '', '',
- 'reason', 'varchar', 'NULL', $char_d, '', '',
- 'void_usernum', 'int', 'NULL', '', '', '',
+ 'void_date', @date_type, '', '',
+ 'reason', 'varchar', 'NULL', $char_d, '', '',
+ 'void_usernum', 'int', 'NULL', '', '', '',
],
'primary_key' => 'paynum',
'unique' => [],
@@ -1692,27 +1706,27 @@ sub tables_hashref {
'cust_pay_batch' => { #list of customers in current CARD/CHEK batch
'columns' => [
- 'paybatchnum', 'serial', '', '', '', '',
- 'batchnum', 'int', '', '', '', '',
- 'invnum', 'int', '', '', '', '',
- 'custnum', 'int', '', '', '', '',
- 'last', 'varchar', '', $char_d, '', '',
- 'first', 'varchar', '', $char_d, '', '',
- 'address1', 'varchar', '', $char_d, '', '',
- 'address2', 'varchar', 'NULL', $char_d, '', '',
- 'city', 'varchar', '', $char_d, '', '',
- 'state', 'varchar', 'NULL', $char_d, '', '',
- 'zip', 'varchar', 'NULL', 10, '', '',
- 'country', 'char', '', 2, '', '',
- # 'trancode', 'int', '', '', '', ''
- 'payby', 'char', '', 4, '', '',
- 'payinfo', 'varchar', 'NULL', 512, '', '',
- #'exp', @date_type, '', ''
- 'exp', 'varchar', 'NULL', 11, '', '',
- 'payname', 'varchar', 'NULL', $char_d, '', '',
- 'amount', @money_type, '', '',
- 'status', 'varchar', 'NULL', $char_d, '', '',
- 'error_message', 'varchar', 'NULL', $char_d, '', '',
+ 'paybatchnum', 'serial', '', '', '', '',
+ 'batchnum', 'int', '', '', '', '',
+ 'invnum', 'int', '', '', '', '',
+ 'custnum', 'int', '', '', '', '',
+ 'last', 'varchar', '', $char_d, '', '',
+ 'first', 'varchar', '', $char_d, '', '',
+ 'address1', 'varchar', '', $char_d, '', '',
+ 'address2', 'varchar', 'NULL', $char_d, '', '',
+ 'city', 'varchar', '', $char_d, '', '',
+ 'state', 'varchar', 'NULL', $char_d, '', '',
+ 'zip', 'varchar', 'NULL', 10, '', '',
+ 'country', 'char', '', 2, '', '',
+ 'payby', 'char', '', 4, '', '',
+ 'payinfo', 'varchar', 'NULL', 512, '', '',
+ #'exp', @date_type, '', '',
+ 'exp', 'varchar', 'NULL', 11, '', '',
+ 'payname', 'varchar', 'NULL', $char_d, '', '',
+ 'amount', @money_type, '', '',
+ 'currency', 'char', 'NULL', 3, '', '',
+ 'status', 'varchar', 'NULL', $char_d, '', '',
+ 'error_message', 'varchar', 'NULL', $char_d, '', '',
],
'primary_key' => 'paybatchnum',
'unique' => [],
@@ -3559,8 +3573,9 @@ sub tables_hashref {
'cdr_carrier' => {
'columns' => [
- 'carrierid' => 'serial', '', '', '', '',
- 'carriername' => 'varchar', '', $char_d, '', '',
+ 'carrierid' => 'serial', '', '', '', '',
+ 'carriername' => 'varchar', '', $char_d, '', '',
+ 'disabled' => 'char', 'NULL', 1, '', '',
],
'primary_key' => 'carrierid',
'unique' => [],
@@ -3705,31 +3720,34 @@ sub tables_hashref {
'svc_phone' => {
'columns' => [
- 'svcnum', 'int', '', '', '', '',
- 'countrycode', 'varchar', '', 3, '', '',
- 'phonenum', 'varchar', '', 25, '', '', #12 ?
- 'sim_imsi', 'varchar', 'NULL', 15, '', '',
- 'pin', 'varchar', 'NULL', $char_d, '', '',
- 'sip_password', 'varchar', 'NULL', $char_d, '', '',
- 'phone_name', 'varchar', 'NULL', $char_d, '', '',
- 'pbxsvc', 'int', 'NULL', '', '', '',
- 'domsvc', 'int', 'NULL', '', '', '',
- 'locationnum', 'int', 'NULL', '', '', '',
- 'forwarddst', 'varchar', 'NULL', 15, '', '',
- 'email', 'varchar', 'NULL', 255, '', '',
- 'lnp_status', 'varchar', 'NULL', $char_d, '', '',
- 'portable', 'char', 'NULL', 1, '', '',
- 'lrn', 'char', 'NULL', 10, '', '',
- 'lnp_desired_due_date', 'int', 'NULL', '', '', '',
- 'lnp_due_date', 'int', 'NULL', '', '', '',
- 'lnp_other_provider', 'varchar', 'NULL', $char_d, '', '',
- 'lnp_other_provider_account', 'varchar', 'NULL', $char_d, '', '',
- 'lnp_reject_reason', 'varchar', 'NULL', $char_d, '', '',
+ 'svcnum', 'int', '', '', '', '',
+ 'countrycode', 'varchar', '', 3, '', '',
+ 'phonenum', 'varchar', '', 25, '', '', #12 ?
+ 'sim_imsi', 'varchar', 'NULL', 15, '', '',
+ 'pin', 'varchar', 'NULL', $char_d, '', '',
+ 'sip_password', 'varchar', 'NULL', $char_d, '', '',
+ 'phone_name', 'varchar', 'NULL', $char_d, '', '',
+ 'pbxsvc', 'int', 'NULL', '', '', '',
+ 'domsvc', 'int', 'NULL', '', '', '',
+ 'locationnum', 'int', 'NULL', '', '', '',
+ 'forwarddst', 'varchar', 'NULL', 15, '', '',
+ 'email', 'varchar', 'NULL', 255, '', '',
+ 'lnp_status', 'varchar', 'NULL', $char_d, '', '',
+ 'portable', 'char', 'NULL', 1, '', '',
+ 'lrn', 'char', 'NULL', 10, '', '',
+ 'lnp_desired_due_date', 'int', 'NULL', '', '', '',
+ 'lnp_due_date', 'int', 'NULL', '', '', '',
+ 'lnp_other_provider', 'varchar', 'NULL', $char_d, '', '',
+ 'lnp_other_provider_account', 'varchar', 'NULL', $char_d, '', '',
+ 'lnp_reject_reason', 'varchar', 'NULL', $char_d, '', '',
+ 'sms_carrierid', 'int', 'NULL', '', '', '',
+ 'sms_account', 'varchar', 'NULL', '', '', '',
+ 'max_simultaneous', 'int', 'NULL', '', '', '',
],
'primary_key' => 'svcnum',
- 'unique' => [],
+ 'unique' => [ [ 'sms_carrierid', 'sms_account'] ],
'index' => [ ['countrycode', 'phonenum'], ['pbxsvc'], ['domsvc'],
- ['locationnum'],
+ ['locationnum'], ['sms_carrierid'],
],
},
diff --git a/FS/FS/svc_phone.pm b/FS/FS/svc_phone.pm
index ee25740c3..65a98d25a 100644
--- a/FS/FS/svc_phone.pm
+++ b/FS/FS/svc_phone.pm
@@ -173,6 +173,15 @@ sub table_info {
select_label => 'domain',
disable_inventory => 1,
},
+ 'sms_carrierid' => { label => 'SMS Carrier',
+ type => 'select',
+ select_table => 'cdr_carrier',
+ select_key => 'carrierid',
+ select_label => 'carriername',
+ disable_inventory => 1,
+ },
+ 'sms_account' => { label => 'SMS Carrier Account', },
+ 'max_simultaneous' => { label=>'Maximum number of simultaneous users' },
'locationnum' => {
label => 'E911 location',
disable_inventory => 1,
@@ -475,6 +484,9 @@ sub check {
|| $self->ut_textn('phone_name')
|| $self->ut_foreign_keyn('pbxsvc', 'svc_pbx', 'svcnum' )
|| $self->ut_foreign_keyn('domsvc', 'svc_domain', 'svcnum' )
+ || $self->ut_foreign_keyn('sms_carrierid', 'cdr_carrier', 'carrierid' )
+ || $self->ut_alphan('sms_account')
+ || $self->ut_numbern('max_simultaneous')
|| $self->ut_foreign_keyn('locationnum', 'cust_location', 'locationnum')
|| $self->ut_numbern('forwarddst')
|| $self->ut_textn('email')
@@ -635,6 +647,26 @@ sub radius_groups {
();
}
+=item sms_cdr_carrier
+
+=cut
+
+sub sms_cdr_carrier {
+ my $self = shift;
+ return '' unless $self->sms_carrierid;
+ qsearchs('cdr_carrier', { 'carrierid' => $self->sms_carrierid } );
+}
+
+=item sms_carriername
+
+=cut
+
+sub sms_carriername {
+ my $self = shift;
+ my $cdr_carrier = $self->sms_cdr_carrier or return '';
+ $cdr_carrier->carriername;
+}
+
=item phone_device
Returns any FS::phone_device records associated with this service.
diff --git a/httemplate/browse/cdr_carrier.html b/httemplate/browse/cdr_carrier.html
new file mode 100644
index 000000000..3ec95f392
--- /dev/null
+++ b/httemplate/browse/cdr_carrier.html
@@ -0,0 +1,22 @@
+<& elements/browse.html,
+ 'title' => 'Carriers',
+ 'name_singular' => 'carrier',
+ 'menubar' => [ 'Add a new carrier' =>
+ $p.'edit/cdr_carrier.html',
+ ],
+ 'query' => { 'table' => 'cdr_carrier', },
+ 'count_query' => 'SELECT COUNT(*) FROM cdr_carrier',
+ 'header' => [ 'Carrier', ],
+ 'fields' => [ 'carriername', ],
+ 'links' => [ $link, ],
+ 'disableable' => 1,
+ 'disabled_statuspos' => 1,
+&>
+<%init>
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+
+my $link = [ "${p}edit/cdr_carrier.html?", 'carrierid' ];
+
+</%init>
diff --git a/httemplate/edit/cdr_carrier.html b/httemplate/edit/cdr_carrier.html
new file mode 100644
index 000000000..47a358a41
--- /dev/null
+++ b/httemplate/edit/cdr_carrier.html
@@ -0,0 +1,19 @@
+<& elements/edit.html,
+ 'table' => 'cdr_carrier',
+ 'name_singular' => 'carrier',
+ 'fields' => [
+ { field=>'carriername', type=>'text', size=>20 },
+ { field=>'disabled', type=>'checkbox', value=>'Y' },
+ ],
+ 'labels' => { 'carrierid' => 'Carrier',
+ 'carriername' => 'Carrier',
+ 'disabled' => 'Disabled',
+ },
+ 'viewall_dir' => 'browse',
+&>
+<%init>
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+
+</%init>
diff --git a/httemplate/edit/process/cdr_carrier.html b/httemplate/edit/process/cdr_carrier.html
new file mode 100644
index 000000000..72f018609
--- /dev/null
+++ b/httemplate/edit/process/cdr_carrier.html
@@ -0,0 +1,10 @@
+<& elements/process.html,
+ 'table' => 'cdr_carrier',
+ 'viewall_dir' => 'browse',
+&>
+<%init>
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
+
+</%init>
diff --git a/httemplate/edit/svc_phone.cgi b/httemplate/edit/svc_phone.cgi
index 13bbe82a1..d48e6353b 100644
--- a/httemplate/edit/svc_phone.cgi
+++ b/httemplate/edit/svc_phone.cgi
@@ -121,6 +121,25 @@ my $begin_callback = sub {
;
}
+ if ( ! $bulk ) {
+
+ push @$fields,
+ {
+ type => 'tablebreak-tr-title',
+ value => 'Carrier Information',
+ colspan => 8,
+ },
+ { field => 'sms_carrierid',
+ label => 'SMS Carrier',
+ type => 'select-cdr_carrier',
+ },
+ 'sms_account',
+ 'max_simultaneous',
+ ;
+
+ }
+
};
+
</%init>
diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html
index aff55484a..f784d2faf 100644
--- a/httemplate/elements/menu.html
+++ b/httemplate/elements/menu.html
@@ -500,6 +500,7 @@ tie my %config_broadband, 'Tie::IxHash',
tie my %config_phone, 'Tie::IxHash',
'View/Edit phone device types' => [ $fsurl.'browse/part_device.html', 'Phone device types' ],
'View/Edit bulk DID vendors' => [ $fsurl.'browse/did_vendor.html', 'Bulk DID vendors' ],
+ 'View/Edit Carriers' => [ $fsurl.'browse/cdr_carrier.html', 'Carriers' ],
;
tie my %config_radius, 'Tie::IxHash',
diff --git a/httemplate/elements/select-cdr_carrier.html b/httemplate/elements/select-cdr_carrier.html
new file mode 100644
index 000000000..a9dc54f93
--- /dev/null
+++ b/httemplate/elements/select-cdr_carrier.html
@@ -0,0 +1,19 @@
+<% include( '/elements/select-table.html',
+ 'table' => 'cdr_carrier',
+ 'name_col' => 'carriername',
+ 'empty_label' => '(none)',
+ %opt,
+ )
+%>
+<%init>
+
+my( %opt ) = @_;
+
+$opt{'records'} = delete $opt{'cdr_carrier'}
+ if $opt{'cdr_carrier'};
+
+my %hash = ( 'disabled' => '', );
+
+$opt{'records'} ||= [ qsearch( 'cdr_carrier', \%hash ) ];
+
+</%init>
diff --git a/httemplate/elements/tr-select-cdr_carrier.html b/httemplate/elements/tr-select-cdr_carrier.html
new file mode 100644
index 000000000..b39a4d4aa
--- /dev/null
+++ b/httemplate/elements/tr-select-cdr_carrier.html
@@ -0,0 +1,27 @@
+% if ( scalar(@{ $opt{'cdr_carrier'} }) == 0 ) {
+
+ <INPUT TYPE="hidden" NAME="<% $opt{'field'} || 'carrierid' %>" VALUE="">
+
+% } else {
+
+ <TR>
+ <TD ALIGN="right"><% $opt{'label'} || 'Carrier' %></TD>
+ <TD>
+ <% include( '/elements/select-cdr_carrier.html',
+ %opt,
+ )
+ %>
+ </TD>
+ </TR>
+
+% }
+
+<%init>
+
+my( %opt ) = @_;
+
+my %hash = ( 'disabled' => '', );
+
+$opt{'cdr_carrier'} ||= [ qsearch( 'cdr_carrier', \%hash ) ];
+
+</%init>
diff --git a/httemplate/view/svc_phone.cgi b/httemplate/view/svc_phone.cgi
index 408364aeb..ccd9ae7c7 100644
--- a/httemplate/view/svc_phone.cgi
+++ b/httemplate/view/svc_phone.cgi
@@ -31,15 +31,26 @@ if ( $conf->exists('showpasswords') ) {
push @fields, qw( pin phone_name forwarddst email );
+push @fields, { field => 'sms_carrierid',
+ #type=>'cdr_carrier',
+ value_callback => sub {
+ $_[0]->sms_carriername,
+ },
+ },
+ 'sms_account',
+ 'max_simultaneous',
+;
+
if ( $conf->exists('svc_phone-lnp') ) {
-push @fields, 'lnp_status',
- 'lnp_reject_reason',
- { field => 'portable', type => 'checkbox', },
- 'lrn',
- { field => 'lnp_desired_due_date', type => 'date', },
- { field => 'lnp_due_date', type => 'date', },
- 'lnp_other_provider',
- 'lnp_other_provider_account';
+ push @fields, 'lnp_status',
+ 'lnp_reject_reason',
+ { field => 'portable', type => 'checkbox', },
+ 'lrn',
+ { field => 'lnp_desired_due_date', type => 'date', },
+ { field => 'lnp_due_date', type => 'date', },
+ 'lnp_other_provider',
+ 'lnp_other_provider_account',
+ ;
}
my $html_foot = sub {