return $self->_usecompat('config_binary', @_) if use_confcompat;
my $cv = $self->_config(@_) or return;
- decode_base64($cv->value);
+ length($cv->value) ? decode_base64($cv->value) : '';
}
=item exists KEY [ AGENTNUM [ NODEFAULT ] ]
}
}
+ map { $_ } #handle scalar context
sort keys %templatenames;
}
{
'key' => 'alert_expiration',
'section' => 'billing',
- 'description' => 'Enable alerts about billing method expiration.',
+ 'description' => 'Enable alerts about billing method expiration (i.e. expiring credit cards).',
'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.',
+ 'description' => 'Template file for billing method expiration alerts (i.e. expiring credit cards). 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,
},
'key' => 'finance_pkgclass',
'section' => 'billing',
'description' => 'The package class for finance charges',
- 'type' => 'select-sub',
- 'options_sub' => sub { require FS::Record;
- require FS::pkg_class;
- map { $_->classnum => $_->classname }
- FS::Record::qsearch('pkg_class', {} );
- },
- 'option_sub' => sub { require FS::Record;
- require FS::pkg_class;
- my $pkg_class = FS::Record::qsearchs(
- 'pkg_class', { 'classnum'=>shift }
- );
- $pkg_class ? $pkg_class->classname : '';
- },
+ 'type' => 'select-pkg_class',
},
{
'key' => 'signup_server-classnum2',
'section' => '',
'description' => 'Package Class for first optional purchase',
- 'type' => 'select-sub',
- 'options_sub' => sub { require FS::Record;
- require FS::pkg_class;
- map { $_->classnum => $_->classname }
- FS::Record::qsearch('pkg_class', {} );
- },
- 'option_sub' => sub { require FS::Record;
- require FS::pkg_class;
- my $pkg_class = FS::Record::qsearchs(
- 'pkg_class', { 'classnum'=>shift }
- );
- $pkg_class ? $pkg_class->classname : '';
- },
+ 'type' => 'select-pkg_class',
},
{
'key' => 'signup_server-classnum3',
'section' => '',
'description' => 'Package Class for second optional purchase',
- 'type' => 'select-sub',
- 'options_sub' => sub { require FS::Record;
- require FS::pkg_class;
- map { $_->classnum => $_->classname }
- FS::Record::qsearch('pkg_class', {} );
- },
- 'option_sub' => sub { require FS::Record;
- require FS::pkg_class;
- my $pkg_class = FS::Record::qsearchs(
- 'pkg_class', { 'classnum'=>shift }
- );
- $pkg_class ? $pkg_class->classname : '';
- },
+ 'type' => 'select-pkg_class',
},
{
{
'key' => 'declinetemplate',
'section' => 'billing',
- 'description' => 'Template file for credit card decline emails.',
+ 'description' => 'Template file for credit card and electronic check decline emails.',
'type' => 'textarea',
},
{
'key' => 'emaildecline',
'section' => 'billing',
- 'description' => 'Enable emailing of credit card decline notices.',
+ 'description' => 'Enable emailing of credit card and electronic check decline notices.',
'type' => 'checkbox',
},
],
},
+ {
+ 'key' => 'manual_process-skip_first',
+ 'section' => 'billing',
+ 'description' => "When using manual_process-pkgpart, omit the fee if it is the customer's first payment.",
+ 'type' => 'checkbox',
+ },
{
'key' => 'allow_negative_charges',
'type' => 'checkbox',
},
+ {
+ 'key' => 'address1-search',
+ 'section' => 'UI',
+ 'description' => 'Enable the ability to search the address1 field from customer search.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'address2-search',
'section' => 'UI',
{
'key' => 'invoice-ship_address',
'section' => 'billing',
- 'description' => 'Enable this switch to include the ship address on the invoice.',
+ 'description' => 'Include the shipping address on invoices.',
'type' => 'checkbox',
},
{
'key' => 'invoice-unitprice',
'section' => 'billing',
- 'description' => 'This switch enables unit pricing on the invoice.',
+ 'description' => 'Enable unit pricing on invoices.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'invoice-smallernotes',
+ 'section' => 'billing',
+ 'description' => 'Display the notes section in a smaller font on invoices.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'invoice-smallerfooter',
+ 'section' => 'billing',
+ 'description' => 'Display footers in a smaller font on invoices.',
'type' => 'checkbox',
},
'type' => 'select',
'select_enum' => [ 'csv-td_canada_trust-merchant_pc_batch',
'csv-chase_canada-E-xactBatch', 'BoM', 'PAP',
- 'ach-spiritone',
+ 'paymentech', 'ach-spiritone',
]
},
+ #lists could be auto-generated from pay_batch info
{
'key' => 'batch-fixed_format-CARD',
'section' => 'billing',
'description' => 'Fixed (unchangeable) format for credit card batches.',
'type' => 'select',
'select_enum' => [ 'csv-td_canada_trust-merchant_pc_batch', 'BoM', 'PAP' ,
- 'csv-chase_canada-E-xactBatch', 'BoM', 'PAP' ]
+ 'csv-chase_canada-E-xactBatch', 'paymentech' ]
},
{
'description' => 'Fixed (unchangeable) format for electronic check batches.',
'type' => 'select',
'select_enum' => [ 'csv-td_canada_trust-merchant_pc_batch', 'BoM', 'PAP',
- 'ach-spiritone',
+ 'paymentech', 'ach-spiritone',
]
},
{
'key' => 'batchconfig-paymentech',
'section' => 'billing',
- 'description' => 'Configuration for Chase Paymentech batching, four lines: 1. BIN, 2. Terminal ID, 3. Merchant ID, 4. Username',
+ 'description' => 'Configuration for Chase Paymentech batching, five lines: 1. BIN, 2. Terminal ID, 3. Merchant ID, 4. Username, 5. Password (for batch uploads)',
'type' => 'textarea',
},
'type' => 'text',
},
+ {
+ 'key' => 'cust_bill-consolidate_services',
+ 'section' => 'billing',
+ 'description' => 'Consolidate service display into fewer lines on invoices rather than one per service.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'suspend_email_admin',
'section' => '',
'section' => '',
'description' => 'HTML for the HEAD section of the self-service interface, typically used for LINK stylesheet tags',
'type' => 'textarea', #htmlarea?
+ 'per_agent' => 1,
},
'section' => '',
'description' => 'HTML header for the self-service interface',
'type' => 'textarea', #htmlarea?
+ 'per_agent' => 1,
},
{
'section' => '',
'description' => 'HTML header for the self-service interface',
'type' => 'textarea', #htmlarea?
+ 'per_agent' => 1,
},
'section' => '',
'description' => 'HTML background color for the self-service interface, for example, #FFFFFF',
'type' => 'text',
+ 'per_agent' => 1,
},
{
'section' => '',
'description' => 'HTML color for self-service interface input boxes, for example, #C0C0C0"',
'type' => 'text',
+ 'per_agent' => 1,
},
{
'type' => 'checkbox',
},
+ {
+ 'key' => 'pkg-addon_classnum',
+ 'section' => 'billing',
+ 'description' => 'Enable the ability to restrict additional package orders based on package class.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'cust_main-edit_signupdate',
'section' => 'UI',
'type' => 'checkbox',
},
+ {
+ 'key' => 'cust_bill_pay_pkg-manual',
+ 'section' => 'UI',
+ 'description' => 'Allow manual application of payments to line items.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'cust_credit_bill_pkg-manual',
+ 'section' => 'UI',
+ 'description' => 'Allow manual application of credits to line items.',
+ 'type' => 'checkbox',
+ },
+
+ {
+ 'key' => 'breakage-days',
+ 'section' => 'billing',
+ 'description' => 'If set to a number of days, after an account goes that long without activity, recognizes any outstanding payments and credits as "breakage" by creating a breakage charge and invoice.',
+ 'type' => 'text',
+ 'per_agent' => 1,
+ },
+
+ {
+ 'key' => 'breakage-pkg_class',
+ 'section' => 'billing',
+ 'description' => 'Package class to use for breakage reconciliation.',
+ 'type' => 'select-pkg_class',
+ },
+
+
{ key => "apacheroot", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
{ key => "apachemachine", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },
{ key => "apachemachines", section => "deprecated", description => "<b>DEPRECATED</b>", type => "text" },