Skip to content

Commit

Permalink
fix invoices generation (#1386)
Browse files Browse the repository at this point in the history
* fix invoices generation
* migrate vendor invoice data
  • Loading branch information
dmitry-sinina committed Dec 8, 2023
1 parent f0782ce commit e8dcdf5
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 26 deletions.
29 changes: 13 additions & 16 deletions app/services/billing_invoice/fill.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ def validate!
end

def generate_originated_data
# traffic originated by account as "customer"
SqlCaller::Cdr.execute(
"INSERT INTO billing.invoice_originated_destinations(
dst_prefix, country_id, network_id, rate,
Expand All @@ -44,14 +45,12 @@ def generate_originated_data
?, -- invoice_id
MIN(time_start), -- first_call_at
MAX(time_start) -- last_call_at
FROM (
SELECT *
FROM cdr.cdr
WHERE
vendor_acc_id =? AND
time_start>=? AND
time_start<?
) invoice_data
FROM cdr.cdr
WHERE
customer_acc_id =? AND
is_last_cdr AND
time_start>=? AND
time_start<?
GROUP BY dialpeer_prefix, dst_country_id, dst_network_id, dialpeer_next_rate",
invoice.id,
invoice.account_id,
Expand Down Expand Up @@ -89,6 +88,7 @@ def generate_originated_data
end

def generate_terminated_data
# traffic terminated to account as "vendor"
SqlCaller::Cdr.execute(
"INSERT INTO billing.invoice_terminated_destinations(
dst_prefix, country_id, network_id, rate,
Expand All @@ -110,14 +110,11 @@ def generate_terminated_data
?, -- invoice_id
MIN(time_start), -- first_call_at
MAX(time_start) -- last_call_at
FROM (
SELECT *
FROM cdr.cdr
WHERE
customer_acc_id =? AND
time_start >=? AND
time_start < ?
) invoice_data
FROM cdr.cdr
WHERE
vendor_acc_id =? AND
time_start >=? AND
time_start < ?
GROUP BY destination_prefix, dst_country_id, dst_network_id, destination_next_rate",
invoice.id,
invoice.account_id,
Expand Down
10 changes: 2 additions & 8 deletions db/cdr_migrate/20231106100135_change_invoice_cdr_fields.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ def up
ADD COLUMN terminated_calls_duration integer NOT NULL DEFAULT 0,
ADD COLUMN terminated_successful_calls_count integer NOT NULL DEFAULT 0,
ADD COLUMN terminated_billing_duration integer NOT NULL DEFAULT 0,
DROP COLUMN vendor_invoice,
DROP COLUMN first_successful_call_at,
DROP COLUMN last_successful_call_at
}
Expand Down Expand Up @@ -87,7 +86,6 @@ def down
DROP COLUMN terminated_calls_duration,
DROP COLUMN terminated_successful_calls_count,
DROP COLUMN terminated_billing_duration,
ADD COLUMN vendor_invoice boolean NOT NULL DEFAULT false,
ADD COLUMN first_successful_call_at timestamp with time zone,
ADD COLUMN last_successful_call_at timestamp with time zone
}
Expand All @@ -104,9 +102,7 @@ def down
(2, 'Approved'),
(3, 'New')
}
execute %q{
ALTER SEQUENCE billing.invoice_states_id_seq RESTART WITH 4
}

execute %q{
ALTER TABLE ONLY billing.invoices
ADD CONSTRAINT invoices_state_id_fkey FOREIGN KEY (state_id) REFERENCES billing.invoice_states(id)
Expand All @@ -124,9 +120,7 @@ def down
(2, 'Auto. Full period'),
(3, 'Auto. Partial')
}
execute %q{
ALTER SEQUENCE billing.invoice_types_id_seq RESTART WITH 4
}

execute %q{
ALTER TABLE ONLY billing.invoices
ADD CONSTRAINT invoices_type_id_fkey FOREIGN KEY (type_id) REFERENCES billing.invoice_types(id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ def up
ALTER TABLE ONLY billing.invoice_terminated_networks
ADD CONSTRAINT invoice_terminated_networks_invoice_id_fkey FOREIGN KEY (invoice_id) REFERENCES billing.invoices(id);
insert into billing.invoice_terminated_networks(
country_id, network_id, rate, calls_count,
calls_duration, amount, invoice_id,
first_call_at, last_call_at, successful_calls_count, billing_duration)
SELECT country_id, network_id, rate, calls_count,
calls_duration, amount, invoice_id,
first_call_at, last_call_at, successful_calls_count, billing_duration
from billing.invoice_originated_networks where invoice_id in ( select id from billing.invoices where vendor_invoice);
delete from billing.invoice_originated_networks where invoice_id in ( select id from billing.invoices where vendor_invoice);
}

execute %q{
Expand Down Expand Up @@ -81,18 +91,50 @@ def up
ALTER TABLE ONLY billing.invoice_terminated_destinations
ADD CONSTRAINT invoice_terminated_destinations_invoice_id_fkey FOREIGN KEY (invoice_id) REFERENCES billing.invoices(id);
insert into billing.invoice_terminated_destinations (
dst_prefix, country_id, network_id,
rate, calls_count, calls_duration, amount, invoice_id,
first_call_at, last_call_at,
successful_calls_count, billing_duration )
SELECT dst_prefix, country_id, network_id,
rate, calls_count, calls_duration, amount, invoice_id,
first_call_at, last_call_at,
successful_calls_count, billing_duration
from billing.invoice_originated_destinations where invoice_id in ( select id from billing.invoices where vendor_invoice);
delete from billing.invoice_originated_destinations where invoice_id in ( select id from billing.invoices where vendor_invoice);
}

execute %q{
ALTER TABLE billing.invoice_documents DROP COLUMN csv_data
}
execute %q{
ALTER TABLE billing.invoice_documents DROP COLUMN xls_data
ALTER TABLE billing.invoice_documents DROP COLUMN xls_data;
UPDATE billing.invoices set
terminated_amount = originated_amount,
terminated_calls_count = originated_calls_count,
terminated_calls_duration = originated_calls_duration,
terminated_successful_calls_count = originated_successful_calls_count,
terminated_billing_duration = originated_billing_duration
where vendor_invoice;
UPDATE billing.invoices set
originated_amount = 0,
originated_calls_count = 0,
originated_calls_duration = 0,
originated_successful_calls_count = 0,
originated_billing_duration = 0
where vendor_invoice;
ALTER TABLE billing.invoices DROP COLUMN vendor_invoice;
}
end

def down
execute %q{
ALTER TABLE billing.invoices ADD COLUMN vendor_invoice boolean NOT NULL DEFAULT false;
ALTER TABLE billing.invoice_originated_networks RENAME TO invoice_networks;
ALTER TABLE billing.invoice_networks
Expand All @@ -104,7 +146,7 @@ def down
ALTER TABLE billing.invoice_networks
RENAME CONSTRAINT invoice_originated_networks_invoice_id_fkey TO invoice_networks_invoice_id_fkey;
ALTER SEQUENCE billing.invoice_originated_destinations_id_seq RENAME TO invoice_destinations_id_seq;
ALTER SEQUENCE billing.invoice_originated_networks_id_seq RENAME TO invoice_networks_id_seq;
}

execute %q{
Expand Down

0 comments on commit e8dcdf5

Please sign in to comment.