+<& elements/svc_Common.html,
+ 'table' => 'svc_phone',
+ 'args_callback' => $args_callback,
+ 'value_callback' => $value_callback,
+ 'edit_callback' => $edit_callback,
+ %opt,
+&>
+<%init>
+
+my %opt = ();
+if ( $cgi->param('bulk') ) {
+ $opt{'bulk'} = 'phonenum';
+
+ my $cust_pkg = qsearchs('cust_pkg', { pkgnum=>scalar($cgi->param('pkgnum')) })
+ or die "unknown pkgnum";
+ my $custnum = $cust_pkg->custnum;
+
+ my $show =
+ $FS::CurrentUser::CurrentUser->default_customer_view =~ /^(jumbo|packages)$/
+ ? ''
+ : ';show=packages';
+ #my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
+ $opt{'redirect'}= popurl(3)."view/cust_main.cgi?custnum=$custnum$show;dummy=";
+}
+
+my $right = $opt{'bulk'} ? 'Bulk provision customer service'
+ : 'Provision customer service';
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right($right);
+
+$cgi->param('phonenum', $cgi->param('phonenum_manual') )
+ if $cgi->param('phonenum_which') eq 'phonenum_manual';
+
+my $tollfreephonenum = $cgi->param('tollfreephonenum');
+$cgi->param('phonenum',$tollfreephonenum) if $tollfreephonenum =~ /^\d+$/;
+
+my $args_callback = sub {
+ my( $cgi, $object ) = @_;
+
+ my %opt = ();
+ if ( $cgi->param('locationnum') == -1 ) {
+ my $cust_location = FS::cust_location->new({
+ map { $_ => scalar($cgi->param($_)) }
+ qw( custnum address1 address2 city county state zip country )
+ });
+ $opt{'cust_location'} = $cust_location;
+ }
+
+ %opt;
+
+};
+
+my $value_callback = sub {
+ my ($field, $value) = @_;
+ ($field =~ /_date$/) ? parse_datetime($value) : $value;
+};
+
+my $edit_callback = sub {
+ my( $new, $old ) = @_;
+ $new->sip_password( $old->sip_password ) if $new->sip_password eq '*HIDDEN*';
+};
+
+</%init>