mirror of
https://github.com/grocy/grocy.git
synced 2025-08-19 20:11:16 +00:00
Fix is_aggregated_amount of stock_current did not work anymore
This commit is contained in:
@@ -1,61 +1,27 @@
|
||||
DROP VIEW stock_missing_products_including_opened;
|
||||
CREATE VIEW stock_missing_products_including_opened
|
||||
AS
|
||||
DELETE FROM shopping_list
|
||||
WHERE shopping_list_id NOT IN (SELECT id FROM shopping_lists);
|
||||
|
||||
/* This is basically the same view as stock_missing_products, but the column "amount_missing" includes opened amounts */
|
||||
CREATE TRIGGER remove_items_from_deleted_shopping_list AFTER DELETE ON shopping_lists
|
||||
BEGIN
|
||||
DELETE FROM shopping_list WHERE shopping_list_id = OLD.id;
|
||||
END;
|
||||
|
||||
-- Products WITHOUT sub products where the amount of the sub products SHOULD NOT be cumulated
|
||||
SELECT
|
||||
p.id,
|
||||
MAX(p.name) AS name,
|
||||
p.min_stock_amount - (IFNULL(SUM(s.amount), 0) - IFNULL(SUM(s.amount_opened), 0)) AS amount_missing,
|
||||
CASE WHEN IFNULL(SUM(s.amount), 0) > 0 THEN 1 ELSE 0 END AS is_partly_in_stock
|
||||
FROM products_view p
|
||||
LEFT JOIN stock_current s
|
||||
ON p.id = s.product_id
|
||||
WHERE p.min_stock_amount != 0
|
||||
AND p.cumulate_min_stock_amount_of_sub_products = 0
|
||||
AND p.has_sub_products = 0
|
||||
AND p.parent_product_id IS NULL
|
||||
GROUP BY p.id
|
||||
HAVING IFNULL(SUM(s.amount), 0) - IFNULL(SUM(s.amount_opened), 0) < p.min_stock_amount
|
||||
CREATE TRIGGER prevent_infinite_nested_recipes_INS BEFORE INSERT ON recipes_nestings
|
||||
BEGIN
|
||||
SELECT CASE WHEN((
|
||||
SELECT 1
|
||||
FROM recipes_nestings_resolved rnr
|
||||
WHERE NEW.recipe_id = rnr.includes_recipe_id
|
||||
AND NEW.includes_recipe_id = rnr.recipe_id
|
||||
) NOTNULL) THEN RAISE(ABORT, "Recursive nested recipe detected") END;
|
||||
END;
|
||||
|
||||
UNION
|
||||
|
||||
-- Parent products WITH sub products where the amount of the sub products SHOULD be cumulated
|
||||
SELECT
|
||||
p.id,
|
||||
MAX(p.name) AS name,
|
||||
SUM(sub_p.min_stock_amount) - (IFNULL(SUM(s.amount_aggregated), 0) - IFNULL(SUM(s.amount_opened_aggregated), 0)) AS amount_missing,
|
||||
CASE WHEN IFNULL(SUM(s.amount), 0) > 0 THEN 1 ELSE 0 END AS is_partly_in_stock
|
||||
FROM products_view p
|
||||
JOIN products_resolved pr
|
||||
ON p.id = pr.parent_product_id
|
||||
JOIN products sub_p
|
||||
ON pr.sub_product_id = sub_p.id
|
||||
LEFT JOIN stock_current s
|
||||
ON pr.sub_product_id = s.product_id
|
||||
WHERE sub_p.min_stock_amount != 0
|
||||
AND p.cumulate_min_stock_amount_of_sub_products = 1
|
||||
GROUP BY p.id
|
||||
HAVING IFNULL(SUM(s.amount_aggregated), 0) - IFNULL(SUM(s.amount_opened_aggregated), 0) < SUM(sub_p.min_stock_amount)
|
||||
|
||||
UNION
|
||||
|
||||
-- Sub products where the amount SHOULD NOT be cumulated into the parent product
|
||||
SELECT
|
||||
sub_p.id,
|
||||
MAX(sub_p.name) AS name,
|
||||
SUM(sub_p.min_stock_amount) - (IFNULL(SUM(s.amount), 0) - IFNULL(SUM(s.amount_opened), 0)) AS amount_missing,
|
||||
CASE WHEN IFNULL(SUM(s.amount), 0) > 0 THEN 1 ELSE 0 END AS is_partly_in_stock
|
||||
FROM products p
|
||||
JOIN products_resolved pr
|
||||
ON p.id = pr.parent_product_id
|
||||
JOIN products sub_p
|
||||
ON pr.sub_product_id = sub_p.id
|
||||
LEFT JOIN stock_current s
|
||||
ON pr.sub_product_id = s.product_id
|
||||
WHERE sub_p.min_stock_amount != 0
|
||||
AND p.cumulate_min_stock_amount_of_sub_products = 0
|
||||
GROUP BY sub_p.id
|
||||
HAVING IFNULL(SUM(s.amount), 0) - IFNULL(SUM(s.amount_opened), 0) < sub_p.min_stock_amount;
|
||||
CREATE TRIGGER prevent_infinite_nested_recipes_UPD BEFORE UPDATE ON recipes_nestings
|
||||
BEGIN
|
||||
SELECT CASE WHEN((
|
||||
SELECT 1
|
||||
FROM recipes_nestings_resolved rnr
|
||||
WHERE NEW.recipe_id = rnr.includes_recipe_id
|
||||
AND NEW.includes_recipe_id = rnr.recipe_id
|
||||
) NOTNULL) THEN RAISE(ABORT, "Recursive nested recipe detected") END;
|
||||
END;
|
||||
|
Reference in New Issue
Block a user