<%doc> Example: include( '/elements/location.html', 'object' => $cust_location 'prefix' => $pre, # prefixed to form field names 'onchange' => $javascript, 'geocode' => $geocode, #passed through 'censustract' => $censustract, #passed through 'no_asterisks' => 0, #set true to disable the red asterisks next #to required fields 'address1_label' => 'Address', #label for address 'enable_coords' => 1, #show latitude/longitude fields 'enable_district' => 1, #show tax district field 'enable_censustract' => 1, #show censustract field ) % if ( $opt{'alt_format'} ) { <<%$th%> ALIGN="right">Location kind> <% include('/elements/select.html', 'cgi' => $cgi, 'field' => 'location_kind', 'id' => 'location_kind', 'disabled' => $disabled, #'style' => \@style, 'options' => \@location_kind_options, 'labels' => $location_kind_labels, 'curr_value' => scalar($cgi->param('location_kind')) || $object->get('location_kind'), ) %> % } % if ( $label_prefix eq '_location' ) { <% $opt{'locationname_label'} || emt('Location ID') %> <% $style %> > % } else { <& hidden.html, field => $pre.'locationname', value => $object->get('locationname') &> % } <<%$th%> STYLE="width:16ex" ALIGN="right"><%$r%><% $opt{'address1_label'} || emt('Address') %>> <% $style %> > % if ( ! $opt{'alt_format'} ) { #regular format >* >Unit # <% $style %> > % } else { # alternate format <& hidden.html, field => $pre.'address2', value => $object->get('address2') &> <<%$th%> ALIGN="right">Unit type and #> % my $location_type = scalar($cgi->param('location_type')) % || $object->get('location_type'); % #my $location_number = scalar($cgi->param('location_number')) % # || $object->get($pre.'location_number'); % % if ( $object->get($pre.'address2') && ! $location_type ) { % } % % if ( 1 ) { #ikano, switch on via config % tie my %location_types, 'Tie::IxHash', % FS::part_export::ikano->location_types; <% include('/elements/select.html', 'cgi' => $cgi, 'field' => 'location_type', 'id' => 'location_type', 'disabled' => $disabled, #'style' => \@style, 'options' => [ keys %location_types ], 'labels' => \%location_types, 'curr_value' => $location_type, 'onchange' => 'location_type_changed', ) %> % } else { <% $style %> > % } <% $style %> > % #XXX i don't work so well when the dropdown is changed :/ i probably need to be triggered by "default service address" % $alt_err =~ s/(ship_)?address2/''.encode_entities($object->get($1.'address2')).'<\/B>'/e; <% $alt_err %> % } <<%$th%> ALIGN="right"> % unless ($conf->exists('cust_main-no_city_in_address')) { <% $r %><% mt('City') |h %> % } > <% include('/elements/city.html', %select_hash, 'text_style' => \@style ) %> <<%$th%> ALIGN="right" WIDTH="1" ID="<%$pre%>countylabel" <%$county_style%>><%$r%>County> <% include('/elements/select-county.html', %select_hash ) %> <<%$th%> ALIGN="right" WIDTH="1"><%$r%><% mt('State') |h %>> <% include('/elements/select-state.html', %select_hash ) %> <<%$th%> ALIGN="right" WIDTH="1"><%$r%><% mt('Zip') |h %>> <% $style %> > <<%$th%> ALIGN="right"><%$r%><% mt('Country') |h %>> <% include('/elements/select-country.html', %select_hash ) %> % if ( $opt{enable_coords} ) { <% mt('Latitude') |h %> <% $style %> > <% mt('Longitude') |h %> <% $style %> > % } else { % foreach (qw(latitude longitude)) { <& hidden.html, field => $pre.$_, value => $object->get($_) &> % } % } % % foreach (qw(coord_auto geocode censustract censusyear)) { <& hidden.html, field => $pre.$_, value => $object->get($_) &> % } % % if ( $opt{enable_censustract} ) { Census tract <% '(automatic)' %> % } % if ( $opt{enable_district} and $conf->config('tax_district_method') ) { Tax district <% '(automatic)' %> % } else { <& hidden.html, field => $pre.'district', value => $object->get('district') &> % } %# For address standardization: %# keep a clean copy of the address so we know if we need %# to re-standardize % foreach (qw(locationname address1 city state country zip latitude % longitude censustract district addr_clean % ) ) { <& hidden.html, field => 'old_'.$pre.$_, value => $object->get($_) &> % } %# Placeholders <& hidden.html, field => $pre.'cachenum', value => '' &> <& hidden.html, field => $pre.'addr_clean', value => '' &> <%init> my %opt = @_; my $pre = $opt{'prefix'}; my $object = $opt{'object'}; my $onchange = $opt{'onchange'}; my $disabled = $opt{'disabled'}; my $r = $opt{'no_asterisks'} ? '' : qq!* !; my $conf = new FS::Conf; my $countrydefault = $conf->config('countrydefault') || 'US'; my $statedefault = $conf->config('statedefault') || ($countrydefault eq 'US' ? 'CA' : ''); my $label_prefix = $conf->config('cust_location-label_prefix'); $object ||= FS::cust_location->new({ 'country' => $countrydefault, 'state' => $statedefault, }); my $alt_err = ($opt{'alt_format'} && !$disabled) ? $object->alternize : ''; my @style = (); push @style, 'background-color: #dddddd' if $disabled; my @address2_label_style = (); push @address2_label_style, 'visibility:hidden' if $disabled || ! $conf->exists('cust_main-require_address2') || ( !$pre && !$opt{'same_checked'} ); my @counties = counties( $object->get('state'), $object->get('country'), ); my @county_style = (); push @county_style, 'display:none' # 'visibility:hidden' unless scalar(@counties) > 1; my $style = scalar(@style) ? 'STYLE="'. join(';', @style). '"' : ''; my $address2_label_style = scalar(@address2_label_style) ? 'STYLE="'. join(';', @address2_label_style). '"' : ''; my $county_style = scalar(@county_style) ? 'STYLE="'. join(';', @county_style). '"' : ''; my %select_hash = ( 'city' => $object->get('city'), 'county' => $object->get('county'), 'state' => $object->get('state'), 'country' => $object->get('country'), 'prefix' => $pre, 'onchange' => $onchange, 'disabled' => $disabled, #'style' => \@style, ); my $th = $opt{'no_bold'} ? 'TD' : 'TH'; my @location_kind_options = ( '', 'R', 'B' ); my $location_kind_labels = { '' => '', 'R' => 'Residential', 'B' => 'Business' };