X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=a1faecf4a061cd3e1b16f8d838c0faf207b70721;hp=bb12ca503fffd38e2bd6857799a4ce7472ee8b15;hb=ec7e8155fce544f19f2b6734476ed6db8c200aa9;hpb=752c8c301644253af3ed8a316e93345bbe016c45 diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index bb12ca503..a1faecf4a 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -593,6 +593,21 @@ sub config_items { ( @config_items, $self->_orbase_items(@_) ); } +=item invoice_from_full [ AGENTNUM ] + +Returns values of invoice_from and invoice_from_name, appropriately combined +based on their current values. + +=cut + +sub invoice_from_full { + my ($self, $agentnum) = @_; + return $self->config('invoice_from_name', $agentnum ) ? + $self->config('invoice_from_name', $agentnum ) . ' <' . + $self->config('invoice_from', $agentnum ) . '>' : + $self->config('invoice_from', $agentnum ); +} + =back =head1 SUBROUTINES @@ -773,7 +788,7 @@ sub reason_type_options { { 'key' => 'log_sent_mail', 'section' => 'notification', - 'description' => 'Enable logging of template-generated email.', + 'description' => 'Enable logging of all sent email.', 'type' => 'checkbox', }, @@ -958,7 +973,7 @@ sub reason_type_options { { 'key' => 'business-onlinepayment', 'section' => 'billing', - 'description' => 'Business::OnlinePayment support, at least three lines: processor, login, and password. An optional fourth line specifies the action or actions (multiple actions are separated with `,\': for example: `Authorization Only, Post Authorization\'). Optional additional lines are passed to Business::OnlinePayment as %processor_options.', + 'description' => 'Business::OnlinePayment support, at least three lines: processor, login, and password. An optional fourth line specifies the action or actions (multiple actions are separated with `,\': for example: `Authorization Only, Post Authorization\'). Optional additional lines are passed to Business::OnlinePayment as %processor_options. For more detailed information and examples see the real-time credit card processing documentation.', 'type' => 'textarea', }, @@ -1114,7 +1129,7 @@ sub reason_type_options { { 'key' => 'unapplycredits', 'section' => 'deprecated', - 'description' => 'DEPRECATED, now controlled by ACLs. Used to nable "unapplication" of unclosed credits.', + 'description' => 'DEPRECATED, now controlled by ACLs. Used to enable "unapplication" of unclosed credits.', 'type' => 'checkbox', }, @@ -1233,12 +1248,36 @@ sub reason_type_options { { 'key' => 'invoice_from', 'section' => 'required', - 'description' => 'Return address on email invoices', + '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'; + } }, { + 'key' => 'invoice_from_name', + 'section' => 'invoicing', + 'description' => 'Return name on email invoices (set address in invoice_from)', + 'type' => 'text', + 'per_agent' => 1, + 'validate' => sub { (($_[0] =~ /[^[:alnum:][:space:]]/) && ($_[0] !~ /^\".*\"$/)) + ? 'Invalid name. Use quotation marks around names that contain punctuation.' + : '' } + }, + + { + 'key' => 'quotation_from', + 'section' => '', + 'description' => 'Return address on email quotations', + 'type' => 'text', + 'per_agent' => 1, + }, + + + { 'key' => 'invoice_subject', 'section' => 'invoicing', 'description' => 'Subject: header on email invoices. Defaults to "Invoice". The following substitutions are available: $name, $name_short, $invoice_number, and $invoice_date.', @@ -1248,6 +1287,15 @@ sub reason_type_options { }, { + 'key' => 'quotation_subject', + 'section' => '', + 'description' => 'Subject: header on email quotations. Defaults to "Quotation".', # The following substitutions are available: $name, $name_short, $invoice_number, and $invoice_date.', + 'type' => 'text', + #'per_agent' => 1, + 'per_locale' => 1, + }, + + { 'key' => 'invoice_usesummary', 'section' => 'invoicing', 'description' => 'Indicates that html and latex invoices should be in summary style and make use of invoice_latexsummary.', @@ -1502,14 +1550,28 @@ and customer address. Include units.', { 'key' => 'invoice_email_pdf', 'section' => 'invoicing', - 'description' => 'Send PDF invoice as an attachment to emailed invoices. By default, includes the plain text invoice as the email body, unless invoice_email_pdf_note is set.', + 'description' => 'Send PDF invoice as an attachment to emailed invoices. By default, includes the HTML invoice as the email body, unless invoice_email_pdf_note is set.', + 'type' => 'checkbox' + }, + + { + 'key' => 'quotation_email_pdf', + 'section' => '', + 'description' => 'Send PDF quotations as an attachment to emailed quotations. By default, includes the HTML quotation as the email body, unless quotation_email_pdf_note is set.', 'type' => 'checkbox' }, { 'key' => 'invoice_email_pdf_note', 'section' => 'invoicing', - 'description' => 'If defined, this text will replace the default plain text invoice as the body of emailed PDF invoices.', + 'description' => 'If defined, this text will replace the default HTML invoice as the body of emailed PDF invoices.', + 'type' => 'textarea' + }, + + { + 'key' => 'quotation_email_pdf_note', + 'section' => '', + 'description' => 'If defined, this text will replace the default HTML quotation as the body of emailed PDF quotations.', 'type' => 'textarea' }, @@ -1527,11 +1589,19 @@ and customer address. Include units.', 'type' => 'checkbox', }, + { + 'key' => 'invoice_print_pdf-duplex', + 'section' => 'invoicing', + 'description' => 'Insert blank pages so that spooled invoices are each an even number of pages. Use this for double-sided printing.', + 'type' => 'checkbox', + }, + { 'key' => 'invoice_default_terms', 'section' => 'invoicing', 'description' => 'Optional default invoice term, used to calculate a due date printed on invoices.', 'type' => 'select', + 'per_agent' => 1, 'select_enum' => [ '', 'Payable upon receipt', 'Net 0', 'Net 3', 'Net 5', 'Net 9', 'Net 10', 'Net 14', 'Net 15', 'Net 18', 'Net 20', 'Net 21', 'Net 25', 'Net 30', 'Net 45', @@ -1561,11 +1631,19 @@ and customer address. Include units.', }, { - 'key' => 'invoice_sections_by_location', + 'key' => 'invoice_sections_method', 'section' => 'invoicing', - 'description' => 'Divide invoice into sections according to service location. Currently, this overrides sectioning by package category.', - 'type' => 'checkbox', - 'per_agent' => 1, + 'description' => 'How to group line items on multi-section invoices.', + 'type' => 'select', + 'select_enum' => [ qw(category location) ], + }, + + { + 'key' => 'summary_subtotals_method', + 'section' => 'invoicing', + 'description' => 'How to group line items when calculating summary subtotals. By default, it will be the same method used for grouping invoice sections.', + 'type' => 'select', + 'select_enum' => [ qw(category location) ], }, #quotations seem broken-ish with sections ATM? @@ -2438,8 +2516,9 @@ and customer address. Include units.', { 'key' => 'enable_taxproducts', 'section' => 'billing', - 'description' => 'Enable per-package mapping to vendor tax data from CCH or elsewhere.', - 'type' => 'checkbox', + 'description' => 'Tax data vendor you are using.', + 'type' => 'select', + 'select_enum' => [ 'cch', 'billsoft', 'avalara' ], }, { @@ -2457,6 +2536,20 @@ and customer address. Include units.', }, { + 'key' => 'billsoft-company_code', + 'section' => 'billing', + 'description' => 'Billsoft tax service company code (3 letters)', + 'type' => 'text', + }, + + { + 'key' => 'avalara-taxconfig', + 'section' => 'billing', + 'description' => 'Avalara tax service configuration. Four lines: company code, account number, license key, test mode (1 to enable).', + 'type' => 'textarea', + }, + + { 'key' => 'welcome_msgnum', 'section' => 'notification', 'description' => 'Template to use for welcome messages when a svc_acct record is created.', @@ -2559,7 +2652,7 @@ and customer address. Include units.', 'section' => 'billing', 'description' => 'Available payment types.', 'type' => 'selectmultiple', - 'select_enum' => [ qw(CARD DCRD CHEK DCHK BILL CASH WEST MCRD PPAL COMP) ], + 'select_enum' => [ qw(CARD DCRD CHEK DCHK BILL CASH WEST MCRD MCHK PPAL COMP) ], }, { @@ -2691,6 +2784,20 @@ and customer address. Include units.', }, { + 'key' => 'backoffice-require_cvv', + 'section' => 'billing', + 'description' => 'Require CVV for manual credit card entry.', + 'type' => 'checkbox', + }, + + { + 'key' => 'selfservice-onfile_require_cvv', + 'section' => 'self-service', + 'description' => 'Require CVV for on-file credit card during self-service payments.', + 'type' => 'checkbox', + }, + + { 'key' => 'selfservice-require_cvv', 'section' => 'self-service', 'description' => 'Require CVV for credit card self-service payments, except for cards on-file.', @@ -2724,6 +2831,22 @@ and customer address. Include units.', }, { + 'key' => 'selfservice_immutable-package', + 'section' => 'self-service', + 'description' => 'Disable package changes in self-service interface.', + 'type' => 'checkbox', + 'per_agent' => 1, + }, + + { + 'key' => 'selfservice_hide-usage', + 'section' => 'self-service', + 'description' => 'Hide usage data in self-service interface.', + 'type' => 'checkbox', + 'per_agent' => 1, + }, + + { 'key' => 'selfservice_process-pkgpart', 'section' => 'billing', 'description' => 'Package to add to each manual credit card and ACH payment entered by the customer themselves in the self-service interface. Enabling this option may be in violation of your merchant agreement(s), so please check it(/them) carefully before enabling this option.', @@ -2873,7 +2996,7 @@ and customer address. Include units.', 'type' => 'select', 'select_hash' => [ '' => 'Password reset disabled', 'email' => 'Click on a link in email', - 'paymask,amount,zip' => 'Click on a link in email, and also verify with credit card (or bank account) last 4 digits, payment amount and zip code', + 'paymask,amount,zip' => 'Click on a link in email, and also verify with credit card (or bank account) last 4 digits, payment amount and zip code. Note: Do not use if you have multi-customer contacts, as they will be unable to reset their passwords.', ], }, @@ -3229,6 +3352,14 @@ and customer address. Include units.', }, { + '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' => 'DEPRECATED, now controlled by ACLs. Used to enable local-only voiding of echeck payments in addition to refunds against the payment gateway', @@ -3439,7 +3570,8 @@ and customer address. Include units.', 'description' => 'Optional "site ID" to show in the location label', 'type' => 'select', 'select_hash' => [ '' => '', - 'CoStAg' => 'CoStAgXXXXX (country, state, agent name, locationnum)', + 'CoStAg' => 'CoStAgXXXXX (country, state, agent name, locationnum)', + '_location' => 'Manually defined per location', ], }, @@ -3465,13 +3597,6 @@ and customer address. Include units.', }, { - 'key' => 'cust_pkg-show_fcc_voice_grade_equivalent', - 'section' => 'UI', - 'description' => "Show fields on package definitions for FCC Form 477 classification", - 'type' => 'checkbox', - }, - - { 'key' => 'cust_pkg-large_pkg_size', 'section' => 'UI', 'description' => "In customer view, summarize packages with more than this many services. Set to zero to never summarize packages.", @@ -3486,6 +3611,13 @@ and customer address. Include units.', }, { + 'key' => 'part_pkg-show_fcc_options', + 'section' => 'UI', + 'description' => "Show fields on package definitions for FCC Form 477 classification", + 'type' => 'checkbox', + }, + + { 'key' => 'svc_acct-edit_uid', 'section' => 'shell', 'description' => 'Allow UID editing.', @@ -3668,7 +3800,7 @@ and customer address. Include units.', 'type' => 'select', 'select_enum' => [ 'NACHA', 'csv-td_canada_trust-merchant_pc_batch', 'csv-chase_canada-E-xactBatch', 'BoM', 'PAP', - 'paymentech', 'ach-spiritone', 'RBC' + 'paymentech', 'ach-spiritone', 'RBC', 'CIBC', ] }, @@ -3730,7 +3862,7 @@ and customer address. Include units.', 'type' => 'select', 'select_enum' => [ 'NACHA', 'csv-td_canada_trust-merchant_pc_batch', 'BoM', 'PAP', 'paymentech', 'ach-spiritone', 'RBC', - 'td_eft1464', 'eft_canada' + 'td_eft1464', 'eft_canada', 'CIBC' ] }, @@ -3748,6 +3880,13 @@ and customer address. Include units.', 'type' => 'textarea', }, +{ + 'key' => 'batchconfig-CIBC', + 'section' => 'billing', + 'description' => 'Configuration for Canadian Imperial Bank of Commerce, six lines: 1. Origin ID, 2. Datacenter, 3. Typecode, 4. Short name, 5. Bank, 6. Bank account', + 'type' => 'textarea', + }, + { 'key' => 'batchconfig-PAP', 'section' => 'billing', @@ -3786,7 +3925,7 @@ and customer address. Include units.', { 'key' => 'batchconfig-eft_canada', 'section' => 'billing', - 'description' => 'Configuration for EFT Canada batching, four lines: 1. SFTP username, 2. SFTP password, 3. Transaction code, 4. Number of days to delay process date. If you are using separate per-agent batches (batch-spoolagent), you must set this option separately for each agent, as the global setting will be ignored.', + 'description' => 'Configuration for EFT Canada batching, five lines: 1. SFTP username, 2. SFTP password, 3. Business transaction code, 4. Personal transaction code, 5. Number of days to delay process date. If you are using separate per-agent batches (batch-spoolagent), you must set this option separately for each agent, as the global setting will be ignored.', 'type' => 'textarea', 'per_agent' => 1, }, @@ -4031,13 +4170,6 @@ and customer address. Include units.', }, { - 'key' => 'disable_setup_suspended_pkgs', - 'section' => 'billing', - 'description' => 'Disables charging of setup fees for suspended packages.', - 'type' => 'checkbox', - }, - - { 'key' => 'password-generated-allcaps', 'section' => 'password', 'description' => 'Causes passwords automatically generated to consist entirely of capital letters', @@ -4292,7 +4424,6 @@ and customer address. Include units.', 'type' => 'select', 'select_hash' => [ '' => '', 'usps' => 'U.S. Postal Service', - 'ezlocate' => 'EZLocate', 'tomtom' => 'TomTom', 'melissa' => 'Melissa WebSmart', ], @@ -4315,25 +4446,11 @@ and customer address. Include units.', { 'key' => 'tomtom-userid', 'section' => 'UI', - 'description' => 'TomTom geocoding service API key. See the TomTom website to obtain a key. This is recommended for addresses in the United States only.', + 'description' => 'TomTom geocoding service API key. See the TomTom website to obtain a key. This is recommended for addresses in the United States only.', 'type' => 'text', }, { - 'key' => 'ezlocate-userid', - 'section' => 'UI', - 'description' => 'User ID for EZ-Locate service. See the TomTom website for access and pricing information.', - 'type' => 'text', - }, - - { - 'key' => 'ezlocate-password', - 'section' => 'UI', - 'description' => 'Password for EZ-Locate service.', - 'type' => 'text' - }, - - { 'key' => 'melissa-userid', 'section' => 'UI', # it's really not... 'description' => 'User ID for Melissa WebSmart service. See the Melissa website for access and pricing.', @@ -4903,9 +5020,16 @@ and customer address. Include units.', }, { + 'key' => 'svc_phone-bulk_provision_simple', + 'section' => 'telephony', + 'description' => 'Bulk provision phone numbers with a simple number range instead of from DID vendor orders', + 'type' => 'checkbox', + }, + + { 'key' => 'default_phone_countrycode', - 'section' => '', - 'description' => 'Default countrcode', + 'section' => 'telephony', + 'description' => 'Default countrycode', 'type' => 'text', }, @@ -5115,19 +5239,30 @@ and customer address. Include units.', { 'key' => 'tax-cust_exempt-groups', - 'section' => '', + 'section' => 'billing', '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' => 'tax-cust_exempt-groups-require_individual_nums', - 'section' => '', - 'description' => 'When using tax-cust_exempt-groups, require an individual tax exemption number for each exemption from different taxes.', + 'section' => 'deprecated', + 'description' => 'Deprecated: see tax-cust_exempt-groups-number_requirement', 'type' => 'checkbox', }, { + 'key' => 'tax-cust_exempt-groups-num_req', + 'section' => 'billing', + 'description' => 'When using tax-cust_exempt-groups, control whether individual tax exemption numbers are required for exemption from different taxes.', + 'type' => 'select', + 'select_hash' => [ '' => 'Not required', + 'residential' => 'Required for residential customers only', + 'all' => 'Required for all customers', + ], + }, + + { 'key' => 'cust_main-default_view', 'section' => 'UI', 'description' => 'Default customer view, for users who have not selected a default view in their preferences.', @@ -5769,9 +5904,24 @@ and customer address. Include units.', 'type' => 'select', 'select_hash' => [ '' => 'NANPA (US/Canada)', 'AU' => 'Australia', + 'NZ' => 'New Zealand', ], }, + { + 'key' => 'old_fcc_report', + 'section' => '', + 'description' => 'Use the old (pre-2014) FCC Form 477 report format.', + 'type' => 'checkbox', + }, + + { + 'key' => 'cust_main-default_commercial', + 'section' => 'UI', + 'description' => 'Default for new customers is commercial rather than residential.', + 'type' => 'checkbox', + }, + { key => "apacheroot", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachine", section => "deprecated", description => "DEPRECATED", type => "text" }, { key => "apachemachines", section => "deprecated", description => "DEPRECATED", type => "text" },