better conf classification
[freeside.git] / FS / FS / Conf.pm
index d5e0fa6..4615487 100644 (file)
@@ -975,6 +975,13 @@ my $validate_email = sub { $_[0] =~
   },
 
   {
+    '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',
     'description' => 'Main accounting currency',
@@ -1004,7 +1011,7 @@ my $validate_email = sub { $_[0] =~
 
   {
     'key'         => 'countrydefault',
-    'section'     => 'UI',
+    'section'     => 'localization',
     'description' => 'Default two-letter country code (if not supplied, the default is `US\')',
     'type'        => 'text',
   },
@@ -1179,7 +1186,7 @@ my $validate_email = sub { $_[0] =~
 
   {
     'key'         => 'quotation_from',
-    'section'     => '',
+    'section'     => 'quotations',
     'description' => 'Return address on email quotations',
     'type'        => 'text',
     'per_agent'   => 1,
@@ -1197,7 +1204,7 @@ my $validate_email = sub { $_[0] =~
 
   {
     '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,
@@ -1228,7 +1235,7 @@ my $validate_email = sub { $_[0] =~
 
   {
     'key'         => 'quotation_html',
-    'section'     => '',
+    'section'     => 'quotations',
     'description' => 'HTML template for quotations.',
 
     'type'        => 'textarea',
@@ -1287,7 +1294,7 @@ my $validate_email = sub { $_[0] =~
 
   {
     'key'         => 'quotation_latex',
-    'section'     => '',
+    'section'     => 'quotations',
     'description' => 'LaTeX template for typeset PostScript quotations.',
     'type'        => 'textarea',
   },
@@ -1352,7 +1359,7 @@ and customer address. Include units.',
 
   {
     'key'         => 'quotation_latexnotes',
-    'section'     => '',
+    'section'     => 'quotations',
     'description' => 'Notes section for LaTeX typeset PostScript quotations.',
     'type'        => 'textarea',
     'per_agent'   => 1,
@@ -1389,7 +1396,7 @@ and customer address. Include units.',
   {
     '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 =~
@@ -1401,7 +1408,7 @@ and customer address. Include units.',
   {
     '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 =~
@@ -1413,7 +1420,7 @@ and customer address. Include units.',
   {
     '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 =~
@@ -1424,7 +1431,7 @@ and customer address. Include units.',
   {
     '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 =~
@@ -1442,8 +1449,8 @@ and customer address. Include units.',
 
   {
     '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,
   },
@@ -1483,7 +1490,7 @@ and customer address. Include units.',
 
   {
     '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'
   },
@@ -1504,7 +1511,7 @@ and customer address. Include units.',
 
   {
     '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'
   },
@@ -1690,7 +1697,7 @@ and customer address. Include units.',
 
   {
     'key'         => 'lpr',
-    'section'     => 'required',
+    'section'     => 'important',
     'description' => 'Print command for paper invoices, for example `lpr -h\'',
     'type'        => 'text',
     'per_agent'   => 1,
@@ -1720,7 +1727,7 @@ and customer address. Include units.',
 
   {
     'key'         => 'money_char',
-    'section'     => '',
+    'section'     => 'localization',
     'description' => 'Currency symbol - defaults to `$\'',
     'type'        => 'text',
   },
@@ -1893,21 +1900,21 @@ and customer address. Include units.',
 
   {
     '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)',
@@ -1961,16 +1968,19 @@ and customer address. Include units.',
 
   {
     'key'         => 'statedefault',
-    'section'     => 'UI',
+    'section'     => 'localization',
     'description' => 'Default state or province (if not supplied, the default is `CA\')',
     'type'        => 'text',
   },
 
   {
-    'key'         => 'unsuspendauto',
+    'key'         => 'unsuspend_balance',
     'section'     => 'billing',
-    'description' => 'Enables the automatic unsuspension of suspended packages when a customer\'s balance due changes from positive to zero or negative as the result of a payment or credit',
-    'type'        => 'checkbox',
+    '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', 'Charges not past due'
+    ],
   },
 
   {
@@ -2103,7 +2113,7 @@ and customer address. Include units.',
 
   {
     'key'         => 'national_id-country',
-    'section'     => 'UI',
+    'section'     => 'localization',
     'description' => 'Track a national identification number, for specific countries.',
     'type'        => 'select',
     'select_enum' => [ '', 'MY' ],
@@ -2153,7 +2163,7 @@ and customer address. Include units.',
 
   {
     'key'         => 'locale',
-    'section'     => 'UI',
+    'section'     => 'localization',
     'description' => 'Default locale',
     'type'        => 'select-sub',
     'options_sub' => sub {
@@ -2487,15 +2497,15 @@ and customer address. Include units.',
 
   {
     '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,
   },
@@ -2576,6 +2586,13 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'radius-canopy',
+    'section'     => '',
+    'description' => 'Enable RADIUS attributes for Cambium (formerly Motorola) Canopy (Motorola-Canopy-Gateway).',
+    'type'        => 'checkbox',
+  },
+
+  {
     'key'         => 'svc_broadband-radius',
     'section'     => '',
     'description' => 'Enable RADIUS groups for broadband services.',
@@ -3249,7 +3266,7 @@ and customer address. Include units.',
 
   {
     'key'         => 'company_phonenum',
-    'section'     => 'notification',
+    'section'     => 'important',
     'description' => 'Your company phone number',
     'type'        => 'text',
     'per_agent'   => 1,
@@ -3272,7 +3289,7 @@ and customer address. Include units.',
   {
     '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',
   },
 
@@ -3948,7 +3965,14 @@ and customer address. Include units.',
   {
     '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',
   },
 
@@ -4010,7 +4034,7 @@ and customer address. Include units.',
 
   {
     '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
@@ -4042,14 +4066,16 @@ and customer address. Include units.',
     'select_enum' => [ '1 hour', '2 hours', '4 hours', '8 hours', '1 day', '1 week', ],
   },
 
-  {
-    'key'         => 'password-generated-allcaps',
-    'section'     => 'password',
-    'description' => 'Causes passwords automatically generated to consist entirely of capital letters',
-    'type'        => 'checkbox',
-  },
+  # 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',
 #    'description' => 'Minimum number of password changes before a password can be reused. By default, passwords can be reused without restriction.',
@@ -4322,6 +4348,7 @@ and customer address. Include units.',
                        'usps'     => 'U.S. Postal Service',
                        'tomtom'   => 'TomTom',
                        'melissa'  => 'Melissa WebSmart',
+                       'freeside' => 'Freeside web service (support contract required)',
                      ],
   },
 
@@ -4404,15 +4431,15 @@ and customer address. Include units.',
 
   {
     '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',
   },
 
@@ -4455,7 +4482,7 @@ and customer address. Include units.',
   {
     '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',
   },
 
@@ -4492,19 +4519,9 @@ and customer address. Include units.',
   },
 
   {
-    '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',
   },
 
@@ -4532,11 +4549,11 @@ and customer address. Include units.',
   {
     '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' }
   },
 
   {
@@ -5019,6 +5036,13 @@ and customer address. Include units.',
   },
 
   {
+    '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',
     'description' => 'GSM TAP3 Sender network (5 letter code)',
@@ -5296,7 +5320,7 @@ and customer address. Include units.',
       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;
@@ -5305,7 +5329,7 @@ and customer address. Include units.',
         'part_export', { 'exportnum' => shift }
       );
       $part_export
-        ? $part_export->exporttype.' to '.$part_export->machine
+        ? $part_export->exportname
         : '';
     },
   },
@@ -5314,7 +5338,7 @@ and customer address. Include units.',
   {
     '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 {
@@ -5323,7 +5347,7 @@ and customer address. Include units.',
       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;
@@ -5332,7 +5356,7 @@ and customer address. Include units.',
         'part_export', { 'exportnum' => shift }
       );
       $part_export
-        ? $part_export->exporttype.' to '.$part_export->machine
+        ? $part_export->exportname
         : '';
     },
   },
@@ -5492,7 +5516,7 @@ and customer address. Include units.',
   {
     '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?
+    '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.  Restart Apache after changing.', #other differences?
     'type'        => 'select',
     'select_enum' => [ 'Classic', 'Recurring' ],
   },
@@ -5556,7 +5580,7 @@ and customer address. Include units.',
   
   {
     '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,
@@ -5576,8 +5600,8 @@ and customer address. Include units.',
   
   {
     '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 ],