message templates, RT#8896
[freeside.git] / httemplate / browse / rate_detail.html
1 <% include('/elements/init_overlib.html') %>
2 <% include('/elements/header.html',$title) %>
3 <% include('/elements/menubar.html',@menubar) %>
4 <BR><BR>
5 <% include('/elements/table-grid.html') %>
6 <TR>
7 % my $col = 0;
8 % foreach (@header) {
9 %   my $hlink = $hlinks[$col];
10   <TH CLASS   = "grid",
11       BGCOLOR = "#cccccc">
12   <% $hlink ? qq!<A HREF="$hlink">$_</A>! : $_ %>
13   </TH>
14 %   $col++;
15 % } #foreach @header
16 </TR><TR>
17 % my $row = 0;
18 % foreach my $region (@rate_region) {
19 %   $col = 0;
20 %   foreach ($region->regionname, $region->prefixes_short) {
21   <TD>
22     <A HREF="<% $p.'edit/rate_region.cgi?'.$region->regionnum %>"><% $_ %></A>
23   </TD>
24 %   }
25 %   foreach my $rate_time (@rate_time, '') {
26   <TD>
27 %     my $detail = $details[$row][$col];
28 %     if($detail) {
29       <TABLE CLASS="inv" STYLE="border:none">
30       <TR><TD><% edit_link($detail) %><% $money_char.$detail->min_charge %>
31               <% $detail->sec_granularity ? ' / minute':' / call' %>
32       <% $edit_hint %></A>
33       </TD></TR>
34       <% granularity_detail($detail) %>
35       <% min_included_detail($detail) %>
36       <% conn_charge_detail($detail) %>
37       <TR><TD><% $rate_time ? delete_link($detail) : '' %></TD></TR>
38     </TABLE>
39 %     }
40 %     else { #!$detail
41     <% add_link($ratenum, $region, $rate_time) %>
42 %     }
43 %     $col++;
44   </TD>
45 %   } # foreach @rate_time
46 </TR>
47 %   $row++;
48 % }# foreach @rate_region
49 <% include('/elements/footer.html') %>
50
51 <%once>
52
53 tie my %granularity, 'Tie::IxHash', FS::rate_detail::granularities();
54 tie my %conn_secs,   'Tie::IxHash', FS::rate_detail::conn_secs();
55
56 my $conf = new FS::Conf;
57 my $money_char = $conf->config('money_char') || '$';
58
59 my @menubar = ( 'Rate plans' => $p.'browse/rate.cgi',
60                 'Regions and Prefixes' => $p.'browse/rate_region.html',
61                 'Time Periods' => $p.'browse/rate_time.html',
62                 );
63
64 sub small {
65   '<FONT SIZE="-1">'.shift.'</FONT>'
66 }
67 my $edit_hint = small('(edit)');
68
69 sub edit_link {
70   my $rate_detail = shift;
71   my $ratedetailnum = $rate_detail->ratedetailnum;
72   '<A HREF="javascript:void(0);" onclick="'.
73   include( '/elements/popup_link_onclick.html',
74              'action'      => "${p}edit/rate_detail.html?$ratedetailnum",
75              'actionlabel' => 'Edit rate',
76              'height'      => 420,
77              #default# 'width'       => 540,
78              #default# 'color'       => '#333399',
79          ) . '">'
80 }
81
82 sub add_link {
83   my ($ratenum, $region, $rate_time) = @_;
84   '<A HREF="javascript:void(0);" onclick="'.
85   include( '/elements/popup_link_onclick.html',
86              'action'      => "${p}edit/rate_detail.html?ratenum=$ratenum".
87                                ';dest_regionnum='.$region->regionnum.
88                                ($rate_time ? 
89                                  ';ratetimenum='.$rate_time->ratetimenum :
90                                  ''),
91              'actionlabel' => 'Add rate',
92              'height'      => 420,
93              ).'">'.small('(add)').'</A>'
94 }
95
96 sub delete_link {
97   my $rate_detail = shift;
98   my $ratedetailnum = $rate_detail->ratedetailnum;
99   my $onclick = include( '/elements/popup_link_onclick.html',
100              'action'      => "${p}misc/delete-rate_detail.html?$ratedetailnum",
101              'actionlabel' => 'Delete rate',
102              'width'       => 510,
103              'height'      => 315,
104              'frame'       => 'top',
105              );
106   $onclick = "if(confirm('Delete this rate?')) { $onclick }";
107   qq!<A HREF="javascript:void(0);" onclick="$onclick">!.small('(delete)').'</A>'
108 }
109
110 sub granularity_detail {
111   my $rate_detail = shift;
112   if($rate_detail->sec_granularity != 60 && $rate_detail->sec_granularity > 0) {
113     '<TR><TD>'.
114     small('in '.$granularity{$rate_detail->sec_granularity}.' increments').
115     '</TD></TR>';
116   }
117   else { '' }
118 }
119
120 sub min_included_detail {
121   my $rate_detail = shift;
122   if($rate_detail->min_included) {
123     '<TR><TD>'.
124     small( $rate_detail->min_included . 
125             ($rate_detail->sec_granularity ? 
126              ' minutes included' : 
127              ' calls included') ).
128     '</TD></TR>'
129   }
130   else { '' }
131 }
132
133 sub conn_charge_detail {
134   my $rate_detail = shift;
135   if($rate_detail->conn_charge > 0) {
136   #return '' unless $rate_detail->conn_charge > 0 || $rate_detail->conn_sec;
137     '<TR><TD>'.
138     small( $money_char. $rate_detail->conn_charge.
139       ' for '.$conn_secs{$rate_detail->conn_sec}
140     ).
141     '</TD></TR>'
142   }
143   else { '' }
144 }
145
146 </%once>
147 <%init>
148
149 die "access denied"
150   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
151
152 $cgi->param('ratenum') =~ /^(\d+)$/ or die "unparsable ratenum";
153 my $ratenum = $1;
154 my $rate = qsearchs('rate', { 'ratenum' => $ratenum } )
155   or die "unknown ratenum $ratenum";
156 my $ratename = $rate->ratename;
157 my $title = "$ratename rates";
158
159 my $where;
160 if ( $cgi->param('countrycode') =~ /^(\d+)$/ ) { 
161   my $countrycode = $1;
162   $where = "WHERE 0 < ( SELECT COUNT(*) FROM rate_prefix
163                         WHERE rate_prefix.regionnum = rate_region.regionnum
164                           AND countrycode = '$countrycode'
165                     )
166                ";
167   $title .= " for +$countrycode";
168 }
169
170 my @rate_region = qsearch({ table     => 'rate_region',
171                             hashref   => {},
172                             extra_sql => $where,
173                           });
174
175 my @rate_time = qsearch('rate_time', {});
176 my @header = ('Region', 'Prefix(es)',
177   map( { $_->ratetimename } @rate_time ),
178   '(default)');
179 my @hlinks = map {''} @header;
180
181 my @rtns = ( map( { $_->ratetimenum } @rate_time ), '' );
182 my @details;
183 foreach my $region (@rate_region) {
184    push @details, [ map { qsearchs('rate_detail', 
185                                     { 'ratenum'        => $ratenum,
186                                       'dest_regionnum' => $region->regionnum,
187                                       'ratetimenum'    => $_ } ) or ''
188                         } @rtns ];
189 }
190
191 </%init>