% 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);
};
%init>