diff options
| author | levinse <levinse> | 2011-04-19 23:49:39 +0000 | 
|---|---|---|
| committer | levinse <levinse> | 2011-04-19 23:49:39 +0000 | 
| commit | 0cdeb16dd536ac7e3d5ed8ab25da73311f0be870 (patch) | |
| tree | 46b8520ff25bf09c7039b839dea312f7d9fb791c | |
| parent | 01f60974743197ac14e569c16c68a0c2ff3a5bd4 (diff) | |
bulk DID orders/inventory enhancements, RT11291
| -rw-r--r-- | FS/FS/Schema.pm | 3 | ||||
| -rw-r--r-- | FS/FS/Setup.pm | 7 | ||||
| -rw-r--r-- | FS/FS/Upgrade.pm | 6 | ||||
| -rw-r--r-- | FS/FS/lata.pm | 7 | ||||
| -rw-r--r-- | FS/FS/lata_Data.pm | 1026 | ||||
| -rw-r--r-- | FS/FS/msa.pm | 5 | ||||
| -rw-r--r-- | FS/FS/msa_Data.pm | 1034 | ||||
| -rw-r--r-- | FS/FS/phone_avail.pm | 85 | 
8 files changed, 2141 insertions, 32 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 571de2703..5dd9e13a5 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -870,6 +870,7 @@ sub tables_hashref {          'credit_limit', @money_typen, '', '',          'archived', 'char', 'NULL', 1, '', '',          'email_csv_cdr', 'char', 'NULL', 1, '', '', +        'accountcode_cdr', 'char', 'NULL', 1, '', '',        ],        'primary_key' => 'custnum',        'unique' => [ [ 'agentnum', 'agent_custid' ] ], @@ -3099,7 +3100,7 @@ sub tables_hashref {          'name',        'varchar', 'NULL', $char_d, '', '',          'rate_center_abbrev', 'varchar', 'NULL', $char_d, '', '',          'latanum',      'int',     'NULL',      '', '', '', -        'msa',        'varchar', 'NULL', $char_d, '', '', +        'msanum',       'int', 'NULL', '', '', '',          'ordernum',      'int',     'NULL',      '', '', '',          'svcnum',      'int',     'NULL',      '', '', '',          'availbatch', 'varchar',  'NULL', $char_d, '', '', diff --git a/FS/FS/Setup.pm b/FS/FS/Setup.pm index 29ca9a872..ac143cec3 100644 --- a/FS/FS/Setup.pm +++ b/FS/FS/Setup.pm @@ -53,6 +53,8 @@ sub create_initial_data {    populate_access();    populate_msgcat(); + +  populate_numbering();    if ( $oldAutoCommit ) {      dbh->commit or die dbh->errstr; @@ -60,6 +62,11 @@ sub create_initial_data {  } +sub pouplate_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; diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm index ba4a085b4..9b973c4cb 100644 --- a/FS/FS/Upgrade.pm +++ b/FS/FS/Upgrade.pm @@ -184,6 +184,12 @@ sub upgrade_data {      #insert scripcondition      'TicketSystem' => [], +     +    #insert LATA data if not already present +    'lata' => [], +     +    #insert MSA data if not already present +    'msa' => [],    ; diff --git a/FS/FS/lata.pm b/FS/FS/lata.pm index 7b425550c..ae4208a9f 100644 --- a/FS/FS/lata.pm +++ b/FS/FS/lata.pm @@ -107,9 +107,12 @@ sub check {    $self->SUPER::check;  } -=back +sub _upgrade_data {  #class method +  my ($class, %opts) = @_; +  eval "use FS::lata_Data;"; # this automatically does the upgrade if needed +} -=head1 BUGS +=back  =head1 SEE ALSO diff --git a/FS/FS/lata_Data.pm b/FS/FS/lata_Data.pm new file mode 100644 index 000000000..be4afeef6 --- /dev/null +++ b/FS/FS/lata_Data.pm @@ -0,0 +1,1026 @@ +package FS::lata_Data; + +use HTML::TableExtract; +use FS::Record qw(qsearch qsearchs dbh); + +my $dbh = dbh; +my $sth = $dbh->prepare('select count(1) from lata') or die $dbh->errstr; +$sth->execute or die $sth->errstr; +my $count = $sth->fetchrow_arrayref->[0]; + +unless ( $count ) { +    my $content = ''; +    while(<DATA>) { +        $content .= $_; +    } + +    my $te = new HTML::TableExtract(); +    $te->parse($content); +    my $table = $te->first_table_found; +    my $sql = 'insert into lata (latanum, description) values '; +    my @sql; +    foreach my $row ( $table->rows ) { +        my @row = @$row; +        next unless $row[0] =~ /\d+/; +        $row[1] =~ s/'//g; +        push @sql, "( ${row[0]}, '${row[1]}')"; +    } +    $sql .= join(',',@sql); + +    $sth = $dbh->prepare('delete from lata'); +    $sth->execute or die $sth->errstr; + +    $sth = $dbh->prepare($sql); +    $sth->execute or die $sth->errstr; + +    $dbh->commit; +} + +__DATA__ + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> +<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true for "http://www.localcallingguide.com/" r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.localcallingguide.com/" r (n 0 s 0 v 0 l 0))' />  +<meta name="Author" content="Ray Chow" /> +<meta name="Copyright" content="Compilation and programming © 1996-2005 Ray Chow" /> +<meta name="description" content="Local calling guide" /> +<meta name="keywords" content="local calling area, npa, nxx, rate center, rate centre, prefix, area code, nanp, north american numbering plan" /> +<meta name="robots" content="index,follow" /> +<link rel="stylesheet" type="text/css" media="screen" href="simple.css" /> +<link rel="shortcut icon" href="favicon.ico" /> +<!-- <style type="text/css" media="all">@import "sophisto.css";</style> --> +<link rel="home" href="index.php" /> +<title>Local calling guide: LATA</title> +</head> +<body> +<div id="content"> +<div id="main"> +<h1>Local Calling Guide</h1> +<h2>LATA (Local Access Transport Area)</h2> +<p>Last updated: <strong>Sat, 09 Apr 2011 16:43:35 UTC</strong></p> +<table> +<thead> +<tr> +<th id="lata">LATA</th> +<th id="descr">Description</th> +</tr> +</thead> +<tbody> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=120">120</a></td> +<td headers="descr">MAINE</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=122">122</a></td> +<td headers="descr">NEW HAMPSHIRE</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=124">124</a></td> +<td headers="descr">VERMONT</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=126">126</a></td> +<td headers="descr">WESTERN MA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=128">128</a></td> +<td headers="descr">EASTERN MA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=130">130</a></td> +<td headers="descr">RHODE ISLAND</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=132">132</a></td> +<td headers="descr">NEW YORK METRO NY</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=133">133</a></td> +<td headers="descr">POUGHKEEPSIE NY</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=134">134</a></td> +<td headers="descr">ALBANY NY</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=136">136</a></td> +<td headers="descr">SYRACUSE NY</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=138">138</a></td> +<td headers="descr">BINGHAMTON NY</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=140">140</a></td> +<td headers="descr">BUFFALO NY</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=220">220</a></td> +<td headers="descr">ATLANTIC COASTAL NJ</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=222">222</a></td> +<td headers="descr">DELAWARE VALLEY NJ</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=224">224</a></td> +<td headers="descr">NORTH JERSEY NJ</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=226">226</a></td> +<td headers="descr">CAPITAL PA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=228">228</a></td> +<td headers="descr">PHILADELPHIA PA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=230">230</a></td> +<td headers="descr">ALTOONA PA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=232">232</a></td> +<td headers="descr">NORTHEAST PA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=234">234</a></td> +<td headers="descr">PITTSBURGH PA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=236">236</a></td> +<td headers="descr">WASHINGTON DC</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=238">238</a></td> +<td headers="descr">BALTIMORE MD</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=240">240</a></td> +<td headers="descr">HAGERSTOWN MD</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=242">242</a></td> +<td headers="descr">SALISBURY MD</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=244">244</a></td> +<td headers="descr">ROANOKE VA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=246">246</a></td> +<td headers="descr">CULPEPER VA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=248">248</a></td> +<td headers="descr">RICHMOND VA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=250">250</a></td> +<td headers="descr">LYNCHBURG VA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=252">252</a></td> +<td headers="descr">NORFOLK VA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=254">254</a></td> +<td headers="descr">CHARLESTON WV</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=256">256</a></td> +<td headers="descr">CLARKSBURG WV</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=320">320</a></td> +<td headers="descr">CLEVELAND OH</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=322">322</a></td> +<td headers="descr">YOUNGSTOWN OH</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=324">324</a></td> +<td headers="descr">COLUMBUS OH</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=325">325</a></td> +<td headers="descr">AKRON OH</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=326">326</a></td> +<td headers="descr">TOLEDO OH</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=328">328</a></td> +<td headers="descr">DAYTON OH</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=330">330</a></td> +<td headers="descr">EVANSVILLE IN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=332">332</a></td> +<td headers="descr">SOUTH BEND IN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=334">334</a></td> +<td headers="descr">AUBURN/HUNTINGTON IN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=336">336</a></td> +<td headers="descr">INDIANAPOLIS IN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=338">338</a></td> +<td headers="descr">BLOOMINGTON IN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=340">340</a></td> +<td headers="descr">DETROIT MI</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=342">342</a></td> +<td headers="descr">UPPER PENINSULA MI</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=344">344</a></td> +<td headers="descr">SAGINAW MI</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=346">346</a></td> +<td headers="descr">LANSING MI</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=348">348</a></td> +<td headers="descr">GRAND RAPIDS MI</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=350">350</a></td> +<td headers="descr">NORTHEAST WI</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=352">352</a></td> +<td headers="descr">NORTHWEST WI</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=354">354</a></td> +<td headers="descr">SOUTHWEST WI</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=356">356</a></td> +<td headers="descr">SOUTHEAST WI</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=358">358</a></td> +<td headers="descr">CHICAGO IL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=360">360</a></td> +<td headers="descr">ROCKFORD IL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=362">362</a></td> +<td headers="descr">CAIRO IL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=364">364</a></td> +<td headers="descr">STERLING IL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=366">366</a></td> +<td headers="descr">FORREST IL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=368">368</a></td> +<td headers="descr">PEORIA IL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=370">370</a></td> +<td headers="descr">CHAMPAIGN IL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=374">374</a></td> +<td headers="descr">SPRINGFIELD IL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=376">376</a></td> +<td headers="descr">QUINCY IL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=420">420</a></td> +<td headers="descr">ASHEVILLE NC</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=422">422</a></td> +<td headers="descr">CHARLOTTE NC</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=424">424</a></td> +<td headers="descr">GREENSBORO NC</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=426">426</a></td> +<td headers="descr">RALEIGH NC</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=428">428</a></td> +<td headers="descr">WILMINGTON NC</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=430">430</a></td> +<td headers="descr">GREENVILLE SC</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=432">432</a></td> +<td headers="descr">FLORENCE SC</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=434">434</a></td> +<td headers="descr">COLUMBIA SC</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=436">436</a></td> +<td headers="descr">CHARLESTON SC</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=438">438</a></td> +<td headers="descr">ATLANTA GA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=440">440</a></td> +<td headers="descr">SAVANNAH GA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=442">442</a></td> +<td headers="descr">AUGUSTA GA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=444">444</a></td> +<td headers="descr">ALBANY GA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=446">446</a></td> +<td headers="descr">MACON GA</td> +</tr> +<tr class="rc0"> +<td headers="lata">448</td> +<td headers="descr">PENSACOLA FL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=44813">44813</a></td> +<td headers="descr">PENSACOLA FL PENSACOLA EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=44814">44814</a></td> +<td headers="descr">PENSACOLA FL CRESTVIEW EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=44815">44815</a></td> +<td headers="descr">PENSACOLA FL FORT WALTON BEACH EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata">450</td> +<td headers="descr">PANAMA CITY FL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=45009">45009</a></td> +<td headers="descr">PANAMA CITY FL PANAMA CITY EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=45010">45010</a></td> +<td headers="descr">PANAMA CITY FL PORT ST JOE EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=45011">45011</a></td> +<td headers="descr">PANAMA CITY FL QUINCY EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=45012">45012</a></td> +<td headers="descr">PANAMA CITY FL MARIANNA EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata">452</td> +<td headers="descr">JACKSONVILLE FL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=45204">45204</a></td> +<td headers="descr">JACKSONVILLE FL JACKSONVILLE EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=45205">45205</a></td> +<td headers="descr">JACKSONVILLE FL LIVE OAK EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata">454</td> +<td headers="descr">GAINESVILLE FL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=45402">45402</a></td> +<td headers="descr">GAINESVILLE FL GAINESVILLE EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=45403">45403</a></td> +<td headers="descr">GAINESVILLE FL OCALA EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata">456</td> +<td headers="descr">DAYTONA BEACH FL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=45601">45601</a></td> +<td headers="descr">DAYTONA BEACH FL DAYTONA BEACH EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata">458</td> +<td headers="descr">ORLANDO FL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=45806">45806</a></td> +<td headers="descr">ORLANDO FL ORLANDO EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=45807">45807</a></td> +<td headers="descr">ORLANDO FL LAKE BUENA VISTA EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=45808">45808</a></td> +<td headers="descr">ORLANDO FL WINTER PARK EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata">460</td> +<td headers="descr">SOUTHEAST FL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=46017">46017</a></td> +<td headers="descr">SOUTHEAST FL OJUS EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=46018">46018</a></td> +<td headers="descr">SOUTHEAST FL WEST PALM BEACH EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=462">462</a></td> +<td headers="descr">LOUISVILLE KY</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=464">464</a></td> +<td headers="descr">OWENSBORO KY</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=466">466</a></td> +<td headers="descr">WINCHESTER KY</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=468">468</a></td> +<td headers="descr">MEMPHIS TN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=470">470</a></td> +<td headers="descr">NASHVILLE TN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=472">472</a></td> +<td headers="descr">CHATTANOOGA TN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=474">474</a></td> +<td headers="descr">KNOXVILLE TN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=476">476</a></td> +<td headers="descr">BIRMINGHAM AL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=477">477</a></td> +<td headers="descr">HUNTSVILLE AL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=478">478</a></td> +<td headers="descr">MONTGOMERY AL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=480">480</a></td> +<td headers="descr">MOBILE AL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=482">482</a></td> +<td headers="descr">JACKSON MS</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=484">484</a></td> +<td headers="descr">BILOXI MS</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=486">486</a></td> +<td headers="descr">SHREVEPORT LA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=488">488</a></td> +<td headers="descr">LAFAYETTE LA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=490">490</a></td> +<td headers="descr">NEW ORLEANS LA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=492">492</a></td> +<td headers="descr">BATON ROUGE LA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=520">520</a></td> +<td headers="descr">ST LOUIS MO</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=521">521</a></td> +<td headers="descr">WESTPHALIA MO</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=522">522</a></td> +<td headers="descr">SPRINGFIELD MO</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=524">524</a></td> +<td headers="descr">KANSAS CITY MO/KS</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=526">526</a></td> +<td headers="descr">FORT SMITH AR</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=528">528</a></td> +<td headers="descr">LITTLE ROCK AR</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=530">530</a></td> +<td headers="descr">PINE BLUFF AR</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=532">532</a></td> +<td headers="descr">WICHITA KS</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=534">534</a></td> +<td headers="descr">TOPEKA KS</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=536">536</a></td> +<td headers="descr">OKLAHOMA CITY OK</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=538">538</a></td> +<td headers="descr">TULSA OK</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=540">540</a></td> +<td headers="descr">EL PASO TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=542">542</a></td> +<td headers="descr">MIDLAND TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=544">544</a></td> +<td headers="descr">LUBBOCK TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=546">546</a></td> +<td headers="descr">AMARILLO TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=548">548</a></td> +<td headers="descr">WICHITA FALLS TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=550">550</a></td> +<td headers="descr">ABILENE TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=552">552</a></td> +<td headers="descr">DALLAS TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=554">554</a></td> +<td headers="descr">LONGVIEW TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=556">556</a></td> +<td headers="descr">WACO TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=558">558</a></td> +<td headers="descr">AUSTIN TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=560">560</a></td> +<td headers="descr">HOUSTON TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=562">562</a></td> +<td headers="descr">BEAUMONT TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=564">564</a></td> +<td headers="descr">CORPUS CHRISTI TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=566">566</a></td> +<td headers="descr">SAN ANTONIO TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=568">568</a></td> +<td headers="descr">BROWNSVILLE TX</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=570">570</a></td> +<td headers="descr">HEARNE TX</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=620">620</a></td> +<td headers="descr">ROCHESTER MN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=624">624</a></td> +<td headers="descr">DULUTH MN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=626">626</a></td> +<td headers="descr">ST CLOUD MN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=628">628</a></td> +<td headers="descr">MINNEAPOLIS MN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=630">630</a></td> +<td headers="descr">SIOUX CITY IA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=632">632</a></td> +<td headers="descr">DES MOINES IA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=634">634</a></td> +<td headers="descr">DAVENPORT IA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=635">635</a></td> +<td headers="descr">CEDAR RAPIDS IA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=636">636</a></td> +<td headers="descr">FARGO ND</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=638">638</a></td> +<td headers="descr">BISMARCK ND</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=640">640</a></td> +<td headers="descr">SOUTH DAKOTA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=644">644</a></td> +<td headers="descr">OMAHA NE</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=646">646</a></td> +<td headers="descr">GRAND ISLAND NE</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=648">648</a></td> +<td headers="descr">GREAT FALLS MT</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=650">650</a></td> +<td headers="descr">BILLINGS MT</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=652">652</a></td> +<td headers="descr">IDAHO</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=654">654</a></td> +<td headers="descr">WYOMING</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=656">656</a></td> +<td headers="descr">DENVER CO</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=658">658</a></td> +<td headers="descr">COLORADO SPRINGS CO</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=660">660</a></td> +<td headers="descr">UTAH</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=664">664</a></td> +<td headers="descr">NEW MEXICO</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=666">666</a></td> +<td headers="descr">PHOENIX AZ</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=668">668</a></td> +<td headers="descr">TUCSON AZ</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=670">670</a></td> +<td headers="descr">EUGENE OR</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=672">672</a></td> +<td headers="descr">PORTLAND OR</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=674">674</a></td> +<td headers="descr">SEATTLE WA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=676">676</a></td> +<td headers="descr">SPOKANE WA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=720">720</a></td> +<td headers="descr">RENO NV</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=721">721</a></td> +<td headers="descr">PAHRUMP NV</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=722">722</a></td> +<td headers="descr">SAN FRANCISCO CA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=724">724</a></td> +<td headers="descr">CHICO CA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=726">726</a></td> +<td headers="descr">SACRAMENTO CA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=728">728</a></td> +<td headers="descr">FRESNO CA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=730">730</a></td> +<td headers="descr">LOS ANGELES CA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=732">732</a></td> +<td headers="descr">SAN DIEGO CA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=734">734</a></td> +<td headers="descr">BAKERSFIELD CA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=736">736</a></td> +<td headers="descr">MONTEREY CA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=738">738</a></td> +<td headers="descr">STOCKTON CA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=740">740</a></td> +<td headers="descr">SAN LUIS OBISPO CA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=820">820</a></td> +<td headers="descr">PUERTO RICO</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=822">822</a></td> +<td headers="descr">US VIRGIN ISLANDS</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=824">824</a></td> +<td headers="descr">BAHAMAS</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=826">826</a></td> +<td headers="descr">JAMAICA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=828">828</a></td> +<td headers="descr">DOMINICAN REPUBLIC</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=830">830</a></td> +<td headers="descr">CARIBBEAN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=832">832</a></td> +<td headers="descr">ALASKA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=834">834</a></td> +<td headers="descr">HAWAII</td> +</tr> +<tr class="rc1"> +<td headers="lata">836</td> +<td headers="descr">MIDWAY/WAKE</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=870">870</a></td> +<td headers="descr">NORTHERN MARIANA ISLANDS</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=871">871</a></td> +<td headers="descr">GUAM</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=884">884</a></td> +<td headers="descr">AMERICAN SAMOA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=888">888</a></td> +<td headers="descr">CANADA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=920">920</a></td> +<td headers="descr">CONNECTICUT (SNET)</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=921">921</a></td> +<td headers="descr">FISHERS ISLAND NY</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=922">922</a></td> +<td headers="descr">CINCINNATI OH</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=923">923</a></td> +<td headers="descr">MANSFIELD OH</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=924">924</a></td> +<td headers="descr">ERIE PA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=927">927</a></td> +<td headers="descr">HARRISONBURG VA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=928">928</a></td> +<td headers="descr">CHARLOTTESVILLE VA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=929">929</a></td> +<td headers="descr">EDINBURG VA</td> +</tr> +<tr class="rc0"> +<td headers="lata">930</td> +<td headers="descr">EPPES FORK VA (now part of 248) </td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=932">932</a></td> +<td headers="descr">BLUEFIELD WV</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=937">937</a></td> +<td headers="descr">RICHMOND IN</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=938">938</a></td> +<td headers="descr">TERRE HAUTE IN</td> +</tr> +<tr class="rc0"> +<td headers="lata">939</td> +<td headers="descr">FORT MYERS FL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=93901">93901</a></td> +<td headers="descr">FORT MYERS FL AVON PARK EAEA</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=93902">93902</a></td> +<td headers="descr">FORT MYERS FL FORT MYERS EAEA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=949">949</a></td> +<td headers="descr">FAYETTEVILLE NC</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=951">951</a></td> +<td headers="descr">ROCKY MOUNT NC</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=952">952</a></td> +<td headers="descr">GULF COAST</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=953">953</a></td> +<td headers="descr">TALLAHASSEE FL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=956">956</a></td> +<td headers="descr">BRISTOL TN</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=958">958</a></td> +<td headers="descr">LINCOLN NE</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=960">960</a></td> +<td headers="descr">COEUR D'ALENE ID</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=961">961</a></td> +<td headers="descr">SAN ANGELO TX</td> +</tr> +<tr class="rc1"> +<td headers="lata">963</td> +<td headers="descr">KALISPELL MT (now part of 648) </td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=973">973</a></td> +<td headers="descr">PALM SPRINGS CA</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=974">974</a></td> +<td headers="descr">ROCHESTER NY</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=976">976</a></td> +<td headers="descr">MATTOON IL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=977">977</a></td> +<td headers="descr">MACOMB IL</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=978">978</a></td> +<td headers="descr">OLNEY IL</td> +</tr> +<tr class="rc1"> +<td headers="lata"><a href="lca_listexch.php?lata=980">980</a></td> +<td headers="descr">NAVAJO RESERVATION AZ</td> +</tr> +<tr class="rc0"> +<td headers="lata"><a href="lca_listexch.php?lata=981">981</a></td> +<td headers="descr">NAVAJO RESERVATION UT</td> +</tr> +</tbody> +</table> +<p>Sponsored by <a href="http://www.voicemeup.com/">VoiceMeUp - Corporate VoIP Services</a></p> +</div> + + +	<div id="nav"> +	<h4>about</h4> +	<ul> +	<li class="first"><a href="index.php">main</a></li> +	<li><a href="updates.php">what's new</a></li> +	<li><a href="feedback.php">feedback</a></li> +	<li><a href="saq.php">SAQ</a></li> +	</ul> +	<h4>lists</h4> +	<ul> +	<li class="first"><a href="lca_listregion.php">region</a></li> +	<li><a href="lca_listnpa.php">area code</a></li> +	<li><a href="lca_listlata.php">LATA</a></li> +	</ul> +	<h4>search</h4> +	<ul> +	<li class="first"><a href="lca_prefix.php">area code/prefix</a></li> +	<li><a href="lca_listexch.php">rate centre</a></li> +	<li><a href="lca_switch.php">switch</a></li> +	<li><a href="lca_telco.php">telco</a></li> +	<li><a href="lca_activity.php">local calling area changes</a></li> +	<li><a href="lca_cic.php">dial-around code</a></li> +	<li><a href="lca_rcdist.php">local call finder</a></li> +	</ul> +	<h4>misc</h4> +	<ul> +	<li class="first"><a href="xmlquery.php">XML query</a></li> +	<li><a href="lca_tariff.php">tariffs</a></li> +	<li><a href="lca_link.php">other links</a></li> +	<li><a href="http://groups.yahoo.com/group/local-calling-guide/">discuss</a></li> +	</ul> +	<p>Like this site? We accept donations via PayPal.</p> +<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> +<input type="hidden" name="cmd" value="_s-xclick"> +<input type="hidden" name="hosted_button_id" value="WAD39TRXXRCXJ"> +<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> +<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> +</form> +	</div> +</div> +<div id="footer"> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> +</script> +<script type="text/javascript"> +_uacct = "UA-943522-1"; +urchinTracker(); +</script> +</div> +</body> +</html> + diff --git a/FS/FS/msa.pm b/FS/FS/msa.pm index fdb49a3f4..6f830416f 100644 --- a/FS/FS/msa.pm +++ b/FS/FS/msa.pm @@ -107,6 +107,11 @@ sub check {    $self->SUPER::check;  } +sub _upgrade_data {  #class method +  my ($class, %opts) = @_; +  eval "use FS::msa_Data;"; # this automatically does the upgrade if needed +} +  =back  =head1 SEE ALSO diff --git a/FS/FS/msa_Data.pm b/FS/FS/msa_Data.pm new file mode 100644 index 000000000..858ae0b53 --- /dev/null +++ b/FS/FS/msa_Data.pm @@ -0,0 +1,1034 @@ +package FS::msa_Data; + +use FS::Record qw(qsearch qsearchs dbh); + +my $dbh = dbh; +my $sth = $dbh->prepare('select count(1) from msa') or die $dbh->errstr; +$sth->execute or die $sth->errstr; +my $count = $sth->fetchrow_arrayref->[0]; + +unless ( $count ) { +    my $content = ''; +    while(<DATA>) { +        $content .= $_; +    } +    my @content = split(/\n/,$content); + +    my $sql = 'insert into msa (msanum, description) values '; +    my @sql; +    foreach my $row ( @content ) { +        next unless $row =~ /^([0-9]{5})\s+([A-Za-z, \-]{5,80}) .{3}ropolitan Statistical Area/; +        push @sql, "( $1, '$2')"; +    } +    $sql .= join(',',@sql); + +    my $sth = $dbh->prepare('delete from msa'); +    $sth->execute or die $sth->errstr; + +    $sth = $dbh->prepare($sql); +    $sth->execute or die $sth->errstr; + +    $dbh->commit; +} + +__DATA__ + +METROPOLITAN AND MICROPOLITAN STATISTICAL AREAS AND COMPONENTS, December 2009, WITH CODES + +(Metropolitan and micropolitan statistical areas, and metropolitan divisions defined by the Office of Management and Budget, December 2009) + +Source:                 U.S. Census Bureau, Population Division +Internet Release Date:  September 2010 +Last Revised:            + +                FIPS +CBSA   Div      State/ +Code   Code     County  CBSA and Division Titles and Components +10020                   Abbeville, LA Micropolitan Statistical Area +10020           22113         Vermilion Parish, LA + +10100                   Aberdeen, SD Micropolitan Statistical Area +10100           46013         Brown County, SD +10100           46045         Edmunds County, SD + +10140                   Aberdeen, WA Micropolitan Statistical Area +10140           53027         Grays Harbor County, WA + +10180                   Abilene, TX Metropolitan Statistical Area +10180           48059         Callahan County, TX +10180           48253         Jones County, TX +10180           48441         Taylor County, TX + +10220                   Ada, OK Micropolitan Statistical Area +10220           40123         Pontotoc County, OK + +10260                   Adjuntas, PR Micropolitan Statistical Area +10260           72001         Adjuntas Municipio, PR + +10300                   Adrian, MI Micropolitan Statistical Area +10300           26091         Lenawee County, MI + +10380                   Aguadilla-Isabela-San Sebastián, PR Metropolitan Statistical Area +10380           72003         Aguada Municipio, PR +10380           72005         Aguadilla Municipio, PR +10380           72011         Aņasco Municipio, PR +10380           72071         Isabela Municipio, PR +10380           72081         Lares Municipio, PR +10380           72099         Moca Municipio, PR +10380           72117         Rincón Municipio, PR +10380           72131         San Sebastián Municipio, PR + +10420                   Akron, OH Metropolitan Statistical Area +10420           39133         Portage County, OH +10420           39153         Summit County, OH + +10460                   Alamogordo, NM Micropolitan Statistical Area +10460           35035         Otero County, NM + +10500                   Albany, GA Metropolitan Statistical Area +10500           13007         Baker County, GA +10500           13095         Dougherty County, GA +10500           13177         Lee County, GA +10500           13273         Terrell County, GA +10500           13321         Worth County, GA + +10540                   Albany-Lebanon, OR Micropolitan Statistical Area +10540           41043         Linn County, OR + +10580                   Albany-Schenectady-Troy, NY Metropolitan Statistical Area +10580           36001         Albany County, NY +10580           36083         Rensselaer County, NY +10580           36091         Saratoga County, NY +10580           36093         Schenectady County, NY +10580           36095         Schoharie County, NY + +10620                   Albemarle, NC Micropolitan Statistical Area +10620           37167         Stanly County, NC + +10660                   Albert Lea, MN Micropolitan Statistical Area +10660           27047         Freeborn County, MN + +10700                   Albertville, AL Micropolitan Statistical Area +10700           01095         Marshall County, AL + +10740                   Albuquerque, NM Metropolitan Statistical Area +10740           35001         Bernalillo County, NM +10740           35043         Sandoval County, NM +10740           35057         Torrance County, NM +10740           35061         Valencia County, NM + +10760                   Alexander City, AL Micropolitan Statistical Area +10760           01037         Coosa County, AL +10760           01123         Tallapoosa County, AL + +10780                   Alexandria, LA Metropolitan Statistical Area +10780           22043         Grant Parish, LA +10780           22079         Rapides Parish, LA + +10820                   Alexandria, MN Micropolitan Statistical Area +10820           27041         Douglas County, MN + +10860                   Alice, TX Micropolitan Statistical Area +10860           48249         Jim Wells County, TX + +10880                   Allegan, MI Micropolitan Statistical Area +10880           26005         Allegan County, MI + +10900                   Allentown-Bethlehem-Easton, PA-NJ Metropolitan Statistical Area +10900           34041         Warren County, NJ +10900           42025         Carbon County, PA +10900           42077         Lehigh County, PA +10900           42095         Northampton County, PA + +10940                   Alma, MI Micropolitan Statistical Area +10940           26057         Gratiot County, MI + +10980                   Alpena, MI Micropolitan Statistical Area +10980           26007         Alpena County, MI + +11020                   Altoona, PA Metropolitan Statistical Area +11020           42013         Blair County, PA + +11060                   Altus, OK Micropolitan Statistical Area +11060           40065         Jackson County, OK + +11100                   Amarillo, TX Metropolitan Statistical Area +11100           48011         Armstrong County, TX +11100           48065         Carson County, TX +11100           48375         Potter County, TX +11100           48381         Randall County, TX + +11140                   Americus, GA Micropolitan Statistical Area +11140           13249         Schley County, GA +11140           13261         Sumter County, GA + +11180                   Ames, IA Metropolitan Statistical Area +11180           19169         Story County, IA + +11220                   Amsterdam, NY Micropolitan Statistical Area +11220           36057         Montgomery County, NY + +11260                   Anchorage, AK Metropolitan Statistical Area +11260           02020         Anchorage Municipality, AK +11260           02170         Matanuska-Susitna Borough, AK + +11300                   Anderson, IN Metropolitan Statistical Area +11300           18095         Madison County, IN + +11340                   Anderson, SC Metropolitan Statistical Area +11340           45007         Anderson County, SC + +11380                   Andrews, TX Micropolitan Statistical Area +11380           48003         Andrews County, TX + +11420                   Angola, IN Micropolitan Statistical Area +11420           18151         Steuben County, IN + +11460                   Ann Arbor, MI Metropolitan Statistical Area +11460           26161         Washtenaw County, MI + +11500                   Anniston-Oxford, AL Metropolitan Statistical Area +11500           01015         Calhoun County, AL + +11540                   Appleton, WI Metropolitan Statistical Area +11540           55015         Calumet County, WI +11540           55087         Outagamie County, WI + +11580                   Arcadia, FL Micropolitan Statistical Area +11580           12027         DeSoto County, FL + +11620                   Ardmore, OK Micropolitan Statistical Area +11620           40019         Carter County, OK +11620           40085         Love County, OK + +11660                   Arkadelphia, AR Micropolitan Statistical Area +11660           05019         Clark County, AR + +11700                   Asheville, NC Metropolitan Statistical Area +11700           37021         Buncombe County, NC +11700           37087         Haywood County, NC +11700           37089         Henderson County, NC +11700           37115         Madison County, NC + +11740                   Ashland, OH Micropolitan Statistical Area +11740           39005         Ashland County, OH + +11780                   Ashtabula, OH Micropolitan Statistical Area +11780           39007         Ashtabula County, OH + +11820                   Astoria, OR Micropolitan Statistical Area +11820           41007         Clatsop County, OR + +11860                   Atchison, KS Micropolitan Statistical Area +11860           20005         Atchison County, KS + +11900                   Athens, OH Micropolitan Statistical Area +11900           39009         Athens County, OH + +11940                   Athens, TN Micropolitan Statistical Area +11940           47107         McMinn County, TN + +11980                   Athens, TX Micropolitan Statistical Area +11980           48213         Henderson County, TX + +12020                   Athens-Clarke County, GA Metropolitan Statistical Area +12020           13059         Clarke County, GA +12020           13195         Madison County, GA +12020           13219         Oconee County, GA +12020           13221         Oglethorpe County, GA + +12060                   Atlanta-Sandy Springs-Marietta, GA Metropolitan Statistical Area +12060           13013         Barrow County, GA +12060           13015         Bartow County, GA +12060           13035         Butts County, GA +12060           13045         Carroll County, GA +12060           13057         Cherokee County, GA +12060           13063         Clayton County, GA +12060           13067         Cobb County, GA +12060           13077         Coweta County, GA +12060           13085         Dawson County, GA +12060           13089         DeKalb County, GA +12060           13097         Douglas County, GA +12060           13113         Fayette County, GA +12060           13117         Forsyth County, GA +12060           13121         Fulton County, GA +12060           13135         Gwinnett County, GA +12060           13143         Haralson County, GA +12060           13149         Heard County, GA +12060           13151         Henry County, GA +12060           13159         Jasper County, GA +12060           13171         Lamar County, GA +12060           13199         Meriwether County, GA +12060           13217         Newton County, GA +12060           13223         Paulding County, GA +12060           13227         Pickens County, GA +12060           13231         Pike County, GA +12060           13247         Rockdale County, GA +12060           13255         Spalding County, GA +12060           13297         Walton County, GA + +12100                   Atlantic City-Hammonton, NJ Metropolitan Statistical Area +12100           34001         Atlantic County, NJ + +12140                   Auburn, IN Micropolitan Statistical Area +12140           18033         DeKalb County, IN + +12180                   Auburn, NY Micropolitan Statistical Area +12180           36011         Cayuga County, NY + +12220                   Auburn-Opelika, AL Metropolitan Statistical Area +12220           01081         Lee County, AL + +12260                   Augusta-Richmond County, GA-SC Metropolitan Statistical Area +12260           13033         Burke County, GA +12260           13073         Columbia County, GA +12260           13189         McDuffie County, GA +12260           13245         Richmond County, GA +12260           45003         Aiken County, SC +12260           45037         Edgefield County, SC + +12300                   Augusta-Waterville, ME Micropolitan Statistical Area +12300           23011         Kennebec County, ME + +12380                   Austin, MN Micropolitan Statistical Area +12380           27099         Mower County, MN + +12420                   Austin-Round Rock-San Marcos, TX Metropolitan Statistical Area +12420           48021         Bastrop County, TX +12420           48055         Caldwell County, TX +12420           48209         Hays County, TX +12420           48453         Travis County, TX +12420           48491         Williamson County, TX + +12460                   Bainbridge, GA Micropolitan Statistical Area +12460           13087         Decatur County, GA + +12540                   Bakersfield-Delano, CA Metropolitan Statistical Area +12540           06029         Kern County, CA + +12580                   Baltimore-Towson, MD Metropolitan Statistical Area +12580           24003         Anne Arundel County, MD +12580           24005         Baltimore County, MD +12580           24013         Carroll County, MD +12580           24025         Harford County, MD +12580           24027         Howard County, MD +12580           24035         Queen Anne's County, MD +12580           24510         Baltimore city, MD + +12620                   Bangor, ME Metropolitan Statistical Area +12620           23019         Penobscot County, ME + +12660                   Baraboo, WI Micropolitan Statistical Area +12660           55111         Sauk County, WI + +12700                   Barnstable Town, MA Metropolitan Statistical Area +12700           25001         Barnstable County, MA + +12740                   Barre, VT Micropolitan Statistical Area +12740           50023         Washington County, VT + +12780                   Bartlesville, OK Micropolitan Statistical Area +12780           40147         Washington County, OK + +12820                   Bastrop, LA Micropolitan Statistical Area +12820           22067         Morehouse Parish, LA + +12860                   Batavia, NY Micropolitan Statistical Area +12860           36037         Genesee County, NY + +12900                   Batesville, AR Micropolitan Statistical Area +12900           05063         Independence County, AR + +12940                   Baton Rouge, LA Metropolitan Statistical Area +12940           22005         Ascension Parish, LA +12940           22033         East Baton Rouge Parish, LA +12940           22037         East Feliciana Parish, LA +12940           22047         Iberville Parish, LA +12940           22063         Livingston Parish, LA +12940           22077         Pointe Coupee Parish, LA +12940           22091         St. Helena Parish, LA +12940           22121         West Baton Rouge Parish, LA +12940           22125         West Feliciana Parish, LA + +12980                   Battle Creek, MI Metropolitan Statistical Area +12980           26025         Calhoun County, MI + +13020                   Bay City, MI Metropolitan Statistical Area +13020           26017         Bay County, MI + +13060                   Bay City, TX Micropolitan Statistical Area +13060           48321         Matagorda County, TX + +13100                   Beatrice, NE Micropolitan Statistical Area +13100           31067         Gage County, NE + +13140                   Beaumont-Port Arthur, TX Metropolitan Statistical Area +13140           48199         Hardin County, TX +13140           48245         Jefferson County, TX +13140           48361         Orange County, TX + +13180                   Beaver Dam, WI Micropolitan Statistical Area +13180           55027         Dodge County, WI + +13220                   Beckley, WV Micropolitan Statistical Area +13220           54081         Raleigh County, WV + +13260                   Bedford, IN Micropolitan Statistical Area +13260           18093         Lawrence County, IN + +13300                   Beeville, TX Micropolitan Statistical Area +13300           48025         Bee County, TX + +13340                   Bellefontaine, OH Micropolitan Statistical Area +13340           39091         Logan County, OH + +13380                   Bellingham, WA Metropolitan Statistical Area +13380           53073         Whatcom County, WA + +13420                   Bemidji, MN Micropolitan Statistical Area +13420           27007         Beltrami County, MN + +13460                   Bend, OR Metropolitan Statistical Area +13460           41017         Deschutes County, OR + +13500                   Bennettsville, SC Micropolitan Statistical Area +13500           45069         Marlboro County, SC + +13540                   Bennington, VT Micropolitan Statistical Area +13540           50003         Bennington County, VT + +13620                   Berlin, NH-VT Micropolitan Statistical Area +13620           33007         Coos County, NH +13620           50009         Essex County, VT + +13660                   Big Rapids, MI Micropolitan Statistical Area +13660           26107         Mecosta County, MI + +13700                   Big Spring, TX Micropolitan Statistical Area +13700           48227         Howard County, TX + +13740                   Billings, MT Metropolitan Statistical Area +13740           30009         Carbon County, MT +13740           30111         Yellowstone County, MT + +13780                   Binghamton, NY Metropolitan Statistical Area +13780           36007         Broome County, NY +13780           36107         Tioga County, NY + +13820                   Birmingham-Hoover, AL Metropolitan Statistical Area +13820           01007         Bibb County, AL +13820           01009         Blount County, AL +13820           01021         Chilton County, AL +13820           01073         Jefferson County, AL +13820           01115         St. Clair County, AL +13820           01117         Shelby County, AL +13820           01127         Walker County, AL + +13860                   Bishop, CA Micropolitan Statistical Area +13860           06027         Inyo County, CA + +13900                   Bismarck, ND Metropolitan Statistical Area +13900           38015         Burleigh County, ND +13900           38059         Morton County, ND + +13940                   Blackfoot, ID Micropolitan Statistical Area +13940           16011         Bingham County, ID + +13980                   Blacksburg-Christiansburg-Radford, VA Metropolitan Statistical Area +13980           51071         Giles County, VA +13980           51121         Montgomery County, VA +13980           51155         Pulaski County, VA +13980           51750         Radford city, VA + +14020                   Bloomington, IN Metropolitan Statistical Area +14020           18055         Greene County, IN +14020           18105         Monroe County, IN +14020           18119         Owen County, IN + +14060                   Bloomington-Normal, IL Metropolitan Statistical Area +14060           17113         McLean County, IL + +14100                   Bloomsburg-Berwick, PA Micropolitan Statistical Area +14100           42037         Columbia County, PA +14100           42093         Montour County, PA + +14140                   Bluefield, WV-VA Micropolitan Statistical Area +14140           51185         Tazewell County, VA +14140           54055         Mercer County, WV + +14180                   Blytheville, AR Micropolitan Statistical Area +14180           05093         Mississippi County, AR + +14220                   Bogalusa, LA Micropolitan Statistical Area +14220           22117         Washington Parish, LA + +14260                   Boise City-Nampa, ID Metropolitan Statistical Area +14260           16001         Ada County, ID +14260           16015         Boise County, ID +14260           16027         Canyon County, ID +14260           16045         Gem County, ID +14260           16073         Owyhee County, ID + +14300                   Bonham, TX Micropolitan Statistical Area +14300           48147         Fannin County, TX + +14340                   Boone, IA Micropolitan Statistical Area +14340           19015         Boone County, IA + +14380                   Boone, NC Micropolitan Statistical Area +14380           37189         Watauga County, NC + +14420                   Borger, TX Micropolitan Statistical Area +14420           48233         Hutchinson County, TX + +14460                   Boston-Cambridge-Quincy, MA-NH Metropolitan Statistical Area +14460   14484              Boston-Quincy, MA Metropolitan Division +14460   14484   25021         Norfolk County, MA +14460   14484   25023         Plymouth County, MA +14460   14484   25025         Suffolk County, MA +14460   15764              Cambridge-Newton-Framingham, MA Metropolitan Division +14460   15764   25017         Middlesex County, MA +14460   37764              Peabody, MA Metropolitan Division +14460   37764   25009         Essex County, MA +14460   40484              Rockingham County-Strafford County, NH Metropolitan Division +14460   40484   33015         Rockingham County, NH +14460   40484   33017         Strafford County, NH + +14500                   Boulder, CO Metropolitan Statistical Area +14500           08013         Boulder County, CO + +14540                   Bowling Green, KY Metropolitan Statistical Area +14540           21061         Edmonson County, KY +14540           21227         Warren County, KY + +14580                   Bozeman, MT Micropolitan Statistical Area +14580           30031         Gallatin County, MT + +14620                   Bradford, PA Micropolitan Statistical Area +14620           42083         McKean County, PA + +14660                   Brainerd, MN Micropolitan Statistical Area +14660           27021         Cass County, MN +14660           27035         Crow Wing County, MN + +14700                   Branson, MO Micropolitan Statistical Area +14700           29209         Stone County, MO +14700           29213         Taney County, MO + +14740                   Bremerton-Silverdale, WA Metropolitan Statistical Area +14740           53035         Kitsap County, WA + +14780                   Brenham, TX Micropolitan Statistical Area +14780           48477         Washington County, TX + +14820                   Brevard, NC Micropolitan Statistical Area +14820           37175         Transylvania County, NC + +14860                   Bridgeport-Stamford-Norwalk, CT Metropolitan Statistical Area +14860           09001         Fairfield County, CT + +14940                   Brigham City, UT Micropolitan Statistical Area +14940           49003         Box Elder County, UT + +15020                   Brookhaven, MS Micropolitan Statistical Area +15020           28085         Lincoln County, MS + +15060                   Brookings, OR Micropolitan Statistical Area +15060           41015         Curry County, OR + +15100                   Brookings, SD Micropolitan Statistical Area +15100           46011         Brookings County, SD + +15140                   Brownsville, TN Micropolitan Statistical Area +15140           47075         Haywood County, TN + +15180                   Brownsville-Harlingen, TX Metropolitan Statistical Area +15180           48061         Cameron County, TX + +15220                   Brownwood, TX Micropolitan Statistical Area +15220           48049         Brown County, TX + +15260                   Brunswick, GA Metropolitan Statistical Area +15260           13025         Brantley County, GA +15260           13127         Glynn County, GA +15260           13191         McIntosh County, GA + +15340                   Bucyrus, OH Micropolitan Statistical Area +15340           39033         Crawford County, OH + +15380                   Buffalo-Niagara Falls, NY Metropolitan Statistical Area +15380           36029         Erie County, NY +15380           36063         Niagara County, NY + +15420                   Burley, ID Micropolitan Statistical Area +15420           16031         Cassia County, ID +15420           16067         Minidoka County, ID + +15460                   Burlington, IA-IL Micropolitan Statistical Area +15460           17071         Henderson County, IL +15460           19057         Des Moines County, IA + +15500                   Burlington, NC Metropolitan Statistical Area +15500           37001         Alamance County, NC + +15540                   Burlington-South Burlington, VT Metropolitan Statistical Area +15540           50007         Chittenden County, VT +15540           50011         Franklin County, VT +15540           50013         Grand Isle County, VT + +15580                   Butte-Silver Bow, MT Micropolitan Statistical Area +15580           30093         Silver Bow County, MT + +15620                   Cadillac, MI Micropolitan Statistical Area +15620           26113         Missaukee County, MI +15620           26165         Wexford County, MI + +15660                   Calhoun, GA Micropolitan Statistical Area +15660           13129         Gordon County, GA + +15700                   Cambridge, MD Micropolitan Statistical Area +15700           24019         Dorchester County, MD + +15740                   Cambridge, OH Micropolitan Statistical Area +15740           39059         Guernsey County, OH + +15780                   Camden, AR Micropolitan Statistical Area +15780           05013         Calhoun County, AR +15780           05103         Ouachita County, AR + +15820                   Campbellsville, KY Micropolitan Statistical Area +15820           21217         Taylor County, KY + +15860                   Caņon City, CO Micropolitan Statistical Area +15860           08043         Fremont County, CO + +15900                   Canton, IL Micropolitan Statistical Area +15900           17057         Fulton County, IL + +15940                   Canton-Massillon, OH Metropolitan Statistical Area +15940           39019         Carroll County, OH +15940           39151         Stark County, OH + +15980                   Cape Coral-Fort Myers, FL Metropolitan Statistical Area +15980           12071         Lee County, FL + +16020                   Cape Girardeau-Jackson, MO-IL Metropolitan Statistical Area +16020           17003         Alexander County, IL +16020           29017         Bollinger County, MO +16020           29031         Cape Girardeau County, MO + +16060                   Carbondale, IL Micropolitan Statistical Area +16060           17077         Jackson County, IL + +16100                   Carlsbad-Artesia, NM Micropolitan Statistical Area +16100           35015         Eddy County, NM + +16180                   Carson City, NV Metropolitan Statistical Area +16180           32510         Carson City, NV + +16220                   Casper, WY Metropolitan Statistical Area +16220           56025         Natrona County, WY + +16260                   Cedar City, UT Micropolitan Statistical Area +16260           49021         Iron County, UT + +16300                   Cedar Rapids, IA Metropolitan Statistical Area +16300           19011         Benton County, IA +16300           19105         Jones County, IA +16300           19113         Linn County, IA + +16340                   Cedartown, GA Micropolitan Statistical Area +16340           13233         Polk County, GA + +16380                   Celina, OH Micropolitan Statistical Area +16380           39107         Mercer County, OH + +16420                   Central City, KY Micropolitan Statistical Area +16420           21177         Muhlenberg County, KY + +16460                   Centralia, IL Micropolitan Statistical Area +16460           17121         Marion County, IL + +16500                   Centralia, WA Micropolitan Statistical Area +16500           53041         Lewis County, WA + +16540                   Chambersburg, PA Micropolitan Statistical Area +16540           42055         Franklin County, PA + +16580                   Champaign-Urbana, IL Metropolitan Statistical Area +16580           17019         Champaign County, IL +16580           17053         Ford County, IL +16580           17147         Piatt County, IL + +16620                   Charleston, WV Metropolitan Statistical Area +16620           54005         Boone County, WV +16620           54015         Clay County, WV +16620           54039         Kanawha County, WV +16620           54043         Lincoln County, WV +16620           54079         Putnam County, WV + +16660                   Charleston-Mattoon, IL Micropolitan Statistical Area +16660           17029         Coles County, IL +16660           17035         Cumberland County, IL + +16700                   Charleston-North Charleston-Summerville, SC Metropolitan Statistical Area +16700           45015         Berkeley County, SC +16700           45019         Charleston County, SC +16700           45035         Dorchester County, SC + +16740                   Charlotte-Gastonia-Rock Hill, NC-SC Metropolitan Statistical Area +16740           37007         Anson County, NC +16740           37025         Cabarrus County, NC +16740           37071         Gaston County, NC +16740           37119         Mecklenburg County, NC +16740           37179         Union County, NC +16740           45091         York County, SC + +16820                   Charlottesville, VA Metropolitan Statistical Area +16820           51003         Albemarle County, VA +16820           51065         Fluvanna County, VA +16820           51079         Greene County, VA +16820           51125         Nelson County, VA +16820           51540         Charlottesville city, VA + +16860                   Chattanooga, TN-GA Metropolitan Statistical Area +16860           13047         Catoosa County, GA +16860           13083         Dade County, GA +16860           13295         Walker County, GA +16860           47065         Hamilton County, TN +16860           47115         Marion County, TN +16860           47153         Sequatchie County, TN + +16900                   Chester, SC Micropolitan Statistical Area +16900           45023         Chester County, SC + +16940                   Cheyenne, WY Metropolitan Statistical Area +16940           56021         Laramie County, WY + +16980                   Chicago-Joliet-Naperville, IL-IN-WI Metropolitan Statistical Area +16980   16974              Chicago-Joliet-Naperville, IL Metropolitan Division +16980   16974   17031         Cook County, IL +16980   16974   17037         DeKalb County, IL +16980   16974   17043         DuPage County, IL +16980   16974   17063         Grundy County, IL +16980   16974   17089         Kane County, IL +16980   16974   17093         Kendall County, IL +16980   16974   17111         McHenry County, IL +16980   16974   17197         Will County, IL +16980   23844              Gary, IN Metropolitan Division +16980   23844   18073         Jasper County, IN +16980   23844   18089         Lake County, IN +16980   23844   18111         Newton County, IN +16980   23844   18127         Porter County, IN +16980   29404              Lake County-Kenosha County, IL-WI Metropolitan Division +16980   29404   17097         Lake County, IL +16980   29404   55059         Kenosha County, WI + +17020                   Chico, CA Metropolitan Statistical Area +17020           06007         Butte County, CA + +17060                   Chillicothe, OH Micropolitan Statistical Area +17060           39141         Ross County, OH + +17140                   Cincinnati-Middletown, OH-KY-IN Metropolitan Statistical Area +17140           18029         Dearborn County, IN +17140           18047         Franklin County, IN +17140           18115         Ohio County, IN +17140           21015         Boone County, KY +17140           21023         Bracken County, KY +17140           21037         Campbell County, KY +17140           21077         Gallatin County, KY +17140           21081         Grant County, KY +17140           21117         Kenton County, KY +17140           21191         Pendleton County, KY +17140           39015         Brown County, OH +17140           39017         Butler County, OH +17140           39025         Clermont County, OH +17140           39061         Hamilton County, OH +17140           39165         Warren County, OH + +17200                   Claremont, NH Micropolitan Statistical Area +17200           33019         Sullivan County, NH + +17220                   Clarksburg, WV Micropolitan Statistical Area +17220           54017         Doddridge County, WV +17220           54033         Harrison County, WV +17220           54091         Taylor County, WV + +17260                   Clarksdale, MS Micropolitan Statistical Area +17260           28027         Coahoma County, MS + +17300                   Clarksville, TN-KY Metropolitan Statistical Area +17300           21047         Christian County, KY +17300           21221         Trigg County, KY +17300           47125         Montgomery County, TN +17300           47161         Stewart County, TN + +17340                   Clearlake, CA Micropolitan Statistical Area +17340           06033         Lake County, CA + +17380                   Cleveland, MS Micropolitan Statistical Area +17380           28011         Bolivar County, MS + +17420                   Cleveland, TN Metropolitan Statistical Area +17420           47011         Bradley County, TN +17420           47139         Polk County, TN + +17460                   Cleveland-Elyria-Mentor, OH Metropolitan Statistical Area +17460           39035         Cuyahoga County, OH +17460           39055         Geauga County, OH +17460           39085         Lake County, OH +17460           39093         Lorain County, OH +17460           39103         Medina County, OH + +17500                   Clewiston, FL Micropolitan Statistical Area +17500           12051         Hendry County, FL + +17540                   Clinton, IA Micropolitan Statistical Area +17540           19045         Clinton County, IA + +17580                   Clovis, NM Micropolitan Statistical Area +17580           35009         Curry County, NM + +17620                   Coamo, PR Micropolitan Statistical Area +17620           72043         Coamo Municipio, PR +17620           72123         Salinas Municipio, PR + +17660                   Coeur d'Alene, ID Metropolitan Statistical Area +17660           16055         Kootenai County, ID + +17700                   Coffeyville, KS Micropolitan Statistical Area +17700           20125         Montgomery County, KS + +17740                   Coldwater, MI Micropolitan Statistical Area +17740           26023         Branch County, MI + +17780                   College Station-Bryan, TX Metropolitan Statistical Area +17780           48041         Brazos County, TX +17780           48051         Burleson County, TX +17780           48395         Robertson County, TX + +17820                   Colorado Springs, CO Metropolitan Statistical Area +17820           08041         El Paso County, CO +17820           08119         Teller County, CO + +17860                   Columbia, MO Metropolitan Statistical Area +17860           29019         Boone County, MO +17860           29089         Howard County, MO + +17900                   Columbia, SC Metropolitan Statistical Area +17900           45017         Calhoun County, SC +17900           45039         Fairfield County, SC +17900           45055         Kershaw County, SC +17900           45063         Lexington County, SC +17900           45079         Richland County, SC +17900           45081         Saluda County, SC + +17940                   Columbia, TN Micropolitan Statistical Area +17940           47119         Maury County, TN + +17980                   Columbus, GA-AL Metropolitan Statistical Area +17980           01113         Russell County, AL +17980           13053         Chattahoochee County, GA +17980           13145         Harris County, GA +17980           13197         Marion County, GA +17980           13215         Muscogee County, GA + +18020                   Columbus, IN Metropolitan Statistical Area +18020           18005         Bartholomew County, IN + +18060                   Columbus, MS Micropolitan Statistical Area +18060           28087         Lowndes County, MS + +18100                   Columbus, NE Micropolitan Statistical Area +18100           31141         Platte County, NE + +18140                   Columbus, OH Metropolitan Statistical Area +18140           39041         Delaware County, OH +18140           39045         Fairfield County, OH +18140           39049         Franklin County, OH +18140           39089         Licking County, OH +18140           39097         Madison County, OH +18140           39117         Morrow County, OH +18140           39129         Pickaway County, OH +18140           39159         Union County, OH + +18180                   Concord, NH Micropolitan Statistical Area +18180           33013         Merrimack County, NH + +18220                   Connersville, IN Micropolitan Statistical Area +18220           18041         Fayette County, IN + +18260                   Cookeville, TN Micropolitan Statistical Area +18260           47087         Jackson County, TN +18260           47133         Overton County, TN +18260           47141         Putnam County, TN + +18300                   Coos Bay, OR Micropolitan Statistical Area +18300           41011         Coos County, OR + +18340                   Corbin, KY Micropolitan Statistical Area +18340           21235         Whitley County, KY + +18380                   Cordele, GA Micropolitan Statistical Area +18380           13081         Crisp County, GA + +18420                   Corinth, MS Micropolitan Statistical Area +18420           28003         Alcorn County, MS + +18460                   Cornelia, GA Micropolitan Statistical Area +18460           13137         Habersham County, GA + +18500                   Corning, NY Micropolitan Statistical Area +18500           36101         Steuben County, NY + +18580                   Corpus Christi, TX Metropolitan Statistical Area +18580           48007         Aransas County, TX +18580           48355         Nueces County, TX +18580           48409         San Patricio County, TX + +18620                   Corsicana, TX Micropolitan Statistical Area +18620           48349         Navarro County, TX + +18660                   Cortland, NY Micropolitan Statistical Area +18660           36023         Cortland County, NY + +18700                   Corvallis, OR Metropolitan Statistical Area +18700           41003         Benton County, OR + +18740                   Coshocton, OH Micropolitan Statistical Area +18740           39031         Coshocton County, OH + +18820                   Crawfordsville, IN Micropolitan Statistical Area +18820           18107         Montgomery County, IN + +18860                   Crescent City, CA Micropolitan Statistical Area +18860           06015         Del Norte County, CA + +18880                   Crestview-Fort Walton Beach-Destin, FL Metropolitan Statistical Area +18880           12091         Okaloosa County, FL + +18900                   Crossville, TN Micropolitan Statistical Area +18900           47035         Cumberland County, TN + +18940                   Crowley, LA Micropolitan Statistical Area +18940           22001         Acadia Parish, LA + +18980                   Cullman, AL Micropolitan Statistical Area +18980           01043         Cullman County, AL + +19020                   Culpeper, VA Micropolitan Statistical Area +19020           51047         Culpeper County, VA + +19060                   Cumberland, MD-WV Metropolitan Statistical Area +19060           24001         Allegany County, MD +19060           54057         Mineral County, WV + +19100                   Dallas-Fort Worth-Arlington, TX Metropolitan Statistical Area +19100   19124              Dallas-Plano-Irving, TX Metropolitan Division +19100   19124   48085         Collin County, TX +19100   19124   48113         Dallas County, TX +19100   19124   48119         Delta County, TX +19100   19124   48121         Denton County, TX +19100   19124   48139         Ellis County, TX +19100   19124   48231         Hunt County, TX +19100   19124   48257         Kaufman County, TX +19100   19124   48397         Rockwall County, TX +19100   23104              Fort Worth-Arlington, TX Metropolitan Division +19100   23104   48251         Johnson County, TX +19100   23104   48367         Parker County, TX +19100   23104   48439         Tarrant County, TX +19100   23104   48497         Wise County, TX + +19140                   Dalton, GA Metropolitan Statistical Area +19140           13213         Murray County, GA +19140           13313         Whitfield County, GA + +19180                   Danville, IL Metropolitan Statistical Area +19180           17183         Vermilion County, IL + +19220                   Danville, KY Micropolitan Statistical Area +19220           21021         Boyle County, KY +19220           21137         Lincoln County, KY + +19260                   Danville, VA Metropolitan Statistical Area +19260           51143         Pittsylvania County, VA +19260           51590         Danville city, VA + +19300                   Daphne-Fairhope-Foley, AL Micropolitan Statistical Area +19300           01003         Baldwin County, AL + +19340                   Davenport-Moline-Rock Island, IA-IL Metropolitan Statistical Area +19340           17073         Henry County, IL +19340           17131         Mercer County, IL +19340           17161         Rock Island County, IL +19340           19163         Scott County, IA + +19380                   Dayton, OH Metropolitan Statistical Area +19380           39057         Greene County, OH +19380           39109         Miami County, OH +19380           39113         Montgomery County, OH +19380           39135         Preble County, OH + +19460                   Decatur, AL Metropolitan Statistical Area +19460           01079         Lawrence County, AL +19460           01103         Morgan County, AL + +19500                   Decatur, IL Metropolitan Statistical Area +19500           17115         Macon County, IL + +19540                   Decatur, IN Micropolitan Statistical Area +19540           18001         Adams County, IN + +19580                   Defiance, OH Micropolitan Statistical Area +19580           39039         Defiance County, OH + +19620                   Del Rio, TX Micropolitan Statistical Area +19620           48465         Val Verde County, TX + +19660                   Deltona-Daytona Beach-Ormond Beach, FL Metropolitan Statistical Area +19660           12127         Volusia County, FL + +19700                   Deming, NM Micropolitan Statistical Area +19700           35029         Luna County, NM + +19740                   Denver-Aurora-Broomfield, CO Metropolitan Statistical Area +19740           08001         Adams County, CO +19740           08005         Arapahoe County, CO +19740           08014         Broomfield County, CO +19740           08019         Clear Creek County, CO +19740           08031         Denver County, CO +19740           08035         Douglas County, CO +19740           08039         Elbert County, CO +19740           08047         Gilpin County, CO +19740           08059         Jefferson County, CO +19740           08093         Park County, CO + +19760                   DeRidder, LA Micropolitan Statistical Area +19760           22011         Beauregard Parish, LA + +19780                   Des Moines-West Des Moines, IA Metropolitan Statistical Area +19780           19049         Dallas County, IA +19780           19077         Guthrie County, IA +19780           19121         Madison County, IA +19780           19153         Polk County, IA +19780           19181         Warren County, IA + +19820                   Detroit-Warren-Livonia, MI Metropolitan Statistical Area +19820   19804              Detroit-Livonia-Dearborn, MI Metropolitan Division +19820   19804   26163         Wayne County, MI  +19820   47644              Warren-Troy-Farmington Hills, MI Metropolitan Division +19820   47644   26087         Lapeer County, MI +19820   47644   26093         Livingston County, MI +19820   47644   26099         Macomb County, MI +19820   47644   26125         Oakland County, MI +19820   47644   26147         St. Clair County, MI + +19860                   Dickinson, ND Micropolitan Statistical Area +19860           38007         Billings County, ND +19860           38089         Stark County, ND + +19900                   Dillon, SC Micropolitan Statistical Area +19900           45033         Dillon County, SC + +19940                   Dixon, IL Micropolitan Statistical Area diff --git a/FS/FS/phone_avail.pm b/FS/FS/phone_avail.pm index 3066ac033..b726d3497 100644 --- a/FS/FS/phone_avail.pm +++ b/FS/FS/phone_avail.pm @@ -70,13 +70,17 @@ station  Optional name -=item svcnum +=item rate_center_abbrev - abbreviated rate center -svcnum +=item latanum - LATA # -=item availbatch +=item msanum - MSA # + +=item ordernum - bulk DID order # -availbatch +=item svcnum + +=item availbatch  =back @@ -145,11 +149,13 @@ sub check {      || $self->ut_number('npa')      || $self->ut_numbern('nxx')      || $self->ut_numbern('station') -    || $self->ut_foreign_keyn('svcnum', 'cust_svc', 'svcnum' ) -    || $self->ut_foreign_keyn('ordernum', 'did_order', 'ordernum' ) -    || $self->ut_textn('availbatch')      || $self->ut_textn('name')      || $self->ut_textn('rate_center_abbrev') +    || $self->ut_foreign_keyn('latanum', 'lata', 'latanum' ) +    || $self->ut_foreign_keyn('msanum', 'msa', 'msanum' ) +    || $self->ut_foreign_keyn('ordernum', 'did_order', 'ordernum' ) +    || $self->ut_foreign_keyn('svcnum', 'cust_svc', 'svcnum' ) +    || $self->ut_textn('availbatch')    ;    return $error if $error; @@ -176,6 +182,21 @@ sub part_export {    qsearchs('part_export', { 'exportnum' => $self->exportnum });  } +=item msa2msanum + +Translate free-form MSA name to a msa.msanum + +=cut + +sub msa2msanum { +    my $self = shift; +    my $msa = shift; +    my $res = qsearchs('msa', { 'description' => { 'op' => 'ILIKE', +                                                   'value' => $msa, } +                              }); +    return 0 unless $res; +    $res->msanum; +}  sub process_batch_import {    my $job = shift; @@ -190,40 +211,46 @@ sub process_batch_import {      $phone_avail->station($3);    }; +  my $msasub = sub { +    my( $phone_avail, $value ) = @_; +    my $msanum = $phone_avail->msa2msanum($value); +    die "cannot translate MSA ($value) to msanum" unless $msanum; +    $phone_avail->msanum($msanum); +  }; +    my $opt = { 'table'   => 'phone_avail',                'params'  => [ 'availbatch', 'exportnum', 'countrycode', 'ordernum', 'vendor_order_id', 'confirmed' ],                'formats' => { 'default' => [ 'state', $numsub, 'name' ], -			     'bulk' => [ 'state', $numsub, 'name', 'rate_center_abbrev', 'msa', 'latanum' ], -			   }, -	      'postinsert_callback' => sub {   -		    my $record = shift; -		    if($record->ordernum) { -			my $did_order = qsearchs('did_order',  -						{ 'ordernum' => $record->ordernum } ); -			if($did_order && !$did_order->received) { -			    $did_order->received(time); -			    $did_order->confirmed(parse_datetime($record->confirmed)); -			    $did_order->vendor_order_id($record->vendor_order_id); -			    $did_order->replace; -			} -		    } -		},  +                 'bulk' => [ 'state', $numsub, 'name', 'rate_center_abbrev', $msasub, 'latanum' ], +               }, +               'postinsert_callback' => sub {   +                    my $record = shift; +                    if($record->ordernum) { +                    my $did_order = qsearchs('did_order',  +                                        { 'ordernum' => $record->ordernum } ); +                    if($did_order && !$did_order->received) { +                        $did_order->received(time); +                        $did_order->confirmed(parse_datetime($record->confirmed)); +                        $did_order->vendor_order_id($record->vendor_order_id); +                        $did_order->replace; +                    } +                    } +               },               };    FS::Record::process_batch_import( $job, $opt, @_ ); -  }  sub flush { # evil direct SQL      my $opt = shift;      if ( $opt->{'ratecenter'} =~ /^[\w\s]+$/ -	    && $opt->{'state'} =~ /^[A-Z][A-Z]$/  -	    && $opt->{'exportnum'} =~ /^\d+$/) { -	my $sth = dbh->prepare('delete from phone_avail where exportnum = ? '. -		    ' and state = ? and name = ?'); -	$sth->execute($opt->{'exportnum'},$opt->{'state'},$opt->{'ratecenter'}) -	    or die $sth->errstr; +        && $opt->{'state'} =~ /^[A-Z][A-Z]$/  +        && $opt->{'exportnum'} =~ /^\d+$/) { +    my $sth = dbh->prepare('delete from phone_avail where exportnum = ? '. +            ' and state = ? and name = ?'); +    $sth->execute($opt->{'exportnum'},$opt->{'state'},$opt->{'ratecenter'}) +        or die $sth->errstr;      }      '';  | 
