TT#50802 Consider terminated subscribers in alias management

Alse renamed relation between voip_numbers and billing.voip_subscribers as primary number owners

Change-Id: I5343a6d4d3c3e4593d41cfabb30cb7ec84bfda0f
(cherry picked from commit e9486b891d)
changes/56/26856/1
Irina Peshinskaya 7 years ago
parent a7524aa20a
commit 2fec78fb29

@ -3088,11 +3088,30 @@ sub aliases_ajax :Chained('master') :PathPart('ordergroups') :Args(0) :Does(ACL)
my @alias_nums = ();
my $num_rs = $c->model('DB')->resultset('voip_numbers')->search_rs({
'subscriber.contract_id' => $subscriber->contract_id,
'voip_subscribers.id' => undef,
'primary_number_owners_active.id' => undef,
},{
prefetch => ['subscriber', 'voip_subscribers'],
prefetch => ['subscriber', 'primary_number_owners_active'],
});
##other variant of the correct query is:
#my $num_rs = $c->model('DB')->resultset('voip_numbers')->search_rs({
# 'subscriber.contract_id' => $subscriber->contract_id,
# -or => [
# 'me.id' => {'!=', { -ident => 'subscriber.primary_number_id' }},
# 'subscriber.status' => 'terminated',
# ],
#},{
# join => ['subscriber'],
#});
##produces query:
# SELECT `me`.`id`, `me`.`cc`, `me`.`ac`, `me`.`sn`, `me`.`reseller_id`, `me`.`subscriber_id`, `me`.`status`, `me`.`ported`, `me`.`list_timestamp`, ( concat(cc,' ',ac,' ',sn) ) AS `number`, `subscriber`.`username`
# FROM `billing`.`voip_numbers` `me`
# LEFT JOIN `billing`.`voip_subscribers` `subscriber` ON `subscriber`.`id` = `me`.`subscriber_id`
# WHERE ( ( ( `subscriber`.`id` != `subscriber`.`primary_number_id` OR `subscriber`.`status` = 'terminated' ) AND `subscriber`.`contract_id` = '789' ) ) ORDER BY `me`.`id`;
my $alias_columns = NGCP::Panel::Utils::Datatables::set_columns($c, [
{ name => "id", search => 1, title => $c->loc('#') },
{ name => "number", search => 1, title => $c->loc('Number'), literal_sql => "concat(cc,' ',ac,' ',sn)"},

@ -60,15 +60,15 @@ sub _item_rs {
if($c->req->param('type') && $c->req->param('type') eq "primary") {
$item_rs = $item_rs->search({
'voip_subscribers.id' => { '!=' => undef },
'primary_number_owners.id' => { '!=' => undef },
}, {
join => ['subscriber', 'voip_subscribers'],
join => ['subscriber', 'primary_number_owners'],
});
} elsif($c->req->param('type') && $c->req->param('type') eq "alias") {
$item_rs = $item_rs->search({
'voip_subscribers.id' => { '=' => undef },
'primary_number_owners.id' => { '=' => undef },
}, {
join => ['subscriber', 'voip_subscribers'],
join => ['subscriber', 'primary_number_owners'],
});
}
return $item_rs;

@ -1163,10 +1163,11 @@ sub update_subadmin_sub_aliases {
my $contract_id = $params{contract_id};
my $alias_selected = $params{alias_selected};
my $num_rs = $schema->resultset('voip_numbers')->search_rs({
'subscriber.contract_id' => $contract_id,
my $num_rs = $c->model('DB')->resultset('voip_numbers')->search_rs({
'subscriber.contract_id' => $subscriber->contract_id,
'primary_number_owners_active.id' => undef,
},{
prefetch => 'subscriber',
prefetch => ['subscriber', 'primary_number_owners_active'],
});
my $acli_pref_sub;
@ -1179,8 +1180,6 @@ sub update_subadmin_sub_aliases {
if($sadmin->provisioning_voip_subscriber && $c->config->{numbermanagement}->{auto_allow_cli});
for my $num ($num_rs->all) {
next if ($num->voip_subscribers->first); # is a primary number
my $cli = $num->cc . ($num->ac // '') . $num->sn;
my $tmpsubscriber;

Loading…
Cancel
Save