improve performance of DID provisioning status report, RT10988
[freeside.git] / httemplate / search / phone_inventory_provisioned.html
1 <% include( 'elements/search.html',
2               'title'         => 'LATA Search Results',
3               'name_singular' => 'LATA',
4               'query'         => {
5                                    'table'   => 'phone_avail',
6                                    'hashref' => {},
7                                    'select'  => 'distinct latanum',
8                                  },
9               'count_query'   => 'SELECT COUNT(distinct latanum) FROM phone_avail',
10               'header'        => [ 'LATA',
11                                    'Available',
12                                    'Provisioned',
13                                    'Have Usage',
14                                  ],
15               'fields'        => [
16         sub { # LATA
17             my $did_order = shift;
18             my $lata = $did_order->lata;
19             $lata = $lata ? $lata->description : '';
20             $did_order->latanum . " - " . $lata;
21         },
22                 sub { # Available
23                     my $latanum = shift->latanum;
24                     my @dids = qsearch('phone_avail',
25                                     { 'svcnum' => '',
26                                       'latanum' => $latanum,
27                                     }
28                           );
29                     return scalar(@dids);
30                 },
31                 sub { # Provisioned
32                     my $latanum = shift->latanum;
33                     my @dids = provisioned_dids($latanum);
34                     return scalar(@dids);
35                 },
36                 sub { # Have Usage
37                     my $latanum = shift->latanum;
38                     my @dids = provisioned_dids($latanum);
39
40             warn "have usage ".time;
41             return ''; # XXX disabled temporarily
42
43                     my $count = 0;
44                     foreach my $did ( @dids ) {
45                 next unless $did->cust_svc;
46                 my $svc_phone = $did->cust_svc->svc_x;
47                 warn "inside loop ".time;
48                 next unless $svc_phone;
49                 my @cdrs = $svc_phone->get_cdrs;
50                 $count++ if scalar(@cdrs);
51                     }
52                     $count;
53                 },
54               ],
55               'align'         => 'lccc',
56               'links'         => [
57                 '',
58                 '',
59                 '',
60                 '',
61               ],
62               'color' => [ 
63                            '',
64                            '',
65                            '',
66                            '',
67                          ],
68               'style' => [ 
69                            '',
70                            '',
71                            '',
72                            '',
73                          ],
74       )
75 %>
76 <%init>
77
78 warn "started @ ".time;
79
80 die "access denied"
81   unless ( $FS::CurrentUser::CurrentUser->access_right('List inventory')
82          && $FS::CurrentUser::CurrentUser->access_right('List services')
83          );
84
85 # XXX: agent virtualize
86
87 sub provisioned_dids {
88     my $latanum = shift;
89     qsearch({   'table' => 'phone_avail',
90                     'hashref' => { 'latanum' => $latanum, },
91                     'extra_sql' => ' and svcnum is not null ',
92                 });
93 }
94
95 </%init>