X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=fdb6e9a38d9513ab8560ab32068c20434f00b430;hb=96bcb3256650a35d57c2ac487e990b78a2f88a74;hp=53c2d1387f69707c2a944fa6397a8bdcf020fef7;hpb=d2c621ec6c3d2edbd3d8b44600a92d6773ffa971;p=freeside.git diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 53c2d1387..fdb6e9a38 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', @@ -716,6 +737,13 @@ worry that config_items is freeside-specific and icky. 'type' => 'checkbox', }, + { + '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', @@ -968,6 +996,55 @@ worry that config_items is freeside-specific and icky. 'type' => 'textarea', }, + { + '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', @@ -1000,6 +1077,53 @@ worry that config_items is freeside-specific and icky. 'per_agent' => 1, }, + { + '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', @@ -1007,6 +1131,22 @@ worry that config_items is freeside-specific and icky. 'type' => 'textarea', }, + { + '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', @@ -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', @@ -1094,16 +1240,23 @@ worry that config_items is freeside-specific and icky. 'type' => 'checkbox', }, + { + '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:
$date
$name
$paynum
- Freeside payment number $paid
- Amount of payment $payby
- Payment type (Card, Check, Electronic check, etc.) $payinfo
- Masked credit card number or check number $balance
- New balance$pkg
- Package (requires payment_receipt-trigger set to "when payment is applied".)$username
$password
$first
$last
$pkg
$username
$password
$first
$last
$pkg
$column
$amount
$threshold
$packages
allowing $packages->[0]
thru $packages->[n]
$package
the first package, same as $packages->[0]
$recurdates
allowing $recurdates->[0]
thru $recurdates->[n]
$recurdate
the first recurdate, same as $recurdate->[0]
$first
$last
$payby
$expdate
most likely only confuse
'type' => 'textarea',
@@ -2911,10 +3141,17 @@ worry that config_items is freeside-specific and icky.
{
'key' => 'disable_previous_balance',
'section' => 'invoicing',
- 'description' => 'Disable inclusion of previous balancem payment, and credit lines on invoices',
+ 'description' => 'Disable inclusion of previous balance, payment, and credit lines on invoices',
'type' => 'checkbox',
},
+ {
+ 'key' => 'previous_balance-exclude_from_total',
+ 'section' => 'invoicing',
+ 'description' => 'Do not include previous balance in the \'Total\' line. Only meaningful when invoice_sections is false. Optionally provide text to override the Total New Charges description',
+ 'type' => [ qw(checkbox text) ],
+ },
+
{
'key' => 'previous_balance-summary_only',
'section' => 'invoicing',
@@ -2922,6 +3159,13 @@ worry that config_items is freeside-specific and icky.
'type' => 'checkbox',
},
+ {
+ 'key' => 'balance_due_below_line',
+ 'section' => 'invoicing',
+ 'description' => 'Place the balance due message below a line. Only meaningful when when invoice_sections is false.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'usps_webtools-userid',
'section' => 'UI',
@@ -2979,6 +3223,13 @@ worry that config_items is freeside-specific and icky.
'type' => 'checkbox',
},
+ {
+ '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',
@@ -3318,6 +3569,22 @@ worry that config_items is freeside-specific and icky.
'type' => 'text',
},
+ {
+ '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' => '',
@@ -3402,6 +3669,14 @@ worry that config_items is freeside-specific and icky.
'type' => 'text',
},
+ {
+ 'key' => 'mc-outbound_packages',
+ 'section' => '',
+ 'description' => "Don't use this.",
+ 'type' => 'select-part_pkg',
+ 'multiple' => 1,
+ },
+
{
'key' => 'disable-cust-pkg_class',
'section' => 'UI',
@@ -3575,6 +3850,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" },