fix wa_tax_rate_update script to skip zero rates, #73226
[freeside.git] / httemplate / browse / part_pkg_usage.html
1 <& /elements/header.html, 'Package usage minutes' &>
2 <& /elements/menubar.html, 'Package definitions', $p.'browse/part_pkg.cgi' &>
3 <STYLE TYPE="text/css">
4 .pkg_head {
5   background-color: #dddddd;
6   font-style: italic;
7 }
8 .pkg_head > td {
9   border-style: solid;
10   border-radius: 3px;
11   border-color: #555555;
12   border-width: 1px;
13 }
14 .usage > td {
15   text-align: center;
16 }
17 .error {
18   color: #ff0000;
19 }
20 </STYLE>
21 <FORM METHOD="POST" ACTION="<%$fsurl%>edit/process/part_pkg_usage.html">
22   <TABLE STYLE="margin-top: 1em">
23     <TR>
24       <TH>Minutes</TH>
25       <TH>Shared</TH>
26       <TH>Rollover</TH>
27       <TH>Description</TH>
28       <TH>Priority</TH>
29 %   foreach my $class (@usage_class) {
30       <TH><% $class->classname %></TH>
31 %   }
32     </TR>
33
34 % my $error = $cgi->param('error');
35 % foreach my $part_pkg (@part_pkg) {
36 %   my $pkgpart = $part_pkg->pkgpart;
37 %   my @part_pkg_usage;
38 %   if ( $error ) {
39 %     @part_pkg_usage = @{ $error->{$pkgpart} };
40 %   } else {
41 %     @part_pkg_usage = $part_pkg->part_pkg_usage;
42 %     foreach my $usage (@part_pkg_usage) {
43 %       foreach ($usage->classnums) {
44 %         $usage->set("class$_".'_', 'Y');
45 %       }
46 %     }
47 %   }
48     <TR CLASS="pkg_head" ID="pkgpart<%$pkgpart%>">
49       <TD COLSPAN=<%$n_cols%>><% $part_pkg->pkg_comment %></TD>
50 %   # make it easy to enumerate the pkgparts later
51       <INPUT TYPE="hidden" NAME="pkgpart" VALUE="<% $pkgpart %>">
52     </TR>
53 %   # template row
54     <TR id="pkgpart<%$pkgpart%>_template" CLASS="usage">
55       <TD>
56         <INPUT TYPE="hidden" NAME="pkgusagepart">
57         <INPUT TYPE="text" NAME="minutes" ID="minutes" SIZE=7>
58       </TD>
59 %     foreach (qw(shared rollover)) {
60       <TD>
61         <INPUT TYPE="checkbox" NAME="<% $_ %>" ID="<% $_ %>" VALUE="Y">
62       </TD>
63 %     }
64       <TD>
65         <INPUT TYPE="text" NAME="description" ID="description" SIZE=20>
66       </TD>
67       <TD>
68         <INPUT TYPE="text" NAME="priority" ID="priority" SIZE=3>
69       </TD>
70 %     foreach (@usage_class) {
71 %       my $classnum = 'class' . $_->classnum . '_';
72       <TD>
73         <INPUT TYPE="checkbox" NAME="<% $classnum %>" ID="<% $classnum %>" VALUE="Y">
74       </TD>
75 %     }
76     </TR>
77     <& /elements/auto-table.html,
78       table         => "pkgpart$pkgpart",
79       template_row  => "pkgpart$pkgpart".'_template',
80       data          => \@part_pkg_usage,
81     &>
82 %   }
83   </TABLE>
84   <BR>
85   <INPUT TYPE="submit">
86 </FORM>
87 <& /elements/footer.html &>
88 <%init>
89 my $curuser = $FS::CurrentUser::CurrentUser;
90 die "access denied"
91   unless $curuser->access_right(
92     ['Edit package definitions', 'Edit global package definitions']
93   );
94
95 my @where = ("(plan = 'voip_cdr' OR plan = 'voip_inbound')",
96              "freq != '0'",
97              "disabled IS NULL");
98 push @where, FS::part_pkg->curuser_pkgs_sql
99   unless $curuser->access_right('Edit global package definitions');
100 my $extra_sql = ' WHERE '.join(' AND ', @where);
101 my @part_pkg = qsearch({
102   'table'     => 'part_pkg',
103   'extra_sql' => $extra_sql,
104   'order_by'  => ' ORDER BY pkgpart',
105 });
106
107 my @usage_class = sort { $a->weight <=> $b->weight } 
108   qsearch('usage_class', { disabled => '' });
109
110 my $n_usage_classes = scalar(@usage_class);
111 my $n_cols = $n_usage_classes + 5; # minutes, shared, rollover, desc, prio
112 </%init>