X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=870c0095f679af117d0e627d70ac49438db23f5b;hb=9939ddd7f968caa03c6632d56d46d9519d1c1905;hp=9ff75de607a01656fa9a48596d483bc53de5f47a;hpb=eef47827c287da562ef36ccbb120e64bee798879;p=freeside.git
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 9ff75de60..870c0095f 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -2,6 +2,9 @@ package FS::Conf;
use vars qw($base_dir @config_items @base_items @card_types $DEBUG);
use strict;
+use vars qw( $base_dir @config_items @base_items @card_types @invoice_terms
+ $DEBUG
+ );
use Carp;
use IO::File;
use File::Basename;
@@ -571,7 +574,7 @@ sub _orbase_items {
'key' => $_,
'base_key' => $proto->key,
'section' => $proto->section,
- 'description' => 'Alternate ' . $proto->description . ' See the billing documentation for details.',
+ 'description' => 'Alternate ' . $proto->description . ' See the billing documentation for details.',
'type' => $proto->type,
};
} &$listmaker($base);
@@ -689,6 +692,14 @@ logo.png
logo.eps
);
+@invoice_terms = (
+ '',
+ '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'
+);
+
my %msg_template_options = (
'type' => 'select-sub',
'options_sub' => sub {
@@ -1056,6 +1067,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' => 'Currency',
@@ -1327,7 +1345,7 @@ my $validate_email = sub { $_[0] =~
{
'key' => 'invoice_template',
'section' => 'invoicing',
- 'description' => 'Text template file for invoices. Used if no invoice_html template is defined, and also seen by users using non-HTML capable mail clients. See the billing documentation for details.',
+ 'description' => 'Text template file for invoices. Used if no invoice_html template is defined, and also seen by users using non-HTML capable mail clients. See the billing documentation for details.',
'type' => 'textarea',
},
@@ -1502,7 +1520,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 =~
@@ -1514,7 +1532,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 =~
@@ -1526,7 +1544,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 =~
@@ -1537,7 +1555,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 =~
@@ -1555,8 +1573,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,
},
@@ -1649,11 +1667,8 @@ and customer address. Include units.',
'description' => 'Optional default invoice term, used to calculate a due date printed on invoices.',
'type' => 'select',
'per_agent' => 1,
- 'select_enum' => [
- '', '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'
- ], },
+ 'select_enum' => \@invoice_terms,
+ },
{
'key' => 'invoice_show_prior_due_date',
@@ -2101,10 +2116,13 @@ and customer address. Include units.',
},
{
- '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'
+ ],
},
{
@@ -2208,10 +2226,18 @@ and customer address. Include units.',
},
{
- 'key' => 'safe-part_bill_event',
+ 'key' => 'google_maps_api_key',
'section' => 'UI',
- 'description' => 'Validates invoice event expressions against a preset list. Useful for webdemos, annoying to powerusers.',
- 'type' => 'checkbox',
+ 'description' => 'API key for google maps. This must be set for map and directions links to work. See Getting a Google Maps API Key',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'company_physical_address',
+ 'section' => 'addresses',
+ 'description' => 'Your physical company address, for use in supplying google map directions, defaults to company_address',
+ 'type' => 'textarea',
+ 'per_agent' => 1,
},
{
@@ -2756,6 +2782,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.',
@@ -3221,7 +3254,7 @@ and customer address. Include units.',
{
'key' => 'ticket_system',
'section' => 'ticketing',
- 'description' => 'Ticketing system integration. RT_Internal uses the built-in RT ticketing system (see the integrated ticketing installation instructions). RT_External accesses an external RT installation in a separate database (local or remote).',
+ 'description' => 'Ticketing system integration. RT_Internal uses the built-in RT ticketing system (see the integrated ticketing installation instructions). RT_External accesses an external RT installation in a separate database (local or remote).',
'type' => 'select',
#'select_enum' => [ '', qw(RT_Internal RT_Libs RT_External) ],
'select_enum' => [ '', qw(RT_Internal RT_External) ],
@@ -3488,7 +3521,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',
},
@@ -3843,6 +3876,13 @@ and customer address. Include units.',
},
{
+ 'key' => 'invoice-all_pkg_addresses',
+ 'section' => 'invoicing',
+ 'description' => 'Show all package addresses on invoices, even the default.',
+ 'type' => 'checkbox',
+ },
+
+ {
'key' => 'invoice-unitprice',
'section' => 'invoicing',
'description' => 'Enable unit pricing on invoices and quantities on packages.',
@@ -4183,7 +4223,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',
},
@@ -4400,6 +4447,13 @@ and customer address. Include units.',
},
{
+ 'key' => 'cust_main-require_classnum',
+ 'section' => '',
+ 'description' => 'Customer class is required: require customer class for all customer records.',
+ 'type' => 'checkbox',
+ },
+
+ {
'key' => 'cust_main-check_unique',
'section' => '',
'description' => 'Warn before creating a customer record where these fields duplicate another customer.',
@@ -4579,8 +4633,8 @@ and customer address. Include units.',
'usps' => 'U.S. Postal Service',
'uscensus' => 'U.S. Census Bureau',
'ezlocate' => 'EZLocate',
- 'tomtom' => 'TomTom',
'melissa' => 'Melissa WebSmart',
+ 'freeside' => 'Freeside web service (support contract required)',
],
},
@@ -4599,13 +4653,6 @@ and customer address. Include units.',
},
{
- 'key' => 'tomtom-userid',
- 'section' => 'UI',
- 'description' => 'TomTom geocoding service API key. See the TomTom website to obtain a key. This is recommended for addresses in the United States only.',
- 'type' => 'text',
- },
-
- {
'key' => 'ezlocate-userid',
'section' => 'UI',
'description' => 'User ID for EZ-Locate service. See the TomTom website for access and pricing information.',
@@ -4728,7 +4775,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',
},
@@ -4765,19 +4812,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',
},
@@ -4805,11 +4842,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' }
},
{
@@ -5299,6 +5336,20 @@ and customer address. Include units.',
},
{
+ 'key' => 'cdr-userfield_dnis_rewrite',
+ 'section' => 'telephony',
+ 'description' => 'If the CDR userfield contains "DNIS=" followed by a sequence of digits, use that as the destination number for the call.',
+ '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',
'description' => 'GSM TAP3 Sender network (5 letter code)',
@@ -5433,7 +5484,7 @@ and customer address. Include units.',
{
'key' => 'tax-cust_exempt-groups-require_individual_nums',
'section' => 'deprecated',
- 'description' => 'Deprecated: see tax-cust_exempt-groups-number_requirement',
+ 'description' => 'Deprecated: see tax-cust_exempt-groups-num_req',
'type' => 'checkbox',
},
@@ -5576,7 +5627,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;
@@ -5585,7 +5636,7 @@ and customer address. Include units.',
'part_export', { 'exportnum' => shift }
);
$part_export
- ? $part_export->exporttype.' to '.$part_export->machine
+ ? $part_export->exportname
: '';
},
},
@@ -5594,7 +5645,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 {
@@ -5603,7 +5654,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;
@@ -5612,7 +5663,7 @@ and customer address. Include units.',
'part_export', { 'exportnum' => shift }
);
$part_export
- ? $part_export->exporttype.' to '.$part_export->machine
+ ? $part_export->exportname
: '';
},
},
@@ -5757,8 +5808,8 @@ and customer address. Include units.',
{
'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. ',
+ 'section' => 'deprecated',
+ 'description' => 'With old invoice_latex template, truncate long line items to this number of characters on typeset invoices, to avoid losing things off the right margin. Defaults to 50. (With current invoice_latex template, this is handled internally in the template itself instead.)',
'type' => 'text',
},
@@ -5772,7 +5823,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' ],
},
@@ -5864,7 +5915,7 @@ 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.',
+ '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 ],
@@ -5917,6 +5968,13 @@ and customer address. Include units.',
'rate_low' => 'Lowest rate first',
],
},
+
+ {
+ 'key' => 'cdr-lrn_lookup',
+ 'section' => 'telephony',
+ 'description' => 'Look up LRNs of destination numbers for exact matching to the terminating carrier. This feature requires a Freeside support contract for paid access to the central NPAC database; see support-key.',
+ 'type' => 'checkbox',
+ },
{
'key' => 'brand-agent',