X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fcust_main%2Ftop_misc.html;h=c19f347c3297b6cb32372002b148210bdc669c33;hb=622c72770c971ae44d37dfb59a0f25972051a25a;hp=cfed8e4f61bc7c3a1770bf8d5214072fcc451516;hpb=3d18177c158acc492e9322677b11c8089df0fbc0;p=freeside.git diff --git a/httemplate/edit/cust_main/top_misc.html b/httemplate/edit/cust_main/top_misc.html index cfed8e4f6..c19f347c3 100644 --- a/httemplate/edit/cust_main/top_misc.html +++ b/httemplate/edit/cust_main/top_misc.html @@ -20,18 +20,73 @@ <% $cust_main->residential_commercial eq 'Commercial' ? 'CHECKED' : '' %> ></TD> </TR> + <SCRIPT TYPE="text/javascript"> + function rescom_changed(what) { if ( what.checked == (what.value == 'Commercial' ) ) { document.getElementById('company_row').style.display = ''; document.getElementById('contacts_div').style.display = ''; + document.getElementById('spouse_row').style.display = 'none'; } else { if ( document.getElementById('company').value.length == 0 ) { document.getElementById('company_row').style.display = 'none'; } document.getElementById('contacts_div').style.display = 'none'; + document.getElementById('spouse_row').style.display = ''; + } + } + + + var ship_locked_agents = <% encode_json(\%ship_locked_agents) %>; + var ship_fields = [ + 'locationname', 'address1',<% $conf->exists('cust_main-no_city_in_address') ? '' : q( 'city',) %> 'state', 'zip', 'country', + 'latitude', 'longitude', 'district' + ]; + + function agent_changed(what) { + var agentnum = what.value; + +% # unlock/lock service location + + var f = what.form; + if ( ship_locked_agents[agentnum] ) { +% # For this agent, the service location (except address2) +% # should be locked to the agent's location. +% # Set the ship_ fields to those values (just for display) and +% # then disable them. + for(var x in ship_locked_agents[agentnum]) { + f['ship_'+x].value = ship_locked_agents[agentnum][x]; + f['ship_'+x].disabled = true; + } + f['same'].checked = false; + f['same'].disabled = true; + } else { +% # Unlock the ship_ location fields. If they were previously +% # disabled, then they contain some agent's address, which is +% # no longer meaningful. So set them back to the customer's +% # current location. + 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; + } + f['same'].disabled = false; } + 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')) + </&> + </SCRIPT> % foreach my $field ($cust_main->virtual_fields) { @@ -51,12 +106,13 @@ % $cust_main->agentnum($agentnum); <INPUT TYPE="hidden" NAME="lock_agentnum" VALUE="<% $agentnum %>"> - <INPUT TYPE="hidden" NAME="agentnum" VALUE="<% $agentnum %>"> + <INPUT TYPE="hidden" NAME="agentnum" ID="agentnum" + VALUE="<% $agentnum %>"> <TR> <TD ALIGN="right"><% mt('Agent') |h %></TD> <TD CLASS="fsdisabled"><% $cust_main->agent->agent |h %></TD> </TR> - + % } else { <& /elements/tr-select-agent.html, @@ -65,6 +121,7 @@ 'empty_label' => emt('Select agent'), 'disable_empty' => ( $cust_main->agentnum ? 1 : 0 ), 'viewall_right' => emt('None'), + 'onchange' => 'agent_changed(this)', &> % } @@ -89,6 +146,11 @@ 'label' => emt("Class"), &> +%#sales person +<& /elements/tr-select-sales.html, + 'curr_value' => $cust_main->salesnum, +&> + %# referral (advertising source) %my $refnum = $cust_main->refnum || $conf->config('referraldefault') || 0; %if ( $custnum && ! $conf->exists('editreferrals') ) { @@ -97,9 +159,10 @@ % } else { - <& /elements/tr-select-part_referral.html, - 'curr_value' => $refnum - &> + <& /elements/tr-select-part_referral.html, + 'curr_value' => $refnum, + 'label' => "<B>${r}".emt('Advertising source')."</B>" + &> % } @@ -178,6 +241,8 @@ my( $cust_main, %opt ) = @_; my $custnum = $opt{'custnum'}; +my $conf = new FS::Conf; + if ( $cgi->param('error') ) { $cust_main->set('residential_commercial', ($cgi->param('residential_commercial') eq 'Commercial') @@ -191,14 +256,31 @@ if ( $cgi->param('error') ) { : 'Residential' ); } else { #new customer - #config to default to commercial and/or disable residential when someone needs - $cust_main->set('residential_commercial', 'Residential'); + $cust_main->set('residential_commercial', + $conf->exists('cust_main-default_commercial') + ? 'Commercial' + : 'Residential' + ); } -my $conf = new FS::Conf; - my $curuser = $FS::CurrentUser::CurrentUser; my $r = qq!<font color="#ff0000">*</font> !; +# which agents lock the service address, if any +my %ship_locked_agents; +foreach (qsearch('agent',{})) { + my $agentnum = $_->agentnum; + next unless $conf->exists('agent-ship_address', $_->agentnum); + my $cust_main = $_->agent_cust_main or next; + my $agent_ship_location = $cust_main->ship_location; + $ship_locked_agents{$agentnum} = +{ + map { $_ => $agent_ship_location->$_ } + ( + qw(locationname address1 state zip country latitude longitude district), + ($conf->exists('cust_main-no_city_in_address') ? () : 'city') + ) + }; +} + </%init>