invoice mode in PDF spools, RT#39587
[freeside.git] / FS / FS / Conf.pm
index 90b5d29..248954a 100644 (file)
@@ -719,13 +719,6 @@ my $validate_email = sub { $_[0] =~
 
 @config_items = map { new FS::ConfItem $_ } (
 
 
 @config_items = map { new FS::ConfItem $_ } (
 
-  {
-    'key'         => 'address',
-    'section'     => 'deprecated',
-    'description' => 'This configuration option is no longer used.  See <a href="#invoice_template">invoice_template</a> instead.',
-    'type'        => 'text',
-  },
-
   {
     'key'         => 'event_log_level',
     'section'     => 'notification',
   {
     'key'         => 'event_log_level',
     'section'     => 'notification',
@@ -1045,23 +1038,6 @@ my $validate_email = sub { $_[0] =~
     'per_locale'  => 1,
   },
 
     'per_locale'  => 1,
   },
 
-  {
-    '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 void or apply a credit against the invoice instead.',
-    'type'        => 'checkbox',
-  },
-
-  {
-    'key'         => 'deletecredits',
-    #not actually deprecated yet
-    #'section'     => 'deprecated',
-    #'description' => '<B>DEPRECATED</B>, now controlled by ACLs.  Used to enable deletion of unclosed credits.  Be very careful!  Only delete credits that were data-entry errors, not adjustments.  Optionally specify one or more comma-separated email addresses to be notified when a credit is deleted.',
-    'section'     => '',
-    'description' => 'One or more comma-separated email addresses to be notified when a credit is deleted.',
-    'type'        => [qw( checkbox text )],
-  },
-
   {
     'key'         => 'deleterefunds',
     'section'     => 'billing',
   {
     'key'         => 'deleterefunds',
     'section'     => 'billing',
@@ -1069,20 +1045,6 @@ my $validate_email = sub { $_[0] =~
     'type'        => 'checkbox',
   },
 
     'type'        => 'checkbox',
   },
 
-  {
-    'key'         => 'unapplypayments',
-    'section'     => 'deprecated',
-    'description' => '<B>DEPRECATED</B>, now controlled by ACLs.  Used to enable "unapplication" of unclosed payments.',
-    'type'        => 'checkbox',
-  },
-
-  {
-    'key'         => 'unapplycredits',
-    'section'     => 'deprecated',
-    'description' => '<B>DEPRECATED</B>, now controlled by ACLs.  Used to enable "unapplication" of unclosed credits.',
-    'type'        => 'checkbox',
-  },
-
   {
     'key'         => 'dirhash',
     'section'     => 'shell',
   {
     'key'         => 'dirhash',
     'section'     => 'shell',
@@ -1480,8 +1442,8 @@ and customer address. Include units.',
 
   {
     'key'         => 'invoice_latexverticalreturnaddress',
 
   {
     '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,
   },
     'type'        => 'checkbox',
     'per_agent'   => 1,
   },
@@ -1575,7 +1537,7 @@ and customer address. Include units.',
     'type'        => 'select',
     'per_agent'   => 1,
     'select_enum' => [ 
     'type'        => 'select',
     'per_agent'   => 1,
     'select_enum' => [ 
-      '', 'Payable upon receipt', 'Net 0', 'Net 3', 'Net 5', 'Net 9', 'Net 10', 'Net 14', 
+      '', 'Payable upon receipt', 'Net 0', 'Net 3', 'Net 5', 'Net 7', 'Net 9', 'Net 10', 'Net 14', 
       'Net 15', 'Net 18', 'Net 20', 'Net 21', 'Net 25', 'Net 30', 'Net 45', 
       'Net 60', 'Net 90'
     ], },
       'Net 15', 'Net 18', 'Net 20', 'Net 21', 'Net 25', 'Net 30', 'Net 45', 
       'Net 60', 'Net 90'
     ], },
@@ -1669,13 +1631,6 @@ and customer address. Include units.',
     'type'        => 'checkbox',
   },
 
     'type'        => 'checkbox',
   },
 
-  {
-    'key'         => 'invoice_send_receipts',
-    'section'     => 'deprecated',
-    'description' => '<b>DEPRECATED</b>, this used to send an invoice copy on payments and credits.  See the payment_receipt_email and XXXX instead.',
-    'type'        => 'checkbox',
-  },
-
   {
     'key'         => 'payment_receipt',
     'section'     => 'notification',
   {
     'key'         => 'payment_receipt',
     'section'     => 'notification',
@@ -1707,13 +1662,6 @@ and customer address. Include units.',
     'per_agent'   => 1,
   },
 
     'per_agent'   => 1,
   },
 
-  {
-    'key'         => 'payment_receipt_email',
-    'section'     => 'deprecated',
-    'description' => 'Template file for payment receipts.  Payment receipts are sent to the customer email invoice destination(s) when a payment is received.',
-    'type'        => [qw( checkbox textarea )],
-  },
-
   {
     'key'         => 'payment_receipt-trigger',
     'section'     => 'notification',
   {
     'key'         => 'payment_receipt-trigger',
     'section'     => 'notification',
@@ -1726,6 +1674,13 @@ and customer address. Include units.',
     'per_agent'   => 1,
   },
 
     'per_agent'   => 1,
   },
 
+  {
+    'key'         => 'refund_receipt_msgnum',
+    'section'     => 'notification',
+    'description' => 'Template to use for manual refund receipts.',
+    %msg_template_options,
+  },
+  
   {
     'key'         => 'trigger_export_insert_on_payment',
     'section'     => 'billing',
   {
     'key'         => 'trigger_export_insert_on_payment',
     'section'     => 'billing',
@@ -1797,7 +1752,7 @@ and customer address. Include units.',
   {
     'key'         => 'passwordmax',
     'section'     => 'password',
   {
     'key'         => 'passwordmax',
     'section'     => 'password',
-    'description' => 'Maximum password length (default 8) (don\'t set this over 12 if you need to import or export crypt() passwords)',
+    'description' => 'Maximum password length (default 12) (don\'t set this over 12 if you need to import or export crypt() passwords)',
     'type'        => 'text',
   },
 
     'type'        => 'text',
   },
 
@@ -1873,13 +1828,6 @@ and customer address. Include units.',
 #    'description' => 'Directory which contains domain registry information.  Each registry is a directory.',
 #  },
 
 #    'description' => 'Directory which contains domain registry information.  Each registry is a directory.',
 #  },
 
-  {
-    'key'         => 'report_template',
-    'section'     => 'deprecated',
-    'description' => 'Deprecated template file for reports.',
-    'type'        => 'textarea',
-  },
-
   {
     'key'         => 'maxsearchrecordsperpage',
     'section'     => 'UI',
   {
     'key'         => 'maxsearchrecordsperpage',
     'section'     => 'UI',
@@ -2019,10 +1967,13 @@ and customer address. Include units.',
   },
 
   {
   },
 
   {
-    'key'         => 'unsuspendauto',
+    'key'         => 'unsuspend_balance',
     'section'     => 'billing',
     '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'
+    ],
   },
 
   {
   },
 
   {
@@ -2406,13 +2357,6 @@ and customer address. Include units.',
     %msg_template_options,
   },
 
     %msg_template_options,
   },
 
-  {
-    'key'         => 'declinetemplate',
-    'section'     => 'deprecated',
-    'description' => 'Template file for credit card and electronic check decline emails.',
-    'type'        => 'textarea',
-  },
-
   {
     'key'         => 'emaildecline',
     'section'     => 'notification',
   {
     'key'         => 'emaildecline',
     'section'     => 'notification',
@@ -2436,20 +2380,6 @@ and customer address. Include units.',
     %msg_template_options,
   },
 
     %msg_template_options,
   },
 
-  {
-    'key'         => 'cancelmessage',
-    'section'     => 'deprecated',
-    'description' => 'Template file for cancellation emails.',
-    'type'        => 'textarea',
-  },
-
-  {
-    'key'         => 'cancelsubject',
-    'section'     => 'deprecated',
-    'description' => 'Subject line for cancellation emails.',
-    'type'        => 'text',
-  },
-
   {
     'key'         => 'emailcancel',
     'section'     => 'notification',
   {
     'key'         => 'emailcancel',
     'section'     => 'notification',
@@ -2564,54 +2494,15 @@ and customer address. Include units.',
     'description' => 'Template to use for welcome messages when a svc_acct record is created.',
     %msg_template_options,
   },
     'description' => 'Template to use for welcome messages when a svc_acct record is created.',
     %msg_template_options,
   },
-
-  { 'key'         => 'svc_acct_welcome_letter',
-    'section'     => 'notification',
-    'description' => 'Optional LaTex template for a printed welcome letter when a svc_acct record is created.  Fields from the customer and svc_acct records are available for substitution.',
-    'type'        => 'textarea',
-  },
-
+  
   {
     'key'         => 'svc_acct_welcome_exclude',
     'section'     => 'notification',
   {
     'key'         => 'svc_acct_welcome_exclude',
     'section'     => 'notification',
-    'description' => 'A list of svc_acct services for which no welcome email or letter is to be sent.',
+    'description' => 'A list of svc_acct services for which no welcome email is to be sent.',
     'type'        => 'select-part_svc',
     'multiple'    => 1,
   },
 
     'type'        => 'select-part_svc',
     'multiple'    => 1,
   },
 
-  {
-    'key'         => 'welcome_email',
-    'section'     => 'deprecated',
-    'description' => 'Template file for welcome email.  Welcome emails are sent to the customer email invoice destination(s) each time a svc_acct record is created.',
-    'type'        => 'textarea',
-    'per_agent'   => 1,
-  },
-
-  {
-    'key'         => 'welcome_email-from',
-    'section'     => 'deprecated',
-    'description' => 'From: address header for welcome email',
-    'type'        => 'text',
-    'per_agent'   => 1,
-  },
-
-  {
-    'key'         => 'welcome_email-subject',
-    'section'     => 'deprecated',
-    'description' => 'Subject: header for welcome email',
-    'type'        => 'text',
-    'per_agent'   => 1,
-  },
-  
-  {
-    'key'         => 'welcome_email-mimetype',
-    'section'     => 'deprecated',
-    'description' => 'MIME type for welcome email',
-    'type'        => 'select',
-    'select_enum' => [ 'text/plain', 'text/html' ],
-    'per_agent'   => 1,
-  },
-
   {
     'key'         => 'welcome_letter',
     'section'     => '',
   {
     'key'         => 'welcome_letter',
     'section'     => '',
@@ -2619,47 +2510,11 @@ and customer address. Include units.',
     'type'        => 'textarea',
   },
 
     'type'        => 'textarea',
   },
 
-#  {
-#    'key'         => 'warning_msgnum',
-#    'section'     => 'notification',
-#    'description' => 'Template to use for warning messages, sent to the customer email invoice destination(s) when a svc_acct record has its usage drop below a threshold.',
-#    %msg_template_options,
-#  },
-
   {
   {
-    'key'         => 'warning_email',
+    'key'         => 'threshold_warning_msgnum',
     'section'     => 'notification',
     'section'     => 'notification',
-    'description' => 'Template file for warning email.  Warning emails are sent to the customer email invoice destination(s) each time a svc_acct record has its usage drop below a threshold or 0.  See the <a href="http://search.cpan.org/dist/Text-Template/lib/Text/Template.pm">Text::Template</a> documentation for details on the template substitution language.  The following variables are available<ul><li><code>$username</code> <li><code>$password</code> <li><code>$first</code> <li><code>$last</code> <li><code>$pkg</code> <li><code>$column</code> <li><code>$amount</code> <li><code>$threshold</code></ul>',
-    'type'        => 'textarea',
-  },
-
-  {
-    'key'         => 'warning_email-from',
-    'section'     => 'notification',
-    'description' => 'From: address header for warning email',
-    'type'        => 'text',
-  },
-
-  {
-    'key'         => 'warning_email-cc',
-    'section'     => 'notification',
-    'description' => 'Additional recipient(s) (comma separated) for warning email when remaining usage reaches zero.',
-    'type'        => 'text',
-  },
-
-  {
-    'key'         => 'warning_email-subject',
-    'section'     => 'notification',
-    'description' => 'Subject: header for warning email',
-    'type'        => 'text',
-  },
-  
-  {
-    'key'         => 'warning_email-mimetype',
-    'section'     => 'notification',
-    'description' => 'MIME type for warning email',
-    'type'        => 'select',
-    'select_enum' => [ 'text/plain', 'text/html' ],
+    'description' => 'Template to use for warning messages sent to the customer email invoice destination(s) when a svc_acct record has its usage drop below a threshold.  Extra substitutions available: $column, $amount, $threshold',
+    %msg_template_options,
   },
 
   {
   },
 
   {
@@ -2667,7 +2522,7 @@ and customer address. Include units.',
     'section'     => 'billing',
     'description' => 'Available payment types.',
     'type'        => 'selectmultiple',
     'section'     => 'billing',
     'description' => 'Available payment types.',
     'type'        => 'selectmultiple',
-    'select_enum' => [ qw(CARD DCRD CHEK DCHK CASH WEST MCRD MCHK PPAL) ],
+    'select_enum' => [ qw(CARD DCRD CHEK DCHK) ], #BILL CASH WEST MCRD MCHK PPAL) ],
   },
 
   {
   },
 
   {
@@ -2692,13 +2547,6 @@ and customer address. Include units.',
     'type'        => 'checkbox',
   },
 
     'type'        => 'checkbox',
   },
 
-  {
-    'key'         => 'paymentforcedtobatch',
-    'section'     => 'deprecated',
-    'description' => 'See batch-enable_payby and realtime-disable_payby.  Used to (for CHEK): Cause per customer payment entry to be forced to a batch processor rather than performed realtime.',
-    'type'        => 'checkbox',
-  },
-
   {
     'key'         => 'svc_acct-notes',
     'section'     => 'deprecated',
   {
     'key'         => 'svc_acct-notes',
     'section'     => 'deprecated',
@@ -2730,6 +2578,13 @@ and customer address. Include units.',
     'type'        => 'checkbox',
   },
 
     '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'         => 'svc_broadband-radius',
     'section'     => '',
@@ -2765,21 +2620,6 @@ and customer address. Include units.',
     'type'        => 'text',
   },
 
     'type'        => 'text',
   },
 
-  {
-    'key'         => 'dump-email_to',
-    'section'     => '',
-    'description' => "Optional email address to send success/failure message for database dumps.",
-    'type'        => 'text',
-    'validate'    => $validate_email,
-  },
-
-  {
-    'key'         => 'users-allow_comp',
-    'section'     => 'deprecated',
-    'description' => '<b>DEPRECATED</b>, enable the <i>Complimentary customer</i> access right instead.  Was: Usernames (Freeside users, created with <a href="../docs/man/bin/freeside-adduser.html">freeside-adduser</a>) which can create complimentary customers, one per line.  If no usernames are entered, all users can create complimentary accounts.',
-    'type'        => 'textarea',
-  },
-
   {
     'key'         => 'credit_card-recurring_billing_flag',
     'section'     => 'billing',
   {
     'key'         => 'credit_card-recurring_billing_flag',
     'section'     => 'billing',
@@ -2787,7 +2627,7 @@ and customer address. Include units.',
     'type'        => 'select',
     'select_hash' => [
                        'actual_oncard' => 'Default/classic behavior: set the flag if a customer has actual previous charges on the card.',
     'type'        => 'select',
     'select_hash' => [
                        'actual_oncard' => 'Default/classic behavior: set the flag if a customer has actual previous charges on the card.',
-                      'transaction_is_recur' => 'Set the flag if the transaction itself is recurring, irregardless of previous charges on the card.',
+                      'transaction_is_recur' => 'Set the flag if the transaction itself is recurring, regardless of previous charges on the card.',
                      ],
   },
 
                      ],
   },
 
@@ -3251,12 +3091,14 @@ and customer address. Include units.',
                            }
                          },
   },
                            }
                          },
   },
