Tommy\2Fi-Staff пре 1 дан
родитељ
комит
474c4d95bd
1 измењених фајлова са 63 додато и 53 уклоњено
  1. +63
    -53
      src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt

+ 63
- 53
src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt Прегледај датотеку

@@ -1501,7 +1501,12 @@ return result
AND DATE(sl.date) <= p.d0 AND DATE(sl.date) <= p.d0
), ),
item_scope AS ( item_scope AS (
SELECT it.id AS itemId, it.code AS itemNo, it.name AS itemName, it.type AS itemType
SELECT
it.id AS itemId,
it.code AS itemNo,
it.name AS itemName,
it.type AS itemType,
COALESCE(CAST(NULLIF(it.AverageUnitPrice, '') AS DECIMAL(14, 4)), 0) AS avgUnitPriceRaw
FROM items it FROM items it
INNER JOIN ledger_item_ids li ON li.itemId = it.id INNER JOIN ledger_item_ids li ON li.itemId = it.id
WHERE it.deleted = 0 WHERE it.deleted = 0
@@ -1568,51 +1573,55 @@ return result
AND DATE(sl.date) <= p.d0 AND DATE(sl.date) <= p.d0
GROUP BY sl.itemId GROUP BY sl.itemId
), ),
is_bom_item AS (
ledger_moves AS (
SELECT SELECT
it.id AS itemId,
CASE WHEN EXISTS (
SELECT 1 FROM bom b
WHERE b.deleted = 0 AND b.itemId = it.id
) THEN 1 ELSE 0 END AS isBom
FROM items it
WHERE it.deleted = 0
),
bom_price AS (
SELECT
dol.itemId,
SUM(COALESCE(dol.qty, 0) * COALESCE(dol.up, (dol.price / NULLIF(dol.qty, 0)), dol.price, 0)) AS amtSum,
SUM(COALESCE(dol.qty, 0)) AS qtySum
FROM delivery_order_line dol
WHERE dol.deleted = 0
AND dol.itemId IS NOT NULL
AND COALESCE(dol.qty, 0) > 0
GROUP BY dol.itemId
),
non_bom_price AS (
SELECT
pol.itemId,
SUM(COALESCE(pol.qty, 0) * COALESCE(pol.up, (pol.price / NULLIF(pol.qty, 0)), pol.price, 0)) AS amtSum,
SUM(COALESCE(pol.qty, 0)) AS qtySum
FROM purchase_order_line pol
WHERE pol.deleted = 0
AND pol.itemId IS NOT NULL
AND COALESCE(pol.qty, 0) > 0
GROUP BY pol.itemId
),
avg_price_per_item AS (
SELECT
s.itemId,
CASE
WHEN COALESCE(b.isBom, 0) = 1 THEN
CASE WHEN COALESCE(bp.qtySum, 0) > 0 THEN (bp.amtSum / bp.qtySum) ELSE 0 END
ELSE
CASE WHEN COALESCE(np.qtySum, 0) > 0 THEN (np.amtSum / np.qtySum) ELSE 0 END
END AS avgUnitPriceRaw
FROM item_scope s
LEFT JOIN is_bom_item b ON b.itemId = s.itemId
LEFT JOIN bom_price bp ON bp.itemId = s.itemId
LEFT JOIN non_bom_price np ON np.itemId = s.itemId
sl.itemId,
SUM(
CASE
WHEN UPPER(TRIM(COALESCE(sl.type, ''))) IN ('NOR', 'ADJ')
AND COALESCE(sl.inQty, 0) > 0
THEN COALESCE(sl.inQty, 0)
ELSE 0
END
) AS cumStockIn,
SUM(
CASE
WHEN UPPER(TRIM(COALESCE(sl.type, ''))) IN ('NOR', 'ADJ')
AND COALESCE(sl.outQty, 0) > 0
THEN COALESCE(sl.outQty, 0)
ELSE 0
END
) AS cumStockOut,
SUM(
CASE
WHEN UPPER(TRIM(COALESCE(sl.type, ''))) = 'MISS'
AND COALESCE(sl.outQty, 0) > 0
THEN COALESCE(sl.outQty, 0)
ELSE 0
END
) AS misInputAndLost,
SUM(
CASE
WHEN UPPER(TRIM(COALESCE(sl.type, ''))) = 'BAD'
AND COALESCE(sl.outQty, 0) > 0
THEN COALESCE(sl.outQty, 0)
ELSE 0
END
) AS defectiveGoods,
SUM(
CASE
WHEN UPPER(TRIM(COALESCE(sl.type, ''))) = 'TKE'
THEN COALESCE(sl.inQty, 0) - COALESCE(sl.outQty, 0)
ELSE 0
END
) AS variance
FROM stock_ledger sl
INNER JOIN params p ON 1=1
WHERE sl.deleted = 0
AND sl.itemId IS NOT NULL
AND DATE(sl.date) > p.d1
AND DATE(sl.date) <= p.d0
GROUP BY sl.itemId
) )
SELECT SELECT
'' AS stockSubCategory, '' AS stockSubCategory,
@@ -1632,22 +1641,22 @@ return result
COALESCE(op.openingBalance, 0) AS openingBalanceRaw, COALESCE(op.openingBalance, 0) AS openingBalanceRaw,
COALESCE(cp.currentBalance, 0) AS currentBalanceRaw, COALESCE(cp.currentBalance, 0) AS currentBalanceRaw,
CASE WHEN COALESCE(op.openingBalance, 0) < 0 THEN CONCAT('(', FORMAT(-op.openingBalance, 0), ')') ELSE FORMAT(COALESCE(op.openingBalance, 0), 0) END AS totalOpeningBalance, CASE WHEN COALESCE(op.openingBalance, 0) < 0 THEN CONCAT('(', FORMAT(-op.openingBalance, 0), ')') ELSE FORMAT(COALESCE(op.openingBalance, 0), 0) END AS totalOpeningBalance,
'0' AS totalCumStockIn,
'0' AS totalCumStockOut,
CASE WHEN COALESCE(lm.cumStockIn, 0) < 0 THEN CONCAT('(', FORMAT(-lm.cumStockIn, 0), ')') ELSE FORMAT(COALESCE(lm.cumStockIn, 0), 0) END AS totalCumStockIn,
CASE WHEN COALESCE(lm.cumStockOut, 0) < 0 THEN CONCAT('(', FORMAT(-lm.cumStockOut, 0), ')') ELSE FORMAT(COALESCE(lm.cumStockOut, 0), 0) END AS totalCumStockOut,
CASE WHEN COALESCE(cp.currentBalance, 0) < 0 THEN CONCAT('(', FORMAT(-cp.currentBalance, 0), ')') ELSE FORMAT(COALESCE(cp.currentBalance, 0), 0) END AS totalCurrentBalance, CASE WHEN COALESCE(cp.currentBalance, 0) < 0 THEN CONCAT('(', FORMAT(-cp.currentBalance, 0), ')') ELSE FORMAT(COALESCE(cp.currentBalance, 0), 0) END AS totalCurrentBalance,
'' AS misInputAndLost, '' AS misInputAndLost,
'' AS defectiveGoods, '' AS defectiveGoods,
'' AS variance, '' AS variance,
'0' AS totalMisInputAndLost,
'0' AS totalVariance,
'0' AS totalDefectiveGoods,
FORMAT(ROUND(COALESCE(ap.avgUnitPriceRaw, 0), 2), 2) AS avgUnitPrice,
FORMAT(ROUND(COALESCE(ap.avgUnitPriceRaw, 0) * COALESCE(cp.currentBalance, 0), 2), 2) AS totalStockBalance
CASE WHEN COALESCE(lm.misInputAndLost, 0) < 0 THEN CONCAT('(', FORMAT(-lm.misInputAndLost, 0), ')') ELSE FORMAT(COALESCE(lm.misInputAndLost, 0), 0) END AS totalMisInputAndLost,
CASE WHEN COALESCE(lm.variance, 0) < 0 THEN CONCAT('(', FORMAT(-lm.variance, 0), ')') ELSE FORMAT(COALESCE(lm.variance, 0), 0) END AS totalVariance,
CASE WHEN COALESCE(lm.defectiveGoods, 0) < 0 THEN CONCAT('(', FORMAT(-lm.defectiveGoods, 0), ')') ELSE FORMAT(COALESCE(lm.defectiveGoods, 0), 0) END AS totalDefectiveGoods,
FORMAT(ROUND(COALESCE(s.avgUnitPriceRaw, 0), 2), 2) AS avgUnitPrice,
FORMAT(ROUND(COALESCE(s.avgUnitPriceRaw, 0) * COALESCE(cp.currentBalance, 0), 2), 2) AS totalStockBalance
FROM item_scope s FROM item_scope s
LEFT JOIN opening_per_item op ON op.itemId = s.itemId LEFT JOIN opening_per_item op ON op.itemId = s.itemId
LEFT JOIN current_per_item cp ON cp.itemId = s.itemId LEFT JOIN current_per_item cp ON cp.itemId = s.itemId
LEFT JOIN last_in_out lio ON lio.itemId = s.itemId LEFT JOIN last_in_out lio ON lio.itemId = s.itemId
LEFT JOIN avg_price_per_item ap ON ap.itemId = s.itemId
LEFT JOIN ledger_moves lm ON lm.itemId = s.itemId
LEFT JOIN item_uom iu ON iu.itemId = s.itemId AND iu.stockUnit = 1 AND iu.deleted = 0 LEFT JOIN item_uom iu ON iu.itemId = s.itemId AND iu.stockUnit = 1 AND iu.deleted = 0
LEFT JOIN uom_conversion uc ON iu.uomId = uc.id LEFT JOIN uom_conversion uc ON iu.uomId = uc.id
LEFT JOIN store_location ON store_location.itemId = s.itemId LEFT JOIN store_location ON store_location.itemId = s.itemId
@@ -1712,4 +1721,5 @@ return result
val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource) val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource)
return JasperExportManager.exportReportToPdf(jasperPrint) return JasperExportManager.exportReportToPdf(jasperPrint)
} }
} }

Loading…
Откажи
Сачувај