X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=htdocs%2Fedit%2Fcust_main.cgi;h=b3d9f0d80140bb013213577a063458aca11d8063;hb=35227000d6222f35ec49bc4226e94200b77abc4f;hp=233fff2a2faabc88b1ffae5b31915af9db289144;hpb=2aa22dcacc8523311ebe32e4f8c077a227bc0dbb;p=freeside.git diff --git a/htdocs/edit/cust_main.cgi b/htdocs/edit/cust_main.cgi index 233fff2a2..b3d9f0d80 100755 --- a/htdocs/edit/cust_main.cgi +++ b/htdocs/edit/cust_main.cgi @@ -1,6 +1,6 @@ #!/usr/bin/perl -Tw # -# $Id: cust_main.cgi,v 1.12 1999-04-06 11:16:16 ivan Exp $ +# $Id: cust_main.cgi,v 1.28 2000-12-26 23:51:40 ivan Exp $ # # Usage: cust_main.cgi custnum # http://server.name/path/cust_main.cgi?custnum @@ -38,7 +38,52 @@ # fixed one missed day->daytime ivan@sisd.com 98-jul-13 # # $Log: cust_main.cgi,v $ -# Revision 1.12 1999-04-06 11:16:16 ivan +# Revision 1.28 2000-12-26 23:51:40 ivan +# statedefault & referraldefault config files +# +# Revision 1.27 2000/12/03 13:45:15 ivan +# patch from Jason Spence : admin.html doc, autocapgen +# +# Revision 1.26 2000/06/27 12:15:50 ivan +# i18n +# +# Revision 1.25 2000/03/02 08:09:38 ivan +# still need to allow blank expiration dates +# +# Revision 1.24 2000/01/30 06:54:50 ivan +# credit card expiration dates not sticky bug fixed? +# +# Revision 1.23 2000/01/27 00:53:14 ivan +# 5.004_04 workaround +# +# Revision 1.22 1999/12/17 02:33:23 ivan +# argh +# +# Revision 1.21 1999/08/23 07:40:38 ivan +# missing flag +# +# Revision 1.20 1999/08/23 07:08:11 ivan +# no CGI::Switch for now +# +# Revision 1.19 1999/08/21 02:14:25 ivan +# better error message for no agents +# +# Revision 1.18 1999/08/11 15:38:33 ivan +# fix for perl 5.004_04 +# +# Revision 1.17 1999/08/10 11:15:45 ivan +# corrected a misleading comment +# +# Revision 1.15 1999/04/14 13:14:54 ivan +# configuration option to edit referrals of existing customers +# +# Revision 1.14 1999/04/14 07:47:53 ivan +# i18n fixes +# +# Revision 1.13 1999/04/09 03:52:55 ivan +# explicit & for table/itable/ntable +# +# Revision 1.12 1999/04/06 11:16:16 ivan # give a meaningful error message if you try to create a customer before you've # created an agent # @@ -79,7 +124,8 @@ use vars qw( $cgi $custnum $action $cust_main $p1 @agents $agentnum $daytime $night $fax @invoicing_list $invoicing_list $payinfo $payname %payby %paybychecked $refnum $otaker $r ); use vars qw ( $conf $pkgpart $username $password $popnum $ulen $ulen2 ); -use CGI::Switch; +#use CGI::Switch; +use CGI; use CGI::Carp qw(fatalsToBrowser); use FS::UID qw(cgisuidsetup getotaker); #use FS::Record qw(qsearch qsearchs fields); @@ -91,8 +137,6 @@ use FS::part_referral; use FS::cust_main_county; #for misplaced logic below - use FS::pkg_svc; - use FS::part_svc; use FS::part_pkg; #for false laziness below @@ -105,6 +149,8 @@ use FS::cust_main_county; $cgi = new CGI; cgisuidsetup($cgi); +$conf = new FS::Conf; + #get record if ( $cgi->param('error') ) { @@ -112,9 +158,12 @@ if ( $cgi->param('error') ) { map { $_, scalar($cgi->param($_)) } fields('cust_main') } ); $custnum = $cust_main->custnum; - $pkgpart = $cgi->param('pkgpart_svcpart'); - $pkgpart =~ /^(\d+)_/; - $pkgpart = $1; + $pkgpart = $cgi->param('pkgpart_svcpart') || ''; + if ( $pkgpart =~ /^(\d+)_/ ) { + $pkgpart = $1; + } else { + $pkgpart = ''; + } $username = $cgi->param('username'); $password = $cgi->param('_password'); $popnum = $cgi->param('popnum'); @@ -145,7 +194,54 @@ print $cgi->header( '-expires' => 'now' ), header("Customer $action", ''); print qq!Error: !, $cgi->param('error'), "" if $cgi->param('error'); -print qq!
!, + +# JRS: Javascript to set up the form for us + if ( $conf->exists('autocapnames') ) { + print < + +END +} + +print qq!!, qq!!, qq!Customer # !, ( $custnum ? $custnum : " (NEW)" ), @@ -156,7 +252,8 @@ print qq!!, $r = qq!*!; @agents = qsearch( 'agent', {} ); -die "No agents created!" unless @agents; +#die "No agents created!" unless @agents; +die "You have not created any agents. You must create at least one agent before adding a customer. Go to ". popurl(2). "browse/agent.cgi and create one or more agents." unless @agents; $agentnum = $cust_main->agentnum || $agents[0]->agentnum; #default to first if ( scalar(@agents) == 1 ) { print qq!!; @@ -175,8 +272,8 @@ if ( scalar(@agents) == 1 ) { #referral -$refnum = $cust_main->refnum || 0; -if ( $custnum ) { +$refnum = $cust_main->refnum || $conf->config('referraldefault') || 0; +if ( $custnum && ! $conf->exists('editreferrals') ) { print qq!!; } else { my(@referrals) = qsearch('part_referral',{}); @@ -185,7 +282,7 @@ if ( $custnum ) { print qq!!; } else { print qq!