+
   {
     'key'         => 'ticket_system-force_default_queueid',
     'section'     => 'ticketing',
     'description' => 'Disallow queue selection when creating new tickets from customer view.',
     'type'        => 'checkbox',
   },
   {
     'key'         => 'ticket_system-force_default_queueid',
     'section'     => 'ticketing',
     'description' => 'Disallow queue selection when creating new tickets from customer view.',
     'type'        => 'checkbox',
   },
+
   {
     'key'         => 'ticket_system-selfservice_queueid',
     'section'     => 'ticketing',
   {
     'key'         => 'ticket_system-selfservice_queueid',
     'section'     => 'ticketing',
@@ -3334,6 +3176,41 @@ and customer address. Include units.',
     'type'        => 'checkbox',
   },
 
     'type'        => 'checkbox',
   },
 
+  {
+    'key'         => 'ticket_system-appointment-queueid',
+    'section'     => 'ticketing',
+    'description' => 'Ticketing queue to use for appointments.',
+    #false laziness w/above
+    'type'        => 'select-sub',
+    'options_sub' => sub {
+                           my $conf = new FS::Conf;
+                           if ( $conf->config('ticket_system') ) {
+                             eval "use FS::TicketSystem;";
+                             die $@ if $@;
+                             FS::TicketSystem->queues();
+                           } else {
+                             ();
+                           }
+                         },
+    'option_sub'  => sub { 
+                           my $conf = new FS::Conf;
+                           if ( $conf->config('ticket_system') ) {
+                             eval "use FS::TicketSystem;";
+                             die $@ if $@;
+                             FS::TicketSystem->queue(shift);
+                           } else {
+                             '';
+                           }
+                         },
+  },
+
+  {
+    'key'         => 'ticket_system-appointment-custom_field',
+    'section'     => 'ticketing',
+    'description' => 'Ticketing custom field to use as an appointment classification.',
+    'type'        => 'text',
+  },
+
   {
     'key'         => 'ticket_system-escalation',
     'section'     => 'ticketing',
   {
     'key'         => 'ticket_system-escalation',
     'section'     => 'ticketing',
@@ -3388,27 +3265,6 @@ and customer address. Include units.',
     'per_agent'   => 1,
   },
 
     'per_agent'   => 1,
   },
 
