Przeglądaj źródła

stocktakevariance report add total stocktakeqty

master
Tommy\2Fi-Staff 16 godzin temu
rodzic
commit
b28c682da9
3 zmienionych plików z 28 dodań i 7 usunięć
  1. +4
    -2
      src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt
  2. +13
    -4
      src/main/java/com/ffii/fpsms/modules/report/web/StockTakeVarianceReportController.kt
  3. +11
    -1
      src/main/resources/jasper/StockTakeVarianceReport.jrxml

+ 4
- 2
src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt Wyświetl plik

@@ -283,7 +283,8 @@ SELECT
CASE WHEN SUM(COALESCE(openingQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(openingQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(openingQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalOpeningBalance,
CASE WHEN SUM(COALESCE(inQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(inQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(inQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCumStockIn,
CASE WHEN SUM(COALESCE(outQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(outQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(outQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCumStockOut,
CASE WHEN SUM(COALESCE(currentQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(currentQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(currentQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCurrentBalance
CASE WHEN SUM(COALESCE(currentQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(currentQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(currentQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCurrentBalance,
CASE WHEN SUM(COALESCE(stkApproverQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(stkApproverQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(stkApproverQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalStockTakeQty

FROM data
ORDER BY
@@ -515,7 +516,8 @@ SELECT
CASE WHEN SUM(COALESCE(openingQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(openingQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(openingQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalOpeningBalance,
CASE WHEN SUM(COALESCE(inQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(inQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(inQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCumStockIn,
CASE WHEN SUM(COALESCE(outQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(outQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(outQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCumStockOut,
CASE WHEN SUM(COALESCE(stkBookQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(stkBookQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(stkBookQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCurrentBalance
CASE WHEN SUM(COALESCE(stkBookQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(stkBookQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(stkBookQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalCurrentBalance,
CASE WHEN SUM(COALESCE(stkApproverQty, 0)) OVER (PARTITION BY itemNo) < 0 THEN CONCAT('(', FORMAT(-SUM(COALESCE(stkApproverQty, 0)) OVER (PARTITION BY itemNo), 0), ')') ELSE FORMAT(SUM(COALESCE(stkApproverQty, 0)) OVER (PARTITION BY itemNo), 0) END AS totalStockTakeQty

FROM data
ORDER BY


+ 13
- 4
src/main/java/com/ffii/fpsms/modules/report/web/StockTakeVarianceReportController.kt Wyświetl plik

@@ -413,7 +413,7 @@ class StockTakeVarianceReportController(
}
}

fun addItemSummaryRow(totalQty: Double, _itemNo: String, _itemName: String) {
fun addItemSummaryRow(totalQty: Double, totalStockTakeQty: Double, _itemNo: String, _itemName: String) {
val r = sheet.createRow(rowIndex++)
// keep keys for filtering/grouping, visually hidden
r.createCell(0).apply {
@@ -448,6 +448,12 @@ class StockTakeVarianceReportController(
setCellValue(totalQty)
cellStyle = summaryQtyThickBottomStyle
}

// also set "盤點總數" at the "盤點數"欄(col 7)
r.getCell(7).apply {
setCellValue(totalStockTakeQty)
cellStyle = summaryQtyThickBottomStyle
}
}

fun addBlankSeparatorRow() {
@@ -462,12 +468,13 @@ class StockTakeVarianceReportController(
cellStyle = textStyle
}
}
addItemSummaryRow(0.0, "", "")
addItemSummaryRow(0.0, 0.0, "", "")
} else {
var currentItemNo: String? = null
var currentItemName = ""
var currentUom = ""
var currentItemTotalQty = 0.0
var currentItemTotalStockTakeQty = 0.0

dbData.forEach { rowMap ->
val itemNo = rowMap["itemNo"]?.toString().orEmpty()
@@ -475,9 +482,10 @@ class StockTakeVarianceReportController(
val uom = rowMap["unitOfMeasure"]?.toString().orEmpty()

if (currentItemNo != null && itemNo != currentItemNo) {
addItemSummaryRow(currentItemTotalQty, currentItemNo!!, currentItemName)
addItemSummaryRow(currentItemTotalQty, currentItemTotalStockTakeQty, currentItemNo!!, currentItemName)
addBlankSeparatorRow()
currentItemTotalQty = 0.0
currentItemTotalStockTakeQty = 0.0
}

val r = sheet.createRow(rowIndex++)
@@ -497,9 +505,10 @@ class StockTakeVarianceReportController(
currentItemName = itemName
currentUom = uom
currentItemTotalQty += parseSignedNumber(rowMap["currentBookBalance"]) ?: 0.0
currentItemTotalStockTakeQty += parseSignedNumber(rowMap["stockTakeQty"]) ?: 0.0
}

addItemSummaryRow(currentItemTotalQty, currentItemNo ?: "", currentItemName)
addItemSummaryRow(currentItemTotalQty, currentItemTotalStockTakeQty, currentItemNo ?: "", currentItemName)
}

val lastRowIndex = rowIndex - 1


+ 11
- 1
src/main/resources/jasper/StockTakeVarianceReport.jrxml Wyświetl plik

@@ -64,6 +64,7 @@
<field name="stockTakeQty" class="java.lang.String"/>
<field name="variance" class="java.lang.String"/>
<field name="variancePercentage" class="java.lang.String"/>
<field name="totalStockTakeQty" class="java.lang.String"/>
<group name="Group1" keepTogether="true" preventOrphanFooter="true">
<groupExpression><![CDATA[$F{itemNo}]]></groupExpression>
<groupHeader>
@@ -109,11 +110,20 @@
</reportElement>
</line>
<line>
<reportElement x="273" y="0" width="135" height="1" uuid="57591898-c7d7-43ef-a078-9ca155d03a8c">
<reportElement x="273" y="0" width="207" height="1" uuid="57591898-c7d7-43ef-a078-9ca155d03a8c">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/>
</reportElement>
</line>
<textField textAdjust="StretchHeight">
<reportElement x="408" y="0" width="72" height="18" uuid="0c547695-30bb-491c-aaa3-26f6d2a577a3">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體"/>
</textElement>
<textFieldExpression><![CDATA[$F{totalStockTakeQty}]]></textFieldExpression>
</textField>
</band>
<band height="1">
<printWhenExpression><![CDATA[$V{Group1_COUNT} == 1]]></printWhenExpression>


Ładowanie…
Anuluj
Zapisz