1 <% include( 'elements/browse.html',
2 'title' => 'Bulk DID Orders',
3 'html_init' => $html_init,
4 'name' => 'bulk DID orders',
7 'count_query' => 'SELECT COUNT(*) FROM did_order', # XXX: this is wrong!
8 'header' => [ '#', 'Vendor',' Vendor Order #',
9 'Submitted', 'Confirmed', 'Customer',
10 'Received', 'Provision', 'Cancel', 'Merge Into',
13 my $did_order = shift;
18 sub { &$display_date(shift->submitted); },
20 my $did_order = shift;
21 my $ordernum = $did_order->ordernum;
22 return &$display_date($did_order->confirmed)
23 if $did_order->confirmed;
24 include( '/elements/popup_link.html',
25 { 'action' => "${p}misc/did_order_confirm.html?ordernum=$ordernum",
27 'actionlabel' => 'Confirm Bulk DID Order',
34 my $did_order = shift;
35 my @cust_main = $did_order->cust_main;
36 my $has_stock = $did_order->has_stock;
37 if (scalar(@cust_main) == 1 && !$has_stock) {
38 my $cust_main = $cust_main[0];
39 return "<A HREF='${p}view/cust_main.cgi?".$cust_main->custnum."'>".$cust_main->name."</A>"
41 elsif(scalar(@cust_main) == 0 && $has_stock) {
44 elsif(scalar(@cust_main) > 0 && !$has_stock) {
50 my $did_order = shift;
51 my $ordernum = $did_order->ordernum;
52 return "<A HREF='${p}misc/phone_avail-import.html?ordernum=$ordernum'>Upload Received</A>"
53 unless $did_order->received;
54 "<A HREF='${p}search/phone_avail.html?ordernum=$ordernum'>"
55 . &$display_date($did_order->received) . "</A>";
58 my $did_order = shift;
59 my $ordernum = $did_order->ordernum;
60 my @provisioned = $did_order->provisioned;
62 unless $did_order->received
63 && scalar($did_order->cust_main)
64 && !scalar(@provisioned);
65 include( '/elements/popup_link.html',
66 { 'action' => "${p}misc/did_order_provision.html?ordernum=".$did_order->ordernum,
67 'label' => 'Provision DIDs',
68 'actionlabel' => 'Bulk DID order - DID provisioning',
75 my $did_order = shift;
76 return '' unless !$did_order->received;
77 qq!<A HREF="javascript:areyousure('${p}misc/did_order_confirmed.html?action=cancel;ordernum=!
78 . $did_order->ordernum . qq!', 'Cancel this order (#!
79 . $did_order->ordernum . qq!)?')">Cancel</A>!
82 my $did_order = shift;
83 return '' unless !$did_order->received;
84 &$merge_select($did_order->ordernum);
88 [ $p.'edit/did_order.html?', 'ordernum' ],
91 <script type="text/javascript">
92 function areyousure(href,msg) {
94 window.location.href = href;
97 function mergeconfirm(select,source_ordernum) {
98 var target_ordernum = select.options[select.selectedIndex].value;
99 areyousure("'.$p.'misc/did_order_confirmed.html?action=merge;ordernum="+source_ordernum+";target_ordernum="+target_ordernum,
100 "Merge order #" + source_ordernum + " into order #" + target_ordernum + "?");
109 unless $FS::CurrentUser::CurrentUser->access_right('Import');
111 my $conf = new FS::Conf;
112 my $date_format = $conf->config('date_format') || '%m/%d/%Y';
114 my $html_init = qq!<A HREF="${p}edit/did_order.html">Add a bulk DID order</A>
117 'table' => 'did_order',
119 'addl_from' => 'left join did_vendor using (vendornum) ',
120 'order_by' => 'ORDER BY ordernum',
122 if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
123 $query->{'extra_sql'} .= " where (custnum = $1 or $1 in (select distinct "
124 . " custnum from did_order_item where "
125 . " did_order_item.ordernum = did_order.ordernum ) )";
127 if ( $cgi->param('custrcvdunprov') ) {
128 $query->{'hashref'}->{'received'} = { 'op' => '>', 'value' => '0', };
129 $query->{'hashref'}->{'svcnum'} = '';
130 $query->{'addl_from'} .= ' left join phone_avail using (ordernum) ';
131 $query->{'extra_sql'} .= " and (custnum > 0 or 0 < (select count(1) from "
132 . " did_order_item where did_order_item.custnum > 0 and "
133 . " did_order_item.ordernum = did_order.ordernum) )";
134 $html_init .= qq!<A HREF="${p}browse/did_order.html">Browse all DID orders</A>!;
137 $html_init .= qq!<A HREF="${p}browse/did_order.html?custrcvdunprov=1">
138 Browse all non-stock orders with received unprovisioned DIDs
141 $html_init .= "<BR><BR>";
143 my @merge_targets = qsearch({
144 'table' => 'did_order',
145 'hashref' => { 'received' => '' },
146 'order_by' => 'ORDER BY ordernum',
149 my $merge_select = sub {
150 my $source_ordernum = shift;
151 my $merge_select = '';
152 my @targets = grep { $_->ordernum != $source_ordernum } @merge_targets;
154 $merge_select = "<SELECT onchange='mergeconfirm(this,$source_ordernum)'><OPTION></OPTION>";
155 foreach my $order ( @targets ) {
156 next if $order->ordernum == $source_ordernum;
157 $merge_select .= "<OPTION>".$order->ordernum."</OPTION>";
159 $merge_select .= "</SELECT>";
164 my $display_date = sub {
166 return '' unless $date;
167 time2str($date_format, $date);