ALTER TABLE stock ADD opened_date DATETIME; ALTER TABLE stock_log ADD opened_date DATETIME; ALTER TABLE stock ADD open TINYINT NOT NULL DEFAULT 0 CHECK(open IN (0, 1)); UPDATE stock SET open = 0; ALTER TABLE products ADD default_best_before_days_after_open INTEGER NOT NULL DEFAULT 0; UPDATE products SET default_best_before_days_after_open = 0; DROP VIEW stock_current; CREATE VIEW stock_current AS SELECT s.product_id, SUM(s.amount) AS amount, MIN(s.best_before_date) AS best_before_date, IFNULL((SELECT SUM(amount) FROM stock WHERE product_id = s.product_id AND open = 1), 0) AS amount_opened FROM stock s GROUP BY s.product_id UNION SELECT id, 0, null, 0 FROM stock_missing_products WHERE is_partly_in_stock = 0;