From: Ivan Kohler Date: Fri, 1 Feb 2013 10:52:19 +0000 (-0800) Subject: add advanced phone number search, RT#21054 X-Git-Url: http://git.freeside.biz/gitweb/?a=commitdiff_plain;h=4579f948711e183ce94667d2e956032c2e913716;p=freeside.git add advanced phone number search, RT#21054 --- diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm index 9bd3fd3e3..69671795f 100644 --- a/FS/FS/AccessRight.pm +++ b/FS/FS/AccessRight.pm @@ -293,6 +293,7 @@ tie my %rights, 'Tie::IxHash', 'Services: Hardware', 'Services: Hardware: Advanced search', 'Services: Phone numbers', + 'Services: Phone numbers: Advanced search', 'Services: PBXs', 'Services: Ports', 'Services: Mailing lists', diff --git a/FS/FS/access_right.pm b/FS/FS/access_right.pm index 32050a7cb..3562ae280 100644 --- a/FS/FS/access_right.pm +++ b/FS/FS/access_right.pm @@ -213,6 +213,7 @@ sub _upgrade_data { # class method 'Services: Accounts' => 'Services: Accounts: Advanced search', 'Services: Wireless broadband services' => 'Services: Wireless broadband services: Advanced search', 'Services: Hardware' => 'Services: Hardware: Advanced search', + 'Services: Phone numbers' => 'Services: Phone numbers: Advanced search', 'List rating data' => [ 'Usage: RADIUS sessions', 'Usage: Call Detail Records (CDRs)', diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index afe52fcf4..e30c52cd6 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -189,7 +189,7 @@ foreach my $svcdb ( FS::part_svc->svc_tables() ) { } elsif ( $svcdb eq 'svc_phone' ) { $report_svc{"${name}' total usage by time period"} = - [ $fsurl. 'search/report_svc_phone.html', + [ $fsurl. 'search/report_svc_phone_usage.html', 'Total usage (minutes, and amount billed) for the specified time period, per phone number.', ]; @@ -204,7 +204,7 @@ foreach my $svcdb ( FS::part_svc->svc_tables() ) { $report_svc{"Advanced $lcsname reports"} = [ $fsurl."search/report_$svcdb.html", '' ] - if $svcdb =~ /^svc_(acct|broadband|hardware)$/ + if $svcdb =~ /^svc_(acct|broadband|hardware|phone)$/ && $curuser->access_right("Services: $name: Advanced search"); if ( $svcdb eq 'svc_phone' ) { @@ -563,7 +563,7 @@ $config_misc{'Advertising sources'} = [ $fsurl.'browse/part_referral.html', 'Whe || $curuser->access_right('Edit global advertising sources'); if ( $curuser->access_right('Configuration') ) { $config_misc{'Virtual fields'} = [ $fsurl.'browse/part_virtual_field.cgi', 'Locally defined fields', ]; - $config_misc{'Message catalog'} = [ $fsurl.'browse/msgcat.html', 'Change error messages and other customizable labels for each locale' ]; + $config_misc{'Translation strings'} = [ $fsurl.'browse/msgcat.html', 'Translations and other customizable labels for each locale' ]; } $config_misc{'Inventory classes and inventory'} = [ $fsurl.'browse/inventory_class.html', 'Setup inventory classes and stock inventory' ] if $curuser->access_right('Edit inventory') diff --git a/httemplate/elements/select-part_svc.html b/httemplate/elements/select-part_svc.html index 72ab7f6b0..743b2852e 100644 --- a/httemplate/elements/select-part_svc.html +++ b/httemplate/elements/select-part_svc.html @@ -13,6 +13,9 @@ my( %opt ) = @_; $opt{'records'} = delete $opt{'part_svc'} if $opt{'part_svc'}; -$opt{'records'} ||= [ qsearch( 'part_svc', {} ) ]; # { disabled=>'' } ) +my %hash = (); +$hash{'svcdb'} = $opt{'svcdb'} if $opt{'svcdb'}; + +$opt{'records'} ||= [ qsearch( 'part_svc', \%hash ) ]; # { disabled=>'' } ) diff --git a/httemplate/elements/tr-select-part_svc.html b/httemplate/elements/tr-select-part_svc.html index af5148749..9d4508091 100644 --- a/httemplate/elements/tr-select-part_svc.html +++ b/httemplate/elements/tr-select-part_svc.html @@ -21,6 +21,9 @@ my( %opt ) = @_; -$opt{'part_svc'} ||= [ qsearch( 'part_svc', {} ) ]; # { disabled=>'' } ) +my %hash = (); +$hash{'svcdb'} = $opt{'svcdb'} if $opt{'svcdb'}; + +$opt{'part_svc'} ||= [ qsearch( 'part_svc', \%hash ) ]; # { disabled=>'' } ) diff --git a/httemplate/search/elements/report_svc_Common.html b/httemplate/search/elements/report_svc_Common.html new file mode 100644 index 000000000..04feb9e45 --- /dev/null +++ b/httemplate/search/elements/report_svc_Common.html @@ -0,0 +1,94 @@ +<%doc> + +Example: + + <& elements/report_svc_Common.html, + + #required + 'table' => 'svc_something', + 'title' => 'Page title', + + #optional + 'action' => 'svc_tablename.html', #defaults to svc_tablename.html + + &> + + +<& /elements/header.html, $title &> + +
+ + + + + + + + + +% unless ( $custnum ) { + <& /elements/tr-select-agent.html, + 'curr_value' => scalar( $cgi->param('agentnum') ), + 'disable_empty' => 0, + &> + +% # just this customer's domains? +%# <& /elements/tr-select-domain.html, +%# 'element_name' => 'domsvc', +%# 'curr_value' => scalar( $cgi->param('domsvc') ), +%# 'disable_empty' => 0, +%# &> +% } + + <& /elements/tr-selectmultiple-part_pkg.html &> + + <& /elements/tr-select-part_svc.html, 'svcdb'=>$svcdb &> + + + + + + + + + +% #"package fields" ala advanced svc_acct search? +% #move to /elements/tr-select-cust_pkg-fields and use it from there if so... + + <& /elements/tr-select-cust-fields.html &> + +
<% mt('Search options') |h %>
 
<% mt('Display options') |h %>
+ +
+ + +
+ +<& /elements/footer.html &> +<%init> + +my(%opt) = @_; + +my $svcdb = $opt{'table'}; + +my $name = "FS::$svcdb"->table_info->{'name_plural'} + || PL( "FS::$svcdb"->table_info->{'name'} ); + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right("Services: $name: Advanced search"); + +my $title = $opt{'title'}; + +#false laziness w/report_cust_pkg.html +my $custnum = ''; +if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { + $custnum = $1; + my $cust_main = qsearchs({ + 'table' => 'cust_main', + 'hashref' => { 'custnum' => $custnum }, + 'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql, + }) or die "unknown custnum $custnum"; + $title = mt("$title: [_1]", $cust_main->name); +} + + diff --git a/httemplate/search/report_svc_phone_usage.html b/httemplate/search/report_svc_phone_usage.html new file mode 100644 index 000000000..9f1042608 --- /dev/null +++ b/httemplate/search/report_svc_phone_usage.html @@ -0,0 +1,32 @@ +<% include('/elements/header.html', 'Phone number total usage' ) %> + +
+ + + + + + +%# +%# +%# + + <% include ( '/elements/tr-input-beginning_ending.html', prefix=>'usage' ) %> + +
+%# Search options +%#
+ +
+ + +
+ +<% include('/elements/footer.html') %> +<%init> + +#? 'List services' ? something new? +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('List rating data'); + + diff --git a/httemplate/search/svc_phone.cgi b/httemplate/search/svc_phone.cgi index 29434083f..7fadbbbb7 100644 --- a/httemplate/search/svc_phone.cgi +++ b/httemplate/search/svc_phone.cgi @@ -9,7 +9,7 @@ 'Country code', 'Phone number', @header, - FS::UI::Web::cust_header(), + FS::UI::Web::cust_header($cgi->param('cust_fields')), ], 'fields' => [ 'svcnum', 'svc', @@ -24,7 +24,7 @@ $link, ( map '', @header ), ( map { $_ ne 'Cust. Status' ? $link_cust : '' } - FS::UI::Web::cust_header() + FS::UI::Web::cust_header($cgi->param('cust_fields')) ), ], 'align' => 'rlrr'. @@ -119,6 +119,24 @@ if ( $cgi->param('magic') =~ /^(all|unlinked)$/ ) { } +} elsif ( $cgi->param('magic') =~ /^advanced$/ ) { + + if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { + push @extra_sql, "agentnum = $1"; + } + + my $pkgpart = [ grep /^(\d+)$/, $cgi->param('pkgpart') ]; + if ( @$pkgpart ) { + push @extra_sql, + 'cust_pkg.pkgpart IN ('. join(',', @$pkgpart ). ')'; + } + + my $svcpart = [ grep /^(\d+)$/, $cgi->param('svcpart') ]; + if ( @$svcpart ) { + push @extra_sql, + 'svcpart IN ('. join(',', @$svcpart ). ')'; + } + } elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) { push @extra_sql, "svcpart = $1"; } else {