X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fprospect_main.html;h=6aefe80d0cb6d01304d9c668a15cc3c1ae9fcf95;hp=c260eb8e2c6d06098a2ec171fbf109150006d4a6;hb=7e9422a954e8249627c256b53080ee6afeeed913;hpb=7bbe939d139be7edd77378cfc9a2c3ec6287749d diff --git a/httemplate/edit/prospect_main.html b/httemplate/edit/prospect_main.html index c260eb8e2..6aefe80d0 100644 --- a/httemplate/edit/prospect_main.html +++ b/httemplate/edit/prospect_main.html @@ -1,64 +1,95 @@ <% 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' => ' ', + 'taxstatusnum'=> 'Tax status', }, 'fields' => [ { 'field' => 'agentnum', 'type' => 'select-agent', 'empty_label' => 'Select agent', + 'colspan' => 7, }, - { 'field' => 'company', - 'type' => 'text', - 'size' => 50, + { 'field' => 'refnum', + 'type' => 'select-part_referral', + 'empty_label' => 'Select advertising source', + 'colspan' => 7, + }, + { 'field' => 'residential_commercial', + 'type' => 'radio', + 'options' => [ 'Residential', 'Commercial', ], + 'onchange' => 'rescom_changed', + }, + { 'field' => 'company', + 'type' => 'text', + 'size' => 50, + 'colspan' => 7, }, { 'field' => 'contactnum', 'type' => 'contact', - 'colspan' => 6, - ##actually o2m, but this seems to be working for edit so far - #'m2name_table' => 'contact', - #'m2name_namecol' => 'contactnum', - #'m2_label' => 'Contact', - #'m2_error_callback' => $m2_error_callback, - - 'o2m_table' => 'contact', - 'm2_label' => 'Contact', + 'colspan' => 7, + 'prospectnum' => $prospectnum, + 'm2m_method' => 'prospect_contact', + 'm2m_dstcol' => 'contactnum', + 'm2_label' => 'Contact', 'm2_error_callback' => $m2_error_callback, }, - { 'field' => 'locationnum', - 'type' => 'select-cust_location', - 'empty_label' => 'No address', + { 'field' => 'locationnum', + 'type' => 'select-cust_location', + 'empty_label' => 'No address', + 'disable_empty' => $conf->exists('prospect_main-location_required'), + 'alt_format' => $conf->exists('prospect_main-alt_address_format'), + 'include_opt_callback' => sub { + 'prospect_main' => shift + }, + }, + { 'field' => 'taxstatusnum', + 'type' => 'select-tax_status', + 'required' => 1, + 'empty_label' => ' ', }, ], 'new_callback' => $new_callback, 'edit_callback' => $edit_callback, - 'error_callbacck' => $error_callback, + 'error_callback' => $error_callback, 'agent_virt' => 1, + 'html_bottom' => $javascript, + 'body_etc' => 'onLoad="rescom_changed()"', ) %> <%init> my $curuser = $FS::CurrentUser::CurrentUser; +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'); @@ -104,6 +135,9 @@ my $new_callback = sub { } + #config to default to commercial and/or disable residential when someone needs + $prospect_main->set('residential_commercial', 'Residential'); + }; my $edit_callback = sub { @@ -116,6 +150,12 @@ my $edit_callback = sub { $prospect_main->set('locationnum', $cust_location[0]->locationnum) if scalar(@cust_location); #warn 'prospect_main.locationnum '.$prospect_main->get('locationnum'); + + $prospect_main->set('residential_commercial', + length($prospect_main->company) + ? 'Commercial' + : 'Residential' + ); }; my $error_callback = sub { @@ -125,6 +165,13 @@ my $error_callback = sub { or die 'illegal locationnum '. $cgi->param('locationnum'); my $locationnum = $1; $prospect_main->set('locationnum', $locationnum); + + $prospect_main->set('residential_commercial', + ($cgi->param('residential_commercial') eq 'Commercial') + ? 'Commercial' + : 'Residential' + ); + }; my $m2_error_callback = sub { @@ -139,7 +186,7 @@ my $m2_error_callback = sub { my $num = $1; if ( grep $cgi->param("contactnum$num$_"), @gfields ) { my $x = new FS::contact { - 'contactnum' => $cgi->param("contactnum$num"), + 'contactnum' => scalar($cgi->param("contactnum$num")), map { $_ => scalar($cgi->param("contactnum${num}_$_")) } @fields, }; $x; @@ -155,4 +202,20 @@ my $m2_error_callback = sub { #my @agentnums = $FS::CurrentUser::CurrentUser->agentnums; +my $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'; + } else if ( f.residential_commercial_Commercial.checked ) { + c.disabled = false; + c.style.backgroundColor = '#ffffff'; + } + } + +END +