improve performance of DID provisioning status report, RT10988
authorlevinse <levinse>
Tue, 21 Jun 2011 03:16:59 +0000 (03:16 +0000)
committerlevinse <levinse>
Tue, 21 Jun 2011 03:16:59 +0000 (03:16 +0000)
FS/FS/Schema.pm
FS/FS/phone_avail.pm
httemplate/search/phone_inventory_provisioned.html

index 65ec2a8..035965e 100644 (file)
@@ -3156,6 +3156,7 @@ sub tables_hashref {
                     [ 'exportnum', 'countrycode', 'npa', 'nxx', 'station' ], # #
                     [ 'svcnum' ],
                     [ 'availbatch' ],
+                    [ 'latanum' ],
                   ],
     },
     
index 44421ff..cd4b4b6 100644 (file)
@@ -182,6 +182,16 @@ sub part_export {
   qsearchs('part_export', { 'exportnum' => $self->exportnum });
 }
 
+=item lata 
+
+=cut
+
+sub lata {
+  my $self = shift;
+  return '' unless $self->latanum;
+  qsearchs('lata', { 'latanum' => $self->latanum });
+}
+
 =item msa2msanum
 
 Translate free-form MSA name to a msa.msanum
index 5d4b421..6302144 100644 (file)
@@ -1,43 +1,53 @@
 <% include( 'elements/search.html',
-              'title'         => 'Phone Number (DID) Search Results',
-              'name_singular' => 'phone number',
+              'title'         => 'LATA Search Results',
+              'name_singular' => 'LATA',
               'query'         => {
                                    'table'   => 'phone_avail',
                                    'hashref' => {},
                                    'select'  => 'distinct latanum',
                                  },
               'count_query'   => 'SELECT COUNT(distinct latanum) FROM phone_avail',
-              'header'        => [ 'LATA #',
+              'header'        => [ 'LATA',
                                   'Available',
                                   'Provisioned',
                                   'Have Usage',
                                  ],
               'fields'        => [
-                'latanum',
-               sub {
+        sub { # LATA
+            my $did_order = shift;
+            my $lata = $did_order->lata;
+            $lata = $lata ? $lata->description : '';
+            $did_order->latanum . " - " . $lata;
+        },
+               sub { # Available
                    my $latanum = shift->latanum;
                    my @dids = qsearch('phone_avail',
-                                       { 'svcnum' => '',
-                                         'latanum' => $latanum,
-                                       }
-                                     );
+                                    { 'svcnum' => '',
+                                      'latanum' => $latanum,
+                                    }
+                          );
                    return scalar(@dids);
                },
-               sub {
+               sub { # Provisioned
                    my $latanum = shift->latanum;
                    my @dids = provisioned_dids($latanum);
                    return scalar(@dids);
                },
-               sub {
+               sub { # Have Usage
                    my $latanum = shift->latanum;
                    my @dids = provisioned_dids($latanum);
+
+            warn "have usage ".time;
+            return ''; # XXX disabled temporarily
+
                    my $count = 0;
                    foreach my $did ( @dids ) {
-                       next unless $did->cust_svc;
-                       my $svc_phone = $did->cust_svc->svc_x;
-                       next unless $svc_phone;
-                       my @cdrs = $svc_phone->get_cdrs;
-                       $count++ if scalar(@cdrs);
+                next unless $did->cust_svc;
+                my $svc_phone = $did->cust_svc->svc_x;
+                warn "inside loop ".time;
+                next unless $svc_phone;
+                my @cdrs = $svc_phone->get_cdrs;
+                $count++ if scalar(@cdrs);
                    }
                    $count;
                },
@@ -65,6 +75,8 @@
 %>
 <%init>
 
+warn "started @ ".time;
+
 die "access denied"
   unless ( $FS::CurrentUser::CurrentUser->access_right('List inventory')
         && $FS::CurrentUser::CurrentUser->access_right('List services')
@@ -74,12 +86,10 @@ die "access denied"
 
 sub provisioned_dids {
     my $latanum = shift;
-    qsearch({ 'table' => 'phone_avail',
-             'hashref' => { 
-               'latanum' => $latanum,
-             },
-             'extra_sql' => ' and svcnum is not null ',
-         });
+    qsearch({   'table' => 'phone_avail',
+                   'hashref' => { 'latanum' => $latanum, },
+                   'extra_sql' => ' and svcnum is not null ',
+               });
 }
 
 </%init>