diff options
Diffstat (limited to 'httemplate')
| -rw-r--r-- | httemplate/browse/did_order.html | 65 | ||||
| -rw-r--r-- | httemplate/browse/did_vendor.html | 32 | ||||
| -rw-r--r-- | httemplate/edit/did_order.html | 46 | ||||
| -rw-r--r-- | httemplate/edit/did_vendor.html | 19 | ||||
| -rw-r--r-- | httemplate/edit/elements/edit.html | 5 | ||||
| -rw-r--r-- | httemplate/edit/process/did_order.html | 21 | ||||
| -rw-r--r-- | httemplate/edit/process/did_vendor.html | 11 | ||||
| -rw-r--r-- | httemplate/elements/menu.html | 3 | ||||
| -rw-r--r-- | httemplate/elements/tr-select-state.html | 19 | ||||
| -rw-r--r-- | httemplate/misc/phone_avail-import.html | 32 | 
10 files changed, 249 insertions, 4 deletions
diff --git a/httemplate/browse/did_order.html b/httemplate/browse/did_order.html new file mode 100644 index 000000000..54c2bd3fc --- /dev/null +++ b/httemplate/browse/did_order.html @@ -0,0 +1,65 @@ +<% include( 'elements/browse.html', +                 'title'       => 'Bulk DID Orders', +                 'html_init'   => $html_init, +                 'name'        => 'bulk DID orders', +                 'disableable' => 0, +                 'query'       => { 'table'     => 'did_order', +				    'addl_from' => 'left join did_vendor using (vendornum)  +						    left join lata using (latanum)', +                                    'hashref'   => {}, +                                    'order_by' => 'ORDER BY ordernum', +                                  }, +                 'count_query' => $count_query, +                 'header'      => $header, +                 'fields'      => $fields, +                 'links'       => $links, +             ) +%> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +my $conf = new FS::Conf; +my $date_format = $conf->config('date_format') || '%m/%d/%Y'; + +my $html_init =  +  qq!<A HREF="${p}edit/did_order.html"><I>Add a bulk DID order</I></A><BR><BR>!; + +my $count_query = 'SELECT COUNT(*) FROM did_order'; + +my $link = [ $p.'edit/did_order.html?', 'ordernum' ]; + +my $display_date = sub { +    my $date = shift; +    return '' unless $date; +    time2str($date_format, $date); +}; + +my $header = [ '#', 'Vendor',' Vendor Order #', 'MSA', 'LATA #', 'LATA',  +		'Rate Center', 'State', 'Quantity', 'Submitted', 'Confirmed', +		'Received',  +	    ]; +my $links  = [ ]; +my $fields = [  sub { +		    my $did_order = shift; +		    if($did_order->received) { +			push @$links, $link; +		    } +		    else { +			return $did_order->ordernum; +		    } +		}, 'vendorname', 'vendor_order_id', 'msa', 'latanum', +		'description', 'rate_center', 'state', 'quantity',  +		sub { &$display_date(shift->submitted); },  +		sub { &$display_date(shift->confirmed);	},  +		sub {  +		    my $did_order = shift; +		    my $ordernum = $did_order->ordernum; +		    return &$display_date($did_order->received)  +			if $did_order->received; +		    "<A HREF='${p}misc/phone_avail-import.html?ordernum=$ordernum'>Upload Received</A>"; +		},  +	     ]; + +</%init> diff --git a/httemplate/browse/did_vendor.html b/httemplate/browse/did_vendor.html new file mode 100644 index 000000000..04904ec63 --- /dev/null +++ b/httemplate/browse/did_vendor.html @@ -0,0 +1,32 @@ +<% include( 'elements/browse.html', +                 'title'       => 'Bulk DID Vendors', +                 'html_init'   => $html_init, +                 'name'        => 'bulk DID vendors', +                 'disableable' => 0, +                 'query'       => { 'table'     => 'did_vendor', +                                    'hashref'   => {}, +                                    'order_by' => 'ORDER BY vendornum', +                                  }, +                 'count_query' => $count_query, +                 'header'      => $header, +                 'fields'      => $fields, +                 'links'       => $links, +             ) +%> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $html_init =  +  qq!<A HREF="${p}edit/did_vendor.html"><I>Add a bulk DID vendor</I></A><BR><BR>!; + +my $count_query = 'SELECT COUNT(*) FROM did_vendor'; + +my $link = [ $p.'edit/did_vendor.html?', 'vendornum' ]; + +my $header = [ '#', 'Vendor' ]; +my $fields = [ 'vendornum', 'vendorname' ]; +my $links  = [ $link, $link ]; + +</%init> diff --git a/httemplate/edit/did_order.html b/httemplate/edit/did_order.html new file mode 100644 index 000000000..ac8f336d4 --- /dev/null +++ b/httemplate/edit/did_order.html @@ -0,0 +1,46 @@ +<% include( 'elements/edit.html', +              'fields' => [ +			    { field => 'vendornum', +			      type => 'select-table', +			      name_col => 'vendorname', +			      table => 'did_vendor', +			      disable_empty => 1, +			    }, +			    'vendor_order_id', +			    'msa', +			    { field => 'latanum', +			      type => 'select-table', +			      name_col => 'description', +			      table => 'lata', +			      disable_empty => 1, +			      label_showkey => 1, +			    }, +			    'rate_center', +			    { field => 'state', +			      type => 'select-state', +			      country => 'US', +			    }, +			    'quantity', +			    { field => 'confirmed', +			      type => 'input-date-field', +			    }, +                          ], +              'labels' => {  +			    'vendornum' => 'Vendor', +			    'vendor_order_id' => 'Vendor Order #', +			    'msa'	=> 'MSA', +			    'latanum' => 'LATA', +			    'rate_center' => 'Rate Center', +                          }, +              'viewall_dir' => 'browse', +	      'table' => 'did_order', +	      'name' => 'Bulk DID Order', +           ) +           +%> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +</%init> diff --git a/httemplate/edit/did_vendor.html b/httemplate/edit/did_vendor.html new file mode 100644 index 000000000..b6d57b548 --- /dev/null +++ b/httemplate/edit/did_vendor.html @@ -0,0 +1,19 @@ +<% include( 'elements/edit.html', +              'fields' => [ +                            'vendorname', +                          ], +              'labels' => {  +                            'vendorname'   => 'Vendor name', +                          }, +              'viewall_dir' => 'browse', +	      'table' => 'did_vendor', +	      'name' => 'Bulk DID Vendor', +           ) +           +%> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +</%init> diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html index cab5167c6..b0c27e62a 100644 --- a/httemplate/edit/elements/edit.html +++ b/httemplate/edit/elements/edit.html @@ -316,6 +316,11 @@ Example:  %     foreach grep exists($f->{$_}),  %       qw( formatted_value );  % +%   # select-country +%   $include_common{$_} = $f->{$_} +%     foreach grep exists($f->{$_}), +%       qw( country ); +%  %   #htmlarea  %   $include_common{$_} = $f->{$_}  %     foreach grep exists($f->{$_}), qw( width height ); diff --git a/httemplate/edit/process/did_order.html b/httemplate/edit/process/did_order.html new file mode 100644 index 000000000..0c9a3f0e0 --- /dev/null +++ b/httemplate/edit/process/did_order.html @@ -0,0 +1,21 @@ +<% include( 'elements/process.html', +               'table'       => 'did_order', +               'viewall_dir' => 'browse', +	       'value_callback' => $value_callback, +           ) +%> +<%init> + +unless($cgi->param('submitted')) { +    $cgi->param('submitted',time); +} + +my $value_callback = sub { +     my ($field, $value) = @_; +     ($field =~ /ed$/ && $value !~ /^\d+$/) ? parse_datetime($value) : $value; +}; + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +</%init> diff --git a/httemplate/edit/process/did_vendor.html b/httemplate/edit/process/did_vendor.html new file mode 100644 index 000000000..891a45392 --- /dev/null +++ b/httemplate/edit/process/did_vendor.html @@ -0,0 +1,11 @@ +<% include( 'elements/process.html', +               'table'       => 'did_vendor', +               'viewall_dir' => 'browse', +           ) +%> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +</%init> diff --git a/httemplate/elements/menu.html b/httemplate/elements/menu.html index 710850cc2..651b04d28 100644 --- a/httemplate/elements/menu.html +++ b/httemplate/elements/menu.html @@ -380,6 +380,8 @@ $tools_menu{'Process payment batches'} = [ $fsurl.'search/pay_batch.cgi?magic=_d       && $curuser->access_right('Process batches');  $tools_menu{'Download invoice batches'} = [ $fsurl.'search/bill_batch.cgi' ]     if $conf->exists('invoice_print_pdf'); +$tools_menu{'Bulk DID Orders'} =  [ $fsurl.'browse/did_order.html', 'View/manage bulk DID orders' ] +  if $curuser->access_right('Import');  $tools_menu{'Job Queue'} =  [ $fsurl.'search/queue.html', 'View pending job queue' ]    if $curuser->access_right('Job queue');  $tools_menu{'Ticketing'} = [ \%tools_ticketing, 'Ticketing tools' ] @@ -496,6 +498,7 @@ tie my %config_broadband, 'Tie::IxHash',  tie my %config_phone, 'Tie::IxHash',    'View/Edit phone device types' => [ $fsurl.'browse/part_device.html', 'Phone device types' ], +  'View/Edit bulk DID vendors' => [ $fsurl.'browse/did_vendor.html', 'Bulk DID vendors' ],  ;  tie my %config_misc, 'Tie::IxHash'; diff --git a/httemplate/elements/tr-select-state.html b/httemplate/elements/tr-select-state.html new file mode 100644 index 000000000..1a62ae561 --- /dev/null +++ b/httemplate/elements/tr-select-state.html @@ -0,0 +1,19 @@ +% unless ( $opt{'js_only'} ) { +    <% include('tr-td-label.html', @_ ) %> + +      <TD <% $style %>> +% } +         +	<% include( '/elements/select-state.html', %opt ) %> + +% unless ( $opt{'js_only'} ) { +      </TD> +    </TR> +% } +<%init> + +my %opt = @_; + +my $style = $opt{'cell_style'} ? 'STYLE="'. $opt{'cell_style'}. '"' : ''; + +</%init> diff --git a/httemplate/misc/phone_avail-import.html b/httemplate/misc/phone_avail-import.html index c664c0726..fcbfcc398 100644 --- a/httemplate/misc/phone_avail-import.html +++ b/httemplate/misc/phone_avail-import.html @@ -7,7 +7,7 @@ Import a file containing phone numbers (DIDs).                'name'      => 'PhonenumImportForm',                'action'    => 'process/phone_avail-import.html',                'num_files' => 1, -              'fields'    => [ 'format', 'availbatch', 'exportnum', 'countrycode' ], +              'fields'    => [ 'format', 'availbatch', 'exportnum', 'countrycode', 'ordernum' ],                'message'   => 'DID import successful',                'url'       => $p."search/phone_avail.html?availbatch=$availbatch",            ) @@ -15,10 +15,22 @@ Import a file containing phone numbers (DIDs).  <% &ntable("#cccccc", 2) %> -  <INPUT TYPE="hidden" NAME="format" VALUE="default">    <INPUT TYPE="hidden" NAME="availbatch" VALUE="<% $availbatch %>"> +% if ( $ordernum ) { +    <TR> +	<TD ALIGN="RIGHT">Bulk DID Order #</TD> +	<TD><% $ordernum %> +	    <INPUT TYPE="hidden" NAME="ordernum" VALUE="<% $ordernum %>"> +	</TD> +    </TR> +% }  +  <TR> +    <TD ALIGN="RIGHT">Import Format</TD> +    <TD><% $format %><INPUT TYPE="hidden" NAME="format" VALUE="<% $format %>"></TD> +  </TR> +    <% include( '/elements/tr-select-table.html',                  'table'       => 'part_export',                  'name_col'    => 'label', @@ -65,15 +77,18 @@ Import a file containing phone numbers (DIDs).  Uploaded files can be CSV (comma-separated value) files or Excel spreadsheets.  The file should have a .CSV or .XLS extension.  <BR><BR> -<b>Default</b> format has the following field order: <i>state, number, name</i> +<b>Default</b> format has the following field order: <i>state, number, name</i><br> +<b>Bulk</b> format has the following field order: <i>state, number, rate center, rate_center_abbrev</i>  <BR><BR> -  Field information:  <ul>    <li><i>state</i>: Two-letter state code, i.e. "CA"    <li><i>number</i>: Phone number    <li><i>name</i>: optional, rate center +  <li><i>rate center</i>: rate center (required) +  <li><i>rate_center_abbrev</i>: rate center abbreviation  </ul> +<BR><BR>  <% include('/elements/footer.html') %> @@ -84,6 +99,15 @@ die "access denied"  my $conf = new FS::Conf; +my $ordernum = $cgi->param('ordernum'); +$ordernum = '' unless $ordernum =~ /^\d+$/; + +die 'invalid ordernum'  +    unless (!$ordernum || qsearchs('did_order', { 'ordernum' => $ordernum })); + +my $format = 'default'; +$format = 'bulk' if $ordernum; +  my $availbatch =    time2str('webimport-%Y/%m/%d-%T'. "-$$-". rand() * 2**32, time);  | 
