% % % #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; % %#get record % %my $error = ''; %my($custnum, $username, $password, $popnum, $cust_main, $saved_pkgpart, $saved_domsvc); %my(@invoicing_list); %my ($ss,$stateid,$payinfo); %my $same = ''; %if ( $cgi->param('error') ) { % $error = $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 = ''; %} %$cgi->delete_all(); % %my $action = $custnum ? 'Edit' : 'Add'; %$action .= ": ". $cust_main->name if $custnum; % %my $r = qq!* !; % % <% include('/elements/header.html', "Customer $action", '', ' onUnload="myclose()"' ) %> % if ( $error ) { Error: <% $error %>

% }
% if ( $custnum ) { Customer #<% $custnum %> - <% ucfirst($cust_main->status) %>

% } <% &ntable("#cccccc") %> <% include('/elements/tr-select-agent.html', $cust_main->agentnum, 'label' => "${r}Agent", 'empty_label' => 'Select agent', ) %> % %my $refnum = $cust_main->refnum || $conf->config('referraldefault') || 0; %if ( $custnum && ! $conf->exists('editreferrals') ) { % % } else { <% include('/elements/tr-select-part_referral.html', $refnum ) %> % } % %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) %> % }

Billing address <% include('cust_main/contact.html', $cust_main, '', 'bill_changed(this)', '', 'ss' => $ss, 'stateid' => $stateid ) %> % if ( defined $cust_main->dbdef_table->column('ship_last') ) { % % my $checked = ''; % my $disabled = ''; % my $disabledselect = ''; % unless ( $cust_main->ship_last && $same ne 'Y' ) { % $checked = 'CHECKED'; % $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($_) ); % } % } %
Service address (>same as billing address) <% include('cust_main/contact.html', $cust_main, 'ship_', '', $disabled ) %> % } <% include( 'cust_main/billing.html', $cust_main, 'payinfo' => $payinfo, 'invoicing_list' => \@invoicing_list, ) %> % foreach my $hidden ( % 'birthdate', % % 'custnum', 'agentnum', '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', % % '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' % ) { % % } % % 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 @agents = $FS::CurrentUser::CurrentUser->agents; % if ( scalar(@agents) == 1 ) { % # $pkgpart->{PKGPART} is true iff $custnum may purchase PKGPART % $pkgpart = $agents[0]->pkgpart_hashref; % } else { % #can't know (agent not chosen), so, allow all % my %typenum; % foreach my $agent ( @agents ) { % next if $typenum{$agent->typenum}++; % #fixed in 5.004_05 #$pkgpart->{$_}++ foreach keys %{ $agent->pkgpart_hashref } % foreach ( keys %{ $agent->pkgpart_hashref } ) { $pkgpart->{$_}++; } #5.004_04 workaround % } % } % #eslaf % % my @part_pkg = grep { $_->svcpart('svc_acct') && $pkgpart->{ $_->pkgpart } } % 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) %> % } % }
">
<% include('/elements/footer.html') %>