event refactor, landing on HEAD!
[freeside.git] / FS / FS / Setup.pm
index 8e89be5..55984d4 100644 (file)
@@ -48,6 +48,8 @@ sub create_initial_data {
   #initial_data data
   populate_initial_data(%opt);
 
+  populate_access();
+
   populate_msgcat();
   
   if ( $oldAutoCommit ) {
@@ -59,47 +61,70 @@ sub create_initial_data {
 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 ) {
+    _add_country($country);
+  }
+
+}
+
+sub populate_addl_locales {
+
+  my %addl = (
+    'US' => {
+      'FM' => '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",
+    },
+  );
+
+  foreach my $country ( keys %addl ) {
+    foreach my $state ( keys %{ $addl{$country} } ) {
+      # $longname = $addl{$country}{$state};
+      _add_locale( 'country'=>$country, 'state'=>$state);
+    }
+  }
+
+}
+
+sub _add_country {
+
+  use Locale::SubCountry;
+
+  my( $country ) = shift;
+
+  my $subcountry = eval { new Locale::SubCountry($country) };
+  my @states = $subcountry ? $subcountry->all_codes : undef;
   
-    my $subcountry = eval { new Locale::SubCountry($country) };
-    my @states = $subcountry ? $subcountry->all_codes : undef;
-  
-    if ( !scalar(@states) || ( scalar(@states)==1 && !defined($states[0]) ) ) {
-  
-      my $cust_main_county = new FS::cust_main_county({
-        'tax'   => 0,
-        'country' => $country,
-      });  
-      my $error = $cust_main_county->insert;
-      die $error if $error;
-  
-    } else {
-  
-      if ( $states[0] =~ /^(\d+|\w)$/ ) {
-        @states = map $subcountry->full_name($_), @states
-      }
+  if ( !scalar(@states) || ( scalar(@states)==1 && !defined($states[0]) ) ) {
+
+    _add_locale( 'country'=>$country );
   
-      foreach my $state ( @states ) {
+  } else {
   
-        my $cust_main_county = new FS::cust_main_county({
-          'state' => $state,
-          'tax'   => 0,
-          'country' => $country,
-        });  
-        my $error = $cust_main_county->insert;
-        die $error if $error;
+    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_initial_data {
   my %opt = @_;
 
@@ -131,37 +156,57 @@ sub initial_data {
   #tie my %hash, 'Tie::DxHash', 
   tie my %hash, 'Tie::IxHash', 
 
-    #billing events
-    'part_bill_event' => [
-      { 'payby'     => 'CARD',
-        'event'     => 'Batch card',
-        'seconds'   => 0,
-        'eventcode' => '$cust_bill->batch_card();',
-        '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',
-      },
+    #superuser group
+    'access_group' => [
+      { 'groupname' => 'Superuser' },
     ],
+
+#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
@@ -282,6 +327,32 @@ sub initial_data {
 
 }
 
+sub populate_access {
+
+  use FS::AccessRight;
+  use FS::access_right;
+
+  foreach my $rightname ( FS::AccessRight->rights ) {
+    my $access_right = new FS::access_right {
+      'righttype'   => 'FS::access_group',
+      'rightobjnum' => 1, #$supergroup->groupnum,
+      'rightname'   => $rightname,
+    };
+    my $ar_error = $access_right->insert;
+    die $ar_error if $ar_error;
+  }
+
+  #foreach my $agent ( qsearch('agent', {} ) ) {
+    my $access_groupagent = new FS::access_groupagent {
+      'groupnum' => 1, #$supergroup->groupnum,
+      'agentnum' => 1, #$agent->agentnum,
+    };
+    my $aga_error = $access_groupagent->insert;
+    die $aga_error if $aga_error;
+  #}
+
+}
+
 sub populate_msgcat {
 
   use FS::Record qw(qsearch);
@@ -405,6 +476,14 @@ sub msgcat_messages {
       'en_US' => 'Title',
     },
 
+    'stateid' => {
+      'en_US' => 'Driver\'s License',
+    },
+
+    'stateid_state' => {
+      'en_US' => 'Driver\'s License State',
+    },
+
   );
 }