use Exporter;
#use Tie::DxHash;
use Tie::IxHash;
-use FS::UID qw( dbh );
+use FS::UID qw( dbh driver_name );
use FS::Record;
use FS::svc_domain;
populate_locales();
+ populate_duplock();
+
#initial_data data
populate_initial_data(%opt);
populate_access();
populate_msgcat();
+
+ populate_numbering();
if ( $oldAutoCommit ) {
dbh->commit or die dbh->errstr;
}
+sub populate_numbering {
+ eval "use FS::lata_Data;"; # this automatically populates the lata table, if unpopulated
+ eval "use FS::msa_Data;"; # this automatically populates the msa table, if unpopulated
+}
+
sub populate_locales {
use Locale::Country;
- use Locale::SubCountry;
use FS::cust_main_county;
#cust_main_county
foreach my $country ( sort map uc($_), all_country_codes ) {
-
- my $subcountry = eval { new Locale::SubCountry($country) };
- my @states = $subcountry ? $subcountry->all_codes : undef;
-
- if ( !scalar(@states) || ( scalar(@states)==1 && !defined($states[0]) ) ) {
-
- _add_locale( 'country'=>$country );
-
- } else {
-
- if ( $states[0] =~ /^(\d+|\w)$/ ) {
- @states = map $subcountry->full_name($_), @states
- }
-
- foreach my $state ( @states ) {
- _add_locale( 'country'=>$country, 'state'=>$state);
- }
-
- }
+ _add_country($country);
}
}
my %addl = (
'US' => {
'FM' => 'Federated States of Micronesia',
- 'MH' => 'Federated States of Micronesia',
- 'PW' => 'Federated States of Micronesia',
+ 'MH' => 'Marshall Islands',
+ 'PW' => 'Palau',
'AA' => "Armed Forces Americas (except Canada)",
'AE' => "Armed Forces Europe / Canada / Middle East / Africa",
'AP' => "Armed Forces Pacific",
}
+sub _add_country {
+
+ use Locale::SubCountry;
+
+ my( $country ) = shift;
+
+ my $subcountry = eval { new Locale::SubCountry($country) };
+ my @states = $subcountry ? $subcountry->all_codes : undef;
+
+ if ( !scalar(@states) || ( scalar(@states)==1 && !defined($states[0]) ) ) {
+
+ _add_locale( 'country'=>$country );
+
+ } else {
+
+ if ( $states[0] =~ /^(\d+|\w)$/ ) {
+ @states = map $subcountry->full_name($_), @states
+ }
+
+ foreach my $state ( @states ) {
+ _add_locale( 'country'=>$country, 'state'=>$state);
+ }
+
+ }
+
+}
+
sub _add_locale {
my $cust_main_county = new FS::cust_main_county( { 'tax'=>0, @_ });
my $error = $cust_main_county->insert;
die $error if $error;
}
+sub populate_duplock {
+
+ return unless driver_name =~ /^mysql/i;
+
+ my $sth = dbh->prepare(
+ "INSERT INTO duplicate_lock ( lockname ) VALUES ( 'svc_acct' )"
+ ) or die dbh->errstr;
+
+ $sth->execute or die $sth->errstr;
+
+}
+
sub populate_initial_data {
my %opt = @_;
foreach my $table ( keys %$data ) {
+ #warn "popuilating $table\n";
+
my $class = "FS::$table";
eval "use $class;";
die $@ if $@;
+ $class->_populate_initial_data(%opt)
+ if $class->can('_populate_initial_data');
+
my @records = @{ $data->{$table} };
foreach my $record ( @records ) {
+
my $args = delete($record->{'_insert_args'}) || [];
my $object = $class->new( $record );
my $error = $object->insert( @$args );
die "error inserting record into $table: $error\n"
if $error;
+
+ #my $pkey = $object->primary_key;
+ #my $pkeyvalue = $object->$pkey();
+ #warn " inserted $pkeyvalue\n";
+
}
}
#tie my %hash, 'Tie::DxHash',
tie my %hash, 'Tie::IxHash',
+ #bootstrap user
+ 'access_user' => [
+ { 'username' => 'fs_bootstrap',
+ '_password' => 'changeme', #will trigger warning if you try to enable
+ 'last' => 'User',
+ 'first' => 'Bootstrap',
+ 'disabled' => 'Y',
+ },
+ ],
+
#superuser group
'access_group' => [
{ 'groupname' => 'Superuser' },
],
- #billing events
- 'part_bill_event' => [
- { 'payby' => 'CARD',
- 'event' => 'Batch card',
- 'seconds' => 0,
- 'eventcode' => '$cust_bill->batch_card(%options);',
- 'weight' => 40,
- 'plan' => 'batch-card',
- },
- { 'payby' => 'BILL',
- 'event' => 'Send invoice',
- 'seconds' => 0,
- 'eventcode' => '$cust_bill->send();',
- 'weight' => 50,
- 'plan' => 'send',
- },
- { 'payby' => 'DCRD',
- 'event' => 'Send invoice',
- 'seconds' => 0,
- 'eventcode' => '$cust_bill->send();',
- 'weight' => 50,
- 'plan' => 'send',
- },
- { 'payby' => 'DCHK',
- 'event' => 'Send invoice',
- 'seconds' => 0,
- 'eventcode' => '$cust_bill->send();',
- 'weight' => 50,
- 'plan' => 'send',
- },
- { 'payby' => 'DCLN',
- 'event' => 'Suspend',
- 'seconds' => 0,
- 'eventcode' => '$cust_bill->suspend();',
- 'weight' => 40,
- 'plan' => 'suspend',
- },
- #{ 'payby' => 'DCLN',
- # 'event' => 'Retriable',
- # 'seconds' => 0,
- # 'eventcode' => '$cust_bill_event->retriable();',
- # 'weight' => 60,
- # 'plan' => 'retriable',
- #},
- ],
+ #reason types
+ 'reason_type' => [],
+
+#XXX need default new-style billing events
+# #billing events
+# 'part_bill_event' => [
+# { 'payby' => 'CARD',
+# 'event' => 'Batch card',
+# 'seconds' => 0,
+# 'eventcode' => '$cust_bill->batch_card(%options);',
+# 'weight' => 40,
+# 'plan' => 'batch-card',
+# },
+# { 'payby' => 'BILL',
+# 'event' => 'Send invoice',
+# 'seconds' => 0,
+# 'eventcode' => '$cust_bill->send();',
+# 'weight' => 50,
+# 'plan' => 'send',
+# },
+# { 'payby' => 'DCRD',
+# 'event' => 'Send invoice',
+# 'seconds' => 0,
+# 'eventcode' => '$cust_bill->send();',
+# 'weight' => 50,
+# 'plan' => 'send',
+# },
+# { 'payby' => 'DCHK',
+# 'event' => 'Send invoice',
+# 'seconds' => 0,
+# 'eventcode' => '$cust_bill->send();',
+# 'weight' => 50,
+# 'plan' => 'send',
+# },
+# { 'payby' => 'DCLN',
+# 'event' => 'Suspend',
+# 'seconds' => 0,
+# 'eventcode' => '$cust_bill->suspend();',
+# 'weight' => 40,
+# 'plan' => 'suspend',
+# },
+# #{ 'payby' => 'DCLN',
+# # 'event' => 'Retriable',
+# # 'seconds' => 0,
+# # 'eventcode' => '$cust_bill_event->retriable();',
+# # 'weight' => 60,
+# # 'plan' => 'retriable',
+# #},
+# ],
#you must create a service definition. An example of a service definition
#would be a dial-up account or a domain. First, it is necessary to create a
#which would only sell regular packages of services. Click on View/Edit
#agent types and Add a new agent type.
'agent_type' => [
- { 'atype' => 'internal' },
+ { 'atype' => 'Internal' },
],
#Allow this agent type to sell the package you created above.
#not yet....
- #)
+ #usage classes
+ 'usage_class' => [],
+
+ #phone types
+ 'phone_type' => [],
+
;
\%hash;
use FS::AccessRight;
use FS::access_right;
- foreach my $rightname ( FS::AccessRight->rights ) {
+ foreach my $rightname ( FS::AccessRight->default_superuser_rights ) {
my $access_right = new FS::access_right {
'righttype' => 'FS::access_group',
'rightobjnum' => 1, #$supergroup->groupnum,
'en_US' => 'Username in use',
},
+ 'phonenum_in_use' => {
+ 'en_US' => 'Phone number in use',
+ },
+
'illegal_email_invoice_address' => {
'en_US' => 'Illegal email invoice address',
},
'en_US' => 'Title',
},
+ 'stateid' => {
+ 'en_US' => 'Driver\'s License',
+ },
+
+ 'stateid_state' => {
+ 'en_US' => 'Driver\'s License State',
+ },
+
+ 'invalid_domain' => {
+ 'en_US' => 'Invalid domain',
+ },
+
);
}