added DID availability/inventory/provisioning report, RT10988
authorlevinse <levinse>
Tue, 18 Jan 2011 00:59:02 +0000 (00:59 +0000)
committerlevinse <levinse>
Tue, 18 Jan 2011 00:59:02 +0000 (00:59 +0000)
httemplate/elements/menu.html
httemplate/search/phone_inventory_provisioned.html [new file with mode: 0644]

index 0f62170..710850c 100644 (file)
@@ -199,6 +199,8 @@ foreach my $svcdb ( FS::part_svc->svc_tables() ) {
   if ( $svcdb eq 'svc_phone' ) {
     $report_svc{"Phone number (DID) availability"} =
       [ $fsurl."search/report_phone_avail.html", '' ];
+    $report_svc{"Inventory/Provisioning Status"} =
+      [ $fsurl."search/phone_inventory_provisioned.html", '' ];
   }
 
   $report_services{$name} = [ \%report_svc, $longname ];
diff --git a/httemplate/search/phone_inventory_provisioned.html b/httemplate/search/phone_inventory_provisioned.html
new file mode 100644 (file)
index 0000000..c3de38f
--- /dev/null
@@ -0,0 +1,87 @@
+<% include( 'elements/search.html',
+              'title'         => 'Phone Number (DID) Search Results',
+              'name_singular' => 'phone number',
+              'query'         => {
+                                   'table'   => 'phone_avail',
+                                   'hashref' => {},
+                                   'select'  => 'distinct npa||nxx as npanxx'
+                                 },
+              'count_query'   => 'SELECT COUNT(distinct npa||nxx) FROM phone_avail',
+              'header'        => [ 'NPANXX',
+                                  'Available',
+                                  'Provisioned',
+                                  'Have Usage',
+                                 ],
+              'fields'        => [
+                'npanxx',
+               sub {
+                   my $npanxx = shift->npanxx;
+                   my @dids = qsearch('phone_avail',
+                                       { 'svcnum' => '',
+                                         'npa' => substr($npanxx,0,3),
+                                         'nxx' => substr($npanxx,3,3),
+                                       }
+                                     );
+                   return scalar(@dids);
+               },
+               sub {
+                   my $npanxx = shift->npanxx;
+                   my @dids = provisioned_dids($npanxx);
+                   return scalar(@dids);
+               },
+               sub {
+                   my $npanxx = shift->npanxx;
+                   my @dids = provisioned_dids($npanxx);
+                   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);
+                   }
+                   $count;
+               },
+              ],
+              'align'         => 'lccc',
+              'links'         => [
+                '',
+               '',
+               '',
+               '',
+              ],
+              'color' => [ 
+                           '',
+                          '',
+                          '',
+                          '',
+                         ],
+              'style' => [ 
+                           '',
+                          '',
+                          '',
+                          '',
+                         ],
+      )
+%>
+<%init>
+
+die "access denied"
+  unless ( $FS::CurrentUser::CurrentUser->access_right('List inventory')
+        && $FS::CurrentUser::CurrentUser->access_right('List services')
+        );
+
+# XXX: agent virtualize
+
+sub provisioned_dids {
+    my $npanxx = shift;
+    qsearch({ 'table' => 'phone_avail',
+             'hashref' => { 
+               'npa' => substr($npanxx,0,3),
+               'nxx' => substr($npanxx,3,3),
+             },
+             'extra_sql' => ' and svcnum is not null ',
+         });
+}
+
+</%init>