communigate (phase 2): rules. RT#7514
[freeside.git] / httemplate / edit / cust_main.cgi
index 7308c72..fac7ef2 100755 (executable)
   <% include('cust_main/birthdate.html', $cust_main) %>
 % }
 
+%# latitude and longitude
+% if ( $conf->exists('cust_main-require_censustract') ) {
+%   my ($latitude, $longitude) = $cust_main->service_coordinates;
+%   $latitude ||= $conf->config('company_latitude') || '';
+%   $longitude ||= $conf->config('company_longitude') || '';
+  <INPUT NAME="latitude" TYPE="hidden" VALUE="<% $latitude |h %>">
+  <INPUT NAME="longitude" TYPE="hidden" VALUE="<% $longitude |h %>">
+% }
+
 %# contact info
 
 %  my $same_checked = '';
 %  my $ship_disabled = '';
+%  my @ship_style = ();
 %  unless ( $cust_main->ship_last && $same ne 'Y' ) {
 %    $same_checked = 'CHECKED';
-%    $ship_disabled = 'DISABLED STYLE="background-color: #dddddd"';
+%    $ship_disabled = 'DISABLED';
+%    push @ship_style, 'background-color:#dddddd';
 %    foreach (
 %      qw( last first company address1 address2 city county state zip country
 %          daytime night fax )
@@ -47,7 +58,7 @@
 %    }
 %  }
 
-<BR><BR>
+<BR>
 <FONT SIZE="+1"><B>Billing address</B></FONT>
 
 <% include('cust_main/contact.html',
 function bill_changed(what) {
   if ( what.form.same.checked ) {
 % for (qw( last first company address1 address2 city zip daytime night fax )) { 
-
     what.form.ship_<%$_%>.value = what.form.<%$_%>.value;
 % } 
 
     what.form.ship_country.selectedIndex = what.form.country.selectedIndex;
 
+    function fix_ship_city() {
+      what.form.ship_city_select.selectedIndex = what.form.city_select.selectedIndex;
+      what.form.ship_city.style.display = what.form.city.style.display;
+      what.form.ship_city_select.style.display = what.form.city_select.style.display;
+    }
+
     function fix_ship_county() {
       what.form.ship_county.selectedIndex = what.form.county.selectedIndex;
+      ship_county_changed(what.form.ship_county, fix_ship_city );
     }
 
     function fix_ship_state() {
@@ -88,7 +105,8 @@ function samechanged(what) {
   if ( what.checked ) {
     bill_changed(what);
 
-%   for (qw( last first company address1 address2 city county state zip country daytime night fax )) { 
+%   my @fields = qw( last first company address1 address2 city city_select county state zip country daytime night fax );
+%   for (@fields) { 
       what.form.ship_<%$_%>.disabled = true;
       what.form.ship_<%$_%>.style.backgroundColor = '#dddddd';
 %   } 
@@ -102,7 +120,7 @@ function samechanged(what) {
 
   } else {
 
-%   for (qw( last first company address1 address2 city county state zip country daytime night fax )) { 
+%   for (@fields) { 
       what.form.ship_<%$_%>.disabled = false;
       what.form.ship_<%$_%>.style.backgroundColor = '#ffffff';
 %   } 
@@ -127,6 +145,7 @@ function samechanged(what) {
              'pre'       => 'ship_',
              'onchange'  => '',
              'disabled'  => $ship_disabled,
+             'style'     => \@ship_style
           )
 %>
 
@@ -173,6 +192,7 @@ function samechanged(what) {
 
 <INPUT TYPE="hidden" NAME="otaker" VALUE="<% $cust_main->otaker %>">
 
+%# cust_main/bottomfixup.js
 % foreach my $hidden (
 %    'payauto',
 %    'payinfo', 'payinfo1', 'payinfo2', 'paytype',
@@ -199,8 +219,12 @@ function samechanged(what) {
 
 <%init>
 
+my $curuser = $FS::CurrentUser::CurrentUser;
+
+#probably redundant given the checks below...
 die "access denied"
-  unless $FS::CurrentUser::CurrentUser->access_right('Edit customer');
+  unless $curuser->access_right('New customer')
+     ||  $curuser->access_right('Edit customer');
 
 my $conf = new FS::Conf;
 
@@ -219,6 +243,10 @@ if ( $cgi->param('error') ) {
   } );
 
   $custnum = $cust_main->custnum;
+
+  die "access denied"
+    unless $curuser->access_right($custnum ? 'Edit customer' : 'New customer');
+
   @invoicing_list = split( /\s*,\s*/, $cgi->param('invoicing_list') );
   $same = $cgi->param('same');
   $cust_main->setfield('paid' => $cgi->param('paid')) if $cgi->param('paid');
@@ -245,6 +273,9 @@ if ( $cgi->param('error') ) {
 
 } elsif ( $cgi->keywords ) { #editing
 
+  die "access denied"
+    unless $curuser->access_right('Edit customer');
+
   my( $query ) = $cgi->keywords;
   $query =~ /^(\d+)$/;
   $custnum=$1;
@@ -262,6 +293,9 @@ if ( $cgi->param('error') ) {
 
 } else { #new customer
 
+  die "access denied"
+    unless $curuser->access_right('New customer');
+
   $custnum='';
   $cust_main = new FS::cust_main ( {} );
   $cust_main->otaker( &getotaker );