From: ivan Date: Thu, 26 Mar 2009 03:53:45 +0000 (+0000) Subject: sort packages by label of first (primary) service, RT#5041 X-Git-Tag: root_of_svc_elec_features~1343 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=fc9d2c2d0b9391c2541f7d0c6e2584166d1775f8 sort packages by label of first (primary) service, RT#5041 --- diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 27a617e1a..73cf826ab 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -1895,15 +1895,21 @@ sub ncancelled_pkgs { # This should be generalized to use config options to determine order. sub sort_packages { - if ( $a->get('cancel') and $b->get('cancel') ) { - $a->pkgnum <=> $b->pkgnum; - } elsif ( $a->get('cancel') or $b->get('cancel') ) { + + if ( $a->get('cancel') xor $b->get('cancel') ) { return -1 if $b->get('cancel'); return 1 if $a->get('cancel'); + #shouldn't get here... return 0; } else { - $a->pkgnum <=> $b->pkgnum; + my @a_cust_svc = $a->cust_svc; + my @b_cust_svc = $b->cust_svc; + return 0 if !scalar(@a_cust_svc) && !scalar(@b_cust_svc); + return -1 if scalar(@a_cust_svc) && !scalar(@b_cust_svc); + return 1 if !scalar(@a_cust_svc) && scalar(@b_cust_svc); + $a_cust_svc[0]->svc_x->label cmp $b_cust_svc[0]->svc_x->label; } + } =item suspended_pkgs