X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Felements%2Frate_detail.html;h=73f65d5420c21225d679ee247bfbb174c6b0bddb;hb=c15c4b8b1afa91049915f77503487e663554938b;hp=32dd502cec50ef54b4cb14afc8814254bfface3e;hpb=80c2d997c5c983344c530ecbb46f94f1c299b35f;p=freeside.git diff --git a/httemplate/edit/elements/rate_detail.html b/httemplate/edit/elements/rate_detail.html index 32dd502ce..73f65d542 100644 --- a/httemplate/edit/elements/rate_detail.html +++ b/httemplate/edit/elements/rate_detail.html @@ -33,9 +33,9 @@ with row headers showing the region name and prefixes. % $col = 0; % if ( !$opt{'regionnum'} ) { % $region = $r; -% foreach ($r->regionname, $r->prefixes_short) { +% foreach ($r->regionname, $r->prefixes_short_sql) { - <% $_ %> + <% $_ |h %> % } % } @@ -252,29 +252,46 @@ my @rtns = ( map( { $_->ratetimenum } @rate_time ), '' ); my @details; my @rows; + +my %rate_region = ( + 'select' => 'rate_region.*, '. + "STRING_AGG(countrycode || ' ' || npa, ',') AS prefixes", + 'table' => 'rate_region', + 'addl_from' => 'LEFT JOIN rate_prefix USING ( regionnum ) ', + 'extra_sql' => 'GROUP BY ( rate_region.regionnum )', + 'order_by' => 'ORDER BY ( regionname )', +); + if ( $ratenum ) { + if ( $regionnum ) { - @rows = qsearch('rate_region', - { ratenum => $ratenum, regionnum => $regionnum }); - } - else { - my $where = ''; + + @rows = qsearch({ + %rate_region, + 'hashref' => { ratenum => $ratenum, regionnum => $regionnum }, + }); + + } else { + if ( $opt{'countrycode'} ) { - $where = "WHERE 0 < ( + $rate_region{extra_sql} = + "WHERE 0 < ( SELECT COUNT(*) FROM rate_prefix WHERE rate_prefix.regionnum = rate_region.regionnum AND countrycode = '$opt{countrycode}' - )"; + ) ". + $rate_region{extra_sql}; } - @rows = qsearch({ table => 'rate_region', + @rows = qsearch({ %rate_region, hashref => {}, - extra_sql => $where, - }); + }); #die "no region found" if !@rows; unshift @header, 'Region', 'Prefix(es)'; unshift @hlinks, '', ''; + } + foreach my $region (@rows) { push @details, [ map { qsearchs('rate_detail', { 'ratenum' => $ratenum, @@ -284,8 +301,9 @@ if ( $ratenum ) { } @rtns ]; } -} -elsif ( $regionnum ) { + +} elsif ( $regionnum ) { + @rows = qsearch('rate', {}) or die "no rate plans found"; unshift @header, 'Rate plan'; unshift @hlinks, ''; @@ -298,8 +316,8 @@ elsif ( $regionnum ) { } @rtns ]; } -} -else { + +} else { die "no ratenum or regionnum specified"; }