CGI::param called in list context
[freeside.git] / httemplate / edit / cust_main.cgi
index f99cce2..cf32324 100755 (executable)
@@ -40,7 +40,7 @@
 % }
 <BR>
 <TABLE> <TR>
-  <TD STYLE="width:650px">
+  <TD>
 %#; padding-right:2px; vertical-align:top">
     <FONT CLASS="fsinnerbox-title"><% mt('Billing address') |h %></FONT>
     <TABLE CLASS="fsinnerbox" WIDTH="100%">
@@ -58,7 +58,7 @@
 </TR>
 <TR><TD STYLE="height:14px"></TD></TR>
 <TR>
-  <TD STYLE="width:650px">
+  <TD>
     <FONT CLASS="fsinnerbox-title"><% mt('Service address') |h %></FONT>
     <INPUT TYPE="checkbox" 
            NAME="same"
@@ -68,8 +68,8 @@
            VALUE="Y"
            <% $has_ship_address ? '' : 'CHECKED' %>
     ><% mt('same as billing address') |h %>
-    <DIV CLASS="fsinnerbox">
-      <TABLE ID="table_ship_location" WIDTH="100%">
+    <DIV ID="div_ship_location">
+      <TABLE WIDTH="100%" CLASS="fsinnerbox">
       <& cust_main/before_ship_location.html, $cust_main &>
       <& /elements/location.html,
           object => $cust_main->ship_location,
           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>
 </TR></TABLE>
 
-<SCRIPT>
+<SCRIPT TYPE="text/javascript">
+
 function samechanged(what) {
-%# not display = 'none', because we still want it to take up space
-%#  document.getElementById('table_ship_location').style.visibility = 
-%#    what.checked ? 'hidden' : 'visible';
-  var t1 = document.getElementById('table_ship_location');
   if ( what.checked ) {
-    t1.style.visibility = 'hidden';
-  }
-  else {
-    t1.style.visibility = 'visible'
+    $('#div_ship_location').slideUp();
+  } else {
+    $('#div_ship_location').slideDown();
   }
 }
-//samechanged(document.getElementById('same'));
-</SCRIPT>
 
-<BR>
+% if ( ! $has_ship_address ) {
+  $('#div_ship_location').hide();
+% }
+
+</SCRIPT>
 
-<& 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,
-               'payinfo'        => $payinfo,
                'invoicing_list' => \@invoicing_list,
 &>
 
@@ -176,7 +185,7 @@ my $conf = new FS::Conf;
 
 #get record
 
-my($custnum, $cust_main, $ss, $stateid, $payinfo, @invoicing_list);
+my($custnum, $cust_main, $ss, $stateid, @invoicing_list);
 my $pkgpart_svcpart = ''; #first_pkg
 my($username, $password, $popnum, $saved_domsvc) = ( '', '', 0, 0 ); #svc_acct
 my %svc_phone = ();
@@ -194,12 +203,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};
@@ -221,10 +237,10 @@ 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
 
   $cust_main->national_id( $cgi->param('national_id1') || $cgi->param('national_id2') );
 
@@ -270,9 +286,8 @@ if ( $cgi->param('error') ) {
     $cust_main->paycvv($paycvv);
   }
   @invoicing_list = $cust_main->invoicing_list;
-  $ss = $conf->exists('unmask_ss') ? $cust_main->ss : $cust_main->masked('ss');
+  $ss = $cust_main->masked('ss');
   $stateid = $cust_main->masked('stateid');
-  $payinfo = $cust_main->paymask;
 
 } else { #new customer
 
@@ -281,17 +296,18 @@ 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->referral_custnum( $cgi->param('referral_custnum') );
-  @invoicing_list = ();
-  push @invoicing_list, 'POST'
+
+  $cust_main->referral_custnum( scalar($cgi->param('referral_custnum')) );
+  $cust_main->set('postal_invoice', 'Y')
     unless $conf->exists('disablepostalinvoicedefault');
   $ss = '';
   $stateid = '';
-  $payinfo = '';
-
-  $cgi->param('tagnum', FS::part_tag->default_tags);
 
   if ( $cgi->param('qualnum') =~ /^(\d+)$/ ) {
     my $qualnum = $1;