From 6f7c51547a8604f0fb8e6350aa6b1f4618c6833f Mon Sep 17 00:00:00 2001 From: Mark Wells Date: Sat, 27 Feb 2016 19:29:32 -0800 Subject: sipwise export, #40097 --- httemplate/edit/svc_phone.cgi | 3 ++ .../elements/tr-select-svc_phone-forward.html | 50 ++++++++++++++++++++++ httemplate/view/svc_phone.cgi | 17 ++++++++ 3 files changed, 70 insertions(+) create mode 100644 httemplate/elements/tr-select-svc_phone-forward.html (limited to 'httemplate') diff --git a/httemplate/edit/svc_phone.cgi b/httemplate/edit/svc_phone.cgi index f1471e283..e74ffbb84 100644 --- a/httemplate/edit/svc_phone.cgi +++ b/httemplate/edit/svc_phone.cgi @@ -60,6 +60,9 @@ my $begin_callback = sub { type => 'text', maxlength => $conf->config('svc_phone-phone_name-max_length'), }, + { field => 'forward_svcnum', + type => 'select-svc_phone-forward', + }, 'forwarddst', 'email', diff --git a/httemplate/elements/tr-select-svc_phone-forward.html b/httemplate/elements/tr-select-svc_phone-forward.html new file mode 100644 index 000000000..ef9ef17e7 --- /dev/null +++ b/httemplate/elements/tr-select-svc_phone-forward.html @@ -0,0 +1,50 @@ +% if ( $hide ) { + + + +% } else { + <& tr-select-table.html, + 'table' => 'svc_acct', # for now + 'name_col' => 'email', + 'order_by' => 'order by username', + 'empty_label' => ' ', + %select_hash, + %opt + &> +% } +<%init> + +my %opt = @_; +my $pkgnum = $opt{pkgnum}; +my $svcpart = $opt{svcpart}; + +my $field = $opt{'field'} ||= 'forward_svcnum'; + +my $part_svc = FS::part_svc->by_key($svcpart); +# kludgey assumptions for now: +# - this is only used to route DIDs to their real destinations +# - which is a svc_acct +# - in the same package (part_export::svc_with_role assumes this) +# - and shares an export + +my $cust_pkg = FS::cust_pkg->by_key($pkgnum); +my @svcparts; +foreach my $part_export ( $part_svc->part_export ) { + foreach my $export_svc ( $part_export->export_svc ) { + push @svcparts, $export_svc->svcpart; + } +} + +$pkgnum =~ /^(\d+)$/ or die "bad pkgnum $pkgnum"; + +my %select_hash = ( + 'addl_from' => ' JOIN cust_svc USING (svcnum) ', + 'extra_sql' => "WHERE pkgnum = $pkgnum AND svcpart IN(". + join(',', @svcparts) . ")" +); + +my $hide = 0; +$hide = 1 if $part_svc->part_svc_column($field) eq 'F'; +$hide = 1 if !@svcparts; + + diff --git a/httemplate/view/svc_phone.cgi b/httemplate/view/svc_phone.cgi index ab69c4f6f..416f13841 100644 --- a/httemplate/view/svc_phone.cgi +++ b/httemplate/view/svc_phone.cgi @@ -18,6 +18,23 @@ my %labels = map { $_ => ( ref($fields->{$_}) my @fields = qw( countrycode phonenum sim_imsi ); push @fields, 'domain' if $conf->exists('svc_phone-domain'); + +$labels{forward_svcnum} = mt('Route to service'); +push @fields, { field => 'forward_svcnum', + link => [ $p.'view/cust_svc.cgi?', 'forward_svcnum' ], + value_callback => sub { + my $self = shift; + if ($self->forward_svcnum) { + my $cust_svc = FS::cust_svc->by_key($self->forward_svcnum); + if ( $cust_svc ) { + return $cust_svc->svc_x->label; + } + } + ''; + }, + }; + + push @fields, qw( pbx_title ); $labels{pbx_title} = 'PBX'; -- cgit v1.2.1