X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=068ed9756d750e55a9da3ea120ced8339da05f8a;hb=124601883f5c26ddc16d0f9d0890614dfd58a91e;hp=a1a05625c954cf4612f9b42f2e237081e2d8b4ed;hpb=d6cdfae5696a2728c9bf02fbaa2a4ffb6431e5c7;p=freeside.git diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index a1a05625c..068ed9756 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -548,21 +548,36 @@ worry that config_items is freeside-specific and icky. "Solo", ); -@base_items = qw ( - invoice_template - invoice_latex - invoice_latexreturnaddress - invoice_latexfooter - invoice_latexsmallfooter - invoice_latexnotes - invoice_latexcoupon - invoice_html - invoice_htmlreturnaddress - invoice_htmlfooter - invoice_htmlnotes - logo.png - logo.eps - ); +@base_items = qw( +invoice_template +invoice_latex +invoice_latexreturnaddress +invoice_latexfooter +invoice_latexsmallfooter +invoice_latexnotes +invoice_latexcoupon +invoice_html +invoice_htmlreturnaddress +invoice_htmlfooter +invoice_htmlnotes +logo.png +logo.eps +); + +my %msg_template_options = ( + 'type' => 'select-sub', + 'options_sub' => sub { require FS::Record; + require FS::agent; + require FS::msg_template; + map { $_->msgnum, $_->msgname } + qsearch('msg_template', { disabled => '' }); + }, + 'option_sub' => sub { require FS::msg_template; + my $msg_template = FS::msg_template->by_key(shift); + $msg_template ? $msg_template->msgname : '' + }, +); + #Billing (81 items) #Invoicing (50 items) @@ -571,7 +586,6 @@ worry that config_items is freeside-specific and icky. #... #Unclassified (77 items) - @config_items = map { new FS::ConfItem $_ } ( { @@ -583,7 +597,7 @@ worry that config_items is freeside-specific and icky. { 'key' => 'alert_expiration', - 'section' => 'billing', + 'section' => 'notification', 'description' => 'Enable alerts about billing method expiration.', 'type' => 'checkbox', 'per_agent' => 1, @@ -591,11 +605,18 @@ worry that config_items is freeside-specific and icky. { 'key' => 'alerter_template', - 'section' => 'billing', - 'description' => 'Template file for billing method expiration alerts. See the billing documentation for details.', + 'section' => 'deprecated', + 'description' => 'Template file for billing method expiration alerts (i.e. expiring credit cards).', 'type' => 'textarea', 'per_agent' => 1, }, + + { + 'key' => 'alerter_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for credit card expiration alerts.', + %msg_template_options, + }, { 'key' => 'apacheip', @@ -729,6 +750,7 @@ worry that config_items is freeside-specific and icky. 'type' => 'select', 'select_hash' => [ '%m/%d/%Y' => 'MM/DD/YYYY', + '%d/%m/%Y' => 'DD/MM/YYYY', '%Y/%m/%d' => 'YYYY/MM/DD', ], }, @@ -967,6 +989,55 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'invoice_latextopmargin', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice topmargin setting. Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + + { + 'key' => 'invoice_latexheadsep', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice headsep setting. Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + + { + 'key' => 'invoice_latexaddresssep', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice separation between invoice header +and customer address. Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + + { + 'key' => 'invoice_latextextheight', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice textheight setting. Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + + { 'key' => 'invoice_latexnotes', 'section' => 'invoicing', 'description' => 'Notes section for LaTeX typeset PostScript invoices.', @@ -999,6 +1070,53 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'invoice_latexextracouponspace', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice textheight space to reserve for a tear off coupon. Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + + { + 'key' => 'invoice_latexcouponfootsep', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice separation between tear off coupon and footer. Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + + { + 'key' => 'invoice_latexcouponamountenclosedsep', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice separation between total due and amount enclosed line. Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + { + 'key' => 'invoice_latexcoupontoaddresssep', + 'section' => 'invoicing', + 'description' => 'Optional LaTeX invoice separation between invoice data and the to address (usually invoice_latexreturnaddress). Include units.', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { shift =~ + /^-?\d*\.?\d+(in|mm|cm|pt|em|ex|pc|bp|dd|cc|sp)$/ + ? '' : 'Invalid LaTex length'; + }, + }, + + { 'key' => 'invoice_latexreturnaddress', 'section' => 'invoicing', 'description' => 'Return address for LaTeX typeset PostScript invoices.', @@ -1006,6 +1124,22 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'invoice_latexverticalreturnaddress', + 'section' => 'invoicing', + 'description' => 'Place the return address under the company logo rather than beside it.', + 'type' => 'checkbox', + 'per_agent' => 1, + }, + + { + 'key' => 'invoice_latexcouponaddcompanytoaddress', + 'section' => 'invoicing', + 'description' => 'Add the company name to the To address on the remittance coupon because the return address does not contain it.', + 'type' => 'checkbox', + 'per_agent' => 1, + }, + + { 'key' => 'invoice_latexsmallfooter', 'section' => 'invoicing', 'description' => 'Optional small footer for multi-page LaTeX typeset PostScript invoices.', @@ -1093,15 +1227,22 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'payment_receipt_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for payment receipts', + %msg_template_options, + }, + + { 'key' => 'payment_receipt_email', - 'section' => 'billing', - 'description' => 'Template file for payment receipts. Payment receipts are sent to the customer email invoice destination(s) when a payment is received. See the Text::Template documentation for details on the template substitution language. The following variables are available: ', + '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' => 'billing', + 'section' => 'notification', 'description' => 'When payment receipts are triggered. Defaults to when payment is made.', 'type' => 'select', 'select_hash' => [ @@ -1111,6 +1252,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'trigger_export_insert_on_payment', + 'section' => 'billing', + 'description' => 'Enable exports on payment application.', + 'type' => 'checkbox', + }, + + { 'key' => 'lpr', 'section' => 'required', 'description' => 'Print command for paper invoices, for example `lpr -h\'', @@ -1251,6 +1399,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'report-showpasswords', + 'section' => 'UI', + 'description' => 'This is a terrible idea. Do not enable it. STRONGLY NOT RECOMMENDED. Enables display of passwords on services reports.', + 'type' => 'checkbox', + }, + + { 'key' => 'signupurl', 'section' => 'UI', 'description' => 'if you are using customer-to-customer referrals, and you enter the URL of your signup server CGI, the customer view screen will display a customized link to the signup server with the appropriate customer as referral', @@ -1265,6 +1420,32 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'smtp-username', + 'section' => '', + 'description' => 'Optional SMTP username for Freeside\'s outgoing mail', + 'type' => 'text', + }, + + { + 'key' => 'smtp-password', + 'section' => '', + 'description' => 'Optional SMTP password for Freeside\'s outgoing mail', + 'type' => 'text', + }, + + { + 'key' => 'smtp-encryption', + 'section' => '', + 'description' => 'Optional SMTP encryption method. The STARTTLS methods require smtp-username and smtp-password to be set.', + 'type' => 'select', + 'select_hash' => [ '25' => 'None (port 25)', + '25-starttls' => 'STARTTLS (port 25)', + '587-starttls' => 'STARTTLS / submission (port 587)', + '465-tls' => 'SMTPS (SSL) (port 465)', + ], + }, + + { 'key' => 'soadefaultttl', 'section' => 'BIND', 'description' => 'SOA default TTL for new domains.', @@ -1485,6 +1666,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'selfservice-save_unchecked', + 'section' => 'self-service', + 'description' => 'In self-service, uncheck "Remember information" checkboxes by default (normally, they are checked by default).', + 'type' => 'checkbox', + }, + + { 'key' => 'signup_server-default_agentnum', 'section' => 'self-service', 'description' => 'Default agent for the signup server', @@ -1583,6 +1771,7 @@ worry that config_items is freeside-specific and icky. 'description' => 'Run billing for signup server signups immediately, and do not provision accounts which subsequently have a balance.', 'type' => 'checkbox', }, + { 'key' => 'signup_server-classnum2', 'section' => 'self-service', @@ -1598,6 +1787,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'selfservice-xmlrpc', + 'section' => 'self-service', + 'description' => 'Run a standalone self-service XML-RPC server on the backend (on port 8080).', + 'type' => 'checkbox', + }, + + { 'key' => 'backend-realtime', 'section' => 'billing', 'description' => 'Run billing for backend signups immediately.', @@ -1606,42 +1802,56 @@ worry that config_items is freeside-specific and icky. { 'key' => 'declinetemplate', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Template file for credit card decline emails.', 'type' => 'textarea', }, { + 'key' => 'decline_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for credit card and electronic check decline messages.', + %msg_template_options, + }, + + { 'key' => 'emaildecline', - 'section' => 'billing', + 'section' => 'notification', 'description' => 'Enable emailing of credit card decline notices.', 'type' => 'checkbox', }, { 'key' => 'emaildecline-exclude', - 'section' => 'billing', + 'section' => 'notification', 'description' => 'List of error messages that should not trigger email decline notices, one per line.', 'type' => 'textarea', }, { 'key' => 'cancelmessage', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Template file for cancellation emails.', 'type' => 'textarea', }, { + 'key' => 'cancel_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for cancellation emails.', + %msg_template_options, + }, + + { 'key' => 'cancelsubject', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Subject line for cancellation emails.', 'type' => 'text', }, { 'key' => 'emailcancel', - 'section' => 'billing', + 'section' => 'notification', 'description' => 'Enable emailing of cancellation notices. Make sure to fill in the cancelmessage and cancelsubject configuration values as well.', 'type' => 'checkbox', }, @@ -1697,15 +1907,22 @@ worry that config_items is freeside-specific and icky. { 'key' => 'welcome_email', - 'section' => '', - '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. See the Text::Template documentation for details on the template substitution language. The following variables are available', + '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_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for welcome messages when a svc_acct record is created.', + %msg_template_options, + }, + + { 'key' => 'welcome_email-from', - 'section' => '', + 'section' => 'deprecated', 'description' => 'From: address header for welcome email', 'type' => 'text', 'per_agent' => 1, @@ -1713,7 +1930,7 @@ worry that config_items is freeside-specific and icky. { 'key' => 'welcome_email-subject', - 'section' => '', + 'section' => 'deprecated', 'description' => 'Subject: header for welcome email', 'type' => 'text', 'per_agent' => 1, @@ -1721,7 +1938,7 @@ worry that config_items is freeside-specific and icky. { 'key' => 'welcome_email-mimetype', - 'section' => '', + 'section' => 'deprecated', 'description' => 'MIME type for welcome email', 'type' => 'select', 'select_enum' => [ 'text/plain', 'text/html' ], @@ -1730,42 +1947,49 @@ worry that config_items is freeside-specific and icky. { 'key' => 'welcome_letter', - 'section' => '', + 'section' => 'deprecated', 'description' => 'Optional LaTex template file for a printed welcome letter. A welcome letter is printed the first time a cust_pkg record is created. See the Text::Template documentation and the billing documentation for details on the template substitution language. A variable exists for each fieldname in the customer record ($first, $last, etc). The following additional variables are available', 'type' => 'textarea', }, { 'key' => 'warning_email', - 'section' => '', + '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 Text::Template documentation for details on the template substitution language. The following variables are available', '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-from', - 'section' => '', + 'section' => 'notification', 'description' => 'From: address header for warning email', 'type' => 'text', }, { 'key' => 'warning_email-cc', - 'section' => '', + 'section' => 'notification', 'description' => 'Additional recipient(s) (comma separated) for warning email when remaining usage reaches zero.', 'type' => 'text', }, { 'key' => 'warning_email-subject', - 'section' => '', + 'section' => 'notification', 'description' => 'Subject: header for warning email', 'type' => 'text', }, { 'key' => 'warning_email-mimetype', - 'section' => '', + 'section' => 'notification', 'description' => 'MIME type for warning email', 'type' => 'select', 'select_enum' => [ 'text/plain', 'text/html' ], @@ -1796,14 +2020,14 @@ worry that config_items is freeside-specific and icky. { 'key' => 'svc_acct-notes', - 'section' => 'UI', + 'section' => 'deprecated', 'description' => 'Extra HTML to be displayed on the Account View screen.', 'type' => 'textarea', }, { 'key' => 'radius-password', - 'section' => '', + 'section' => 'notification', 'description' => 'RADIUS attribute for plain-text passwords.', 'type' => 'select', 'select_enum' => [ 'Password', 'User-Password', 'Cleartext-Password' ], @@ -1934,7 +2158,7 @@ worry that config_items is freeside-specific and icky. { 'key' => 'cust_pkg-change_pkgpart-bill_now', 'section' => '', - 'description' => "When changing packages, bill the new package immediately. Useful for prepaid situations with RADIUS where an Expiration attribute base don the package must be present at all times.", + 'description' => "When changing packages, bill the new package immediately. Useful for prepaid situations with RADIUS where an Expiration attribute based on the package must be present at all times.", 'type' => 'checkbox', }, @@ -2012,6 +2236,14 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'global_unique-pbx_title', + 'section' => '', + 'description' => 'Global phone number uniqueness control: enabled (usual setting - svc_pbx.title must be unique), or disabled turns off duplicate checking for this field.', + 'type' => 'select', + 'select_enum' => [ 'enabled', 'disabled' ], + }, + + { 'key' => 'svc_external-skip_manual', 'section' => 'UI', 'description' => 'When provisioning svc_external services, skip manual entry of id and title fields in the UI. Usually used in conjunction with an export that populates these fields (i.e. artera_turbo).', @@ -2061,6 +2293,39 @@ worry that config_items is freeside-specific and icky. } }, }, + { + 'key' => 'ticket_system-force_default_queueid', + 'section' => '', + 'description' => 'Disallow queue selection when creating new tickets from customer view.', + 'type' => 'checkbox', + }, + { + 'key' => 'ticket_system-selfservice_queueid', + 'section' => '', + 'description' => 'Queue used when creating new customer tickets from self-service. Defautls to ticket_system-default_queueid if not specified.', + #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-priority_reverse', @@ -2293,6 +2558,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'cust_pkg-show_fcc_voice_grade_equivalent', + 'section' => 'UI', + 'description' => "Show a field on package definitions for assigning a DSO equivalency number suitable for use on FCC form 477.", + 'type' => 'checkbox', + }, + + { 'key' => 'svc_acct-edit_uid', 'section' => 'shell', 'description' => 'Allow UID editing.', @@ -2349,6 +2621,20 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'cgp_rule-domain_templates', + 'section' => '', + 'description' => 'Communigate Pro rule templates for domains, one per line, "svcnum Name"', + 'type' => 'textarea', + }, + + { + 'key' => 'svc_forward-no_srcsvc', + 'section' => '', + 'description' => "Don't allow forwards from existing accounts, only arbitrary addresses. Useful when exporting to systems such as Communigate Pro which treat forwards in this fashion.", + 'type' => 'checkbox', + }, + + { 'key' => 'svc_forward-arbitrary_dst', 'section' => '', 'description' => "Allow forwards to point to arbitrary strings that don't necessarily look like email addresses. Only used when using forwards for weird, non-email things.", @@ -2676,8 +2962,15 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'impending_recur_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for alerts about first-time recurring billing.', + %msg_template_options, + }, + + { 'key' => 'disable_setup_suspended_pkgs', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Disables charging of setup fees for suspended packages.', 'type' => 'checkbox', }, @@ -2834,11 +3127,18 @@ worry that config_items is freeside-specific and icky. { 'key' => 'disable_previous_balance', 'section' => 'invoicing', - 'description' => 'Disable inclusion of previous balancem payment, and credit lines on invoices', + 'description' => 'Disable inclusion of previous balance, payment, and credit lines on invoices', 'type' => 'checkbox', }, { + 'key' => 'previous_balance-exclude_from_total', + 'section' => 'invoicing', + 'description' => 'Do not include previous balance in the \'Total\' line. Only meaningful when invoice_sections is false. Optionally provide text to override the Total New Charges description', + 'type' => [ qw(checkbox text) ], + }, + + { 'key' => 'previous_balance-summary_only', 'section' => 'invoicing', 'description' => 'Only show a single line summarizing the total previous balance rather than one line per invoice.', @@ -2846,6 +3146,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'balance_due_below_line', + 'section' => 'invoicing', + 'description' => 'Place the balance due message below a line. Only meaningful when when invoice_sections is false.', + 'type' => 'checkbox', + }, + + { 'key' => 'usps_webtools-userid', 'section' => 'UI', 'description' => 'Production UserID for USPS web tools. Enables USPS address standardization. See the USPS website, register and agree not to use the tools for batch purposes.', @@ -3143,7 +3450,6 @@ worry that config_items is freeside-specific and icky. 'per_agent' => 1, }, - { 'key' => 'selfservice-menu_top_image', 'section' => 'self-service', @@ -3221,6 +3527,20 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'svc_phone-domain', + 'section' => '', + 'description' => 'Track an optional domain association with each phone service.', + 'type' => 'checkbox', + }, + + { + 'key' => 'svc_phone-phone_name-max_length', + 'section' => '', + 'description' => 'Maximum length of the phone service "Name" field (svc_phone.phone_name). Sometimes useful to limit this (to 15?) when exporting as Caller ID data.', + 'type' => 'text', + }, + + { 'key' => 'default_phone_countrycode', 'section' => '', 'description' => 'Default countrcode', @@ -3449,6 +3769,42 @@ worry that config_items is freeside-specific and icky. 'type' => 'checkbox', }, + { + 'key' => 'svc_domain-edit_domain', + 'section' => '', + 'description' => 'Enable domain renaming', + 'type' => 'checkbox', + }, + + { + 'key' => 'enable_legacy_prepaid_income', + 'section' => '', + 'description' => "Enable legacy prepaid income reporting. Only useful when you have imported pre-Freeside packages with longer-than-monthly duration, and need to do prepaid income reporting on them before they've been invoiced the first time.", + 'type' => 'checkbox', + }, + + { + 'key' => 'cust_tag-location', + 'section' => 'UI', + 'description' => 'Location where customer tags are displayed.', + 'type' => 'select', + 'select_enum' => [ 'misc_info', 'top' ], + }, + + { + 'key' => 'cust_main-custom_link', + 'section' => 'UI', + 'description' => 'URL to use as source for the "Custom" tab in the View Customer page. The custnum will be appended.', + 'type' => 'text', + }, + + { + 'key' => 'cust_main-custom_title', + 'section' => 'UI', + 'description' => 'Title for the "Custom" tab in the View Customer page.', + 'type' => 'text', + }, + { key => "apacheroot", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachine", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachines", section => "deprecated", description => "DEPRECATED", type => "text" },