invoice_sections_with_taxes per-agent, RT#79636
[freeside.git] / FS / FS / Conf.pm
index 482ce8c..2583e44 100644 (file)
@@ -10,6 +10,7 @@ use IO::File;
 use File::Basename;
 use MIME::Base64;
 use Locale::Currency;
+use Email::Address;
 use FS::ConfItem;
 use FS::ConfDefaults;
 use FS::Locales;
@@ -542,10 +543,11 @@ defined, company_name), appropriately combined based on their current values.
 sub invoice_from_full {
   my ($self, $agentnum) = @_;
 
-  (    $self->config('invoice_from_name', $agentnum)
-    || $self->config('company_name', $agentnum)
-  ).
-  ' <'. $self->config('invoice_from', $agentnum ). '>';
+  my $name =  $self->config('invoice_from_name', $agentnum)
+           || $self->config('company_name', $agentnum);
+
+  Email::Address->new( $name => $self->config('invoice_from', $agentnum ) )
+    ->format;
 }
 
 =back
@@ -621,8 +623,8 @@ logo.eps
   '',
   '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', 'End of Month', 'Net 30',
+  'Net 45', 'Net 60', 'Net 90'
 );
 
 my %msg_template_options = (
@@ -1529,6 +1531,13 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'quotation_disable_after_days',
+    'section'     => 'quotations',
+    'description' => 'The number of days, if set, after which a non-converted quotation will be automatically disabled.',
+    'type'        => 'text'
+  },
+
+  {
     'key'         => 'invoice_print_pdf',
     'section'     => 'printing',
     'description' => 'For all invoice print operations, store postal invoices for download in PDF format rather than printing them directly.',
@@ -1552,7 +1561,7 @@ and customer address. Include units.',
   { 
     'key'         => 'invoice_default_terms',
     'section'     => 'invoicing',
-    'description' => 'Optional default invoice term, used to calculate a due date printed on invoices.',
+    'description' => 'Optional default invoice term, used to calculate a due date printed on invoices.  WARNING: If you do not want to change the terms on existing invoices, do not change this after going live.',
     'type'        => 'select',
     'per_agent'   => 1,
     'select_enum' => \@invoice_terms,
@@ -1574,11 +1583,29 @@ and customer address. Include units.',
   },
 
   { 
+    'key'         => 'invoice_pay_by_msg',
+    'section'     => 'invoice_balances',
+    'description' => 'Test of the "Please pay by (date)" message.  Include [_1] to indicate the date, for example: "Please pay by [_1]"',
+    'type'        => 'text',
+    'per_agent'   => 1,
+  },
+
+  { 
     'key'         => 'invoice_sections',
     'section'     => 'invoicing',
-    'description' => 'Split invoice into sections and label according to package category when enabled.',
+    'description' => 'Split invoice into sections and label according to either package category or location when enabled.',
     'type'        => 'checkbox',
     'per_agent'   => 1,
+    'config_bool' => 1,
+  },
+
+  {
+    'key'         => 'invoice_sections_multilocation',
+    'section'     => 'invoicing',
+    'description' => 'Enable invoice_sections for for any bill with at least this many locations on the bill.',
+    'type'        => 'text',
+    'per_agent'   => 1,
+    'validate'    => sub { shift =~ /^\d+$/ ? undef : 'Please enter a number' },
   },
 
   { 
@@ -1596,6 +1623,16 @@ and customer address. Include units.',
     'select_enum' => [ qw(category location) ],
   },
 
+
+  {
+    'key'         => 'invoice_sections_with_taxes',
+    'section'     => 'invoicing',
+    'description' => 'Include taxes within each section of mutli-section invoices.',
+    'type'        => 'checkbox',
+    'per_agent'   => 1,
+    'agent_bool'  => 1,
+  },
+
   {
     'key'         => 'summary_subtotals_method',
     'section'     => 'invoicing',
@@ -2436,6 +2473,21 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'cancel_msgnum-referring_cust-pkg_class',
+    'section'     => 'cancellation',
+    'description' => 'Enable cancellation messages to the referring customer for these package classes.',
+    'type'        => 'select-pkg_class',
+    'multiple'    => 1,
+  },
+
+  {
+    'key'         => 'cancel_msgnum-referring_cust',
+    'section'     => 'cancellation',
+    'description' => 'Template to use for cancellation emails sent to the referring customer.',
+    %msg_template_options,
+  },
+
+  {
     'key'         => 'require_cardname',
     'section'     => 'credit_cards',
     'description' => 'Require an "Exact name on card" to be entered explicitly; don\'t default to using the first and last name.',
@@ -2461,7 +2513,7 @@ and customer address. Include units.',
     'section'     => 'taxation',
     'description' => 'Tax data vendor you are using.',
     'type'        => 'select',
-    'select_enum' => [ '', 'cch', 'billsoft', 'avalara', 'suretax' ],
+    'select_enum' => [ '', 'cch', 'billsoft', 'avalara', 'suretax', 'compliance_solutions' ],
   },
 
   {
@@ -2527,6 +2579,20 @@ and customer address. Include units.',
     'per_agent'   => 1,
   },
 
+  {
+    'key'         => 'compliance_solutions-access_code',
+    'section'     => 'taxation',
+    'description' => 'Access code for <a href="http://csilongwood.com/">Compliance Solutions</a> tax rating service',
+    'type'        => 'text',
+  },
+  {
+    'key'         => 'compliance_solutions-regulatory_code',
+    'section'     => 'taxation',
+    'description' => 'Compliance Solutions regulatory status.',
+    'type'        => 'select',
+    'select_enum' => [ '', 'ILEC', 'IXC', 'CLEC', 'VOIP', 'ISP', 'Wireless' ],
+    'per_agent'   => 1,
+  },
 
   {
     'key'         => 'welcome_msgnum',
@@ -4284,6 +4350,7 @@ and customer address. Include units.',
                        ''       => 'Numeric only',
                        '\d{7}'  => 'Numeric only, exactly 7 digits',
                        'ww?d+'  => 'Numeric with one or two letter prefix',
+                       'd+-w'   => 'Numeric with a dash and one letter suffix',
                      ],
   },
 
