<% include('/elements/header.html', "Customer $action", '', ' onUnload="myclose()"' ) %> <% include('/elements/init_overlib.html') %> <% include('/elements/error.html') %>
% if ( $custnum ) { Customer #<% $cust_main->display_custnum %> - <% ucfirst($cust_main->status) %>

% } <% &ntable("#cccccc") %> %# agent <% include('/elements/tr-select-agent.html', 'curr_value' => $cust_main->agentnum, 'label' => "${r}Agent", 'empty_label' => 'Select agent', 'disable_empty' => ( $cust_main->agentnum ? 1 : 0 ), ) %> %# agent_custid % if ( $conf->exists('cust_main-edit_agent_custid') ) { Customer identifier % } else { % } %# referral (advertising source) %my $refnum = $cust_main->refnum || $conf->config('referraldefault') || 0; %if ( $custnum && ! $conf->exists('editreferrals') ) { % } else { <% include('/elements/tr-select-part_referral.html', 'curr_value' => $refnum ) %> % } %# referring customer %my $referring_cust_main = ''; %if ( $cust_main->referral_custnum % and $referring_cust_main = % qsearchs('cust_main', { custnum => $cust_main->referral_custnum } ) %) { Referring customer <% $cust_main->referral_custnum %>: <% $referring_cust_main->name %> % } elsif ( ! $conf->exists('disable_customer_referrals') ) { Referring customer <% include('/elements/search-cust_main.html', 'field_name' => 'referral_custnum', ) %> % } else { % } % if ( $conf->exists('cust_main-enable_birthdate') ) {
<% ntable("#cccccc", 2) %> <% include ('/elements/tr-input-date-field.html', 'birthdate', $cust_main->birthdate, 'Date of Birth', $conf->config('date_format') || "%m/%d/%Y", 1) %> % } % my $same_checked = ''; % my $ship_disabled = ''; % unless ( $cust_main->ship_last && $same ne 'Y' ) { % $same_checked = 'CHECKED'; % $ship_disabled = 'DISABLED STYLE="background-color: #dddddd"'; % foreach ( % qw( last first company address1 address2 city county state zip country % daytime night fax ) % ) { % $cust_main->set("ship_$_", $cust_main->get($_) ); % } % }

