summaryrefslogtreecommitdiff
path: root/httemplate/edit/bulk-part_pkg.html
blob: a1c6f0c9b19ad66c863ce9c02b82ad070c130fa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<& /elements/header.html, 'Edit package report classes' &>
%# change that title if we add any other editing controls

%# this should be centralized somewhere
<STYLE TYPE="text/css">
.row0 { background-color: #eeeeee; }
.row1 { background-color: #ffffff; }
</STYLE>

<FORM ACTION="process/bulk-part_pkg.html" METHOD="POST">
<DIV>
The following packages will be changed:<BR>
% foreach my $pkgpart (sort keys(%part_pkg)) {
<INPUT TYPE="hidden" NAME="pkgpart" VALUE="<% $pkgpart %>">
<% $part_pkg{$pkgpart}->pkg_comment |h %><BR>
% }
</DIV>
<BR>
<& /elements/table-grid.html &>\
<& /elements/tr-justtitle.html, value => mt('Report classes') &>
% my $row = 0;
% foreach my $num (sort keys %report_class) {
  <TR CLASS="row<%$row % 2%>">
    <TD>
%   if ( defined $initial_state{$num} ) {
      <& /elements/checkbox.html,
            field => 'report_option_'.$num,
            value => 1,
            curr_value => $initial_state{$num}
      &>
%   } else {
%     # needs to be a tristate so that you can say "don't change it"
      <& /elements/checkbox-tristate.html, field => 'report_option_'.$num &>
%   }
    </TD>
    <TD><% $report_class{$num}->name %></TD>
  </TR>
%   $row++;
% }
</TABLE>
<BR>
<INPUT TYPE="submit">
</FORM>
<& /elements/footer.html &>
<%init>
die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Bulk edit package definitions');
my @pkgparts = $cgi->param('pkgpart')
  or die "no package definitions selected";

my %part_pkg = map { $_ => FS::part_pkg->by_key($_) } @pkgparts;
my %part_pkg_option = map { $_ => { $part_pkg{$_}->options } } @pkgparts;
my %report_class = map { $_->num => $_ }
  qsearch('part_pkg_report_option', { disabled => '' });

my %initial_state;
foreach my $num (keys %report_class) {
  my $yes = 0;
  my $no = 0;
  foreach my $option (values %part_pkg_option) {
    if ( $option->{"report_option_$num"} ) {
      $yes = 1;
    } else {
      $no = 1;
    }
  }
  if ( $yes and $no ) {
    $initial_state{$num} = undef;
  } elsif ( $yes ) {
    $initial_state{$num} = 1;
  } elsif ( $no ) {
    $initial_state{$num} = 0;
  } # else, uh, you didn't provide any pkgparts
}
</%init>