+elsif ( $action eq 'provision' ) {
+ # XXX: most of this should move into did_order.pm and become transaction-enabled
+
+ $header = 'DID order provisioned';
+ my @dids = qsearch( 'phone_avail', { ordernum => $ordernum } );
+ die "no DIDs on order" unless scalar(@dids);
+ my @params = $cgi->param;
+ foreach my $param ( @params ) {
+ next unless $param =~ /^custnum(\d+)_pkgnum_svcpart$/;
+ my $custnum = $1;
+ my $value = $cgi->param($param);
+ next unless $value =~ /^(\d+)_(\d+)$/;
+ my $pkgnum = $1;
+ my $svcpart = $2;
+ if ( $did_order->custnum && $did_order->custnum == $custnum ) {
+ # per-order custnum case
+
+ foreach my $did ( @dids ) {
+ didprov($pkgnum,$svcpart,$did->npa.$did->nxx.$did->station);
+ last if $cgi->param('error');
+ }
+ }
+ elsif(!$did_order->custnum) { # multi-customer/stock case
+
+ # get each order item for this customer for this order
+ my @did_order_item = qsearch('did_order_item', {
+ 'ordernum' => $ordernum,
+ 'custnum' => $custnum,
+ });
+ foreach my $did_order_item ( @did_order_item ) {
+ # get imported unprovisioned DIDs for this order matching this order item
+ my $didsearch = { 'ordernum' => $ordernum,
+ 'svcnum' => '',
+ };
+ $didsearch->{'npa'} = $did_order_item->npa
+ if $did_order_item->npa;
+ $didsearch->{'state'} = $did_order_item->state
+ if $did_order_item->state;
+ $didsearch->{'name'} = $did_order_item->rate_center->description
+ if $did_order_item->rate_center;
+ $didsearch->{'msanum'} = $did_order_item->msanum
+ if $did_order_item->msanum;
+ $didsearch->{'latanum'} = $did_order_item->latanum
+ if $did_order_item->latanum;
+ @dids = qsearch('phone_avail', $didsearch);
+ my $limit = $did_order_item->quantity;
+ foreach my $did ( @dids ) {
+ didprov($pkgnum,$svcpart,$did->npa.$did->nxx.$did->station);
+ $limit--;
+ last if $cgi->param('error') || $limit == 0;
+ }
+ last if $cgi->param('error');
+ }
+ }
+ }
+ $popup = '-popup';
+}
+elsif ( $action eq 'merge' ) {
+ $header = 'DID order merged';
+ $cgi->param('target_ordernum') =~ /^(\d+)$/ or die 'illegal target_ordernum';
+ my $target_ordernum = $1;
+ my $target_did_order = qsearchs( {
+ 'table' => 'did_order',
+ 'hashref' => { 'ordernum' => $target_ordernum },
+ } );
+ die "No order $target_ordernum" unless $target_did_order;
+ $cgi->param('error',$target_did_order->merge($did_order));
+ $js = "window.location.href = '${p}browse/did_order.html'";
+}
+else {
+ die "illegal action";
+}
+
+$header = 'Error' if $cgi->param('error');
+