bmc_hub/migrations/015_bmc_office_subscriptions.sql

60 lines
2.0 KiB
MySQL
Raw Permalink Normal View History

-- BMC Office Subscriptions
-- Gemmer abonnementsdata importeret fra BMC Office system
CREATE TABLE IF NOT EXISTS bmc_office_subscriptions (
id SERIAL PRIMARY KEY,
customer_id INTEGER REFERENCES customers(id) ON DELETE CASCADE,
-- BMC Office data
firma_id VARCHAR(50), -- FirmaID fra BMC Office
firma_name VARCHAR(255), -- Firma navn
start_date DATE, -- Startdate
text VARCHAR(500), -- Produkt/service beskrivelse
antal DECIMAL(10,2) DEFAULT 1, -- Antal
pris DECIMAL(10,2), -- Pris per enhed
rabat DECIMAL(10,2) DEFAULT 0, -- Rabat i DKK
beskrivelse TEXT, -- Ekstra beskrivelse/noter
-- Faktura info
faktura_firma_id VARCHAR(50), -- FakturaFirmaID
faktura_firma_name VARCHAR(255), -- Fakturafirma navn
-- Status
active BOOLEAN DEFAULT TRUE,
-- Metadata
imported_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP
);
-- Indexes for performance
CREATE INDEX IF NOT EXISTS idx_bmc_office_subs_customer ON bmc_office_subscriptions(customer_id);
CREATE INDEX IF NOT EXISTS idx_bmc_office_subs_firma_id ON bmc_office_subscriptions(firma_id);
CREATE INDEX IF NOT EXISTS idx_bmc_office_subs_faktura_firma_id ON bmc_office_subscriptions(faktura_firma_id);
CREATE INDEX IF NOT EXISTS idx_bmc_office_subs_active ON bmc_office_subscriptions(active);
-- View for calculating totals
CREATE OR REPLACE VIEW bmc_office_subscription_totals AS
SELECT
id,
customer_id,
firma_id,
firma_name,
text,
antal,
pris,
rabat,
(antal * pris) - rabat AS subtotal,
((antal * pris) - rabat) * 1.25 AS total_inkl_moms,
start_date,
beskrivelse,
faktura_firma_name,
active
FROM bmc_office_subscriptions
WHERE deleted_at IS NULL;
COMMENT ON TABLE bmc_office_subscriptions IS 'Abonnementer importeret fra BMC Office legacy system';
COMMENT ON VIEW bmc_office_subscription_totals IS 'Beregner subtotal og total inkl. moms for BMC Office abonnementer';