X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fcust_main.cgi;h=cf32324f08f27993de34fb0ceb1afa9a72fb736e;hp=399431311e73bfb64d178540d8226bd9a91f88db;hb=0a82a991ededecdc099a6a169b41a4d952a53f3b;hpb=9b4209f91ad9e3c4cef7deebfb0180f6faf1d0dc diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi index 399431311..cf32324f0 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -1,8 +1,4 @@ -<& /elements/header.html, - $title, - '', - ' onUnload="myclose()"' #hmm, in billing.html -&> +<& /elements/header.html, $title, &> <& /elements/error.html &> @@ -17,137 +13,110 @@ % if ( $custnum ) { <% mt('Customer #') |h %><% $cust_main->display_custnum %> - - <% ucfirst($cust_main->status) %> + <% $cust_main->status_label %>

% } %# agent, agent_custid, refnum (advertising source), referral_custnum -<& cust_main/top_misc.html, $cust_main, 'custnum' => $custnum &> +%# better section title for this? +<% mt('Basics') |h %> +<& cust_main/basics.html, $cust_main, 'custnum' => $custnum &> %# birthdate -% if ( $conf->exists('cust_main-enable_birthdate') ) { +% if ( $conf->config('national_id-country') +% || $conf->exists('cust_main-enable_birthdate') +% || $conf->exists('cust_main-enable_anniversary_date') +% ) +% {
<& cust_main/birthdate.html, $cust_main &> % } - -%# 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'; -% push @ship_style, 'background-color:#dddddd'; -% foreach ( -% qw( last first company address1 address2 city county state zip country -% latitude longitude coord_auto -% daytime night fax mobile ) -% ) { -% $cust_main->set("ship_$_", $cust_main->get($_) ); -% } -% } - +% my $has_ship_address = ''; +% if ( $cgi->param('error') ) { +% $has_ship_address = !$same; +% } elsif ( $cust_main->custnum ) { +% $has_ship_address = $cust_main->has_ship_address; +% }
-<% mt('Billing address') |h %> - -<& cust_main/contact.html, - 'cust_main' => $cust_main, - 'pre' => '', - 'onchange' => 'bill_changed(this)', - 'disabled' => '', - 'ss' => $ss, - 'stateid' => $stateid, - 'same_checked' => $same_checked, #for address2 "Unit #" labeling -&> - - -
-<% mt('Service address') |h %> - -><% mt('same as billing address') |h %> -<& cust_main/contact.html, - 'cust_main' => $cust_main, - 'pre' => 'ship_', - 'onchange' => '', - 'disabled' => $ship_disabled, - 'style' => \@ship_style -&> +% if ( ! $has_ship_address ) { + $('#div_ship_location').hide(); +% } -<& 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, &> -
% my $ro_comments = $conf->exists('cust_main-use_comments')?'':'readonly'; % if (!$ro_comments || $cust_main->comments) { @@ -189,18 +158,6 @@ function samechanged(what) { -%# cust_main/bottomfixup.js -% foreach my $hidden ( -% 'payauto', 'billday', -% 'payinfo', 'payinfo1', 'payinfo2', 'payinfo3', 'paytype', -% 'payname', 'paystate', 'exp_month', 'exp_year', 'paycvv', -% 'paystart_month', 'paystart_year', 'payissue', -% 'payip', -% 'paid', -% ) { - -% } - <& cust_main/bottomfixup.html, 'custnum' => $custnum &>
@@ -228,32 +185,64 @@ my $conf = new FS::Conf; #get record -my($custnum, $cust_main, $ss, $stateid, $payinfo, @invoicing_list); -my $same = ''; +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 = (); my %svc_dsl = (); my $prospectnum = ''; my $locationnum = ''; +my $same = ''; + +$m->comp('/elements/handle_uri_query', 'secure'=>1); if ( $cgi->param('error') ) { + $same = ($cgi->param('same') || '') eq 'Y'; + # false laziness w/ edit/process/cust_main.cgi + my %locations; + for my $pre (qw(bill ship)) { + my %hash; + 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}; + } + $cust_main = new FS::cust_main ( { - map { $_, scalar($cgi->param($_)) } fields('cust_main') + map { ( $_, scalar($cgi->param($_)) ) } (fields('cust_main')), + map { ( "ship_$_", '' ) } (FS::cust_main->location_fields) } ); + for my $pre (qw(bill ship)) { + $cust_main->set($pre.'_location', $locations{$pre}); + $cust_main->set($pre.'_locationnum', $locations{$pre}->locationnum); + } + $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'); + $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') ); $prospectnum = $cgi->param('prospectnum') || ''; @@ -288,7 +277,8 @@ if ( $cgi->param('error') ) { my( $query ) = $cgi->keywords; $query =~ /^(\d+)$/; $custnum=$1; - $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ); + $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ) + or die "custnum $custnum not found"; if ( $cust_main->dbdef_table->column('paycvv') && length($cust_main->paycvv) ) { my $paycvv = $cust_main->paycvv; @@ -298,7 +288,6 @@ if ( $cgi->param('error') ) { @invoicing_list = $cust_main->invoicing_list; $ss = $cust_main->masked('ss'); $stateid = $cust_main->masked('stateid'); - $payinfo = $cust_main->paymask; } else { #new customer @@ -307,16 +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->otaker( &getotaker ); - $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 = ''; if ( $cgi->param('qualnum') =~ /^(\d+)$/ ) { my $qualnum = $1; @@ -331,8 +322,8 @@ if ( $cgi->param('error') ) { $cust_main->company( $prospect_main->company ); #first contact? -> name - my @contacts = $prospect_main->contact; - my $contact = $contacts[0]; + my @prospect_contacts = $prospect_main->prospect_contact; + my $contact = $prospect_contacts[0]->contact; $cust_main->first( $contact->first ); $cust_main->set( 'last', $contact->get('last') ); #contact phone numbers? @@ -352,6 +343,24 @@ if ( $cgi->param('error') ) { $svc_dsl{$_} = $qual->$_ foreach qw( phonenum vendor_qual_id ); } + else { + my $countrydefault = $conf->config('countrydefault') || 'US'; + my $statedefault = $conf->config('statedefault') || 'CA'; + $cust_main->set('bill_location', + FS::cust_location->new( { + country => $countrydefault, + state => $statedefault, + coord_auto => 'Y', + } ) + ); + $cust_main->set('ship_location', + FS::cust_location->new( { + country => $countrydefault, + state => $statedefault, + coord_auto => 'Y', + } ) + ); + } if ( $cgi->param('lock_pkgpart') =~ /^(\d+)$/ ) { my $pkgpart = $1; @@ -363,9 +372,6 @@ if ( $cgi->param('error') ) { } -my %keep = map { $_=>1 } qw( error tagnum lock_agentnum lock_pkgpart ); -$cgi->delete( grep !$keep{$_}, $cgi->param ); - my $title = $custnum ? 'Edit Customer' : 'Add Customer'; $title = mt($title); $title .= ": ". $cust_main->name if $custnum;