X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=ee7f2b4befa76e367d53dfad37eee1db480998db;hb=77977d04ed407c3a44877a83b475a3800a581361;hp=590a5c3ec4e2202c5c9a88f7734dafd3fe2b826e;hpb=80e675c7305768010f8b08ef2ebdfb936432e84d;p=freeside.git diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 590a5c3ec..ee7f2b4be 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -13,6 +13,7 @@ use FS::payby; use FS::conf; use FS::Record qw(qsearch qsearchs); use FS::UID qw(dbh datasrc use_confcompat); +use FS::Misc::Geo; $base_dir = '%%%FREESIDE_CONF%%%'; @@ -631,6 +632,21 @@ my %payment_gateway_options = ( }, ); +# takes the reason class (C, R, S) as an argument +sub reason_type_options { + my $reason_class = shift; + + 'type' => 'select-sub', + 'options_sub' => sub { + map { $_->typenum => $_->type } + qsearch('reason_type', { class => $reason_class }); + }, + 'option_sub' => sub { + my $type = FS::reason_type->by_key(shift); + $type ? $type->type : ''; + } +} + #Billing (81 items) #Invoicing (50 items) #UI (69 items) @@ -678,6 +694,13 @@ my %payment_gateway_options = ( }, { + 'key' => 'part_pkg-lineage', + 'section' => '', + 'description' => 'When editing a package definition, if setup or recur fees are changed, create a new package rather than changing the existing package.', + 'type' => 'checkbox', + }, + + { 'key' => 'apacheip', #not actually deprecated yet #'section' => 'deprecated', @@ -732,7 +755,7 @@ my %payment_gateway_options = ( { 'key' => 'encryption', 'section' => 'billing', - 'description' => 'Enable encryption of credit cards.', + 'description' => 'Enable encryption of credit cards and echeck numbers', 'type' => 'checkbox', }, @@ -740,20 +763,21 @@ my %payment_gateway_options = ( 'key' => 'encryptionmodule', 'section' => 'billing', 'description' => 'Use which module for encryption?', - 'type' => 'text', + 'type' => 'select', + 'select_enum' => [ '', 'Crypt::OpenSSL::RSA', ], }, { 'key' => 'encryptionpublickey', 'section' => 'billing', - 'description' => 'Your RSA Public Key - Required if Encryption is turned on.', + 'description' => 'Encryption public key', 'type' => 'textarea', }, { 'key' => 'encryptionprivatekey', 'section' => 'billing', - 'description' => 'Your RSA Private Key - Including this will enable the "Bill Now" feature. However if the system is compromised, a hacker can use this key to decode the stored credit card information. This is generally not a good idea.', + 'description' => 'Encryption private key', 'type' => 'textarea', }, @@ -1769,6 +1793,7 @@ and customer address. Include units.', 'section' => 'username', 'description' => 'Allow uppercase characters in usernames. Not recommended for use with FreeRADIUS with MySQL backend, which is case-insensitive by default.', 'type' => 'checkbox', + 'per_agent' => 1, }, { @@ -1980,6 +2005,14 @@ and customer address. Include units.', }, { + 'key' => 'signup_server-terms_of_service', + 'section' => 'self-service', + 'description' => 'Terms of Service for the signup server. May contain HTML.', + 'type' => 'textarea', + 'per_agent' => 1, + }, + + { 'key' => 'selfservice_server-base_url', 'section' => 'self-service', '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.', @@ -2296,6 +2329,13 @@ and customer address. Include units.', }, { + 'key' => 'svc_broadband-radius', + 'section' => '', + 'description' => 'Enable RADIUS groups for broadband services.', + 'type' => 'checkbox', + }, + + { 'key' => 'svc_acct-alldomains', 'section' => '', 'description' => 'Allow accounts to select any domain in the database. Normally accounts can only select from the domain set in the service definition and those purchased by the customer.', @@ -2467,6 +2507,13 @@ and customer address. Include units.', }, { + 'key' => 'selfservice-svc_forward_svcpart', + 'section' => 'self-service', + 'description' => 'Service for self-service forward editing.', + 'type' => 'select-part_svc', + }, + + { 'key' => 'selfservice-password_reset_verification', 'section' => 'self-service', 'description' => 'If enabled, specifies the type of verification required for self-service password resets.', @@ -2475,7 +2522,21 @@ and customer address. Include units.', 'paymask,amount,zip' => 'Verify with credit card (or bank account) last 4 digits, payment amount and zip code', ], }, - + + { + 'key' => 'selfservice-password_reset_msgnum', + 'section' => 'self-service', + 'description' => 'Template to use for password reset emails.', + %msg_template_options, + }, + + { + 'key' => 'selfservice-hide_invoices-taxclass', + 'section' => 'self-service', + 'description' => 'Hide invoices with only this package tax class from self-service and supress sending (emailing, printing, faxing) them. Typically set to something like "Previous balance" and used when importing legacy invoices into legacy_cust_bill.', + 'type' => 'text', + }, + { 'key' => 'selfservice-recent-did-age', 'section' => 'self-service', @@ -2621,14 +2682,28 @@ and customer address. Include units.', { 'key' => 'network_monitoring_system', - 'section' => '', + 'section' => 'network_monitoring', 'description' => 'Networking monitoring system (NMS) integration. Torrus_Internal uses the built-in Torrus ticketing system (see the integrated networking monitoring system installation instructions).', 'type' => 'select', - #'select_enum' => [ '', qw(RT_Internal RT_Libs RT_External) ], 'select_enum' => [ '', qw(Torrus_Internal) ], }, { + 'key' => 'nms-auto_add-svc_ips', + 'section' => 'network_monitoring', + 'description' => 'Automatically add (and remove) IP addresses from these service tables to the network monitoring system.', + 'type' => 'selectmultiple', + 'select_enum' => [ 'svc_acct', 'svc_broadband', 'svc_dsl' ], + }, + + { + 'key' => 'nms-auto_add-community', + 'section' => 'network_monitoring', + 'description' => 'SNMP community string to use when automatically adding IP addresses from these services to the network monitoring system.', + 'type' => 'text', + }, + + { 'key' => 'ticket_system-default_queueid', 'section' => 'ticketing', 'description' => 'Default queue used when creating new customer tickets.', @@ -2830,6 +2905,7 @@ and customer address. Include units.', 'section' => '', 'description' => "Use the agent's master service address as the service address (only ship_address2 can be entered, if blank on the master address). Useful for multi-tenant applications.", 'type' => 'checkbox', + 'per_agent' => 1, }, { 'key' => 'referral_credit', @@ -3024,6 +3100,17 @@ and customer address. Include units.', }, { + 'key' => 'echeck-country', + 'section' => 'billing', + 'description' => 'Format electronic check information for the specified country.', + 'type' => 'select', + 'select_hash' => [ 'US' => 'United States', + 'CA' => 'Canada (enables branch)', + 'XX' => 'Other', + ], + }, + + { 'key' => 'voip-cust_accountcode_cdr', 'section' => 'telephony', 'description' => 'Enable the per-customer option for CDR breakdown by accountcode.', @@ -3489,6 +3576,16 @@ and customer address. Include units.', }, { + 'key' => 'cust_bill-line_item-date_style', + 'section' => 'billing', + 'description' => 'Display format for line item date ranges on invoice line items.', + 'type' => 'select', + 'select_hash' => [ '' => 'STARTDATE-ENDDATE', + 'month_of' => 'Month of MONTHNAME', + ], + }, + + { 'key' => 'support_packages', 'section' => '', 'description' => 'A list of packages eligible for RT ticket time transfer, one pkgpart per line.', #this should really be a select multiple, or specified in the packages themselves... @@ -3501,6 +3598,7 @@ and customer address. Include units.', 'section' => '', 'description' => 'Require daytime or night phone for all customer records.', 'type' => 'checkbox', + 'per_agent' => 1, }, { @@ -3508,6 +3606,18 @@ and customer address. Include units.', 'section' => '', 'description' => 'Email address field is required: require at least one invoicing email address for all customer records.', 'type' => 'checkbox', + 'per_agent' => 1, + }, + + { + 'key' => 'cust_main-check_unique', + 'section' => '', + 'description' => 'Warn before creating a customer record where these fields duplicate another customer.', + 'type' => 'select', + 'multiple' => 1, + 'select_hash' => [ + 'address1' => 'Billing address', + ], }, { @@ -3521,77 +3631,35 @@ and customer address. Include units.', 'key' => 'cancel_credit_type', 'section' => 'billing', 'description' => 'The group to use for new, automatically generated credit reasons resulting from cancellation.', - 'type' => 'select-sub', - 'options_sub' => sub { require FS::Record; - require FS::reason_type; - map { $_->typenum => $_->type } - FS::Record::qsearch('reason_type', { class=>'R' } ); - }, - 'option_sub' => sub { require FS::Record; - require FS::reason_type; - my $reason_type = FS::Record::qsearchs( - 'reason_type', { 'typenum' => shift } - ); - $reason_type ? $reason_type->type : ''; - }, + reason_type_options('R'), + }, + + { + 'key' => 'suspend_credit_type', + 'section' => 'billing', + 'description' => 'The group to use for new, automatically generated credit reasons resulting from package suspension.', + reason_type_options('R'), }, { 'key' => 'referral_credit_type', 'section' => 'deprecated', 'description' => 'Used to be the group to use for new, automatically generated credit reasons resulting from referrals. Now set in a package billing event for the referral.', - 'type' => 'select-sub', - 'options_sub' => sub { require FS::Record; - require FS::reason_type; - map { $_->typenum => $_->type } - FS::Record::qsearch('reason_type', { class=>'R' } ); - }, - 'option_sub' => sub { require FS::Record; - require FS::reason_type; - my $reason_type = FS::Record::qsearchs( - 'reason_type', { 'typenum' => shift } - ); - $reason_type ? $reason_type->type : ''; - }, + reason_type_options('R'), }, { 'key' => 'signup_credit_type', 'section' => 'billing', #self-service? 'description' => 'The group to use for new, automatically generated credit reasons resulting from signup and self-service declines.', - 'type' => 'select-sub', - 'options_sub' => sub { require FS::Record; - require FS::reason_type; - map { $_->typenum => $_->type } - FS::Record::qsearch('reason_type', { class=>'R' } ); - }, - 'option_sub' => sub { require FS::Record; - require FS::reason_type; - my $reason_type = FS::Record::qsearchs( - 'reason_type', { 'typenum' => shift } - ); - $reason_type ? $reason_type->type : ''; - }, + reason_type_options('R'), }, { 'key' => 'prepayment_discounts-credit_type', 'section' => 'billing', 'description' => 'Enables the offering of prepayment discounts and establishes the credit reason type.', - 'type' => 'select-sub', - 'options_sub' => sub { require FS::Record; - require FS::reason_type; - map { $_->typenum => $_->type } - FS::Record::qsearch('reason_type', { class=>'R' } ); - }, - 'option_sub' => sub { require FS::Record; - require FS::reason_type; - my $reason_type = FS::Record::qsearchs( - 'reason_type', { 'typenum' => shift } - ); - $reason_type ? $reason_type->type : ''; - }, - + reason_type_options('R'), }, { @@ -3600,9 +3668,9 @@ and customer address. Include units.', 'description' => 'Enables searching of various formatted values in cust_main.agent_custid', 'type' => 'select', 'select_hash' => [ - '' => 'Numeric only', - '\d{7}' => 'Numeric only, exactly 7 digits', - 'ww?d+' => 'Numeric with one or two letter prefix', + '' => 'Numeric only', + '\d{7}' => 'Numeric only, exactly 7 digits', + 'ww?d+' => 'Numeric with one or two letter prefix', ], }, @@ -3628,6 +3696,7 @@ and customer address. Include units.', 'section' => 'invoicing', 'description' => 'Disable inclusion of previous balance, payment, and credit lines on invoices', 'type' => 'checkbox', + 'per_agent' => 1, }, { @@ -3691,7 +3760,15 @@ and customer address. Include units.', 'section' => 'UI', 'description' => 'The year to use in census tract lookups', 'type' => 'select', - 'select_enum' => [ qw( 2010 2009 2008 ) ], + 'select_enum' => [ qw( 2012 2011 2010 ) ], + }, + + { + 'key' => 'tax_district_method', + 'section' => 'UI', + 'description' => 'The method to use to look up tax district codes.', + 'type' => 'select', + 'select_hash' => [ FS::Misc::Geo::get_district_methods() ], }, { @@ -3709,6 +3786,21 @@ and customer address. Include units.', }, { + 'key' => 'geocode_module', + 'section' => '', + 'description' => 'Module to geocode (retrieve a latitude and longitude for) addresses', + 'type' => 'select', + 'select_enum' => [ 'Geo::Coder::Googlev3' ], + }, + + { + 'key' => 'geocode-require_nw_coordinates', + 'section' => 'UI', + 'description' => 'Require latitude and longitude in the North Western quadrant, e.g. for North American co-ordinates, etc.', + 'type' => 'checkbox', + }, + + { 'key' => 'disable_acl_changes', 'section' => '', 'description' => 'Disable all ACL changes, for demos.', @@ -3761,6 +3853,21 @@ and customer address. Include units.', }, { + 'key' => 'cust_main-custnum-display_prefix', + 'section' => 'UI', + 'description' => 'Prefix the customer number with this string for display purposes.', + 'type' => 'text', + #and then probably agent-virt this to merge these instances + }, + + { + 'key' => 'cust_main-custnum-display_length', + 'section' => 'UI', + 'description' => 'Zero fill the customer number to this many digits for display purposes.', + 'type' => 'text', + }, + + { 'key' => 'cust_main-default_areacode', 'section' => 'UI', 'description' => 'Default area code for customers.', @@ -3900,6 +4007,14 @@ and customer address. Include units.', }, { + 'key' => 'selfservice-no_logo', + 'section' => 'self-service', + 'description' => 'Disable the logo in self-service', + 'type' => 'checkbox', + 'per_agent' => 1, + }, + + { 'key' => 'selfservice-title_color', 'section' => 'self-service', 'description' => 'HTML color for the self-service title, for example, #000000', @@ -4081,7 +4196,14 @@ and customer address. Include units.', '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' => 'svc_phone-random_pin', + 'section' => 'telephony', + 'description' => 'Number of random digits to generate in the "PIN" field, if empty.', + 'type' => 'text', + }, + { 'key' => 'svc_phone-lnp', 'section' => 'telephony', @@ -4162,6 +4284,13 @@ and customer address. Include units.', }, { + 'key' => 'cdr-asterisk_australia_rewrite', + 'section' => 'telephony', + 'description' => 'For Asterisk CDRs, assign CDR type numbers based on Australian conventions.', + 'type' => 'checkbox', + }, + + { 'key' => 'cust_pkg-show_autosuspend', 'section' => 'UI', 'description' => 'Show package auto-suspend dates. Use with caution for now; can slow down customer view for large insallations.', @@ -4253,6 +4382,31 @@ and customer address. Include units.', 'type' => 'text', }, + { + 'key' => 'svc_broadband-manage_link_text', + 'section' => 'UI', + 'description' => 'Label for "Manage Device" link', + 'type' => 'text', + }, + + { + 'key' => 'svc_broadband-manage_link_loc', + 'section' => 'UI', + 'description' => 'Location for "Manage Device" link', + 'type' => 'select', + 'select_hash' => [ + 'bottom' => 'Near Unprovision link', + 'right' => 'With export-related links', + ], + }, + + { + 'key' => 'svc_broadband-manage_link-new_window', + 'section' => 'UI', + 'description' => 'Open the "Manage Device" link in a new window', + 'type' => 'checkbox', + }, + #more fine-grained, service def-level control could be useful eventually? { 'key' => 'svc_broadband-allow_null_ip_addr', @@ -4262,6 +4416,13 @@ and customer address. Include units.', }, { + 'key' => 'svc_hardware-check_mac_addr', + 'section' => '', #? + 'description' => 'Require the "hardware address" field in hardware services to be a valid MAC address.', + '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 !=).', @@ -4428,8 +4589,8 @@ and customer address. Include units.', { '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', + 'description' => 'URL to use as source for the "Custom" tab in the View Customer page. The customer number will be appended, or you can insert "$custnum" to have it inserted elsewhere. "$agentnum" will be replaced with the agent number, and "$usernum" will be replaced with the employee number.', + 'type' => 'textarea', }, { @@ -4563,6 +4724,13 @@ and customer address. Include units.', 'select_enum' => [ 'Classic', 'Recurring' ], }, + { + 'key' => 'cust_main-print_statement_link', + 'section' => 'UI', + 'description' => 'Show a link to download a current statement for the customer.', + 'type' => 'checkbox', + }, + { 'key' => 'username-pound', 'section' => 'username', @@ -4594,8 +4762,8 @@ and customer address. Include units.', { 'key' => 'svc_broadband-require-nw-coordinates', - 'section' => 'UI', - 'description' => 'On svc_broadband add/edit, require latitude and longitude in the North Western quadrant, e.g. for North American co-ordinates, etc.', + 'section' => 'deprecated', + 'description' => 'Deprecated; see geocode-require_nw_coordinates instead', 'type' => 'checkbox', }, @@ -4607,16 +4775,16 @@ and customer address. Include units.', }, { - 'key' => 'cust_main-require-bank-branch', + 'key' => 'cust-edit-alt-field-order', 'section' => 'UI', - 'description' => 'An alternate DCHK/CHEK format; require entry of bank branch number.', + 'description' => 'An alternate ordering of fields for the New Customer and Edit Customer screens.', 'type' => 'checkbox', }, - + { - 'key' => 'cust-edit-alt-field-order', + 'key' => 'cust_bill-enable_promised_date', 'section' => 'UI', - 'description' => 'An alternate ordering of fields for the New Customer and Edit Customer screens.', + 'description' => 'Enable display/editing of the "promised payment date" field on invoices.', 'type' => 'checkbox', }, @@ -4637,15 +4805,48 @@ and customer address. Include units.', { 'key' => 'translate-auto-insert', 'section' => '', - 'description' => 'Auto-insert untranslated strings for selected non-en_US locales with their default/en_US values. DO NOT TURN THIS ON.', - 'type' => 'select-sub', + 'description' => 'Auto-insert untranslated strings for selected non-en_US locales with their default/en_US values. Do not turn this on unless translating the interface into a new language.', + 'type' => 'select', 'multiple' => 1, - 'options_sub' => sub { map { $_ => '' } - grep { $_ ne 'en_US' } FS::Locales::locales; - }, - 'option_sub' => sub { ''; }, + 'select_enum' => [ grep { $_ ne 'en_US' } FS::Locales::locales ], + }, + + { + 'key' => 'svc_acct-tower_sector', + 'section' => '', + 'description' => 'Track tower and sector for svc_acct (account) services.', + 'type' => 'checkbox', + }, + + { + 'key' => 'cdr-prerate', + 'section' => 'telephony', + 'description' => 'Experimental feature to rate CDRs immediately, rather than waiting until invoice generation time. Can reduce invoice generation time when processing lots of CDRs. Currently works with "VoIP/telco CDR rating (standard)" price plans using "Phone numbers (svc_phone.phonenum)" CDR service matching, without any included minutes.', + 'type' => 'checkbox', }, + { + 'key' => 'cdr-prerate-cdrtypenums', + 'section' => 'telephony', + 'description' => 'When using cdr-prerate to rate CDRs immediately, limit processing to these CDR types.', + 'type' => 'select-sub', + 'multiple' => 1, + 'options_sub' => sub { require FS::Record; + require FS::cdr_type; + map { $_->cdrtypenum => $_->cdrtypename } + FS::Record::qsearch( 'cdr_type', + {} #{ 'disabled' => '' } + ); + }, + 'option_sub' => sub { require FS::Record; + require FS::cdr_type; + my $cdr_type = FS::Record::qsearchs( + 'cdr_type', { 'cdrtypenum'=>shift } ); + $cdr_type ? $cdr_type->cdrtypename : ''; + }, + }, + + { key => "apacheroot", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachine", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachines", section => "deprecated", description => "DEPRECATED", type => "text" },