self-service improvements: DIDs, RT10885
[freeside.git] / fs_selfservice / FS-SelfService / cgi / ws_list.html
1 <%=
2
3 sub ws_pkglink {
4     my($cat,$count,$link) = (shift,shift,shift);
5     return "0 $cat <BR>" unless $count->{$cat};
6     return qq! <A HREF="${link};filter=$cat">$count->{$cat}</A> $cat <BR> !;
7 }
8
9 sub ws_pkgstatus {
10     my $pkg = shift;
11     $status = "unbilled";
12     $status = "active" if ( $pkg->{setup} && !$pkg->{cancel}
13             && !$pkg->{susp} );
14     $status = "suspended" if ( $pkg->{susp} && !$pkg->{cancel} );
15     $status = "cancelled" if $pkg->{cancel};
16     $status;
17 }
18
19 sub pdate {
20     my($field,$date_format) = (shift,shift);
21     return "<TD>".Date::Format::time2str($date_format,$field)."</TD>" 
22         if $field && $field > 0;
23     '<TD></TD>';
24 }
25
26 if ( $pkgpart ) {
27     $OUT .= qq! <TABLE BORDER="1" style="empty-cells: show"><TR><TH>Package</TH><TH>Status</TH> !;
28     $OUT .= "<TH>Setup</TH><TH>Last Bill</TH><TH>Next Bill</TH><TH>Adjourn</TH>";
29     $OUT .= "<TH>Suspend</TH><TH>Expire</TH><TH>Contract End</TH>";
30     $OUT .= "<TH>Cancel</TH><TH>Services</TH></TR>";
31     foreach my $pkg ( @cust_pkg ) {
32         my $part_pkg = $pkg->{part_pkg}[0];
33         $status = ws_pkgstatus($pkg);
34         if($pkg->{pkgpart} == $pkgpart && 
35                 ( ($filter && $filter eq $status) || !$filter) ) {
36             $OUT .= "<TR><TD>$part_pkg->{pkg}</TD><TD>$status</TD>"; 
37             $OUT .= pdate($pkg->{setup},$date_format);
38             $OUT .= pdate($pkg->{last_bill},$date_format);
39             $OUT .= pdate($pkg->{bill},$date_format);
40             $OUT .= pdate($pkg->{adjourn},$date_format);
41             $OUT .= pdate($pkg->{susp},$date_format);
42             $OUT .= pdate($pkg->{expire},$date_format);
43             $OUT .= pdate($pkg->{contract_end},$date_format);
44             $OUT .= pdate($pkg->{cancel},$date_format);
45
46             $OUT .= "<TD style='font-size: 85%'>";
47             my @cust_svc = @{$pkg->{cust_svc}};
48             foreach my $cust_svc ( @cust_svc ) {
49                 my @label = @{$cust_svc->{'label'}};
50                 $OUT .= qq!$label[0]: $label[1] <BR><BR>!;
51             }
52             my @part_svc = @{$pkg->{part_svc}};
53             foreach my $part_svc ( @part_svc ) {
54                 my $link = qq!<A HREF="${url}provision_svc;!
55                     . qq!pkgnum=$pkg->{'pkgnum'};svcpart=$part_svc->{'svcpart'}!
56                     . qq!;numavail=$part_svc->{'num_avail'}">Setup !
57                     . qq!$part_svc->{'svc'}</A> ($part_svc->{'num_avail'}!
58                     . qq! available)<BR><BR>!;
59                 $OUT .= $link if $part_svc->{'can_get_dids'};
60             }
61
62             $OUT .= "</TD></TR>";
63         }
64     }
65     $OUT .= "</TABLE>";
66 }
67 else {
68     my %pkgparts;
69     foreach my $pkg ( @cust_pkg ) {
70         my $status = ws_pkgstatus($pkg);
71         $pkgparts{$pkg->{pkgpart}}{$status}++;
72         my $part_pkg = $pkg->{part_pkg}[0];
73         $pkgparts{$pkg->{pkgpart}}{pkg} = $part_pkg->{pkg};
74     }
75
76     $OUT .= "<TABLE><TR><TD>";
77
78     $OUT .= qq! <TABLE BORDER="1"><TR><TH>Package</TH><TH>Status</TH></TR> !;
79     my($pkgpart,$counts);
80     while(($pkgpart,$count) = each %pkgparts){
81        my $link = "${url}provision;pkgpart=$pkgpart";
82        $OUT .= qq! <TR><TD><A HREF="$link">$count->{pkg}</A></TD><TD> !;
83        $OUT .= ws_pkglink("unbilled",$count,$link);
84        $OUT .= ws_pkglink("active",$count,$link);
85        $OUT .= ws_pkglink("suspended",$count,$link);
86        $OUT .= ws_pkglink("cancelled",$count,$link);
87        $OUT .= "</TD></TR>";
88     }
89     $OUT .= "</TABLE>";
90
91     $OUT .= qq!</TD><TD VALIGN="TOP" STYLE="padding-left: 11px;">!;
92
93     if ( @login_svcpart ) {
94         $OUT .= "<B>Self-service accounts</B><BR>";
95         foreach my $pkg ( @cust_pkg ) {
96             @cust_svc = @{$pkg->{cust_svc}};
97             @part_svc = @{$pkg->{part_svc}};
98
99             foreach my $cust_svc ( @cust_svc ) {
100                 $svcpart = $cust_svc->{'svcpart'};
101                 next unless grep($_ eq $svcpart, @login_svcpart);
102                 @label = @{$cust_svc->{'label'}};
103                 $OUT .= $label[1] . " &nbsp; ";
104                 unless ( $cust_svc->{'svcnum'} == $svcnum ) {
105                     $OUT .= qq!<A HREF="javascript:areyousure('${url}delete_svc;svcnum=$cust_svc->{svcnum}', 'This will permanently delete the $label[1] $label[0].  Are you sure?')">!.
106                   'Delete</A>';
107                 }
108                 $OUT .= "<BR>";
109             }
110
111             foreach my $part_svc ( @part_svc ) {
112                 $svcpart = $part_svc->{'svcpart'};
113                 next unless grep($_ eq $svcpart, @login_svcpart);
114                 $link = "${url}provision_svc;pkgnum=$pkg->{'pkgnum'};".
115                     "svcpart=$part_svc->{'svcpart'}";
116                 $OUT .= qq!<A HREF="$link">!. 'Setup '. $part_svc->{'svc'}. 
117                     '</A> ('. $part_svc->{'num_avail'}. ' available)' 
118                     if $part_svc->{'svcdb'} eq 'svc_acct';
119             }
120
121         } # foreach cust_pkg
122     } # login_svcpart
123
124     my $hasPhone = 0;
125     foreach my $pkg ( @cust_pkg ) {
126         @cust_svc = @{$pkg->{cust_svc}};
127         foreach my $cust_svc ( @cust_svc ) {
128             @label = @{$cust_svc->{'label'}};
129             $hasPhone = 1 if $label[2] eq 'svc_phone';
130         }
131     }
132     if ( $hasPhone ) {
133         $link = "${url}didreport;type=";
134         $OUT .= "<BR><BR><BR>Download currently allocated DIDs:<BR>";
135         $OUT .= qq! &nbsp; <A HREF="${link}csv">CSV</A> | 
136             <A HREF="${link}xls">Excel</A>!;
137         $OUT .= "<BR><BR>Download recently allocated DIDs:<BR>";
138         $OUT .= qq! &nbsp; <A HREF="${link}csv;recentonly=1">CSV</A> | 
139             <A HREF="${link}xls;recentonly=1">Excel</A>!;
140     }
141     
142     $OUT .= "</TD></TR></TABLE>";
143 }
144 %>