add a quick tool for adding states to old databases
authorivan <ivan>
Fri, 15 Dec 2006 08:37:15 +0000 (08:37 +0000)
committerivan <ivan>
Fri, 15 Dec 2006 08:37:15 +0000 (08:37 +0000)
FS/FS/Setup.pm
bin/expand-country [new file with mode: 0755]

index 58fba6b..4864cfe 100644 (file)
@@ -61,30 +61,11 @@ 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 ) {
-  
-    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);
   }
 
 }
@@ -111,6 +92,33 @@ sub populate_addl_locales {
 
 }
 
+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;
diff --git a/bin/expand-country b/bin/expand-country
new file mode 100755 (executable)
index 0000000..c6f2a1f
--- /dev/null
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Locale::SubCountry;
+use FS::UID qw(adminsuidsetup);
+use FS::Setup;
+use FS::Record qw(qsearch);
+use FS::cust_main_county;
+
+my $user = shift or die &usage;
+my $country = shift or die &usage;
+
+adminsuidsetup($user);
+
+my @country = qsearch('cust_main_county', { 'country' => $country } );
+die "unknown country $country" unless (@country);
+#die "$country already expanded" if scalar(@country) > 1;
+
+foreach my $cust_main_county ( @country ) {
+  my $error = $cust_main_county->delete;
+  die $error if $error;
+}
+
+FS::Setup::_add_country($country);
+
+sub usage {
+  die "Usage:\n\n  expand-country user countrycode\n";
+}
+