-  {
-    'key'         => 'echeck-void',
-    'section'     => 'deprecated',
-    'description' => '<B>DEPRECATED</B>, now controlled by ACLs.  Used to enable local-only voiding of echeck payments in addition to refunds against the payment gateway',
-    'type'        => 'checkbox',
-  },
-
-  {
-    'key'         => 'cc-void',
-    'section'     => 'deprecated',
-    'description' => '<B>DEPRECATED</B>, now controlled by ACLs.  Used to enable local-only voiding of credit card payments in addition to refunds against the payment gateway',
-    'type'        => 'checkbox',
-  },
-
-  {
-    'key'         => 'unvoid',
-    'section'     => 'deprecated',
-    'description' => '<B>DEPRECATED</B>, now controlled by ACLs.  Used to enable unvoiding of voided payments',
-    'type'        => 'checkbox',
-  },
-
   {
     'key'         => 'address1-search',
     'section'     => 'UI',
   {
     'key'         => 'address1-search',
     'section'     => 'UI',
@@ -3438,12 +3294,6 @@ and customer address. Include units.',
     'per_agent'   => 1,
   },
 
     'per_agent'   => 1,
   },
 
-  { 'key'         => 'referral_credit',
-    'section'     => 'deprecated',
-    'description' => "Used to enable one-time referral credits in the amount of one month <i>referred</i> customer's recurring fee (irregardless of frequency).  Replace with a billing event on appropriate packages.",
-    'type'        => 'checkbox',
-  },
-
   { 'key'         => 'selfservice_server-cache_module',
     'section'     => 'self-service',
     'description' => 'Module used to store self-service session information.  All modules handle any number of self-service servers.  Cache::SharedMemoryCache is appropriate for a single database / single Freeside server.  Cache::FileCache is useful for multiple databases on a single server, or when IPC::ShareLite is not available (i.e. FreeBSD).', #  _Database stores session information in the database and is appropriate for multiple Freeside servers, but may be slower.',
   { 'key'         => 'selfservice_server-cache_module',
     'section'     => 'self-service',
     'description' => 'Module used to store self-service session information.  All modules handle any number of self-service servers.  Cache::SharedMemoryCache is appropriate for a single database / single Freeside server.  Cache::FileCache is useful for multiple databases on a single server, or when IPC::ShareLite is not available (i.e. FreeBSD).', #  _Database stores session information in the database and is appropriate for multiple Freeside servers, but may be slower.',
@@ -3709,17 +3559,28 @@ and customer address. Include units.',
   {
     'key'         => 'voip-cdr_email',
     'section'     => 'telephony',
   {
     'key'         => 'voip-cdr_email',
     'section'     => 'telephony',
-    'description' => 'Include the call details on emailed invoices (and HTML invoices viewed in the backend), even if the customer is configured for not printing them on the invoices.',
+    'description' => 'Include the call details inline on emailed invoices (and HTML invoices viewed in the backend), even if the customer is configured for not printing them on the invoices.  Useful for including these details in electronic delivery but omitting them when printing.',
     'type'        => 'checkbox',
   },
 
   {
     'key'         => 'voip-cust_email_csv_cdr',
     'type'        => 'checkbox',
   },
 
   {
     'key'         => 'voip-cust_email_csv_cdr',
-    'section'     => 'telephony',
-    'description' => 'Enable the per-customer option for including CDR information as a CSV attachment on emailed invoices.',
+    'section'     => 'deprecated',
+    'description' => 'Deprecated, see voip-cdr_email_attach instead.  Used to enable the per-customer option for including CDR information as a CSV attachment on emailed invoices.',
     'type'        => 'checkbox',
   },
 
     'type'        => 'checkbox',
   },
 
+  {
+    'key'         => 'voip-cdr_email_attach',
+    'section'     => 'telephony',
+    'description' => 'Enable the per-customer option for including CDR information as an attachment on emailed invoices.',
+    'type'        => 'select',
+    'select_hash' => [ ''    => 'Disabled',
+                       'csv' => 'Text (CSV) attachment',
+                       'zip' => 'Zip attachment',
+                     ],
+  },
+
   {
     'key'         => 'cgp_rule-domain_templates',
     'section'     => '',
   {
     'key'         => 'cgp_rule-domain_templates',
     'section'     => '',
@@ -3867,11 +3728,12 @@ and customer address. Include units.',
     'select_enum' => [ 'approve', 'decline' ],
   },
 
     'select_enum' => [ 'approve', 'decline' ],
   },
 
+  # replaces batch-errors_to (sent email on error)
   {
   {
-    'key'         => 'batch-errors_to',
+    'key'         => 'batch-errors_not_fatal',
     'section'     => 'billing',
     'section'     => 'billing',
-    'description' => 'Email errors when processing batches to this address.  If unspecified, batch processing will stop immediately on error.',
-    'type'        => 'text',
+    'description' => 'If checked, when importing batches from a gateway, item errors will be recorded in the system log without aborting processing.  If unchecked, batch processing will fail on error.',
+    'type'        => 'checkbox',
   },
 
   #lists could be auto-generated from pay_batch info
   },
 
   #lists could be auto-generated from pay_batch info
@@ -3944,6 +3806,13 @@ and customer address. Include units.',
     'type'        => 'textarea',
   },
 
     'type'        => 'textarea',
   },
 
