CANCERYS\kw093 1 тиждень тому
джерело
коміт
8cb44cda7d
1 змінених файлів з 24 додано та 12 видалено
  1. +24
    -12
      src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt

+ 24
- 12
src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt Переглянути файл

@@ -116,27 +116,27 @@ WITH latest_str AS (
)
)
),
in_out AS (
in_agg AS (
SELECT
ill.id AS inventoryLotLineId,

/* 期初:fromDate 之前的入 - 出 */
SUM(CASE WHEN DATE(sil.receiptDate) < :fromDate THEN COALESCE(sil.acceptedQty, 0) ELSE 0 END) AS inBefore,
SUM(CASE WHEN DATE(sol.endTime) < :fromDate THEN COALESCE(sol.qty, 0) ELSE 0 END) AS outBefore,

/* 區間內累計 */
SUM(CASE WHEN DATE(sil.receiptDate) BETWEEN :fromDate AND :toDate THEN COALESCE(sil.acceptedQty, 0) ELSE 0 END) AS inDuring,
SUM(CASE WHEN DATE(sol.endTime) BETWEEN :fromDate AND :toDate THEN COALESCE(sol.qty, 0) ELSE 0 END) AS outDuring,

/* 最後入/出倉日期(不限定區間,通常看整體最後一次) */
MAX(CASE WHEN sil.receiptDate IS NOT NULL THEN DATE(sil.receiptDate) END) AS lastInDate,
MAX(CASE WHEN sol.endTime IS NOT NULL THEN DATE(sol.endTime) END) AS lastOutDate

MAX(CASE WHEN sil.receiptDate IS NOT NULL THEN DATE(sil.receiptDate) END) AS lastInDate
FROM inventory_lot_line ill
LEFT JOIN stock_in_line sil
ON sil.inventoryLotLineId = ill.id
AND sil.deleted = 0
AND sil.status = 'completed'
WHERE ill.deleted = 0
GROUP BY ill.id
),
out_agg AS (
SELECT
ill.id AS inventoryLotLineId,
SUM(CASE WHEN DATE(sol.endTime) < :fromDate THEN COALESCE(sol.qty, 0) ELSE 0 END) AS outBefore,
SUM(CASE WHEN DATE(sol.endTime) BETWEEN :fromDate AND :toDate THEN COALESCE(sol.qty, 0) ELSE 0 END) AS outDuring,
MAX(CASE WHEN sol.endTime IS NOT NULL THEN DATE(sol.endTime) END) AS lastOutDate
FROM inventory_lot_line ill
LEFT JOIN stock_out_line sol
ON sol.inventoryLotLineId = ill.id
AND sol.deleted = 0
@@ -144,6 +144,18 @@ in_out AS (
WHERE ill.deleted = 0
GROUP BY ill.id
),
in_out AS (
SELECT
i.inventoryLotLineId,
COALESCE(i.inBefore, 0) AS inBefore,
COALESCE(o.outBefore, 0) AS outBefore,
COALESCE(i.inDuring, 0) AS inDuring,
COALESCE(o.outDuring, 0) AS outDuring,
i.lastInDate,
o.lastOutDate
FROM in_agg i
LEFT JOIN out_agg o ON o.inventoryLotLineId = i.inventoryLotLineId
),
data AS (
SELECT
it.type AS stockSubCategory,


Завантаження…
Відмінити
Зберегти