X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fsvc_phone.cgi;h=ef5cec66372ea08cd8d62c0c429798131d54c232;hp=78b849c8d43c170ca1ce83322aae9c2882666673;hb=c49cfd25a8f92c7a2f44b51d72506a21f6b8d09f;hpb=5e05724a635a22776f1b973f5d7e77989da4e048 diff --git a/httemplate/edit/svc_phone.cgi b/httemplate/edit/svc_phone.cgi index 78b849c8d..ef5cec663 100644 --- a/httemplate/edit/svc_phone.cgi +++ b/httemplate/edit/svc_phone.cgi @@ -1,17 +1,170 @@ -<% include( 'elements/svc_Common.html', - 'name' => 'Phone number', - 'table' => 'svc_phone', - 'fields' => [qw( countrycode phonenum )], #pin - 'labels' => { - 'countrycode' => 'Country code', - 'phonenum' => 'Phone number', - 'pin' => 'PIN', - }, - ) -%> +<& elements/svc_Common.html, + 'table' => 'svc_phone', + 'fields' => [], + 'begin_callback' => $begin_callback, + 'svc_new_callback' => $svc_callback, + 'svc_edit_callback' => $svc_callback, + 'svc_error_callback' => $svc_callback, +&> <%init> +my $conf = new FS::Conf; -die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('Provision customer service'); #something else more specific? +my $begin_callback = sub { + my( $cgi, $fields, $opt ) = @_; + my $bulk = $cgi->param('bulk') ? 1 : 0; + + my $right = $bulk ? 'Bulk provision customer service' + : 'Provision customer service'; + + die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right($right); + + push @$fields, + 'countrycode', + { field => 'phonenum', + type => 'select-did', + label => 'Phone number', + multiple => $bulk, + }, + { field => 'sim_imsi', + type => 'text', + size => 15, + maxlength => 15, + }; + + push @$fields, { field => 'domsvc', + type => 'select-svc-domain', + label => 'Domain', + } + if $conf->exists('svc_phone-domain'); + + push @$fields, { field => 'pbxsvc', + type => 'select-svc_pbx', + label => 'PBX', + }; + + if ( $bulk ) { + + push @$fields, { field => 'bulk', + type => 'hidden', + value => '1', + }; + + } else { + + push @$fields, + 'sip_password', + 'pin', + { field => 'phone_name', + type => 'text', + maxlength => $conf->config('svc_phone-phone_name-max_length'), + }, + { field => 'forward_svcnum', + type => 'select-svc_phone-forward', + }, + 'forwarddst', + 'email', + + { value => 'E911 Information', + type => 'tablebreak-tr-title', + colspan => 8, + }, + { field => 'locationnum', + type => 'select-cust_location', + label => 'E911 location', + include_opt_callback => sub { + my $svc_phone = shift; + my $pkgnum = $svc_phone->get('pkgnum') + || $cgi->param('pkgnum') + || $svc_phone->cust_svc->pkgnum; #hua? + #cross agent location exposure? sheesh + my $cust_pkg = qsearchs('cust_pkg', {'pkgnum' => $pkgnum}); + my $cust_main = $cust_pkg ? $cust_pkg->cust_main : ''; + ( 'no_bold' => 1, + 'cust_pkg' => $cust_pkg, + 'cust_main' => $cust_main, + ); + }, + }, + { field => 'e911_class', + type => 'select', + options => [ keys(%{ FS::svc_phone->e911_classes }) ], + labels => FS::svc_phone->e911_classes, + }, + { field => 'e911_type', + type => 'select', + options => [ keys(%{ FS::svc_phone->e911_types }) ], + labels => FS::svc_phone->e911_types, + }, + { field => 'custnum', type=> 'hidden' }, #for new cust_locations + ; + } + + if ( $conf->exists('svc_phone-lnp') && !$bulk ) { + push @$fields, + { value => 'Number Portability', + type => 'tablebreak-tr-title', + colspan => 8, + }, + 'lnp_reject_reason', + { field => 'portable', + type => 'checkbox', + }, + 'lrn', + { field => 'lnp_desired_due_date', + type => 'input-date-field', + }, + { field => 'lnp_due_date', + type => 'input-date-field', + noinit => 1, + }, + 'lnp_other_provider', + 'lnp_other_provider_account', + ; + } + + if ( ! $bulk ) { + + push @$fields, + { + type => 'tablebreak-tr-title', + value => 'Carrier Information', + colspan => 8, + }, + { field => 'sip_server', + type => 'select-sip_server', + }, + { field => 'sms_carrierid', + label => 'SMS Carrier', + type => 'select-cdr_carrier', + }, + 'sms_account', + 'max_simultaneous', + ; + + } + +}; # begin_callback + +# svc_edit_callback / svc_new_callback +my $svc_callback = sub { + my ($cgi, $svc_x, $part_svc, $cust_pkg, $fields, $opt) = @_; + + push @$fields, { + field => 'circuit_svcnum', + type => 'select-svc_circuit', + cust_pkg => $cust_pkg, + part_svc => $part_svc, + }; + + if ( $cust_pkg and not $svc_x->svcnum ) { + # new service, default to package location + $svc_x->set('locationnum', $cust_pkg->locationnum); + } + + if ( not $conf->exists('showpasswords') and $svc_x->svcnum ) { + $svc_x->sip_password('*HIDDEN*'); + } +};