customer bill/ship location refactoring, #940
[freeside.git] / httemplate / elements / tr-select-cust_location.html
index 0ca255b..05712ee 100644 (file)
@@ -11,7 +11,6 @@ Example:
 
             #optional
             'empty_label'   => '(default service address)',
-            'disable_empty' => 0, #1 to disable
          )
 
 </%doc>
@@ -52,11 +51,12 @@ Example:
       var ftype = what.form.<%$_%>.tagName;
       if( ftype != 'SELECT') what.form.<%$_%>.style.backgroundColor = '#ffffff';
 %   } 
-
+%   if ( $opt{'alt_format'} ) {
     if ( what.form.location_type.options[what.form.location_type.selectedIndex].value ) {
       what.form.location_number.disabled = false;
       what.form.location_number.style.backgroundColor = '#ffffff';
     }
+%   }
   }
 
   function locationnum_changed(what) {
@@ -101,25 +101,8 @@ Example:
       return;
     }
 
-    if ( locationnum == 0 ) { //(default service address)
-%     if ( $cust_main ) {
-      what.form.address1.value = <% $cust_main->get($prefix.'address1') |js_string %>;
-      what.form.address2.value = <% $cust_main->get($prefix.'address2') |js_string %>;
-      what.form.city.value = <% $cust_main->get($prefix.'city') |js_string %>;
-      what.form.zip.value = <% $cust_main->get($prefix.'zip') |js_string %>;
-
-      changeSelect(what.form.country, <% $cust_main->get($prefix.'country') | js_string %> );
-
-      country_changed( what.form.country,
-                       fix_state_factory( <% $cust_main->get($prefix.'state') | js_string %>,
-                                          <% $cust_main->get($prefix.'county') | js_string %>
-                                        )
-                     );
-%     }
-
-    } else {
-      get_location( locationnum, update_location );
-    } 
+%# default service address is now just another location
+    get_location( locationnum, update_location );
 
 %   if ( $editable ) {
       if ( locationnum == 0 ) {
@@ -203,14 +186,16 @@ Example:
             ID       = "locationnum"
             onChange = "locationnum_changed(this);"
     >
-% if ( !$prospect_main && !$opt{'disable_empty'} ) {
-      <OPTION VALUE=""><% $opt{'empty_label'} || '(default service address)' |h %>
+% if ( $cust_main ) {
+      <OPTION VALUE="<% $cust_main->ship_locationnum %>"><% $opt{'empty_label'} || '(default service address)' |h %>
 % }
 % if ( $opt{'is_optional'} ) {
     <OPTION VALUE="-2" <% $locationnum == -2 ? 'SELECTED' : ''%>><% $opt{'optional_label'} || '(not required)' |h %>
 % }
 %
 %     foreach my $loc ( @cust_location ) {
+%       # don't show the ship_location redundantly
+%       next if $cust_main && $cust_main->ship_locationnum == $loc->locationnum;
         <OPTION VALUE="<% $loc->locationnum %>"
                 <% $locationnum == $loc->locationnum ? 'SELECTED' : '' %>
         ><% $loc->line |h %>
@@ -233,7 +218,9 @@ Example:
              'alt_format'   => $opt{'alt_format'},
           )
 %>
-
+<SCRIPT TYPE="text/javascript">
+  locationnum_changed(document.getElementById('locationnum'));
+</SCRIPT>
 <%init>
 
 my $conf = new FS::Conf;
@@ -246,8 +233,7 @@ my $cgi           = $opt{'cgi'};
 my $cust_pkg      = $opt{'cust_pkg'};
 my $cust_main     = $opt{'cust_main'};
 my $prospect_main = $opt{'prospect_main'};
-
-my $prefix = ($cust_main && length($cust_main->ship_last)) ? 'ship_' : '';
+die "cust_main or prospect_main required" unless $cust_main or $prospect_main;
 
 my $locationnum = '';
 if ( $cgi->param('error') ) {
@@ -259,9 +245,9 @@ if ( $cgi->param('error') ) {
   } elsif ($prospect_main) {
     my @cust_location = $prospect_main->cust_location;
     $locationnum = $cust_location[0]->locationnum if scalar(@cust_location)==1;
-  } else { #?
+  } else { #$cust_main
     $cgi->param('locationnum') =~ /^(\-?\d*)$/ or die "illegal locationnum";
-    $locationnum = $1;
+    $locationnum = $1 || $cust_main->ship_locationnum;
   }
 }
 
@@ -277,7 +263,7 @@ if ( $opt{'alt_format'} ) {
     push @location_fields, qw( location_type location_number location_kind );
 }
 
-my $cust_location;
+my $cust_location; #the one that shows by default in the location edit space
 if ( $locationnum && $locationnum > 0 ) {
   $cust_location = qsearchs('cust_location', { 'locationnum' => $locationnum } )
     or die "unknown locationnum";
@@ -290,7 +276,7 @@ if ( $locationnum && $locationnum > 0 ) {
     $cust_location->$_( $pkg_location->$_ ) foreach @location_fields;
     $opt{'empty_label'} ||= 'package address: '.$pkg_location->line;
   } elsif ( $cust_main ) {
-    $cust_location->$_( $cust_main->get($prefix.$_) ) foreach @location_fields;
+    $cust_location = $cust_main->ship_location; #I think
   }
 }
 
@@ -311,14 +297,14 @@ push @cust_location, $cust_location
 @cust_location = sort $location_sort grep !$_->disabled, @cust_location;
 
 $cust_location = $cust_location[0]
-  if ( $prospect_main || $opt{'disable_empty'} )
+  if ( $prospect_main )
   && !$opt{'is_optional'}
   && @cust_location;
 
 my $disabled =
   ( $locationnum < 0
     || ( $editable && $locationnum )
-    || ( ( $prospect_main || $opt{'disable_empty'} )
+    || ( $prospect_main
          && !$opt{'is_optional'} && !@cust_location && $addnew
        )
   )