From 13a5d5ea7770ef1868e1d9af95a27065008484b7 Mon Sep 17 00:00:00 2001 From: levinse Date: Tue, 18 Jan 2011 00:59:02 +0000 Subject: [PATCH] added DID availability/inventory/provisioning report, RT10988 --- httemplate/elements/menu.html | 2 + httemplate/search/phone_inventory_provisioned.html | 87 ++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 httemplate/search/phone_inventory_provisioned.html diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index 0f621709a..710850cc2 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -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 index 000000000..c3de38f37 --- /dev/null +++ b/httemplate/search/phone_inventory_provisioned.html @@ -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 ', + }); +} + + -- 2.11.0