'select_enum' => [ '', qw( USD AUD CAD DKK EUR GBP ILS JPY NZD ) ],
},
+ {
+ 'key' => 'business-onlinepayment-verification',
+ 'section' => 'billing',
+ 'description' => 'Run a $1 authorization (followed by a void) to verify new credit card information.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'currency',
'section' => 'billing',
{
'key' => 'countrydefault',
- 'section' => 'UI',
+ 'section' => 'localization',
'description' => 'Default two-letter country code (if not supplied, the default is `US\')',
'type' => 'text',
},
{
'key' => 'quotation_from',
- 'section' => '',
+ 'section' => 'quotations',
'description' => 'Return address on email quotations',
'type' => 'text',
'per_agent' => 1,
{
'key' => 'quotation_subject',
- 'section' => '',
+ 'section' => 'quotations',
'description' => 'Subject: header on email quotations. Defaults to "Quotation".', # The following substitutions are available: $name, $name_short, $invoice_number, and $invoice_date.',
'type' => 'text',
#'per_agent' => 1,
{
'key' => 'quotation_html',
- 'section' => '',
+ 'section' => 'quotations',
'description' => 'HTML template for quotations.',
'type' => 'textarea',
{
'key' => 'quotation_latex',
- 'section' => '',
+ 'section' => 'quotations',
'description' => 'LaTeX template for typeset PostScript quotations.',
'type' => 'textarea',
},
{
'key' => 'quotation_latexnotes',
- 'section' => '',
+ 'section' => 'quotations',
'description' => 'Notes section for LaTeX typeset PostScript quotations.',
'type' => 'textarea',
'per_agent' => 1,
{
'key' => 'invoice_latexextracouponspace',
'section' => 'invoicing',
- 'description' => 'Optional LaTeX invoice textheight space to reserve for a tear off coupon. Include units. Default is 3.6cm',
+ 'description' => 'Optional LaTeX invoice textheight space to reserve for a tear off coupon. Include units. Default is 2.7 inches.',
'type' => 'text',
'per_agent' => 1,
'validate' => sub { shift =~
{
'key' => 'invoice_latexcouponfootsep',
'section' => 'invoicing',
- 'description' => 'Optional LaTeX invoice separation between tear off coupon and footer. Include units.',
+ 'description' => 'Optional LaTeX invoice separation between bottom of coupon address and footer. Include units. Default is 0.2 inches.',
'type' => 'text',
'per_agent' => 1,
'validate' => sub { shift =~
{
'key' => 'invoice_latexcouponamountenclosedsep',
'section' => 'invoicing',
- 'description' => 'Optional LaTeX invoice separation between total due and amount enclosed line. Include units.',
+ 'description' => 'Optional LaTeX invoice separation between total due and amount enclosed line. Include units. Default is 2.25 em.',
'type' => 'text',
'per_agent' => 1,
'validate' => sub { shift =~
{
'key' => 'invoice_latexcoupontoaddresssep',
'section' => 'invoicing',
- 'description' => 'Optional LaTeX invoice separation between invoice data and the to address (usually invoice_latexreturnaddress). Include units.',
+ 'description' => 'Optional LaTeX invoice separation between invoice data and the address (usually invoice_latexreturnaddress). Include units. Default is 1 inch.',
'type' => 'text',
'per_agent' => 1,
'validate' => sub { shift =~
{
'key' => 'invoice_latexverticalreturnaddress',
- 'section' => 'invoicing',
- 'description' => 'Place the return address under the company logo rather than beside it.',
+ 'section' => 'deprecated',
+ 'description' => 'Deprecated. With old invoice_latex template, places the return address under the company logo rather than beside it.',
'type' => 'checkbox',
'per_agent' => 1,
},
{
'key' => 'quotation_email_pdf',
- 'section' => '',
+ 'section' => 'quotations',
'description' => 'Send PDF quotations as an attachment to emailed quotations. By default, includes the HTML quotation as the email body, unless quotation_email_pdf_note is set.',
'type' => 'checkbox'
},
{
'key' => 'quotation_email_pdf_note',
- 'section' => '',
+ 'section' => 'quotations',
'description' => 'If defined, this text will replace the default HTML quotation as the body of emailed PDF quotations.',
'type' => 'textarea'
},
{
'key' => 'lpr',
- 'section' => 'required',
+ 'section' => 'important',
'description' => 'Print command for paper invoices, for example `lpr -h\'',
'type' => 'text',
'per_agent' => 1,
{
'key' => 'money_char',
- 'section' => '',
+ 'section' => 'localization',
'description' => 'Currency symbol - defaults to `$\'',
'type' => 'text',
},
{
'key' => 'smtp-username',
- 'section' => '',
+ 'section' => 'notification',
'description' => 'Optional SMTP username for Freeside\'s outgoing mail',
'type' => 'text',
},
{
'key' => 'smtp-password',
- 'section' => '',
+ 'section' => 'notification',
'description' => 'Optional SMTP password for Freeside\'s outgoing mail',
'type' => 'text',
},
{
'key' => 'smtp-encryption',
- 'section' => '',
+ 'section' => 'notification',
'description' => 'Optional SMTP encryption method. The STARTTLS methods require smtp-username and smtp-password to be set.',
'type' => 'select',
'select_hash' => [ '25' => 'None (port 25)',
{
'key' => 'statedefault',
- 'section' => 'UI',
+ 'section' => 'localization',
'description' => 'Default state or province (if not supplied, the default is `CA\')',
'type' => 'text',
},
'description' => 'Enables the automatic unsuspension of suspended packages when a customer\'s balance due is at or below the specified amount after a payment or credit',
'type' => 'select',
'select_enum' => [
- '', 'Zero', 'Latest invoice charges'
+ '', 'Zero', 'Latest invoice charges', 'Charges not past due'
],
},
{
'key' => 'national_id-country',
- 'section' => 'UI',
+ 'section' => 'localization',
'description' => 'Track a national identification number, for specific countries.',
'type' => 'select',
'select_enum' => [ '', 'MY' ],
{
'key' => 'locale',
- 'section' => 'UI',
+ 'section' => 'localization',
'description' => 'Default locale',
'type' => 'select-sub',
'options_sub' => sub {
{
'key' => 'welcome_msgnum',
- 'section' => 'notification',
- 'description' => 'Template to use for welcome messages when a svc_acct record is created.',
+ 'section' => 'deprecated',
+ 'description' => 'Deprecated; use a billing event instead. Used to be the template to use for welcome messages when a svc_acct record is created.',
%msg_template_options,
},
{
'key' => 'svc_acct_welcome_exclude',
- 'section' => 'notification',
- 'description' => 'A list of svc_acct services for which no welcome email is to be sent.',
+ 'section' => 'deprecated',
+ 'description' => 'Deprecated; use a billing event instead. A list of svc_acct services for which no welcome email is to be sent.',
'type' => 'select-part_svc',
'multiple' => 1,
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'radius-canopy',
+ 'section' => '',
+ 'description' => 'Enable RADIUS attributes for Cambium (formerly Motorola) Canopy (Motorola-Canopy-Gateway).',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'svc_broadband-radius',
'section' => '',
{
'key' => 'company_phonenum',
- 'section' => 'notification',
+ 'section' => 'important',
'description' => 'Your company phone number',
'type' => 'text',
'per_agent' => 1,
{
'key' => 'cust_main-require_address2',
'section' => 'UI',
- 'description' => 'Second address field is required (on service address only, if billing and service addresses differ). Also enables "Unit" labeling of address2 on customer view and edit pages. Useful for multi-tenant applications. See also: address2-search',
+ 'description' => 'Second address field is required. Also enables "Unit" labeling of address2 on customer view and edit pages. Useful for multi-tenant applications. See also: address2-search', # service address only part not working in the modern world, see #41184 (on service address only, if billing and service addresses differ)
'type' => 'checkbox',
},
{
'key' => 'support-key',
'section' => '',
- 'description' => 'A support key enables access to commercial services delivered over the network, such as the payroll module, access to the internal ticket system, priority support and optional backups.',
+ 'description' => 'A support key enables access to commercial services delivered over the network, such as address normalization and invoice printing.',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'freesideinc-webservice-svcpart',
+ 'section' => '',
+ 'description' => 'Do not set this.',
'type' => 'text',
},
{
'key' => 'logo.png',
- 'section' => 'UI', #'invoicing' ?
+ 'section' => 'important', #'invoicing' ?
'description' => 'Company logo for HTML invoices and the backoffice interface, in PNG format. Suggested size somewhere near 92x62.',
'type' => 'image',
'per_agent' => 1, #XXX just view/logo.cgi, which is for the global
'select_enum' => [ '1 hour', '2 hours', '4 hours', '8 hours', '1 day', '1 week', ],
},
- {
- 'key' => 'password-generated-characters',
- 'section' => 'password',
- 'description' => 'Set of characters to use when generating random passwords. This must contain at least one lowercase letter, uppercase letter, digit, and punctuation mark.',
- 'type' => 'textarea',
- },
+ # 3.x-only options for a more tolerant password policy
+# {
+# 'key' => 'password-generated-characters',
+# 'section' => 'password',
+# 'description' => 'Set of characters to use when generating random passwords. This must contain at least one lowercase letter, uppercase letter, digit, and punctuation mark.',
+# 'type' => 'textarea',
+# },
+#
# {
# 'key' => 'password-no_reuse',
# 'section' => 'password',
'select_hash' => [ '' => '',
'uscensus' => 'U.S. Census Bureau',
'usps' => 'U.S. Postal Service',
- 'tomtom' => 'TomTom',
'melissa' => 'Melissa WebSmart',
+ 'freeside' => 'Freeside web service (support contract required)',
],
},
'type' => 'text',
},
- {
- 'key' => 'tomtom-userid',
- 'section' => 'UI',
- 'description' => 'TomTom geocoding service API key. See <a href="http://geocoder.tomtom.com/">the TomTom website</a> to obtain a key. This is recommended for addresses in the United States only.',
- 'type' => 'text',
- },
-
{
'key' => 'melissa-userid',
'section' => 'UI', # it's really not...
{
'key' => 'company_latitude',
- 'section' => 'UI',
- 'description' => 'Your company latitude (-90 through 90)',
+ 'section' => 'taxation',
+ 'description' => 'For Avalara taxation, your company latitude (-90 through 90)',
'type' => 'text',
},
{
'key' => 'company_longitude',
- 'section' => 'UI',
- 'description' => 'Your company longitude (-180 thru 180)',
+ 'section' => 'taxation',
+ 'description' => 'For Avalara taxation, your company longitude (-180 thru 180)',
'type' => 'text',
},
{
'key' => 'cust_main-default_agent_custid',
'section' => 'UI',
- 'description' => 'Display the agent_custid field when available instead of the custnum field.',
+ 'description' => 'Display the agent_custid field when available instead of the custnum field. Restart Apache after changing.',
'type' => 'checkbox',
},
'per_agent' => 1,
},
- {
- 'key' => 'cust_main-custnum-display_special',
- 'section' => 'UI',
- 'description' => 'Use this customer number prefix format',
- 'type' => 'select',
- 'select_hash' => [ '' => '',
- 'CoStAg' => 'CoStAg (country, state, agent name or display_prefix)',
- 'CoStCl' => 'CoStCl (country, state, class name)' ],
- },
-
{
'key' => 'cust_main-custnum-display_length',
'section' => 'UI',
- 'description' => 'Zero fill the customer number to this many digits for display purposes.',
+ 'description' => 'Zero fill the customer number to this many digits for display purposes. Restart Apache after changing.',
'type' => 'text',
},
{
'key' => 'part_pkg-delay_cancel-days',
'section' => '',
- 'description' => 'Expire packages in this many days when using delay_cancel (default is 1)',
+ 'description' => 'Number of days to suspend when using automatic suspension period before cancel (default is 1)',
'type' => 'text',
'validate' => sub { (($_[0] =~ /^\d*$/) && (($_[0] eq '') || $_[0]))
- ? 'Must specify an integer number of days'
- : '' }
+ ? ''
+ : 'Must specify an integer number of days' }
},
{
'type' => 'checkbox',
},
+ {
+ 'key' => 'cdr-intl_to_domestic_rewrite',
+ 'section' => 'telephony',
+ 'description' => 'Strip the "011" international prefix from CDR destination numbers if the rest of the number is 7 digits or shorter, and so probably does not contain a country code.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cdr-gsm_tap3-sender',
'section' => 'telephony',
my @part_export =
map { qsearch( 'part_export', {exporttype => $_ } ) }
keys %{FS::part_export::export_info('cust_main')};
- map { $_->exportnum => $_->exporttype.' to '.$_->machine } @part_export;
+ map { $_->exportnum => $_->exportname } @part_export;
},
'option_sub' => sub {
require FS::Record;
'part_export', { 'exportnum' => shift }
);
$part_export
- ? $part_export->exporttype.' to '.$part_export->machine
+ ? $part_export->exportname
: '';
},
},
{
'key' => 'cust_location-exports',
'section' => '',
- 'description' => 'Export(s) to call on cust_location insert, modification and deletion.',
+ 'description' => 'Export(s) to call on cust_location insert or modification',
'type' => 'select-sub',
'multiple' => 1,
'options_sub' => sub {
my @part_export =
map { qsearch( 'part_export', {exporttype => $_ } ) }
keys %{FS::part_export::export_info('cust_location')};
- map { $_->exportnum => $_->exporttype.' to '.$_->machine } @part_export;
+ map { $_->exportnum => $_->exportname } @part_export;
},
'option_sub' => sub {
require FS::Record;
'part_export', { 'exportnum' => shift }
);
$part_export
- ? $part_export->exporttype.' to '.$part_export->machine
+ ? $part_export->exportname
: '';
},
},
{
'key' => 'available-locales',
- 'section' => '',
+ 'section' => 'localization',
'description' => 'Limit available locales (employee preferences, per-customer locale selection, etc.) to a particular set.',
'type' => 'select-sub',
'multiple' => 1,
{
'key' => 'translate-auto-insert',
- 'section' => '',
- 'description' => 'Auto-insert untranslated strings for selected non-en_US locales with their default/en_US values. Do not turn this on unless translating the interface into a new language.',
+ 'section' => 'localization',
+ 'description' => 'Auto-insert untranslated strings for selected non-en_US locales with their default/en_US values. Do not turn this on unless translating the interface into a new language. Restart Apache after changing.',
'type' => 'select',
'multiple' => 1,
'select_enum' => [ grep { $_ ne 'en_US' } FS::Locales::locales ],