use FS::cust_location; #
our ($DEBUG, $me) = (0, '[FS::cust_main::Packages]');
+our $skip_label_sort = 0;
=head1 NAME
@cust_pkg = $self->_cust_pkg($extra_qsearch);
}
+ local($skip_label_sort) = 1 if $extra_qsearch->{skip_label_sort};
map { $_ } sort sort_packages @cust_pkg;
+
}
=item cust_pkg
}
+ local($skip_label_sort) = 1 if $extra_qsearch->{skip_label_sort};
sort sort_packages @cust_pkg;
}
+=item cancelled_pkgs [ EXTRA_QSEARCH_PARAMS_HASHREF ]
+
+Returns all cancelled packages (see L<FS::cust_pkg>) for this customer.
+
+=cut
+
+sub cancelled_pkgs {
+ my $self = shift;
+ my $extra_qsearch = ref($_[0]) ? shift : { @_ };
+
+ return $self->num_cancelled_pkgs($extra_qsearch) unless wantarray;
+
+ $extra_qsearch->{'extra_sql'} .=
+ ' AND cust_pkg.cancel IS NOT NULL AND cust_pkg.cancel > 0 ';
+
+ local($skip_label_sort) = 1 if $extra_qsearch->{skip_label_sort};
+
+ sort sort_packages $self->_cust_pkg($extra_qsearch);
+}
+
sub _cust_pkg {
my $self = shift;
my $extra_qsearch = ref($_[0]) ? shift : {};
return 0 if !$a_num_cust_svc && !$b_num_cust_svc;
return -1 if $a_num_cust_svc && !$b_num_cust_svc;
return 1 if !$a_num_cust_svc && $b_num_cust_svc;
- return 0 if $a_num_cust_svc + $b_num_cust_svc > 20; #for perf, just give up
+ return 0 if $skip_label_sort
+ || $a_num_cust_svc + $b_num_cust_svc > 20; #for perf, just give up
my @a_cust_svc = $a->cust_svc_unsorted;
my @b_cust_svc = $b->cust_svc_unsorted;
return 0 if !scalar(@a_cust_svc) && !scalar(@b_cust_svc);
grep { $_->susp } $self->ncancelled_pkgs;
}
-### This appears to be unused, will be going away
-#
-#=item unflagged_suspended_pkgs
-#
-#Returns all unflagged suspended packages (see L<FS::cust_pkg>) for this
-#customer (thouse packages without the `manual_flag' set).
-#
-#=cut
-
-sub unflagged_suspended_pkgs {
- my $self = shift;
- return $self->suspended_pkgs
- unless dbdef->table('cust_pkg')->column('manual_flag');
- grep { ! $_->manual_flag } $self->suspended_pkgs;
-}
-
=item unsuspended_pkgs
Returns all unsuspended (and uncancelled) packages (see L<FS::cust_pkg>) for