From 99006d2eeb5d6aa237807ff856e1e5c1dd6d587c Mon Sep 17 00:00:00 2001 From: sonzsara Date: Fri, 22 May 2026 16:37:43 +0530 Subject: [PATCH 1/4] Add Total Stock Value Report documentation for SSMM --- .../total_stock_value_report_ssmm.md | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 Care/Accounting/total_stock_value_report_ssmm.md diff --git a/Care/Accounting/total_stock_value_report_ssmm.md b/Care/Accounting/total_stock_value_report_ssmm.md new file mode 100644 index 0000000..687c01f --- /dev/null +++ b/Care/Accounting/total_stock_value_report_ssmm.md @@ -0,0 +1,107 @@ + +# Total Stock Value Report - SSMM + +> Net stock quantity and total purchase value per stock item, as of a given date. + +## Purpose + +Computes the current on-hand stock value for each stock item at SSMM as of a chosen date. It does this by: + +1. Summing everything **purchased** (received via external supply deliveries) up to that date. +2. Subtracting everything **dispensed** to patients up to that date. +3. Subtracting **mistake adjustments** — stock moved into a configured set of "mistake / correction" destination locations, treated as outflow. + +The result is the **net quantity** and **net purchase value** of stock remaining per item. + +## Parameters + +| Parameter | Type | Description | Example | +|-----------|------|-------------|---------| +| `selected_date` | DATE | As-of date for the report. All purchases, dispenses, and mistake entries up to and including this date are considered. | `'2026-05-31'` | + +--- + +## Query + +```sql +WITH purchase_items AS ( + SELECT + epk.name AS stock_name, + SUM(esd.supplied_item_quantity) AS qty, + SUM(ep.purchase_price * esd.supplied_item_quantity) AS total_value + FROM emr_supplydelivery esd + LEFT JOIN emr_deliveryorder edo ON esd.order_id = edo.id + LEFT JOIN emr_product ep ON esd.supplied_item_id = ep.id + LEFT JOIN emr_productknowledge epk ON ep.product_knowledge_id = epk.id + WHERE esd.status = 'completed' + AND edo.origin_id IS NULL + AND esd.deleted = FALSE + AND edo.deleted = FALSE + AND edo.status = 'completed' + AND ep.purchase_price IS NOT NULL + --AND DATE(esd.created_date) <= {{selected_date}} + GROUP BY epk.name +), + +dispense_items AS ( + SELECT + epk.name AS stock_name, + SUM(emd.quantity) AS qty, + SUM(ep.purchase_price * emd.quantity) AS total_value + FROM emr_medicationdispense emd + LEFT JOIN emr_dispenseorder edo ON edo.id = emd.order_id + LEFT JOIN emr_inventoryitem eii ON eii.id = emd.item_id + LEFT JOIN emr_product ep ON eii.product_id = ep.id + LEFT JOIN emr_productknowledge epk ON ep.product_knowledge_id = epk.id + WHERE edo.status IN ('completed', 'in_progress', 'draft') + AND emd.status IN ('completed', 'in_progress', 'preparation') + AND emd.deleted = FALSE + AND edo.deleted = FALSE + AND ep.purchase_price IS NOT NULL + --AND DATE(emd.created_date) <= {{selected_date}} + GROUP BY epk.name +), + +mistake_items AS ( + SELECT + epk.name AS stock_name, + SUM(esd.supplied_item_quantity) AS qty, + SUM(ep.purchase_price * esd.supplied_item_quantity) AS total_value + FROM emr_supplydelivery esd + LEFT JOIN emr_deliveryorder edo ON esd.order_id = edo.id + LEFT JOIN emr_inventoryitem eii ON esd.supplied_inventory_item_id = eii.id + LEFT JOIN emr_product ep ON eii.product_id = ep.id + LEFT JOIN emr_productknowledge epk ON ep.product_knowledge_id = epk.id + WHERE esd.status IN ('completed', 'in_progress') + AND edo.destination_id IN (264,270,280,274,273,275,276,266,279,36,265,278,297,238,298,27,481,17,32,277) + AND esd.deleted = FALSE + AND edo.deleted = FALSE + AND edo.status IN ('completed', 'in_progress') + AND ep.purchase_price IS NOT NULL + --AND DATE(esd.created_date) <= {{selected_date}} + GROUP BY epk.name +) + +SELECT + COALESCE(p.stock_name, d.stock_name, m.stock_name) AS stock_name, + COALESCE(p.qty, 0) - COALESCE(d.qty, 0) - COALESCE(m.qty, 0) AS net_qty, + COALESCE(p.total_value, 0) - COALESCE(d.total_value, 0) - COALESCE(m.total_value, 0) AS net_value +FROM purchase_items p +FULL OUTER JOIN dispense_items d ON p.stock_name = d.stock_name +FULL OUTER JOIN mistake_items m ON COALESCE(p.stock_name, d.stock_name) = m.stock_name +ORDER BY stock_name; +``` + + +## Notes + +- **`purchase_items` CTE** — external purchases only. Uses `edo.origin_id IS NULL` to filter to supply deliveries that originate from outside the facility +- **`dispense_items` CTE** — outflow via medication dispenses to patients. Includes dispense orders in `completed / in_progress / draft` and dispenses in `completed / in_progress / preparation` to match what reduces stock in practice. +- **`mistake_items` CTE** — supply deliveries whose destination is one of the configured "mistake / correction" locations. These represent stock moved out for adjustments and is treated as outflow. +- **Hardcoded values:** + - `edo.destination_id IN (264,270,280,274,273,275,276,266,279,36,265,278,297,238,298,27,481,17,32,277)` — the list of "mistake / correction" destination locations. Update this list whenever new mistake/correction locations are added or old ones are retired. + +*Last updated: 2026-05-22* + + + From fb0a3ffd79df95136d3e2a2fccff1ff7727bdc58 Mon Sep 17 00:00:00 2001 From: sonzsara Date: Mon, 29 Jun 2026 13:49:06 +0530 Subject: [PATCH 2/4] Refactor SQL queries in Total Stock Value Report to simplify conditions and improve readability --- Care/Accounting/total_stock_value_report_ssmm.md | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/Care/Accounting/total_stock_value_report_ssmm.md b/Care/Accounting/total_stock_value_report_ssmm.md index 687c01f..6a03b99 100644 --- a/Care/Accounting/total_stock_value_report_ssmm.md +++ b/Care/Accounting/total_stock_value_report_ssmm.md @@ -35,11 +35,8 @@ WITH purchase_items AS ( LEFT JOIN emr_productknowledge epk ON ep.product_knowledge_id = epk.id WHERE esd.status = 'completed' AND edo.origin_id IS NULL - AND esd.deleted = FALSE - AND edo.deleted = FALSE - AND edo.status = 'completed' AND ep.purchase_price IS NOT NULL - --AND DATE(esd.created_date) <= {{selected_date}} + --AND DATE(esd.created_date) <= {{selected_date}} GROUP BY epk.name ), @@ -53,10 +50,7 @@ dispense_items AS ( LEFT JOIN emr_inventoryitem eii ON eii.id = emd.item_id LEFT JOIN emr_product ep ON eii.product_id = ep.id LEFT JOIN emr_productknowledge epk ON ep.product_knowledge_id = epk.id - WHERE edo.status IN ('completed', 'in_progress', 'draft') - AND emd.status IN ('completed', 'in_progress', 'preparation') - AND emd.deleted = FALSE - AND edo.deleted = FALSE + WHERE emd.status IN ('completed', 'in_progress', 'preparation') AND ep.purchase_price IS NOT NULL --AND DATE(emd.created_date) <= {{selected_date}} GROUP BY epk.name @@ -74,9 +68,6 @@ mistake_items AS ( LEFT JOIN emr_productknowledge epk ON ep.product_knowledge_id = epk.id WHERE esd.status IN ('completed', 'in_progress') AND edo.destination_id IN (264,270,280,274,273,275,276,266,279,36,265,278,297,238,298,27,481,17,32,277) - AND esd.deleted = FALSE - AND edo.deleted = FALSE - AND edo.status IN ('completed', 'in_progress') AND ep.purchase_price IS NOT NULL --AND DATE(esd.created_date) <= {{selected_date}} GROUP BY epk.name From 4af4edd5d94fef3cdc92bf68c34a7c704d517383 Mon Sep 17 00:00:00 2001 From: Sona Sara Shibu Date: Mon, 29 Jun 2026 13:50:46 +0530 Subject: [PATCH 3/4] Update total_stock_value_report_ssmm.md --- Care/Accounting/total_stock_value_report_ssmm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Care/Accounting/total_stock_value_report_ssmm.md b/Care/Accounting/total_stock_value_report_ssmm.md index 6a03b99..d77e06e 100644 --- a/Care/Accounting/total_stock_value_report_ssmm.md +++ b/Care/Accounting/total_stock_value_report_ssmm.md @@ -87,7 +87,7 @@ ORDER BY stock_name; ## Notes - **`purchase_items` CTE** — external purchases only. Uses `edo.origin_id IS NULL` to filter to supply deliveries that originate from outside the facility -- **`dispense_items` CTE** — outflow via medication dispenses to patients. Includes dispense orders in `completed / in_progress / draft` and dispenses in `completed / in_progress / preparation` to match what reduces stock in practice. +- **`dispense_items` CTE** — outflow via medication dispenses to patients. Includes dispenses in `completed / in_progress / preparation` to match what reduces stock in practice. - **`mistake_items` CTE** — supply deliveries whose destination is one of the configured "mistake / correction" locations. These represent stock moved out for adjustments and is treated as outflow. - **Hardcoded values:** - `edo.destination_id IN (264,270,280,274,273,275,276,266,279,36,265,278,297,238,298,27,481,17,32,277)` — the list of "mistake / correction" destination locations. Update this list whenever new mistake/correction locations are added or old ones are retired. From 8c35ba6778d2a41e383e49dd6da73fdb2385555a Mon Sep 17 00:00:00 2001 From: Sona Sara Shibu Date: Mon, 29 Jun 2026 14:12:04 +0530 Subject: [PATCH 4/4] Update total_stock_value_report_ssmm.md --- Care/Accounting/total_stock_value_report_ssmm.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Care/Accounting/total_stock_value_report_ssmm.md b/Care/Accounting/total_stock_value_report_ssmm.md index d77e06e..a76c22a 100644 --- a/Care/Accounting/total_stock_value_report_ssmm.md +++ b/Care/Accounting/total_stock_value_report_ssmm.md @@ -46,7 +46,6 @@ dispense_items AS ( SUM(emd.quantity) AS qty, SUM(ep.purchase_price * emd.quantity) AS total_value FROM emr_medicationdispense emd - LEFT JOIN emr_dispenseorder edo ON edo.id = emd.order_id LEFT JOIN emr_inventoryitem eii ON eii.id = emd.item_id LEFT JOIN emr_product ep ON eii.product_id = ep.id LEFT JOIN emr_productknowledge epk ON ep.product_knowledge_id = epk.id