diff options
Diffstat (limited to 'httemplate/browse/did_order.html')
| -rw-r--r-- | httemplate/browse/did_order.html | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/httemplate/browse/did_order.html b/httemplate/browse/did_order.html new file mode 100644 index 000000000..f328c1fcc --- /dev/null +++ b/httemplate/browse/did_order.html @@ -0,0 +1,170 @@ +<% include( 'elements/browse.html', + 'title' => 'Bulk DID Orders', + 'html_init' => $html_init, + 'name' => 'bulk DID orders', + 'disableable' => 0, + 'query' => $query, + 'count_query' => 'SELECT COUNT(*) FROM did_order', # XXX: this is wrong! + 'header' => [ '#', 'Vendor',' Vendor Order #', + 'Submitted', 'Confirmed', 'Customer', + 'Received', 'Provision', 'Cancel', 'Merge Into', + ], + 'fields' => [ sub { + my $did_order = shift; + $did_order->ordernum; + }, + 'vendorname', + 'vendor_order_id', + sub { &$display_date(shift->submitted); }, + sub { # Confirmed + my $did_order = shift; + my $ordernum = $did_order->ordernum; + return &$display_date($did_order->confirmed) + if $did_order->confirmed; + include( '/elements/popup_link.html', + { 'action' => "${p}misc/did_order_confirm.html?ordernum=$ordernum", + 'label' => 'Confirm', + 'actionlabel' => 'Confirm Bulk DID Order', + 'width' => 480, + 'height' => 300, + } + ) + }, + sub { # Customer + my $did_order = shift; + my @cust_main = $did_order->cust_main; + my $has_stock = $did_order->has_stock; + if (scalar(@cust_main) == 1 && !$has_stock) { + my $cust_main = $cust_main[0]; + return "<A HREF='${p}view/cust_main.cgi?".$cust_main->custnum."'>".$cust_main->name."</A>" + } + elsif(scalar(@cust_main) == 0 && $has_stock) { + return 'Stock'; + } + elsif(scalar(@cust_main) > 0 && !$has_stock) { + return 'Multiple'; + } + 'Multiple/Stock'; + }, + sub { # Received + my $did_order = shift; + my $ordernum = $did_order->ordernum; + return "<A HREF='${p}misc/phone_avail-import.html?ordernum=$ordernum'>Upload Received</A>" + unless $did_order->received; + "<A HREF='${p}search/phone_avail.html?ordernum=$ordernum'>" + . &$display_date($did_order->received) . "</A>"; + }, + sub { # Provision + my $did_order = shift; + my $ordernum = $did_order->ordernum; + my @provisioned = $did_order->provisioned; + return '' + unless $did_order->received + && scalar($did_order->cust_main) + && !scalar(@provisioned); + include( '/elements/popup_link.html', + { 'action' => "${p}misc/did_order_provision.html?ordernum=".$did_order->ordernum, + 'label' => 'Provision DIDs', + 'actionlabel' => 'Bulk DID order - DID provisioning', + 'width' => 520, + 'height' => 300, + } + ) + }, + sub { # Cancel + my $did_order = shift; + return '' unless !$did_order->received; + qq!<A HREF="javascript:areyousure('${p}misc/did_order_confirmed.html?action=cancel;ordernum=! + . $did_order->ordernum . qq!', 'Cancel this order (#! + . $did_order->ordernum . qq!)?')">Cancel</A>! + }, + sub { # Merge + my $did_order = shift; + return '' unless !$did_order->received; + &$merge_select($did_order->ordernum); + }, + ], + 'links' => [ + [ $p.'edit/did_order.html?', 'ordernum' ], + ], + 'html_foot' => ' + <script type="text/javascript"> + function areyousure(href,msg) { + if (confirm(msg)) + window.location.href = href; + } + + function mergeconfirm(select,source_ordernum) { + var target_ordernum = select.options[select.selectedIndex].value; + areyousure("'.$p.'misc/did_order_confirmed.html?action=merge;ordernum="+source_ordernum+";target_ordernum="+target_ordernum, + "Merge order #" + source_ordernum + " into order #" + target_ordernum + "?"); + } + </script> + ', + ) +%> +<%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">Add a bulk DID order</A> + <BR><BR>!; +my $query = { + 'table' => 'did_order', + 'hashref' => {}, + 'addl_from' => 'left join did_vendor using (vendornum) ', + 'order_by' => 'ORDER BY ordernum', + }; +if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { + $query->{'extra_sql'} .= " where (custnum = $1 or $1 in (select distinct " + . " custnum from did_order_item where " + . " did_order_item.ordernum = did_order.ordernum ) )"; +} +if ( $cgi->param('custrcvdunprov') ) { + $query->{'hashref'}->{'received'} = { 'op' => '>', 'value' => '0', }; + $query->{'hashref'}->{'svcnum'} = ''; + $query->{'addl_from'} .= ' left join phone_avail using (ordernum) '; + $query->{'extra_sql'} .= " and (custnum > 0 or 0 < (select count(1) from " + . " did_order_item where did_order_item.custnum > 0 and " + . " did_order_item.ordernum = did_order.ordernum) )"; + $html_init .= qq!<A HREF="${p}browse/did_order.html">Browse all DID orders</A>!; +} +else { + $html_init .= qq!<A HREF="${p}browse/did_order.html?custrcvdunprov=1"> + Browse all non-stock orders with received unprovisioned DIDs + </A>!; +} +$html_init .= "<BR><BR>"; + +my @merge_targets = qsearch({ + 'table' => 'did_order', + 'hashref' => { 'received' => '' }, + 'order_by' => 'ORDER BY ordernum', + }); + +my $merge_select = sub { + my $source_ordernum = shift; + my $merge_select = ''; + my @targets = grep { $_->ordernum != $source_ordernum } @merge_targets; + if ( @targets ) { + $merge_select = "<SELECT onchange='mergeconfirm(this,$source_ordernum)'><OPTION></OPTION>"; + foreach my $order ( @targets ) { + next if $order->ordernum == $source_ordernum; + $merge_select .= "<OPTION>".$order->ordernum."</OPTION>"; + } + $merge_select .= "</SELECT>"; + } + $merge_select; +}; + +my $display_date = sub { + my $date = shift; + return '' unless $date; + time2str($date_format, $date); +}; + +</%init> |
