X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FConf.pm;h=17da9def93833863551e5ea6e47d375bd4979545;hb=75989a32bd20f0ab3d38d2cd2c05795ea9b7590d;hp=40ef14c038ff9f8025a3096740b8b8c24243aada;hpb=839d3dfa33b7dc88927a8608ffd10d6675655c10;p=freeside.git
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 40ef14c03..17da9def9 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -8,6 +8,7 @@ use MIME::Base64;
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);
@@ -97,7 +98,7 @@ sub _config {
$hashref->{agentnum} = $agentnum;
local $FS::Record::conf = undef; # XXX evil hack prevents recursion
my $cv = FS::Record::qsearchs('conf', $hashref);
- if (!$cv && defined($agentnum)) {
+ if (!$cv && defined($agentnum) && $agentnum) {
$hashref->{agentnum} = '';
$cv = FS::Record::qsearchs('conf', $hashref);
}
@@ -108,7 +109,11 @@ sub config {
my $self = shift;
return $self->_usecompat('config', @_) if use_confcompat;
- my($name,$agentnum)=@_;
+ my($name, $agentnum)=@_;
+
+ carp "FS::Conf->config($name, $agentnum) called"
+ if $DEBUG > 1;
+
my $cv = $self->_config($name, $agentnum) or return;
if ( wantarray ) {
@@ -146,7 +151,11 @@ sub exists {
my $self = shift;
return $self->_usecompat('exists', @_) if use_confcompat;
- my($name,$agentnum)=@_;
+ my($name, $agentnum)=@_;
+
+ carp "FS::Conf->exists($name, $agentnum) called"
+ if $DEBUG > 1;
+
defined($self->_config($name, $agentnum));
}
@@ -326,7 +335,7 @@ sub import_config_item {
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);
@@ -355,7 +364,8 @@ sub verify_config_item {
$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; "
@@ -372,22 +382,24 @@ sub verify_config_item {
$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;
}
@@ -471,7 +483,7 @@ sub config_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
@@ -556,12 +568,16 @@ worry that config_items is freeside-specific and icky.
'section' => 'billing',
'description' => 'Template file for billing method expiration alerts. See the billing documentation for details.',
'type' => 'textarea',
+ 'per-agent' => 1,
},
{
'key' => 'apacheip',
- 'section' => 'deprecated',
- 'description' => 'DEPRECATED, add an apache export instead. Used to be the current IP address to assign to new virtual hosts',
+ #not actually deprecated yet
+ #'section' => 'deprecated',
+ #'description' => 'DEPRECATED, add an apache export 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',
},
@@ -608,6 +624,17 @@ worry that config_items is freeside-specific and icky.
},
{
+ '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',
'description' => 'String passed as the description field to Business::OnlinePayment. Evaluated as a double-quoted perl string, with the following variables available: $agent
(the agent name), and $pkgs
(a comma-separated list of packages for which these charges apply)',
@@ -662,8 +689,11 @@ worry that config_items is freeside-specific and icky.
{
'key' => 'deletecredits',
- 'section' => 'deprecated',
- 'description' => 'DEPRECATED, 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' => 'DEPRECATED, 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 )],
},
@@ -763,6 +793,15 @@ worry that config_items is freeside-specific and icky.
'section' => 'required',
'description' => 'Return address on email invoices',
'type' => 'text',
+ 'per_agent' => 1,
+ },
+
+ {
+ 'key' => 'invoice_subject',
+ 'section' => 'billing',
+ 'description' => 'Subject: header on email invoices. Defaults to "Invoice". The following substitutions are available: $name, $name_short, $invoice_number, and $invoice_date.',
+ 'type' => 'text',
+ 'per_agent' => 1,
},
{
@@ -785,6 +824,7 @@ worry that config_items is freeside-specific and icky.
'section' => 'billing',
'description' => 'Notes section for HTML invoices. Defaults to the same data in invoice_latexnotes if not specified.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
@@ -792,6 +832,7 @@ worry that config_items is freeside-specific and icky.
'section' => 'billing',
'description' => 'Footer for HTML invoices. Defaults to the same data in invoice_latexfooter if not specified.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
@@ -813,6 +854,7 @@ worry that config_items is freeside-specific and icky.
'section' => 'billing',
'description' => 'Notes section for LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
@@ -820,6 +862,7 @@ worry that config_items is freeside-specific and icky.
'section' => 'billing',
'description' => 'Footer for LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
@@ -827,6 +870,7 @@ worry that config_items is freeside-specific and icky.
'section' => 'billing',
'description' => 'Remittance coupon for LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
@@ -841,6 +885,7 @@ worry that config_items is freeside-specific and icky.
'section' => 'billing',
'description' => 'Optional small footer for multi-page LaTeX typeset PostScript invoices.',
'type' => 'textarea',
+ 'per_agent' => 1,
},
{
@@ -1459,6 +1504,13 @@ worry that config_items is freeside-specific and icky.
},
{
+ 'key' => 'ignore_incalculable_taxes',
+ 'section' => 'billing',
+ 'description' => 'Prefer to invoice without tax over not billing at all',
+ 'type' => 'checkbox',
+ },
+
+ {
'key' => 'welcome_email',
'section' => '',
'description' => 'Template file for welcome email. Welcome emails are sent to the customer email invoice destination(s) each time a svc_acct record is created. See the Text::Template documentation for details on the template substitution language. The following variables are available
$username
$password
$first
$last
$pkg