cust_location editing features, RT#10766
[freeside.git] / httemplate / elements / tr-select-cust_location.html
index f2b267a..fa19405 100644 (file)
@@ -25,18 +25,26 @@ Example:
 
   function locationnum_changed(what) {
     var locationnum = what.options[what.selectedIndex].value;
+    if ( locationnum == -2 ) {
+%         for (@location_fields, 'city_select') { 
+            what.form.<%$_%>.disabled = true;
+           var ftype = what.form.<%$_%>.tagName;
+           if( ftype == 'SELECT') changeSelect(what.form.<%$_%>, '');
+           else what.form.<%$_%>.value = '';
+            what.form.<%$_%>.style.backgroundColor = '#dddddd';
+%         } 
+       return;
+    }
+    
     if ( locationnum == -1 ) {
 
 %     for (@location_fields, 'city_select') { 
         what.form.<%$_%>.disabled = false;
         what.form.<%$_%>.style.backgroundColor = '#ffffff';
+       var ftype = what.form.<%$_%>.tagName;
+       if( ftype == 'INPUT' ) what.form.<%$_%>.value = '';
 %     } 
 
-      what.form.address1.value = '';
-      what.form.address2.value = '';
-      what.form.city.value = '';
-      what.form.zip.value = '';
-
       changeSelect(what.form.country, <% $countrydefault |js_string %>);
 
       country_changed( what.form.country,
@@ -147,10 +155,14 @@ Example:
   <TD COLSPAN=7>
     <SELECT NAME="locationnum" onChange="locationnum_changed(this);">
       <OPTION VALUE=""><% $opt{'empty_label'} || '(default service address)' |h %>
+% if ( $opt{'is_optional'} ) {
+    <OPTION VALUE="-2" <% $locationnum == -2 ? 'SELECTED' : ''%>><% $opt{'optional_label'} || '(not required)' |h %>
+% }
 %     my @locations = $cust_main ? $cust_main->cust_location : ();
 %     push @locations, $cust_location
 %       if !$cust_main && $cust_location && $cust_location->locationnum>0;
 %     foreach my $loc ( sort $location_sort @locations ) {
+%       next if $loc->disabled;
         <OPTION VALUE="<% $loc->locationnum %>"
                 <% $locationnum == $loc->locationnum ? 'SELECTED' : '' %>
         ><% $loc->line |h %>
@@ -170,14 +182,10 @@ Example:
              'disabled'     => $disabled,
              'no_asterisks' => 1,
              'no_bold'      => $opt{'no_bold'},
+            'alt_format'   => $opt{'alt_format'},
           )
 %>
 
-<%once>
-
-my @location_fields = qw( address1 address2 city county state zip country );
-
-</%once>
 <%init>
 
 my $conf = new FS::Conf;
@@ -206,8 +214,13 @@ if ( length($opt{'curr_value'}) ) {
 my $editable = $cust_main ? 0 : 1; #could use explicit control
 my $addnew = $cust_main ? 1 : ( $locationnum>0 ? 0 : 1 );
 
+my @location_fields = qw( address1 address2 city county state zip country );
+if ( $opt{'alt_format'} ) {
+    push @location_fields, qw( location_type location_number location_kind );
+}
+
 my $cust_location;
-if ( $locationnum && $locationnum != -1 ) {
+if ( $locationnum && $locationnum > 0 ) {
   $cust_location = qsearchs('cust_location', { 'locationnum' => $locationnum } )
     or die "unknown locationnum";
 } else {
@@ -230,7 +243,7 @@ my $location_sort = sub {
   or lc($a->address2) cmp lc($b->address2)
 };
 
-my $disabled = ( $locationnum == -1 || ($editable && $locationnum) )
+my $disabled = ( $locationnum < 0 || ($editable && $locationnum) )
                  ? ''
                  : 'DISABLED';