bmc_hub/migrations/198_globalconnect_ipam_enhancements.sql
Christian 3311b8e590 Add comprehensive tests for internet connections module, invoice parsing, and subscription provisioning
- Implement tests for the internet connections module, covering routes, IP range creation, and connection validation.
- Add tests for the Invoice2DataService to validate extraction from GlobalConnect invoices.
- Create tests for subscription network provisioning, ensuring proper handling of network items and IP allocations.
- Include validation checks for subtotal mismatches and ensure error handling for missing IP selections.
2026-07-09 23:44:30 +02:00

44 lines
2.6 KiB
SQL

-- Migration 198: GlobalConnect extraction context + richer IPAM relations
ALTER TABLE extraction_lines
ADD COLUMN IF NOT EXISTS provider_reference VARCHAR(100),
ADD COLUMN IF NOT EXISTS customer_reference VARCHAR(100),
ADD COLUMN IF NOT EXISTS circuit_id VARCHAR(100),
ADD COLUMN IF NOT EXISTS end_customer_name VARCHAR(255),
ADD COLUMN IF NOT EXISTS period_start DATE,
ADD COLUMN IF NOT EXISTS period_end DATE,
ADD COLUMN IF NOT EXISTS service_address TEXT;
CREATE INDEX IF NOT EXISTS idx_extraction_lines_provider_reference ON extraction_lines(provider_reference);
CREATE INDEX IF NOT EXISTS idx_extraction_lines_circuit_id ON extraction_lines(circuit_id);
CREATE INDEX IF NOT EXISTS idx_extraction_lines_end_customer_name ON extraction_lines(end_customer_name);
COMMENT ON COLUMN extraction_lines.provider_reference IS 'Provider reference from invoice context (e.g. DSL-EB722388, NKA020902)';
COMMENT ON COLUMN extraction_lines.customer_reference IS 'Customer account/reference from supplier invoice';
COMMENT ON COLUMN extraction_lines.circuit_id IS 'Circuit or service identifier for the billed line';
COMMENT ON COLUMN extraction_lines.end_customer_name IS 'Named end customer from invoice context';
COMMENT ON COLUMN extraction_lines.period_start IS 'Billing period start date for the extracted line';
COMMENT ON COLUMN extraction_lines.period_end IS 'Billing period end date for the extracted line';
COMMENT ON COLUMN extraction_lines.service_address IS 'Full service address captured from invoice context';
ALTER TABLE internet_connections_ip_ranges
ADD COLUMN IF NOT EXISTS provider_reference VARCHAR(100),
ADD COLUMN IF NOT EXISTS contract_number VARCHAR(100),
ADD COLUMN IF NOT EXISTS customer_id INTEGER REFERENCES customers(id) ON DELETE SET NULL,
ADD COLUMN IF NOT EXISTS service_address VARCHAR(500),
ADD COLUMN IF NOT EXISTS monthly_cost NUMERIC(12,2) DEFAULT 0,
ADD COLUMN IF NOT EXISTS sales_price NUMERIC(12,2) DEFAULT 0;
CREATE INDEX IF NOT EXISTS idx_internet_connections_ip_ranges_customer_id
ON internet_connections_ip_ranges(customer_id);
ALTER TABLE internet_connections_ip_addresses
ADD COLUMN IF NOT EXISTS assigned_customer_id INTEGER REFERENCES customers(id) ON DELETE SET NULL,
ADD COLUMN IF NOT EXISTS assigned_connection_id INTEGER REFERENCES internet_connections_connections(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS idx_internet_connections_ip_addresses_assigned_customer_id
ON internet_connections_ip_addresses(assigned_customer_id);
CREATE INDEX IF NOT EXISTS idx_internet_connections_ip_addresses_assigned_connection_id
ON internet_connections_ip_addresses(assigned_connection_id);