use FS::Mason qw( mason_interps );
use FS::Conf;
use FS::ClientAPI_SessionCache;
-use FS::Record qw(qsearchs);
+use FS::Record qw( qsearch qsearchs );
use FS::cust_main;
+use FS::part_pkg;
$DEBUG = 0;
$me = '[FS::ClientAPI::MasonComponent]';
/misc/phonenums.cgi
/misc/states.cgi
/misc/counties.cgi
+ /misc/svc_acct-domains.cgi
+ /misc/part_svc-columns.cgi
);
my %session_comps = map { $_=>1 } qw(
/elements/location.html
+ /edit/cust_main/first_pkg/select-part_pkg.html
);
my %session_callbacks = (
+
'/elements/location.html' => sub {
my( $custnum, $argsref ) = @_;
my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
@$argsref = ( %args );
return ''; #no error
},
+
+ '/edit/cust_main/first_pkg/select-part_pkg.html' => sub {
+ my( $custnum, $argsref ) = @_;
+ my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } )
+ or return "unknown custnum $custnum";
+
+ my $pkgpart = $cust_main->agent->pkgpart_hashref;
+
+ #false laziness w/ edit/cust_main/first_pkg.html
+ my @first_svc = ( 'svc_acct', 'svc_phone' );
+
+ my @part_pkg =
+ grep { $_->svcpart(\@first_svc)
+ && ( $pkgpart->{ $_->pkgpart }
+ || ( $_->agentnum && $_->agentnum == $cust_main->agentnum )
+ )
+ }
+ qsearch( 'part_pkg', { 'disabled' => '' }, '', 'ORDER BY pkg' ); # case?
+
+ my $conf = new FS::Conf;
+ if ( $conf->exists('pkg-addon_classnum') ) {
+
+ my %classnum = map { ( $_->addon_classnum => 1 ) }
+ grep { $_->freq !~ /^0/ }
+ map { $_->part_pkg }
+ $cust_main->ncancelled_pkgs;
+
+ unless ( $classnum{''} || ! keys %classnum ) {
+ @part_pkg = grep $classnum{ $_->classnum }, @part_pkg;
+ }
+ }
+
+ my %args = @$argsref;
+ $args{part_pkg} = \@part_pkg;
+ @$argsref = ( %args );
+ return ''; #no error
+
+ },
+
);
my $outbuf;
my $conf = new FS::Conf;
$FS::Mason::Request::FSURL = $conf->config('selfservice_server-base_url');
+ $FS::Mason::Request::FSURL .= '/' unless $FS::Mason::Request::FSURL =~ /\/$/;
$FS::Mason::Request::QUERY_STRING = $packet->{'query_string'} || '';
$outbuf = '';