projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix session creation in new_customer_minimal, RT#34084
[freeside.git]
/
httemplate
/
browse
/
part_pkg.cgi
diff --git
a/httemplate/browse/part_pkg.cgi
b/httemplate/browse/part_pkg.cgi
index
63822c7
..
f8de620
100755
(executable)
--- a/
httemplate/browse/part_pkg.cgi
+++ b/
httemplate/browse/part_pkg.cgi
@@
-76,12
+76,16
@@
if ( $cgi->param('classnum') =~ /^(\d+)$/ ) {
}
$cgi->delete('classnum');
}
$cgi->delete('classnum');
+if ( $cgi->param('pkgpartbatch') =~ /^([\w\/\-\:\. ]+)$/ ) {
+ push @where, "pkgpartbatch = '$1' ";
+}
+
if ( $cgi->param('missing_recur_fee') ) {
if ( $cgi->param('missing_recur_fee') ) {
- push @where, "
0 = ( SELECT COUNT(*)
FROM part_pkg_option
- WHERE optionname = 'recur_fee'
- AND part_pkg_option.pkgpart = part_pkg.pkgpart
- AND CAST( optionvalue AS NUMERIC ) > 0
- )";
+ push @where, "
NOT EXISTS ( SELECT 1
FROM part_pkg_option
+
WHERE optionname = 'recur_fee'
+
AND part_pkg_option.pkgpart = part_pkg.pkgpart
+
AND CAST( optionvalue AS NUMERIC ) > 0
+
)";
}
if ( $cgi->param('family') =~ /^(\d+)$/ ) {
}
if ( $cgi->param('family') =~ /^(\d+)$/ ) {
@@
-108,6
+112,14
@@
my $count_cust_pkg = "
WHERE cust_pkg.pkgpart = part_pkg.pkgpart
AND $agentnums_sql
";
WHERE cust_pkg.pkgpart = part_pkg.pkgpart
AND $agentnums_sql
";
+my $count_cust_pkg_cancel = "
+ SELECT COUNT(*) FROM cust_pkg LEFT JOIN cust_main USING ( custnum )
+ LEFT JOIN cust_pkg AS cust_pkg_next
+ ON (cust_pkg.pkgnum = cust_pkg_next.change_pkgnum)
+ WHERE cust_pkg.pkgpart = part_pkg.pkgpart
+ AND $agentnums_sql
+ AND cust_pkg.cancel IS NOT NULL AND cust_pkg.cancel != 0
+";
$select = "
$select = "
@@
-137,11
+149,16
@@
$select = "
AND ( setup IS NULL OR setup = 0 )
) AS num_on_hold,
AND ( setup IS NULL OR setup = 0 )
) AS num_on_hold,
- ( $count_cust_pkg
- AND cancel IS NOT NULL AND cancel != 0
+ ( $count_cust_pkg_cancel
+ AND (cust_pkg_next.pkgnum IS NULL
+ OR cust_pkg_next.pkgpart != cust_pkg.pkgpart)
) AS num_cancelled
";
) AS num_cancelled
";
+# About the num_cancelled expression: packages that were changed, but
+# kept the same pkgpart, are considered "moved", not "canceled" (because
+# this is the part_pkg UI). We could show the count of those but it's
+# probably not interesting.
my $html_init = qq!
One or more service definitions are grouped together into a package
my $html_init = qq!
One or more service definitions are grouped together into a package
@@
-406,7
+423,8
@@
push @fields, sub {
#agent type
if ( $acl_edit_global ) {
#really we just want a count, but this is fine unless someone has tons
#agent type
if ( $acl_edit_global ) {
#really we just want a count, but this is fine unless someone has tons
- my @all_agent_types = map {$_->typenum} qsearch('agent_type',{});
+ my @all_agent_types = map {$_->typenum}
+ qsearch('agent_type', { 'disabled'=>'' });
if ( scalar(@all_agent_types) > 1 ) {
push @header, 'Agent types';
my $typelink = $p. 'edit/agent_type.cgi?';
if ( scalar(@all_agent_types) > 1 ) {
push @header, 'Agent types';
my $typelink = $p. 'edit/agent_type.cgi?';
@@
-433,15
+451,7
@@
if ( $acl_edit_global ) {
#if ( $cgi->param('active') ) {
push @header, 'Customer<BR>packages';
#if ( $cgi->param('active') ) {
push @header, 'Customer<BR>packages';
- my %col = (
- 'on hold' => '7E0079', #purple!
- 'not yet billed' => '009999', #teal? cyan?
- 'active' => '00CC00',
- 'suspended' => 'FF9900',
- 'cancelled' => 'FF0000',
- #'one-time charge' => '000000',
- 'charge' => '000000',
- );
+ my %col = %{ FS::cust_pkg->statuscolors };
my $cust_pkg_link = $p. 'search/cust_pkg.cgi?pkgpart=';
push @fields, sub { my $part_pkg = shift;
[
my $cust_pkg_link = $p. 'search/cust_pkg.cgi?pkgpart=';
push @fields, sub { my $part_pkg = shift;
[