summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-02-25 17:10:56 -0800
committerMark Wells <mark@freeside.biz>2016-02-25 17:11:10 -0800
commit6fd39bf8dfa989aaedea59e5e3cd609642f9e024 (patch)
tree7193097a1977ec9e91d120f5fe4c3c09a6b65ca4 /httemplate
parent808fdb0f9c2b3468cda54cc92a945a1fcd9ee7f4 (diff)
sipwise export, part 2
Diffstat (limited to 'httemplate')
-rw-r--r--httemplate/edit/svc_phone.cgi3
-rw-r--r--httemplate/elements/tr-select-svc_phone-forward.html50
-rw-r--r--httemplate/view/svc_phone.cgi17
3 files changed, 70 insertions, 0 deletions
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 ) {
+ <tr style="display: none"><td>
+ <INPUT TYPE="hidden" NAME="<% $opt{field} %>" VALUE="<% $opt{curr_value}%>">
+ </td></tr>
+% } 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;
+
+</%init>
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';