${r}Referral , SS# +print "

Contact information", &itable("#c0c0c0"), <${r}Contact name
(last, first) +END + +if ( $conf->exists('autocapnames') ) { + print <, + +END +} else { + print <, + +END +} + +print <SS# Company ${r}Address   -${r}City${r}State/Country${r}State/Country!; for ( 1 .. 12 ) { $return .= "/tax eq "Y"; print qq!>Tax Exempt!; @@ -288,7 +409,7 @@ print qq!Email invoice Billing type", "", - table("#c0c0c0"), ""; + &table("#c0c0c0"), ""; ($payinfo, $payname)=( $cust_main->payinfo, @@ -318,73 +439,41 @@ print "$r required fields for each billing type"; unless ( $custnum ) { # pry the wrong place for this logic. also pretty expensive - #use FS::pkg_svc; - #use FS::part_svc; #use FS::part_pkg; #false laziness, copied from FS::cust_pkg::order - my %part_pkg; + my $pkgpart; if ( scalar(@agents) == 1 ) { - # generate %part_pkg - # $part_pkg{$pkgpart} is true iff $custnum may purchase $pkgpart - #my($cust_main)=qsearchs('cust_main',{'custnum'=>$custnum}); - #my($agent)=qsearchs('agent',{'agentnum'=> $cust_main->agentnum }); + # $pkgpart->{PKGPART} is true iff $custnum may purchase $pkgpart my($agent)=qsearchs('agent',{'agentnum'=> $agentnum }); - - my($type_pkgs); - foreach $type_pkgs ( qsearch('type_pkgs',{'typenum'=> $agent->typenum }) ) { - my($pkgpart)=$type_pkgs->pkgpart; - $part_pkg{$pkgpart}++; - } + $pkgpart = $agent->pkgpart_hashref; } else { #can't know (agent not chosen), so, allow all my %typenum; foreach my $agent ( @agents ) { next if $typenum{$agent->typenum}++; - foreach my $type_pkgs ( qsearch('type_pkgs',{'typenum'=> $agent->typenum }) ) { - my($pkgpart)=$type_pkgs->pkgpart; - $part_pkg{$pkgpart}++; - } + #fixed in 5.004_05 #$pkgpart->{$_}++ foreach keys %{ $agent->pkgpart_hashref } + foreach ( keys %{ $agent->pkgpart_hashref } ) { $pkgpart->{$_}++; } #5.004_04 workaround } - } #eslaf - my %pkgpart; - #foreach ( @pkg_svc ) { - foreach ( qsearch( 'pkg_svc', {} ) ) { - my $part_svc = qsearchs ( 'part_svc', { 'svcpart' => $_->svcpart } ); - $pkgpart{ $_->pkgpart } = -1 # never will == 1 below - if ( $part_svc->svcdb ne 'svc_acct' ); - if ( $pkgpart{ $_->pkgpart } ) { - $pkgpart{ $_->pkgpart } = '-1'; - } else { - $pkgpart{ $_->pkgpart } = $_->svcpart; - } - } - - my @part_pkg = - #grep { $pkgpart{ $_->pkgpart } == 1 } qsearch( 'part_pkg', {} ); - grep { - #( $pkgpart{ $_->pkgpart } || 0 ) == 1 - $pkgpart{ $_->pkgpart } - && $pkgpart{ $_->pkgpart } != -1 - && $part_pkg{ $_->pkgpart } - ; - } qsearch( 'part_pkg', {} ); + my @part_pkg = grep { $_->svcpart('svc_acct') && $pkgpart->{ $_->pkgpart } } + qsearch( 'part_pkg', {} ); if ( @part_pkg ) { - print "

First package", itable("#c0c0c0"), + print "

First package", &itable("#c0c0c0"), qq!";