RT# 75817 - fixed issue with contact edit on edit customer page
[freeside.git] / httemplate / edit / cust_main.cgi
index 2908848..706435a 100755 (executable)
@@ -30,7 +30,6 @@
 %# birthdate
 % if (    $conf->config('national_id-country')
 %      || $conf->exists('cust_main-enable_birthdate')
-%      || $conf->exists('cust_main-enable_spouse_birthdate')
 %      || $conf->exists('cust_main-enable_anniversary_date')
 %    )
 % {
@@ -53,6 +52,8 @@
     <& /elements/location.html,
         object => $cust_main->bill_location,
         prefix => 'bill_',
+        enable_censustract => 1,
+        enable_district => 1,
         enable_coords => 1,
     &>
     <& cust_main/after_bill_location.html, $cust_main &>
@@ -73,6 +74,7 @@
     ><% mt('same as billing address') |h %>
     <DIV CLASS="fsinnerbox">
       <TABLE ID="table_ship_location" WIDTH="100%">
+      <& cust_main/before_ship_location.html, $cust_main &>
       <& /elements/location.html,
           object => $cust_main->ship_location,
           prefix => 'ship_',
           enable_district => 1,
           enable_coords => 1,
       &>
+% unless ($conf->exists('invoice-ship_address')) { #it's always on, so hide per-cust config
+        <TR>
+          <TD COLSPAN="8">
+            <% include('/elements/checkbox.html',
+                 'field'      => 'invoice_ship_address',
+                 'value'      => 'Y',
+                 'curr_value' => $cust_main->invoice_ship_address,
+                 'postfix'    => emt('Include service address on invoices'),
+            ) %>
+          </TD>
+        </TR>
+% }
       </TABLE>
     </DIV>
   </TD>
@@ -98,14 +112,12 @@ function samechanged(what) {
     t1.style.visibility = 'visible'
   }
 }
-//samechanged(document.getElementById('same'));
+samechanged(document.getElementById('same'));
 </SCRIPT>
 
 <BR>
 
-<& cust_main/contacts_new.html,
-             'cust_main' => $cust_main,
-&>
+<& cust_main/contacts_new.html, 'cust_main'=>$cust_main, 'submit_id'=>'submitButton', &>
 
 %# billing info
 <& cust_main/billing.html, $cust_main,
@@ -202,6 +214,7 @@ my $prospectnum = '';
 my $locationnum = '';
 my $same = '';
 
+$m->comp('/elements/handle_uri_query', 'secure'=>1);
 
 if ( $cgi->param('error') ) {
 
@@ -210,12 +223,19 @@ if ( $cgi->param('error') ) {
   my %locations;
   for my $pre (qw(bill ship)) {
     my %hash;
-    foreach ( FS::cust_main->location_fields ) {
-      $hash{$_} = scalar($cgi->param($pre.'_'.$_));
+    foreach my $locfield ( FS::cust_main->location_fields ) {
+      # don't search on lat/long, string values can cause qsearchs to die
+      next if grep {$_ eq $locfield} qw(latitude longitude);
+      $hash{$locfield} = scalar($cgi->param($pre.'_'.$locfield));
     }
     $hash{'custnum'} = $cgi->param('custnum');
     $locations{$pre} = qsearchs('cust_location', \%hash)
                        || FS::cust_location->new( \%hash );
+    # now set lat/long, for redisplay of entered values
+    foreach my $locfield ( qw(latitude longitude) ) {
+      my $locvalue = scalar($cgi->param($pre.'_'.$locfield));
+      $locations{$pre}->set($locfield,$locvalue);
+    }
   }
   if ( $same ) {
     $locations{ship} = $locations{bill};
@@ -237,7 +257,8 @@ if ( $cgi->param('error') ) {
     unless $curuser->access_right($custnum ? 'Edit customer' : 'New customer');
 
   @invoicing_list = split( /\s*,\s*/, $cgi->param('invoicing_list') );
-  $cust_main->setfield('paid' => $cgi->param('paid')) if $cgi->param('paid');
+  $cust_main->setfield( 'paid' => scalar($cgi->param('paid')) )
+    if $cgi->param('paid');
   $ss = $cust_main->ss;           # don't mask an entered value on errors
   $stateid = $cust_main->stateid; # don't mask an entered value on errors
   $payinfo = $cust_main->payinfo; # don't mask an entered value on errors
@@ -297,8 +318,13 @@ if ( $cgi->param('error') ) {
 
   $custnum='';
   $cust_main = new FS::cust_main ( {} );
+
+  my @agentnums = $curuser->agentnums;
+  $cust_main->agentnum( $agentnums[0] )
+    if scalar(@agentnums) == 1;
   $cust_main->agentnum( $conf->config('default_agentnum') )
     if $conf->exists('default_agentnum');
+
   $cust_main->otaker( &getotaker );
   $cust_main->referral_custnum( $cgi->param('referral_custnum') );
   @invoicing_list = ();
@@ -374,7 +400,8 @@ if ( $cgi->param('error') ) {
 }
 
 my %keep = map { $_=>1 } qw( error tagnum lock_agentnum lock_pkgpart );
-$cgi->delete( grep { !$keep{$_} && $_ !~ /^tax_/ } $cgi->param );
+#$cgi->delete( grep { !$keep{$_} && $_ !~ /^tax_/ } $cgi->param );
+$cgi->delete( grep { !$keep{$_} && $_ !~ /^tax_/ && $_ !~ /^contactnum/ } $cgi->param );
 
 my $title = $custnum ? 'Edit Customer' : 'Add Customer';
 $title = mt($title);