payment terms localization, #71549
[freeside.git] / FS / FS / Conf.pm
index 9c0e8ba..cf505de 100644 (file)
@@ -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;
@@ -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',
@@ -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',
@@ -2106,7 +2121,7 @@ and customer address. Include units.',
     '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'
     ],
   },
 
@@ -2759,6 +2774,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.',
@@ -3491,7 +3513,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',
   },
 
@@ -4186,7 +4208,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',
   },
 
@@ -4582,8 +4611,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)',
                      ],
   },
 
@@ -4602,13 +4631,6 @@ and customer address. Include units.',
   },
 
   {
-    'key'         => 'tomtom-userid',
-    'section'     => 'UI',
-    'description' => 'TomTom geocoding service API key.  See <a href="http://www.tomtom.com/">the TomTom website</a> 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 <a href="http://www.geocode.com/">the TomTom website</a> for access and pricing information.',
@@ -4798,11 +4820,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' }
   },
 
   {
@@ -5292,6 +5314,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)',
@@ -5426,7 +5455,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',
   },
 
@@ -5569,7 +5598,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;
@@ -5578,7 +5607,7 @@ and customer address. Include units.',
         'part_export', { 'exportnum' => shift }
       );
       $part_export
-        ? $part_export->exporttype.' to '.$part_export->machine
+        ? $part_export->exportname
         : '';
     },
   },
@@ -5587,7 +5616,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 {
@@ -5596,7 +5625,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;
@@ -5605,7 +5634,7 @@ and customer address. Include units.',
         'part_export', { 'exportnum' => shift }
       );
       $part_export
-        ? $part_export->exporttype.' to '.$part_export->machine
+        ? $part_export->exportname
         : '';
     },
   },