X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fbrowse%2Fdid_order.html;h=f328c1fccb97513c5ca4dc195e787545182a4629;hp=3da8cb1bafc73041202c5a4a0219fb1df216d3e8;hb=877a4eb85cb847bd314d6a9192fedb1dc35c5d02;hpb=b5c4237a34aef94976bc343c8d9e138664fc3984 diff --git a/httemplate/browse/did_order.html b/httemplate/browse/did_order.html index 3da8cb1ba..f328c1fcc 100644 --- a/httemplate/browse/did_order.html +++ b/httemplate/browse/did_order.html @@ -4,10 +4,10 @@ 'name' => 'bulk DID orders', 'disableable' => 0, 'query' => $query, - 'count_query' => 'SELECT COUNT(*) FROM did_order', # XXX: this is wrong!? + 'count_query' => 'SELECT COUNT(*) FROM did_order', # XXX: this is wrong! 'header' => [ '#', 'Vendor',' Vendor Order #', 'Submitted', 'Confirmed', 'Customer', - 'Received', 'Provision', 'Cancel', + 'Received', 'Provision', 'Cancel', 'Merge Into', ], 'fields' => [ sub { my $did_order = shift; @@ -32,9 +32,19 @@ }, sub { # Customer my $did_order = shift; - my $cust_main = $did_order->cust_main; - return "Stock" unless $cust_main; - "".$cust_main->name.""; + 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; @@ -50,11 +60,11 @@ my @provisioned = $did_order->provisioned; return '' unless $did_order->received - && $did_order->custnum + && 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 All DIDs', + 'label' => 'Provision DIDs', 'actionlabel' => 'Bulk DID order - DID provisioning', 'width' => 520, 'height' => 300, @@ -68,6 +78,11 @@ . $did_order->ordernum . qq!', 'Cancel this order (#! . $did_order->ordernum . 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' ], @@ -78,6 +93,12 @@ 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 + "?"); + } ', ) @@ -90,27 +111,26 @@ die "access denied" my $conf = new FS::Conf; my $date_format = $conf->config('date_format') || '%m/%d/%Y'; -my $display_date = sub { - my $date = shift; - return '' unless $date; - time2str($date_format, $date); -}; - 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', }; -$query->{'hashref'}->{'custnum'} = $1 if $cgi->param('custnum') =~ /^(\d+)$/; +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'}->{'custnum'} = { 'op' => '>', 'value' => '0', }; + $query->{'hashref'}->{'svcnum'} = ''; $query->{'addl_from'} .= ' left join phone_avail using (ordernum) '; - $query->{'extra_sql'} .= ' and svcnum is null '; + $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 { @@ -118,7 +138,33 @@ else { 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); +}; +