+ {
+ 'key' => 'agent-invoice_template',
+ 'section' => 'invoicing',
+ 'description' => 'Enable display/edit of old-style per-agent invoice template selection',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'svc_broadband-manage_link',
+ 'section' => 'UI',
+ 'description' => 'URL for svc_broadband "Manage Device" link. The following substitutions are available: $ip_addr.',
+ 'type' => 'text',
+ },
+
+ #more fine-grained, service def-level control could be useful eventually?
+ {
+ 'key' => 'svc_broadband-allow_null_ip_addr',
+ 'section' => '',
+ 'description' => '',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'tax-report_groups',
+ 'section' => '',
+ 'description' => 'List of grouping possibilities for tax names on reports, one per line, "label op value" (op can be = or !=).',
+ 'type' => 'textarea',
+ },
+
+ {
+ 'key' => 'tax-cust_exempt-groups',
+ 'section' => '',
+ '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' => 'cust_main-default_view',
+ 'section' => 'UI',
+ 'description' => 'Default customer view, for users who have not selected a default view in their preferences.',
+ 'type' => 'select',
+ 'select_hash' => [
+ #false laziness w/view/cust_main.cgi and pref/pref.html
+ 'basics' => 'Basics',
+ 'notes' => 'Notes',
+ 'tickets' => 'Tickets',
+ 'packages' => 'Packages',
+ 'payment_history' => 'Payment History',
+ 'change_history' => 'Change History',
+ 'jumbo' => 'Jumbo',
+ ],
+ },
+
+ {
+ 'key' => 'enable_tax_adjustments',
+ 'section' => 'billing',
+ 'description' => 'Enable the ability to add manual tax adjustments.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'rt-crontool',
+ 'section' => '',
+ 'description' => 'Enable the RT CronTool extension.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'pkg-balances',
+ 'section' => 'billing',
+ 'description' => 'Enable experimental package balances. Not recommended for general use.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'pkg-addon_classnum',
+ 'section' => 'billing',
+ 'description' => 'Enable the ability to restrict additional package orders based on package class.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_main-edit_signupdate',
+ 'section' => 'UI',
+ 'descritpion' => 'Enable manual editing of the signup date.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'svc_acct-disable_access_number',
+ 'section' => 'UI',
+ 'descritpion' => 'Disable access number selection.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_bill_pay_pkg-manual',
+ 'section' => 'UI',
+ 'description' => 'Allow manual application of payments to line items.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_credit_bill_pkg-manual',
+ 'section' => 'UI',
+ 'description' => 'Allow manual application of credits to line items.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'breakage-days',
+ 'section' => 'billing',
+ 'description' => 'If set to a number of days, after an account goes that long without activity, recognizes any outstanding payments and credits as "breakage" by creating a breakage charge and invoice.',
+ 'type' => 'text',
+ 'per_agent' => 1,
+ },
+
+ {
+ 'key' => 'breakage-pkg_class',
+ 'section' => 'billing',
+ 'description' => 'Package class to use for breakage reconciliation.',
+ 'type' => 'select-pkg_class',
+ },
+
+ {
+ 'key' => 'disable_cron_billing',
+ 'section' => 'billing',
+ 'description' => 'Disable billing and collection from being run by freeside-daily and freeside-monthly, while still allowing other actions to run, such as notifications and backup.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'svc_domain-edit_domain',
+ 'section' => '',
+ 'description' => 'Enable domain renaming',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'enable_legacy_prepaid_income',
+ 'section' => '',
+ 'description' => "Enable legacy prepaid income reporting. Only useful when you have imported pre-Freeside packages with longer-than-monthly duration, and need to do prepaid income reporting on them before they've been invoiced the first time.",
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_main-exports',
+ 'section' => '',
+ 'description' => 'Export(s) to call on cust_main 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_main')};
+ 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',
+ 'description' => 'Location where customer tags are displayed.',
+ 'type' => 'select',
+ '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',
+ 'description' => 'URL to use as source for the "Custom" tab in the View Customer page. The custnum will be appended.',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'cust_main-custom_title',
+ 'section' => 'UI',
+ 'description' => 'Title for the "Custom" tab in the View Customer page.',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'part_pkg-default_suspend_bill',
+ 'section' => 'billing',
+ 'description' => 'Default the "Continue recurring billing while suspended" flag to on for new package definitions.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'svc_acct-cf_privatekey-message',
+ 'section' => '',
+ 'description' => 'For internal use: HTML displayed when cf_privatekey field is set.',
+ 'type' => 'textarea',
+ },
+
+ {
+ 'key' => 'menu-prepend_links',
+ 'section' => 'UI',
+ 'description' => 'Links to prepend to the main menu, one per line, with format "URL Link Label (optional ALT popup)".',
+ 'type' => 'textarea',
+ },
+
+ {
+ 'key' => 'cust_main-external_links',
+ 'section' => 'UI',
+ 'description' => 'External links available in customer view, one per line, with format "URL Link Label (optional ALT popup)". The URL will have custnum appended.',
+ 'type' => 'textarea',
+ },
+
+ {
+ '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.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'opensips_gwlist',
+ 'section' => 'telephony',
+ 'description' => 'For svc_phone OpenSIPS dr_rules export, gwlist column value, per-agent',
+ 'type' => 'text',
+ 'per_agent' => 1,
+ 'agentonly' => 1,
+ },
+
+ {
+ 'key' => 'opensips_description',
+ 'section' => 'telephony',
+ 'description' => 'For svc_phone OpenSIPS dr_rules export, description column value, per-agent',
+ 'type' => 'text',
+ 'per_agent' => 1,
+ 'agentonly' => 1,
+ },
+
+ {
+ 'key' => 'opensips_route',
+ 'section' => 'telephony',
+ 'description' => 'For svc_phone OpenSIPS dr_rules export, routeid column value, per-agent',
+ 'type' => 'text',
+ 'per_agent' => 1,
+ 'agentonly' => 1,
+ },
+
+ {
+ 'key' => 'cust_bill-no_recipients-error',
+ 'section' => 'invoicing',
+ 'description' => 'For customers with no invoice recipients, throw a job queue error rather than the default behavior of emailing the invoice to the invoice_from address.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_bill-latex_lineitem_maxlength',
+ 'section' => 'invoicing',
+ 'description' => 'Truncate long line items to this number of characters on typeset invoices, to avoid losing things off the right margin. Defaults to 50. ',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'cust_main-status_module',
+ 'section' => 'UI',
+ 'description' => 'Which module to use for customer status display. The "Classic" module (the default) considers accounts with cancelled recurring packages but un-cancelled one-time charges Inactive. The "Recurring" module considers those customers Cancelled. Similarly for customers with suspended recurring packages but one-time charges.', #other differences?
+ 'type' => 'select',
+ 'select_enum' => [ 'Classic', 'Recurring' ],
+ },
+
+ {
+ 'key' => 'note-classes',
+ 'section' => 'UI',
+ 'description' => 'Use customer note classes',
+ 'type' => 'select',
+ 'select_hash' => [
+ 0 => 'Disabled',
+ 1 => 'Enabled',
+ 2 => 'Enabled, with tabs',
+ ],
+ },
+
+ {
+ 'key' => 'username-pound',
+ 'section' => 'username',
+ 'description' => 'Allow the pound character (#) in usernames.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'ie-compatibility_mode',
+ 'section' => 'UI',
+ 'description' => "Compatibility mode META tag for Internet Explorer, used on the customer view page. Not necessary in normal operation unless custom content (notes, cust_main-custom_link) is included on customer view that is incompatibile with newer IE verisons.",
+ 'type' => 'select',
+ 'select_enum' => [ '', '7', 'EmulateIE7', '8', 'EmulateIE8' ],
+ },
+
+ {
+ 'key' => 'disable_payauto_default',
+ 'section' => 'UI',
+ 'description' => 'Disable the "Charge future payments to this (card|check) automatically" checkbox from defaulting to checked.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'payment-history-report',
+ 'section' => 'UI',
+ 'description' => 'Show a link to the payment history report in the Reports menu. DO NOT ENABLE THIS.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'svc_broadband-require-nw-coordinates',
+ 'section' => 'UI',
+ 'description' => 'On svc_broadband add/edit, require latitude and longitude in the North Western quadrant, e.g. for North American co-ordinates, etc.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust-email-high-visibility',
+ 'section' => 'UI',
+ 'description' => 'Move the invoicing e-mail address field to the top of the billing address section and highlight it.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_main-require-bank-branch',
+ 'section' => 'UI',
+ 'description' => 'An alternate DCHK/CHEK format; require entry of bank branch number.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust-edit-alt-field-order',
+ 'section' => 'UI',
+ 'description' => 'An alternate ordering of fields for the New Customer and Edit Customer screens.',
+ '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" },
+ { key => "bindprimary", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "bindsecondaries", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "bsdshellmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "cyrus", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "cp_app", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "erpcdmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "icradiusmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "icradius_mysqldest", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "icradius_mysqlsource", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "icradius_secrets", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "maildisablecatchall", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "mxmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "nsmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "arecords", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "cnamerecords", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "nismachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "qmailmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "radiusmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "sendmailconfigpath", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "sendmailmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "sendmailrestart", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "shellmachine", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "shellmachine-useradd", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "shellmachine-userdel", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "shellmachine-usermod", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "shellmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "radiusprepend", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "textradiusprepend", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "username_policy", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "vpopmailmachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "vpopmailrestart", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "safe-part_pkg", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "selfservice_server-quiet", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "signup_server-quiet", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "signup_server-email", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "vonage-username", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "vonage-password", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+ { key => "vonage-fromnumber", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
+