fix interaction of agent choice, agent-ship_address, and "same" checkbox, #21327...
[freeside.git] / httemplate / edit / cust_main / basics.html
index e484c73..e16aafa 100644 (file)
@@ -56,6 +56,7 @@
 %   # unlock/lock service location
 
     var f = what.form;
+    var was_same = f['same'].checked;
     if ( ship_locked_agents[agentnum] ) {
 %     # For this agent, the service location (except address2)
 %     # should be locked to the agent's location.
 %     # disabled, then they contain some agent's address, which is 
 %     # no longer meaningful.  So set them back to the customer's 
 %     # current location.
+      var is_same = true;
       for(var i=0; i<ship_fields.length; i++) {
         x = ship_fields[i];
         if ( f['ship_'+x].disabled )  {
           f['ship_'+x].value  = f['old_ship_'+x].value;
         }
         f['ship_'+x].disabled = false;
+        if ( f['bill_'+x].value != f['ship_'+x].value ) {
+          is_same = false;
+        }
       }
+%     # if the customer's current location has the same bill and ship 
+%     # address, then check the box
+      f['same'].checked = is_same;
       f['same'].disabled = false;
     }
-    samechanged(f['same']);
+    if (f['same'].checked != was_same) {
+      samechanged(f['same']);
+    }
 
 %   # update sales dropdown
     salesnum_agentnum_changed(what);
   <&| /elements/onload.js &>
   rescom_changed(document.getElementById('residential_commercial_Residential'));
   agent_changed(document.getElementById('agentnum'));
-  samechanged(document.getElementById('same'));
+
+  if ( $('#same').prop('checked') ) {
+    $('#div_ship_location').hide();
+  } else {
+    $('#div_ship_location').show();
+  }
+
   </&>
  
 </SCRIPT>