diff --git a/application/recipes/sql/getRecipeByID.sql b/application/recipes/sql/getRecipeByID.sql index c7b5669..7f618cb 100644 --- a/application/recipes/sql/getRecipeByID.sql +++ b/application/recipes/sql/getRecipeByID.sql @@ -1,4 +1,10 @@ WITH passed_id AS (SELECT %s AS passed_id), + sum_cte AS ( + SELECT mi.id, SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum + FROM %%site_name%%_item_locations mil + JOIN %%site_name%%_items mi ON mil.part_id = mi.id + GROUP BY mi.id + ), cte_recipe_items AS ( SELECT items.*, /*COALESCE(%%site_name%%_items.barcode, items.uuid) AS uuid,*/ @@ -9,14 +15,17 @@ WITH passed_id AS (SELECT %s AS passed_id), (SELECT COALESCE(array_agg(jsonb_build_object('conversion', conv, 'unit', units)), '{}') FROM %%site_name%%_conversions conv LEFT JOIN units ON conv.uom_id = units.id - WHERE conv.item_id = %%site_name%%_items.id) AS conversions + WHERE conv.item_id = %%site_name%%_items.id) AS conversions, + COALESCE(sum_cte.total_sum, 0.0) AS quantity_on_hand FROM %%site_name%%_recipe_items items LEFT JOIN %%site_name%%_items ON items.item_id = %%site_name%%_items.id LEFT JOIN %%site_name%%_item_info ON %%site_name%%_items.item_info_id = %%site_name%%_item_info.id LEFT JOIN units ON units.id = items.uom + LEFT JOIN sum_cte ON %%site_name%%_items.id = sum_cte.id WHERE items.rp_id = (SELECT passed_id FROM passed_id) ORDER BY items.item_name ASC ) + SELECT (SELECT passed_id FROM passed_id) AS passed_id, %%site_name%%_recipes.*, diff --git a/application/recipes/static/js/recipeViewHandler.js b/application/recipes/static/js/recipeViewHandler.js index e4165ce..4c6ad65 100644 --- a/application/recipes/static/js/recipeViewHandler.js +++ b/application/recipes/static/js/recipeViewHandler.js @@ -30,16 +30,25 @@ async function replenishIngrediantsTable() { let ingrediantsTableBody = document.getElementById('ingrediantsTableBody') ingrediantsTableBody.innerHTML = "" + for(let i=0; iHave` + } else { + markerCell.innerHTML = `Missing` + } + + let nameCell = document.createElement('td') nameCell.innerHTML = `${recipe.recipe_items[i].item_name}` let qtyUOMCell = document.createElement('td') qtyUOMCell.innerHTML = `${recipe.recipe_items[i].qty} ${recipe.recipe_items[i].uom.fullname}` - tableRow.append(nameCell, qtyUOMCell) + tableRow.append(markerCell, nameCell, qtyUOMCell) ingrediantsTableBody.append(tableRow) } diff --git a/application/recipes/templates/recipe_view.html b/application/recipes/templates/recipe_view.html index 6f4d91a..d2edb8b 100644 --- a/application/recipes/templates/recipe_view.html +++ b/application/recipes/templates/recipe_view.html @@ -131,6 +131,7 @@ + diff --git a/logs/database.log b/logs/database.log index a861132..7497020 100644 --- a/logs/database.log +++ b/logs/database.log @@ -106,4 +106,19 @@ sql='WITH sum_cte AS ( SELECT mi.item_uuid, SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id ), cte_recipe_items AS ( SELECT rp_item.*, COALESCE(sum_cte.total_sum, 0) as quantity_on_hand FROM main_recipe_items rp_item LEFT JOIN sum_cte ON sum_cte.item_uuid = rp_item.item_uuid )SELECT *, (SELECT COALESCE(row_to_json(rp_it), '{}') FROM rp_items rp_its) AS testFROM main_recipes recipesLEFT JOIN cte_recipe_items ON cte_recipe_items.rp_id = recipes.id LIMIT %s OFFSET %s;') 2025-08-10 07:14:12.230335 --- ERROR --- DatabaseError(message='missing FROM-clause entry for table "item"LINE 13: LEFT JOIN sum_cte ON item.id = sum_cte.id; ^', payload=(), - sql='WITH sum_cte AS ( SELECT mi.id, SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id )SELECT * FROM main_items itemsLEFT JOIN main_item_info item_info ON item_info.id = items.item_info_idLEFT JOIN main_food_info food_info ON food_info.id = items.food_info_idLEFT JOIN main_logistics_info logistics_info ON logistics_info.id = items.logistics_info_idLEFT JOIN main_brands brands ON brands.id = items.brandLEFT JOIN sum_cte ON item.id = sum_cte.id;') \ No newline at end of file + sql='WITH sum_cte AS ( SELECT mi.id, SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id )SELECT * FROM main_items itemsLEFT JOIN main_item_info item_info ON item_info.id = items.item_info_idLEFT JOIN main_food_info food_info ON food_info.id = items.food_info_idLEFT JOIN main_logistics_info logistics_info ON logistics_info.id = items.logistics_info_idLEFT JOIN main_brands brands ON brands.id = items.brandLEFT JOIN sum_cte ON item.id = sum_cte.id;') +2025-08-10 07:45:48.674084 --- ERROR --- DatabaseError(message='more than one row returned by a subquery used as an expression', + payload=(1,), + sql='WITH passed_id AS (SELECT %s AS passed_id), cte_recipe_items AS ( SELECT items.*, /*COALESCE(main_items.barcode, items.uuid) AS uuid,*/ (SELECT COALESCE(row_to_json(units.*), '{}') FROM units WHERE units.id=main_item_info.uom) AS item_uom, COALESCE(main_items.item_name, items.item_name) AS item_name, COALESCE(main_items.links, items.links) AS links, row_to_json(units.*) as uom, (SELECT COALESCE(array_agg(jsonb_build_object('conversion', conv, 'unit', units)), '{}') FROM main_conversions conv LEFT JOIN units ON conv.uom_id = units.id WHERE conv.item_id = main_items.id) AS conversions, (SELECT SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id WHERE mil.part_id = mi.id GROUP BY mi.id ) FROM main_recipe_items items LEFT JOIN main_items ON items.item_id = main_items.id LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN units ON units.id = items.uom WHERE items.rp_id = (SELECT passed_id FROM passed_id) ORDER BY items.item_name ASC ) SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_recipes.*, logins.username as author, (SELECT COALESCE(array_agg(row_to_json(ris)), '{}') FROM cte_recipe_items ris) AS recipe_itemsFROM main_recipesJOIN logins ON main_recipes.author = logins.idWHERE main_recipes.id=(SELECT passed_id FROM passed_id)') +2025-08-10 07:46:23.645592 --- ERROR --- DatabaseError(message='more than one row returned by a subquery used as an expression', + payload=(1,), + sql='WITH passed_id AS (SELECT %s AS passed_id), cte_recipe_items AS ( SELECT items.*, /*COALESCE(main_items.barcode, items.uuid) AS uuid,*/ (SELECT COALESCE(row_to_json(units.*), '{}') FROM units WHERE units.id=main_item_info.uom) AS item_uom, COALESCE(main_items.item_name, items.item_name) AS item_name, COALESCE(main_items.links, items.links) AS links, row_to_json(units.*) as uom, (SELECT COALESCE(array_agg(jsonb_build_object('conversion', conv, 'unit', units)), '{}') FROM main_conversions conv LEFT JOIN units ON conv.uom_id = units.id WHERE conv.item_id = main_items.id) AS conversions, (SELECT SUM(mil.quantity_on_hand)::FLOAT8 FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id WHERE mil.part_id = mi.id GROUP BY mi.id ) AS total_sum FROM main_recipe_items items LEFT JOIN main_items ON items.item_id = main_items.id LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN units ON units.id = items.uom WHERE items.rp_id = (SELECT passed_id FROM passed_id) ORDER BY items.item_name ASC ) SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_recipes.*, logins.username as author, (SELECT COALESCE(array_agg(row_to_json(ris)), '{}') FROM cte_recipe_items ris) AS recipe_itemsFROM main_recipesJOIN logins ON main_recipes.author = logins.idWHERE main_recipes.id=(SELECT passed_id FROM passed_id)') +2025-08-10 07:46:46.892560 --- ERROR --- DatabaseError(message='more than one row returned by a subquery used as an expression', + payload=(1,), + sql='WITH passed_id AS (SELECT %s AS passed_id), cte_recipe_items AS ( SELECT items.*, /*COALESCE(main_items.barcode, items.uuid) AS uuid,*/ (SELECT COALESCE(row_to_json(units.*), '{}') FROM units WHERE units.id=main_item_info.uom) AS item_uom, COALESCE(main_items.item_name, items.item_name) AS item_name, COALESCE(main_items.links, items.links) AS links, row_to_json(units.*) as uom, (SELECT COALESCE(array_agg(jsonb_build_object('conversion', conv, 'unit', units)), '{}') FROM main_conversions conv LEFT JOIN units ON conv.uom_id = units.id WHERE conv.item_id = main_items.id) AS conversions, (SELECT SUM(mil.quantity_on_hand)::FLOAT8 FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id ) AS total_sum FROM main_recipe_items items LEFT JOIN main_items ON items.item_id = main_items.id LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN units ON units.id = items.uom WHERE items.rp_id = (SELECT passed_id FROM passed_id) ORDER BY items.item_name ASC ) SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_recipes.*, logins.username as author, (SELECT COALESCE(array_agg(row_to_json(ris)), '{}') FROM cte_recipe_items ris) AS recipe_itemsFROM main_recipesJOIN logins ON main_recipes.author = logins.idWHERE main_recipes.id=(SELECT passed_id FROM passed_id)') +2025-08-10 07:48:09.433642 --- ERROR --- DatabaseError(message='syntax error at or near "LEFT"LINE 24: LEFT LEFT JOIN sum_cte ON item.id = sum_cte.id ^', + payload=(1,), + sql='WITH passed_id AS (SELECT %s AS passed_id), sum_cte AS ( SELECT mi.id, SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id ), cte_recipe_items AS ( SELECT items.*, /*COALESCE(main_items.barcode, items.uuid) AS uuid,*/ (SELECT COALESCE(row_to_json(units.*), '{}') FROM units WHERE units.id=main_item_info.uom) AS item_uom, COALESCE(main_items.item_name, items.item_name) AS item_name, COALESCE(main_items.links, items.links) AS links, row_to_json(units.*) as uom, (SELECT COALESCE(array_agg(jsonb_build_object('conversion', conv, 'unit', units)), '{}') FROM main_conversions conv LEFT JOIN units ON conv.uom_id = units.id WHERE conv.item_id = main_items.id) AS conversions, COALESCE(sum_cte.total_sum, 0) AS quantity_on_hand FROM main_recipe_items items LEFT JOIN main_items ON items.item_id = main_items.id LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN units ON units.id = items.uom LEFT LEFT JOIN sum_cte ON item.id = sum_cte.id WHERE items.rp_id = (SELECT passed_id FROM passed_id) ORDER BY items.item_name ASC ) SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_recipes.*, logins.username as author, (SELECT COALESCE(array_agg(row_to_json(ris)), '{}') FROM cte_recipe_items ris) AS recipe_itemsFROM main_recipesJOIN logins ON main_recipes.author = logins.idWHERE main_recipes.id=(SELECT passed_id FROM passed_id)') +2025-08-10 07:48:28.429239 --- ERROR --- DatabaseError(message='missing FROM-clause entry for table "item"LINE 24: LEFT JOIN sum_cte ON item.id = sum_cte.id ^', + payload=(1,), + sql='WITH passed_id AS (SELECT %s AS passed_id), sum_cte AS ( SELECT mi.id, SUM(mil.quantity_on_hand)::FLOAT8 AS total_sum FROM main_item_locations mil JOIN main_items mi ON mil.part_id = mi.id GROUP BY mi.id ), cte_recipe_items AS ( SELECT items.*, /*COALESCE(main_items.barcode, items.uuid) AS uuid,*/ (SELECT COALESCE(row_to_json(units.*), '{}') FROM units WHERE units.id=main_item_info.uom) AS item_uom, COALESCE(main_items.item_name, items.item_name) AS item_name, COALESCE(main_items.links, items.links) AS links, row_to_json(units.*) as uom, (SELECT COALESCE(array_agg(jsonb_build_object('conversion', conv, 'unit', units)), '{}') FROM main_conversions conv LEFT JOIN units ON conv.uom_id = units.id WHERE conv.item_id = main_items.id) AS conversions, COALESCE(sum_cte.total_sum, 0) AS quantity_on_hand FROM main_recipe_items items LEFT JOIN main_items ON items.item_id = main_items.id LEFT JOIN main_item_info ON main_items.item_info_id = main_item_info.id LEFT JOIN units ON units.id = items.uom LEFT JOIN sum_cte ON item.id = sum_cte.id WHERE items.rp_id = (SELECT passed_id FROM passed_id) ORDER BY items.item_name ASC ) SELECT (SELECT passed_id FROM passed_id) AS passed_id, main_recipes.*, logins.username as author, (SELECT COALESCE(array_agg(row_to_json(ris)), '{}') FROM cte_recipe_items ris) AS recipe_itemsFROM main_recipesJOIN logins ON main_recipes.author = logins.idWHERE main_recipes.id=(SELECT passed_id FROM passed_id)') \ No newline at end of file
Ingrediant Qty/UOM