diff --git a/lib/NGCP/Panel/Widget/Plugin/AdminBillingOverview.pm b/lib/NGCP/Panel/Widget/Plugin/AdminBillingOverview.pm index 4f729e972a..5faa41aea4 100644 --- a/lib/NGCP/Panel/Widget/Plugin/AdminBillingOverview.pm +++ b/lib/NGCP/Panel/Widget/Plugin/AdminBillingOverview.pm @@ -30,29 +30,35 @@ around handle => sub { peering_sum => $c->model('DB')->resultset('contract_balances')->search_rs({ 'start' => { '>=' => $stime }, 'end' => { '<' => $etime}, - 'product.class' => 'sippeering', - }, { - join => { - 'contract' => { 'billing_mappings' => 'product' }, - }, + -exists => $c->model('DB')->resultset('billing_mappings')->search({ + contract_id => \'= me.contract_id', + 'product.class' => 'sippeering', + },{ + alias => 'myinner', + join => 'product', + })->as_query, })->get_column('cash_balance_interval')->sum, reseller_sum => $c->model('DB')->resultset('contract_balances')->search_rs({ 'start' => { '>=' => $stime }, 'end' => { '<' => $etime}, - 'product.class' => 'reseller', - }, { - join => { - 'contract' => { 'billing_mappings' => 'product' }, - }, + -exists => $c->model('DB')->resultset('billing_mappings')->search({ + contract_id => \'= me.contract_id', + 'product.class' => 'reseller', + },{ + alias => 'myinner', + join => 'product', + })->as_query, })->get_column('cash_balance_interval')->sum, customer_sum => $c->model('DB')->resultset('contract_balances')->search_rs({ 'start' => { '>=' => $stime }, 'end' => { '<' => $etime}, - 'billing_mappings.product_id' => undef, - }, { - join => { - 'contract' => 'billing_mappings', - }, + -exists => $c->model('DB')->resultset('billing_mappings')->search({ + contract_id => \'= me.contract_id', + 'product.class' => 'sipaccount', + },{ + alias => 'myinner', + join => 'product', + })->as_query, })->get_column('cash_balance_interval')->sum, ); return;