use IO::File;
use File::Basename;
use MIME::Base64;
+use Locale::Currency;
use FS::ConfItem;
use FS::ConfDefaults;
use FS::Conf_compat17;
{
'key' => 'alert_expiration',
- 'section' => 'notification',
- 'description' => 'Enable alerts about billing method expiration (i.e. expiring credit cards).',
+ 'section' => 'deprecated',
+ 'description' => 'Enable alerts about credit card expiration. This is obsolete and no longer works.',
'type' => 'checkbox',
'per_agent' => 1,
},
{
'key' => 'alerter_msgnum',
- 'section' => 'notification',
+ 'section' => 'deprecated',
'description' => 'Template to use for credit card expiration alerts.',
%msg_template_options,
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'anniversary-rollback',
+ 'section' => 'billing',
+ 'description' => 'When billing an anniversary package ordered after the 28th, roll the anniversary date back to the 28th instead of forward into the following month.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'encryption',
'section' => 'billing',
'type' => 'text',
'per_agent' => 1,
},
-
+
+ {
+ 'key' => 'billco-account_num',
+ 'section' => 'billing',
+ 'description' => 'The data to place in the "Transaction Account No" / "TRACCTNUM" field.',
+ 'type' => 'select',
+ 'select_hash' => [
+ 'invnum-date' => 'Invoice number - Date (default)',
+ 'display_custnum' => 'Customer number',
+ ],
+ 'per_agent' => 1,
+ },
+
{
'key' => 'next-bill-ignore-time',
'section' => 'billing',
{
'key' => 'currency',
'section' => 'billing',
- 'description' => 'Currency',
+ 'description' => 'Main accounting currency',
'type' => 'select',
'select_enum' => [ '', qw( USD AUD CAD DKK EUR GBP ILS JPY NZD XAF ) ],
},
+ {
+ 'key' => 'currencies',
+ 'section' => 'billing',
+ 'description' => 'Additional accepted currencies',
+ 'type' => 'select-sub',
+ 'multiple' => 1,
+ 'options_sub' => sub {
+ map { $_ => code2currency($_) } all_currency_codes();
+ },
+ 'sort_sub' => sub ($$) { $_[0] cmp $_[1]; },
+ 'option_sub' => sub { code2currency(shift); },
+ },
+
{
'key' => 'business-batchpayment-test_transaction',
'section' => 'billing',
'select_hash' => [
'%b %o, %Y' => 'Mon DDth, YYYY',
'%e %b %Y' => 'DD Mon YYYY',
+ '%m/%d/%Y' => 'MM/DD/YYYY',
+ '%d/%m/%Y' => 'DD/MM/YYYY',
+ '%Y/%m/%d' => 'YYYY/MM/DD',
],
},
- {
- 'key' => 'deletecustomers',
- 'section' => 'UI',
- 'description' => 'Enable customer deletions. Be very careful! Deleting a customer will remove all traces that the customer ever existed! It should probably only be used when auditing a legacy database. Normally, you cancel all of a customers\' packages if they cancel service.',
- 'type' => 'checkbox',
- },
-
{
'key' => 'deleteinvoices',
'section' => 'UI',
- 'description' => 'Enable invoices deletions. Be very careful! Deleting an invoice will remove all traces that the invoice ever existed! Normally, you would apply a credit against the invoice instead.', #invoice voiding?
+ 'description' => 'Enable invoices deletions. Be very careful! Deleting an invoice will remove all traces that the invoice ever existed! Normally, you would void or apply a credit against the invoice instead.',
'type' => 'checkbox',
},
- {
- 'key' => 'deletepayments',
- 'section' => 'billing',
- 'description' => 'Enable deletion of unclosed payments. Really, with voids this is pretty much not recommended in any situation anymore. Be very careful! Only delete payments that were data-entry errors, not adjustments. Optionally specify one or more comma-separated email addresses to be notified when a payment is deleted.',
- 'type' => [qw( checkbox text )],
- },
-
{
'key' => 'deletecredits',
#not actually deprecated yet
},
{
- 'key' => 'invoice_include_aging',
+ 'key' => 'invoice_sections',
'section' => 'invoicing',
- 'description' => 'Show an aging line after the prior balance section. Only valud when invoice_sections is enabled.',
+ 'description' => 'Split invoice into sections and label according to package category when enabled.',
'type' => 'checkbox',
+ 'per_agent' => 1,
},
{
- 'key' => 'invoice_sections',
+ 'key' => 'invoice_include_aging',
'section' => 'invoicing',
- 'description' => 'Split invoice into sections and label according to package category when enabled.',
+ 'description' => 'Show an aging line after the prior balance section. Only valid when invoice_sections is enabled.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'invoice_sections_by_location',
+ 'section' => 'invoicing',
+ 'description' => 'Divide invoice into sections according to service location. Currently, this overrides sectioning by package category.',
'type' => 'checkbox',
+ 'per_agent' => 1,
},
+ #quotations seem broken-ish with sections ATM?
+ #{
+ # 'key' => 'quotation_sections',
+ # 'section' => 'invoicing',
+ # 'description' => 'Split quotations into sections and label according to package category when enabled.',
+ # 'type' => 'checkbox',
+ # 'per_agent' => 1,
+ #},
+
{
'key' => 'usage_class_as_a_section',
'section' => 'invoicing',
'type' => 'text',
},
+ {
+ 'key' => 'sip_passwordmin',
+ 'section' => 'telephony',
+ 'description' => 'Minimum SIP password length (default 6)',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'sip_passwordmax',
+ 'section' => 'telephony',
+ 'description' => 'Maximum SIP password length (default 8) (don\'t set this over 12 if you need to import or export crypt() passwords)',
+ 'type' => 'text',
+ },
+
+
{
'key' => 'password-noampersand',
'section' => 'password',
'type' => 'checkbox',
},
+ {
+ 'key' => 'show_ship_company',
+ 'section' => 'UI',
+ 'description' => 'Turns on display/collection of a "service company name" field for customers.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'show_ss',
'section' => 'UI',
'section' => 'self-service',
'description' => 'Acceptable payment types for the signup server',
'type' => 'selectmultiple',
- 'select_enum' => [ qw(CARD DCRD CHEK DCHK LECB PREPAY BILL COMP) ],
+ 'select_enum' => [ qw(CARD DCRD CHEK DCHK PREPAY PPAL BILL COMP) ],
},
{
{
'key' => 'signup_server-default_svcpart',
'section' => 'self-service',
- 'description' => 'Default service definition for the signup server - only necessary for services that trigger special provisioning widgets (such as DID provisioning).',
+ 'description' => 'Default service definition for the signup server - only necessary for services that trigger special provisioning widgets (such as DID provisioning or domain selection).',
'type' => 'select-part_svc',
},
+ {
+ 'key' => 'signup_server-default_domsvc',
+ 'section' => 'self-service',
+ 'description' => 'If specified, the default domain svcpart for signup (useful when domain is set to selectable choice).',
+ 'type' => 'text',
+ },
+
{
'key' => 'signup_server-mac_addr_svcparts',
'section' => 'self-service',
'type' => 'checkbox',
},
+ {
+ 'key' => 'selfservice-timeout',
+ 'section' => 'self-service',
+ 'description' => 'Timeout for the self-service login cookie, in seconds. Defaults to 1 hour.',
+ 'type' => 'text',
+ },
+
{
'key' => 'backend-realtime',
'section' => 'billing',
'section' => 'billing',
'description' => 'Available payment types.',
'type' => 'selectmultiple',
- 'select_enum' => [ qw(CARD DCRD CHEK DCHK LECB BILL CASH WEST MCRD COMP) ],
+ 'select_enum' => [ qw(CARD DCRD CHEK DCHK BILL CASH WEST MCRD PPAL COMP) ],
},
{
'section' => 'UI',
'description' => 'Default payment type. HIDE disables display of billing information and sets customers to BILL.',
'type' => 'select',
- 'select_enum' => [ '', qw(CARD DCRD CHEK DCHK LECB BILL CASH WEST MCRD COMP HIDE) ],
+ 'select_enum' => [ '', qw(CARD DCRD CHEK DCHK BILL CASH WEST MCRD PPAL COMP HIDE) ],
},
{
{
'key' => 'network_monitoring_system',
'section' => 'network_monitoring',
- 'description' => 'Networking monitoring system (NMS) integration. <b>Torrus_Internal</b> uses the built-in Torrus ticketing system (see the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:2.1:Documentation:Torrus_Installation">integrated networking monitoring system installation instructions</a>).',
+ 'description' => 'Networking monitoring system (NMS) integration. <b>Torrus_Internal</b> uses the built-in Torrus ticketing system (see the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:3:Documentation:Torrus_Installation">integrated networking monitoring system installation instructions</a>).',
'type' => 'select',
'select_enum' => [ '', qw(Torrus_Internal) ],
},
'type' => 'checkbox',
},
- {
- 'key' => 'echeck-nonus',
- 'section' => 'billing',
- 'description' => 'Disable ABA-format account checking for Electronic Check payment info',
- 'type' => 'checkbox',
- },
-
{
'key' => 'echeck-country',
'section' => 'billing',
{
'key' => 'batchconfig-eft_canada',
'section' => 'billing',
- 'description' => 'Configuration for EFT Canada batching, four lines: 1. SFTP username, 2. SFTP password, 3. Transaction code, 4. Number of days to delay process date.',
+ 'description' => 'Configuration for EFT Canada batching, four lines: 1. SFTP username, 2. SFTP password, 3. Transaction code, 4. Number of days to delay process date. If you are using separate per-agent batches (batch-spoolagent), you must set this option separately for each agent, as the global setting will be ignored.',
'type' => 'textarea',
'per_agent' => 1,
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'fuzzy-fuzziness',
+ 'section' => 'UI',
+ 'description' => 'Set the "fuzziness" of fuzzy searching (see the String::Approx manpage for details). Defaults to 10%',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'enable_fuzzy_on_exact',
+ 'section' => 'UI',
+ 'description' => 'Enable approximate customer searching even when an exact match is found.',
+ 'type' => 'checkbox',
+ },
+
{ 'key' => 'pkg_referral',
'section' => '',
'description' => 'Enable package-specific advertising sources.',
'type' => 'select',
'multiple' => 1,
'select_hash' => [
- #'address1' => 'Billing address',
+ 'address' => 'Billing or service address',
],
},
'type' => [ qw(checkbox text) ],
},
+ {
+ 'key' => 'previous_balance-section',
+ 'section' => 'invoicing',
+ 'description' => 'Show previous invoice balances in a separate invoice section. Does not require invoice_sections to be enabled.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'previous_balance-summary_only',
'section' => 'invoicing',
'type' => 'checkbox',
},
+ {
+ 'key' => 'previous_balance-payments_since',
+ 'section' => 'invoicing',
+ 'description' => 'Instead of showing payments (and credits) applied to the invoice, show those received since the previous invoice date.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'balance_due_below_line',
'section' => 'invoicing',
'type' => 'checkbox',
},
+ {
+ 'key' => 'always_show_tax',
+ 'section' => 'invoicing',
+ 'description' => 'Show a line for tax on the invoice even when the tax is zero. Optionally provide text for the tax name to show.',
+ 'type' => [ qw(checkbox text) ],
+ },
+
{
'key' => 'address_standardize_method',
'section' => 'UI', #???
'description' => 'Method for standardizing customer addresses.',
'type' => 'select',
'select_hash' => [ '' => '',
- 'usps' => 'U.S. Postal Service',
+ 'usps' => 'U.S. Postal Service',
'ezlocate' => 'EZLocate',
+ 'tomtom' => 'TomTom',
+ 'melissa' => 'Melissa WebSmart',
],
},
'type' => 'text',
},
+ {
+ 'key' => 'tomtom-userid',
+ 'section' => 'UI',
+ 'description' => 'TomTom geocoding service API key. See <a href="http://www.tomtom.com/">the TomTom website</a> to obtain a key. This is recommended for addresses in the United States only.',
+ 'type' => 'text',
+ },
+
{
'key' => 'ezlocate-userid',
'section' => 'UI',
'type' => 'text'
},
+ {
+ 'key' => 'melissa-userid',
+ 'section' => 'UI', # it's really not...
+ 'description' => 'User ID for Melissa WebSmart service. See <a href="http://www.melissadata.com/">the Melissa website</a> for access and pricing.',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'melissa-enable_geocoding',
+ 'section' => 'UI',
+ 'description' => 'Use the Melissa service for census tract and coordinate lookups. Enable this only if your subscription includes geocoding access.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cust_main-auto_standardize_address',
'section' => 'UI',
{
'key' => 'census_year',
'section' => 'UI',
- 'description' => 'The year to use in census tract lookups. NOTE: you need to select 2012 for Year 2010 Census tract codes. A selection of 2011 or 2010 provides Year 2000 Census tract codes. Use the freeside-censustract-update tool if exisitng customers need to be changed.',
+ 'description' => 'The year to use in census tract lookups. NOTE: you need to select 2012 or 2013 for Year 2010 Census tract codes. A selection of 2011 provides Year 2000 Census tract codes. Use the freeside-censustract-update tool if exisitng customers need to be changed.',
'type' => 'select',
- 'select_enum' => [ qw( 2012 2011 2010 ) ],
+ 'select_enum' => [ qw( 2013 2012 2011 ) ],
},
{
'type' => 'checkbox',
},
+ {
+ 'key' => 'part_pkg-delay_start',
+ 'section' => '',
+ 'description' => 'Enabled "delayed start" option for packages.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'mcp_svcpart',
'section' => '',
},
{
- 'key' => 'selfservice-bulk_format',
- 'section' => 'deprecated',
- 'description' => 'Parameter arrangement for selfservice bulk features',
- 'type' => 'select',
- 'select_enum' => [ '', 'izoom-soap', 'izoom-ftp' ],
- 'per_agent' => 1,
- },
-
- {
- 'key' => 'selfservice-bulk_ftp_dir',
- 'section' => 'deprecated',
- 'description' => 'Enable bulk ftp provisioning in this folder',
- 'type' => 'text',
- 'per_agent' => 1,
+ 'key' => 'ng_selfservice-menu',
+ 'section' => 'self-service',
+ 'description' => 'Custom menu for the next-generation self-service interface. Each line is in the format "link Label", for example "main.php Home". Sub-menu items are listed on subsequent lines. Blank lines terminate the submenu.', #more docs/examples would be helpful
+ 'type' => 'textarea',
},
{
'type' => 'text',
},
+ {
+ 'key' => 'svc_phone-radius-password',
+ 'section' => 'telephony',
+ 'description' => 'Password when exporting svc_phone records to RADIUS',
+ 'type' => 'select',
+ 'select_hash' => [
+ '' => 'Use default from svc_phone-radius-default_password config',
+ 'countrycode_phonenum' => 'Phone number (with country code)',
+ ],
+ },
+
{
'key' => 'svc_phone-radius-default_password',
'section' => 'telephony',
'type' => 'text',
},
+ {
+ 'key' => 'queue-no_history',
+ 'section' => '',
+ 'description' => "Don't recreate the h_queue and h_queue_arg tables on upgrades. This can save disk space for large installs, especially when using prepaid or multi-process billing. After turning this option on, drop the h_queue and h_queue_arg tables, run freeside-dbdef-create and restart Apache and Freeside.",
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cancelled_cust-noevents',
'section' => 'billing',
{
'key' => 'svc_broadband-manage_link',
'section' => 'UI',
- 'description' => 'URL for svc_broadband "Manage Device" link. The following substitutions are available: $ip_addr.',
+ 'description' => 'URL for svc_broadband "Manage Device" link. The following substitutions are available: $ip_addr and $mac_addr.',
'type' => 'text',
},
{
'key' => 'pkg-balances',
'section' => 'billing',
- 'description' => 'Enable experimental package balances. Not recommended for general use.',
+ 'description' => 'Enable per-package balances.',
'type' => 'checkbox',
},
'select_enum' => [ 'misc_info', 'top' ],
},
- {
- 'key' => 'maestro-status_test',
- 'section' => 'UI',
- 'description' => 'Display a link to the maestro status test page on the customer view page',
- 'type' => 'checkbox',
- },
-
{
'key' => 'cust_main-custom_link',
'section' => 'UI',
{
'key' => 'svc_phone-did-summary',
'section' => 'invoicing',
- 'description' => 'Enable DID activity summary on invoices, showing # DIDs activated/deactivated/ported-in/ported-out and total minutes usage, covering period since last invoice.',
+ 'description' => 'Experimental feature to enable DID activity summary on invoices, showing # DIDs activated/deactivated/ported-in/ported-out and total minutes usage, covering period since last invoice.',
'type' => 'checkbox',
},
'type' => 'text',
},
+ {
+ 'key' => 'invoice_payment_details',
+ 'section' => 'invoicing',
+ 'description' => 'When displaying payments on an invoice, show the payment method used, including the check or credit card number. Credit card numbers will be masked.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cust_main-status_module',
'section' => 'UI',
'select_enum' => [ 'Classic', 'Recurring' ],
},
- {
- 'key' => 'cust_main-print_statement_link',
- 'section' => 'UI',
- 'description' => 'Show a link to download a current statement for the customer.',
- 'type' => 'checkbox',
- },
-
{
'key' => 'username-pound',
'section' => 'username',
$cdr_type ? $cdr_type->cdrtypename : '';
},
},
+
+ {
+ 'key' => 'cdr-minutes_priority',
+ 'section' => 'telephony',
+ 'description' => 'Priority rule for assigning included minutes to CDRs.',
+ 'type' => 'select',
+ 'select_hash' => [
+ '' => 'No specific order',
+ 'time' => 'Chronological',
+ 'rate_high' => 'Highest rate first',
+ 'rate_low' => 'Lowest rate first',
+ ],
+ },
{
'key' => 'brand-agent',
'type' => 'text',
},
+ {
+ 'key' => 'report-cust_pay-select_time',
+ 'section' => 'UI',
+ 'description' => 'Enable time selection on payment and refund reports.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'authentication_module',
+ 'section' => 'UI',
+ 'description' => '"Internal" is the default , which authenticates against the internal database. "Legacy" is similar, but matches passwords against a legacy htpasswd file.',
+ 'type' => 'select',
+ 'select_enum' => [qw( Internal Legacy )],
+ },
+
+ {
+ 'key' => 'external_auth-access_group-template_user',
+ 'section' => 'UI',
+ 'description' => 'When using an external authentication module, specifies the default access groups for autocreated users, via a template user.',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'allow_invalid_cards',
+ 'section' => '',
+ 'description' => 'Accept invalid credit card numbers. Useful for testing with fictitious customers. There is no good reason to enable this in production.',
+ 'type' => 'checkbox',
+ },
+
{ key => "apacheroot", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
{ key => "apachemachine", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
{ key => "apachemachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },