X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fnena2.pm;h=fa3597b7aa017d7be3e5d74ae0b00279be3f2bd0;hb=eb649eb7b8851a07a36955a26685d061b46e4593;hp=71d753aa13aa1ad1dbbbffd3764278dd2ec91f48;hpb=acc311a412cd8660572eb6de6712a1e0b2768ec1;p=freeside.git diff --git a/FS/FS/part_export/nena2.pm b/FS/FS/part_export/nena2.pm index 71d753aa1..fa3597b7a 100644 --- a/FS/FS/part_export/nena2.pm +++ b/FS/FS/part_export/nena2.pm @@ -15,11 +15,17 @@ my %upload_targets; tie %options, 'Tie::IxHash', ( 'company_name' => { label => 'Company name for header record', - type => 'text' + type => 'text', }, 'company_id' => { label => 'NENA company ID', type => 'text', }, + 'customer_code' => { label => 'Customer code', + type => 'text', + }, + 'area_code' => { label => 'Default area code for 7 digit numbers', + type => 'text', + }, 'prefix' => { label => 'File name prefix', type => 'text', }, @@ -215,12 +221,18 @@ sub data { my $cust_location = FS::cust_location->by_key($locationnum); # initialize with empty strings - my %hash = map { $_ => '' } $item_format->names; + my %hash = map { $_ => '' } @{ $item_format->names }; $hash{function_code} = $function_code{$action}; - - # phone number - $svc->phonenum =~ /^(\d{3})(\d*)$/; + + # Add default area code if phonenum is 7 digits + my $phonenum = $svc->phonenum; + if ($self->option('area_code') =~ /^\d{3}$/ && $phonenum =~ /^\d{7}$/ ){ + $phonenum = $self->option('area_code'). $svc->phonenum; + } + + # phone number + $phonenum =~ /^(\d{3})(\d*)$/; $hash{npa} = $1; $hash{calling_number} = $2; @@ -277,13 +289,11 @@ sub data { # so we can't comply. NENA 3 fixed this... $hash{company_id} = $self->option('company_id'); + $hash{customer_code} = $self->option('customer_code') || ''; $hash{source_id} = $initial_load_hack ? 'C' : ' '; - @hash{'zip', 'zip_'} = split('-', $cust_location->zip); - - # $hash{customer_code} is supposed to "uniquely identify a customer" but - # they give us 3 alphanumeric characters. Not sure how that works. - + @hash{'zip_code', 'zip_4'} = split('-', $cust_location->zip); + $hash{x_coordinate} = $cust_location->longitude; $hash{y_coordinate} = $cust_location->latitude; # $hash{z_coordinate} = $cust_location->altitude; # not implemented, sadly @@ -355,7 +365,6 @@ sub process { # ignore items that have no data to add to the batch next if $item->action eq 'suspend' or $item->action eq 'unsuspend'; - my $svcnum = $item->svcnum; my $data = $item->data; %hash = %{ $item_format->parse($data) }; my $phonenum = $hash{npa} . $hash{calling_number};