Option to ignore old CDRs, RT#81480
[freeside.git] / httemplate / browse / reason_type.html
1 <& elements/browse.html,
2   'title'       => ucwords($classname) . " Reasons",
3   'html_init'   => $html_init,
4   'name'        => $classname . " reason types",
5   'query'       => { 'table'     => 'reason_type',
6                     'hashref'   => {},
7                     'extra_sql' => $where_clause .
8                                    'ORDER BY typenum',
9                   },
10   'count_query' => $count_query,
11   'header'      => [ '#',
12                     ucwords($classname) . ' Reason Type',
13                     ucwords($classname) . ' Reasons',
14                   ],
15   'fields'      => [ 'typenum',
16                     'type',
17                     $reasons_sub,
18                   ],
19   'links'       => [ $link,
20                     $link,
21                     '',
22                   ],
23   'disable_total' => 1,
24   'html_form'   => qq!<FORM ACTION="${p}misc/reason_merge.html" METHOD="POST">!,
25   'html_foot'   => $html_foot,
26 &>
27 <%init>
28
29 sub ucwords {
30   join(' ', map ucfirst($_), split(/ /, shift));
31 }
32
33 die "access denied"
34   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
35
36 $cgi->param('class') =~ /^(\w)$/ or die "illegal class";
37 my $class=$1;
38
39 my $classname = ucfirst($FS::reason_type::class_name{$class});
40
41 my $html_init = 'Reasons: ' .
42   include('/elements/menubar.html',
43     map {
44       ucfirst($FS::reason_type::class_name{$_}),
45       $p.'browse/reason_type.html?class=' .  $_
46     } keys (%FS::reason_type::class_name)
47   );
48
49 $html_init .= include('/elements/init_overlib.html').
50   '<BR><P>' .
51   $classname . ' reasons ' .
52   $FS::reason_type::class_purpose{$class} .
53   '. Reason types allow reasons to be grouped for reporting purposes.' .
54   qq!<BR><BR><A HREF="${p}edit/reason_type.html?class=$class"><I>! .
55   ($classname =~ /^[aeiou]/i ? 'Add an ' : 'Add a ') .
56   lc($classname) . ' reason type</I></A>'.
57   '</P>';
58
59 my $reasons_sub = sub {
60   my $reason_type = shift;
61
62   [ ( map {
63           [
64             {
65               'data'  => $_->reason,
66               'align' => 'left',
67               'link'  => $p. "edit/reason.html?class=$class&reasonnum=".
68                              $_->reasonnum,
69             },
70             {
71               'data'  => q!<INPUT TYPE="checkbox" NAME="reasonnum" VALUE="! . $_->reasonnum . q!">!,
72               'align' => 'right',
73             },
74           ];
75         }
76     $reason_type->enabled_reasons ),
77     [
78       {
79         'data'  => '(add)',
80         'align' => 'left',
81         'link'  => $p. "edit/reason.html?class=$class",
82         'data_style' => 'i',
83       },
84       { 'data'  => '' },
85     ]
86
87   ];
88   
89 };
90
91 my $where_clause = "WHERE class='$class'";
92 my $count_query = 'SELECT COUNT(*) FROM reason_type ';
93 $count_query .= $where_clause;
94
95 my $link = [ $p.'edit/reason_type.html?class='.$class.'&typenum=', 'typenum' ];
96
97 my $html_foot = include('/search/elements/checkbox-foot.html',
98   onclick  => include( '/elements/popup_link_onclick.html',
99                 js_action   => q!'! . "${p}misc/reason-merge.html?" . q!' + toCGIString()!,
100                 actionlabel => 'Merge reasons',
101               ),
102   label    => 'merge selected reasons',
103   minboxes => 2,
104 ) . '</FORM>';
105
106 </%init>