Billing address <% include('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 ) %>
Service address (>same as billing address) <% include('cust_main/contact.html', 'cust_main' => $cust_main, 'pre' => 'ship_', 'onchange' => '', 'disabled' => $ship_disabled, ) %> <% include( 'cust_main/billing.html', $cust_main, 'payinfo' => $payinfo, 'invoicing_list' => \@invoicing_list, ) %> <% include( '/elements/xmlhttp.html', 'url' => $p.'misc/xmlhttp-cust_main-address_standardize.html', 'subs' => [ 'address_standardize' ], #'method' => 'POST', #could get too long? ) %> % foreach my $hidden ( % 'birthdate', % % 'custnum', 'agentnum', 'agent_custid', 'refnum', 'referral_custnum', % 'last', 'first', 'ss', 'company', % 'address1', 'address2', 'city', % 'county', 'state', 'zip', 'country', % 'daytime', 'night', 'fax', % 'stateid', 'stateid_state', % % 'same', % % 'ship_last', 'ship_first', 'ship_company', % 'ship_address1', 'ship_address2', 'ship_city', % 'ship_county', 'ship_state', 'ship_zip', 'ship_country', % 'ship_daytime','ship_night', 'ship_fax', % % 'geocode', % % 'select', #XXX key % % 'payauto', % 'payinfo', 'payinfo1', 'payinfo2', 'paytype', % 'payname', 'paystate', 'exp_month', 'exp_year', 'paycvv', % 'paystart_month', 'paystart_year', 'payissue', % 'payip', % 'paid', % % 'tax', % 'invoicing_list', 'invoicing_list_POST', 'invoicing_list_FAX', % 'invoice_terms', % 'spool_cdr', % 'squelch_cdr' % ) { % % } % % my $ro_comments = $conf->exists('cust_main-use_comments')?'':'readonly'; % if (!$ro_comments || $cust_main->comments) {
Comments <% &ntable("#cccccc") %> % % } % %unless ( $custnum ) { % # pry the wrong place for this logic. also pretty expensive % #use FS::part_pkg; % % #false laziness, copied from FS::cust_pkg::order % my $pkgpart; % my $agentnum = ''; % my @agents = $FS::CurrentUser::CurrentUser->agents; % if ( scalar(@agents) == 1 ) { % # $pkgpart->{PKGPART} is true iff $custnum may purchase PKGPART % $pkgpart = $agents[0]->pkgpart_hashref; % $agentnum = $agents[0]->agentnum; % } else { % #can't know (agent not chosen), so, allow all % $agentnum = 'all'; % my %typenum; % foreach my $agent ( @agents ) { % next if $typenum{$agent->typenum}++; % $pkgpart->{$_}++ foreach keys %{ $agent->pkgpart_hashref } % } % } % #eslaf % % my @part_pkg = grep { $_->svcpart('svc_acct') % && ( $pkgpart->{ $_->pkgpart } % || $agentnum eq 'all' % || ( $agentnum ne 'all' % && $agentnum % && $_->agentnum % && $_->agentnum == $agentnum % ) % ) % } % qsearch( 'part_pkg', { 'disabled' => '' }, '', 'ORDER BY pkg' ); # case? % % if ( @part_pkg ) { % % # print "

First package", &itable("#cccccc", "0 ALIGN=LEFT"), % #apiabuse & undesirable wrapping % %
First package <% ntable("#cccccc") %> <% include('cust_main/select-domain.html', 'pkgparts' => \@part_pkg, 'saved_pkgpart' => $saved_pkgpart, 'saved_domsvc' => $saved_domsvc, ) %> % % #false laziness: (mostly) copied from edit/svc_acct.cgi % #$ulen = $svc_acct->dbdef_table->column('username')->length; % my $ulen = dbdef->table('svc_acct')->column('username')->length; % my $ulen2 = $ulen+2; % my $passwordmax = $conf->config('passwordmax') || 8; % my $pmax2 = $passwordmax + 2; % Username MAXLENGTH=<% $ulen %>> Domain Password MAXLENGTH=<% $passwordmax %>> (blank to generate) Access number <% FS::svc_acct_pop::popselector($popnum) %> % } % }
" onClick="document.bottomform.submitButton.disabled=true; bottomfixup(this.form);">
<% include('/elements/footer.html') %> <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Edit customer'); #for misplaced logic below #use FS::part_pkg; #for false laziness below (now more properly lazy) #use FS::svc_acct_pop; #for (other) false laziness below #use FS::agent; #use FS::type_pkgs; my $conf = new FS::Conf; my $taxpre = $conf->exists('tax-ship_address') ? 'ship_' : ''; #get record my($custnum, $username, $password, $popnum, $cust_main, $saved_pkgpart, $saved_domsvc); my(@invoicing_list); my ($ss,$stateid,$payinfo); my $same = ''; if ( $cgi->param('error') ) { $cust_main = new FS::cust_main ( { map { $_, scalar($cgi->param($_)) } fields('cust_main') } ); $custnum = $cust_main->custnum; $saved_domsvc = $cgi->param('domsvc') || ''; if ( $saved_domsvc =~ /^(\d+)$/ ) { $saved_domsvc = $1; } else { $saved_domsvc = ''; } $saved_pkgpart = $cgi->param('pkgpart_svcpart') || ''; if ( $saved_pkgpart =~ /^(\d+)_/ ) { $saved_pkgpart = $1; } else { $saved_pkgpart = ''; } $username = $cgi->param('username'); $password = $cgi->param('_password'); $popnum = $cgi->param('popnum'); @invoicing_list = split( /\s*,\s*/, $cgi->param('invoicing_list') ); $same = $cgi->param('same'); $cust_main->setfield('paid' => $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 } elsif ( $cgi->keywords ) { #editing my( $query ) = $cgi->keywords; $query =~ /^(\d+)$/; $custnum=$1; $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } ); if ( $cust_main->dbdef_table->column('paycvv') && length($cust_main->paycvv) ) { my $paycvv = $cust_main->paycvv; $paycvv =~ s/./*/g; $cust_main->paycvv($paycvv); } $saved_pkgpart = 0; $saved_domsvc = 0; $username = ''; $password = ''; $popnum = 0; @invoicing_list = $cust_main->invoicing_list; $ss = $cust_main->masked('ss'); $stateid = $cust_main->masked('stateid'); $payinfo = $cust_main->paymask; } else { $custnum=''; $cust_main = new FS::cust_main ( {} ); $cust_main->otaker( &getotaker ); $cust_main->referral_custnum( $cgi->param('referral_custnum') ); $saved_pkgpart = 0; $saved_domsvc = 0; $username = ''; $password = ''; $popnum = 0; @invoicing_list = (); push @invoicing_list, 'POST' unless $conf->exists('disablepostalinvoicedefault'); $ss = ''; $stateid = ''; $payinfo = ''; } my $error = $cgi->param('error'); $cgi->delete_all(); $cgi->param('error', $error); my $action = $custnum ? 'Edit' : 'Add'; $action .= ": ". $cust_main->name if $custnum; my $r = qq!* !;