diff --git a/lib/NGCP/Panel/Utils/Contract.pm b/lib/NGCP/Panel/Utils/Contract.pm index ec0cb6099f..fc56dcec87 100644 --- a/lib/NGCP/Panel/Utils/Contract.pm +++ b/lib/NGCP/Panel/Utils/Contract.pm @@ -332,18 +332,19 @@ sub get_contract_calls_rs { my %params = @_; my($c,$contract_id,$stime,$etime,$call_direction,$category) = @params{qw/c contract_id stime etime call_direction category/}; + my $target; + if ($call_direction) { + if ($call_direction eq "in") { + $target = 'destination'; + } elsif ($call_direction eq "out") { + $target = 'source'; + } + } + return unless $target; + $stime ||= NGCP::Panel::Utils::DateTime::current_local()->truncate( to => 'month' ); $etime ||= $stime->clone->add( months => 1 ); - my $q = { - 'call_status' => 'ok', - 'start_time' => - [ -and => - { '>=' => $stime->epoch}, - { '<=' => $etime->epoch}, - ], - }; - my $contract = $c->model('DB')->resultset('contracts')->find({ id => $contract_id }); my $class; $class = $contract->product()->class() if $contract; @@ -367,16 +368,26 @@ sub get_contract_calls_rs { } $category = 'carrier' if $category eq 'peer'; $category = 'customer' if $category eq 'did'; + + my $q = { + 'call_status' => 'ok', + 'start_time' => + [ -and => + { '>=' => $stime->epoch}, + { '<=' => $etime->epoch}, + ], + $target . '_' . $contract_type . '_id' => $contract_id, + }; my @cols = (); push(@cols,qw/source_user source_domain source_cli destination_user_in/); #push(@cols,NGCP::Panel::Utils::CallList::get_suppression_id_colnames()); push(@cols,qw/start_time duration call_type/); - push(@cols,'source_' . $category . '_cost'); my @colnames = @cols; - push(@cols,'source_' . $category . '_billing_zones_history.zone'); - push(@cols,'source_' . $category . '_billing_zones_history.detail'); - push(@colnames,qw/zone zone_detail/); + push(@cols,$target . '_' . $category . '_cost'); + push(@cols,$target . '_' . $category . '_billing_zones_history.zone'); + push(@cols,$target . '_' . $category . '_billing_zones_history.detail'); + push(@colnames,qw/cost zone zone_detail/); my $calls_rs = $c->model('DB')->resultset('cdr')->search($q,{ select => \@cols, @@ -388,26 +399,26 @@ sub get_contract_calls_rs { if ($call_direction) { if ($call_direction eq "in") { - $calls_rs = $calls_rs->search({ - 'destination_' . $contract_type . '_id' => $contract_id, - }); + #$calls_rs = $calls_rs->search({ + # 'destination_' . $contract_type . '_id' => $contract_id, + #}); #suppression rs decoration at last, after any "select =>" return NGCP::Panel::Utils::CallList::call_list_suppressions_rs($c,$calls_rs,NGCP::Panel::Utils::CallList::SUPPRESS_IN); } elsif ($call_direction eq "out") { - $calls_rs = $calls_rs->search({ - 'source_' . $contract_type . '_id' => $contract_id, - }); + #$calls_rs = $calls_rs->search({ + # 'source_' . $contract_type . '_id' => $contract_id, + #}); #suppression rs decoration at last, after any "select =>" return NGCP::Panel::Utils::CallList::call_list_suppressions_rs($c,$calls_rs,NGCP::Panel::Utils::CallList::SUPPRESS_OUT); - } elsif ($call_direction eq "in_out") { - $calls_rs = $calls_rs->search({ - -or => [ - { 'source_' . $contract_type . '_id' => $contract_id }, - { 'destination_' . $contract_type . '_id' => $contract_id }, - ], - }); - #suppression rs decoration at last, after any "select =>" - return NGCP::Panel::Utils::CallList::call_list_suppressions_rs($c,$calls_rs,NGCP::Panel::Utils::CallList::SUPPRESS_INOUT); + #} elsif ($call_direction eq "in_out") { + # $calls_rs = $calls_rs->search({ + # -or => [ + # { 'source_' . $contract_type . '_id' => $contract_id }, + # { 'destination_' . $contract_type . '_id' => $contract_id }, + # ], + # }); + # #suppression rs decoration at last, after any "select =>" + # return NGCP::Panel::Utils::CallList::call_list_suppressions_rs($c,$calls_rs,NGCP::Panel::Utils::CallList::SUPPRESS_INOUT); } } diff --git a/lib/NGCP/Panel/Utils/Invoice.pm b/lib/NGCP/Panel/Utils/Invoice.pm index 07547bc267..55eb897c58 100644 --- a/lib/NGCP/Panel/Utils/Invoice.pm +++ b/lib/NGCP/Panel/Utils/Invoice.pm @@ -124,24 +124,26 @@ sub create_invoice { my $calllist = []; if ($tmpl->category eq 'customer') { - my $calllist_rs = NGCP::Panel::Utils::Contract::get_contract_calls_rs( - c => $c, - contract_id => $contract->id, - stime => $stime, - etime => $etime, - call_direction => $tmpl->call_direction, - category => $tmpl->category, - ); - $calllist = [ map { - my $call = {$_->get_inflated_columns}; - $call->{start_time} = $call->{start_time}->epoch; - $call->{destination_user_in} =~s/%23/#/g; - #$call->{destination_user_in} = encode_entities($call->{destination_user_in}, '<>&"#'); - $call->{source_customer_cost} += 0.0; # make sure it's a number - $call->{source_reseller_cost} += 0.0 if exists $call->{source_reseller_cost}; - $call->{source_carrier_cost} += 0.0 if exists $call->{source_carrier_cost}; - NGCP::Panel::Utils::CallList::suppress_cdr_fields($c,$call,$_); - } $calllist_rs->all ]; + if (my $calllist_rs = NGCP::Panel::Utils::Contract::get_contract_calls_rs( + c => $c, + contract_id => $contract->id, + stime => $stime, + etime => $etime, + call_direction => $tmpl->call_direction, + category => $tmpl->category, + )) { + $calllist = [ map { + my $call = {$_->get_inflated_columns}; + $call->{start_time} = $call->{start_time}->epoch; + $call->{destination_user_in} =~s/%23/#/g; + #$call->{destination_user_in} = encode_entities($call->{destination_user_in}, '<>&"#'); + $call->{cost} += 0.0; # make sure it's a number + #$call->{source_customer_cost} += 0.0; # make sure it's a number + #$call->{source_reseller_cost} += 0.0 if exists $call->{source_reseller_cost}; + #$call->{source_carrier_cost} += 0.0 if exists $call->{source_carrier_cost}; + NGCP::Panel::Utils::CallList::suppress_cdr_fields($c,$call,$_); + } $calllist_rs->all ]; + } } my $invoice_amounts = get_invoice_amounts( diff --git a/share/templates/invoice/default/customer_invoice_template_svg.tt b/share/templates/invoice/default/customer_invoice_template_svg.tt index 93950b65fe..ab951f1c12 100644 --- a/share/templates/invoice/default/customer_invoice_template_svg.tt +++ b/share/templates/invoice/default/customer_invoice_template_svg.tt @@ -140,7 +140,7 @@ - +