invoice_latexsmallfooter
invoice_latexnotes
invoice_latexcoupon
+invoice_latexwatermark
invoice_html
invoice_htmlreturnaddress
invoice_htmlfooter
invoice_htmlnotes
+invoice_htmlwatermark
logo.png
logo.eps
);
}
}
+my $validate_email = sub { $_[0] =~
+ /^[^@]+\@[[:alnum:]-]+(\.[[:alnum:]-]+)+$/
+ ? '' : 'Invalid email address';
+ };
+
#Billing (81 items)
#Invoicing (50 items)
#UI (69 items)
@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',
'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',
'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',
'description' => 'Return address on email invoices (address only, see invoice_from_name)',
'type' => 'text',
'per_agent' => 1,
- 'validate' => sub { $_[0] =~
- /^[^@]+\@[[:alnum:]-]+(\.[[:alnum:]-]+)+$/
- ? '' : 'Invalid email address';
- }
+ 'validate' => $validate_email,
},
{
'per_locale' => 1,
},
+ {
+ 'key' => 'invoice_htmlwatermark',
+ 'section' => 'invoicing',
+ 'description' => 'Watermark for HTML invoices. Appears in a semitransparent positioned DIV overlaid on the main invoice container.',
+ 'type' => 'textarea',
+ 'per_agent' => 1,
+ 'per_locale' => 1,
+ },
+
{
'key' => 'invoice_latex',
'section' => 'invoicing',
'per_locale' => 1,
},
+ {
+ 'key' => 'invoice_latexwatermark',
+ 'section' => 'invoicing',
+ 'description' => 'Watermark for LaTeX invoices. See "texdoc background" for information on what this can contain. The content itself should be enclosed in braces, optionally followed by a comma and any formatting options.',
+ 'type' => 'textarea',
+ 'per_agent' => 1,
+ 'per_locale' => 1,
+ },
+
{
'key' => 'invoice_email_pdf',
'section' => 'invoicing',
'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',
# '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',
'svc_acct' => 'Account (svc_acct)',
'svc_phone' => 'Phone number (svc_phone)',
'svc_pbx' => 'PBX (svc_pbx)',
+ 'none' => 'None - package only',
],
},
%msg_template_options,
},
- {
- 'key' => 'declinetemplate',
- 'section' => 'deprecated',
- 'description' => 'Template file for credit card and electronic check decline emails.',
- 'type' => 'textarea',
- },
-
{
'key' => 'emaildecline',
'section' => 'notification',
%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',
'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' => '',
'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',
- '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,
},
{
'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) ],
},
{
'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',
'type' => 'text',
},
- {
- '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',
'per_agent' => 1,
},
- {
- 'key' => 'city_not_required',
- 'section' => 'required',
- 'description' => 'Turn off requirement for a City to be entered for billing & shipping addresses',
- 'type' => 'checkbox',
- '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',
'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.',
'select_enum' => [ 'approve', 'decline' ],
},
+ # replaces batch-errors_to (sent email on error)
{
- 'key' => 'batch-errors_to',
+ 'key' => 'batch-errors_not_fatal',
'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
'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',
'type' => 'text',
},
+ {
+ 'key' => 'batchconfig-nacha-origin_name',
+ 'section' => 'billing',
+ 'description' => 'Configuration for NACHA batching, Origin name (defaults to company name, but sometimes bank name is needed instead.)',
+ 'type' => 'text',
+ },
+
{
'key' => 'batch-manual_approval',
'section' => 'billing',
%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' ?
'type' => 'checkbox',
},
+ {
+ 'key' => 'cust_main-no_city_in_address',
+ 'section' => 'UI',
+ 'description' => 'Turn off City for billing & shipping addresses',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'census_year',
'section' => 'UI',
'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',
'type' => 'checkbox',
},
+ {
+ 'key' => 'selfservice-enable_payment_without_balance',
+ 'section' => 'self-service',
+ 'description' => 'Allow selfservice customers to make payments even if balance is zero or below (resulting in an unapplied payment and negative balance.)',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'logout-timeout',
'section' => 'UI',
],
},
- {
- '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',
'type' => 'checkbox',
},
- { 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" },
+ {
+ 'key' => 'default_appointment_length',
+ 'section' => 'UI',
+ 'description' => 'Default appointment length, in minutes (30 minute granularity).',
+ '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',
+ #},
);