diff --git a/migrations/0231.sql b/migrations/0231.sql new file mode 100644 index 00000000..3e7b3045 --- /dev/null +++ b/migrations/0231.sql @@ -0,0 +1,33 @@ +DROP TRIGGER default_qu_conversions; +CREATE TRIGGER products_default_qu_conversions AFTER INSERT ON products +BEGIN + -- Create product specific 1:1 conversions when QU stock != QU purchase/consume/price + -- and when no default QU conversion apply + + -- with qu_id_stock != qu_id_purchase + INSERT INTO quantity_unit_conversions + (from_qu_id, to_qu_id, factor, product_id) + SELECT p.qu_id_purchase, p.qu_id_stock, 1, p.id + FROM products p + WHERE p.id = NEW.id + AND p.qu_id_stock != qu_id_purchase + AND NOT EXISTS(SELECT 1 FROM quantity_unit_conversions_resolved WHERE product_id = p.id AND from_qu_id = p.qu_id_stock AND to_qu_id = p.qu_id_purchase); + + -- with qu_id_stock != qu_id_consume + INSERT INTO quantity_unit_conversions + (from_qu_id, to_qu_id, factor, product_id) + SELECT p.qu_id_consume, p.qu_id_stock, 1, p.id + FROM products p + WHERE p.id = NEW.id + AND p.qu_id_stock != qu_id_consume + AND NOT EXISTS(SELECT 1 FROM quantity_unit_conversions_resolved WHERE product_id = p.id AND from_qu_id = p.qu_id_stock AND to_qu_id = p.qu_id_consume); + + -- with qu_id_stock != qu_id_price + INSERT INTO quantity_unit_conversions + (from_qu_id, to_qu_id, factor, product_id) + SELECT p.qu_id_price, p.qu_id_stock, 1, p.id + FROM products p + WHERE p.id = NEW.id + AND p.qu_id_stock != qu_id_price + AND NOT EXISTS(SELECT 1 FROM quantity_unit_conversions_resolved WHERE product_id = p.id AND from_qu_id = p.qu_id_stock AND to_qu_id = p.qu_id_price); +END;