use FS::ConfItem;
use FS::ConfDefaults;
use FS::Conf_compat17;
+use FS::payby;
use FS::conf;
use FS::Record qw(qsearch qsearchs);
use FS::UID qw(dbh datasrc use_confcompat);
$compat->$method(@_);
}
+# needs a non _ name, called externally by config-view now (and elsewhere?)
sub _config {
my($self,$name,$agentnum)=@_;
my $hashref = { 'name' => $name };
warn "Inserting $key\n" if $DEBUG;
local $/;
my $value = readline(new IO::File "$dir/$key");
- if ($item->type eq 'binary') {
+ if ($item->type =~ /^(binary|image)$/ ) {
$self->set_binary($key, $value);
}else{
$self->set($key, $value);
$error .= "$key fails existential comparison; "
if $self->exists($key) xor $compat->exists($key);
- unless ($type eq 'binary') {
+ if ( $type !~ /^(binary|image)$/ ) {
+
{
no warnings;
$error .= "$key fails scalar comparison; "
$error .= "$key fails list comparison; "
unless $r;
}
- }
- if ($type eq 'binary') {
+ } else {
+
$error .= "$key fails binary comparison; "
unless scalar($self->config_binary($key)) eq scalar($compat->config_binary($key));
- }
- if ($error =~ /existential comparison/ && $item->section eq 'deprecated') {
- my $proto;
- for ( @config_items ) { $proto = $_; last if $proto->key eq $key; }
- unless ($proto->key eq $key) {
- warn "removed config item $error\n" if $DEBUG;
- $error = '';
- }
}
+#remove deprecated config on our own terms, not freeside-upgrade's
+# if ($error =~ /existential comparison/ && $item->section eq 'deprecated') {
+# my $proto;
+# for ( @config_items ) { $proto = $_; last if $proto->key eq $key; }
+# unless ($proto->key eq $key) {
+# warn "removed config item $error\n" if $DEBUG;
+# $error = '';
+# }
+# }
+
$error;
}
die "don't know about $base items" unless $proto->key eq $base;
map { new FS::ConfItem {
- 'key' => $_,
- 'section' => $proto->section,
- 'description' => 'Alternate ' . $proto->description . ' See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Invoice_templates">billing documentation</a> for details.',
- 'type' => $proto->type,
- };
+ 'key' => $_,
+ 'base_key' => $proto->key,
+ 'section' => $proto->section,
+ 'description' => 'Alternate ' . $proto->description . ' See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Invoice_templates">billing documentation</a> for details.',
+ 'type' => $proto->type,
+ };
} &$listmaker($base);
} @base_items,
);
=item init-config DIR
-Imports the non-deprecated configuration items from DIR (1.7 compatible)
+Imports the configuration items from DIR (1.7 compatible)
to conf records in the database.
=cut
'type' => 'text',
},
+ {
+ 'key' => 'alert_expiration',
+ 'section' => 'billing',
+ 'description' => 'Enable alerts about billing method expiration.',
+ 'type' => 'checkbox',
+ 'per_agent' => 1,
+ },
+
{
'key' => 'alerter_template',
'section' => 'billing',
'description' => 'Template file for billing method expiration alerts. See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Credit_cards_and_Electronic_checks">billing documentation</a> for details.',
'type' => 'textarea',
- 'per-agent' => 1,
+ 'per_agent' => 1,
},
{
'key' => 'apacheip',
- 'section' => 'deprecated',
- 'description' => '<b>DEPRECATED</b>, add an <i>apache</i> <a href="../browse/part_export.cgi">export</a> instead. Used to be the current IP address to assign to new virtual hosts',
+ #not actually deprecated yet
+ #'section' => 'deprecated',
+ #'description' => '<b>DEPRECATED</b>, add an <i>apache</i> <a href="../browse/part_export.cgi">export</a> instead. Used to be the current IP address to assign to new virtual hosts',
+ 'section' => '',
+ 'description' => 'IP address to assign to new virtual hosts',
'type' => 'text',
},
'type' => 'textarea',
},
+ {
+ 'key' => 'business-onlinepayment-namespace',
+ 'section' => 'billing',
+ 'description' => 'Specifies which perl module namespace (which group of collection routines) is used by default.',
+ 'type' => 'select',
+ 'select_hash' => [
+ 'Business::OnlinePayment' => 'Direct API (Business::OnlinePayment)',
+ 'Business::OnlineThirdPartyPayment' => 'Web API (Business::ThirdPartyPayment)',
+ ],
+ },
+
{
'key' => 'business-onlinepayment-description',
'section' => 'billing',
{
'key' => 'deletecredits',
- '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.',
+ #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 )],
},
'section' => 'billing',
'description' => 'Notes section for HTML invoices. Defaults to the same data in invoice_latexnotes if not specified.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
'section' => 'billing',
'description' => 'Footer for HTML invoices. Defaults to the same data in invoice_latexfooter if not specified.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
'section' => 'billing',
'description' => 'Notes section for LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
'section' => 'billing',
'description' => 'Footer for LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
'section' => 'billing',
'description' => 'Remittance coupon for LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
'section' => 'billing',
'description' => 'Optional small footer for multi-page LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
{
'key' => 'invoice_sections',
'section' => 'billing',
- 'description' => 'Split invoice into sections and label according to package class when enabled.',
+ 'description' => 'Split invoice into sections and label according to package category when enabled.',
'type' => 'checkbox',
},
'section' => 'username',
'description' => 'Usernames must contain at least one letter',
'type' => 'checkbox',
+ 'per_agent' => 1,
},
{
'type' => 'checkbox',
},
+ {
+ 'key' => 'username-colon',
+ 'section' => 'username',
+ 'description' => 'Allow the colon character (:) in usernames.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'safe-part_bill_event',
'section' => 'UI',
{
'key' => 'selfservice_server-base_url',
'section' => '',
- 'description' => 'Base URL for the self-service web interface - necessary for special provisioning widgets to find their way.',
+ 'description' => 'Base URL for the self-service web interface - necessary for some widgets to find their way, including retrieval of non-US state information and phone number provisioning.',
'type' => 'text',
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'bill_usage_on_cancel',
+ 'section' => 'billing',
+ 'description' => 'Enable automatic generation of an invoice for usage when a package is cancelled. Not all packages can do this. Usage data must already be available.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'require_cardname',
'section' => 'billing',
{
'key' => 'enable_taxproducts',
'section' => 'billing',
- 'description' => 'Enable per-package mapping to new style tax classes',
+ 'description' => 'Enable per-package mapping to vendor tax data from CCH or elsewhere.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'taxdatadirectdownload',
+ 'section' => 'billing', #well
+ 'description' => 'Enable downloading tax data directly from the vendor site',
'type' => 'checkbox',
},
'select_enum' => [ 'Framed-IP-Address', 'Framed-Address' ],
},
+ #http://dev.coova.org/svn/coova-chilli/doc/dictionary.chillispot
+ {
+ 'key' => 'radius-chillispot-max',
+ 'section' => '',
+ 'description' => 'Enable ChilliSpot (and CoovaChilli) Max attributes, specifically ChilliSpot-Max-{Input,Output,Total}-{Octets,Gigawords}.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'svc_acct-alldomains',
'section' => '',
'type' => 'text',
},
+ {
+ 'key' => 'credit_card-recurring_billing_flag',
+ 'section' => 'billing',
+ 'description' => 'This controls when the system passes the "recurring_billing" flag on credit card transactions. If supported by your processor (and the Business::OnlinePayment processor module), passing the flag indicates this is a recurring transaction and may turn off the CVV requirement. ',
+ 'type' => 'select',
+ 'select_hash' => [
+ 'actual_oncard' => 'Default/classic behavior: set the flag if a customer has actual previous charges on the card.',
+ 'transaction_is_recur' => 'Set the flag if the transaction itself is recurring, irregardless of previous charges on the card.',
+ ],
+ },
+
+ {
+ 'key' => 'credit_card-recurring_billing_acct_code',
+ 'section' => 'billing',
+ 'description' => 'When the "recurring billing" flag is set, also set the "acct_code" to "rebill". Useful for reporting purposes with supported gateways (PlugNPay, others?)',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cvv-save',
'section' => 'billing',
{
'key' => 'svc_acct-usage_threshold',
'section' => 'billing',
- 'description' => 'The threshold (expressed as percentage) of acct.seconds or acct.up|down|totalbytes at which a warning message is sent to a service holder. Typically used in conjunction with prepaid packages and freeside-sqlradius-radacctd. Defaults to 80.',
+ 'description' => 'The threshold (expressed as percentage) of acct.seconds or acct.up|down|totalbytes at which a warning message is sent to a service holder. Typically used in conjunction with prepaid packages and freeside-sqlradius-radacctd.',
'type' => 'text',
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'voip-cdr_email',
+ 'section' => '',
+ 'description' => 'Include the call details on emailed invoices even if the customer is configured for not printing them on the invoices.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'svc_forward-arbitrary_dst',
'section' => '',
{
'key' => 'tax-pkg_address',
'section' => 'billing',
- 'description' => 'By default, tax calculations are done based on the billing address. Enable this switch to calculate tax based on the package address instead (when present).',
+ 'description' => 'By default, tax calculations are done based on the billing address. Enable this switch to calculate tax based on the package address instead (when present). Note that this option is currently incompatible with vendor data taxation enabled by enable_taxproducts.',
'type' => 'checkbox',
},
'type' => 'text',
},
+ {
+ 'key' => 'cust_main-packages-years',
+ 'section' => 'UI',
+ 'description' => 'Number of years to show old (cancelled and one-time charge) packages by default. Currently defaults to 2.',
+ 'type' => 'text',
+ },
+
{
'key' => 'cust_main-use_comments',
'section' => 'UI',
'key' => 'logo.eps',
'section' => 'billing', #?
'description' => 'Company logo for printed and PDF invoices, in EPS format.',
- 'type' => 'binary',
+ 'type' => 'image',
'per_agent' => 1, #XXX as above, kinda
},
'type' => 'checkbox',
},
+ {
+ 'key' => 'previous_balance-summary_only',
+ 'section' => 'billing',
+ 'description' => 'Only show a single line summarizing the total previous balance rather than one line per invoice.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'usps_webtools-userid',
'section' => 'UI',
'type' => 'checkbox',
},
+ {
+ 'key' => 'cust_main-require_censustract',
+ 'section' => 'UI',
+ 'description' => 'Customer is required to have a census tract. Useful for FCC form 477 reports. See also: cust_main-auto_standardize_address',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'census_year',
+ 'section' => 'UI',
+ 'description' => 'The year to use in census tract lookups',
+ 'type' => 'select',
+ 'select_enum' => [ qw( 2008 2007 2006 ) ],
+ },
+
+ {
+ 'key' => 'company_latitude',
+ 'section' => 'UI',
+ 'description' => 'Your company latitude (-90 through 90)',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'company_longitude',
+ 'section' => 'UI',
+ 'description' => 'Your company longitude (-180 thru 180)',
+ 'type' => 'text',
+ },
+
{
'key' => 'disable_acl_changes',
'section' => '',
'type' => 'text',
},
+ {
+ 'key' => 'selfservice-bulk_format',
+ 'section' => '',
+ 'description' => 'Parameter arrangement for selfservice bulk features',
+ 'type' => 'select',
+ 'select_enum' => [ '', 'izoom-soap', 'izoom-ftp' ],
+ 'per_agent' => 1,
+ },
+
+ {
+ 'key' => 'selfservice-bulk_ftp_dir',
+ 'section' => '',
+ 'description' => 'Enable bulk ftp provisioning in this folder',
+ 'type' => 'text',
+ 'per_agent' => 1,
+ },
+
{
'key' => 'signup-no_company',
'section' => '',
'type' => 'checkbox',
},
+ {
+ 'key' => 'cdr-charged_party-accountcode-trim_leading_0s',
+ 'section' => '',
+ 'description' => 'When setting the charged_party field of CDRs to the accountcode, trim any leading zeros.',
+ 'type' => 'checkbox',
+ },
+
+# {
+# 'key' => 'cdr-charged_party-truncate_prefix',
+# 'section' => '',
+# 'description' => 'If the charged_party field has this prefix, truncate it to the length in cdr-charged_party-truncate_length.',
+# 'type' => 'text',
+# },
+#
+# {
+# 'key' => 'cdr-charged_party-truncate_length',
+# 'section' => '',
+# 'description' => 'If the charged_party field has the prefix in cdr-charged_party-truncate_prefix, truncate it to this length.',
+# 'type' => 'text',
+# },
+
+ {
+ 'key' => 'cdr-charged_party_rewrite',
+ 'section' => '',
+ 'description' => 'Do charged party rewriting in the freeside-cdrrewrited daemon; useful if CDRs are being dropped off directly in the database and require special charged_party processing such as cdr-charged_party-accountcode or cdr-charged_party-truncate*.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cdr-taqua-da_rewrite',
'section' => '',
'type' => 'checkbox',
},
+ {
+ 'key' => 'cdr-asterisk_forward_rewrite',
+ 'section' => '',
+ 'description' => 'Enable special processing for CDRs representing forwarded calls: For CDRs that have a dcontext that starts with "Local/" but does not match dst, set charged_party to dst, parse a new dst from dstchannel, and set amaflags to "2" ("BILL"/"BILLING").',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'sg-multicustomer_hack',
+ 'section' => '',
+ 'description' => "Don't use this.",
+ 'type' => 'checkbox',
+ },
+
+ {
+ '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.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'queued-max_kids',
+ 'section' => '',
+ 'description' => 'Maximum number of queued processes. Defaults to 10.',
+ 'type' => 'text',
+ },
+
+ {
+ 'key' => 'cancelled_cust-noevents',
+ 'section' => 'billing',
+ 'description' => "Don't run events for cancelled customers",
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'agent-invoice_template',
+ 'section' => 'billing',
+ 'description' => 'Enable display/edit of old-style per-agent invoice template selection',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'svc_broadband-manage_link',
+ 'section' => 'UI',
+ 'description' => 'URL for svc_broadband "Manage Device" link. The following substitutions are available: $ip_addr.',
+ 'type' => 'text',
+ },
+
+ #more fine-grained, service def-level control could be useful eventually?
+ {
+ 'key' => 'svc_broadband-allow_null_ip_addr',
+ 'section' => '',
+ 'description' => '',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'tax-report_groups',
+ 'section' => '',
+ 'description' => 'List of grouping possibilities for tax names on reports, one per line, "label op value" (op can be = or !=).',
+ 'type' => 'textarea',
+ },
+
+ {
+ 'key' => 'tax-cust_exempt-groups',
+ 'section' => '',
+ 'description' => 'List of grouping possibilities for tax names, for per-customer exemption purposes, one tax name per line. For example, "GST" would indicate the ability to exempt customers individually from taxes named "GST" (but not other taxes).',
+ 'type' => 'textarea',
+ },
+
+ {
+ 'key' => 'cust_main-default_view',
+ 'section' => 'UI',
+ 'description' => 'Default customer view, for users who have not selected a default view in their preferences.',
+ 'type' => 'select',
+ 'select_hash' => [
+ #false laziness w/view/cust_main.cgi and pref/pref.html
+ 'basics' => 'Basics',
+ 'notes' => 'Notes',
+ 'tickets' => 'Tickets',
+ 'packages' => 'Packages',
+ 'payment_history' => 'Payment History',
+ #'' => 'Change History',
+ 'jumbo' => 'Jumbo',
+ ],
+ },
+
+ {
+ 'key' => 'enable_tax_adjustments',
+ 'section' => 'billing',
+ 'description' => 'Enable the ability to add manual tax adjustments.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'rt-crontool',
+ 'section' => '',
+ 'description' => 'Enable the RT CronTool extension.',
+ 'type' => 'checkbox',
+ },
+
);
1;
+