+  {
+    'key'         => 'batchconfig-RBC-login',
+    'section'     => 'billing',
+    'description' => 'FTPS login for uploading Royal Bank of Canada batches. Two lines: 1. username, 2. password. If not supplied, batches can still be created but not automatically uploaded.',
+    'type'        => 'textarea',
+  },
+
   {
     'key'         => 'batchconfig-td_eft1464',
     'section'     => 'billing',
   {
     'key'         => 'batchconfig-td_eft1464',
     'section'     => 'billing',
@@ -4079,13 +3948,6 @@ and customer address. Include units.',
     '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',
   {
     'key'         => 'cust_main-edit_calling_list_exempt',
     'section'     => 'UI',
@@ -4096,7 +3958,14 @@ and customer address. Include units.',
   {
     'key'         => 'support-key',
     'section'     => '',
   {
     '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',
   },
 
     'type'        => 'text',
   },
 
@@ -4122,13 +3991,6 @@ and customer address. Include units.',
     'type'        => 'text',
   },
 
     '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.',
   { 'key'         => 'pkg_referral',
     'section'     => '',
     'description' => 'Enable package-specific advertising sources.',
@@ -4163,14 +4025,6 @@ and customer address. Include units.',
     %msg_template_options,
   },
 
     %msg_template_options,
   },
 
-  {
-    'key'         => 'impending_recur_template',
-    'section'     => 'deprecated',
-    'description' => 'Template file for alerts about looming first time recurrant billing.  See the <a href="http://search.cpan.org/dist/Text-Template/lib/Text/Template.pm">Text::Template</a> documentation for details on the template substitition language.  Also see packages with a <a href="../browse/part_pkg.cgi">flat price plan</a>  The following variables are available<ul><li><code>$packages</code> allowing <code>$packages->[0]</code> thru <code>$packages->[n]</code> <li><code>$package</code> the first package, same as <code>$packages->[0]</code> <li><code>$recurdates</code> allowing <code>$recurdates->[0]</code> thru <code>$recurdates->[n]</code> <li><code>$recurdate</code> the first recurdate, same as <code>$recurdate->[0]</code> <li><code>$first</code> <li><code>$last</code></ul>',
-# <li><code>$payby</code> <li><code>$expdate</code> most likely only confuse
-    'type'        => 'textarea',
-  },
-
   {
     'key'         => 'logo.png',
     'section'     => 'UI',  #'invoicing' ?
   {
     'key'         => 'logo.png',
     'section'     => 'UI',  #'invoicing' ?
@@ -4205,13 +4059,22 @@ and customer address. Include units.',
     'select_enum' => [ '1 hour', '2 hours', '4 hours', '8 hours', '1 day', '1 week', ],
   },
 
     '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.',
+#    'type'        => 'text',
+#  },
+#
   {
     'key'         => 'datavolume-forcemegabytes',
     'section'     => 'UI',
   {
     'key'         => 'datavolume-forcemegabytes',
     'section'     => 'UI',
@@ -4336,9 +4199,10 @@ and customer address. Include units.',
     reason_type_options('R'),
   },
 
     reason_type_options('R'),
   },
 
+  # was only used to negate invoices during signup when card was declined, now we just void
   {
     'key'         => 'signup_credit_type',
   {
     'key'         => 'signup_credit_type',
-    'section'     => 'billing', #self-service?
+    'section'     => 'deprecated', #self-service?
     'description' => 'The group to use for new, automatically generated credit reasons resulting from signup and self-service declines.',
     reason_type_options('R'),
   },
     'description' => 'The group to use for new, automatically generated credit reasons resulting from signup and self-service declines.',
     reason_type_options('R'),
   },
@@ -4382,7 +4246,7 @@ and customer address. Include units.',
   {
     'key'         => 'disable_previous_balance',
     'section'     => 'invoicing',
   {
     'key'         => 'disable_previous_balance',
     'section'     => 'invoicing',
-    'description' => 'Disable inclusion of previous balance, payment, and credit lines on invoices.',
+    'description' => 'Show new charges only; do not list previous invoices, payments, or credits on the invoice.',
     'type'        => 'checkbox',
     'per_agent'   => 1,
   },
     'type'        => 'checkbox',
     'per_agent'   => 1,
   },
@@ -4441,7 +4305,6 @@ and customer address. Include units.',
     'section'     => 'invoicing',
     'description' => 'Instead of showing payments (and credits) applied to the invoice, show those received since the previous invoice date.',
     'type'        => 'checkbox',
     'section'     => 'invoicing',
     'description' => 'Instead of showing payments (and credits) applied to the invoice, show those received since the previous invoice date.',
     'type'        => 'checkbox',
-                       'uscensus' => 'U.S. Census Bureau',
   },
 
   {
   },
 
   {
@@ -4474,9 +4337,11 @@ and customer address. Include units.',
     'description' => 'Method for standardizing customer addresses.',
     'type'        => 'select',
     'select_hash' => [ '' => '', 
     'description' => 'Method for standardizing customer addresses.',
     'type'        => 'select',
     'select_hash' => [ '' => '', 
+                       'uscensus' => 'U.S. Census Bureau',
                        'usps'     => 'U.S. Postal Service',
                        'tomtom'   => 'TomTom',
                        'melissa'  => 'Melissa WebSmart',
                        'usps'     => 'U.S. Postal Service',
                        'tomtom'   => 'TomTom',
                        'melissa'  => 'Melissa WebSmart',
+                       'freeside' => 'Freeside web service (support contract required)',
                      ],
   },
 
                      ],
   },
 
