<% 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 "".$cust_main->name."" } 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 "Upload Received" unless $did_order->received; "" . &$display_date($did_order->received) . ""; }, 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!Cancel! }, 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' => ' ', ) %> <%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!Add a bulk DID order

!; 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!Browse all DID orders!; } else { $html_init .= qq! Browse all non-stock orders with received unprovisioned DIDs !; } $html_init .= "

"; 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 = ""; } $merge_select; }; my $display_date = sub { my $date = shift; return '' unless $date; time2str($date_format, $date); };