X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=fe010f77b29e9554ea79a46eea45dfe88d7a8fc6;hp=693d1f513a803f57f5aa9feee00f75f79581e644;hb=9bdca2fe23584918219395b62effbb9ef0fc5f1c;hpb=624b2d44625f69d71175c3348cae635d580c890b diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 693d1f513..fe010f77b 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -549,21 +549,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) @@ -572,7 +587,6 @@ worry that config_items is freeside-specific and icky. #... #Unclassified (77 items) - @config_items = map { new FS::ConfItem $_ } ( { @@ -584,7 +598,7 @@ worry that config_items is freeside-specific and icky. { 'key' => 'alert_expiration', - 'section' => 'billing', + 'section' => 'notification', 'description' => 'Enable alerts about billing method expiration (i.e. expiring credit cards).', 'type' => 'checkbox', 'per_agent' => 1, @@ -592,11 +606,18 @@ worry that config_items is freeside-specific and icky. { 'key' => 'alerter_template', - 'section' => 'billing', - 'description' => 'Template file for billing method expiration alerts (i.e. expiring credit cards). 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', @@ -717,6 +738,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'business-onlinepayment-test_transaction', + 'section' => 'billing', + 'description' => 'Turns on the Business::OnlinePayment test_transaction flag. Note that not all gateway modules support this flag; if yours does not, transactions will still be sent live.', + 'type' => 'checkbox', + }, + + { 'key' => 'countrydefault', 'section' => 'UI', 'description' => 'Default two-letter country code (if not supplied, the default is `US\')', @@ -969,6 +997,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.', @@ -1001,6 +1078,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.', @@ -1008,6 +1132,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.', @@ -1029,6 +1169,12 @@ worry that config_items is freeside-specific and icky. 'type' => 'textarea' }, + { + 'key' => 'invoice_print_pdf', + 'section' => 'invoicing', + 'description' => 'Store postal invoices for download in PDF format rather than printing them directly.', + 'type' => 'checkbox', + }, { 'key' => 'invoice_default_terms', @@ -1095,15 +1241,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' => [ @@ -1155,7 +1308,12 @@ worry that config_items is freeside-specific and icky. 'editlist_parts' => [ { type=>'text' }, { type=>'immutable', value=>'IN' }, { type=>'select', - select_enum=>{ map { $_=>$_ } qw(A CNAME MX NS TXT)} }, + select_enum => { + map { $_=>$_ } + #@{ FS::domain_record->rectypes } + qw(A AAAA CNAME MX NS PTR SPF SRV TXT) + }, + }, { type=> 'text' }, ], }, @@ -1208,7 +1366,20 @@ worry that config_items is freeside-specific and icky. 'key' => 'referraldefault', 'section' => 'UI', 'description' => 'Default referral, specified by refnum', - 'type' => 'text', + 'type' => 'select-sub', + 'options_sub' => sub { require FS::Record; + require FS::part_referral; + map { $_->refnum => $_->referral } + FS::Record::qsearch( 'part_referral', + { 'disabled' => '' } + ); + }, + 'option_sub' => sub { require FS::Record; + require FS::part_referral; + my $part_referral = FS::Record::qsearchs( + 'part_referral', { 'refnum'=>shift } ); + $part_referral ? $part_referral->referral : ''; + }, }, # { @@ -1632,6 +1803,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', @@ -1647,6 +1819,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.', @@ -1654,44 +1833,58 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'decline_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for credit card and electronic check decline messages.', + %msg_template_options, + }, + + { 'key' => 'declinetemplate', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Template file for credit card and electronic check decline emails.', 'type' => 'textarea', }, { 'key' => 'emaildecline', - 'section' => 'billing', + 'section' => 'notification', 'description' => 'Enable emailing of credit card and electronic check 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' => 'cancel_msgnum', + 'section' => 'notification', + 'description' => 'Template to use for cancellation emails.', + %msg_template_options, + }, + + { 'key' => 'cancelmessage', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Template file for cancellation emails.', 'type' => 'textarea', }, { 'key' => 'cancelsubject', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Subject line for cancellation emails.', 'type' => 'text', }, { 'key' => 'emailcancel', - 'section' => 'billing', - 'description' => 'Enable emailing of cancellation notices. Make sure to fill in the cancelmessage and cancelsubject configuration values as well.', + 'section' => 'notification', + 'description' => 'Enable emailing of cancellation notices. Make sure to select the template in the cancel_msgnum option.', 'type' => 'checkbox', }, @@ -1745,16 +1938,23 @@ worry that config_items is freeside-specific and icky. }, { + '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', - '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_email-from', - 'section' => '', + 'section' => 'deprecated', 'description' => 'From: address header for welcome email', 'type' => 'text', 'per_agent' => 1, @@ -1762,7 +1962,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, @@ -1770,7 +1970,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' ], @@ -1784,37 +1984,44 @@ worry that config_items is freeside-specific and icky. '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', - '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_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' ], @@ -2061,6 +2268,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).', @@ -2110,7 +2325,12 @@ 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' => '', @@ -2370,6 +2590,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.', @@ -2426,6 +2653,13 @@ 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.", @@ -2720,8 +2954,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' => 'impending_recur_template', - 'section' => 'billing', + 'section' => 'deprecated', 'description' => 'Template file for alerts about looming first time recurrant billing. See the Text::Template documentation for details on the template substitition language. Also see packages with a flat price plan The following variables are available', #
  • $payby
  • $expdate most likely only confuse 'type' => 'textarea', @@ -3001,6 +3242,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'disable_settings_changes', + 'section' => '', + 'description' => 'Disable all settings changes, for demos, except for the usernames given in the comma-separated list.', + 'type' => [qw( checkbox text )], + }, + + { 'key' => 'cust_main-edit_agent_custid', 'section' => 'UI', 'description' => 'Enable editing of the agent_custid field.', @@ -3015,6 +3263,13 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'cust_main-title-display_custnum', + 'section' => 'UI', + 'description' => 'Add the display_custom (agent_custid or custnum) to the title on customer view pages.', + 'type' => 'checkbox', + }, + + { 'key' => 'cust_bill-default_agent_invid', 'section' => 'UI', 'description' => 'Display the agent_invid field when available instead of the invnum field.', @@ -3340,6 +3595,22 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'cdr-charged_party-field', + 'section' => '', + 'description' => 'Set the charged_party field of CDRs to this field.', + 'type' => 'select-sub', + 'options_sub' => sub { my $fields = FS::cdr->table_info->{'fields'}; + map { $_ => $fields->{$_}||$_ } + grep { $_ !~ /^(acctid|charged_party)$/ } + FS::Schema::dbdef->table('cdr')->columns; + }, + 'option_sub' => sub { my $f = shift; + FS::cdr->table_info->{'fields'}{$f} || $f; + }, + }, + + #probably deprecate in favor of cdr-charged_party-field above + { 'key' => 'cdr-charged_party-accountcode', 'section' => '', 'description' => 'Set the charged_party field of CDRs to the accountcode.', @@ -3424,6 +3695,14 @@ worry that config_items is freeside-specific and icky. }, { + 'key' => 'mc-outbound_packages', + 'section' => '', + 'description' => "Don't use this.", + 'type' => 'select-part_pkg', + 'multiple' => 1, + }, + + { 'key' => 'disable-cust-pkg_class', 'section' => 'UI', 'description' => 'Disable the two-step dropdown for selecting package class and package, and return to the classic single dropdown.', @@ -3596,6 +3875,61 @@ worry that config_items is freeside-specific and icky. 'type' => 'checkbox', }, + { + 'key' => 'cust_main-exports', + 'section' => '', + 'description' => 'Export(s) to call on cust_main insert, modification and deletion.', + 'type' => 'select-sub', + 'multiple' => 1, + 'options_sub' => sub { + require FS::Record; + require FS::part_export; + my @part_export = + map { qsearch( 'part_export', {exporttype => $_ } ) } + keys %{FS::part_export::export_info('cust_main')}; + map { $_->exportnum => $_->exporttype.' to '.$_->machine } @part_export; + }, + 'option_sub' => sub { + require FS::Record; + require FS::part_export; + my $part_export = FS::Record::qsearchs( + 'part_export', { 'exportnum' => shift } + ); + $part_export + ? $part_export->exporttype.' to '.$part_export->machine + : ''; + }, + }, + + { + 'key' => 'cust_tag-location', + 'section' => 'UI', + 'description' => 'Location where customer tags are displayed.', + 'type' => 'select', + 'select_enum' => [ 'misc_info', 'top' ], + }, + + { + 'key' => 'maestro-status_test', + 'section' => 'UI', + 'description' => 'Display a link to the maestro status test page on the customer view page', + 'type' => 'checkbox', + }, + + { + '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" },