Skip to content

Commit

Permalink
fix invoices UI (#1383)
Browse files Browse the repository at this point in the history
* fix invoices UI
* export/import dialpeer src_name_rewrite
* CDR filtering by q850 cause
  • Loading branch information
dmitry-sinina committed Dec 7, 2023
1 parent aae9871 commit f0782ce
Show file tree
Hide file tree
Showing 10 changed files with 303 additions and 74 deletions.
147 changes: 81 additions & 66 deletions app/admin/billing/invoices.rb
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ def scoped_collection
index footer_data: ->(collection) { BillingDecorator.new(collection.totals) } do
selectable_column
id_column
column 'UUID', :uuid
actions
column :reference
column :contractor, footer: lambda {
Expand All @@ -107,6 +106,7 @@ def scoped_collection
}
column :account
column :state
column :type
column :start_date
column :end_date
column :originated_amount, footer: lambda {
Expand All @@ -127,7 +127,6 @@ def scoped_collection
c.decorated_terminated_amount
end
end
column :type

column :originated_calls_count, footer: lambda {
strong do
Expand Down Expand Up @@ -162,10 +161,7 @@ def scoped_collection
}, &:decorated_terminated_billing_duration

column :created_at
column :first_originated_call_at
column :first_terminated_call_at
column :last_originated_call_at
column :last_terminated_call_at
column 'UUID', :uuid
end

filter :id
Expand All @@ -174,9 +170,9 @@ def scoped_collection
contractor_filter :contractor_id_eq
account_filter :account_id_eq
filter :state
filter :type
filter :start_date, as: :date_time_range
filter :end_date, as: :date_time_range
filter :type
filter :originated_amount
filter :originated_billing_duration
filter :originated_calls_count
Expand All @@ -197,67 +193,61 @@ def scoped_collection
row(:contractor) { s.contractor || s.contractor_id }
row :account
row :state
row :type
row :start_date
row :end_date
row :type
row :created_at
end
end
columns do
column do
panel 'Originated' do
attributes_table_for s do
row :originated_amount do
strong do
s.decorated_originated_amount
end
end
row :originated_calls_count
row :originated_successful_calls_count
row :originated_calls_duration do
s.decorated_originated_calls_duration
end
row :originated_billing_duration do
s.decorated_originated_billing_duration
end
row :first_originated_call_at
row :last_originated_call_at
panel 'Traffic summary' do
attributes_table_for s do
row :originated_amount do
strong do
s.decorated_originated_amount
end
end

panel 'Terminated' do
attributes_table_for s do
row :terminated_amount do
strong do
s.decorated_terminated_amount
end
end
row :terminated_calls_count
row :terminated_successful_calls_count
row :terminated_calls_duration do
s.decorated_terminated_calls_duration
end
row :terminated_billing_duration do
s.decorated_terminated_billing_duration
end
row :first_terminated_call_at
row :last_terminated_call_at
row :originated_calls_count
row :terminated_amount do
strong do
s.decorated_terminated_amount
end
end
row :terminated_calls_count
end
end
end
tab 'Destination prefixes' do
panel 'Originated' do
tab 'Originated traffic' do
panel 'Summary' do
attributes_table_for s do
row :originated_amount do
strong do
s.decorated_originated_amount
end
end
row :originated_calls_count
row :originated_successful_calls_count
row :originated_calls_duration do
s.decorated_originated_calls_duration
end
row :originated_billing_duration, title: 'Calls duration rounded according to destination billing intervals' do
s.decorated_originated_billing_duration
end
row :first_originated_call_at
row :last_originated_call_at
end
end
panel 'By destination(destination prefix)' do
table_for resource.originated_destinations do
column :dst_prefix
column :country
column :network
column :rate
column :calls_count
column :successful_calls_count
column :calls_duration, &:decorated_calls_duration
column :billing_duration, &:decorated_billing_duration
column 'Calls count/successful' do |s|
"#{s.calls_count}/#{s.successful_calls_count}"
end
column 'Duration real/billed' do |s|
"#{s.decorated_calls_duration} / #{s.decorated_billing_duration}"
end
column :amount do |r|
strong do
r.decorated_amount
Expand All @@ -267,16 +257,19 @@ def scoped_collection
column :last_call_at
end
end
panel 'Terminated' do
table_for resource.terminated_destinations do
column :dst_prefix
panel 'By destination number country/network' do
table_for resource.originated_networks do
column :country
column :network
column :rate
column :calls_count
column :successful_calls_count
column :calls_duration, &:decorated_calls_duration
column :billing_duration, &:decorated_billing_duration
column 'Calls count/successful' do |s|
"#{s.calls_count}/#{s.successful_calls_count}"
end

column 'Duration real/billed' do |s|
"#{s.decorated_calls_duration} / #{s.decorated_billing_duration}"
end

column :amount do |r|
strong do
r.decorated_amount
Expand All @@ -288,14 +281,35 @@ def scoped_collection
end
end

tab 'Destination networks' do
panel 'Originated' do
table_for resource.originated_networks do
tab 'Terminated traffic' do
panel 'Summary' do
attributes_table_for s do
row :terminated_amount do
strong do
s.decorated_terminated_amount
end
end
row :terminated_calls_count
row :terminated_successful_calls_count
row :terminated_calls_duration do
s.decorated_terminated_calls_duration
end
row :terminated_billing_duration do
s.decorated_terminated_billing_duration
end
row :first_terminated_call_at
row :last_terminated_call_at
end
end
panel 'By destination(dialpeer prefix)' do
table_for resource.terminated_destinations do
column :dst_prefix
column :country
column :network
column :rate
column :calls_count
column :successful_calls_count
column 'Calls count/successful' do |s|
"#{s.calls_count}/#{s.successful_calls_count}"
end
column :calls_duration, &:decorated_calls_duration
column :billing_duration, &:decorated_billing_duration
column :amount do |r|
Expand All @@ -307,13 +321,14 @@ def scoped_collection
column :last_call_at
end
end
panel 'Terminated' do
panel 'By destination number country/network' do
table_for resource.terminated_networks do
column :country
column :network
column :rate
column :calls_count
column :successful_calls_count
column 'Calls count/successful' do |s|
"#{s.calls_count}/#{s.successful_calls_count}"
end
column :calls_duration, &:decorated_calls_duration
column :billing_duration, &:decorated_billing_duration
column :amount do |r|
Expand Down
15 changes: 13 additions & 2 deletions app/admin/cdr/cdrs.rb
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,11 @@ def scoped_collection
filter :internal_disconnect_reason, filters: %i[equals contains starts_with ends_with]
filter :lega_disconnect_code
filter :lega_disconnect_reason, filters: %i[equals contains starts_with ends_with]
filter :lega_q850_cause_eq, label: 'LegA Q.850 cause', as: :select, collection: System::Q850::CAUSES.invert, input_html: { class: 'chosen' }

filter :legb_disconnect_code
filter :legb_disconnect_reason, filters: %i[equals contains starts_with ends_with]
filter :legb_q850_cause_eq, label: 'LegB Q.850 cause', as: :select, collection: System::Q850::CAUSES.invert, input_html: { class: 'chosen' }

filter :src_prefix_in, as: :string_eq
filter :dst_prefix_in, as: :string_eq
Expand Down Expand Up @@ -274,6 +277,7 @@ def scoped_collection
end
column('LegA DC') do |cdr_attempt|
status_tag(cdr_attempt.lega_disconnect_code.to_s, class: cdr_attempt.success? ? :ok : :red) unless (cdr_attempt.lega_disconnect_code == 0) || cdr_attempt.lega_disconnect_code.nil?
status_tag("q850: #{cdr.lega_q850_cause}", class: cdr.success? ? :ok : :red) unless cdr.lega_q850_cause.nil?
end
column('LegA Reason', &:lega_disconnect_reason)
column('DC') do |cdr_attempt|
Expand All @@ -288,6 +292,7 @@ def scoped_collection
end
column('LegB DC') do |cdr_attempt|
status_tag(cdr_attempt.legb_disconnect_code.to_s, class: cdr_attempt.success? ? :ok : :red) unless (cdr_attempt.legb_disconnect_code == 0) || cdr_attempt.legb_disconnect_code.nil?
status_tag("q850: #{cdr.legb_q850_cause}", class: cdr.success? ? :ok : :red) unless cdr.legb_q850_cause.nil?
end
column('LegB Reason', &:legb_disconnect_reason)
column :disconnect_initiator, &:disconnect_initiator_name
Expand Down Expand Up @@ -461,10 +466,14 @@ def scoped_collection
row :legb_disconnect_code
row :legb_disconnect_reason

row :lega_q850_cause
row :lega_q850_cause do |cdr|
System::Q850::CAUSES[cdr.lega_q850_cause] || cdr.lega_q850_cause
end
row :lega_q850_text
row :lega_q850_params
row :legb_q850_cause
row :legb_q850_cause do |cdr|
System::Q850::CAUSES[cdr.legb_q850_cause] || cdr.legb_q850_cause
end
row :legb_q850_text
row :legb_q850_params

Expand Down Expand Up @@ -637,6 +646,7 @@ def scoped_collection
end
column('LegA DC', sortable: 'lega_disconnect_code') do |cdr|
status_tag(cdr.lega_disconnect_code.to_s, class: cdr.success? ? :ok : :red) unless (cdr.lega_disconnect_code == 0) || cdr.legb_disconnect_code.nil?
status_tag("q850: #{cdr.lega_q850_cause}", class: cdr.success? ? :ok : :red) unless cdr.lega_q850_cause.nil?
end
column('LegA Reason', sortable: 'lega_disconnect_reason', &:lega_disconnect_reason)
column('DC', sortable: 'internal_disconnect_code') do |cdr|
Expand All @@ -651,6 +661,7 @@ def scoped_collection
end
column('LegB DC', sortable: 'legb_disconnect_code') do |cdr|
status_tag(cdr.legb_disconnect_code.to_s, class: cdr.success? ? :ok : :red) unless (cdr.legb_disconnect_code == 0) || cdr.legb_disconnect_code.nil?
status_tag("q850: #{cdr.legb_q850_cause}", class: cdr.success? ? :ok : :red) unless cdr.legb_q850_cause.nil?
end
column('LegB Reason', sortable: 'legb_disconnect_reason', &:legb_disconnect_reason)
column :disconnect_initiator, &:disconnect_initiator_name
Expand Down
2 changes: 2 additions & 0 deletions app/admin/import/import_dialpeers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ def resource_params
column :asr_limit
column :short_calls_limit
column :capacity
column :src_name_rewrite_rule
column :src_name_rewrite_result
column :src_rewrite_rule
column :src_rewrite_result
column :dst_rewrite_rule
Expand Down
1 change: 1 addition & 0 deletions app/admin/routing/dialpeers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
[:routeset_discriminator_name, proc { |row| row.routeset_discriminator.try(:name) }],
:valid_from, :valid_till,
:acd_limit, :asr_limit, :short_calls_limit, :capacity,
:src_name_rewrite_rule, :src_name_rewrite_result,
:src_rewrite_rule, :src_rewrite_result,
:dst_rewrite_rule, :dst_rewrite_result,
:reverse_billing,
Expand Down
6 changes: 5 additions & 1 deletion app/models/importing/dialpeer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
# routing_tag_mode_name :string
# routing_tag_names :string
# short_calls_limit :float default(1.0), not null
# src_name_rewrite_result :string
# src_name_rewrite_rule :string
# src_rewrite_result :string
# src_rewrite_rule :string
# valid_from :datetime
Expand Down Expand Up @@ -66,7 +68,9 @@ class Importing::Dialpeer < Importing::Base
self.import_attributes = %w[prefix enabled lcr_rate_multiplier
initial_interval next_interval initial_rate next_rate connect_fee reverse_billing
gateway_id gateway_group_id routing_group_id
vendor_id account_id src_rewrite_rule src_rewrite_result
vendor_id account_id
src_name_rewrite_rule src_name_rewrite_result
src_rewrite_rule src_rewrite_result
dst_rewrite_rule dst_rewrite_result asr_limit acd_limit short_calls_limit priority capacity
valid_from valid_till force_hit_rate
dst_number_min_length dst_number_max_length
Expand Down
Loading

0 comments on commit f0782ce

Please sign in to comment.