Optimize "Customer has a referring customer" condition, RT#74452
[freeside.git] / httemplate / edit / prospect_main.html
index da5c6ce..6adb471 100644 (file)
@@ -1,41 +1,46 @@
 <% include('elements/edit.html',
      'name_singular'   => 'prospect',
      'table'           => 'prospect_main',
+     'html_table_class'=> 'fsinnerbox',
      'labels'          => { 'prospectnum' => 'Prospect',
                             'agentnum'    => 'Agent',
                             'refnum'      => 'Advertising source',
                             'company'     => 'Company',
                             'contactnum'  => 'Contact',
                             'locationnum' => '&nbsp;',
+                            'taxstatusnum'=> 'Tax status',
                           },
      'fields'          => [
+       { 'field'    => 'residential_commercial',
+         'type'     => 'radio',
+         'options'  => [ 'Residential', 'Commercial', ],
+         'onchange' => 'rescom_changed',
+       },
        { 'field'       => 'agentnum',
          'type'        => 'select-agent',
          'empty_label' => 'Select agent',
-         'colspan'     => 6,
+         'colspan'     => 7,
        },
        { 'field'       => 'refnum',
          'type'        => 'select-part_referral',
          'empty_label' => 'Select advertising source',
-         'colspan'     => 6,
-       },
-       { 'field'    => 'residential_commercial',
-         'type'     => 'radio',
-         'options'  => [ 'Residential', 'Commercial', ],
-         'onchange' => 'rescom_changed',
+         'colspan'     => 7,
        },
        { 'field'    => 'company',
          'type'     => 'text',
          'size'     => 50,
-         'colspan'  => 6,
+         'colspan'  => 7,
        },
-       { 'field'             => 'contactnum',
-         'type'              => 'contact',
-         'colspan'           => 6,
-         'o2m_table'      => 'contact',
-         'm2_label'       => 'Contact',
-         'm2_error_callback' => $m2_error_callback,
-
+       { 'field'                => 'contactnum',
+         'type'                 => 'contact',
+         'colspan'              => 7,
+         'prospectnum'          => $prospectnum,
+         'm2m_method'           => 'prospect_contact',
+         'm2m_dstcol'           => 'contactnum',
+         'm2_label'             => 'Contact',
+         'm2_error_callback'    => $m2_error_callback,
+         'include_opt_callback' => sub { 'for_prospect' => 1 },
+         'js_spawn_test'        => 'document.edit_topform.residential_commercial_Commercial.checked',
        },
        { 'field'         => 'locationnum',
          'type'          => 'select-cust_location',
             'prospect_main' => shift
           },
        },
+       { 'field'    => 'taxstatusnum',
+         'type'     => 'select-tax_status',
+         'required' => 1,
+         'empty_label'   => ' ',
+       },
      ],
      'new_callback'    => $new_callback,
      'edit_callback'   => $edit_callback,
@@ -62,18 +72,25 @@ my $conf = new FS::Conf;
 
 my $prospectnum;
 if ( $cgi->param('error') ) {
-  $prospectnum = scalar($cgi->param('prospectnum'));
+  $cgi->param('prospectnum') =~ /^(\d*)$/ or die 'illegal prospectnum';
+  $prospectnum = $1;
 
   die "access denied"
     unless $curuser->access_right(($prospectnum ? 'Edit' : 'New'). ' prospect');
 
 } elsif ( $cgi->keywords ) { #editing
 
+  my($query) = $cgi->keywords;
+  $query =~ /^(\d+)$/ or die 'no prospectnum';
+  $prospectnum = $1;
+
   die "access denied"
     unless $curuser->access_right('Edit prospect');
 
 } else { #new prospect 
 
+  $prospectnum = '';
+
   die "access denied"
     unless $curuser->access_right('New prospect');
 
@@ -186,20 +203,20 @@ my $m2_error_callback = sub {
 
 #my @agentnums = $FS::CurrentUser::CurrentUser->agentnums;
 
-my $javascript = <<END;
+my $javascript = q|
   <SCRIPT TYPE="text/javascript">
     function rescom_changed() {
+
       var f = document.edit_topform;
-      var c = f.company;
       if        ( f.residential_commercial_Residential.checked ) {
-        c.disabled = true;
-        c.style.backgroundColor = '#dddddd';
+        $('#company_label').slideUp();
+        $('#company_input0').slideUp();
       } else if ( f.residential_commercial_Commercial.checked ) {
-        c.disabled = false;
-        c.style.backgroundColor = '#ffffff';
+        $('#company_label').slideDown();
+        $('#company_input0').slideDown();
       }
     }
   </SCRIPT>
-END
+|;
 
 </%init>