X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=htdocs%2Fedit%2Fcust_main.cgi;h=d5ae3634829a185dc13d84a64ea9d57c1d6ec873;hb=a1e172b1700ef8ea6b9d84f600e26ff53b9e300e;hp=ba8642808cb969bd75036e4b58a36b9a72963b3e;hpb=510d2f9647c0651a82760e456b46505e8050d6ed;p=freeside.git diff --git a/htdocs/edit/cust_main.cgi b/htdocs/edit/cust_main.cgi index ba8642808..d5ae36348 100755 --- a/htdocs/edit/cust_main.cgi +++ b/htdocs/edit/cust_main.cgi @@ -1,12 +1,10 @@ #!/usr/bin/perl -Tw # -# $Id: cust_main.cgi,v 1.9 1999-02-23 08:09:20 ivan Exp $ +# $Id: cust_main.cgi,v 1.18 1999-08-11 15:38:33 ivan Exp $ # # Usage: cust_main.cgi custnum # http://server.name/path/cust_main.cgi?custnum # -# Note: Should be run setuid freeside as user nobody. -# # ivan@voicenet.com 96-nov-29 -> 96-dec-04 # # Blank custnum for new customer. @@ -40,7 +38,33 @@ # fixed one missed day->daytime ivan@sisd.com 98-jul-13 # # $Log: cust_main.cgi,v $ -# Revision 1.9 1999-02-23 08:09:20 ivan +# 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 +# +# Revision 1.11 1999/03/25 13:55:10 ivan +# one-screen new customer entry (including package and service) for simple +# packages with one svc_acct service +# +# Revision 1.10 1999/02/28 00:03:34 ivan +# removed misleading comments +# +# Revision 1.9 1999/02/23 08:09:20 ivan # beginnings of one-screen new customer entry and some other miscellania # # Revision 1.8 1999/01/25 12:09:53 ivan @@ -82,16 +106,20 @@ 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 use FS::svc_acct_pop; + #for (other) false laziness below + use FS::agent; + use FS::type_pkgs; + $cgi = new CGI; cgisuidsetup($cgi); +$conf = new FS::Conf; + #get record if ( $cgi->param('error') ) { @@ -99,7 +127,12 @@ if ( $cgi->param('error') ) { map { $_, scalar($cgi->param($_)) } fields('cust_main') } ); $custnum = $cust_main->custnum; - $pkgpart = $cgi->param('pkgpart'); + $pkgpart = $cgi->param('pkgpart_svcpart') || ''; + if ( $pkgpart =~ /^(\d+)_/ ) { + $pkgpart = $1; + } else { + $pkgpart = ''; + } $username = $cgi->param('username'); $password = $cgi->param('_password'); $popnum = $cgi->param('popnum'); @@ -141,6 +174,7 @@ print qq!
!, $r = qq!*!; @agents = qsearch( 'agent', {} ); +die "No agents created!" unless @agents; $agentnum = $cust_main->agentnum || $agents[0]->agentnum; #default to first if ( scalar(@agents) == 1 ) { print qq!!; @@ -160,7 +194,7 @@ if ( scalar(@agents) == 1 ) { #referral $refnum = $cust_main->refnum || 0; -if ( $custnum ) { +if ( $custnum && ! $conf->exists('editreferrals') ) { print qq!!; } else { my(@referrals) = qsearch('part_referral',{}); @@ -169,7 +203,7 @@ if ( $custnum ) { print qq!!; } else { print qq!

${r}Referral , SS# Company ${r}Address @@ -258,7 +292,7 @@ sub expselect { $return; } -print "
Billing information", itable("#c0c0c0"), +print "
Billing information", &itable("#c0c0c0"), qq!tax eq "Y"; print qq!>Tax Exempt!; @@ -272,7 +306,7 @@ print qq!Email invoice Billing type", "", - table("#c0c0c0"), ""; + &table("#c0c0c0"), ""; ($payinfo, $payname)=( $cust_main->payinfo, @@ -302,34 +336,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; - my %pkgpart; - #foreach ( @pkg_svc ) { - foreach ( qsearch( 'pkg_svc', {} ) ) { - my $part_svc = qsearchs ( 'part_svc', { 'svcpart' => $_->svcpart } ); - $pkgpart{ $_->pkgpart } = 9999 # never will == 1 below - if ( $part_svc->svcdb ne 'svc_acct' ); - $pkgpart{ $_->pkgpart }++; + #false laziness, copied from FS::cust_pkg::order + my $pkgpart; + if ( scalar(@agents) == 1 ) { + # $pkgpart->{PKGPART} is true iff $custnum may purchase $pkgpart + my($agent)=qsearchs('agent',{'agentnum'=> $agentnum }); + $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}++; + #5.004_04 barfs (5.004_05 okay?)# $pkgpart->{$_}++ foreach keys %{ $agent->pkgpart_hashref } + foreach ( keys %{ $agent->pkgpart_hashref } ) { $pkgpart->{$_}++; } + } } + #eslaf - my @part_pkg = - #grep { $pkgpart{ $_->pkgpart } == 1 } qsearch( 'part_pkg', {} ); - grep { ( $pkgpart{ $_->pkgpart } || 0 ) == 1 } qsearch( 'part_pkg', {} ); + my @part_pkg = grep { $_->svcpart('svc_acct') && $pkgpart->{ $_->pkgpart } } + qsearch( 'part_pkg', {} ); if ( @part_pkg ) { - print "

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