X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fbrowse%2Fdid_order.html;h=f328c1fccb97513c5ca4dc195e787545182a4629;hb=48a5fc446d9855a513ce5845e5be67801a6d7c92;hp=54c2bd3fc6d9fa64fa9180c4ff71a9cb4f001f48;hpb=e356f2ebb6564fe8d5333fc89bb4583ee3cd1fb1;p=freeside.git
diff --git a/httemplate/browse/did_order.html b/httemplate/browse/did_order.html
index 54c2bd3fc..f328c1fcc 100644
--- a/httemplate/browse/did_order.html
+++ b/httemplate/browse/did_order.html
@@ -1,18 +1,106 @@
<% include( 'elements/browse.html',
'title' => 'Bulk DID Orders',
- 'html_init' => $html_init,
+ '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,
+ '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>
@@ -23,12 +111,55 @@ die "access denied"
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 $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 $count_query = 'SELECT COUNT(*) FROM did_order';
+my @merge_targets = qsearch({
+ 'table' => 'did_order',
+ 'hashref' => { 'received' => '' },
+ 'order_by' => 'ORDER BY ordernum',
+ });
-my $link = [ $p.'edit/did_order.html?', '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;
@@ -36,30 +167,4 @@ my $display_date = sub {
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;
- "Upload Received";
- },
- ];
-
%init>