diff --git a/src/main/java/com/ffii/fpsms/modules/report/service/SemiFGProductionAnalysisReportService.kt b/src/main/java/com/ffii/fpsms/modules/report/service/SemiFGProductionAnalysisReportService.kt index 02c0dac..fa459f7 100644 --- a/src/main/java/com/ffii/fpsms/modules/report/service/SemiFGProductionAnalysisReportService.kt +++ b/src/main/java/com/ffii/fpsms/modules/report/service/SemiFGProductionAnalysisReportService.kt @@ -59,9 +59,11 @@ class SemiFGProductionAnalysisReportService( * Queries the database for Semi FG Production Analysis Report data. * Aligned with [ReportService.searchStockInTraceabilityReport] totals for the same filters: * - stock_in_line driven (no stock_ledger gate); INNER JOIN bom so only items that exist as BOM rows appear + * - Include only stock_in_line rows with non-null jobOrderId + * - Exclude stock_in_line rows with status = 'Pending' * - stockCategory → items.type (exact, comma-separated); itemCode → items.code (LIKE, comma-separated) * - Date range / year on productionDate (with IS NOT NULL when range bound is set) - * - Put-away qty: SUM(inventory_lot_line.inQty) by sil.inventoryLotId (same as traceability pa_sil) + * - Quantity source: stock_in_line.acceptedQty * - QC any fail → line qty 0 (same as traceability stockInQty) * - One row per stockInLineId per month before pivot; all lines counted (not only job orders) */ @@ -113,12 +115,6 @@ class SemiFGProductionAnalysisReportService( WHERE qr.deleted = 0 GROUP BY qr.stockInLineId ), - pa_sil AS ( - SELECT inventoryLotId, SUM(COALESCE(inQty, 0)) AS putAwayQtySum - FROM inventory_lot_line - WHERE deleted = false - GROUP BY inventoryLotId - ), base AS ( SELECT COALESCE(it.code, '') AS itemNo, @@ -128,18 +124,19 @@ class SemiFGProductionAnalysisReportService( MONTH(si.productionDate) AS mon, si.id AS stockInLineId, CASE WHEN COALESCE(qr_agg.qcFailed, 0) = 1 THEN 0 - ELSE COALESCE(pa_sil.putAwayQtySum, 0) + ELSE COALESCE(si.acceptedQty, 0) END AS linePutAwayQty FROM stock_in_line si INNER JOIN items it ON si.itemId = it.id INNER JOIN bom b ON b.code = it.code AND b.deleted = false LEFT JOIN qr_agg ON qr_agg.stockInLineId = si.id - LEFT JOIN pa_sil ON pa_sil.inventoryLotId = si.inventoryLotId LEFT JOIN item_category ic ON it.categoryId = ic.id LEFT JOIN item_uom iu ON it.id = iu.itemId AND iu.stockUnit = true LEFT JOIN uom_conversion uc ON iu.uomId = uc.id WHERE si.deleted = false AND si.productionDate IS NOT NULL + AND si.jobOrderId IS NOT NULL + AND (si.status IS NULL OR si.status <> 'Pending') $stockCategorySql $stockSubCategorySql $itemCodeSql