X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=htdocs%2Fedit%2Fcust_main.cgi;h=901923d98a50c82ae69dc2356c5af2307dafe879;hp=ba8642808cb969bd75036e4b58a36b9a72963b3e;hb=59518b8dec0720fdf32aab8a1ecc2dbb689a0b85;hpb=510d2f9647c0651a82760e456b46505e8050d6ed diff --git a/htdocs/edit/cust_main.cgi b/htdocs/edit/cust_main.cgi index ba8642808..901923d98 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.11 1999-03-25 13:55:10 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,14 @@ # 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.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 @@ -89,6 +94,10 @@ use FS::cust_main_county; #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); @@ -99,7 +108,9 @@ if ( $cgi->param('error') ) { map { $_, scalar($cgi->param($_)) } fields('cust_main') } ); $custnum = $cust_main->custnum; - $pkgpart = $cgi->param('pkgpart'); + $pkgpart = $cgi->param('pkgpart_svcpart'); + $pkgpart =~ /^(\d+)_/; + $pkgpart = $1; $username = $cgi->param('username'); $password = $cgi->param('_password'); $popnum = $cgi->param('popnum'); @@ -306,28 +317,67 @@ unless ( $custnum ) { #use FS::part_svc; #use FS::part_pkg; + #false laziness, copied from FS::cust_pkg::order + my %part_pkg; + 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 }); + 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}++; + } + } 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}++; + } + } + + } + #eslaf + my %pkgpart; #foreach ( @pkg_svc ) { foreach ( qsearch( 'pkg_svc', {} ) ) { my $part_svc = qsearchs ( 'part_svc', { 'svcpart' => $_->svcpart } ); - $pkgpart{ $_->pkgpart } = 9999 # never will == 1 below + $pkgpart{ $_->pkgpart } = -1 # never will == 1 below if ( $part_svc->svcdb ne 'svc_acct' ); - $pkgpart{ $_->pkgpart }++; + 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 } qsearch( 'part_pkg', {} ); + grep { + #( $pkgpart{ $_->pkgpart } || 0 ) == 1 + $pkgpart{ $_->pkgpart } + && $pkgpart{ $_->pkgpart } != -1 + && $part_pkg{ $_->pkgpart } + ; + } qsearch( 'part_pkg', {} ); if ( @part_pkg ) { print "

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