@@ -4610,7 +4475,7 @@ and customer address. Include units.',
   {
     'key'         => 'cust_main-default_agent_custid',
     'section'     => 'UI',
   {
     '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',
   },
 
     'type'        => 'checkbox',
   },
 
@@ -4646,20 +4511,10 @@ and customer address. Include units.',
     'per_agent'   => 1,
   },
 
     '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',
   {
     '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',
   },
 
     'type'        => 'text',
   },
 
@@ -4729,13 +4584,6 @@ and customer address. Include units.',
     'type'        => 'text',
   },
   
     'type'        => 'text',
   },
   
-  {
-    'key'         => 'email_report-subject',
-    'section'     => '',
-    'description' => 'Subject for reports emailed by freeside-fetch.  Defaults to "Freeside report".',
-    'type'        => 'text',
-  },
-
   {
     'key'         => 'selfservice-head',
     'section'     => 'self-service',
   {
     'key'         => 'selfservice-head',
     'section'     => 'self-service',
@@ -5330,6 +5178,13 @@ and customer address. Include units.',
                      ],
   },
 
                      ],
   },
 
+  {
+    'key'         => 'tax-round_per_line_item',
+    'section'     => 'billing',
+    'description' => 'Calculate tax and round to the nearest cent for each line item, rather than for the whole invoice.',
+    'type'        => 'checkbox',
+  },
+
   {
     'key'         => 'cust_main-default_view',
     'section'     => 'UI',
   {
     'key'         => 'cust_main-default_view',
     'section'     => 'UI',
@@ -5647,7 +5502,7 @@ and customer address. Include units.',
   {
     'key'         => 'cust_main-status_module',
     'section'     => 'UI',
   {
     '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' ],
   },
     'type'        => 'select',
     'select_enum' => [ 'Classic', 'Recurring' ],
   },
@@ -5695,13 +5550,6 @@ and customer address. Include units.',
     'type'        => 'checkbox',
   },
   
     '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-edit-alt-field-order',
     'section'     => 'UI',
   {
     'key'         => 'cust-edit-alt-field-order',
     'section'     => 'UI',
@@ -5739,7 +5587,7 @@ and customer address. Include units.',
   {
     'key'         => 'translate-auto-insert',
     'section'     => '',
   {
     '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.',
+    '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 ],
     'type'        => 'select',
     'multiple'    => 1,
     'select_enum' => [ grep { $_ ne 'en_US' } FS::Locales::locales ],
@@ -5844,6 +5692,13 @@ and customer address. Include units.',
     'type'        => 'checkbox',
   },
 
     'type'        => 'checkbox',
   },
 
+  {
+    'key'         => 'selfservice-announcement',
+    'section'     => 'self-service',
+    'description' => 'HTML announcement to display to all authenticated users on account overview page',
+    'type'        => 'textarea',
+  },
+
   {
     'key'         => 'logout-timeout',
     'section'     => 'UI',
   {
     'key'         => 'logout-timeout',
     'section'     => 'UI',
@@ -5862,13 +5717,6 @@ and customer address. Include units.',
     ],
   },
 
     ],
   },
 
-  {
-    'key'         => 'agent-email_day',
-    'section'     => '',
-    'description' => 'On this day of each month, agents with master customer records containing email addresses will be emailed a list of their customers and balances.',
-    'type'        => 'text',
-  },
-
   {
     'key'         => 'report-cust_pay-select_time',
     'section'     => 'UI',
   {
     'key'         => 'report-cust_pay-select_time',
     'section'     => 'UI',
@@ -6004,47 +5852,14 @@ and customer address. Include units.',
     'type'        => 'text',
   },
 
     'type'        => 'text',
   },
 
-  { 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" },
+  # for internal use only; test databases should declare this option and
+  # everyone else should pretend it doesn't exist
+  #{
+  #  'key'         => 'no_random_ids',
+  #  'section'     => '',
+  #  'description' => 'Replace random identifiers in UI code with a static string, for repeatable testing. Don\'t use in production.',
+  #  'type'        => 'checkbox',
+  #},
 
 );
 
 
 );