{
'key' => 'credit-card-surcharge-percentage',
'section' => 'billing',
- 'description' => 'Add a credit card surcharge to invoices, as a % of the invoice total. WARNING: this is usually prohibited by merchant account / other agreements and/or law, but is currently lawful in AU and UK.',
+ 'description' => 'Add a credit card surcharge to invoices, as a % of the invoice total. WARNING: Although recently permitted to US merchants in general, specific consumer protection laws may prohibit or restrict this practice in California, Colorado, Connecticut, Florda, Kansas, Maine, Massachusetts, New York, Oklahome, and Texas. Surcharging is also generally prohibited in most countries outside the US, AU and UK. When allowed, typically not permitted to be above 4%.',
'type' => 'text',
},
'%m/%d/%Y' => 'MM/DD/YYYY',
'%d/%m/%Y' => 'DD/MM/YYYY',
'%Y/%m/%d' => 'YYYY/MM/DD',
+ '%e %b %Y' => 'DD Mon YYYY',
],
+ 'per_locale' => 1,
},
{
'%d/%m/%Y' => 'DD/MM/YYYY',
'%Y/%m/%d' => 'YYYY/MM/DD',
],
+ 'per_locale' => 1,
},
{
{
'key' => 'unapplycredits',
'section' => 'deprecated',
- 'description' => '<B>DEPRECATED</B>, now controlled by ACLs. Used to nable "unapplication" of unclosed credits.',
+ 'description' => '<B>DEPRECATED</B>, now controlled by ACLs. Used to enable "unapplication" of unclosed credits.',
'type' => 'checkbox',
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'invoice_print_pdf-duplex',
+ 'section' => 'invoicing',
+ 'description' => 'Insert blank pages so that spooled invoices are each an even number of pages. Use this for double-sided printing.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'invoice_default_terms',
'section' => 'invoicing',
'description' => 'Optional default invoice term, used to calculate a due date printed on invoices.',
'type' => 'select',
- 'select_enum' => [ '', 'Payable upon receipt', 'Net 0', 'Net 3', 'Net 9', 'Net 10', 'Net 15', 'Net 18', 'Net 20', 'Net 21', 'Net 30', 'Net 45', 'Net 60', 'Net 90' ],
- },
+ 'per_agent' => 1,
+ 'select_enum' => [
+ '', 'Payable upon receipt', 'Net 0', 'Net 3', 'Net 5', 'Net 9', 'Net 10', 'Net 14',
+ 'Net 15', 'Net 18', 'Net 20', 'Net 21', 'Net 25', 'Net 30', 'Net 45',
+ 'Net 60', 'Net 90'
+ ], },
{
'key' => 'invoice_show_prior_due_date',
},
{
- 'key' => 'invoice_sections_by_location',
+ 'key' => 'invoice_sections_method',
'section' => 'invoicing',
- 'description' => 'Divide invoice into sections according to service location. Currently, this overrides sectioning by package category.',
- 'type' => 'checkbox',
- 'per_agent' => 1,
+ 'description' => 'How to group line items on multi-section invoices.',
+ 'type' => 'select',
+ 'select_enum' => [ qw(category location) ],
+ },
+
+ {
+ 'key' => 'summary_subtotals_method',
+ 'section' => 'invoicing',
+ 'description' => 'How to group line items when calculating summary subtotals. By default, it will be the same method used for grouping invoice sections.',
+ 'type' => 'select',
+ 'select_enum' => [ qw(category location) ],
},
#quotations seem broken-ish with sections ATM?
# 'per_agent' => 1,
#},
+ {
+ 'key' => 'usage_class_summary',
+ 'section' => 'invoicing',
+ 'description' => 'Summarize total usage by usage class in a separate section.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'usage_class_as_a_section',
'section' => 'invoicing',
'type' => 'text',
},
+ {
+ 'key' => 'papersize',
+ 'section' => 'billing',
+ 'description' => 'Invoice paper size. Default is "letter" (U.S. standard). The LaTeX template must be configured to match this size.',
+ 'type' => 'select',
+ 'select_enum' => [ qw(letter a4) ],
+ },
+
{
'key' => 'money_char',
'section' => '',
{
'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)',
+ 'description' => 'Maximum SIP password length (default 80)',
'type' => 'text',
},
'key' => 'selfservice-timeout',
'section' => 'self-service',
'description' => 'Timeout for the self-service login cookie, in seconds. Defaults to 1 hour.',
+ 'type' => 'text',
},
{
{
'key' => 'cvv-save',
'section' => 'billing',
- 'description' => 'Save CVV2 information after the initial transaction for the selected credit card types. Enabling this option may be in violation of your merchant agreement(s), so please check them carefully before enabling this option for any credit card types.',
+ 'description' => 'NOT RECOMMENDED. Saves CVV2 information after the initial transaction for the selected credit card types. Enabling this option is almost certainly in violation of your merchant agreement(s), so please check them carefully before enabling this option for any credit card types.',
'type' => 'selectmultiple',
'select_enum' => \@card_types,
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'backoffice-require_cvv',
+ 'section' => 'billing',
+ 'description' => 'Require CVV for manual credit card entry.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'selfservice-onfile_require_cvv',
+ 'section' => 'self-service',
+ 'description' => 'Require CVV for on-file credit card during self-service payments.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'selfservice-require_cvv',
+ 'section' => 'self-service',
+ 'description' => 'Require CVV for credit card self-service payments, except for cards on-file.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'manual_process-pkgpart',
'section' => 'billing',
'type' => 'checkbox',
},
+ {
+ 'key' => 'selfservice_immutable-package',
+ 'section' => 'self-service',
+ 'description' => 'Disable package changes in self-service interface.',
+ 'type' => 'checkbox',
+ 'per_agent' => 1,
+ },
+
+ {
+ 'key' => 'selfservice_hide-usage',
+ 'section' => 'self-service',
+ 'description' => 'Hide usage data in self-service interface.',
+ 'type' => 'checkbox',
+ 'per_agent' => 1,
+ },
+
{
'key' => 'selfservice_process-pkgpart',
'section' => 'billing',
%msg_template_options,
},
+ {
+ 'key' => 'selfservice-password_change_oldpass',
+ 'section' => 'self-service',
+ 'description' => 'Require old password to be entered again for password changes (in addition to being logged in), at the API level.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'selfservice-hide_invoices-taxclass',
'section' => 'self-service',
'section' => 'self-service',
'description' => 'Suspend reason when customers suspend their own packages. Set to nothing to disallow self-suspension.',
'type' => 'select-sub',
+ #false laziness w/api_credit_reason
'options_sub' => sub { require FS::Record;
require FS::reason;
my $type = qsearchs('reason_type',
'description' => 'Optional "site ID" to show in the location label',
'type' => 'select',
'select_hash' => [ '' => '',
- 'CoStAg' => 'CoStAgXXXXX (country, state, agent name, locationnum)',
+ 'CoStAg' => 'CoStAgXXXXX (country, state, agent name, locationnum)',
+ '_location' => 'Manually defined per location',
],
},
},
{
- 'key' => 'cust_pkg-show_fcc_voice_grade_equivalent',
+ 'key' => 'cust_pkg-large_pkg_size',
'section' => 'UI',
- 'description' => "Show fields on package definitions for FCC Form 477 classification",
+ 'description' => "In customer view, summarize packages with more than this many services. Set to zero to never summarize packages.",
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'cust_pkg-hide_discontinued-part_svc',
+ 'section' => 'UI',
+ 'description' => "In customer view, hide provisioned services which are no longer available in the package definition. Not normally used except for very specific situations as it hides still-provisioned services.",
'type' => 'checkbox',
},
{
- 'key' => 'cust_pkg-large_pkg_size',
+ 'key' => 'part_pkg-show_fcc_options',
'section' => 'UI',
- 'description' => "In customer view, summarize packages with more than this many services. Set to zero to never summarize packages.",
- 'type' => 'text',
+ 'description' => "Show fields on package definitions for FCC Form 477 classification",
+ 'type' => 'checkbox',
},
{
'type' => 'select',
'select_enum' => [ 'NACHA', 'csv-td_canada_trust-merchant_pc_batch',
'csv-chase_canada-E-xactBatch', 'BoM', 'PAP',
- 'paymentech', 'ach-spiritone', 'RBC'
+ 'paymentech', 'ach-spiritone', 'RBC', 'CIBC',
]
},
'type' => 'select',
'select_enum' => [ 'NACHA', 'csv-td_canada_trust-merchant_pc_batch', 'BoM',
'PAP', 'paymentech', 'ach-spiritone', 'RBC',
- 'td_eft1464', 'eft_canada'
+ 'td_eft1464', 'eft_canada', 'CIBC'
]
},
'type' => 'textarea',
},
+{
+ 'key' => 'batchconfig-CIBC',
+ 'section' => 'billing',
+ 'description' => 'Configuration for Canadian Imperial Bank of Commerce, six lines: 1. Origin ID, 2. Datacenter, 3. Typecode, 4. Short name, 5. Bank, 6. Bank account',
+ 'type' => 'textarea',
+ },
+
{
'key' => 'batchconfig-PAP',
'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. 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.',
+ 'description' => 'Configuration for EFT Canada batching, five lines: 1. SFTP username, 2. SFTP password, 3. Business transaction code, 4. Personal transaction code, 5. 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,
},
},
{
- 'key' => 'cust_main-enable_spouse_birthdate',
+ 'key' => 'cust_main-enable_spouse',
'section' => 'UI',
- 'description' => 'Enable tracking of a spouse birth date with each customer record',
+ 'description' => 'Enable tracking of a spouse\'s name and date of birth with each customer record',
'type' => 'checkbox',
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'cust_main-enable_order_package',
+ 'section' => 'UI',
+ 'description' => 'Display order new package on the basic tab',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cust_main-edit_calling_list_exempt',
'section' => 'UI',
'select_enum' => [ '1 hour', '2 hours', '4 hours', '8 hours', '1 day', '1 week', ],
},
- {
- 'key' => 'disable_setup_suspended_pkgs',
- 'section' => 'billing',
- 'description' => 'Disables charging of setup fees for suspended packages.',
- 'type' => 'checkbox',
- },
-
{
'key' => 'password-generated-allcaps',
'section' => 'password',
'type' => 'checkbox',
},
+ {
+ 'key' => 'previous_invoice_history',
+ 'section' => 'invoicing',
+ 'description' => 'Show a month-by-month history of the customer\'s '.
+ 'billing amounts. This requires template '.
+ 'modification and is currently not supported on the '.
+ 'stock template.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'balance_due_below_line',
'section' => 'invoicing',
'type' => 'text',
},
+ {
+ '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',
+ },
+
{
'key' => 'signup-no_company',
'section' => 'self-service',
'type' => 'checkbox',
},
+ {
+ 'key' => 'svc_phone-bulk_provision_simple',
+ 'section' => 'telephony',
+ 'description' => 'Bulk provision phone numbers with a simple number range instead of from DID vendor orders',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'default_phone_countrycode',
- 'section' => '',
- 'description' => 'Default countrcode',
+ 'section' => 'telephony',
+ 'description' => 'Default countrycode',
'type' => 'text',
},
{
'key' => 'tax-cust_exempt-groups',
- 'section' => '',
+ 'section' => 'billing',
'description' => 'List of grouping possibilities for tax names, for per-customer exemption purposes, one tax name per line. For example, "GST" would indicate the ability to exempt customers individually from taxes named "GST" (but not other taxes).',
'type' => 'textarea',
},
{
'key' => 'tax-cust_exempt-groups-require_individual_nums',
- 'section' => '',
- 'description' => 'When using tax-cust_exempt-groups, require an individual tax exemption number for each exemption from different taxes.',
+ 'section' => 'deprecated',
+ 'description' => 'Deprecated: see tax-cust_exempt-groups-number_requirement',
'type' => 'checkbox',
},
+ {
+ 'key' => 'tax-cust_exempt-groups-num_req',
+ 'section' => 'billing',
+ 'description' => 'When using tax-cust_exempt-groups, control whether individual tax exemption numbers are required for exemption from different taxes.',
+ 'type' => 'select',
+ 'select_hash' => [ '' => 'Not required',
+ 'residential' => 'Required for residential customers only',
+ 'all' => 'Required for all customers',
+ ],
+ },
+
{
'key' => 'cust_main-default_view',
'section' => 'UI',
},
},
+ #false laziness w/above options_sub and option_sub
+ {
+ 'key' => 'cust_location-exports',
+ 'section' => '',
+ 'description' => 'Export(s) to call on cust_location insert, modification and deletion.',
+ 'type' => 'select-sub',
+ 'multiple' => 1,
+ 'options_sub' => sub {
+ require FS::Record;
+ require FS::part_export;
+ my @part_export =
+ map { qsearch( 'part_export', {exporttype => $_ } ) }
+ keys %{FS::part_export::export_info('cust_location')};
+ map { $_->exportnum => $_->exporttype.' to '.$_->machine } @part_export;
+ },
+ 'option_sub' => sub {
+ require FS::Record;
+ require FS::part_export;
+ my $part_export = FS::Record::qsearchs(
+ 'part_export', { 'exportnum' => shift }
+ );
+ $part_export
+ ? $part_export->exporttype.' to '.$part_export->machine
+ : '';
+ },
+ },
+
{
'key' => 'cust_tag-location',
'section' => 'UI',
{
'key' => 'cust_main-custom_link',
'section' => 'UI',
- 'description' => 'URL to use as source for the "Custom" tab in the View Customer page. The customer number will be appended, or you can insert "$custnum" to have it inserted elsewhere. "$agentnum" will be replaced with the agent number, and "$usernum" will be replaced with the employee number.',
+ 'description' => 'URL to use as source for the "Custom" tab in the View Customer page. The customer number will be appended, or you can insert "$custnum" to have it inserted elsewhere. "$agentnum" will be replaced with the agent number, "$agent_custid" with be replaced with the agent customer ID (if any), and "$usernum" will be replaced with the employee number.',
'type' => 'textarea',
},
'select_hash' => \@cdr_formats,
},
+ {
+ 'key' => 'selfservice-hide_cdr_price',
+ 'section' => 'self-service',
+ 'description' => 'Don\'t show the "Price" column on CDRs in self-service.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'logout-timeout',
'section' => 'UI',
'type' => 'checkbox',
},
+ {
+ 'key' => 'default_credit_limit',
+ 'section' => 'billing',
+ 'description' => 'Default customer credit limit',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'api_shared_secret',
+ 'section' => 'API',
+ 'description' => 'Shared secret for back-office API authentication',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'xmlrpc_api',
+ 'section' => 'API',
+ 'description' => 'Enable the back-office API XML-RPC server (on port 8008).',
+ 'type' => 'checkbox',
+ },
+
+# {
+# 'key' => 'jsonrpc_api',
+# 'section' => 'API',
+# 'description' => 'Enable the back-office API JSON-RPC server (on port 8081).',
+# 'type' => 'checkbox',
+# },
+
+ {
+ 'key' => 'api_credit_reason',
+ 'section' => 'API',
+ 'description' => 'Default reason for back-office API credits',
+ 'type' => 'select-sub',
+ #false laziness w/api_credit_reason
+ 'options_sub' => sub { require FS::Record;
+ require FS::reason;
+ my $type = qsearchs('reason_type',
+ { class => 'R' })
+ or return ();
+ map { $_->reasonnum => $_->reason }
+ FS::Record::qsearch('reason',
+ { reason_type => $type->typenum }
+ );
+ },
+ 'option_sub' => sub { require FS::Record;
+ require FS::reason;
+ my $reason = FS::Record::qsearchs(
+ 'reason', { 'reasonnum' => shift }
+ );
+ $reason ? $reason->reason : '';
+ },
+ },
+
+ {
+ 'key' => 'part_pkg-term_discounts',
+ 'section' => 'billing',
+ 'description' => 'Enable the term discounts feature. Recommended to keep turned off unless actually using - not well optimized for large installations.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'prepaid-never_renew',
+ 'section' => 'billing',
+ 'description' => 'Prepaid packages never renew.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'agent-disable_counts',
+ 'section' => 'UI',
+ 'description' => 'On the agent browse page, disable the customer and package counts. Typically used for very large databases when this page takes too long to render.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'tollfree-country',
+ 'section' => 'telephony',
+ 'description' => 'Country / region for toll-free recognition',
+ 'type' => 'select',
+ 'select_hash' => [ '' => 'NANPA (US/Canada)',
+ 'AU' => 'Australia',
+ 'NZ' => 'New Zealand',
+ ],
+ },
+
+ {
+ 'key' => 'old_fcc_report',
+ 'section' => '',
+ 'description' => 'Use the old (pre-2014) FCC Form 477 report format.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_main-default_commercial',
+ 'section' => 'UI',
+ 'description' => 'Default for new customers is commercial rather than residential.',
+ '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" },