@@ -4461,7 +4528,7 @@ and customer address. Include units.',
     'section'     => 'addresses',
     'description' => 'The year to use in census tract lookups.  NOTE: you need to select 2012 or 2013 for Year 2010 Census tract codes.  A selection of 2011 provides Year 2000 Census tract codes.  Use the freeside-censustract-update tool if exisitng customers need to be changed.',
     'type'        => 'select',
-    'select_enum' => [ qw( 2013 2012 2011 ) ],
+    'select_enum' => [ qw( 2017 2016 2015 ) ],
   },
 
   {
@@ -4819,6 +4886,7 @@ and customer address. Include units.',
                        'Change billing address',
                        'Change service address',
                        'Change payment information',
+                       'Change packages',
                        'Change password(s)',
                        'Logout',
                      ],
@@ -5776,6 +5844,13 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'selfservice-ACH_info_readonly',
+    'section'     => 'self-service',
+    'description' => 'make ACH on self service portal read only',
+    'type'        => 'checkbox',
+  },
+
+  {
     'key'         => 'selfservice-announcement',
     'section'     => 'self-service',
     'description' => 'HTML announcement to display to all authenticated users on account overview page',
@@ -5935,6 +6010,14 @@ and customer address. Include units.',
     'type'        => 'text',
   },
 
+  {
+    'key'         => 'selfservice-db_profile',
+    'section'     => 'development',
+    'description' => 'Enable collection and logging of database profiling information for self-service servers.  This has significant overhead, do not leave enabled in production beyond that necessary to collect profiling data.',
+    'type'        => 'checkbox',
+  },
+
+
   # for internal use only; test databases should declare this option and
   # everyone else should pretend it doesn't exist
   #{
@@ -5947,4 +6030,3 @@ and customer address. Include units.',
 );
 
 1;
-